From e739eba74887f44c0d41d6ca016303998630bfd5 Mon Sep 17 00:00:00 2001 From: corymhall <43035978+corymhall@users.noreply.github.com> Date: Mon, 24 Jun 2024 16:01:59 -0400 Subject: [PATCH 1/3] Add option `pulumi-version-file` Similar to how [Setup Node](https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md?rgh-link-date=2024-06-24T19%3A12%3A42Z#node-version-file) action works, this adds a new `pulumi-version-file` option that allows users to specify a file to read the version from. A lot of our providers use the `.pulumi.version` file to store the current version of pulumi and we want to be able to use that version rather than relying on what is already installed. re https://github.com/pulumi/ci-mgmt/pull/990 --- action.yml | 3 +++ dist/index.js | 25 ++++++++++++++++-- dist/index.js.map | 2 +- src/__tests__/run.test.ts | 55 +++++++++++++++++++++++++++++++++++++++ src/config.ts | 23 ++++++++++++++-- 5 files changed, 103 insertions(+), 5 deletions(-) diff --git a/action.yml b/action.yml index a4ed4eed..3a310ea5 100644 --- a/action.yml +++ b/action.yml @@ -15,6 +15,9 @@ inputs: description: 'Install a specific version of the Pulumi CLI' required: false default: '^3' + pulumi-version-file: + description: 'File containing the version of the Pulumi CLI to install. Example: .pulumi.version' + required: false work-dir: description: 'Location of your Pulumi files. Defaults to ./' required: false diff --git a/dist/index.js b/dist/index.js index 3be1738a..de7b7939 100644 --- a/dist/index.js +++ b/dist/index.js @@ -108231,6 +108231,8 @@ var github = __nccwpck_require__(95438); var automation = __nccwpck_require__(34925); // EXTERNAL MODULE: ./node_modules/ts-invariant/lib/invariant.cjs var invariant = __nccwpck_require__(47371); +// EXTERNAL MODULE: external "fs" +var external_fs_ = __nccwpck_require__(57147); // EXTERNAL MODULE: ./node_modules/actions-parsers/dist/main.js var main = __nccwpck_require__(43295); // EXTERNAL MODULE: ./node_modules/runtypes/lib/index.js @@ -108250,6 +108252,7 @@ function parseSemicolorToArray(input) { + // installationConfig is the expected Action inputs when // the user intends to download the Pulumi CLI without // running any other Pulumi operations. @@ -108259,9 +108262,20 @@ const installationConfig = lib.Record({ pulumiVersion: lib.String, }); function makeInstallationConfig() { + let pulumiVersion = (0,main.getInput)('pulumi-version') || '^3'; + const versionFile = (0,main.getInput)('pulumi-version-file'); + if (versionFile) { + if (external_fs_.existsSync(versionFile)) { + pulumiVersion = external_fs_.readFileSync(versionFile, { encoding: 'utf-8' }) + .trim(); + } + else { + throw new Error(`pulumi-version-file '${versionFile}' does not exist`); + } + } return installationConfig.validate({ command: (0,main.getInput)('command') || undefined, - pulumiVersion: (0,main.getInput)('pulumi-version') || '^3', + pulumiVersion, }); } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types @@ -108269,7 +108283,14 @@ function makeConfig() { return { command: (0,main.getUnionInput)('command', { required: true, - alternatives: ['up', 'update', 'refresh', 'destroy', 'preview', 'output'], + alternatives: [ + 'up', + 'update', + 'refresh', + 'destroy', + 'preview', + 'output', + ], }), stackName: (0,main.getInput)('stack-name', { required: true }), pulumiVersion: (0,main.getInput)('pulumi-version', { required: true }), diff --git a/dist/index.js.map b/dist/index.js.map index be98aade..ccc36309 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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3jDA;AACA;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;;;;;;;;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;;;;;;;;;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;;;;;;;;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;;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2jBA;;;;;;;;;;;;;;;;;;;;AC3jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/aA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/RA;AACA;AACA;AACA;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;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;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;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACx4CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1xBA;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;;;;;;;;;ACrUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9UA;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;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtFA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACh5BA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC10BA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACp1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACplBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5qSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACztLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACn5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACreA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;ACtFA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;AC7HA;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;;;;;;;;ACvCA;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;;;;;;;;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;;;;;;;;ACvCA;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;;;;;;;;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;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACp8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9rDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxHA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3JA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpDA;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;;;;;;;;;AC5BA;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;;;;;;;;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;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;;AC5CA;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;;;;;;;;;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;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;;ACnDA;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;;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;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;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;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;;;;;;;;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;;;;;;;;ACtEA;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;;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACn7BA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACh+CA;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;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;;;;;;;;;ACHA;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;;;;;;;;;ACpDA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxHA;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;;;;;;;;;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnIA;AACA;;;;;;;;;ACDA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7pBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;;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;;;;;;;;;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;AACA;AACA;AACA;;;;;;;;;ACZA;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;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACplBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;AACA;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;AC9TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;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;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;;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;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3mDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;;ACxBA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;;;AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;AC3DA;AACA;AACA;AACA;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;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;;;;;;;;;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;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpDA;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;;;;;;;;;AC5BA;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;;;;;;;;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;;;;;;;;;ACzDA;;;;;;;;;;;;;;;;;;;;;;AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtlBA;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;;;;;;;;;ACxCA;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChqDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;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;;;;;;;;;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;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3hCA;AACA;AACA;AACA;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;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;;;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACx3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/WA;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;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/ZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;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;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;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;;;;;;;;;ACvDA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;;;;;;;;;ACxCA;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;;;;;;;;;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;;;;;;;;;ACvIA;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;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;ACTA;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;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;;;;;;;;ACFA;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;;;;;;;;AChEA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;;;;;;;;ACFA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;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;;;;;;;;;ACxNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7UA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;ACHA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;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;;;;;;;;;AClBA;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;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpDA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/wBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;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;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;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;;;;;;;;;;ACv5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;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;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACNA;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;AA0BA;;;;;;;;;;;;;;;;;ACnDA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AAGA;;;ACbA;AAQA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;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;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7EA;AAEA;AACA;AACA;;;;;;ACJA;AACA;AACA;AACA;AAGA;;;AAKA;AAOA;AAEA;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA;;AAGA;AACA;AACA;;AAGA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAIA;AAIA;AACA;AACA;AAKA;AACA;AACA;AACA;AAAA;AACA;AAGA;AAEA;;AAKA;;;;;;;;;;;;;;AChFA;AAQA;AAKA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAGA;AAEA;AAEA;AACA;AAGA;AAEA;AACA;AAAA;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AAAA;AAEA;;AACA;AACA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;;AACA;AACA;AAEA;AACA;AAGA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAGA;AAAA;AACA;AACA;AAGA;AACA;AAAA;AACA;AAGA;AACA;AAAA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AAEA;AACA;AAGA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAGA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAKA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;;;;ACxLA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACXA;AACA;AACA;AACA;AAKA;AACA;AAOA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA","sources":["../webpack://pulumi-github-action/./node_modules/@actions/core/lib/command.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/core.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/file-command.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/oidc-utils.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/path-utils.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/summary.js","../webpack://pulumi-github-action/./node_modules/@actions/core/lib/utils.js","../webpack://pulumi-github-action/./node_modules/@actions/exec/lib/exec.js","../webpack://pulumi-github-action/./node_modules/@actions/exec/lib/toolrunner.js","../webpack://pulumi-github-action/./node_modules/@actions/github/lib/context.js","../webpack://pulumi-github-action/./node_modules/@actions/github/lib/github.js","../webpack://pulumi-github-action/./node_modules/@actions/github/lib/internal/utils.js","../webpack://pulumi-github-action/./node_modules/@actions/github/lib/utils.js","../webpack://pulumi-github-action/./node_modules/@actions/http-client/lib/auth.js","../webpack://pulumi-github-action/./node_modules/@actions/http-client/lib/index.js","../webpack://pulumi-github-action/./node_modules/@actions/http-client/lib/proxy.js","../webpack://pulumi-github-action/./node_modules/@actions/io/lib/io-util.js","../webpack://pulumi-github-action/./node_modules/@actions/io/lib/io.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/lib/manifest.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/lib/retry-helper.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/lib/tool-cache.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/node_modules/semver/semver.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/node_modules/uuid/lib/bytesToUuid.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/node_modules/uuid/lib/rng.js","../webpack://pulumi-github-action/./node_modules/@actions/tool-cache/node_modules/uuid/v4.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/admin.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/backoff-timeout.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/call-credentials.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/call-interface.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/call-number.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/channel-credentials.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/channel-options.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/channel.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/channelz.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/client-interceptors.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/client.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/compression-algorithms.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/compression-filter.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/connectivity-state.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/constants.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/control-plane-status.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/deadline.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/duration.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/error.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/experimental.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/filter-stack.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/filter.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/http_proxy.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/index.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/internal-channel.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancer-outlier-detection.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancer.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/load-balancing-call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/logging.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/make-client.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/metadata.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/picker.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolver-dns.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolver-ip.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolver-uds.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolver.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolving-call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/retrying-call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/server-call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/server-credentials.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/server-interceptors.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/server.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/service-config.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/status-builder.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/stream-decoder.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/subchannel-address.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/subchannel-call.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/subchannel-interface.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/subchannel-pool.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/subchannel.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/tls-helpers.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/transport.js","../webpack://pulumi-github-action/./node_modules/@grpc/grpc-js/build/src/uri-parser.js","../webpack://pulumi-github-action/./node_modules/@grpc/proto-loader/build/src/index.js","../webpack://pulumi-github-action/./node_modules/@grpc/proto-loader/build/src/util.js","../webpack://pulumi-github-action/./node_modules/@js-sdsl/ordered-map/dist/cjs/index.js","../webpack://pulumi-github-action/./node_modules/@logdna/tail-file/index.js","../webpack://pulumi-github-action/./node_modules/@logdna/tail-file/lib/tail-file.js","../webpack://pulumi-github-action/./node_modules/@octokit/auth-token/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/core/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/endpoint/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js","../webpack://pulumi-github-action/./node_modules/@octokit/graphql/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/plugin-paginate-rest/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/request-error/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/request/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/@octokit/request/node_modules/is-plain-object/dist/is-plain-object.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/aspromise/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/base64/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/codegen/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/eventemitter/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/fetch/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/float/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/inquire/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/path/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/pool/index.js","../webpack://pulumi-github-action/./node_modules/@protobufjs/utf8/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/asset/archive.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/asset/asset.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/asset/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/cmd.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/errors.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/events.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/localWorkspace.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/minimumVersion.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/remoteStack.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/remoteWorkspace.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/server.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/stack.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/automation/stackSettings.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/errors.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/log/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/metadata.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/command.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/error.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/kill.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/promise.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/stdio.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/execa/lib/stream.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/get-stream/buffer-stream.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/node_modules/get-stream/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/output.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/alias_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/callback_grpc_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/callback_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/codegen/hcl_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/engine_grpc_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/engine_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/language_grpc_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/language_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/plugin_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/provider_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/resource_grpc_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/resource_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/proto/source_pb.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/resource.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/asyncIterableUtil.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/callbacks.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/config.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/debuggable.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/invoke.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/resource.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/rpc.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/settings.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/stack.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/runtime/state.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/utils.js","../webpack://pulumi-github-action/./node_modules/@pulumi/pulumi/version.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/asyncQueryable.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/base.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/index.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/interfaces.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/operators.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/sources.js","../webpack://pulumi-github-action/./node_modules/@pulumi/query/util.js","../webpack://pulumi-github-action/./node_modules/@sindresorhus/is/dist/index.js","../webpack://pulumi-github-action/./node_modules/@szmarczak/http-timer/dist/source/index.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/main.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/core.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/literal.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/number.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/parsed.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/union.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/dist/parsers/yaml.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/index.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/common.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/dumper.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/exception.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/loader.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/schema.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/schema/core.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/schema/default.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/schema/failsafe.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/schema/json.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/snippet.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/binary.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/bool.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/float.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/int.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/map.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/merge.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/null.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/omap.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/pairs.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/seq.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/set.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/str.js","../webpack://pulumi-github-action/./node_modules/actions-parsers/node_modules/js-yaml/lib/type/timestamp.js","../webpack://pulumi-github-action/./node_modules/before-after-hook/index.js","../webpack://pulumi-github-action/./node_modules/before-after-hook/lib/add.js","../webpack://pulumi-github-action/./node_modules/before-after-hook/lib/register.js","../webpack://pulumi-github-action/./node_modules/before-after-hook/lib/remove.js","../webpack://pulumi-github-action/./node_modules/cacheable-lookup/source/index.js","../webpack://pulumi-github-action/./node_modules/cacheable-request/src/index.js","../webpack://pulumi-github-action/./node_modules/clone-response/node_modules/mimic-response/index.js","../webpack://pulumi-github-action/./node_modules/clone-response/src/index.js","../webpack://pulumi-github-action/./node_modules/compress-brotli/src/index.js","../webpack://pulumi-github-action/./node_modules/compress-brotli/src/merge-options.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/index.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/lib/enoent.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/lib/parse.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/lib/util/escape.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/lib/util/readShebang.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/lib/util/resolveCommand.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/node_modules/path-key/index.js","../webpack://pulumi-github-action/./node_modules/cross-spawn/node_modules/which/which.js","../webpack://pulumi-github-action/./node_modules/decompress-response/index.js","../webpack://pulumi-github-action/./node_modules/dedent/dist/dedent.js","../webpack://pulumi-github-action/./node_modules/defer-to-connect/dist/source/index.js","../webpack://pulumi-github-action/./node_modules/deprecation/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/encoding/lib/encoding.js","../webpack://pulumi-github-action/./node_modules/end-of-stream/index.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/core.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/envalid.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/errors.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/index.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/middleware.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/reporter.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/types.js","../webpack://pulumi-github-action/./node_modules/envalid/dist/validators.js","../webpack://pulumi-github-action/./node_modules/get-stream/buffer-stream.js","../webpack://pulumi-github-action/./node_modules/get-stream/index.js","../webpack://pulumi-github-action/./node_modules/google-protobuf/google-protobuf.js","../webpack://pulumi-github-action/./node_modules/google-protobuf/google/protobuf/empty_pb.js","../webpack://pulumi-github-action/./node_modules/google-protobuf/google/protobuf/struct_pb.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/as-promise/create-rejection.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/as-promise/index.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/as-promise/normalize-arguments.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/as-promise/parse-body.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/as-promise/types.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/calculate-retry-delay.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/index.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/dns-ip-version.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/get-body-size.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/get-buffer.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/is-form-data.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/is-response-ok.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/options-to-url.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/proxy-events.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/timed-out.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/unhandle.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/url-to-options.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/core/utils/weakable-map.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/create.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/index.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/types.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/utils/deep-freeze.js","../webpack://pulumi-github-action/./node_modules/got/dist/source/utils/deprecation-warning.js","../webpack://pulumi-github-action/./node_modules/http-cache-semantics/index.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/agent.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/auto.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/client-request.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/incoming-message.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/index.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/utils/calculate-server-name.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/utils/errors.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/utils/is-request-pseudo-header.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/utils/proxy-events.js","../webpack://pulumi-github-action/./node_modules/http2-wrapper/source/utils/url-to-options.js","../webpack://pulumi-github-action/./node_modules/human-signals/build/src/core.js","../webpack://pulumi-github-action/./node_modules/human-signals/build/src/main.js","../webpack://pulumi-github-action/./node_modules/human-signals/build/src/realtime.js","../webpack://pulumi-github-action/./node_modules/human-signals/build/src/signals.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/dbcs-codec.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/dbcs-data.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/index.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/internal.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/sbcs-codec.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/sbcs-data-generated.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/sbcs-data.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/utf16.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/utf32.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/encodings/utf7.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/lib/bom-handling.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/lib/index.js","../webpack://pulumi-github-action/./node_modules/iconv-lite/lib/streams.js","../webpack://pulumi-github-action/./node_modules/is-stream/index.js","../webpack://pulumi-github-action/./node_modules/isexe/index.js","../webpack://pulumi-github-action/./node_modules/isexe/mode.js","../webpack://pulumi-github-action/./node_modules/isexe/windows.js","../webpack://pulumi-github-action/./node_modules/js-yaml/index.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/common.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/dumper.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/exception.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/loader.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/mark.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema/core.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/schema/json.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/binary.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/bool.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/float.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/int.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/js/function.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/map.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/merge.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/null.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/omap.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/pairs.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/seq.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/set.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/str.js","../webpack://pulumi-github-action/./node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../webpack://pulumi-github-action/./node_modules/json-buffer/index.js","../webpack://pulumi-github-action/./node_modules/keyv/src/index.js","../webpack://pulumi-github-action/./node_modules/lodash.camelcase/index.js","../webpack://pulumi-github-action/./node_modules/lowercase-keys/index.js","../webpack://pulumi-github-action/./node_modules/merge-stream/index.js","../webpack://pulumi-github-action/./node_modules/mimic-fn/index.js","../webpack://pulumi-github-action/./node_modules/mimic-response/index.js","../webpack://pulumi-github-action/./node_modules/node-fetch/lib/index.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/tr46/index.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/webidl-conversions/lib/index.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/whatwg-url/lib/URL-impl.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/whatwg-url/lib/URL.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/whatwg-url/lib/public-api.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/whatwg-url/lib/url-state-machine.js","../webpack://pulumi-github-action/./node_modules/node-fetch/node_modules/whatwg-url/lib/utils.js","../webpack://pulumi-github-action/./node_modules/normalize-url/index.js","../webpack://pulumi-github-action/./node_modules/npm-run-path/index.js","../webpack://pulumi-github-action/./node_modules/npm-run-path/node_modules/path-key/index.js","../webpack://pulumi-github-action/./node_modules/once/once.js","../webpack://pulumi-github-action/./node_modules/onetime/index.js","../webpack://pulumi-github-action/./node_modules/p-cancelable/index.js","../webpack://pulumi-github-action/./node_modules/protobufjs/ext/descriptor/index.js","../webpack://pulumi-github-action/./node_modules/protobufjs/index.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/common.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/converter.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/decoder.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/encoder.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/enum.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/field.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/index-light.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/index-minimal.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/index.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/mapfield.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/message.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/method.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/namespace.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/object.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/oneof.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/parse.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/reader.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/reader_buffer.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/root.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/roots.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/rpc.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/rpc/service.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/service.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/tokenize.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/type.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/types.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/util.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/util/longbits.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/util/minimal.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/verifier.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/wrappers.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/writer.js","../webpack://pulumi-github-action/./node_modules/protobufjs/src/writer_buffer.js","../webpack://pulumi-github-action/./node_modules/pump/index.js","../webpack://pulumi-github-action/./node_modules/quick-lru/index.js","../webpack://pulumi-github-action/./node_modules/resolve-alpn/index.js","../webpack://pulumi-github-action/./node_modules/responselike/src/index.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/asynccontract.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/contract.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/decorator.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/errors.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/index.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/match.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/reflect.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/result.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/runtype.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/show.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/array.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/bigint.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/boolean.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/brand.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/constraint.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/dictionary.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/function.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/instanceof.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/intersect.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/lazy.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/literal.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/never.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/number.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/optional.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/record.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/string.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/symbol.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/template.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/tuple.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/union.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/unknown.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/types/void.js","../webpack://pulumi-github-action/./node_modules/runtypes/lib/util.js","../webpack://pulumi-github-action/./node_modules/safer-buffer/safer.js","../webpack://pulumi-github-action/./node_modules/semver/classes/comparator.js","../webpack://pulumi-github-action/./node_modules/semver/classes/range.js","../webpack://pulumi-github-action/./node_modules/semver/classes/semver.js","../webpack://pulumi-github-action/./node_modules/semver/functions/clean.js","../webpack://pulumi-github-action/./node_modules/semver/functions/cmp.js","../webpack://pulumi-github-action/./node_modules/semver/functions/coerce.js","../webpack://pulumi-github-action/./node_modules/semver/functions/compare-build.js","../webpack://pulumi-github-action/./node_modules/semver/functions/compare-loose.js","../webpack://pulumi-github-action/./node_modules/semver/functions/compare.js","../webpack://pulumi-github-action/./node_modules/semver/functions/diff.js","../webpack://pulumi-github-action/./node_modules/semver/functions/eq.js","../webpack://pulumi-github-action/./node_modules/semver/functions/gt.js","../webpack://pulumi-github-action/./node_modules/semver/functions/gte.js","../webpack://pulumi-github-action/./node_modules/semver/functions/inc.js","../webpack://pulumi-github-action/./node_modules/semver/functions/lt.js","../webpack://pulumi-github-action/./node_modules/semver/functions/lte.js","../webpack://pulumi-github-action/./node_modules/semver/functions/major.js","../webpack://pulumi-github-action/./node_modules/semver/functions/minor.js","../webpack://pulumi-github-action/./node_modules/semver/functions/neq.js","../webpack://pulumi-github-action/./node_modules/semver/functions/parse.js","../webpack://pulumi-github-action/./node_modules/semver/functions/patch.js","../webpack://pulumi-github-action/./node_modules/semver/functions/prerelease.js","../webpack://pulumi-github-action/./node_modules/semver/functions/rcompare.js","../webpack://pulumi-github-action/./node_modules/semver/functions/rsort.js","../webpack://pulumi-github-action/./node_modules/semver/functions/satisfies.js","../webpack://pulumi-github-action/./node_modules/semver/functions/sort.js","../webpack://pulumi-github-action/./node_modules/semver/functions/valid.js","../webpack://pulumi-github-action/./node_modules/semver/index.js","../webpack://pulumi-github-action/./node_modules/semver/internal/constants.js","../webpack://pulumi-github-action/./node_modules/semver/internal/debug.js","../webpack://pulumi-github-action/./node_modules/semver/internal/identifiers.js","../webpack://pulumi-github-action/./node_modules/semver/internal/parse-options.js","../webpack://pulumi-github-action/./node_modules/semver/internal/re.js","../webpack://pulumi-github-action/./node_modules/semver/node_modules/lru-cache/index.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/gtr.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/intersects.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/ltr.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/max-satisfying.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/min-satisfying.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/min-version.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/outside.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/simplify.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/subset.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/to-comparators.js","../webpack://pulumi-github-action/./node_modules/semver/ranges/valid.js","../webpack://pulumi-github-action/./node_modules/shebang-command/index.js","../webpack://pulumi-github-action/./node_modules/shebang-regex/index.js","../webpack://pulumi-github-action/./node_modules/signal-exit/index.js","../webpack://pulumi-github-action/./node_modules/signal-exit/signals.js","../webpack://pulumi-github-action/./node_modules/strip-final-newline/index.js","../webpack://pulumi-github-action/./node_modules/tmp/lib/tmp.js","../webpack://pulumi-github-action/./node_modules/ts-invariant/node_modules/tslib/tslib.js","../webpack://pulumi-github-action/./node_modules/tslib/tslib.js","../webpack://pulumi-github-action/./node_modules/tunnel/index.js","../webpack://pulumi-github-action/./node_modules/tunnel/lib/tunnel.js","../webpack://pulumi-github-action/./node_modules/universal-user-agent/dist-node/index.js","../webpack://pulumi-github-action/./node_modules/upath/build/code/upath.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/index.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/md5.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/nil.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/parse.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/regex.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/rng.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/sha1.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/stringify.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/v1.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/v3.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/v35.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/v4.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/v5.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/validate.js","../webpack://pulumi-github-action/./node_modules/uuid/dist/version.js","../webpack://pulumi-github-action/./node_modules/wrappy/wrappy.js","../webpack://pulumi-github-action/./node_modules/yallist/iterator.js","../webpack://pulumi-github-action/./node_modules/yallist/yallist.js","../webpack://pulumi-github-action/external node-commonjs \"assert\"","../webpack://pulumi-github-action/external node-commonjs \"async_hooks\"","../webpack://pulumi-github-action/external node-commonjs \"buffer\"","../webpack://pulumi-github-action/external node-commonjs \"child_process\"","../webpack://pulumi-github-action/external node-commonjs \"crypto\"","../webpack://pulumi-github-action/external node-commonjs \"dns\"","../webpack://pulumi-github-action/external node-commonjs \"events\"","../webpack://pulumi-github-action/external node-commonjs \"fs\"","../webpack://pulumi-github-action/external node-commonjs \"http\"","../webpack://pulumi-github-action/external node-commonjs \"http2\"","../webpack://pulumi-github-action/external node-commonjs \"https\"","../webpack://pulumi-github-action/external node-commonjs \"net\"","../webpack://pulumi-github-action/external node-commonjs \"os\"","../webpack://pulumi-github-action/external node-commonjs \"path\"","../webpack://pulumi-github-action/external node-commonjs \"process\"","../webpack://pulumi-github-action/external node-commonjs \"punycode\"","../webpack://pulumi-github-action/external node-commonjs \"readline\"","../webpack://pulumi-github-action/external node-commonjs \"stream\"","../webpack://pulumi-github-action/external node-commonjs \"string_decoder\"","../webpack://pulumi-github-action/external node-commonjs \"timers\"","../webpack://pulumi-github-action/external node-commonjs \"tls\"","../webpack://pulumi-github-action/external node-commonjs \"url\"","../webpack://pulumi-github-action/external node-commonjs \"util\"","../webpack://pulumi-github-action/external node-commonjs \"zlib\"","../webpack://pulumi-github-action/./node_modules/long/umd/index.js","../webpack://pulumi-github-action/./node_modules/ts-invariant/lib/invariant.cjs","../webpack://pulumi-github-action/webpack/bootstrap","../webpack://pulumi-github-action/webpack/runtime/compat get default export","../webpack://pulumi-github-action/webpack/runtime/define property getters","../webpack://pulumi-github-action/webpack/runtime/hasOwnProperty shorthand","../webpack://pulumi-github-action/webpack/runtime/make namespace object","../webpack://pulumi-github-action/webpack/runtime/compat","../webpack://pulumi-github-action/./node_modules/tslib/modules/index.js","../webpack://pulumi-github-action/./src/libs/utils.ts","../webpack://pulumi-github-action/./src/config.ts","../webpack://pulumi-github-action/./src/libs/envs.ts","../webpack://pulumi-github-action/./src/libs/pr.ts","../webpack://pulumi-github-action/./src/libs/exec.ts","../webpack://pulumi-github-action/./src/libs/libs/get-version.ts","../webpack://pulumi-github-action/./src/libs/pulumi-cli.ts","../webpack://pulumi-github-action/./src/login.ts","../webpack://pulumi-github-action/./src/main.ts"],"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\";\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.getExecOutput = exports.exec = void 0;\nconst string_decoder_1 = require(\"string_decoder\");\nconst tr = __importStar(require(\"./toolrunner\"));\n/**\n * Exec a command.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code\n */\nfunction exec(commandLine, args, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const commandArgs = tr.argStringToArray(commandLine);\n if (commandArgs.length === 0) {\n throw new Error(`Parameter 'commandLine' cannot be null or empty.`);\n }\n // Path to tool to execute should be first arg\n const toolPath = commandArgs[0];\n args = commandArgs.slice(1).concat(args || []);\n const runner = new tr.ToolRunner(toolPath, args, options);\n return runner.exec();\n });\n}\nexports.exec = exec;\n/**\n * Exec a command and get the output.\n * Output will be streamed to the live console.\n * Returns promise with the exit code and collected stdout and stderr\n *\n * @param commandLine command to execute (can include additional args). Must be correctly escaped.\n * @param args optional arguments for tool. Escaping is handled by the lib.\n * @param options optional exec options. See ExecOptions\n * @returns Promise exit code, stdout, and stderr\n */\nfunction getExecOutput(commandLine, args, options) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n let stdout = '';\n let stderr = '';\n //Using string decoder covers the case where a mult-byte character is split\n const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');\n const stderrDecoder = new string_decoder_1.StringDecoder('utf8');\n const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;\n const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;\n const stdErrListener = (data) => {\n stderr += stderrDecoder.write(data);\n if (originalStdErrListener) {\n originalStdErrListener(data);\n }\n };\n const stdOutListener = (data) => {\n stdout += stdoutDecoder.write(data);\n if (originalStdoutListener) {\n originalStdoutListener(data);\n }\n };\n const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });\n const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));\n //flush any remaining characters\n stdout += stdoutDecoder.end();\n stderr += stderrDecoder.end();\n return {\n exitCode,\n stdout,\n stderr\n };\n });\n}\nexports.getExecOutput = getExecOutput;\n//# sourceMappingURL=exec.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.argStringToArray = exports.ToolRunner = void 0;\nconst os = __importStar(require(\"os\"));\nconst events = __importStar(require(\"events\"));\nconst child = __importStar(require(\"child_process\"));\nconst path = __importStar(require(\"path\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst ioUtil = __importStar(require(\"@actions/io/lib/io-util\"));\nconst timers_1 = require(\"timers\");\n/* eslint-disable @typescript-eslint/unbound-method */\nconst IS_WINDOWS = process.platform === 'win32';\n/*\n * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.\n */\nclass ToolRunner extends events.EventEmitter {\n constructor(toolPath, args, options) {\n super();\n if (!toolPath) {\n throw new Error(\"Parameter 'toolPath' cannot be null or empty.\");\n }\n this.toolPath = toolPath;\n this.args = args || [];\n this.options = options || {};\n }\n _debug(message) {\n if (this.options.listeners && this.options.listeners.debug) {\n this.options.listeners.debug(message);\n }\n }\n _getCommandString(options, noPrefix) {\n const toolPath = this._getSpawnFileName();\n const args = this._getSpawnArgs(options);\n let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool\n if (IS_WINDOWS) {\n // Windows + cmd file\n if (this._isCmdFile()) {\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows + verbatim\n else if (options.windowsVerbatimArguments) {\n cmd += `\"${toolPath}\"`;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n // Windows (regular)\n else {\n cmd += this._windowsQuoteCmdArg(toolPath);\n for (const a of args) {\n cmd += ` ${this._windowsQuoteCmdArg(a)}`;\n }\n }\n }\n else {\n // OSX/Linux - this can likely be improved with some form of quoting.\n // creating processes on Unix is fundamentally different than Windows.\n // on Unix, execvp() takes an arg array.\n cmd += toolPath;\n for (const a of args) {\n cmd += ` ${a}`;\n }\n }\n return cmd;\n }\n _processLineBuffer(data, strBuffer, onLine) {\n try {\n let s = strBuffer + data.toString();\n let n = s.indexOf(os.EOL);\n while (n > -1) {\n const line = s.substring(0, n);\n onLine(line);\n // the rest of the string ...\n s = s.substring(n + os.EOL.length);\n n = s.indexOf(os.EOL);\n }\n return s;\n }\n catch (err) {\n // streaming lines to console is best effort. Don't fail a build.\n this._debug(`error processing line. Failed with error ${err}`);\n return '';\n }\n }\n _getSpawnFileName() {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n return process.env['COMSPEC'] || 'cmd.exe';\n }\n }\n return this.toolPath;\n }\n _getSpawnArgs(options) {\n if (IS_WINDOWS) {\n if (this._isCmdFile()) {\n let argline = `/D /S /C \"${this._windowsQuoteCmdArg(this.toolPath)}`;\n for (const a of this.args) {\n argline += ' ';\n argline += options.windowsVerbatimArguments\n ? a\n : this._windowsQuoteCmdArg(a);\n }\n argline += '\"';\n return [argline];\n }\n }\n return this.args;\n }\n _endsWith(str, end) {\n return str.endsWith(end);\n }\n _isCmdFile() {\n const upperToolPath = this.toolPath.toUpperCase();\n return (this._endsWith(upperToolPath, '.CMD') ||\n this._endsWith(upperToolPath, '.BAT'));\n }\n _windowsQuoteCmdArg(arg) {\n // for .exe, apply the normal quoting rules that libuv applies\n if (!this._isCmdFile()) {\n return this._uvQuoteCmdArg(arg);\n }\n // otherwise apply quoting rules specific to the cmd.exe command line parser.\n // the libuv rules are generic and are not designed specifically for cmd.exe\n // command line parser.\n //\n // for a detailed description of the cmd.exe command line parser, refer to\n // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912\n // need quotes for empty arg\n if (!arg) {\n return '\"\"';\n }\n // determine whether the arg needs to be quoted\n const cmdSpecialChars = [\n ' ',\n '\\t',\n '&',\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '^',\n '=',\n ';',\n '!',\n \"'\",\n '+',\n ',',\n '`',\n '~',\n '|',\n '<',\n '>',\n '\"'\n ];\n let needsQuotes = false;\n for (const char of arg) {\n if (cmdSpecialChars.some(x => x === char)) {\n needsQuotes = true;\n break;\n }\n }\n // short-circuit if quotes not needed\n if (!needsQuotes) {\n return arg;\n }\n // the following quoting rules are very similar to the rules that by libuv applies.\n //\n // 1) wrap the string in quotes\n //\n // 2) double-up quotes - i.e. \" => \"\"\n //\n // this is different from the libuv quoting rules. libuv replaces \" with \\\", which unfortunately\n // doesn't work well with a cmd.exe command line.\n //\n // note, replacing \" with \"\" also works well if the arg is passed to a downstream .NET console app.\n // for example, the command line:\n // foo.exe \"myarg:\"\"my val\"\"\"\n // is parsed by a .NET console app into an arg array:\n // [ \"myarg:\\\"my val\\\"\" ]\n // which is the same end result when applying libuv quoting rules. although the actual\n // command line from libuv quoting rules would look like:\n // foo.exe \"myarg:\\\"my val\\\"\"\n //\n // 3) double-up slashes that precede a quote,\n // e.g. hello \\world => \"hello \\world\"\n // hello\\\"world => \"hello\\\\\"\"world\"\n // hello\\\\\"world => \"hello\\\\\\\\\"\"world\"\n // hello world\\ => \"hello world\\\\\"\n //\n // technically this is not required for a cmd.exe command line, or the batch argument parser.\n // the reasons for including this as a .cmd quoting rule are:\n //\n // a) this is optimized for the scenario where the argument is passed from the .cmd file to an\n // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.\n //\n // b) it's what we've been doing previously (by deferring to node default behavior) and we\n // haven't heard any complaints about that aspect.\n //\n // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be\n // escaped when used on the command line directly - even though within a .cmd file % can be escaped\n // by using %%.\n //\n // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts\n // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.\n //\n // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would\n // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the\n // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args\n // to an external program.\n //\n // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.\n // % can be escaped within a .cmd file.\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\'; // double the slash\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\"'; // double the quote\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _uvQuoteCmdArg(arg) {\n // Tool runner wraps child_process.spawn() and needs to apply the same quoting as\n // Node in certain cases where the undocumented spawn option windowsVerbatimArguments\n // is used.\n //\n // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,\n // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),\n // pasting copyright notice from Node within this function:\n //\n // Copyright Joyent, Inc. and other Node contributors. All rights reserved.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a copy\n // of this software and associated documentation files (the \"Software\"), to\n // deal in the Software without restriction, including without limitation the\n // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n // sell copies of the Software, and to permit persons to whom the Software is\n // furnished to do so, subject to the following conditions:\n //\n // The above copyright notice and this permission notice shall be included in\n // all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n // IN THE SOFTWARE.\n if (!arg) {\n // Need double quotation for empty argument\n return '\"\"';\n }\n if (!arg.includes(' ') && !arg.includes('\\t') && !arg.includes('\"')) {\n // No quotation needed\n return arg;\n }\n if (!arg.includes('\"') && !arg.includes('\\\\')) {\n // No embedded double quotes or backslashes, so I can just wrap\n // quote marks around the whole thing.\n return `\"${arg}\"`;\n }\n // Expected input/output:\n // input : hello\"world\n // output: \"hello\\\"world\"\n // input : hello\"\"world\n // output: \"hello\\\"\\\"world\"\n // input : hello\\world\n // output: hello\\world\n // input : hello\\\\world\n // output: hello\\\\world\n // input : hello\\\"world\n // output: \"hello\\\\\\\"world\"\n // input : hello\\\\\"world\n // output: \"hello\\\\\\\\\\\"world\"\n // input : hello world\\\n // output: \"hello world\\\\\" - note the comment in libuv actually reads \"hello world\\\"\n // but it appears the comment is wrong, it should be \"hello world\\\\\"\n let reverse = '\"';\n let quoteHit = true;\n for (let i = arg.length; i > 0; i--) {\n // walk the string in reverse\n reverse += arg[i - 1];\n if (quoteHit && arg[i - 1] === '\\\\') {\n reverse += '\\\\';\n }\n else if (arg[i - 1] === '\"') {\n quoteHit = true;\n reverse += '\\\\';\n }\n else {\n quoteHit = false;\n }\n }\n reverse += '\"';\n return reverse\n .split('')\n .reverse()\n .join('');\n }\n _cloneExecOptions(options) {\n options = options || {};\n const result = {\n cwd: options.cwd || process.cwd(),\n env: options.env || process.env,\n silent: options.silent || false,\n windowsVerbatimArguments: options.windowsVerbatimArguments || false,\n failOnStdErr: options.failOnStdErr || false,\n ignoreReturnCode: options.ignoreReturnCode || false,\n delay: options.delay || 10000\n };\n result.outStream = options.outStream || process.stdout;\n result.errStream = options.errStream || process.stderr;\n return result;\n }\n _getSpawnOptions(options, toolPath) {\n options = options || {};\n const result = {};\n result.cwd = options.cwd;\n result.env = options.env;\n result['windowsVerbatimArguments'] =\n options.windowsVerbatimArguments || this._isCmdFile();\n if (options.windowsVerbatimArguments) {\n result.argv0 = `\"${toolPath}\"`;\n }\n return result;\n }\n /**\n * Exec a tool.\n * Output will be streamed to the live console.\n * Returns promise with return code\n *\n * @param tool path to tool to exec\n * @param options optional exec options. See ExecOptions\n * @returns number\n */\n exec() {\n return __awaiter(this, void 0, void 0, function* () {\n // root the tool path if it is unrooted and contains relative pathing\n if (!ioUtil.isRooted(this.toolPath) &&\n (this.toolPath.includes('/') ||\n (IS_WINDOWS && this.toolPath.includes('\\\\')))) {\n // prefer options.cwd if it is specified, however options.cwd may also need to be rooted\n this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);\n }\n // if the tool is only a file name, then resolve it from the PATH\n // otherwise verify it exists (add extension on Windows if necessary)\n this.toolPath = yield io.which(this.toolPath, true);\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n this._debug(`exec tool: ${this.toolPath}`);\n this._debug('arguments:');\n for (const arg of this.args) {\n this._debug(` ${arg}`);\n }\n const optionsNonNull = this._cloneExecOptions(this.options);\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);\n }\n const state = new ExecState(optionsNonNull, this.toolPath);\n state.on('debug', (message) => {\n this._debug(message);\n });\n if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {\n return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));\n }\n const fileName = this._getSpawnFileName();\n const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));\n let stdbuffer = '';\n if (cp.stdout) {\n cp.stdout.on('data', (data) => {\n if (this.options.listeners && this.options.listeners.stdout) {\n this.options.listeners.stdout(data);\n }\n if (!optionsNonNull.silent && optionsNonNull.outStream) {\n optionsNonNull.outStream.write(data);\n }\n stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.stdline) {\n this.options.listeners.stdline(line);\n }\n });\n });\n }\n let errbuffer = '';\n if (cp.stderr) {\n cp.stderr.on('data', (data) => {\n state.processStderr = true;\n if (this.options.listeners && this.options.listeners.stderr) {\n this.options.listeners.stderr(data);\n }\n if (!optionsNonNull.silent &&\n optionsNonNull.errStream &&\n optionsNonNull.outStream) {\n const s = optionsNonNull.failOnStdErr\n ? optionsNonNull.errStream\n : optionsNonNull.outStream;\n s.write(data);\n }\n errbuffer = this._processLineBuffer(data, errbuffer, (line) => {\n if (this.options.listeners && this.options.listeners.errline) {\n this.options.listeners.errline(line);\n }\n });\n });\n }\n cp.on('error', (err) => {\n state.processError = err.message;\n state.processExited = true;\n state.processClosed = true;\n state.CheckComplete();\n });\n cp.on('exit', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n cp.on('close', (code) => {\n state.processExitCode = code;\n state.processExited = true;\n state.processClosed = true;\n this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);\n state.CheckComplete();\n });\n state.on('done', (error, exitCode) => {\n if (stdbuffer.length > 0) {\n this.emit('stdline', stdbuffer);\n }\n if (errbuffer.length > 0) {\n this.emit('errline', errbuffer);\n }\n cp.removeAllListeners();\n if (error) {\n reject(error);\n }\n else {\n resolve(exitCode);\n }\n });\n if (this.options.input) {\n if (!cp.stdin) {\n throw new Error('child process missing stdin');\n }\n cp.stdin.end(this.options.input);\n }\n }));\n });\n }\n}\nexports.ToolRunner = ToolRunner;\n/**\n * Convert an arg string to an array of args. Handles escaping\n *\n * @param argString string of arguments\n * @returns string[] array of arguments\n */\nfunction argStringToArray(argString) {\n const args = [];\n let inQuotes = false;\n let escaped = false;\n let arg = '';\n function append(c) {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\';\n }\n arg += c;\n escaped = false;\n }\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i);\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes;\n }\n else {\n append(c);\n }\n continue;\n }\n if (c === '\\\\' && escaped) {\n append(c);\n continue;\n }\n if (c === '\\\\' && inQuotes) {\n escaped = true;\n continue;\n }\n if (c === ' ' && !inQuotes) {\n if (arg.length > 0) {\n args.push(arg);\n arg = '';\n }\n continue;\n }\n append(c);\n }\n if (arg.length > 0) {\n args.push(arg.trim());\n }\n return args;\n}\nexports.argStringToArray = argStringToArray;\nclass ExecState extends events.EventEmitter {\n constructor(options, toolPath) {\n super();\n this.processClosed = false; // tracks whether the process has exited and stdio is closed\n this.processError = '';\n this.processExitCode = 0;\n this.processExited = false; // tracks whether the process has exited\n this.processStderr = false; // tracks whether stderr was written to\n this.delay = 10000; // 10 seconds\n this.done = false;\n this.timeout = null;\n if (!toolPath) {\n throw new Error('toolPath must not be empty');\n }\n this.options = options;\n this.toolPath = toolPath;\n if (options.delay) {\n this.delay = options.delay;\n }\n }\n CheckComplete() {\n if (this.done) {\n return;\n }\n if (this.processClosed) {\n this._setResult();\n }\n else if (this.processExited) {\n this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);\n }\n }\n _debug(message) {\n this.emit('debug', message);\n }\n _setResult() {\n // determine whether there is an error\n let error;\n if (this.processExited) {\n if (this.processError) {\n error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);\n }\n else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {\n error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);\n }\n else if (this.processStderr && this.options.failOnStdErr) {\n error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);\n }\n }\n // clear the timeout\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.done = true;\n this.emit('done', error, this.processExitCode);\n }\n static HandleTimeout(state) {\n if (state.done) {\n return;\n }\n if (!state.processClosed && state.processExited) {\n const message = `The STDIO streams did not close within ${state.delay /\n 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;\n state._debug(message);\n }\n state._setResult();\n }\n}\n//# sourceMappingURL=toolrunner.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\";\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};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\n_a = fs.promises\n// export const {open} = 'fs'\n, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;\n// export const {open} = 'fs'\nexports.IS_WINDOWS = process.platform === 'win32';\n// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691\nexports.UV_FS_O_EXLOCK = 0x10000000;\nexports.READONLY = fs.constants.O_RDONLY;\nfunction exists(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield exports.stat(fsPath);\n }\n catch (err) {\n if (err.code === 'ENOENT') {\n return false;\n }\n throw err;\n }\n return true;\n });\n}\nexports.exists = exists;\nfunction isDirectory(fsPath, useStat = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);\n return stats.isDirectory();\n });\n}\nexports.isDirectory = isDirectory;\n/**\n * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:\n * \\, \\hello, \\\\hello\\share, C:, and C:\\hello (and corresponding alternate separator cases).\n */\nfunction isRooted(p) {\n p = normalizeSeparators(p);\n if (!p) {\n throw new Error('isRooted() parameter \"p\" cannot be empty');\n }\n if (exports.IS_WINDOWS) {\n return (p.startsWith('\\\\') || /^[A-Z]:/i.test(p) // e.g. \\ or \\hello or \\\\hello\n ); // e.g. C: or C:\\hello\n }\n return p.startsWith('/');\n}\nexports.isRooted = isRooted;\n/**\n * Best effort attempt to determine whether a file exists and is executable.\n * @param filePath file path to check\n * @param extensions additional file extensions to try\n * @return if file exists and is executable, returns the file path. otherwise empty string.\n */\nfunction tryGetExecutablePath(filePath, extensions) {\n return __awaiter(this, void 0, void 0, function* () {\n let stats = undefined;\n try {\n // test file exists\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // on Windows, test for valid extension\n const upperExt = path.extname(filePath).toUpperCase();\n if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {\n return filePath;\n }\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n // try each extension\n const originalFilePath = filePath;\n for (const extension of extensions) {\n filePath = originalFilePath + extension;\n stats = undefined;\n try {\n stats = yield exports.stat(filePath);\n }\n catch (err) {\n if (err.code !== 'ENOENT') {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);\n }\n }\n if (stats && stats.isFile()) {\n if (exports.IS_WINDOWS) {\n // preserve the case of the actual file (since an extension was appended)\n try {\n const directory = path.dirname(filePath);\n const upperName = path.basename(filePath).toUpperCase();\n for (const actualName of yield exports.readdir(directory)) {\n if (upperName === actualName.toUpperCase()) {\n filePath = path.join(directory, actualName);\n break;\n }\n }\n }\n catch (err) {\n // eslint-disable-next-line no-console\n console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);\n }\n return filePath;\n }\n else {\n if (isUnixExecutable(stats)) {\n return filePath;\n }\n }\n }\n }\n return '';\n });\n}\nexports.tryGetExecutablePath = tryGetExecutablePath;\nfunction normalizeSeparators(p) {\n p = p || '';\n if (exports.IS_WINDOWS) {\n // convert slashes on Windows\n p = p.replace(/\\//g, '\\\\');\n // remove redundant slashes\n return p.replace(/\\\\\\\\+/g, '\\\\');\n }\n // remove redundant slashes\n return p.replace(/\\/\\/+/g, '/');\n}\n// on Mac/Linux, test the execute bit\n// R W X R W X R W X\n// 256 128 64 32 16 8 4 2 1\nfunction isUnixExecutable(stats) {\n return ((stats.mode & 1) > 0 ||\n ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||\n ((stats.mode & 64) > 0 && stats.uid === process.getuid()));\n}\n// Get the path of cmd.exe in windows\nfunction getCmdPath() {\n var _a;\n return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;\n}\nexports.getCmdPath = getCmdPath;\n//# sourceMappingURL=io-util.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.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;\nconst assert_1 = require(\"assert\");\nconst path = __importStar(require(\"path\"));\nconst ioUtil = __importStar(require(\"./io-util\"));\n/**\n * Copies a file or folder.\n * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See CopyOptions.\n */\nfunction cp(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const { force, recursive, copySourceDirectory } = readCopyOptions(options);\n const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;\n // Dest is an existing file, but not forcing\n if (destStat && destStat.isFile() && !force) {\n return;\n }\n // If dest is an existing directory, should copy inside.\n const newDest = destStat && destStat.isDirectory() && copySourceDirectory\n ? path.join(dest, path.basename(source))\n : dest;\n if (!(yield ioUtil.exists(source))) {\n throw new Error(`no such file or directory: ${source}`);\n }\n const sourceStat = yield ioUtil.stat(source);\n if (sourceStat.isDirectory()) {\n if (!recursive) {\n throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);\n }\n else {\n yield cpDirRecursive(source, newDest, 0, force);\n }\n }\n else {\n if (path.relative(source, newDest) === '') {\n // a file cannot be copied to itself\n throw new Error(`'${newDest}' and '${source}' are the same file`);\n }\n yield copyFile(source, newDest, force);\n }\n });\n}\nexports.cp = cp;\n/**\n * Moves a path.\n *\n * @param source source path\n * @param dest destination path\n * @param options optional. See MoveOptions.\n */\nfunction mv(source, dest, options = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield ioUtil.exists(dest)) {\n let destExists = true;\n if (yield ioUtil.isDirectory(dest)) {\n // If dest is directory copy src into dest\n dest = path.join(dest, path.basename(source));\n destExists = yield ioUtil.exists(dest);\n }\n if (destExists) {\n if (options.force == null || options.force) {\n yield rmRF(dest);\n }\n else {\n throw new Error('Destination already exists');\n }\n }\n }\n yield mkdirP(path.dirname(dest));\n yield ioUtil.rename(source, dest);\n });\n}\nexports.mv = mv;\n/**\n * Remove a path recursively with force\n *\n * @param inputPath path to remove\n */\nfunction rmRF(inputPath) {\n return __awaiter(this, void 0, void 0, function* () {\n if (ioUtil.IS_WINDOWS) {\n // Check for invalid characters\n // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file\n if (/[*\"<>|]/.test(inputPath)) {\n throw new Error('File path must not contain `*`, `\"`, `<`, `>` or `|` on Windows');\n }\n }\n try {\n // note if path does not exist, error is silent\n yield ioUtil.rm(inputPath, {\n force: true,\n maxRetries: 3,\n recursive: true,\n retryDelay: 300\n });\n }\n catch (err) {\n throw new Error(`File was unable to be removed ${err}`);\n }\n });\n}\nexports.rmRF = rmRF;\n/**\n * Make a directory. Creates the full path with folders in between\n * Will throw if it fails\n *\n * @param fsPath path to create\n * @returns Promise\n */\nfunction mkdirP(fsPath) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(fsPath, 'a path argument must be provided');\n yield ioUtil.mkdir(fsPath, { recursive: true });\n });\n}\nexports.mkdirP = mkdirP;\n/**\n * Returns path of a tool had the tool actually been invoked. Resolves via paths.\n * If you check and the tool does not exist, it will throw.\n *\n * @param tool name of the tool\n * @param check whether to check if tool exists\n * @returns Promise path to tool\n */\nfunction which(tool, check) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // recursive when check=true\n if (check) {\n const result = yield which(tool, false);\n if (!result) {\n if (ioUtil.IS_WINDOWS) {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);\n }\n else {\n throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);\n }\n }\n return result;\n }\n const matches = yield findInPath(tool);\n if (matches && matches.length > 0) {\n return matches[0];\n }\n return '';\n });\n}\nexports.which = which;\n/**\n * Returns a list of all occurrences of the given tool on the system path.\n *\n * @returns Promise the paths of the tool\n */\nfunction findInPath(tool) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!tool) {\n throw new Error(\"parameter 'tool' is required\");\n }\n // build the list of extensions to try\n const extensions = [];\n if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {\n for (const extension of process.env['PATHEXT'].split(path.delimiter)) {\n if (extension) {\n extensions.push(extension);\n }\n }\n }\n // if it's rooted, return it if exists. otherwise return empty.\n if (ioUtil.isRooted(tool)) {\n const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);\n if (filePath) {\n return [filePath];\n }\n return [];\n }\n // if any path separators, return empty\n if (tool.includes(path.sep)) {\n return [];\n }\n // build the list of directories\n //\n // Note, technically \"where\" checks the current directory on Windows. From a toolkit perspective,\n // it feels like we should not do this. Checking the current directory seems like more of a use\n // case of a shell, and the which() function exposed by the toolkit should strive for consistency\n // across platforms.\n const directories = [];\n if (process.env.PATH) {\n for (const p of process.env.PATH.split(path.delimiter)) {\n if (p) {\n directories.push(p);\n }\n }\n }\n // find all matches\n const matches = [];\n for (const directory of directories) {\n const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);\n if (filePath) {\n matches.push(filePath);\n }\n }\n return matches;\n });\n}\nexports.findInPath = findInPath;\nfunction readCopyOptions(options) {\n const force = options.force == null ? true : options.force;\n const recursive = Boolean(options.recursive);\n const copySourceDirectory = options.copySourceDirectory == null\n ? true\n : Boolean(options.copySourceDirectory);\n return { force, recursive, copySourceDirectory };\n}\nfunction cpDirRecursive(sourceDir, destDir, currentDepth, force) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ensure there is not a run away recursive copy\n if (currentDepth >= 255)\n return;\n currentDepth++;\n yield mkdirP(destDir);\n const files = yield ioUtil.readdir(sourceDir);\n for (const fileName of files) {\n const srcFile = `${sourceDir}/${fileName}`;\n const destFile = `${destDir}/${fileName}`;\n const srcFileStat = yield ioUtil.lstat(srcFile);\n if (srcFileStat.isDirectory()) {\n // Recurse\n yield cpDirRecursive(srcFile, destFile, currentDepth, force);\n }\n else {\n yield copyFile(srcFile, destFile, force);\n }\n }\n // Change the mode for the newly created directory\n yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);\n });\n}\n// Buffered file copy\nfunction copyFile(srcFile, destFile, force) {\n return __awaiter(this, void 0, void 0, function* () {\n if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {\n // unlink/re-link it\n try {\n yield ioUtil.lstat(destFile);\n yield ioUtil.unlink(destFile);\n }\n catch (e) {\n // Try to override file permission\n if (e.code === 'EPERM') {\n yield ioUtil.chmod(destFile, '0666');\n yield ioUtil.unlink(destFile);\n }\n // other errors = it doesn't exist, no work to do\n }\n // Copy over symlink\n const symlinkFull = yield ioUtil.readlink(srcFile);\n yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);\n }\n else if (!(yield ioUtil.exists(destFile)) || force) {\n yield ioUtil.copyFile(srcFile, destFile);\n }\n });\n}\n//# sourceMappingURL=io.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._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0;\nconst semver = __importStar(require(\"semver\"));\nconst core_1 = require(\"@actions/core\");\n// needs to be require for core node modules to be mocked\n/* eslint @typescript-eslint/no-require-imports: 0 */\nconst os = require(\"os\");\nconst cp = require(\"child_process\");\nconst fs = require(\"fs\");\nfunction _findMatch(versionSpec, stable, candidates, archFilter) {\n return __awaiter(this, void 0, void 0, function* () {\n const platFilter = os.platform();\n let result;\n let match;\n let file;\n for (const candidate of candidates) {\n const version = candidate.version;\n core_1.debug(`check ${version} satisfies ${versionSpec}`);\n if (semver.satisfies(version, versionSpec) &&\n (!stable || candidate.stable === stable)) {\n file = candidate.files.find(item => {\n core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);\n let chk = item.arch === archFilter && item.platform === platFilter;\n if (chk && item.platform_version) {\n const osVersion = module.exports._getOsVersion();\n if (osVersion === item.platform_version) {\n chk = true;\n }\n else {\n chk = semver.satisfies(osVersion, item.platform_version);\n }\n }\n return chk;\n });\n if (file) {\n core_1.debug(`matched ${candidate.version}`);\n match = candidate;\n break;\n }\n }\n }\n if (match && file) {\n // clone since we're mutating the file list to be only the file that matches\n result = Object.assign({}, match);\n result.files = [file];\n }\n return result;\n });\n}\nexports._findMatch = _findMatch;\nfunction _getOsVersion() {\n // TODO: add windows and other linux, arm variants\n // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python)\n const plat = os.platform();\n let version = '';\n if (plat === 'darwin') {\n version = cp.execSync('sw_vers -productVersion').toString();\n }\n else if (plat === 'linux') {\n // lsb_release process not in some containers, readfile\n // Run cat /etc/lsb-release\n // DISTRIB_ID=Ubuntu\n // DISTRIB_RELEASE=18.04\n // DISTRIB_CODENAME=bionic\n // DISTRIB_DESCRIPTION=\"Ubuntu 18.04.4 LTS\"\n const lsbContents = module.exports._readLinuxVersionFile();\n if (lsbContents) {\n const lines = lsbContents.split('\\n');\n for (const line of lines) {\n const parts = line.split('=');\n if (parts.length === 2 &&\n (parts[0].trim() === 'VERSION_ID' ||\n parts[0].trim() === 'DISTRIB_RELEASE')) {\n version = parts[1]\n .trim()\n .replace(/^\"/, '')\n .replace(/\"$/, '');\n break;\n }\n }\n }\n }\n return version;\n}\nexports._getOsVersion = _getOsVersion;\nfunction _readLinuxVersionFile() {\n const lsbReleaseFile = '/etc/lsb-release';\n const osReleaseFile = '/etc/os-release';\n let contents = '';\n if (fs.existsSync(lsbReleaseFile)) {\n contents = fs.readFileSync(lsbReleaseFile).toString();\n }\n else if (fs.existsSync(osReleaseFile)) {\n contents = fs.readFileSync(osReleaseFile).toString();\n }\n return contents;\n}\nexports._readLinuxVersionFile = _readLinuxVersionFile;\n//# sourceMappingURL=manifest.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.RetryHelper = void 0;\nconst core = __importStar(require(\"@actions/core\"));\n/**\n * Internal class for retries\n */\nclass RetryHelper {\n constructor(maxAttempts, minSeconds, maxSeconds) {\n if (maxAttempts < 1) {\n throw new Error('max attempts should be greater than or equal to 1');\n }\n this.maxAttempts = maxAttempts;\n this.minSeconds = Math.floor(minSeconds);\n this.maxSeconds = Math.floor(maxSeconds);\n if (this.minSeconds > this.maxSeconds) {\n throw new Error('min seconds should be less than or equal to max seconds');\n }\n }\n execute(action, isRetryable) {\n return __awaiter(this, void 0, void 0, function* () {\n let attempt = 1;\n while (attempt < this.maxAttempts) {\n // Try\n try {\n return yield action();\n }\n catch (err) {\n if (isRetryable && !isRetryable(err)) {\n throw err;\n }\n core.info(err.message);\n }\n // Sleep\n const seconds = this.getSleepAmount();\n core.info(`Waiting ${seconds} seconds before trying again`);\n yield this.sleep(seconds);\n attempt++;\n }\n // Last attempt\n return yield action();\n });\n }\n getSleepAmount() {\n return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +\n this.minSeconds);\n }\n sleep(seconds) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise(resolve => setTimeout(resolve, seconds * 1000));\n });\n }\n}\nexports.RetryHelper = RetryHelper;\n//# sourceMappingURL=retry-helper.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};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nconst io = __importStar(require(\"@actions/io\"));\nconst fs = __importStar(require(\"fs\"));\nconst mm = __importStar(require(\"./manifest\"));\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst httpm = __importStar(require(\"@actions/http-client\"));\nconst semver = __importStar(require(\"semver\"));\nconst stream = __importStar(require(\"stream\"));\nconst util = __importStar(require(\"util\"));\nconst assert_1 = require(\"assert\");\nconst v4_1 = __importDefault(require(\"uuid/v4\"));\nconst exec_1 = require(\"@actions/exec/lib/exec\");\nconst retry_helper_1 = require(\"./retry-helper\");\nclass HTTPError extends Error {\n constructor(httpStatusCode) {\n super(`Unexpected HTTP response: ${httpStatusCode}`);\n this.httpStatusCode = httpStatusCode;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexports.HTTPError = HTTPError;\nconst IS_WINDOWS = process.platform === 'win32';\nconst IS_MAC = process.platform === 'darwin';\nconst userAgent = 'actions/tool-cache';\n/**\n * Download a tool from an url and stream it into a file\n *\n * @param url url of tool to download\n * @param dest path to download tool\n * @param auth authorization header\n * @param headers other headers\n * @returns path to downloaded tool\n */\nfunction downloadTool(url, dest, auth, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n dest = dest || path.join(_getTempDirectory(), v4_1.default());\n yield io.mkdirP(path.dirname(dest));\n core.debug(`Downloading ${url}`);\n core.debug(`Destination ${dest}`);\n const maxAttempts = 3;\n const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10);\n const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20);\n const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds);\n return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {\n return yield downloadToolAttempt(url, dest || '', auth, headers);\n }), (err) => {\n if (err instanceof HTTPError && err.httpStatusCode) {\n // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests\n if (err.httpStatusCode < 500 &&\n err.httpStatusCode !== 408 &&\n err.httpStatusCode !== 429) {\n return false;\n }\n }\n // Otherwise retry\n return true;\n });\n });\n}\nexports.downloadTool = downloadTool;\nfunction downloadToolAttempt(url, dest, auth, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (fs.existsSync(dest)) {\n throw new Error(`Destination file path ${dest} already exists`);\n }\n // Get the response headers\n const http = new httpm.HttpClient(userAgent, [], {\n allowRetries: false\n });\n if (auth) {\n core.debug('set auth');\n if (headers === undefined) {\n headers = {};\n }\n headers.authorization = auth;\n }\n const response = yield http.get(url, headers);\n if (response.message.statusCode !== 200) {\n const err = new HTTPError(response.message.statusCode);\n core.debug(`Failed to download from \"${url}\". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);\n throw err;\n }\n // Download the response body\n const pipeline = util.promisify(stream.pipeline);\n const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message);\n const readStream = responseMessageFactory();\n let succeeded = false;\n try {\n yield pipeline(readStream, fs.createWriteStream(dest));\n core.debug('download complete');\n succeeded = true;\n return dest;\n }\n finally {\n // Error, delete dest before retry\n if (!succeeded) {\n core.debug('download failed');\n try {\n yield io.rmRF(dest);\n }\n catch (err) {\n core.debug(`Failed to delete '${dest}'. ${err.message}`);\n }\n }\n }\n });\n}\n/**\n * Extract a .7z file\n *\n * @param file path to the .7z file\n * @param dest destination directory. Optional.\n * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this\n * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will\n * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is\n * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line\n * interface, it is smaller than the full command line interface, and it does support long paths. At the\n * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.\n * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path\n * to 7zr.exe can be pass to this function.\n * @returns path to the destination directory\n */\nfunction extract7z(file, dest, _7zPath) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');\n assert_1.ok(file, 'parameter \"file\" is required');\n dest = yield _createExtractFolder(dest);\n const originalCwd = process.cwd();\n process.chdir(dest);\n if (_7zPath) {\n try {\n const logLevel = core.isDebug() ? '-bb1' : '-bb0';\n const args = [\n 'x',\n logLevel,\n '-bd',\n '-sccUTF-8',\n file\n ];\n const options = {\n silent: true\n };\n yield exec_1.exec(`\"${_7zPath}\"`, args, options);\n }\n finally {\n process.chdir(originalCwd);\n }\n }\n else {\n const escapedScript = path\n .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')\n .replace(/'/g, \"''\")\n .replace(/\"|\\n|\\r/g, ''); // double-up single quotes, remove double quotes and newlines\n const escapedFile = file.replace(/'/g, \"''\").replace(/\"|\\n|\\r/g, '');\n const escapedTarget = dest.replace(/'/g, \"''\").replace(/\"|\\n|\\r/g, '');\n const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;\n const args = [\n '-NoLogo',\n '-Sta',\n '-NoProfile',\n '-NonInteractive',\n '-ExecutionPolicy',\n 'Unrestricted',\n '-Command',\n command\n ];\n const options = {\n silent: true\n };\n try {\n const powershellPath = yield io.which('powershell', true);\n yield exec_1.exec(`\"${powershellPath}\"`, args, options);\n }\n finally {\n process.chdir(originalCwd);\n }\n }\n return dest;\n });\n}\nexports.extract7z = extract7z;\n/**\n * Extract a compressed tar archive\n *\n * @param file path to the tar\n * @param dest destination directory. Optional.\n * @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional.\n * @returns path to the destination directory\n */\nfunction extractTar(file, dest, flags = 'xz') {\n return __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n throw new Error(\"parameter 'file' is required\");\n }\n // Create dest\n dest = yield _createExtractFolder(dest);\n // Determine whether GNU tar\n core.debug('Checking tar --version');\n let versionOutput = '';\n yield exec_1.exec('tar --version', [], {\n ignoreReturnCode: true,\n silent: true,\n listeners: {\n stdout: (data) => (versionOutput += data.toString()),\n stderr: (data) => (versionOutput += data.toString())\n }\n });\n core.debug(versionOutput.trim());\n const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR');\n // Initialize args\n let args;\n if (flags instanceof Array) {\n args = flags;\n }\n else {\n args = [flags];\n }\n if (core.isDebug() && !flags.includes('v')) {\n args.push('-v');\n }\n let destArg = dest;\n let fileArg = file;\n if (IS_WINDOWS && isGnuTar) {\n args.push('--force-local');\n destArg = dest.replace(/\\\\/g, '/');\n // Technically only the dest needs to have `/` but for aesthetic consistency\n // convert slashes in the file arg too.\n fileArg = file.replace(/\\\\/g, '/');\n }\n if (isGnuTar) {\n // Suppress warnings when using GNU tar to extract archives created by BSD tar\n args.push('--warning=no-unknown-keyword');\n args.push('--overwrite');\n }\n args.push('-C', destArg, '-f', fileArg);\n yield exec_1.exec(`tar`, args);\n return dest;\n });\n}\nexports.extractTar = extractTar;\n/**\n * Extract a xar compatible archive\n *\n * @param file path to the archive\n * @param dest destination directory. Optional.\n * @param flags flags for the xar. Optional.\n * @returns path to the destination directory\n */\nfunction extractXar(file, dest, flags = []) {\n return __awaiter(this, void 0, void 0, function* () {\n assert_1.ok(IS_MAC, 'extractXar() not supported on current OS');\n assert_1.ok(file, 'parameter \"file\" is required');\n dest = yield _createExtractFolder(dest);\n let args;\n if (flags instanceof Array) {\n args = flags;\n }\n else {\n args = [flags];\n }\n args.push('-x', '-C', dest, '-f', file);\n if (core.isDebug()) {\n args.push('-v');\n }\n const xarPath = yield io.which('xar', true);\n yield exec_1.exec(`\"${xarPath}\"`, _unique(args));\n return dest;\n });\n}\nexports.extractXar = extractXar;\n/**\n * Extract a zip\n *\n * @param file path to the zip\n * @param dest destination directory. Optional.\n * @returns path to the destination directory\n */\nfunction extractZip(file, dest) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n throw new Error(\"parameter 'file' is required\");\n }\n dest = yield _createExtractFolder(dest);\n if (IS_WINDOWS) {\n yield extractZipWin(file, dest);\n }\n else {\n yield extractZipNix(file, dest);\n }\n return dest;\n });\n}\nexports.extractZip = extractZip;\nfunction extractZipWin(file, dest) {\n return __awaiter(this, void 0, void 0, function* () {\n // build the powershell command\n const escapedFile = file.replace(/'/g, \"''\").replace(/\"|\\n|\\r/g, ''); // double-up single quotes, remove double quotes and newlines\n const escapedDest = dest.replace(/'/g, \"''\").replace(/\"|\\n|\\r/g, '');\n const pwshPath = yield io.which('pwsh', false);\n //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory\n //and the -Force flag for Expand-Archive as a fallback\n if (pwshPath) {\n //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive\n const pwshCommand = [\n `$ErrorActionPreference = 'Stop' ;`,\n `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`,\n `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`,\n `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;`\n ].join(' ');\n const args = [\n '-NoLogo',\n '-NoProfile',\n '-NonInteractive',\n '-ExecutionPolicy',\n 'Unrestricted',\n '-Command',\n pwshCommand\n ];\n core.debug(`Using pwsh at path: ${pwshPath}`);\n yield exec_1.exec(`\"${pwshPath}\"`, args);\n }\n else {\n const powershellCommand = [\n `$ErrorActionPreference = 'Stop' ;`,\n `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,\n `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`,\n `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`\n ].join(' ');\n const args = [\n '-NoLogo',\n '-Sta',\n '-NoProfile',\n '-NonInteractive',\n '-ExecutionPolicy',\n 'Unrestricted',\n '-Command',\n powershellCommand\n ];\n const powershellPath = yield io.which('powershell', true);\n core.debug(`Using powershell at path: ${powershellPath}`);\n yield exec_1.exec(`\"${powershellPath}\"`, args);\n }\n });\n}\nfunction extractZipNix(file, dest) {\n return __awaiter(this, void 0, void 0, function* () {\n const unzipPath = yield io.which('unzip', true);\n const args = [file];\n if (!core.isDebug()) {\n args.unshift('-q');\n }\n args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run\n yield exec_1.exec(`\"${unzipPath}\"`, args, { cwd: dest });\n });\n}\n/**\n * Caches a directory and installs it into the tool cacheDir\n *\n * @param sourceDir the directory to cache into tools\n * @param tool tool name\n * @param version version of the tool. semver format\n * @param arch architecture of the tool. Optional. Defaults to machine architecture\n */\nfunction cacheDir(sourceDir, tool, version, arch) {\n return __awaiter(this, void 0, void 0, function* () {\n version = semver.clean(version) || version;\n arch = arch || os.arch();\n core.debug(`Caching tool ${tool} ${version} ${arch}`);\n core.debug(`source dir: ${sourceDir}`);\n if (!fs.statSync(sourceDir).isDirectory()) {\n throw new Error('sourceDir is not a directory');\n }\n // Create the tool dir\n const destPath = yield _createToolPath(tool, version, arch);\n // copy each child item. do not move. move can fail on Windows\n // due to anti-virus software having an open handle on a file.\n for (const itemName of fs.readdirSync(sourceDir)) {\n const s = path.join(sourceDir, itemName);\n yield io.cp(s, destPath, { recursive: true });\n }\n // write .complete\n _completeToolPath(tool, version, arch);\n return destPath;\n });\n}\nexports.cacheDir = cacheDir;\n/**\n * Caches a downloaded file (GUID) and installs it\n * into the tool cache with a given targetName\n *\n * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid.\n * @param targetFile the name of the file name in the tools directory\n * @param tool tool name\n * @param version version of the tool. semver format\n * @param arch architecture of the tool. Optional. Defaults to machine architecture\n */\nfunction cacheFile(sourceFile, targetFile, tool, version, arch) {\n return __awaiter(this, void 0, void 0, function* () {\n version = semver.clean(version) || version;\n arch = arch || os.arch();\n core.debug(`Caching tool ${tool} ${version} ${arch}`);\n core.debug(`source file: ${sourceFile}`);\n if (!fs.statSync(sourceFile).isFile()) {\n throw new Error('sourceFile is not a file');\n }\n // create the tool dir\n const destFolder = yield _createToolPath(tool, version, arch);\n // copy instead of move. move can fail on Windows due to\n // anti-virus software having an open handle on a file.\n const destPath = path.join(destFolder, targetFile);\n core.debug(`destination file ${destPath}`);\n yield io.cp(sourceFile, destPath);\n // write .complete\n _completeToolPath(tool, version, arch);\n return destFolder;\n });\n}\nexports.cacheFile = cacheFile;\n/**\n * Finds the path to a tool version in the local installed tool cache\n *\n * @param toolName name of the tool\n * @param versionSpec version of the tool\n * @param arch optional arch. defaults to arch of computer\n */\nfunction find(toolName, versionSpec, arch) {\n if (!toolName) {\n throw new Error('toolName parameter is required');\n }\n if (!versionSpec) {\n throw new Error('versionSpec parameter is required');\n }\n arch = arch || os.arch();\n // attempt to resolve an explicit version\n if (!isExplicitVersion(versionSpec)) {\n const localVersions = findAllVersions(toolName, arch);\n const match = evaluateVersions(localVersions, versionSpec);\n versionSpec = match;\n }\n // check for the explicit version in the cache\n let toolPath = '';\n if (versionSpec) {\n versionSpec = semver.clean(versionSpec) || '';\n const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch);\n core.debug(`checking cache: ${cachePath}`);\n if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {\n core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);\n toolPath = cachePath;\n }\n else {\n core.debug('not found');\n }\n }\n return toolPath;\n}\nexports.find = find;\n/**\n * Finds the paths to all versions of a tool that are installed in the local tool cache\n *\n * @param toolName name of the tool\n * @param arch optional arch. defaults to arch of computer\n */\nfunction findAllVersions(toolName, arch) {\n const versions = [];\n arch = arch || os.arch();\n const toolPath = path.join(_getCacheDirectory(), toolName);\n if (fs.existsSync(toolPath)) {\n const children = fs.readdirSync(toolPath);\n for (const child of children) {\n if (isExplicitVersion(child)) {\n const fullPath = path.join(toolPath, child, arch || '');\n if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {\n versions.push(child);\n }\n }\n }\n }\n return versions;\n}\nexports.findAllVersions = findAllVersions;\nfunction getManifestFromRepo(owner, repo, auth, branch = 'master') {\n return __awaiter(this, void 0, void 0, function* () {\n let releases = [];\n const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`;\n const http = new httpm.HttpClient('tool-cache');\n const headers = {};\n if (auth) {\n core.debug('set auth');\n headers.authorization = auth;\n }\n const response = yield http.getJson(treeUrl, headers);\n if (!response.result) {\n return releases;\n }\n let manifestUrl = '';\n for (const item of response.result.tree) {\n if (item.path === 'versions-manifest.json') {\n manifestUrl = item.url;\n break;\n }\n }\n headers['accept'] = 'application/vnd.github.VERSION.raw';\n let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody();\n if (versionsRaw) {\n // shouldn't be needed but protects against invalid json saved with BOM\n versionsRaw = versionsRaw.replace(/^\\uFEFF/, '');\n try {\n releases = JSON.parse(versionsRaw);\n }\n catch (_a) {\n core.debug('Invalid json');\n }\n }\n return releases;\n });\n}\nexports.getManifestFromRepo = getManifestFromRepo;\nfunction findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) {\n return __awaiter(this, void 0, void 0, function* () {\n // wrap the internal impl\n const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter);\n return match;\n });\n}\nexports.findFromManifest = findFromManifest;\nfunction _createExtractFolder(dest) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dest) {\n // create a temp dir\n dest = path.join(_getTempDirectory(), v4_1.default());\n }\n yield io.mkdirP(dest);\n return dest;\n });\n}\nfunction _createToolPath(tool, version, arch) {\n return __awaiter(this, void 0, void 0, function* () {\n const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');\n core.debug(`destination ${folderPath}`);\n const markerPath = `${folderPath}.complete`;\n yield io.rmRF(folderPath);\n yield io.rmRF(markerPath);\n yield io.mkdirP(folderPath);\n return folderPath;\n });\n}\nfunction _completeToolPath(tool, version, arch) {\n const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');\n const markerPath = `${folderPath}.complete`;\n fs.writeFileSync(markerPath, '');\n core.debug('finished caching tool');\n}\n/**\n * Check if version string is explicit\n *\n * @param versionSpec version string to check\n */\nfunction isExplicitVersion(versionSpec) {\n const c = semver.clean(versionSpec) || '';\n core.debug(`isExplicit: ${c}`);\n const valid = semver.valid(c) != null;\n core.debug(`explicit? ${valid}`);\n return valid;\n}\nexports.isExplicitVersion = isExplicitVersion;\n/**\n * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec`\n *\n * @param versions array of versions to evaluate\n * @param versionSpec semantic version spec to satisfy\n */\nfunction evaluateVersions(versions, versionSpec) {\n let version = '';\n core.debug(`evaluating ${versions.length} versions`);\n versions = versions.sort((a, b) => {\n if (semver.gt(a, b)) {\n return 1;\n }\n return -1;\n });\n for (let i = versions.length - 1; i >= 0; i--) {\n const potential = versions[i];\n const satisfied = semver.satisfies(potential, versionSpec);\n if (satisfied) {\n version = potential;\n break;\n }\n }\n if (version) {\n core.debug(`matched: ${version}`);\n }\n else {\n core.debug('match not found');\n }\n return version;\n}\nexports.evaluateVersions = evaluateVersions;\n/**\n * Gets RUNNER_TOOL_CACHE\n */\nfunction _getCacheDirectory() {\n const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || '';\n assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined');\n return cacheDirectory;\n}\n/**\n * Gets RUNNER_TEMP\n */\nfunction _getTempDirectory() {\n const tempDirectory = process.env['RUNNER_TEMP'] || '';\n assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined');\n return tempDirectory;\n}\n/**\n * Gets a global variable\n */\nfunction _getGlobal(key, defaultValue) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const value = global[key];\n /* eslint-enable @typescript-eslint/no-explicit-any */\n return value !== undefined ? value : defaultValue;\n}\n/**\n * Returns an array of unique values.\n * @param values Values to make unique.\n */\nfunction _unique(values) {\n return Array.from(new Set(values));\n}\n//# sourceMappingURL=tool-cache.js.map","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n args.unshift('SEMVER')\n console.log.apply(console, args)\n }\n} else {\n debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n t[n] = R++\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n src[t.PRERELEASE] + '?' +\n src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n src[t.PRERELEASELOOSE] + '?' +\n src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n '(?:' + src[t.PRERELEASE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n src[t.BUILD] + '?' +\n ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAIN] + ')' +\n '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i])\n if (!re[i]) {\n re[i] = new RegExp(src[i])\n }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n if (version.length > MAX_LENGTH) {\n return null\n }\n\n var r = options.loose ? re[t.LOOSE] : re[t.FULL]\n if (!r.test(version)) {\n return null\n }\n\n try {\n return new SemVer(version, options)\n } catch (er) {\n return null\n }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n var v = parse(version, options)\n return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n }\n\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options)\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n\n var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError('Invalid Version: ' + version)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n}\n\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.')\n }\n return this.version\n}\n\nSemVer.prototype.toString = function () {\n return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n var i = 0\n do {\n var a = this.prerelease[i]\n var b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n var i = 0\n do {\n var a = this.build[i]\n var b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier)\n this.inc('pre', identifier)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier)\n }\n this.inc('pre', identifier)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0]\n } else {\n var i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0]\n }\n } else {\n this.prerelease = [identifier, 0]\n }\n }\n break\n\n default:\n throw new Error('invalid increment argument: ' + release)\n }\n this.format()\n this.raw = this.version\n return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n if (typeof (loose) === 'string') {\n identifier = loose\n loose = undefined\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version\n } catch (er) {\n return null\n }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n if (eq(version1, version2)) {\n return null\n } else {\n var v1 = parse(version1)\n var v2 = parse(version2)\n var prefix = ''\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre'\n var defaultResult = 'prerelease'\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key\n }\n }\n }\n return defaultResult // may be undefined\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n var anum = numeric.test(a)\n var bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n var versionA = new SemVer(a, loose)\n var versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(a, b, loose)\n })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n return list.sort(function (a, b) {\n return exports.compareBuild(b, a, loose)\n })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a === b\n\n case '!==':\n if (typeof a === 'object')\n a = a.version\n if (typeof b === 'object')\n b = b.version\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError('Invalid operator: ' + op)\n }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options)\n }\n\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var m = comp.match(r)\n\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n}\n\nComparator.prototype.toString = function () {\n return this.value\n}\n\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n var rangeTmp\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n rangeTmp = new Range(comp.value, options)\n return satisfies(this.value, rangeTmp, options)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n rangeTmp = new Range(this.value, options)\n return satisfies(comp.semver, rangeTmp, options)\n }\n\n var sameDirectionIncreasing =\n (this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '>=' || comp.operator === '>')\n var sameDirectionDecreasing =\n (this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '<=' || comp.operator === '<')\n var sameSemVer = this.semver.version === comp.semver.version\n var differentDirectionsInclusive =\n (this.operator === '>=' || this.operator === '<=') &&\n (comp.operator === '>=' || comp.operator === '<=')\n var oppositeDirectionsLessThan =\n cmp(this.semver, '<', comp.semver, options) &&\n ((this.operator === '>=' || this.operator === '>') &&\n (comp.operator === '<=' || comp.operator === '<'))\n var oppositeDirectionsGreaterThan =\n cmp(this.semver, '>', comp.semver, options) &&\n ((this.operator === '<=' || this.operator === '<') &&\n (comp.operator === '>=' || comp.operator === '>'))\n\n return sameDirectionIncreasing || sameDirectionDecreasing ||\n (sameSemVer && differentDirectionsInclusive) ||\n oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n }\n }\n\n if (range instanceof Range) {\n if (range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n return new Range(range.value, options)\n }\n\n if (!(this instanceof Range)) {\n return new Range(range, options)\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First, split based on boolean or ||\n this.raw = range\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function (range) {\n return this.parseRange(range.trim())\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length\n })\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range)\n }\n\n this.format()\n}\n\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim()\n }).join('||').trim()\n return this.range\n}\n\nRange.prototype.toString = function () {\n return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose\n range = range.trim()\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace)\n debug('hyphen replace', range)\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range, re[t.COMPARATORTRIM])\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ')\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options)\n }, this).join(' ').split(/\\s+/)\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe)\n })\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options)\n }, this)\n\n return set\n}\n\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some(function (thisComparators) {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some(function (rangeComparators) {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every(function (thisComparator) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n var result = true\n var remainingComparators = comparators.slice()\n var testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every(function (otherComparator) {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value\n }).join(' ').trim().split(' ')\n })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nfunction isX (id) {\n return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options)\n }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options)\n }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n debug('caret', comp, options)\n var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr)\n var ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n ' <' + (+M + 1) + '.0.0'\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1)\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0'\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0'\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nfunction replaceXRanges (comp, options) {\n debug('replaceXRanges', comp, options)\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options)\n }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n comp = comp.trim()\n var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n var xM = isX(M)\n var xm = xM || isX(m)\n var xp = xm || isX(p)\n var anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n ret = gtlt + M + '.' + m + '.' + p + pr\n } else if (xm) {\n ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0' + pr +\n ' <' + M + '.' + (+m + 1) + '.0' + pr\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0'\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0'\n } else {\n from = '>=' + from\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0'\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0'\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n } else {\n to = '<=' + to\n }\n\n return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n}\n\nfunction testSet (set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n var max = null\n var maxSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n var min = null\n var minSV = null\n try {\n var rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n range = new Range(range, loose)\n\n var minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator)\n }\n })\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n var gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i]\n\n var high = null\n var low = null\n\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n var parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n var match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n var next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(match[2] +\n '.' + (match[3] || '0') +\n '.' + (match[4] || '0'), options)\n}\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addAdminServicesToServer = exports.registerAdminService = void 0;\nconst registeredAdminServices = [];\nfunction registerAdminService(getServiceDefinition, getHandlers) {\n registeredAdminServices.push({ getServiceDefinition, getHandlers });\n}\nexports.registerAdminService = registerAdminService;\nfunction addAdminServicesToServer(server) {\n for (const { getServiceDefinition, getHandlers } of registeredAdminServices) {\n server.addService(getServiceDefinition(), getHandlers());\n }\n}\nexports.addAdminServicesToServer = addAdminServicesToServer;\n//# sourceMappingURL=admin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BackoffTimeout = void 0;\nconst INITIAL_BACKOFF_MS = 1000;\nconst BACKOFF_MULTIPLIER = 1.6;\nconst MAX_BACKOFF_MS = 120000;\nconst BACKOFF_JITTER = 0.2;\n/**\n * Get a number uniformly at random in the range [min, max)\n * @param min\n * @param max\n */\nfunction uniformRandom(min, max) {\n return Math.random() * (max - min) + min;\n}\nclass BackoffTimeout {\n constructor(callback, options) {\n this.callback = callback;\n /**\n * The delay time at the start, and after each reset.\n */\n this.initialDelay = INITIAL_BACKOFF_MS;\n /**\n * The exponential backoff multiplier.\n */\n this.multiplier = BACKOFF_MULTIPLIER;\n /**\n * The maximum delay time\n */\n this.maxDelay = MAX_BACKOFF_MS;\n /**\n * The maximum fraction by which the delay time can randomly vary after\n * applying the multiplier.\n */\n this.jitter = BACKOFF_JITTER;\n /**\n * Indicates whether the timer is currently running.\n */\n this.running = false;\n /**\n * Indicates whether the timer should keep the Node process running if no\n * other async operation is doing so.\n */\n this.hasRef = true;\n /**\n * The time that the currently running timer was started. Only valid if\n * running is true.\n */\n this.startTime = new Date();\n /**\n * The approximate time that the currently running timer will end. Only valid\n * if running is true.\n */\n this.endTime = new Date();\n if (options) {\n if (options.initialDelay) {\n this.initialDelay = options.initialDelay;\n }\n if (options.multiplier) {\n this.multiplier = options.multiplier;\n }\n if (options.jitter) {\n this.jitter = options.jitter;\n }\n if (options.maxDelay) {\n this.maxDelay = options.maxDelay;\n }\n }\n this.nextDelay = this.initialDelay;\n this.timerId = setTimeout(() => { }, 0);\n clearTimeout(this.timerId);\n }\n runTimer(delay) {\n var _a, _b;\n this.endTime = this.startTime;\n this.endTime.setMilliseconds(this.endTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => {\n this.callback();\n this.running = false;\n }, delay);\n if (!this.hasRef) {\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Call the callback after the current amount of delay time\n */\n runOnce() {\n this.running = true;\n this.startTime = new Date();\n this.runTimer(this.nextDelay);\n const nextBackoff = Math.min(this.nextDelay * this.multiplier, this.maxDelay);\n const jitterMagnitude = nextBackoff * this.jitter;\n this.nextDelay =\n nextBackoff + uniformRandom(-jitterMagnitude, jitterMagnitude);\n }\n /**\n * Stop the timer. The callback will not be called until `runOnce` is called\n * again.\n */\n stop() {\n clearTimeout(this.timerId);\n this.running = false;\n }\n /**\n * Reset the delay time to its initial value. If the timer is still running,\n * retroactively apply that reset to the current timer.\n */\n reset() {\n this.nextDelay = this.initialDelay;\n if (this.running) {\n const now = new Date();\n const newEndTime = this.startTime;\n newEndTime.setMilliseconds(newEndTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n if (now < newEndTime) {\n this.runTimer(newEndTime.getTime() - now.getTime());\n }\n else {\n this.running = false;\n }\n }\n }\n /**\n * Check whether the timer is currently running.\n */\n isRunning() {\n return this.running;\n }\n /**\n * Set that while the timer is running, it should keep the Node process\n * running.\n */\n ref() {\n var _a, _b;\n this.hasRef = true;\n (_b = (_a = this.timerId).ref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Set that while the timer is running, it should not keep the Node process\n * running.\n */\n unref() {\n var _a, _b;\n this.hasRef = false;\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Get the approximate timestamp of when the timer will fire. Only valid if\n * this.isRunning() is true.\n */\n getEndTime() {\n return this.endTime;\n }\n}\nexports.BackoffTimeout = BackoffTimeout;\n//# sourceMappingURL=backoff-timeout.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallCredentials = void 0;\nconst metadata_1 = require(\"./metadata\");\nfunction isCurrentOauth2Client(client) {\n return ('getRequestHeaders' in client &&\n typeof client.getRequestHeaders === 'function');\n}\n/**\n * A class that represents a generic method of adding authentication-related\n * metadata on a per-request basis.\n */\nclass CallCredentials {\n /**\n * Creates a new CallCredentials object from a given function that generates\n * Metadata objects.\n * @param metadataGenerator A function that accepts a set of options, and\n * generates a Metadata object based on these options, which is passed back\n * to the caller via a supplied (err, metadata) callback.\n */\n static createFromMetadataGenerator(metadataGenerator) {\n return new SingleCallCredentials(metadataGenerator);\n }\n /**\n * Create a gRPC credential from a Google credential object.\n * @param googleCredentials The authentication client to use.\n * @return The resulting CallCredentials object.\n */\n static createFromGoogleCredential(googleCredentials) {\n return CallCredentials.createFromMetadataGenerator((options, callback) => {\n let getHeaders;\n if (isCurrentOauth2Client(googleCredentials)) {\n getHeaders = googleCredentials.getRequestHeaders(options.service_url);\n }\n else {\n getHeaders = new Promise((resolve, reject) => {\n googleCredentials.getRequestMetadata(options.service_url, (err, headers) => {\n if (err) {\n reject(err);\n return;\n }\n if (!headers) {\n reject(new Error('Headers not set by metadata plugin'));\n return;\n }\n resolve(headers);\n });\n });\n }\n getHeaders.then(headers => {\n const metadata = new metadata_1.Metadata();\n for (const key of Object.keys(headers)) {\n metadata.add(key, headers[key]);\n }\n callback(null, metadata);\n }, err => {\n callback(err);\n });\n });\n }\n static createEmpty() {\n return new EmptyCallCredentials();\n }\n}\nexports.CallCredentials = CallCredentials;\nclass ComposedCallCredentials extends CallCredentials {\n constructor(creds) {\n super();\n this.creds = creds;\n }\n async generateMetadata(options) {\n const base = new metadata_1.Metadata();\n const generated = await Promise.all(this.creds.map(cred => cred.generateMetadata(options)));\n for (const gen of generated) {\n base.merge(gen);\n }\n return base;\n }\n compose(other) {\n return new ComposedCallCredentials(this.creds.concat([other]));\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedCallCredentials) {\n return this.creds.every((value, index) => value._equals(other.creds[index]));\n }\n else {\n return false;\n }\n }\n}\nclass SingleCallCredentials extends CallCredentials {\n constructor(metadataGenerator) {\n super();\n this.metadataGenerator = metadataGenerator;\n }\n generateMetadata(options) {\n return new Promise((resolve, reject) => {\n this.metadataGenerator(options, (err, metadata) => {\n if (metadata !== undefined) {\n resolve(metadata);\n }\n else {\n reject(err);\n }\n });\n });\n }\n compose(other) {\n return new ComposedCallCredentials([this, other]);\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SingleCallCredentials) {\n return this.metadataGenerator === other.metadataGenerator;\n }\n else {\n return false;\n }\n }\n}\nclass EmptyCallCredentials extends CallCredentials {\n generateMetadata(options) {\n return Promise.resolve(new metadata_1.Metadata());\n }\n compose(other) {\n return other;\n }\n _equals(other) {\n return other instanceof EmptyCallCredentials;\n }\n}\n//# sourceMappingURL=call-credentials.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InterceptingListenerImpl = exports.isInterceptingListener = void 0;\nfunction isInterceptingListener(listener) {\n return (listener.onReceiveMetadata !== undefined &&\n listener.onReceiveMetadata.length === 1);\n}\nexports.isInterceptingListener = isInterceptingListener;\nclass InterceptingListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.processingMessage = false;\n this.pendingStatus = null;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextListener.onReceiveStatus(this.pendingStatus);\n }\n }\n onReceiveMetadata(metadata) {\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, metadata => {\n this.processingMetadata = false;\n this.nextListener.onReceiveMetadata(metadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n /* If this listener processes messages asynchronously, the last message may\n * be reordered with respect to the status */\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingStatus();\n }\n });\n }\n onReceiveStatus(status) {\n this.listener.onReceiveStatus(status, processedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = processedStatus;\n }\n else {\n this.nextListener.onReceiveStatus(processedStatus);\n }\n });\n }\n}\nexports.InterceptingListenerImpl = InterceptingListenerImpl;\n//# sourceMappingURL=call-interface.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNextCallNumber = void 0;\nlet nextCallNumber = 0;\nfunction getNextCallNumber() {\n return nextCallNumber++;\n}\nexports.getNextCallNumber = getNextCallNumber;\n//# sourceMappingURL=call-number.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientDuplexStreamImpl = exports.ClientWritableStreamImpl = exports.ClientReadableStreamImpl = exports.ClientUnaryCallImpl = exports.callErrorFromStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\n/**\n * Construct a ServiceError from a StatusObject. This function exists primarily\n * as an attempt to make the error stack trace clearly communicate that the\n * error is not necessarily a problem in gRPC itself.\n * @param status\n */\nfunction callErrorFromStatus(status, callerStack) {\n const message = `${status.code} ${constants_1.Status[status.code]}: ${status.details}`;\n const error = new Error(message);\n const stack = `${error.stack}\\nfor call at\\n${callerStack}`;\n return Object.assign(new Error(message), status, { stack });\n}\nexports.callErrorFromStatus = callErrorFromStatus;\nclass ClientUnaryCallImpl extends events_1.EventEmitter {\n constructor() {\n super();\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n}\nexports.ClientUnaryCallImpl = ClientUnaryCallImpl;\nclass ClientReadableStreamImpl extends stream_1.Readable {\n constructor(deserialize) {\n super({ objectMode: true });\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n}\nexports.ClientReadableStreamImpl = ClientReadableStreamImpl;\nclass ClientWritableStreamImpl extends stream_1.Writable {\n constructor(serialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientWritableStreamImpl = ClientWritableStreamImpl;\nclass ClientDuplexStreamImpl extends stream_1.Duplex {\n constructor(serialize, deserialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientDuplexStreamImpl = ClientDuplexStreamImpl;\n//# sourceMappingURL=call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelCredentials = void 0;\nconst tls_1 = require(\"tls\");\nconst call_credentials_1 = require(\"./call-credentials\");\nconst tls_helpers_1 = require(\"./tls-helpers\");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction verifyIsBufferOrNull(obj, friendlyName) {\n if (obj && !(obj instanceof Buffer)) {\n throw new TypeError(`${friendlyName}, if provided, must be a Buffer.`);\n }\n}\n/**\n * A class that contains credentials for communicating over a channel, as well\n * as a set of per-call credentials, which are applied to every method call made\n * over a channel initialized with an instance of this class.\n */\nclass ChannelCredentials {\n constructor(callCredentials) {\n this.callCredentials = callCredentials || call_credentials_1.CallCredentials.createEmpty();\n }\n /**\n * Gets the set of per-call credentials associated with this instance.\n */\n _getCallCredentials() {\n return this.callCredentials;\n }\n /**\n * Return a new ChannelCredentials instance with a given set of credentials.\n * The resulting instance can be used to construct a Channel that communicates\n * over TLS.\n * @param rootCerts The root certificate data.\n * @param privateKey The client certificate private key, if available.\n * @param certChain The client certificate key chain, if available.\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createSsl(rootCerts, privateKey, certChain, verifyOptions) {\n var _a;\n verifyIsBufferOrNull(rootCerts, 'Root certificate');\n verifyIsBufferOrNull(privateKey, 'Private key');\n verifyIsBufferOrNull(certChain, 'Certificate chain');\n if (privateKey && !certChain) {\n throw new Error('Private key must be given with accompanying certificate chain');\n }\n if (!privateKey && certChain) {\n throw new Error('Certificate chain must be given with accompanying private key');\n }\n const secureContext = (0, tls_1.createSecureContext)({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n key: privateKey !== null && privateKey !== void 0 ? privateKey : undefined,\n cert: certChain !== null && certChain !== void 0 ? certChain : undefined,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with credentials created using\n * the provided secureContext. The resulting instances can be used to\n * construct a Channel that communicates over TLS. gRPC will not override\n * anything in the provided secureContext, so the environment variables\n * GRPC_SSL_CIPHER_SUITES and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH will\n * not be applied.\n * @param secureContext The return value of tls.createSecureContext()\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createFromSecureContext(secureContext, verifyOptions) {\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with no credentials.\n */\n static createInsecure() {\n return new InsecureChannelCredentialsImpl();\n }\n}\nexports.ChannelCredentials = ChannelCredentials;\nclass InsecureChannelCredentialsImpl extends ChannelCredentials {\n constructor() {\n super();\n }\n compose(callCredentials) {\n throw new Error('Cannot compose insecure credentials');\n }\n _getConnectionOptions() {\n return null;\n }\n _isSecure() {\n return false;\n }\n _equals(other) {\n return other instanceof InsecureChannelCredentialsImpl;\n }\n}\nclass SecureChannelCredentialsImpl extends ChannelCredentials {\n constructor(secureContext, verifyOptions) {\n super();\n this.secureContext = secureContext;\n this.verifyOptions = verifyOptions;\n this.connectionOptions = {\n secureContext,\n };\n // Node asserts that this option is a function, so we cannot pass undefined\n if (verifyOptions === null || verifyOptions === void 0 ? void 0 : verifyOptions.checkServerIdentity) {\n this.connectionOptions.checkServerIdentity =\n verifyOptions.checkServerIdentity;\n }\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this, combinedCallCredentials);\n }\n _getConnectionOptions() {\n // Copy to prevent callers from mutating this.connectionOptions\n return Object.assign({}, this.connectionOptions);\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SecureChannelCredentialsImpl) {\n return (this.secureContext === other.secureContext &&\n this.verifyOptions.checkServerIdentity ===\n other.verifyOptions.checkServerIdentity);\n }\n else {\n return false;\n }\n }\n}\nclass ComposedChannelCredentialsImpl extends ChannelCredentials {\n constructor(channelCredentials, callCreds) {\n super(callCreds);\n this.channelCredentials = channelCredentials;\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this.channelCredentials, combinedCallCredentials);\n }\n _getConnectionOptions() {\n return this.channelCredentials._getConnectionOptions();\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedChannelCredentialsImpl) {\n return (this.channelCredentials._equals(other.channelCredentials) &&\n this.callCredentials._equals(other.callCredentials));\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=channel-credentials.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.channelOptionsEqual = exports.recognizedOptions = void 0;\n/**\n * This is for checking provided options at runtime. This is an object for\n * easier membership checking.\n */\nexports.recognizedOptions = {\n 'grpc.ssl_target_name_override': true,\n 'grpc.primary_user_agent': true,\n 'grpc.secondary_user_agent': true,\n 'grpc.default_authority': true,\n 'grpc.keepalive_time_ms': true,\n 'grpc.keepalive_timeout_ms': true,\n 'grpc.keepalive_permit_without_calls': true,\n 'grpc.service_config': true,\n 'grpc.max_concurrent_streams': true,\n 'grpc.initial_reconnect_backoff_ms': true,\n 'grpc.max_reconnect_backoff_ms': true,\n 'grpc.use_local_subchannel_pool': true,\n 'grpc.max_send_message_length': true,\n 'grpc.max_receive_message_length': true,\n 'grpc.enable_http_proxy': true,\n 'grpc.enable_channelz': true,\n 'grpc.dns_min_time_between_resolutions_ms': true,\n 'grpc.enable_retries': true,\n 'grpc.per_rpc_retry_buffer_size': true,\n 'grpc.retry_buffer_size': true,\n 'grpc.max_connection_age_ms': true,\n 'grpc.max_connection_age_grace_ms': true,\n 'grpc-node.max_session_memory': true,\n 'grpc.service_config_disable_resolution': true,\n 'grpc.client_idle_timeout_ms': true,\n 'grpc-node.tls_enable_trace': true,\n 'grpc.lb.ring_hash.ring_size_cap': true,\n};\nfunction channelOptionsEqual(options1, options2) {\n const keys1 = Object.keys(options1).sort();\n const keys2 = Object.keys(options2).sort();\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let i = 0; i < keys1.length; i += 1) {\n if (keys1[i] !== keys2[i]) {\n return false;\n }\n if (options1[keys1[i]] !== options2[keys2[i]]) {\n return false;\n }\n }\n return true;\n}\nexports.channelOptionsEqual = channelOptionsEqual;\n//# sourceMappingURL=channel-options.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelImplementation = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst internal_channel_1 = require(\"./internal-channel\");\nclass ChannelImplementation {\n constructor(target, credentials, options) {\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.internalChannel = new internal_channel_1.InternalChannel(target, credentials, options);\n }\n close() {\n this.internalChannel.close();\n }\n getTarget() {\n return this.internalChannel.getTarget();\n }\n getConnectivityState(tryToConnect) {\n return this.internalChannel.getConnectivityState(tryToConnect);\n }\n watchConnectivityState(currentState, deadline, callback) {\n this.internalChannel.watchConnectivityState(currentState, deadline, callback);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.internalChannel.getChannelzRef();\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n return this.internalChannel.createCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.ChannelImplementation = ChannelImplementation;\n//# sourceMappingURL=channel.js.map",null,"\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInterceptingCall = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.InterceptorConfigurationError = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst call_interface_1 = require(\"./call-interface\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\n/**\n * Error class associated with passing both interceptors and interceptor\n * providers to a client constructor or as call options.\n */\nclass InterceptorConfigurationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'InterceptorConfigurationError';\n Error.captureStackTrace(this, InterceptorConfigurationError);\n }\n}\nexports.InterceptorConfigurationError = InterceptorConfigurationError;\nclass ListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveStatus(onReceiveStatus) {\n this.status = onReceiveStatus;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveStatus: this.status,\n };\n }\n}\nexports.ListenerBuilder = ListenerBuilder;\nclass RequesterBuilder {\n constructor() {\n this.start = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withHalfClose(halfClose) {\n this.halfClose = halfClose;\n return this;\n }\n withCancel(cancel) {\n this.cancel = cancel;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMessage: this.message,\n halfClose: this.halfClose,\n cancel: this.cancel,\n };\n }\n}\nexports.RequesterBuilder = RequesterBuilder;\n/**\n * A Listener with a default pass-through implementation of each method. Used\n * for filling out Listeners with some methods omitted.\n */\nconst defaultListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveStatus: (status, next) => {\n next(status);\n },\n};\n/**\n * A Requester with a default pass-through implementation of each method. Used\n * for filling out Requesters with some methods omitted.\n */\nconst defaultRequester = {\n start: (metadata, listener, next) => {\n next(metadata, listener);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n halfClose: next => {\n next();\n },\n cancel: next => {\n next();\n },\n};\nclass InterceptingCall {\n constructor(nextCall, requester) {\n var _a, _b, _c, _d;\n this.nextCall = nextCall;\n /**\n * Indicates that metadata has been passed to the requester's start\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMetadata = false;\n /**\n * Message context for a pending message that is waiting for\n */\n this.pendingMessageContext = null;\n /**\n * Indicates that a message has been passed to the requester's sendMessage\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMessage = false;\n /**\n * Indicates that a status was received but could not be propagated because\n * a message was still being processed.\n */\n this.pendingHalfClose = false;\n if (requester) {\n this.requester = {\n start: (_a = requester.start) !== null && _a !== void 0 ? _a : defaultRequester.start,\n sendMessage: (_b = requester.sendMessage) !== null && _b !== void 0 ? _b : defaultRequester.sendMessage,\n halfClose: (_c = requester.halfClose) !== null && _c !== void 0 ? _c : defaultRequester.halfClose,\n cancel: (_d = requester.cancel) !== null && _d !== void 0 ? _d : defaultRequester.cancel,\n };\n }\n else {\n this.requester = defaultRequester;\n }\n }\n cancelWithStatus(status, details) {\n this.requester.cancel(() => {\n this.nextCall.cancelWithStatus(status, details);\n });\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n processPendingMessage() {\n if (this.pendingMessageContext) {\n this.nextCall.sendMessageWithContext(this.pendingMessageContext, this.pendingMessage);\n this.pendingMessageContext = null;\n this.pendingMessage = null;\n }\n }\n processPendingHalfClose() {\n if (this.pendingHalfClose) {\n this.nextCall.halfClose();\n }\n }\n start(metadata, interceptingListener) {\n var _a, _b, _c, _d, _e, _f;\n const fullInterceptingListener = {\n onReceiveMetadata: (_b = (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(interceptingListener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n onReceiveMessage: (_d = (_c = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _c === void 0 ? void 0 : _c.bind(interceptingListener)) !== null && _d !== void 0 ? _d : (message => { }),\n onReceiveStatus: (_f = (_e = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _e === void 0 ? void 0 : _e.bind(interceptingListener)) !== null && _f !== void 0 ? _f : (status => { }),\n };\n this.processingMetadata = true;\n this.requester.start(metadata, fullInterceptingListener, (md, listener) => {\n var _a, _b, _c;\n this.processingMetadata = false;\n let finalInterceptingListener;\n if ((0, call_interface_1.isInterceptingListener)(listener)) {\n finalInterceptingListener = listener;\n }\n else {\n const fullListener = {\n onReceiveMetadata: (_a = listener.onReceiveMetadata) !== null && _a !== void 0 ? _a : defaultListener.onReceiveMetadata,\n onReceiveMessage: (_b = listener.onReceiveMessage) !== null && _b !== void 0 ? _b : defaultListener.onReceiveMessage,\n onReceiveStatus: (_c = listener.onReceiveStatus) !== null && _c !== void 0 ? _c : defaultListener.onReceiveStatus,\n };\n finalInterceptingListener = new call_interface_1.InterceptingListenerImpl(fullListener, fullInterceptingListener);\n }\n this.nextCall.start(md, finalInterceptingListener);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n this.processingMessage = true;\n this.requester.sendMessage(message, finalMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessageContext = context;\n this.pendingMessage = message;\n }\n else {\n this.nextCall.sendMessageWithContext(context, finalMessage);\n this.processPendingHalfClose();\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n startRead() {\n this.nextCall.startRead();\n }\n halfClose() {\n this.requester.halfClose(() => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingHalfClose = true;\n }\n else {\n this.nextCall.halfClose();\n }\n });\n }\n}\nexports.InterceptingCall = InterceptingCall;\nfunction getCall(channel, path, options) {\n var _a, _b;\n const deadline = (_a = options.deadline) !== null && _a !== void 0 ? _a : Infinity;\n const host = options.host;\n const parent = (_b = options.parent) !== null && _b !== void 0 ? _b : null;\n const propagateFlags = options.propagate_flags;\n const credentials = options.credentials;\n const call = channel.createCall(path, deadline, host, parent, propagateFlags);\n if (credentials) {\n call.setCredentials(credentials);\n }\n return call;\n}\n/**\n * InterceptingCall implementation that directly owns the underlying Call\n * object and handles serialization and deseraizliation.\n */\nclass BaseInterceptingCall {\n constructor(call, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n methodDefinition) {\n this.call = call;\n this.methodDefinition = methodDefinition;\n }\n cancelWithStatus(status, details) {\n this.call.cancelWithStatus(status, details);\n }\n getPeer() {\n return this.call.getPeer();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n let serialized;\n try {\n serialized = this.methodDefinition.requestSerialize(message);\n }\n catch (e) {\n this.call.cancelWithStatus(constants_1.Status.INTERNAL, `Request message serialization failure: ${(0, error_1.getErrorMessage)(e)}`);\n return;\n }\n this.call.sendMessageWithContext(context, serialized);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n start(metadata, interceptingListener) {\n let readError = null;\n this.call.start(metadata, {\n onReceiveMetadata: metadata => {\n var _a;\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, metadata);\n },\n onReceiveMessage: message => {\n var _a;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let deserialized;\n try {\n deserialized = this.methodDefinition.responseDeserialize(message);\n }\n catch (e) {\n readError = {\n code: constants_1.Status.INTERNAL,\n details: `Response message parsing error: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: new metadata_1.Metadata(),\n };\n this.call.cancelWithStatus(readError.code, readError.details);\n return;\n }\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, deserialized);\n },\n onReceiveStatus: status => {\n var _a, _b;\n if (readError) {\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, readError);\n }\n else {\n (_b = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(interceptingListener, status);\n }\n },\n });\n }\n startRead() {\n this.call.startRead();\n }\n halfClose() {\n this.call.halfClose();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with unary\n * responses.\n */\nclass BaseUnaryInterceptingCall extends BaseInterceptingCall {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(call, methodDefinition) {\n super(call, methodDefinition);\n }\n start(metadata, listener) {\n var _a, _b;\n let receivedMessage = false;\n const wrapperListener = {\n onReceiveMetadata: (_b = (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(listener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage: (message) => {\n var _a;\n receivedMessage = true;\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, message);\n },\n onReceiveStatus: (status) => {\n var _a, _b;\n if (!receivedMessage) {\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, null);\n }\n (_b = listener === null || listener === void 0 ? void 0 : listener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(listener, status);\n },\n };\n super.start(metadata, wrapperListener);\n this.call.startRead();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with streaming\n * responses.\n */\nclass BaseStreamingInterceptingCall extends BaseInterceptingCall {\n}\nfunction getBottomInterceptingCall(channel, options, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition) {\n const call = getCall(channel, methodDefinition.path, options);\n if (methodDefinition.responseStream) {\n return new BaseStreamingInterceptingCall(call, methodDefinition);\n }\n else {\n return new BaseUnaryInterceptingCall(call, methodDefinition);\n }\n}\nfunction getInterceptingCall(interceptorArgs, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition, options, channel) {\n if (interceptorArgs.clientInterceptors.length > 0 &&\n interceptorArgs.clientInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n if (interceptorArgs.callInterceptors.length > 0 &&\n interceptorArgs.callInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as call ' +\n 'options. Only one of these is allowed.');\n }\n let interceptors = [];\n // Interceptors passed to the call override interceptors passed to the client constructor\n if (interceptorArgs.callInterceptors.length > 0 ||\n interceptorArgs.callInterceptorProviders.length > 0) {\n interceptors = []\n .concat(interceptorArgs.callInterceptors, interceptorArgs.callInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n else {\n interceptors = []\n .concat(interceptorArgs.clientInterceptors, interceptorArgs.clientInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n const interceptorOptions = Object.assign({}, options, {\n method_definition: methodDefinition,\n });\n /* For each interceptor in the list, the nextCall function passed to it is\n * based on the next interceptor in the list, using a nextCall function\n * constructed with the following interceptor in the list, and so on. The\n * initialValue, which is effectively at the end of the list, is a nextCall\n * function that invokes getBottomInterceptingCall, the result of which\n * handles (de)serialization and also gets the underlying call from the\n * channel. */\n const getCall = interceptors.reduceRight((nextCall, nextInterceptor) => {\n return currentOptions => nextInterceptor(currentOptions, nextCall);\n }, (finalOptions) => getBottomInterceptingCall(channel, finalOptions, methodDefinition));\n return getCall(interceptorOptions);\n}\nexports.getInterceptingCall = getInterceptingCall;\n//# sourceMappingURL=client-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nconst call_1 = require(\"./call\");\nconst channel_1 = require(\"./channel\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst client_interceptors_1 = require(\"./client-interceptors\");\nconst CHANNEL_SYMBOL = Symbol();\nconst INTERCEPTOR_SYMBOL = Symbol();\nconst INTERCEPTOR_PROVIDER_SYMBOL = Symbol();\nconst CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol();\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nfunction getErrorStackString(error) {\n var _a;\n return ((_a = error.stack) === null || _a === void 0 ? void 0 : _a.split('\\n').slice(1).join('\\n')) || 'no stack trace available';\n}\n/**\n * A generic gRPC client. Primarily useful as a base class for all generated\n * clients.\n */\nclass Client {\n constructor(address, credentials, options = {}) {\n var _a, _b;\n options = Object.assign({}, options);\n this[INTERCEPTOR_SYMBOL] = (_a = options.interceptors) !== null && _a !== void 0 ? _a : [];\n delete options.interceptors;\n this[INTERCEPTOR_PROVIDER_SYMBOL] = (_b = options.interceptor_providers) !== null && _b !== void 0 ? _b : [];\n delete options.interceptor_providers;\n if (this[INTERCEPTOR_SYMBOL].length > 0 &&\n this[INTERCEPTOR_PROVIDER_SYMBOL].length > 0) {\n throw new Error('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n this[CALL_INVOCATION_TRANSFORMER_SYMBOL] =\n options.callInvocationTransformer;\n delete options.callInvocationTransformer;\n if (options.channelOverride) {\n this[CHANNEL_SYMBOL] = options.channelOverride;\n }\n else if (options.channelFactoryOverride) {\n const channelFactoryOverride = options.channelFactoryOverride;\n delete options.channelFactoryOverride;\n this[CHANNEL_SYMBOL] = channelFactoryOverride(address, credentials, options);\n }\n else {\n this[CHANNEL_SYMBOL] = new channel_1.ChannelImplementation(address, credentials, options);\n }\n }\n close() {\n this[CHANNEL_SYMBOL].close();\n }\n getChannel() {\n return this[CHANNEL_SYMBOL];\n }\n waitForReady(deadline, callback) {\n const checkState = (err) => {\n if (err) {\n callback(new Error('Failed to connect before the deadline'));\n return;\n }\n let newState;\n try {\n newState = this[CHANNEL_SYMBOL].getConnectivityState(true);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n return;\n }\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n callback();\n }\n else {\n try {\n this[CHANNEL_SYMBOL].watchConnectivityState(newState, deadline, checkState);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n }\n }\n };\n setImmediate(checkState);\n }\n checkOptionalUnaryResponseArguments(arg1, arg2, arg3) {\n if (isFunction(arg1)) {\n return { metadata: new metadata_1.Metadata(), options: {}, callback: arg1 };\n }\n else if (isFunction(arg2)) {\n if (arg1 instanceof metadata_1.Metadata) {\n return { metadata: arg1, options: {}, callback: arg2 };\n }\n else {\n return { metadata: new metadata_1.Metadata(), options: arg1, callback: arg2 };\n }\n }\n else {\n if (!(arg1 instanceof metadata_1.Metadata &&\n arg2 instanceof Object &&\n isFunction(arg3))) {\n throw new Error('Incorrect arguments passed');\n }\n return { metadata: arg1, options: arg2, callback: arg3 };\n }\n }\n makeUnaryRequest(method, serialize, deserialize, argument, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientUnaryCallImpl(),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return emitter;\n }\n makeClientStreamRequest(method, serialize, deserialize, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientWritableStreamImpl(serialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n return emitter;\n }\n checkMetadataAndOptions(arg1, arg2) {\n let metadata;\n let options;\n if (arg1 instanceof metadata_1.Metadata) {\n metadata = arg1;\n if (arg2) {\n options = arg2;\n }\n else {\n options = {};\n }\n }\n else {\n if (arg1) {\n options = arg1;\n }\n else {\n options = {};\n }\n metadata = new metadata_1.Metadata();\n }\n return { metadata, options };\n }\n makeServerStreamRequest(method, serialize, deserialize, argument, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientReadableStreamImpl(deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return stream;\n }\n makeBidiStreamRequest(method, serialize, deserialize, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientDuplexStreamImpl(serialize, deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n return stream;\n }\n}\nexports.Client = Client;\n//# sourceMappingURL=client.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionAlgorithms = void 0;\nvar CompressionAlgorithms;\n(function (CompressionAlgorithms) {\n CompressionAlgorithms[CompressionAlgorithms[\"identity\"] = 0] = \"identity\";\n CompressionAlgorithms[CompressionAlgorithms[\"deflate\"] = 1] = \"deflate\";\n CompressionAlgorithms[CompressionAlgorithms[\"gzip\"] = 2] = \"gzip\";\n})(CompressionAlgorithms || (exports.CompressionAlgorithms = CompressionAlgorithms = {}));\n//# sourceMappingURL=compression-algorithms.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionFilterFactory = exports.CompressionFilter = void 0;\nconst zlib = require(\"zlib\");\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nconst constants_1 = require(\"./constants\");\nconst filter_1 = require(\"./filter\");\nconst logging = require(\"./logging\");\nconst isCompressionAlgorithmKey = (key) => {\n return (typeof key === 'number' && typeof compression_algorithms_1.CompressionAlgorithms[key] === 'string');\n};\nclass CompressionHandler {\n /**\n * @param message Raw uncompressed message bytes\n * @param compress Indicates whether the message should be compressed\n * @return Framed message, compressed if applicable\n */\n async writeMessage(message, compress) {\n let messageBuffer = message;\n if (compress) {\n messageBuffer = await this.compressMessage(messageBuffer);\n }\n const output = Buffer.allocUnsafe(messageBuffer.length + 5);\n output.writeUInt8(compress ? 1 : 0, 0);\n output.writeUInt32BE(messageBuffer.length, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n /**\n * @param data Framed message, possibly compressed\n * @return Uncompressed message\n */\n async readMessage(data) {\n const compressed = data.readUInt8(0) === 1;\n let messageBuffer = data.slice(5);\n if (compressed) {\n messageBuffer = await this.decompressMessage(messageBuffer);\n }\n return messageBuffer;\n }\n}\nclass IdentityHandler extends CompressionHandler {\n async compressMessage(message) {\n return message;\n }\n async writeMessage(message, compress) {\n const output = Buffer.allocUnsafe(message.length + 5);\n /* With \"identity\" compression, messages should always be marked as\n * uncompressed */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(message.length, 1);\n message.copy(output, 5);\n return output;\n }\n decompressMessage(message) {\n return Promise.reject(new Error('Received compressed message but \"grpc-encoding\" header was identity'));\n }\n}\nclass DeflateHandler extends CompressionHandler {\n constructor(maxRecvMessageLength) {\n super();\n this.maxRecvMessageLength = maxRecvMessageLength;\n }\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.deflate(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n let totalLength = 0;\n const messageParts = [];\n const decompresser = zlib.createInflate();\n decompresser.on('data', (chunk) => {\n messageParts.push(chunk);\n totalLength += chunk.byteLength;\n if (this.maxRecvMessageLength !== -1 && totalLength > this.maxRecvMessageLength) {\n decompresser.destroy();\n reject({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`\n });\n }\n });\n decompresser.on('end', () => {\n resolve(Buffer.concat(messageParts));\n });\n decompresser.write(message);\n decompresser.end();\n });\n }\n}\nclass GzipHandler extends CompressionHandler {\n constructor(maxRecvMessageLength) {\n super();\n this.maxRecvMessageLength = maxRecvMessageLength;\n }\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.gzip(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n let totalLength = 0;\n const messageParts = [];\n const decompresser = zlib.createGunzip();\n decompresser.on('data', (chunk) => {\n messageParts.push(chunk);\n totalLength += chunk.byteLength;\n if (this.maxRecvMessageLength !== -1 && totalLength > this.maxRecvMessageLength) {\n decompresser.destroy();\n reject({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`\n });\n }\n });\n decompresser.on('end', () => {\n resolve(Buffer.concat(messageParts));\n });\n decompresser.write(message);\n decompresser.end();\n });\n }\n}\nclass UnknownHandler extends CompressionHandler {\n constructor(compressionName) {\n super();\n this.compressionName = compressionName;\n }\n compressMessage(message) {\n return Promise.reject(new Error(`Received message compressed with unsupported compression method ${this.compressionName}`));\n }\n decompressMessage(message) {\n // This should be unreachable\n return Promise.reject(new Error(`Compression method not supported: ${this.compressionName}`));\n }\n}\nfunction getCompressionHandler(compressionName, maxReceiveMessageSize) {\n switch (compressionName) {\n case 'identity':\n return new IdentityHandler();\n case 'deflate':\n return new DeflateHandler(maxReceiveMessageSize);\n case 'gzip':\n return new GzipHandler(maxReceiveMessageSize);\n default:\n return new UnknownHandler(compressionName);\n }\n}\nclass CompressionFilter extends filter_1.BaseFilter {\n constructor(channelOptions, sharedFilterConfig) {\n var _a, _b;\n super();\n this.sharedFilterConfig = sharedFilterConfig;\n this.sendCompression = new IdentityHandler();\n this.receiveCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n const compressionAlgorithmKey = channelOptions['grpc.default_compression_algorithm'];\n this.maxReceiveMessageLength = (_a = channelOptions['grpc.max_receive_message_length']) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n if (compressionAlgorithmKey !== undefined) {\n if (isCompressionAlgorithmKey(compressionAlgorithmKey)) {\n const clientSelectedEncoding = compression_algorithms_1.CompressionAlgorithms[compressionAlgorithmKey];\n const serverSupportedEncodings = (_b = sharedFilterConfig.serverSupportedEncodingHeader) === null || _b === void 0 ? void 0 : _b.split(',');\n /**\n * There are two possible situations here:\n * 1) We don't have any info yet from the server about what compression it supports\n * In that case we should just use what the client tells us to use\n * 2) We've previously received a response from the server including a grpc-accept-encoding header\n * In that case we only want to use the encoding chosen by the client if the server supports it\n */\n if (!serverSupportedEncodings ||\n serverSupportedEncodings.includes(clientSelectedEncoding)) {\n this.currentCompressionAlgorithm = clientSelectedEncoding;\n this.sendCompression = getCompressionHandler(this.currentCompressionAlgorithm, -1);\n }\n }\n else {\n logging.log(constants_1.LogVerbosity.ERROR, `Invalid value provided for grpc.default_compression_algorithm option: ${compressionAlgorithmKey}`);\n }\n }\n }\n async sendMetadata(metadata) {\n const headers = await metadata;\n headers.set('grpc-accept-encoding', 'identity,deflate,gzip');\n headers.set('accept-encoding', 'identity');\n // No need to send the header if it's \"identity\" - behavior is identical; save the bandwidth\n if (this.currentCompressionAlgorithm === 'identity') {\n headers.remove('grpc-encoding');\n }\n else {\n headers.set('grpc-encoding', this.currentCompressionAlgorithm);\n }\n return headers;\n }\n receiveMetadata(metadata) {\n const receiveEncoding = metadata.get('grpc-encoding');\n if (receiveEncoding.length > 0) {\n const encoding = receiveEncoding[0];\n if (typeof encoding === 'string') {\n this.receiveCompression = getCompressionHandler(encoding, this.maxReceiveMessageLength);\n }\n }\n metadata.remove('grpc-encoding');\n /* Check to see if the compression we're using to send messages is supported by the server\n * If not, reset the sendCompression filter and have it use the default IdentityHandler */\n const serverSupportedEncodingsHeader = metadata.get('grpc-accept-encoding')[0];\n if (serverSupportedEncodingsHeader) {\n this.sharedFilterConfig.serverSupportedEncodingHeader =\n serverSupportedEncodingsHeader;\n const serverSupportedEncodings = serverSupportedEncodingsHeader.split(',');\n if (!serverSupportedEncodings.includes(this.currentCompressionAlgorithm)) {\n this.sendCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n }\n }\n metadata.remove('grpc-accept-encoding');\n return metadata;\n }\n async sendMessage(message) {\n var _a;\n /* This filter is special. The input message is the bare message bytes,\n * and the output is a framed and possibly compressed message. For this\n * reason, this filter should be at the bottom of the filter stack */\n const resolvedMessage = await message;\n let compress;\n if (this.sendCompression instanceof IdentityHandler) {\n compress = false;\n }\n else {\n compress = (((_a = resolvedMessage.flags) !== null && _a !== void 0 ? _a : 0) & 2 /* WriteFlags.NoCompress */) === 0;\n }\n return {\n message: await this.sendCompression.writeMessage(resolvedMessage.message, compress),\n flags: resolvedMessage.flags,\n };\n }\n async receiveMessage(message) {\n /* This filter is also special. The input message is framed and possibly\n * compressed, and the output message is deframed and uncompressed. So\n * this is another reason that this filter should be at the bottom of the\n * filter stack. */\n return this.receiveCompression.readMessage(await message);\n }\n}\nexports.CompressionFilter = CompressionFilter;\nclass CompressionFilterFactory {\n constructor(channel, options) {\n this.options = options;\n this.sharedFilterConfig = {};\n }\n createFilter() {\n return new CompressionFilter(this.options, this.sharedFilterConfig);\n }\n}\nexports.CompressionFilterFactory = CompressionFilterFactory;\n//# sourceMappingURL=compression-filter.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectivityState = void 0;\nvar ConnectivityState;\n(function (ConnectivityState) {\n ConnectivityState[ConnectivityState[\"IDLE\"] = 0] = \"IDLE\";\n ConnectivityState[ConnectivityState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectivityState[ConnectivityState[\"READY\"] = 2] = \"READY\";\n ConnectivityState[ConnectivityState[\"TRANSIENT_FAILURE\"] = 3] = \"TRANSIENT_FAILURE\";\n ConnectivityState[ConnectivityState[\"SHUTDOWN\"] = 4] = \"SHUTDOWN\";\n})(ConnectivityState || (exports.ConnectivityState = ConnectivityState = {}));\n//# sourceMappingURL=connectivity-state.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = exports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = exports.Propagate = exports.LogVerbosity = exports.Status = void 0;\nvar Status;\n(function (Status) {\n Status[Status[\"OK\"] = 0] = \"OK\";\n Status[Status[\"CANCELLED\"] = 1] = \"CANCELLED\";\n Status[Status[\"UNKNOWN\"] = 2] = \"UNKNOWN\";\n Status[Status[\"INVALID_ARGUMENT\"] = 3] = \"INVALID_ARGUMENT\";\n Status[Status[\"DEADLINE_EXCEEDED\"] = 4] = \"DEADLINE_EXCEEDED\";\n Status[Status[\"NOT_FOUND\"] = 5] = \"NOT_FOUND\";\n Status[Status[\"ALREADY_EXISTS\"] = 6] = \"ALREADY_EXISTS\";\n Status[Status[\"PERMISSION_DENIED\"] = 7] = \"PERMISSION_DENIED\";\n Status[Status[\"RESOURCE_EXHAUSTED\"] = 8] = \"RESOURCE_EXHAUSTED\";\n Status[Status[\"FAILED_PRECONDITION\"] = 9] = \"FAILED_PRECONDITION\";\n Status[Status[\"ABORTED\"] = 10] = \"ABORTED\";\n Status[Status[\"OUT_OF_RANGE\"] = 11] = \"OUT_OF_RANGE\";\n Status[Status[\"UNIMPLEMENTED\"] = 12] = \"UNIMPLEMENTED\";\n Status[Status[\"INTERNAL\"] = 13] = \"INTERNAL\";\n Status[Status[\"UNAVAILABLE\"] = 14] = \"UNAVAILABLE\";\n Status[Status[\"DATA_LOSS\"] = 15] = \"DATA_LOSS\";\n Status[Status[\"UNAUTHENTICATED\"] = 16] = \"UNAUTHENTICATED\";\n})(Status || (exports.Status = Status = {}));\nvar LogVerbosity;\n(function (LogVerbosity) {\n LogVerbosity[LogVerbosity[\"DEBUG\"] = 0] = \"DEBUG\";\n LogVerbosity[LogVerbosity[\"INFO\"] = 1] = \"INFO\";\n LogVerbosity[LogVerbosity[\"ERROR\"] = 2] = \"ERROR\";\n LogVerbosity[LogVerbosity[\"NONE\"] = 3] = \"NONE\";\n})(LogVerbosity || (exports.LogVerbosity = LogVerbosity = {}));\n/**\n * NOTE: This enum is not currently used in any implemented API in this\n * library. It is included only for type parity with the other implementation.\n */\nvar Propagate;\n(function (Propagate) {\n Propagate[Propagate[\"DEADLINE\"] = 1] = \"DEADLINE\";\n Propagate[Propagate[\"CENSUS_STATS_CONTEXT\"] = 2] = \"CENSUS_STATS_CONTEXT\";\n Propagate[Propagate[\"CENSUS_TRACING_CONTEXT\"] = 4] = \"CENSUS_TRACING_CONTEXT\";\n Propagate[Propagate[\"CANCELLATION\"] = 8] = \"CANCELLATION\";\n // https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/propagation_bits.h#L43\n Propagate[Propagate[\"DEFAULTS\"] = 65535] = \"DEFAULTS\";\n})(Propagate || (exports.Propagate = Propagate = {}));\n// -1 means unlimited\nexports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = -1;\n// 4 MB default\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = 4 * 1024 * 1024;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.restrictControlPlaneStatusCode = void 0;\nconst constants_1 = require(\"./constants\");\nconst INAPPROPRIATE_CONTROL_PLANE_CODES = [\n constants_1.Status.OK,\n constants_1.Status.INVALID_ARGUMENT,\n constants_1.Status.NOT_FOUND,\n constants_1.Status.ALREADY_EXISTS,\n constants_1.Status.FAILED_PRECONDITION,\n constants_1.Status.ABORTED,\n constants_1.Status.OUT_OF_RANGE,\n constants_1.Status.DATA_LOSS,\n];\nfunction restrictControlPlaneStatusCode(code, details) {\n if (INAPPROPRIATE_CONTROL_PLANE_CODES.includes(code)) {\n return {\n code: constants_1.Status.INTERNAL,\n details: `Invalid status from control plane: ${code} ${constants_1.Status[code]} ${details}`,\n };\n }\n else {\n return { code, details };\n }\n}\nexports.restrictControlPlaneStatusCode = restrictControlPlaneStatusCode;\n//# sourceMappingURL=control-plane-status.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatDateDifference = exports.deadlineToString = exports.getRelativeTimeout = exports.getDeadlineTimeoutString = exports.minDeadline = void 0;\nfunction minDeadline(...deadlineList) {\n let minValue = Infinity;\n for (const deadline of deadlineList) {\n const deadlineMsecs = deadline instanceof Date ? deadline.getTime() : deadline;\n if (deadlineMsecs < minValue) {\n minValue = deadlineMsecs;\n }\n }\n return minValue;\n}\nexports.minDeadline = minDeadline;\nconst units = [\n ['m', 1],\n ['S', 1000],\n ['M', 60 * 1000],\n ['H', 60 * 60 * 1000],\n];\nfunction getDeadlineTimeoutString(deadline) {\n const now = new Date().getTime();\n if (deadline instanceof Date) {\n deadline = deadline.getTime();\n }\n const timeoutMs = Math.max(deadline - now, 0);\n for (const [unit, factor] of units) {\n const amount = timeoutMs / factor;\n if (amount < 1e8) {\n return String(Math.ceil(amount)) + unit;\n }\n }\n throw new Error('Deadline is too far in the future');\n}\nexports.getDeadlineTimeoutString = getDeadlineTimeoutString;\n/**\n * See https://nodejs.org/api/timers.html#settimeoutcallback-delay-args\n * In particular, \"When delay is larger than 2147483647 or less than 1, the\n * delay will be set to 1. Non-integer delays are truncated to an integer.\"\n * This number of milliseconds is almost 25 days.\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\n/**\n * Get the timeout value that should be passed to setTimeout now for the timer\n * to end at the deadline. For any deadline before now, the timer should end\n * immediately, represented by a value of 0. For any deadline more than\n * MAX_TIMEOUT_TIME milliseconds in the future, a timer cannot be set that will\n * end at that time, so it is treated as infinitely far in the future.\n * @param deadline\n * @returns\n */\nfunction getRelativeTimeout(deadline) {\n const deadlineMs = deadline instanceof Date ? deadline.getTime() : deadline;\n const now = new Date().getTime();\n const timeout = deadlineMs - now;\n if (timeout < 0) {\n return 0;\n }\n else if (timeout > MAX_TIMEOUT_TIME) {\n return Infinity;\n }\n else {\n return timeout;\n }\n}\nexports.getRelativeTimeout = getRelativeTimeout;\nfunction deadlineToString(deadline) {\n if (deadline instanceof Date) {\n return deadline.toISOString();\n }\n else {\n const dateDeadline = new Date(deadline);\n if (Number.isNaN(dateDeadline.getTime())) {\n return '' + deadline;\n }\n else {\n return dateDeadline.toISOString();\n }\n }\n}\nexports.deadlineToString = deadlineToString;\n/**\n * Calculate the difference between two dates as a number of seconds and format\n * it as a string.\n * @param startDate\n * @param endDate\n * @returns\n */\nfunction formatDateDifference(startDate, endDate) {\n return ((endDate.getTime() - startDate.getTime()) / 1000).toFixed(3) + 's';\n}\nexports.formatDateDifference = formatDateDifference;\n//# sourceMappingURL=deadline.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDuration = exports.durationToMs = exports.msToDuration = void 0;\nfunction msToDuration(millis) {\n return {\n seconds: (millis / 1000) | 0,\n nanos: ((millis % 1000) * 1000000) | 0,\n };\n}\nexports.msToDuration = msToDuration;\nfunction durationToMs(duration) {\n return (duration.seconds * 1000 + duration.nanos / 1000000) | 0;\n}\nexports.durationToMs = durationToMs;\nfunction isDuration(value) {\n return typeof value.seconds === 'number' && typeof value.nanos === 'number';\n}\nexports.isDuration = isDuration;\n//# sourceMappingURL=duration.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorCode = exports.getErrorMessage = void 0;\nfunction getErrorMessage(error) {\n if (error instanceof Error) {\n return error.message;\n }\n else {\n return String(error);\n }\n}\nexports.getErrorMessage = getErrorMessage;\nfunction getErrorCode(error) {\n if (typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n typeof error.code === 'number') {\n return error.code;\n }\n else {\n return null;\n }\n}\nexports.getErrorCode = getErrorCode;\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = exports.registerAdminService = exports.FilterStackFactory = exports.BaseFilter = exports.PickResultType = exports.QueuePicker = exports.UnavailablePicker = exports.ChildLoadBalancerHandler = exports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.subchannelAddressToString = exports.LeafLoadBalancer = exports.isLoadBalancerNameRegistered = exports.parseLoadBalancingConfig = exports.selectLbConfigFromList = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = exports.BackoffTimeout = exports.durationToMs = exports.uriToString = exports.createResolver = exports.registerResolver = exports.log = exports.trace = void 0;\nvar logging_1 = require(\"./logging\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return logging_1.trace; } });\nObject.defineProperty(exports, \"log\", { enumerable: true, get: function () { return logging_1.log; } });\nvar resolver_1 = require(\"./resolver\");\nObject.defineProperty(exports, \"registerResolver\", { enumerable: true, get: function () { return resolver_1.registerResolver; } });\nObject.defineProperty(exports, \"createResolver\", { enumerable: true, get: function () { return resolver_1.createResolver; } });\nvar uri_parser_1 = require(\"./uri-parser\");\nObject.defineProperty(exports, \"uriToString\", { enumerable: true, get: function () { return uri_parser_1.uriToString; } });\nvar duration_1 = require(\"./duration\");\nObject.defineProperty(exports, \"durationToMs\", { enumerable: true, get: function () { return duration_1.durationToMs; } });\nvar backoff_timeout_1 = require(\"./backoff-timeout\");\nObject.defineProperty(exports, \"BackoffTimeout\", { enumerable: true, get: function () { return backoff_timeout_1.BackoffTimeout; } });\nvar load_balancer_1 = require(\"./load-balancer\");\nObject.defineProperty(exports, \"createChildChannelControlHelper\", { enumerable: true, get: function () { return load_balancer_1.createChildChannelControlHelper; } });\nObject.defineProperty(exports, \"registerLoadBalancerType\", { enumerable: true, get: function () { return load_balancer_1.registerLoadBalancerType; } });\nObject.defineProperty(exports, \"selectLbConfigFromList\", { enumerable: true, get: function () { return load_balancer_1.selectLbConfigFromList; } });\nObject.defineProperty(exports, \"parseLoadBalancingConfig\", { enumerable: true, get: function () { return load_balancer_1.parseLoadBalancingConfig; } });\nObject.defineProperty(exports, \"isLoadBalancerNameRegistered\", { enumerable: true, get: function () { return load_balancer_1.isLoadBalancerNameRegistered; } });\nvar load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nObject.defineProperty(exports, \"LeafLoadBalancer\", { enumerable: true, get: function () { return load_balancer_pick_first_1.LeafLoadBalancer; } });\nvar subchannel_address_1 = require(\"./subchannel-address\");\nObject.defineProperty(exports, \"subchannelAddressToString\", { enumerable: true, get: function () { return subchannel_address_1.subchannelAddressToString; } });\nObject.defineProperty(exports, \"endpointToString\", { enumerable: true, get: function () { return subchannel_address_1.endpointToString; } });\nObject.defineProperty(exports, \"endpointHasAddress\", { enumerable: true, get: function () { return subchannel_address_1.endpointHasAddress; } });\nObject.defineProperty(exports, \"EndpointMap\", { enumerable: true, get: function () { return subchannel_address_1.EndpointMap; } });\nvar load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nObject.defineProperty(exports, \"ChildLoadBalancerHandler\", { enumerable: true, get: function () { return load_balancer_child_handler_1.ChildLoadBalancerHandler; } });\nvar picker_1 = require(\"./picker\");\nObject.defineProperty(exports, \"UnavailablePicker\", { enumerable: true, get: function () { return picker_1.UnavailablePicker; } });\nObject.defineProperty(exports, \"QueuePicker\", { enumerable: true, get: function () { return picker_1.QueuePicker; } });\nObject.defineProperty(exports, \"PickResultType\", { enumerable: true, get: function () { return picker_1.PickResultType; } });\nvar filter_1 = require(\"./filter\");\nObject.defineProperty(exports, \"BaseFilter\", { enumerable: true, get: function () { return filter_1.BaseFilter; } });\nvar filter_stack_1 = require(\"./filter-stack\");\nObject.defineProperty(exports, \"FilterStackFactory\", { enumerable: true, get: function () { return filter_stack_1.FilterStackFactory; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"registerAdminService\", { enumerable: true, get: function () { return admin_1.registerAdminService; } });\nvar subchannel_interface_1 = require(\"./subchannel-interface\");\nObject.defineProperty(exports, \"BaseSubchannelWrapper\", { enumerable: true, get: function () { return subchannel_interface_1.BaseSubchannelWrapper; } });\n//# sourceMappingURL=experimental.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterStackFactory = exports.FilterStack = void 0;\nclass FilterStack {\n constructor(filters) {\n this.filters = filters;\n }\n sendMetadata(metadata) {\n let result = metadata;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMetadata(result);\n }\n return result;\n }\n receiveMetadata(metadata) {\n let result = metadata;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMetadata(result);\n }\n return result;\n }\n sendMessage(message) {\n let result = message;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMessage(result);\n }\n return result;\n }\n receiveMessage(message) {\n let result = message;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMessage(result);\n }\n return result;\n }\n receiveTrailers(status) {\n let result = status;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveTrailers(result);\n }\n return result;\n }\n push(filters) {\n this.filters.unshift(...filters);\n }\n getFilters() {\n return this.filters;\n }\n}\nexports.FilterStack = FilterStack;\nclass FilterStackFactory {\n constructor(factories) {\n this.factories = factories;\n }\n push(filterFactories) {\n this.factories.unshift(...filterFactories);\n }\n clone() {\n return new FilterStackFactory([...this.factories]);\n }\n createFilter() {\n return new FilterStack(this.factories.map(factory => factory.createFilter()));\n }\n}\nexports.FilterStackFactory = FilterStackFactory;\n//# sourceMappingURL=filter-stack.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseFilter = void 0;\nclass BaseFilter {\n async sendMetadata(metadata) {\n return metadata;\n }\n receiveMetadata(metadata) {\n return metadata;\n }\n async sendMessage(message) {\n return message;\n }\n async receiveMessage(message) {\n return message;\n }\n receiveTrailers(status) {\n return status;\n }\n}\nexports.BaseFilter = BaseFilter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProxiedConnection = exports.mapProxyName = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst resolver_1 = require(\"./resolver\");\nconst http = require(\"http\");\nconst tls = require(\"tls\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst url_1 = require(\"url\");\nconst resolver_dns_1 = require(\"./resolver-dns\");\nconst TRACER_NAME = 'proxy';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nfunction getProxyInfo() {\n let proxyEnv = '';\n let envVar = '';\n /* Prefer using 'grpc_proxy'. Fallback on 'http_proxy' if it is not set.\n * Also prefer using 'https_proxy' with fallback on 'http_proxy'. The\n * fallback behavior can be removed if there's a demand for it.\n */\n if (process.env.grpc_proxy) {\n envVar = 'grpc_proxy';\n proxyEnv = process.env.grpc_proxy;\n }\n else if (process.env.https_proxy) {\n envVar = 'https_proxy';\n proxyEnv = process.env.https_proxy;\n }\n else if (process.env.http_proxy) {\n envVar = 'http_proxy';\n proxyEnv = process.env.http_proxy;\n }\n else {\n return {};\n }\n let proxyUrl;\n try {\n proxyUrl = new url_1.URL(proxyEnv);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `cannot parse value of \"${envVar}\" env var`);\n return {};\n }\n if (proxyUrl.protocol !== 'http:') {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `\"${proxyUrl.protocol}\" scheme not supported in proxy URI`);\n return {};\n }\n let userCred = null;\n if (proxyUrl.username) {\n if (proxyUrl.password) {\n (0, logging_1.log)(constants_1.LogVerbosity.INFO, 'userinfo found in proxy URI');\n userCred = `${proxyUrl.username}:${proxyUrl.password}`;\n }\n else {\n userCred = proxyUrl.username;\n }\n }\n const hostname = proxyUrl.hostname;\n let port = proxyUrl.port;\n /* The proxy URL uses the scheme \"http:\", which has a default port number of\n * 80. We need to set that explicitly here if it is omitted because otherwise\n * it will use gRPC's default port 443. */\n if (port === '') {\n port = '80';\n }\n const result = {\n address: `${hostname}:${port}`,\n };\n if (userCred) {\n result.creds = userCred;\n }\n trace('Proxy server ' + result.address + ' set by environment variable ' + envVar);\n return result;\n}\nfunction getNoProxyHostList() {\n /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */\n let noProxyStr = process.env.no_grpc_proxy;\n let envVar = 'no_grpc_proxy';\n if (!noProxyStr) {\n noProxyStr = process.env.no_proxy;\n envVar = 'no_proxy';\n }\n if (noProxyStr) {\n trace('No proxy server list set by environment variable ' + envVar);\n return noProxyStr.split(',');\n }\n else {\n return [];\n }\n}\nfunction mapProxyName(target, options) {\n var _a;\n const noProxyResult = {\n target: target,\n extraOptions: {},\n };\n if (((_a = options['grpc.enable_http_proxy']) !== null && _a !== void 0 ? _a : 1) === 0) {\n return noProxyResult;\n }\n if (target.scheme === 'unix') {\n return noProxyResult;\n }\n const proxyInfo = getProxyInfo();\n if (!proxyInfo.address) {\n return noProxyResult;\n }\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (!hostPort) {\n return noProxyResult;\n }\n const serverHost = hostPort.host;\n for (const host of getNoProxyHostList()) {\n if (host === serverHost) {\n trace('Not using proxy for target in no_proxy list: ' + (0, uri_parser_1.uriToString)(target));\n return noProxyResult;\n }\n }\n const extraOptions = {\n 'grpc.http_connect_target': (0, uri_parser_1.uriToString)(target),\n };\n if (proxyInfo.creds) {\n extraOptions['grpc.http_connect_creds'] = proxyInfo.creds;\n }\n return {\n target: {\n scheme: 'dns',\n path: proxyInfo.address,\n },\n extraOptions: extraOptions,\n };\n}\nexports.mapProxyName = mapProxyName;\nfunction getProxiedConnection(address, channelOptions, connectionOptions) {\n var _a;\n if (!('grpc.http_connect_target' in channelOptions)) {\n return Promise.resolve({});\n }\n const realTarget = channelOptions['grpc.http_connect_target'];\n const parsedTarget = (0, uri_parser_1.parseUri)(realTarget);\n if (parsedTarget === null) {\n return Promise.resolve({});\n }\n const splitHostPost = (0, uri_parser_1.splitHostPort)(parsedTarget.path);\n if (splitHostPost === null) {\n return Promise.resolve({});\n }\n const hostPort = `${splitHostPost.host}:${(_a = splitHostPost.port) !== null && _a !== void 0 ? _a : resolver_dns_1.DEFAULT_PORT}`;\n const options = {\n method: 'CONNECT',\n path: hostPort,\n };\n const headers = {\n Host: hostPort,\n };\n // Connect to the subchannel address as a proxy\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address)) {\n options.host = address.host;\n options.port = address.port;\n }\n else {\n options.socketPath = address.path;\n }\n if ('grpc.http_connect_creds' in channelOptions) {\n headers['Proxy-Authorization'] =\n 'Basic ' +\n Buffer.from(channelOptions['grpc.http_connect_creds']).toString('base64');\n }\n options.headers = headers;\n const proxyAddressString = (0, subchannel_address_1.subchannelAddressToString)(address);\n trace('Using proxy ' + proxyAddressString + ' to connect to ' + options.path);\n return new Promise((resolve, reject) => {\n const request = http.request(options);\n request.once('connect', (res, socket, head) => {\n var _a;\n request.removeAllListeners();\n socket.removeAllListeners();\n if (res.statusCode === 200) {\n trace('Successfully connected to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n if ('secureContext' in connectionOptions) {\n /* The proxy is connecting to a TLS server, so upgrade this socket\n * connection to a TLS connection.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const targetPath = (0, resolver_1.getDefaultAuthority)(parsedTarget);\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n const remoteHost = (_a = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _a !== void 0 ? _a : targetPath;\n const cts = tls.connect(Object.assign({ host: remoteHost, servername: remoteHost, socket: socket }, connectionOptions), () => {\n trace('Successfully established a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({ socket: cts, realTarget: parsedTarget });\n });\n cts.on('error', (error) => {\n trace('Failed to establish a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with error ' +\n error.message);\n reject();\n });\n }\n else {\n trace('Successfully established a plaintext connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({\n socket,\n realTarget: parsedTarget,\n });\n }\n }\n else {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with status ' +\n res.statusCode);\n reject();\n }\n });\n request.once('error', err => {\n request.removeAllListeners();\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to proxy ' +\n proxyAddressString +\n ' with error ' +\n err.message);\n reject();\n });\n request.end();\n });\n}\nexports.getProxiedConnection = getProxiedConnection;\n//# sourceMappingURL=http_proxy.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.experimental = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.ServerListenerBuilder = exports.addAdminServicesToServer = exports.getChannelzHandlers = exports.getChannelzServiceDefinition = exports.InterceptorConfigurationError = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.StatusBuilder = exports.getClientChannel = exports.ServerCredentials = exports.Server = exports.setLogVerbosity = exports.setLogger = exports.load = exports.loadObject = exports.CallCredentials = exports.ChannelCredentials = exports.waitForClientReady = exports.closeClient = exports.Channel = exports.makeGenericClientConstructor = exports.makeClientConstructor = exports.loadPackageDefinition = exports.Client = exports.compressionAlgorithms = exports.propagate = exports.connectivityState = exports.status = exports.logVerbosity = exports.Metadata = exports.credentials = void 0;\nconst call_credentials_1 = require(\"./call-credentials\");\nObject.defineProperty(exports, \"CallCredentials\", { enumerable: true, get: function () { return call_credentials_1.CallCredentials; } });\nconst channel_1 = require(\"./channel\");\nObject.defineProperty(exports, \"Channel\", { enumerable: true, get: function () { return channel_1.ChannelImplementation; } });\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nObject.defineProperty(exports, \"compressionAlgorithms\", { enumerable: true, get: function () { return compression_algorithms_1.CompressionAlgorithms; } });\nconst connectivity_state_1 = require(\"./connectivity-state\");\nObject.defineProperty(exports, \"connectivityState\", { enumerable: true, get: function () { return connectivity_state_1.ConnectivityState; } });\nconst channel_credentials_1 = require(\"./channel-credentials\");\nObject.defineProperty(exports, \"ChannelCredentials\", { enumerable: true, get: function () { return channel_credentials_1.ChannelCredentials; } });\nconst client_1 = require(\"./client\");\nObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\nconst constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"logVerbosity\", { enumerable: true, get: function () { return constants_1.LogVerbosity; } });\nObject.defineProperty(exports, \"status\", { enumerable: true, get: function () { return constants_1.Status; } });\nObject.defineProperty(exports, \"propagate\", { enumerable: true, get: function () { return constants_1.Propagate; } });\nconst logging = require(\"./logging\");\nconst make_client_1 = require(\"./make-client\");\nObject.defineProperty(exports, \"loadPackageDefinition\", { enumerable: true, get: function () { return make_client_1.loadPackageDefinition; } });\nObject.defineProperty(exports, \"makeClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nObject.defineProperty(exports, \"makeGenericClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nconst metadata_1 = require(\"./metadata\");\nObject.defineProperty(exports, \"Metadata\", { enumerable: true, get: function () { return metadata_1.Metadata; } });\nconst server_1 = require(\"./server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_1.Server; } });\nconst server_credentials_1 = require(\"./server-credentials\");\nObject.defineProperty(exports, \"ServerCredentials\", { enumerable: true, get: function () { return server_credentials_1.ServerCredentials; } });\nconst status_builder_1 = require(\"./status-builder\");\nObject.defineProperty(exports, \"StatusBuilder\", { enumerable: true, get: function () { return status_builder_1.StatusBuilder; } });\n/**** Client Credentials ****/\n// Using assign only copies enumerable properties, which is what we want\nexports.credentials = {\n /**\n * Combine a ChannelCredentials with any number of CallCredentials into a\n * single ChannelCredentials object.\n * @param channelCredentials The ChannelCredentials object.\n * @param callCredentials Any number of CallCredentials objects.\n * @return The resulting ChannelCredentials object.\n */\n combineChannelCredentials: (channelCredentials, ...callCredentials) => {\n return callCredentials.reduce((acc, other) => acc.compose(other), channelCredentials);\n },\n /**\n * Combine any number of CallCredentials into a single CallCredentials\n * object.\n * @param first The first CallCredentials object.\n * @param additional Any number of additional CallCredentials objects.\n * @return The resulting CallCredentials object.\n */\n combineCallCredentials: (first, ...additional) => {\n return additional.reduce((acc, other) => acc.compose(other), first);\n },\n // from channel-credentials.ts\n createInsecure: channel_credentials_1.ChannelCredentials.createInsecure,\n createSsl: channel_credentials_1.ChannelCredentials.createSsl,\n createFromSecureContext: channel_credentials_1.ChannelCredentials.createFromSecureContext,\n // from call-credentials.ts\n createFromMetadataGenerator: call_credentials_1.CallCredentials.createFromMetadataGenerator,\n createFromGoogleCredential: call_credentials_1.CallCredentials.createFromGoogleCredential,\n createEmpty: call_credentials_1.CallCredentials.createEmpty,\n};\n/**\n * Close a Client object.\n * @param client The client to close.\n */\nconst closeClient = (client) => client.close();\nexports.closeClient = closeClient;\nconst waitForClientReady = (client, deadline, callback) => client.waitForReady(deadline, callback);\nexports.waitForClientReady = waitForClientReady;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/**** Unimplemented function stubs ****/\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst loadObject = (value, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.loadObject = loadObject;\nconst load = (filename, format, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.load = load;\nconst setLogger = (logger) => {\n logging.setLogger(logger);\n};\nexports.setLogger = setLogger;\nconst setLogVerbosity = (verbosity) => {\n logging.setLoggerVerbosity(verbosity);\n};\nexports.setLogVerbosity = setLogVerbosity;\nconst getClientChannel = (client) => {\n return client_1.Client.prototype.getChannel.call(client);\n};\nexports.getClientChannel = getClientChannel;\nvar client_interceptors_1 = require(\"./client-interceptors\");\nObject.defineProperty(exports, \"ListenerBuilder\", { enumerable: true, get: function () { return client_interceptors_1.ListenerBuilder; } });\nObject.defineProperty(exports, \"RequesterBuilder\", { enumerable: true, get: function () { return client_interceptors_1.RequesterBuilder; } });\nObject.defineProperty(exports, \"InterceptingCall\", { enumerable: true, get: function () { return client_interceptors_1.InterceptingCall; } });\nObject.defineProperty(exports, \"InterceptorConfigurationError\", { enumerable: true, get: function () { return client_interceptors_1.InterceptorConfigurationError; } });\nvar channelz_1 = require(\"./channelz\");\nObject.defineProperty(exports, \"getChannelzServiceDefinition\", { enumerable: true, get: function () { return channelz_1.getChannelzServiceDefinition; } });\nObject.defineProperty(exports, \"getChannelzHandlers\", { enumerable: true, get: function () { return channelz_1.getChannelzHandlers; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"addAdminServicesToServer\", { enumerable: true, get: function () { return admin_1.addAdminServicesToServer; } });\nvar server_interceptors_1 = require(\"./server-interceptors\");\nObject.defineProperty(exports, \"ServerListenerBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ServerListenerBuilder; } });\nObject.defineProperty(exports, \"ResponderBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ResponderBuilder; } });\nObject.defineProperty(exports, \"ServerInterceptingCall\", { enumerable: true, get: function () { return server_interceptors_1.ServerInterceptingCall; } });\nconst experimental = require(\"./experimental\");\nexports.experimental = experimental;\nconst resolver_dns = require(\"./resolver-dns\");\nconst resolver_uds = require(\"./resolver-uds\");\nconst resolver_ip = require(\"./resolver-ip\");\nconst load_balancer_pick_first = require(\"./load-balancer-pick-first\");\nconst load_balancer_round_robin = require(\"./load-balancer-round-robin\");\nconst load_balancer_outlier_detection = require(\"./load-balancer-outlier-detection\");\nconst channelz = require(\"./channelz\");\n(() => {\n resolver_dns.setup();\n resolver_uds.setup();\n resolver_ip.setup();\n load_balancer_pick_first.setup();\n load_balancer_round_robin.setup();\n load_balancer_outlier_detection.setup();\n channelz.setup();\n})();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalChannel = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst resolving_load_balancer_1 = require(\"./resolving-load-balancer\");\nconst subchannel_pool_1 = require(\"./subchannel-pool\");\nconst picker_1 = require(\"./picker\");\nconst constants_1 = require(\"./constants\");\nconst filter_stack_1 = require(\"./filter-stack\");\nconst compression_filter_1 = require(\"./compression-filter\");\nconst resolver_1 = require(\"./resolver\");\nconst logging_1 = require(\"./logging\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst channelz_1 = require(\"./channelz\");\nconst load_balancing_call_1 = require(\"./load-balancing-call\");\nconst deadline_1 = require(\"./deadline\");\nconst resolving_call_1 = require(\"./resolving-call\");\nconst call_number_1 = require(\"./call-number\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst retrying_call_1 = require(\"./retrying-call\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\n/**\n * See https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\nconst MIN_IDLE_TIMEOUT_MS = 1000;\n// 30 minutes\nconst DEFAULT_IDLE_TIMEOUT_MS = 30 * 60 * 1000;\nconst RETRY_THROTTLER_MAP = new Map();\nconst DEFAULT_RETRY_BUFFER_SIZE_BYTES = 1 << 24; // 16 MB\nconst DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES = 1 << 20; // 1 MB\nclass ChannelSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, channel) {\n super(childSubchannel);\n this.channel = channel;\n this.refCount = 0;\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime) => {\n channel.throttleKeepalive(keepaliveTime);\n };\n childSubchannel.addConnectivityStateListener(this.subchannelStateListener);\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n this.child.removeConnectivityStateListener(this.subchannelStateListener);\n this.channel.removeWrappedSubchannel(this);\n }\n }\n}\nclass InternalChannel {\n constructor(target, credentials, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.credentials = credentials;\n this.options = options;\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentPicker = new picker_1.UnavailablePicker();\n /**\n * Calls queued up to get a call config. Should only be populated before the\n * first time the resolver returns a result, which includes the ConfigSelector.\n */\n this.configSelectionQueue = [];\n this.pickQueue = [];\n this.connectivityStateWatchers = [];\n this.configSelector = null;\n /**\n * This is the error from the name resolver if it failed most recently. It\n * is only used to end calls that start while there is no config selector\n * and the name resolver is in backoff, so it should be nulled if\n * configSelector becomes set or the channel state becomes anything other\n * than TRANSIENT_FAILURE.\n */\n this.currentResolutionError = null;\n this.wrappedSubchannels = new Set();\n this.callCount = 0;\n this.idleTimer = null;\n // Channelz info\n this.channelzEnabled = true;\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n /**\n * Randomly generated ID to be passed to the config selector, for use by\n * ring_hash in xDS. An integer distributed approximately uniformly between\n * 0 and MAX_SAFE_INTEGER.\n */\n this.randomChannelId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.originalTarget = target;\n const originalTargetUri = (0, uri_parser_1.parseUri)(target);\n if (originalTargetUri === null) {\n throw new Error(`Could not parse target name \"${target}\"`);\n }\n /* This ensures that the target has a scheme that is registered with the\n * resolver */\n const defaultSchemeMapResult = (0, resolver_1.mapUriDefaultScheme)(originalTargetUri);\n if (defaultSchemeMapResult === null) {\n throw new Error(`Could not find a default scheme for target name \"${target}\"`);\n }\n this.callRefTimer = setInterval(() => { }, MAX_TIMEOUT_TIME);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.channelzRef = (0, channelz_1.registerChannelzChannel)(target, () => this.getChannelzInfo(), this.channelzEnabled);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Channel created');\n }\n if (this.options['grpc.default_authority']) {\n this.defaultAuthority = this.options['grpc.default_authority'];\n }\n else {\n this.defaultAuthority = (0, resolver_1.getDefaultAuthority)(defaultSchemeMapResult);\n }\n const proxyMapResult = (0, http_proxy_1.mapProxyName)(defaultSchemeMapResult, options);\n this.target = proxyMapResult.target;\n this.options = Object.assign({}, this.options, proxyMapResult.extraOptions);\n /* The global boolean parameter to getSubchannelPool has the inverse meaning to what\n * the grpc.use_local_subchannel_pool channel option means. */\n this.subchannelPool = (0, subchannel_pool_1.getSubchannelPool)(((_c = options['grpc.use_local_subchannel_pool']) !== null && _c !== void 0 ? _c : 0) === 0);\n this.retryBufferTracker = new retrying_call_1.MessageBufferTracker((_d = options['grpc.retry_buffer_size']) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_BUFFER_SIZE_BYTES, (_e = options['grpc.per_rpc_retry_buffer_size']) !== null && _e !== void 0 ? _e : DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES);\n this.keepaliveTime = (_f = options['grpc.keepalive_time_ms']) !== null && _f !== void 0 ? _f : -1;\n this.idleTimeoutMs = Math.max((_g = options['grpc.client_idle_timeout_ms']) !== null && _g !== void 0 ? _g : DEFAULT_IDLE_TIMEOUT_MS, MIN_IDLE_TIMEOUT_MS);\n const channelControlHelper = {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const subchannel = this.subchannelPool.getOrCreateSubchannel(this.target, subchannelAddress, Object.assign({}, this.options, subchannelArgs), this.credentials);\n subchannel.throttleKeepalive(this.keepaliveTime);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Created subchannel or used existing subchannel', subchannel.getChannelzRef());\n }\n const wrappedSubchannel = new ChannelSubchannelWrapper(subchannel, this);\n this.wrappedSubchannels.add(wrappedSubchannel);\n return wrappedSubchannel;\n },\n updateState: (connectivityState, picker) => {\n this.currentPicker = picker;\n const queueCopy = this.pickQueue.slice();\n this.pickQueue = [];\n if (queueCopy.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of queueCopy) {\n call.doPick();\n }\n this.updateState(connectivityState);\n },\n requestReresolution: () => {\n // This should never be called.\n throw new Error('Resolving load balancer should never call requestReresolution');\n },\n addChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(child);\n }\n },\n removeChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.unrefChild(child);\n }\n },\n };\n this.resolvingLoadBalancer = new resolving_load_balancer_1.ResolvingLoadBalancer(this.target, channelControlHelper, options, (serviceConfig, configSelector) => {\n if (serviceConfig.retryThrottling) {\n RETRY_THROTTLER_MAP.set(this.getTarget(), new retrying_call_1.RetryThrottler(serviceConfig.retryThrottling.maxTokens, serviceConfig.retryThrottling.tokenRatio, RETRY_THROTTLER_MAP.get(this.getTarget())));\n }\n else {\n RETRY_THROTTLER_MAP.delete(this.getTarget());\n }\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Address resolution succeeded');\n }\n this.configSelector = configSelector;\n this.currentResolutionError = null;\n /* We process the queue asynchronously to ensure that the corresponding\n * load balancer update has completed. */\n process.nextTick(() => {\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.getConfig();\n }\n });\n }, status => {\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_WARNING', 'Address resolution failed with code ' +\n status.code +\n ' and details \"' +\n status.details +\n '\"');\n }\n if (this.configSelectionQueue.length > 0) {\n this.trace('Name resolution failed with calls queued for config selection');\n }\n if (this.configSelector === null) {\n this.currentResolutionError = Object.assign(Object.assign({}, (0, control_plane_status_1.restrictControlPlaneStatusCode)(status.code, status.details)), { metadata: status.metadata });\n }\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.reportResolverError(status);\n }\n });\n this.filterStackFactory = new filter_stack_1.FilterStackFactory([\n new compression_filter_1.CompressionFilterFactory(this, this.options),\n ]);\n this.trace('Channel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n const error = new Error();\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'channel_stacktrace', '(' +\n this.channelzRef.id +\n ') ' +\n 'Channel constructed \\n' +\n ((_h = error.stack) === null || _h === void 0 ? void 0 : _h.substring(error.stack.indexOf('\\n') + 1)));\n this.lastActivityTimestamp = new Date();\n }\n getChannelzInfo() {\n return {\n target: this.originalTarget,\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n };\n }\n trace(text, verbosityOverride) {\n (0, logging_1.trace)(verbosityOverride !== null && verbosityOverride !== void 0 ? verbosityOverride : constants_1.LogVerbosity.DEBUG, 'channel', '(' + this.channelzRef.id + ') ' + (0, uri_parser_1.uriToString)(this.target) + ' ' + text);\n }\n callRefTimerRef() {\n var _a, _b, _c, _d;\n // If the hasRef function does not exist, always run the code\n if (!((_b = (_a = this.callRefTimer).hasRef) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n this.trace('callRefTimer.ref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_d = (_c = this.callRefTimer).ref) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n }\n callRefTimerUnref() {\n var _a, _b;\n // If the hasRef function does not exist, always run the code\n if (!this.callRefTimer.hasRef || this.callRefTimer.hasRef()) {\n this.trace('callRefTimer.unref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n removeConnectivityStateWatcher(watcherObject) {\n const watcherIndex = this.connectivityStateWatchers.findIndex(value => value === watcherObject);\n if (watcherIndex >= 0) {\n this.connectivityStateWatchers.splice(watcherIndex, 1);\n }\n }\n updateState(newState) {\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'connectivity_state', '(' +\n this.channelzRef.id +\n ') ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n this.connectivityState = newState;\n const watchersCopy = this.connectivityStateWatchers.slice();\n for (const watcherObject of watchersCopy) {\n if (newState !== watcherObject.currentState) {\n if (watcherObject.timer) {\n clearTimeout(watcherObject.timer);\n }\n this.removeConnectivityStateWatcher(watcherObject);\n watcherObject.callback();\n }\n }\n if (newState !== connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.currentResolutionError = null;\n }\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n for (const wrappedSubchannel of this.wrappedSubchannels) {\n wrappedSubchannel.throttleKeepalive(newKeepaliveTime);\n }\n }\n }\n removeWrappedSubchannel(wrappedSubchannel) {\n this.wrappedSubchannels.delete(wrappedSubchannel);\n }\n doPick(metadata, extraPickInfo) {\n return this.currentPicker.pick({\n metadata: metadata,\n extraPickInfo: extraPickInfo,\n });\n }\n queueCallForPick(call) {\n this.pickQueue.push(call);\n this.callRefTimerRef();\n }\n getConfig(method, metadata) {\n this.resolvingLoadBalancer.exitIdle();\n if (this.configSelector) {\n return {\n type: 'SUCCESS',\n config: this.configSelector(method, metadata, this.randomChannelId),\n };\n }\n else {\n if (this.currentResolutionError) {\n return {\n type: 'ERROR',\n error: this.currentResolutionError,\n };\n }\n else {\n return {\n type: 'NONE',\n };\n }\n }\n }\n queueCallForConfig(call) {\n this.configSelectionQueue.push(call);\n this.callRefTimerRef();\n }\n enterIdle() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.IDLE);\n this.currentPicker = new picker_1.QueuePicker(this.resolvingLoadBalancer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n }\n startIdleTimeout(timeoutMs) {\n var _a, _b;\n this.idleTimer = setTimeout(() => {\n if (this.callCount > 0) {\n /* If there is currently a call, the channel will not go idle for a\n * period of at least idleTimeoutMs, so check again after that time.\n */\n this.startIdleTimeout(this.idleTimeoutMs);\n return;\n }\n const now = new Date();\n const timeSinceLastActivity = now.valueOf() - this.lastActivityTimestamp.valueOf();\n if (timeSinceLastActivity >= this.idleTimeoutMs) {\n this.trace('Idle timer triggered after ' +\n this.idleTimeoutMs +\n 'ms of inactivity');\n this.enterIdle();\n }\n else {\n /* Whenever the timer fires with the latest activity being too recent,\n * set the timer again for the time when the time since the last\n * activity is equal to the timeout. This should result in the timer\n * firing no more than once every idleTimeoutMs/2 on average. */\n this.startIdleTimeout(this.idleTimeoutMs - timeSinceLastActivity);\n }\n }, timeoutMs);\n (_b = (_a = this.idleTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n maybeStartIdleTimer() {\n if (this.connectivityState !== connectivity_state_1.ConnectivityState.SHUTDOWN &&\n !this.idleTimer) {\n this.startIdleTimeout(this.idleTimeoutMs);\n }\n }\n onCallStart() {\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n }\n this.callCount += 1;\n }\n onCallEnd(status) {\n if (this.channelzEnabled) {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n }\n this.callCount -= 1;\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n createLoadBalancingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createLoadBalancingCall [' + callNumber + '] method=\"' + method + '\"');\n return new load_balancing_call_1.LoadBalancingCall(this, callConfig, method, host, credentials, deadline, callNumber);\n }\n createRetryingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createRetryingCall [' + callNumber + '] method=\"' + method + '\"');\n return new retrying_call_1.RetryingCall(this, callConfig, method, host, credentials, deadline, callNumber, this.retryBufferTracker, RETRY_THROTTLER_MAP.get(this.getTarget()));\n }\n createInnerCall(callConfig, method, host, credentials, deadline) {\n // Create a RetryingCall if retries are enabled\n if (this.options['grpc.enable_retries'] === 0) {\n return this.createLoadBalancingCall(callConfig, method, host, credentials, deadline);\n }\n else {\n return this.createRetryingCall(callConfig, method, host, credentials, deadline);\n }\n }\n createResolvingCall(method, deadline, host, parentCall, propagateFlags) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createResolvingCall [' +\n callNumber +\n '] method=\"' +\n method +\n '\", deadline=' +\n (0, deadline_1.deadlineToString)(deadline));\n const finalOptions = {\n deadline: deadline,\n flags: propagateFlags !== null && propagateFlags !== void 0 ? propagateFlags : constants_1.Propagate.DEFAULTS,\n host: host !== null && host !== void 0 ? host : this.defaultAuthority,\n parentCall: parentCall,\n };\n const call = new resolving_call_1.ResolvingCall(this, method, finalOptions, this.filterStackFactory.clone(), this.credentials._getCallCredentials(), callNumber);\n this.onCallStart();\n call.addStatusWatcher(status => {\n this.onCallEnd(status);\n });\n return call;\n }\n close() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.SHUTDOWN);\n clearInterval(this.callRefTimer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n }\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n this.subchannelPool.unrefUnusedSubchannels();\n }\n getTarget() {\n return (0, uri_parser_1.uriToString)(this.target);\n }\n getConnectivityState(tryToConnect) {\n const connectivityState = this.connectivityState;\n if (tryToConnect) {\n this.resolvingLoadBalancer.exitIdle();\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n return connectivityState;\n }\n watchConnectivityState(currentState, deadline, callback) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n let timer = null;\n if (deadline !== Infinity) {\n const deadlineDate = deadline instanceof Date ? deadline : new Date(deadline);\n const now = new Date();\n if (deadline === -Infinity || deadlineDate <= now) {\n process.nextTick(callback, new Error('Deadline passed without connectivity state change'));\n return;\n }\n timer = setTimeout(() => {\n this.removeConnectivityStateWatcher(watcherObject);\n callback(new Error('Deadline passed without connectivity state change'));\n }, deadlineDate.getTime() - now.getTime());\n }\n const watcherObject = {\n currentState,\n callback,\n timer,\n };\n this.connectivityStateWatchers.push(watcherObject);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n return this.createResolvingCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.InternalChannel = InternalChannel;\n//# sourceMappingURL=internal-channel.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChildLoadBalancerHandler = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst TYPE_NAME = 'child_load_balancer_helper';\nclass ChildLoadBalancerHandler {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.currentChild = null;\n this.pendingChild = null;\n this.latestConfig = null;\n this.ChildPolicyHelper = class {\n constructor(parent) {\n this.parent = parent;\n this.child = null;\n }\n createSubchannel(subchannelAddress, subchannelArgs) {\n return this.parent.channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n }\n updateState(connectivityState, picker) {\n var _a;\n if (this.calledByPendingChild()) {\n if (connectivityState === connectivity_state_1.ConnectivityState.CONNECTING) {\n return;\n }\n (_a = this.parent.currentChild) === null || _a === void 0 ? void 0 : _a.destroy();\n this.parent.currentChild = this.parent.pendingChild;\n this.parent.pendingChild = null;\n }\n else if (!this.calledByCurrentChild()) {\n return;\n }\n this.parent.channelControlHelper.updateState(connectivityState, picker);\n }\n requestReresolution() {\n var _a;\n const latestChild = (_a = this.parent.pendingChild) !== null && _a !== void 0 ? _a : this.parent.currentChild;\n if (this.child === latestChild) {\n this.parent.channelControlHelper.requestReresolution();\n }\n }\n setChild(newChild) {\n this.child = newChild;\n }\n addChannelzChild(child) {\n this.parent.channelControlHelper.addChannelzChild(child);\n }\n removeChannelzChild(child) {\n this.parent.channelControlHelper.removeChannelzChild(child);\n }\n calledByPendingChild() {\n return this.child === this.parent.pendingChild;\n }\n calledByCurrentChild() {\n return this.child === this.parent.currentChild;\n }\n };\n }\n configUpdateRequiresNewPolicyInstance(oldConfig, newConfig) {\n return oldConfig.getLoadBalancerName() !== newConfig.getLoadBalancerName();\n }\n /**\n * Prerequisites: lbConfig !== null and lbConfig.name is registered\n * @param endpointList\n * @param lbConfig\n * @param attributes\n */\n updateAddressList(endpointList, lbConfig, attributes) {\n let childToUpdate;\n if (this.currentChild === null ||\n this.latestConfig === null ||\n this.configUpdateRequiresNewPolicyInstance(this.latestConfig, lbConfig)) {\n const newHelper = new this.ChildPolicyHelper(this);\n const newChild = (0, load_balancer_1.createLoadBalancer)(lbConfig, newHelper, this.options);\n newHelper.setChild(newChild);\n if (this.currentChild === null) {\n this.currentChild = newChild;\n childToUpdate = this.currentChild;\n }\n else {\n if (this.pendingChild) {\n this.pendingChild.destroy();\n }\n this.pendingChild = newChild;\n childToUpdate = this.pendingChild;\n }\n }\n else {\n if (this.pendingChild === null) {\n childToUpdate = this.currentChild;\n }\n else {\n childToUpdate = this.pendingChild;\n }\n }\n this.latestConfig = lbConfig;\n childToUpdate.updateAddressList(endpointList, lbConfig, attributes);\n }\n exitIdle() {\n if (this.currentChild) {\n this.currentChild.exitIdle();\n if (this.pendingChild) {\n this.pendingChild.exitIdle();\n }\n }\n }\n resetBackoff() {\n if (this.currentChild) {\n this.currentChild.resetBackoff();\n if (this.pendingChild) {\n this.pendingChild.resetBackoff();\n }\n }\n }\n destroy() {\n /* Note: state updates are only propagated from the child balancer if that\n * object is equal to this.currentChild or this.pendingChild. Since this\n * function sets both of those to null, no further state updates will\n * occur after this function returns. */\n if (this.currentChild) {\n this.currentChild.destroy();\n this.currentChild = null;\n }\n if (this.pendingChild) {\n this.pendingChild.destroy();\n this.pendingChild = null;\n }\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.ChildLoadBalancerHandler = ChildLoadBalancerHandler;\n//# sourceMappingURL=load-balancer-child-handler.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.OutlierDetectionLoadBalancer = exports.OutlierDetectionLoadBalancingConfig = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst duration_1 = require(\"./duration\");\nconst experimental_1 = require(\"./experimental\");\nconst load_balancer_1 = require(\"./load-balancer\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst picker_1 = require(\"./picker\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'outlier_detection';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'outlier_detection';\nconst OUTLIER_DETECTION_ENABLED = ((_a = process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION) !== null && _a !== void 0 ? _a : 'true') === 'true';\nconst defaultSuccessRateEjectionConfig = {\n stdev_factor: 1900,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 100,\n};\nconst defaultFailurePercentageEjectionConfig = {\n threshold: 85,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 50,\n};\nfunction validateFieldType(obj, fieldName, expectedType, objectName) {\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n typeof obj[fieldName] !== expectedType) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected ${expectedType}, got ${typeof obj[fieldName]}`);\n }\n}\nfunction validatePositiveDuration(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n if (fieldName in obj && obj[fieldName] !== undefined) {\n if (!(0, duration_1.isDuration)(obj[fieldName])) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected Duration, got ${typeof obj[fieldName]}`);\n }\n if (!(obj[fieldName].seconds >= 0 &&\n obj[fieldName].seconds <= 315576000000 &&\n obj[fieldName].nanos >= 0 &&\n obj[fieldName].nanos <= 999999999)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: values out of range for non-negative Duaration`);\n }\n }\n}\nfunction validatePercentage(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n validateFieldType(obj, fieldName, 'number', objectName);\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n !(obj[fieldName] >= 0 && obj[fieldName] <= 100)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: value out of range for percentage (0-100)`);\n }\n}\nclass OutlierDetectionLoadBalancingConfig {\n constructor(intervalMs, baseEjectionTimeMs, maxEjectionTimeMs, maxEjectionPercent, successRateEjection, failurePercentageEjection, childPolicy) {\n this.childPolicy = childPolicy;\n if (childPolicy.getLoadBalancerName() === 'pick_first') {\n throw new Error('outlier_detection LB policy cannot have a pick_first child policy');\n }\n this.intervalMs = intervalMs !== null && intervalMs !== void 0 ? intervalMs : 10000;\n this.baseEjectionTimeMs = baseEjectionTimeMs !== null && baseEjectionTimeMs !== void 0 ? baseEjectionTimeMs : 30000;\n this.maxEjectionTimeMs = maxEjectionTimeMs !== null && maxEjectionTimeMs !== void 0 ? maxEjectionTimeMs : 300000;\n this.maxEjectionPercent = maxEjectionPercent !== null && maxEjectionPercent !== void 0 ? maxEjectionPercent : 10;\n this.successRateEjection = successRateEjection\n ? Object.assign(Object.assign({}, defaultSuccessRateEjectionConfig), successRateEjection) : null;\n this.failurePercentageEjection = failurePercentageEjection\n ? Object.assign(Object.assign({}, defaultFailurePercentageEjectionConfig), failurePercentageEjection) : null;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n var _a, _b;\n return {\n outlier_detection: {\n interval: (0, duration_1.msToDuration)(this.intervalMs),\n base_ejection_time: (0, duration_1.msToDuration)(this.baseEjectionTimeMs),\n max_ejection_time: (0, duration_1.msToDuration)(this.maxEjectionTimeMs),\n max_ejection_percent: this.maxEjectionPercent,\n success_rate_ejection: (_a = this.successRateEjection) !== null && _a !== void 0 ? _a : undefined,\n failure_percentage_ejection: (_b = this.failurePercentageEjection) !== null && _b !== void 0 ? _b : undefined,\n child_policy: [this.childPolicy.toJsonObject()],\n },\n };\n }\n getIntervalMs() {\n return this.intervalMs;\n }\n getBaseEjectionTimeMs() {\n return this.baseEjectionTimeMs;\n }\n getMaxEjectionTimeMs() {\n return this.maxEjectionTimeMs;\n }\n getMaxEjectionPercent() {\n return this.maxEjectionPercent;\n }\n getSuccessRateEjectionConfig() {\n return this.successRateEjection;\n }\n getFailurePercentageEjectionConfig() {\n return this.failurePercentageEjection;\n }\n getChildPolicy() {\n return this.childPolicy;\n }\n static createFromJson(obj) {\n var _a;\n validatePositiveDuration(obj, 'interval');\n validatePositiveDuration(obj, 'base_ejection_time');\n validatePositiveDuration(obj, 'max_ejection_time');\n validatePercentage(obj, 'max_ejection_percent');\n if ('success_rate_ejection' in obj &&\n obj.success_rate_ejection !== undefined) {\n if (typeof obj.success_rate_ejection !== 'object') {\n throw new Error('outlier detection config success_rate_ejection must be an object');\n }\n validateFieldType(obj.success_rate_ejection, 'stdev_factor', 'number', 'success_rate_ejection');\n validatePercentage(obj.success_rate_ejection, 'enforcement_percentage', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'minimum_hosts', 'number', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'request_volume', 'number', 'success_rate_ejection');\n }\n if ('failure_percentage_ejection' in obj &&\n obj.failure_percentage_ejection !== undefined) {\n if (typeof obj.failure_percentage_ejection !== 'object') {\n throw new Error('outlier detection config failure_percentage_ejection must be an object');\n }\n validatePercentage(obj.failure_percentage_ejection, 'threshold', 'failure_percentage_ejection');\n validatePercentage(obj.failure_percentage_ejection, 'enforcement_percentage', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'minimum_hosts', 'number', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'request_volume', 'number', 'failure_percentage_ejection');\n }\n if (!('child_policy' in obj) || !Array.isArray(obj.child_policy)) {\n throw new Error('outlier detection config child_policy must be an array');\n }\n const childPolicy = (0, load_balancer_1.selectLbConfigFromList)(obj.child_policy);\n if (!childPolicy) {\n throw new Error('outlier detection config child_policy: no valid recognized policy found');\n }\n return new OutlierDetectionLoadBalancingConfig(obj.interval ? (0, duration_1.durationToMs)(obj.interval) : null, obj.base_ejection_time ? (0, duration_1.durationToMs)(obj.base_ejection_time) : null, obj.max_ejection_time ? (0, duration_1.durationToMs)(obj.max_ejection_time) : null, (_a = obj.max_ejection_percent) !== null && _a !== void 0 ? _a : null, obj.success_rate_ejection, obj.failure_percentage_ejection, childPolicy);\n }\n}\nexports.OutlierDetectionLoadBalancingConfig = OutlierDetectionLoadBalancingConfig;\nclass OutlierDetectionSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, mapEntry) {\n super(childSubchannel);\n this.mapEntry = mapEntry;\n this.refCount = 0;\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n if (this.mapEntry) {\n const index = this.mapEntry.subchannelWrappers.indexOf(this);\n if (index >= 0) {\n this.mapEntry.subchannelWrappers.splice(index, 1);\n }\n }\n }\n }\n eject() {\n this.setHealthy(false);\n }\n uneject() {\n this.setHealthy(true);\n }\n getMapEntry() {\n return this.mapEntry;\n }\n getWrappedSubchannel() {\n return this.child;\n }\n}\nfunction createEmptyBucket() {\n return {\n success: 0,\n failure: 0,\n };\n}\nclass CallCounter {\n constructor() {\n this.activeBucket = createEmptyBucket();\n this.inactiveBucket = createEmptyBucket();\n }\n addSuccess() {\n this.activeBucket.success += 1;\n }\n addFailure() {\n this.activeBucket.failure += 1;\n }\n switchBuckets() {\n this.inactiveBucket = this.activeBucket;\n this.activeBucket = createEmptyBucket();\n }\n getLastSuccesses() {\n return this.inactiveBucket.success;\n }\n getLastFailures() {\n return this.inactiveBucket.failure;\n }\n}\nclass OutlierDetectionPicker {\n constructor(wrappedPicker, countCalls) {\n this.wrappedPicker = wrappedPicker;\n this.countCalls = countCalls;\n }\n pick(pickArgs) {\n const wrappedPick = this.wrappedPicker.pick(pickArgs);\n if (wrappedPick.pickResultType === picker_1.PickResultType.COMPLETE) {\n const subchannelWrapper = wrappedPick.subchannel;\n const mapEntry = subchannelWrapper.getMapEntry();\n if (mapEntry) {\n let onCallEnded = wrappedPick.onCallEnded;\n if (this.countCalls) {\n onCallEnded = statusCode => {\n var _a;\n if (statusCode === constants_1.Status.OK) {\n mapEntry.counter.addSuccess();\n }\n else {\n mapEntry.counter.addFailure();\n }\n (_a = wrappedPick.onCallEnded) === null || _a === void 0 ? void 0 : _a.call(wrappedPick, statusCode);\n };\n }\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel(), onCallEnded: onCallEnded });\n }\n else {\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel() });\n }\n }\n else {\n return wrappedPick;\n }\n }\n}\nclass OutlierDetectionLoadBalancer {\n constructor(channelControlHelper, options) {\n this.entryMap = new subchannel_address_1.EndpointMap();\n this.latestConfig = null;\n this.timerStartTime = null;\n this.childBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler((0, experimental_1.createChildChannelControlHelper)(channelControlHelper, {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const originalSubchannel = channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n const mapEntry = this.entryMap.getForSubchannelAddress(subchannelAddress);\n const subchannelWrapper = new OutlierDetectionSubchannelWrapper(originalSubchannel, mapEntry);\n if ((mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.currentEjectionTimestamp) !== null) {\n // If the address is ejected, propagate that to the new subchannel wrapper\n subchannelWrapper.eject();\n }\n mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.subchannelWrappers.push(subchannelWrapper);\n return subchannelWrapper;\n },\n updateState: (connectivityState, picker) => {\n if (connectivityState === connectivity_state_1.ConnectivityState.READY) {\n channelControlHelper.updateState(connectivityState, new OutlierDetectionPicker(picker, this.isCountingEnabled()));\n }\n else {\n channelControlHelper.updateState(connectivityState, picker);\n }\n },\n }), options);\n this.ejectionTimer = setInterval(() => { }, 0);\n clearInterval(this.ejectionTimer);\n }\n isCountingEnabled() {\n return (this.latestConfig !== null &&\n (this.latestConfig.getSuccessRateEjectionConfig() !== null ||\n this.latestConfig.getFailurePercentageEjectionConfig() !== null));\n }\n getCurrentEjectionPercent() {\n let ejectionCount = 0;\n for (const mapEntry of this.entryMap.values()) {\n if (mapEntry.currentEjectionTimestamp !== null) {\n ejectionCount += 1;\n }\n }\n return (ejectionCount * 100) / this.entryMap.size;\n }\n runSuccessRateCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const successRateConfig = this.latestConfig.getSuccessRateEjectionConfig();\n if (!successRateConfig) {\n return;\n }\n trace('Running success rate check');\n // Step 1\n const targetRequestVolume = successRateConfig.request_volume;\n let addresesWithTargetVolume = 0;\n const successRates = [];\n for (const [endpoint, mapEntry] of this.entryMap.entries()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Stats for ' +\n (0, subchannel_address_1.endpointToString)(endpoint) +\n ': successes=' +\n successes +\n ' failures=' +\n failures +\n ' targetRequestVolume=' +\n targetRequestVolume);\n if (successes + failures >= targetRequestVolume) {\n addresesWithTargetVolume += 1;\n successRates.push(successes / (successes + failures));\n }\n }\n trace('Found ' +\n addresesWithTargetVolume +\n ' success rate candidates; currentEjectionPercent=' +\n this.getCurrentEjectionPercent() +\n ' successRates=[' +\n successRates +\n ']');\n if (addresesWithTargetVolume < successRateConfig.minimum_hosts) {\n return;\n }\n // Step 2\n const successRateMean = successRates.reduce((a, b) => a + b) / successRates.length;\n let successRateDeviationSum = 0;\n for (const rate of successRates) {\n const deviation = rate - successRateMean;\n successRateDeviationSum += deviation * deviation;\n }\n const successRateVariance = successRateDeviationSum / successRates.length;\n const successRateStdev = Math.sqrt(successRateVariance);\n const ejectionThreshold = successRateMean -\n successRateStdev * (successRateConfig.stdev_factor / 1000);\n trace('stdev=' + successRateStdev + ' ejectionThreshold=' + ejectionThreshold);\n // Step 3\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 3.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 3.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures < targetRequestVolume) {\n continue;\n }\n // Step 3.iii\n const successRate = successes / (successes + failures);\n trace('Checking candidate ' + address + ' successRate=' + successRate);\n if (successRate < ejectionThreshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n successRateConfig.enforcement_percentage);\n if (randomNumber < successRateConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n runFailurePercentageCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const failurePercentageConfig = this.latestConfig.getFailurePercentageEjectionConfig();\n if (!failurePercentageConfig) {\n return;\n }\n trace('Running failure percentage check. threshold=' +\n failurePercentageConfig.threshold +\n ' request volume threshold=' +\n failurePercentageConfig.request_volume);\n // Step 1\n let addressesWithTargetVolume = 0;\n for (const mapEntry of this.entryMap.values()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures >= failurePercentageConfig.request_volume) {\n addressesWithTargetVolume += 1;\n }\n }\n if (addressesWithTargetVolume < failurePercentageConfig.minimum_hosts) {\n return;\n }\n // Step 2\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 2.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 2.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Candidate successes=' + successes + ' failures=' + failures);\n if (successes + failures < failurePercentageConfig.request_volume) {\n continue;\n }\n // Step 2.iii\n const failurePercentage = (failures * 100) / (failures + successes);\n if (failurePercentage > failurePercentageConfig.threshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n failurePercentageConfig.enforcement_percentage);\n if (randomNumber < failurePercentageConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n eject(mapEntry, ejectionTimestamp) {\n mapEntry.currentEjectionTimestamp = new Date();\n mapEntry.ejectionTimeMultiplier += 1;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.eject();\n }\n }\n uneject(mapEntry) {\n mapEntry.currentEjectionTimestamp = null;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.uneject();\n }\n }\n switchAllBuckets() {\n for (const mapEntry of this.entryMap.values()) {\n mapEntry.counter.switchBuckets();\n }\n }\n startTimer(delayMs) {\n var _a, _b;\n this.ejectionTimer = setTimeout(() => this.runChecks(), delayMs);\n (_b = (_a = this.ejectionTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n runChecks() {\n const ejectionTimestamp = new Date();\n trace('Ejection timer running');\n this.switchAllBuckets();\n if (!this.latestConfig) {\n return;\n }\n this.timerStartTime = ejectionTimestamp;\n this.startTimer(this.latestConfig.getIntervalMs());\n this.runSuccessRateCheck(ejectionTimestamp);\n this.runFailurePercentageCheck(ejectionTimestamp);\n for (const [address, mapEntry] of this.entryMap.entries()) {\n if (mapEntry.currentEjectionTimestamp === null) {\n if (mapEntry.ejectionTimeMultiplier > 0) {\n mapEntry.ejectionTimeMultiplier -= 1;\n }\n }\n else {\n const baseEjectionTimeMs = this.latestConfig.getBaseEjectionTimeMs();\n const maxEjectionTimeMs = this.latestConfig.getMaxEjectionTimeMs();\n const returnTime = new Date(mapEntry.currentEjectionTimestamp.getTime());\n returnTime.setMilliseconds(returnTime.getMilliseconds() +\n Math.min(baseEjectionTimeMs * mapEntry.ejectionTimeMultiplier, Math.max(baseEjectionTimeMs, maxEjectionTimeMs)));\n if (returnTime < new Date()) {\n trace('Unejecting ' + address);\n this.uneject(mapEntry);\n }\n }\n }\n }\n updateAddressList(endpointList, lbConfig, attributes) {\n if (!(lbConfig instanceof OutlierDetectionLoadBalancingConfig)) {\n return;\n }\n for (const endpoint of endpointList) {\n if (!this.entryMap.has(endpoint)) {\n trace('Adding map entry for ' + (0, subchannel_address_1.endpointToString)(endpoint));\n this.entryMap.set(endpoint, {\n counter: new CallCounter(),\n currentEjectionTimestamp: null,\n ejectionTimeMultiplier: 0,\n subchannelWrappers: [],\n });\n }\n }\n this.entryMap.deleteMissing(endpointList);\n const childPolicy = lbConfig.getChildPolicy();\n this.childBalancer.updateAddressList(endpointList, childPolicy, attributes);\n if (lbConfig.getSuccessRateEjectionConfig() ||\n lbConfig.getFailurePercentageEjectionConfig()) {\n if (this.timerStartTime) {\n trace('Previous timer existed. Replacing timer');\n clearTimeout(this.ejectionTimer);\n const remainingDelay = lbConfig.getIntervalMs() -\n (new Date().getTime() - this.timerStartTime.getTime());\n this.startTimer(remainingDelay);\n }\n else {\n trace('Starting new timer');\n this.timerStartTime = new Date();\n this.startTimer(lbConfig.getIntervalMs());\n this.switchAllBuckets();\n }\n }\n else {\n trace('Counting disabled. Cancelling timer.');\n this.timerStartTime = null;\n clearTimeout(this.ejectionTimer);\n for (const mapEntry of this.entryMap.values()) {\n this.uneject(mapEntry);\n mapEntry.ejectionTimeMultiplier = 0;\n }\n }\n this.latestConfig = lbConfig;\n }\n exitIdle() {\n this.childBalancer.exitIdle();\n }\n resetBackoff() {\n this.childBalancer.resetBackoff();\n }\n destroy() {\n clearTimeout(this.ejectionTimer);\n this.childBalancer.destroy();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.OutlierDetectionLoadBalancer = OutlierDetectionLoadBalancer;\nfunction setup() {\n if (OUTLIER_DETECTION_ENABLED) {\n (0, experimental_1.registerLoadBalancerType)(TYPE_NAME, OutlierDetectionLoadBalancer, OutlierDetectionLoadBalancingConfig);\n }\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-outlier-detection.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.LeafLoadBalancer = exports.PickFirstLoadBalancer = exports.shuffled = exports.PickFirstLoadBalancingConfig = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst net_1 = require(\"net\");\nconst TRACER_NAME = 'pick_first';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'pick_first';\n/**\n * Delay after starting a connection on a subchannel before starting a\n * connection on the next subchannel in the list, for Happy Eyeballs algorithm.\n */\nconst CONNECTION_DELAY_INTERVAL_MS = 250;\nclass PickFirstLoadBalancingConfig {\n constructor(shuffleAddressList) {\n this.shuffleAddressList = shuffleAddressList;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n return {\n [TYPE_NAME]: {\n shuffleAddressList: this.shuffleAddressList,\n },\n };\n }\n getShuffleAddressList() {\n return this.shuffleAddressList;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n if ('shuffleAddressList' in obj &&\n !(typeof obj.shuffleAddressList === 'boolean')) {\n throw new Error('pick_first config field shuffleAddressList must be a boolean if provided');\n }\n return new PickFirstLoadBalancingConfig(obj.shuffleAddressList === true);\n }\n}\nexports.PickFirstLoadBalancingConfig = PickFirstLoadBalancingConfig;\n/**\n * Picker for a `PickFirstLoadBalancer` in the READY state. Always returns the\n * picked subchannel.\n */\nclass PickFirstPicker {\n constructor(subchannel) {\n this.subchannel = subchannel;\n }\n pick(pickArgs) {\n return {\n pickResultType: picker_1.PickResultType.COMPLETE,\n subchannel: this.subchannel,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\n/**\n * Return a new array with the elements of the input array in a random order\n * @param list The input array\n * @returns A shuffled array of the elements of list\n */\nfunction shuffled(list) {\n const result = list.slice();\n for (let i = result.length - 1; i > 1; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = result[i];\n result[i] = result[j];\n result[j] = temp;\n }\n return result;\n}\nexports.shuffled = shuffled;\n/**\n * Interleave addresses in addressList by family in accordance with RFC-8304 section 4\n * @param addressList\n * @returns\n */\nfunction interleaveAddressFamilies(addressList) {\n const result = [];\n const ipv6Addresses = [];\n const ipv4Addresses = [];\n const ipv6First = (0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && (0, net_1.isIPv6)(addressList[0].host);\n for (const address of addressList) {\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address) && (0, net_1.isIPv6)(address.host)) {\n ipv6Addresses.push(address);\n }\n else {\n ipv4Addresses.push(address);\n }\n }\n const firstList = ipv6First ? ipv6Addresses : ipv4Addresses;\n const secondList = ipv6First ? ipv4Addresses : ipv6Addresses;\n for (let i = 0; i < Math.max(firstList.length, secondList.length); i++) {\n if (i < firstList.length) {\n result.push(firstList[i]);\n }\n if (i < secondList.length) {\n result.push(secondList[i]);\n }\n }\n return result;\n}\nconst REPORT_HEALTH_STATUS_OPTION_NAME = 'grpc-node.internal.pick-first.report_health_status';\nclass PickFirstLoadBalancer {\n /**\n * Load balancer that attempts to connect to each backend in the address list\n * in order, and picks the first one that connects, using it for every\n * request.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n */\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n /**\n * The list of subchannels this load balancer is currently attempting to\n * connect to.\n */\n this.children = [];\n /**\n * The current connectivity state of the load balancer.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The index within the `subchannels` array of the subchannel with the most\n * recently started connection attempt.\n */\n this.currentSubchannelIndex = 0;\n /**\n * The currently picked subchannel used for making calls. Populated if\n * and only if the load balancer's current state is READY. In that case,\n * the subchannel's current state is also READY.\n */\n this.currentPick = null;\n /**\n * Listener callback attached to each subchannel in the `subchannels` list\n * while establishing a connection.\n */\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime, errorMessage) => {\n this.onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage);\n };\n this.pickedSubchannelHealthListener = () => this.calculateAndReportNewState();\n this.triedAllSubchannels = false;\n /**\n * The LB policy enters sticky TRANSIENT_FAILURE mode when all\n * subchannels have failed to connect at least once, and it stays in that\n * mode until a connection attempt is successful. While in sticky TF mode,\n * the LB policy continuously attempts to connect to all of its subchannels.\n */\n this.stickyTransientFailureMode = false;\n /**\n * Indicates whether we called channelControlHelper.requestReresolution since\n * the last call to updateAddressList\n */\n this.requestedResolutionSinceLastUpdate = false;\n /**\n * The most recent error reported by any subchannel as it transitioned to\n * TRANSIENT_FAILURE.\n */\n this.lastError = null;\n this.latestAddressList = null;\n this.connectionDelayTimeout = setTimeout(() => { }, 0);\n clearTimeout(this.connectionDelayTimeout);\n this.reportHealthStatus = options[REPORT_HEALTH_STATUS_OPTION_NAME];\n }\n allChildrenHaveReportedTF() {\n return this.children.every(child => child.hasReportedTransientFailure);\n }\n calculateAndReportNewState() {\n if (this.currentPick) {\n if (this.reportHealthStatus && !this.currentPick.isHealthy()) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `Picked subchannel ${this.currentPick.getAddress()} is unhealthy`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.READY, new PickFirstPicker(this.currentPick));\n }\n }\n else if (this.children.length === 0) {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n else {\n if (this.stickyTransientFailureMode) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `No connection established. Last error: ${this.lastError}`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n }\n }\n requestReresolution() {\n this.requestedResolutionSinceLastUpdate = true;\n this.channelControlHelper.requestReresolution();\n }\n maybeEnterStickyTransientFailureMode() {\n if (!this.allChildrenHaveReportedTF()) {\n return;\n }\n if (!this.requestedResolutionSinceLastUpdate) {\n /* Each time we get an update we reset each subchannel's\n * hasReportedTransientFailure flag, so the next time we get to this\n * point after that, each subchannel has reported TRANSIENT_FAILURE\n * at least once since then. That is the trigger for requesting\n * reresolution, whether or not the LB policy is already in sticky TF\n * mode. */\n this.requestReresolution();\n }\n if (this.stickyTransientFailureMode) {\n return;\n }\n this.stickyTransientFailureMode = true;\n for (const { subchannel } of this.children) {\n subchannel.startConnecting();\n }\n this.calculateAndReportNewState();\n }\n removeCurrentPick() {\n if (this.currentPick !== null) {\n /* Unref can cause a state change, which can cause a change in the value\n * of this.currentPick, so we hold a local reference to make sure that\n * does not impact this function. */\n const currentPick = this.currentPick;\n this.currentPick = null;\n currentPick.unref();\n currentPick.removeConnectivityStateListener(this.subchannelStateListener);\n this.channelControlHelper.removeChannelzChild(currentPick.getChannelzRef());\n if (this.reportHealthStatus) {\n currentPick.removeHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n }\n }\n onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage) {\n var _a;\n if ((_a = this.currentPick) === null || _a === void 0 ? void 0 : _a.realSubchannelEquals(subchannel)) {\n if (newState !== connectivity_state_1.ConnectivityState.READY) {\n this.removeCurrentPick();\n this.calculateAndReportNewState();\n this.requestReresolution();\n }\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (subchannel.realSubchannelEquals(child.subchannel)) {\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(child.subchannel);\n }\n if (newState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n if (errorMessage) {\n this.lastError = errorMessage;\n }\n this.maybeEnterStickyTransientFailureMode();\n if (index === this.currentSubchannelIndex) {\n this.startNextSubchannelConnecting(index + 1);\n }\n }\n child.subchannel.startConnecting();\n return;\n }\n }\n }\n startNextSubchannelConnecting(startIndex) {\n clearTimeout(this.connectionDelayTimeout);\n if (this.triedAllSubchannels) {\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (index >= startIndex) {\n const subchannelState = child.subchannel.getConnectivityState();\n if (subchannelState === connectivity_state_1.ConnectivityState.IDLE ||\n subchannelState === connectivity_state_1.ConnectivityState.CONNECTING) {\n this.startConnecting(index);\n return;\n }\n }\n }\n this.triedAllSubchannels = true;\n this.maybeEnterStickyTransientFailureMode();\n }\n /**\n * Have a single subchannel in the `subchannels` list start connecting.\n * @param subchannelIndex The index into the `subchannels` list.\n */\n startConnecting(subchannelIndex) {\n var _a, _b;\n clearTimeout(this.connectionDelayTimeout);\n this.currentSubchannelIndex = subchannelIndex;\n if (this.children[subchannelIndex].subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.IDLE) {\n trace('Start connecting to subchannel with address ' +\n this.children[subchannelIndex].subchannel.getAddress());\n process.nextTick(() => {\n var _a;\n (_a = this.children[subchannelIndex]) === null || _a === void 0 ? void 0 : _a.subchannel.startConnecting();\n });\n }\n this.connectionDelayTimeout = setTimeout(() => {\n this.startNextSubchannelConnecting(subchannelIndex + 1);\n }, CONNECTION_DELAY_INTERVAL_MS);\n (_b = (_a = this.connectionDelayTimeout).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n pickSubchannel(subchannel) {\n if (this.currentPick && subchannel.realSubchannelEquals(this.currentPick)) {\n return;\n }\n trace('Pick subchannel with address ' + subchannel.getAddress());\n this.stickyTransientFailureMode = false;\n this.removeCurrentPick();\n this.currentPick = subchannel;\n subchannel.ref();\n if (this.reportHealthStatus) {\n subchannel.addHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n this.resetSubchannelList();\n clearTimeout(this.connectionDelayTimeout);\n this.calculateAndReportNewState();\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n if (!(this.currentPick &&\n child.subchannel.realSubchannelEquals(this.currentPick))) {\n /* The connectivity state listener is the same whether the subchannel\n * is in the list of children or it is the currentPick, so if it is in\n * both, removing it here would cause problems. In particular, that\n * always happens immediately after the subchannel is picked. */\n child.subchannel.removeConnectivityStateListener(this.subchannelStateListener);\n }\n /* Refs are counted independently for the children list and the\n * currentPick, so we call unref whether or not the child is the\n * currentPick. Channelz child references are also refcounted, so\n * removeChannelzChild can be handled the same way. */\n child.subchannel.unref();\n this.channelControlHelper.removeChannelzChild(child.subchannel.getChannelzRef());\n }\n this.currentSubchannelIndex = 0;\n this.children = [];\n this.triedAllSubchannels = false;\n this.requestedResolutionSinceLastUpdate = false;\n }\n connectToAddressList(addressList) {\n const newChildrenList = addressList.map(address => ({\n subchannel: this.channelControlHelper.createSubchannel(address, {}),\n hasReportedTransientFailure: false,\n }));\n /* Ref each subchannel before resetting the list, to ensure that\n * subchannels shared between the list don't drop to 0 refs during the\n * transition. */\n for (const { subchannel } of newChildrenList) {\n subchannel.ref();\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n }\n this.resetSubchannelList();\n this.children = newChildrenList;\n for (const { subchannel } of this.children) {\n subchannel.addConnectivityStateListener(this.subchannelStateListener);\n if (subchannel.getConnectivityState() === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(subchannel);\n return;\n }\n }\n for (const child of this.children) {\n if (child.subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n }\n }\n this.startNextSubchannelConnecting(0);\n this.calculateAndReportNewState();\n }\n updateAddressList(endpointList, lbConfig) {\n if (!(lbConfig instanceof PickFirstLoadBalancingConfig)) {\n return;\n }\n /* Previously, an update would be discarded if it was identical to the\n * previous update, to minimize churn. Now the DNS resolver is\n * rate-limited, so that is less of a concern. */\n if (lbConfig.getShuffleAddressList()) {\n endpointList = shuffled(endpointList);\n }\n const rawAddressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (rawAddressList.length === 0) {\n throw new Error('No addresses in endpoint list passed to pick_first');\n }\n const addressList = interleaveAddressFamilies(rawAddressList);\n this.latestAddressList = addressList;\n this.connectToAddressList(addressList);\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE &&\n this.latestAddressList) {\n this.connectToAddressList(this.latestAddressList);\n }\n }\n resetBackoff() {\n /* The pick first load balancer does not have a connection backoff, so this\n * does nothing */\n }\n destroy() {\n this.resetSubchannelList();\n this.removeCurrentPick();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.PickFirstLoadBalancer = PickFirstLoadBalancer;\nconst LEAF_CONFIG = new PickFirstLoadBalancingConfig(false);\n/**\n * This class handles the leaf load balancing operations for a single endpoint.\n * It is a thin wrapper around a PickFirstLoadBalancer with a different API\n * that more closely reflects how it will be used as a leaf balancer.\n */\nclass LeafLoadBalancer {\n constructor(endpoint, channelControlHelper, options) {\n this.endpoint = endpoint;\n this.latestState = connectivity_state_1.ConnectivityState.IDLE;\n const childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.latestState = connectivityState;\n this.latestPicker = picker;\n channelControlHelper.updateState(connectivityState, picker);\n },\n });\n this.pickFirstBalancer = new PickFirstLoadBalancer(childChannelControlHelper, Object.assign(Object.assign({}, options), { [REPORT_HEALTH_STATUS_OPTION_NAME]: true }));\n this.latestPicker = new picker_1.QueuePicker(this.pickFirstBalancer);\n }\n startConnecting() {\n this.pickFirstBalancer.updateAddressList([this.endpoint], LEAF_CONFIG);\n }\n /**\n * Update the endpoint associated with this LeafLoadBalancer to a new\n * endpoint. Does not trigger connection establishment if a connection\n * attempt is not already in progress.\n * @param newEndpoint\n */\n updateEndpoint(newEndpoint) {\n this.endpoint = newEndpoint;\n if (this.latestState !== connectivity_state_1.ConnectivityState.IDLE) {\n this.startConnecting();\n }\n }\n getConnectivityState() {\n return this.latestState;\n }\n getPicker() {\n return this.latestPicker;\n }\n getEndpoint() {\n return this.endpoint;\n }\n exitIdle() {\n this.pickFirstBalancer.exitIdle();\n }\n destroy() {\n this.pickFirstBalancer.destroy();\n }\n}\nexports.LeafLoadBalancer = LeafLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, PickFirstLoadBalancer, PickFirstLoadBalancingConfig);\n (0, load_balancer_1.registerDefaultLoadBalancerType)(TYPE_NAME);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-pick-first.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.RoundRobinLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nconst TRACER_NAME = 'round_robin';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'round_robin';\nclass RoundRobinLoadBalancingConfig {\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n constructor() { }\n toJsonObject() {\n return {\n [TYPE_NAME]: {},\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n return new RoundRobinLoadBalancingConfig();\n }\n}\nclass RoundRobinPicker {\n constructor(children, nextIndex = 0) {\n this.children = children;\n this.nextIndex = nextIndex;\n }\n pick(pickArgs) {\n const childPicker = this.children[this.nextIndex].picker;\n this.nextIndex = (this.nextIndex + 1) % this.children.length;\n return childPicker.pick(pickArgs);\n }\n /**\n * Check what the next subchannel returned would be. Used by the load\n * balancer implementation to preserve this part of the picker state if\n * possible when a subchannel connects or disconnects.\n */\n peekNextEndpoint() {\n return this.children[this.nextIndex].endpoint;\n }\n}\nclass RoundRobinLoadBalancer {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.children = [];\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentReadyPicker = null;\n this.updatesPaused = false;\n this.lastError = null;\n this.childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.calculateAndUpdateState();\n },\n });\n }\n countChildrenWithState(state) {\n return this.children.filter(child => child.getConnectivityState() === state)\n .length;\n }\n calculateAndUpdateState() {\n if (this.updatesPaused) {\n return;\n }\n if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.READY) > 0) {\n const readyChildren = this.children.filter(child => child.getConnectivityState() === connectivity_state_1.ConnectivityState.READY);\n let index = 0;\n if (this.currentReadyPicker !== null) {\n const nextPickedEndpoint = this.currentReadyPicker.peekNextEndpoint();\n index = readyChildren.findIndex(child => (0, subchannel_address_1.endpointEqual)(child.getEndpoint(), nextPickedEndpoint));\n if (index < 0) {\n index = 0;\n }\n }\n this.updateState(connectivity_state_1.ConnectivityState.READY, new RoundRobinPicker(readyChildren.map(child => ({\n endpoint: child.getEndpoint(),\n picker: child.getPicker(),\n })), index));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.CONNECTING) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `No connection established. Last error: ${this.lastError}`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n /* round_robin should keep all children connected, this is how we do that.\n * We can't do this more efficiently in the individual child's updateState\n * callback because that doesn't have a reference to which child the state\n * change is associated with. */\n for (const child of this.children) {\n if (child.getConnectivityState() === connectivity_state_1.ConnectivityState.IDLE) {\n child.exitIdle();\n }\n }\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.currentReadyPicker = picker;\n }\n else {\n this.currentReadyPicker = null;\n }\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n child.destroy();\n }\n }\n updateAddressList(endpointList, lbConfig) {\n this.resetSubchannelList();\n trace('Connect to endpoint list ' + endpointList.map(subchannel_address_1.endpointToString));\n this.updatesPaused = true;\n this.children = endpointList.map(endpoint => new load_balancer_pick_first_1.LeafLoadBalancer(endpoint, this.childChannelControlHelper, this.options));\n for (const child of this.children) {\n child.startConnecting();\n }\n this.updatesPaused = false;\n this.calculateAndUpdateState();\n }\n exitIdle() {\n /* The round_robin LB policy is only in the IDLE state if it has no\n * addresses to try to connect to and it has no picked subchannel.\n * In that case, there is no meaningful action that can be taken here. */\n }\n resetBackoff() {\n // This LB policy has no backoff to reset\n }\n destroy() {\n this.resetSubchannelList();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.RoundRobinLoadBalancer = RoundRobinLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, RoundRobinLoadBalancer, RoundRobinLoadBalancingConfig);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-round-robin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectLbConfigFromList = exports.getDefaultConfig = exports.parseLoadBalancingConfig = exports.isLoadBalancerNameRegistered = exports.createLoadBalancer = exports.registerDefaultLoadBalancerType = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\n/**\n * Create a child ChannelControlHelper that overrides some methods of the\n * parent while letting others pass through to the parent unmodified. This\n * allows other code to create these children without needing to know about\n * all of the methods to be passed through.\n * @param parent\n * @param overrides\n */\nfunction createChildChannelControlHelper(parent, overrides) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return {\n createSubchannel: (_b = (_a = overrides.createSubchannel) === null || _a === void 0 ? void 0 : _a.bind(overrides)) !== null && _b !== void 0 ? _b : parent.createSubchannel.bind(parent),\n updateState: (_d = (_c = overrides.updateState) === null || _c === void 0 ? void 0 : _c.bind(overrides)) !== null && _d !== void 0 ? _d : parent.updateState.bind(parent),\n requestReresolution: (_f = (_e = overrides.requestReresolution) === null || _e === void 0 ? void 0 : _e.bind(overrides)) !== null && _f !== void 0 ? _f : parent.requestReresolution.bind(parent),\n addChannelzChild: (_h = (_g = overrides.addChannelzChild) === null || _g === void 0 ? void 0 : _g.bind(overrides)) !== null && _h !== void 0 ? _h : parent.addChannelzChild.bind(parent),\n removeChannelzChild: (_k = (_j = overrides.removeChannelzChild) === null || _j === void 0 ? void 0 : _j.bind(overrides)) !== null && _k !== void 0 ? _k : parent.removeChannelzChild.bind(parent),\n };\n}\nexports.createChildChannelControlHelper = createChildChannelControlHelper;\nconst registeredLoadBalancerTypes = {};\nlet defaultLoadBalancerType = null;\nfunction registerLoadBalancerType(typeName, loadBalancerType, loadBalancingConfigType) {\n registeredLoadBalancerTypes[typeName] = {\n LoadBalancer: loadBalancerType,\n LoadBalancingConfig: loadBalancingConfigType,\n };\n}\nexports.registerLoadBalancerType = registerLoadBalancerType;\nfunction registerDefaultLoadBalancerType(typeName) {\n defaultLoadBalancerType = typeName;\n}\nexports.registerDefaultLoadBalancerType = registerDefaultLoadBalancerType;\nfunction createLoadBalancer(config, channelControlHelper, options) {\n const typeName = config.getLoadBalancerName();\n if (typeName in registeredLoadBalancerTypes) {\n return new registeredLoadBalancerTypes[typeName].LoadBalancer(channelControlHelper, options);\n }\n else {\n return null;\n }\n}\nexports.createLoadBalancer = createLoadBalancer;\nfunction isLoadBalancerNameRegistered(typeName) {\n return typeName in registeredLoadBalancerTypes;\n}\nexports.isLoadBalancerNameRegistered = isLoadBalancerNameRegistered;\nfunction parseLoadBalancingConfig(rawConfig) {\n const keys = Object.keys(rawConfig);\n if (keys.length !== 1) {\n throw new Error('Provided load balancing config has multiple conflicting entries');\n }\n const typeName = keys[0];\n if (typeName in registeredLoadBalancerTypes) {\n try {\n return registeredLoadBalancerTypes[typeName].LoadBalancingConfig.createFromJson(rawConfig[typeName]);\n }\n catch (e) {\n throw new Error(`${typeName}: ${e.message}`);\n }\n }\n else {\n throw new Error(`Unrecognized load balancing config name ${typeName}`);\n }\n}\nexports.parseLoadBalancingConfig = parseLoadBalancingConfig;\nfunction getDefaultConfig() {\n if (!defaultLoadBalancerType) {\n throw new Error('No default load balancer type registered');\n }\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n}\nexports.getDefaultConfig = getDefaultConfig;\nfunction selectLbConfigFromList(configs, fallbackTodefault = false) {\n for (const config of configs) {\n try {\n return parseLoadBalancingConfig(config);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.DEBUG, 'Config parsing failed with error', e.message);\n continue;\n }\n }\n if (fallbackTodefault) {\n if (defaultLoadBalancerType) {\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n}\nexports.selectLbConfigFromList = selectLbConfigFromList;\n//# sourceMappingURL=load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancingCall = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst picker_1 = require(\"./picker\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst http2 = require(\"http2\");\nconst TRACER_NAME = 'load_balancing_call';\nclass LoadBalancingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber) {\n var _a, _b;\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.metadata = null;\n this.listener = null;\n this.onCallEnded = null;\n this.childStartTime = null;\n const splitPath = this.methodName.split('/');\n let serviceName = '';\n /* The standard path format is \"/{serviceName}/{methodName}\", so if we split\n * by '/', the first item should be empty and the second should be the\n * service name */\n if (splitPath.length >= 2) {\n serviceName = splitPath[1];\n }\n const hostname = (_b = (_a = (0, uri_parser_1.splitHostPort)(this.host)) === null || _a === void 0 ? void 0 : _a.host) !== null && _b !== void 0 ? _b : 'localhost';\n /* Currently, call credentials are only allowed on HTTPS connections, so we\n * can assume that the scheme is \"https\" */\n this.serviceUrl = `https://${hostname}/${serviceName}`;\n this.startTime = new Date();\n }\n getDeadlineInfo() {\n var _a, _b;\n const deadlineInfo = [];\n if (this.childStartTime) {\n if (this.childStartTime > this.startTime) {\n if ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getOptions().waitForReady) {\n deadlineInfo.push('wait_for_ready');\n }\n deadlineInfo.push(`LB pick: ${(0, deadline_1.formatDateDifference)(this.startTime, this.childStartTime)}`);\n }\n deadlineInfo.push(...this.child.getDeadlineInfo());\n return deadlineInfo;\n }\n else {\n if ((_b = this.metadata) === null || _b === void 0 ? void 0 : _b.getOptions().waitForReady) {\n deadlineInfo.push('wait_for_ready');\n }\n deadlineInfo.push('Waiting for LB pick');\n }\n return deadlineInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n outputStatus(status, progress) {\n var _a, _b;\n if (!this.ended) {\n this.ended = true;\n this.trace('ended with status: code=' +\n status.code +\n ' details=\"' +\n status.details +\n '\" start time=' +\n this.startTime.toISOString());\n const finalStatus = Object.assign(Object.assign({}, status), { progress });\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(finalStatus);\n (_b = this.onCallEnded) === null || _b === void 0 ? void 0 : _b.call(this, finalStatus.code);\n }\n }\n doPick() {\n var _a, _b;\n if (this.ended) {\n return;\n }\n if (!this.metadata) {\n throw new Error('doPick called before start');\n }\n this.trace('Pick called');\n const finalMetadata = this.metadata.clone();\n const pickResult = this.channel.doPick(finalMetadata, this.callConfig.pickInformation);\n const subchannelString = pickResult.subchannel\n ? '(' +\n pickResult.subchannel.getChannelzRef().id +\n ') ' +\n pickResult.subchannel.getAddress()\n : '' + pickResult.subchannel;\n this.trace('Pick result: ' +\n picker_1.PickResultType[pickResult.pickResultType] +\n ' subchannel: ' +\n subchannelString +\n ' status: ' +\n ((_a = pickResult.status) === null || _a === void 0 ? void 0 : _a.code) +\n ' ' +\n ((_b = pickResult.status) === null || _b === void 0 ? void 0 : _b.details));\n switch (pickResult.pickResultType) {\n case picker_1.PickResultType.COMPLETE:\n this.credentials\n .generateMetadata({ service_url: this.serviceUrl })\n .then(credsMetadata => {\n var _a, _b, _c;\n /* If this call was cancelled (e.g. by the deadline) before\n * metadata generation finished, we shouldn't do anything with\n * it. */\n if (this.ended) {\n this.trace('Credentials metadata generation finished after call ended');\n return;\n }\n finalMetadata.merge(credsMetadata);\n if (finalMetadata.get('authorization').length > 1) {\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: '\"authorization\" metadata cannot have multiple values',\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n }\n if (pickResult.subchannel.getConnectivityState() !==\n connectivity_state_1.ConnectivityState.READY) {\n this.trace('Picked subchannel ' +\n subchannelString +\n ' has state ' +\n connectivity_state_1.ConnectivityState[pickResult.subchannel.getConnectivityState()] +\n ' after getting credentials metadata. Retrying pick');\n this.doPick();\n return;\n }\n if (this.deadline !== Infinity) {\n finalMetadata.set('grpc-timeout', (0, deadline_1.getDeadlineTimeoutString)(this.deadline));\n }\n try {\n this.child = pickResult\n .subchannel.getRealSubchannel()\n .createCall(finalMetadata, this.host, this.methodName, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(metadata);\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.listener.onReceiveMessage(message);\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (status.rstCode ===\n http2.constants.NGHTTP2_REFUSED_STREAM) {\n this.outputStatus(status, 'REFUSED');\n }\n else {\n this.outputStatus(status, 'PROCESSED');\n }\n },\n });\n this.childStartTime = new Date();\n }\n catch (error) {\n this.trace('Failed to start call on picked subchannel ' +\n subchannelString +\n ' with error ' +\n error.message);\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: 'Failed to start HTTP/2 stream with error ' +\n error.message,\n metadata: new metadata_1.Metadata(),\n }, 'NOT_STARTED');\n return;\n }\n (_b = (_a = this.callConfig).onCommitted) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_c = pickResult.onCallStarted) === null || _c === void 0 ? void 0 : _c.call(pickResult);\n this.onCallEnded = pickResult.onCallEnded;\n this.trace('Created child call [' + this.child.getCallNumber() + ']');\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.child.sendMessageWithContext(this.pendingMessage.context, this.pendingMessage.message);\n }\n if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (error) => {\n // We assume the error code isn't 0 (Status.OK)\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(typeof error.code === 'number' ? error.code : constants_1.Status.UNKNOWN, `Getting metadata from plugin failed with error: ${error.message}`);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n });\n break;\n case picker_1.PickResultType.DROP:\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'DROP');\n });\n break;\n case picker_1.PickResultType.TRANSIENT_FAILURE:\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForPick(this);\n }\n else {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'PROCESSED');\n });\n }\n break;\n case picker_1.PickResultType.QUEUE:\n this.channel.queueCallForPick(this);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({ code: status, details: details, metadata: new metadata_1.Metadata() }, 'PROCESSED');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.metadata = metadata;\n this.doPick();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.child.sendMessageWithContext(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n throw new Error('Method not implemented.');\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.LoadBalancingCall = LoadBalancingCall;\n//# sourceMappingURL=load-balancing-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracerEnabled = exports.trace = exports.log = exports.setLoggerVerbosity = exports.setLogger = exports.getLogger = void 0;\nconst constants_1 = require(\"./constants\");\nconst process_1 = require(\"process\");\nconst clientVersion = require('../../package.json').version;\nconst DEFAULT_LOGGER = {\n error: (message, ...optionalParams) => {\n console.error('E ' + message, ...optionalParams);\n },\n info: (message, ...optionalParams) => {\n console.error('I ' + message, ...optionalParams);\n },\n debug: (message, ...optionalParams) => {\n console.error('D ' + message, ...optionalParams);\n },\n};\nlet _logger = DEFAULT_LOGGER;\nlet _logVerbosity = constants_1.LogVerbosity.ERROR;\nconst verbosityString = (_b = (_a = process.env.GRPC_NODE_VERBOSITY) !== null && _a !== void 0 ? _a : process.env.GRPC_VERBOSITY) !== null && _b !== void 0 ? _b : '';\nswitch (verbosityString.toUpperCase()) {\n case 'DEBUG':\n _logVerbosity = constants_1.LogVerbosity.DEBUG;\n break;\n case 'INFO':\n _logVerbosity = constants_1.LogVerbosity.INFO;\n break;\n case 'ERROR':\n _logVerbosity = constants_1.LogVerbosity.ERROR;\n break;\n case 'NONE':\n _logVerbosity = constants_1.LogVerbosity.NONE;\n break;\n default:\n // Ignore any other values\n}\nconst getLogger = () => {\n return _logger;\n};\nexports.getLogger = getLogger;\nconst setLogger = (logger) => {\n _logger = logger;\n};\nexports.setLogger = setLogger;\nconst setLoggerVerbosity = (verbosity) => {\n _logVerbosity = verbosity;\n};\nexports.setLoggerVerbosity = setLoggerVerbosity;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst log = (severity, ...args) => {\n let logFunction;\n if (severity >= _logVerbosity) {\n switch (severity) {\n case constants_1.LogVerbosity.DEBUG:\n logFunction = _logger.debug;\n break;\n case constants_1.LogVerbosity.INFO:\n logFunction = _logger.info;\n break;\n case constants_1.LogVerbosity.ERROR:\n logFunction = _logger.error;\n break;\n }\n /* Fall back to _logger.error when other methods are not available for\n * compatiblity with older behavior that always logged to _logger.error */\n if (!logFunction) {\n logFunction = _logger.error;\n }\n if (logFunction) {\n logFunction.bind(_logger)(...args);\n }\n }\n};\nexports.log = log;\nconst tracersString = (_d = (_c = process.env.GRPC_NODE_TRACE) !== null && _c !== void 0 ? _c : process.env.GRPC_TRACE) !== null && _d !== void 0 ? _d : '';\nconst enabledTracers = new Set();\nconst disabledTracers = new Set();\nfor (const tracerName of tracersString.split(',')) {\n if (tracerName.startsWith('-')) {\n disabledTracers.add(tracerName.substring(1));\n }\n else {\n enabledTracers.add(tracerName);\n }\n}\nconst allEnabled = enabledTracers.has('all');\nfunction trace(severity, tracer, text) {\n if (isTracerEnabled(tracer)) {\n (0, exports.log)(severity, new Date().toISOString() +\n ' | v' +\n clientVersion +\n ' ' +\n process_1.pid +\n ' | ' +\n tracer +\n ' | ' +\n text);\n }\n}\nexports.trace = trace;\nfunction isTracerEnabled(tracer) {\n return (!disabledTracers.has(tracer) && (allEnabled || enabledTracers.has(tracer)));\n}\nexports.isTracerEnabled = isTracerEnabled;\n//# sourceMappingURL=logging.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadPackageDefinition = exports.makeClientConstructor = void 0;\nconst client_1 = require(\"./client\");\n/**\n * Map with short names for each of the requester maker functions. Used in\n * makeClientConstructor\n * @private\n */\nconst requesterFuncs = {\n unary: client_1.Client.prototype.makeUnaryRequest,\n server_stream: client_1.Client.prototype.makeServerStreamRequest,\n client_stream: client_1.Client.prototype.makeClientStreamRequest,\n bidi: client_1.Client.prototype.makeBidiStreamRequest,\n};\n/**\n * Returns true, if given key is included in the blacklisted\n * keys.\n * @param key key for check, string.\n */\nfunction isPrototypePolluted(key) {\n return ['__proto__', 'prototype', 'constructor'].includes(key);\n}\n/**\n * Creates a constructor for a client with the given methods, as specified in\n * the methods argument. The resulting class will have an instance method for\n * each method in the service, which is a partial application of one of the\n * [Client]{@link grpc.Client} request methods, depending on `requestSerialize`\n * and `responseSerialize`, with the `method`, `serialize`, and `deserialize`\n * arguments predefined.\n * @param methods An object mapping method names to\n * method attributes\n * @param serviceName The fully qualified name of the service\n * @param classOptions An options object.\n * @return New client constructor, which is a subclass of\n * {@link grpc.Client}, and has the same arguments as that constructor.\n */\nfunction makeClientConstructor(methods, serviceName, classOptions) {\n if (!classOptions) {\n classOptions = {};\n }\n class ServiceClientImpl extends client_1.Client {\n }\n Object.keys(methods).forEach(name => {\n if (isPrototypePolluted(name)) {\n return;\n }\n const attrs = methods[name];\n let methodType;\n // TODO(murgatroid99): Verify that we don't need this anymore\n if (typeof name === 'string' && name.charAt(0) === '$') {\n throw new Error('Method names cannot start with $');\n }\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'client_stream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'server_stream';\n }\n else {\n methodType = 'unary';\n }\n }\n const serialize = attrs.requestSerialize;\n const deserialize = attrs.responseDeserialize;\n const methodFunc = partial(requesterFuncs[methodType], attrs.path, serialize, deserialize);\n ServiceClientImpl.prototype[name] = methodFunc;\n // Associate all provided attributes with the method\n Object.assign(ServiceClientImpl.prototype[name], attrs);\n if (attrs.originalName && !isPrototypePolluted(attrs.originalName)) {\n ServiceClientImpl.prototype[attrs.originalName] =\n ServiceClientImpl.prototype[name];\n }\n });\n ServiceClientImpl.service = methods;\n ServiceClientImpl.serviceName = serviceName;\n return ServiceClientImpl;\n}\nexports.makeClientConstructor = makeClientConstructor;\nfunction partial(fn, path, serialize, deserialize) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (...args) {\n return fn.call(this, path, serialize, deserialize, ...args);\n };\n}\nfunction isProtobufTypeDefinition(obj) {\n return 'format' in obj;\n}\n/**\n * Load a gRPC package definition as a gRPC object hierarchy.\n * @param packageDef The package definition object.\n * @return The resulting gRPC object.\n */\nfunction loadPackageDefinition(packageDef) {\n const result = {};\n for (const serviceFqn in packageDef) {\n if (Object.prototype.hasOwnProperty.call(packageDef, serviceFqn)) {\n const service = packageDef[serviceFqn];\n const nameComponents = serviceFqn.split('.');\n if (nameComponents.some((comp) => isPrototypePolluted(comp))) {\n continue;\n }\n const serviceName = nameComponents[nameComponents.length - 1];\n let current = result;\n for (const packageName of nameComponents.slice(0, -1)) {\n if (!current[packageName]) {\n current[packageName] = {};\n }\n current = current[packageName];\n }\n if (isProtobufTypeDefinition(service)) {\n current[serviceName] = service;\n }\n else {\n current[serviceName] = makeClientConstructor(service, serviceName, {});\n }\n }\n }\n return result;\n}\nexports.loadPackageDefinition = loadPackageDefinition;\n//# sourceMappingURL=make-client.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Metadata = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\nconst LEGAL_KEY_REGEX = /^[0-9a-z_.-]+$/;\nconst LEGAL_NON_BINARY_VALUE_REGEX = /^[ -~]*$/;\nfunction isLegalKey(key) {\n return LEGAL_KEY_REGEX.test(key);\n}\nfunction isLegalNonBinaryValue(value) {\n return LEGAL_NON_BINARY_VALUE_REGEX.test(value);\n}\nfunction isBinaryKey(key) {\n return key.endsWith('-bin');\n}\nfunction isCustomMetadata(key) {\n return !key.startsWith('grpc-');\n}\nfunction normalizeKey(key) {\n return key.toLowerCase();\n}\nfunction validate(key, value) {\n if (!isLegalKey(key)) {\n throw new Error('Metadata key \"' + key + '\" contains illegal characters');\n }\n if (value !== null && value !== undefined) {\n if (isBinaryKey(key)) {\n if (!Buffer.isBuffer(value)) {\n throw new Error(\"keys that end with '-bin' must have Buffer values\");\n }\n }\n else {\n if (Buffer.isBuffer(value)) {\n throw new Error(\"keys that don't end with '-bin' must have String values\");\n }\n if (!isLegalNonBinaryValue(value)) {\n throw new Error('Metadata string value \"' + value + '\" contains illegal characters');\n }\n }\n }\n}\n/**\n * A class for storing metadata. Keys are normalized to lowercase ASCII.\n */\nclass Metadata {\n constructor(options = {}) {\n this.internalRepr = new Map();\n this.options = options;\n }\n /**\n * Sets the given value for the given key by replacing any other values\n * associated with that key. Normalizes the key.\n * @param key The key to whose value should be set.\n * @param value The value to set. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n set(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n this.internalRepr.set(key, [value]);\n }\n /**\n * Adds the given value for the given key by appending to a list of previous\n * values associated with that key. Normalizes the key.\n * @param key The key for which a new value should be appended.\n * @param value The value to add. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n add(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n const existingValue = this.internalRepr.get(key);\n if (existingValue === undefined) {\n this.internalRepr.set(key, [value]);\n }\n else {\n existingValue.push(value);\n }\n }\n /**\n * Removes the given key and any associated values. Normalizes the key.\n * @param key The key whose values should be removed.\n */\n remove(key) {\n key = normalizeKey(key);\n // validate(key);\n this.internalRepr.delete(key);\n }\n /**\n * Gets a list of all values associated with the key. Normalizes the key.\n * @param key The key whose value should be retrieved.\n * @return A list of values associated with the given key.\n */\n get(key) {\n key = normalizeKey(key);\n // validate(key);\n return this.internalRepr.get(key) || [];\n }\n /**\n * Gets a plain object mapping each key to the first value associated with it.\n * This reflects the most common way that people will want to see metadata.\n * @return A key/value mapping of the metadata.\n */\n getMap() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n if (values.length > 0) {\n const v = values[0];\n result[key] = Buffer.isBuffer(v) ? Buffer.from(v) : v;\n }\n }\n return result;\n }\n /**\n * Clones the metadata object.\n * @return The newly cloned object.\n */\n clone() {\n const newMetadata = new Metadata(this.options);\n const newInternalRepr = newMetadata.internalRepr;\n for (const [key, value] of this.internalRepr) {\n const clonedValue = value.map(v => {\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n else {\n return v;\n }\n });\n newInternalRepr.set(key, clonedValue);\n }\n return newMetadata;\n }\n /**\n * Merges all key-value pairs from a given Metadata object into this one.\n * If both this object and the given object have values in the same key,\n * values from the other Metadata object will be appended to this object's\n * values.\n * @param other A Metadata object.\n */\n merge(other) {\n for (const [key, values] of other.internalRepr) {\n const mergedValue = (this.internalRepr.get(key) || []).concat(values);\n this.internalRepr.set(key, mergedValue);\n }\n }\n setOptions(options) {\n this.options = options;\n }\n getOptions() {\n return this.options;\n }\n /**\n * Creates an OutgoingHttpHeaders object that can be used with the http2 API.\n */\n toHttp2Headers() {\n // NOTE: Node <8.9 formats http2 headers incorrectly.\n const result = {};\n for (const [key, values] of this.internalRepr) {\n // We assume that the user's interaction with this object is limited to\n // through its public API (i.e. keys and values are already validated).\n result[key] = values.map(bufToString);\n }\n return result;\n }\n /**\n * This modifies the behavior of JSON.stringify to show an object\n * representation of the metadata map.\n */\n toJSON() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n result[key] = values;\n }\n return result;\n }\n /**\n * Returns a new Metadata object based fields in a given IncomingHttpHeaders\n * object.\n * @param headers An IncomingHttpHeaders object.\n */\n static fromHttp2Headers(headers) {\n const result = new Metadata();\n for (const key of Object.keys(headers)) {\n // Reserved headers (beginning with `:`) are not valid keys.\n if (key.charAt(0) === ':') {\n continue;\n }\n const values = headers[key];\n try {\n if (isBinaryKey(key)) {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, Buffer.from(value, 'base64'));\n });\n }\n else if (values !== undefined) {\n if (isCustomMetadata(key)) {\n values.split(',').forEach(v => {\n result.add(key, Buffer.from(v.trim(), 'base64'));\n });\n }\n else {\n result.add(key, Buffer.from(values, 'base64'));\n }\n }\n }\n else {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, value);\n });\n }\n else if (values !== undefined) {\n result.add(key, values);\n }\n }\n }\n catch (error) {\n const message = `Failed to add metadata entry ${key}: ${values}. ${(0, error_1.getErrorMessage)(error)}. For more information see https://github.com/grpc/grpc-node/issues/1173`;\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, message);\n }\n }\n return result;\n }\n}\nexports.Metadata = Metadata;\nconst bufToString = (val) => {\n return Buffer.isBuffer(val) ? val.toString('base64') : val;\n};\n//# sourceMappingURL=metadata.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueuePicker = exports.UnavailablePicker = exports.PickResultType = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nvar PickResultType;\n(function (PickResultType) {\n PickResultType[PickResultType[\"COMPLETE\"] = 0] = \"COMPLETE\";\n PickResultType[PickResultType[\"QUEUE\"] = 1] = \"QUEUE\";\n PickResultType[PickResultType[\"TRANSIENT_FAILURE\"] = 2] = \"TRANSIENT_FAILURE\";\n PickResultType[PickResultType[\"DROP\"] = 3] = \"DROP\";\n})(PickResultType || (exports.PickResultType = PickResultType = {}));\n/**\n * A standard picker representing a load balancer in the TRANSIENT_FAILURE\n * state. Always responds to every pick request with an UNAVAILABLE status.\n */\nclass UnavailablePicker {\n constructor(status) {\n this.status = Object.assign({ code: constants_1.Status.UNAVAILABLE, details: 'No connection established', metadata: new metadata_1.Metadata() }, status);\n }\n pick(pickArgs) {\n return {\n pickResultType: PickResultType.TRANSIENT_FAILURE,\n subchannel: null,\n status: this.status,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\nexports.UnavailablePicker = UnavailablePicker;\n/**\n * A standard picker representing a load balancer in the IDLE or CONNECTING\n * state. Always responds to every pick request with a QUEUE pick result\n * indicating that the pick should be tried again with the next `Picker`. Also\n * reports back to the load balancer that a connection should be established\n * once any pick is attempted.\n * If the childPicker is provided, delegate to it instead of returning the\n * hardcoded QUEUE pick result, but still calls exitIdle.\n */\nclass QueuePicker {\n // Constructed with a load balancer. Calls exitIdle on it the first time pick is called\n constructor(loadBalancer, childPicker) {\n this.loadBalancer = loadBalancer;\n this.childPicker = childPicker;\n this.calledExitIdle = false;\n }\n pick(pickArgs) {\n if (!this.calledExitIdle) {\n process.nextTick(() => {\n this.loadBalancer.exitIdle();\n });\n this.calledExitIdle = true;\n }\n if (this.childPicker) {\n return this.childPicker.pick(pickArgs);\n }\n else {\n return {\n pickResultType: PickResultType.QUEUE,\n subchannel: null,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n }\n}\nexports.QueuePicker = QueuePicker;\n//# sourceMappingURL=picker.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.DEFAULT_PORT = void 0;\nconst resolver_1 = require(\"./resolver\");\nconst dns = require(\"dns\");\nconst util = require(\"util\");\nconst service_config_1 = require(\"./service-config\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net_1 = require(\"net\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst TRACER_NAME = 'dns_resolver';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nexports.DEFAULT_PORT = 443;\nconst DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS = 30000;\nconst resolveTxtPromise = util.promisify(dns.resolveTxt);\nconst dnsLookupPromise = util.promisify(dns.lookup);\n/**\n * Resolver implementation that handles DNS names and IP addresses.\n */\nclass DnsResolver {\n constructor(target, listener, channelOptions) {\n var _a, _b, _c;\n this.target = target;\n this.listener = listener;\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.continueResolving = false;\n this.isNextResolutionTimerRunning = false;\n this.isServiceConfigEnabled = true;\n this.returnedIpResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (hostPort === null) {\n this.ipResult = null;\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n if ((0, net_1.isIPv4)(hostPort.host) || (0, net_1.isIPv6)(hostPort.host)) {\n this.ipResult = [\n {\n addresses: [\n {\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : exports.DEFAULT_PORT,\n },\n ],\n },\n ];\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n this.ipResult = null;\n this.dnsHostname = hostPort.host;\n this.port = (_b = hostPort.port) !== null && _b !== void 0 ? _b : exports.DEFAULT_PORT;\n }\n }\n this.percentage = Math.random() * 100;\n if (channelOptions['grpc.service_config_disable_resolution'] === 1) {\n this.isServiceConfigEnabled = false;\n }\n this.defaultResolutionError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Name resolution failed for target ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n };\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoff = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, backoffOptions);\n this.backoff.unref();\n this.minTimeBetweenResolutionsMs =\n (_c = channelOptions['grpc.dns_min_time_between_resolutions_ms']) !== null && _c !== void 0 ? _c : DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS;\n this.nextResolutionTimer = setTimeout(() => { }, 0);\n clearTimeout(this.nextResolutionTimer);\n }\n /**\n * If the target is an IP address, just provide that address as a result.\n * Otherwise, initiate A, AAAA, and TXT lookups\n */\n startResolution() {\n if (this.ipResult !== null) {\n if (!this.returnedIpResult) {\n trace('Returning IP address for target ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onSuccessfulResolution(this.ipResult, null, null, null, {});\n });\n this.returnedIpResult = true;\n }\n this.backoff.stop();\n this.backoff.reset();\n this.stopNextResolutionTimer();\n return;\n }\n if (this.dnsHostname === null) {\n trace('Failed to parse DNS address ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onError({\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse DNS address ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n });\n });\n this.stopNextResolutionTimer();\n }\n else {\n if (this.pendingLookupPromise !== null) {\n return;\n }\n trace('Looking up DNS hostname ' + this.dnsHostname);\n /* We clear out latestLookupResult here to ensure that it contains the\n * latest result since the last time we started resolving. That way, the\n * TXT resolution handler can use it, but only if it finishes second. We\n * don't clear out any previous service config results because it's\n * better to use a service config that's slightly out of date than to\n * revert to an effectively blank one. */\n this.latestLookupResult = null;\n const hostname = this.dnsHostname;\n /* We lookup both address families here and then split them up later\n * because when looking up a single family, dns.lookup outputs an error\n * if the name exists but there are no records for that family, and that\n * error is indistinguishable from other kinds of errors */\n this.pendingLookupPromise = dnsLookupPromise(hostname, { all: true });\n this.pendingLookupPromise.then(addressList => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n this.pendingLookupPromise = null;\n this.backoff.reset();\n this.backoff.stop();\n const subchannelAddresses = addressList.map(addr => ({ host: addr.address, port: +this.port }));\n this.latestLookupResult = subchannelAddresses.map(address => ({\n addresses: [address],\n }));\n const allAddressesString = '[' +\n subchannelAddresses\n .map(addr => addr.host + ':' + addr.port)\n .join(',') +\n ']';\n trace('Resolved addresses for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n allAddressesString);\n if (this.latestLookupResult.length === 0) {\n this.listener.onError(this.defaultResolutionError);\n return;\n }\n /* If the TXT lookup has not yet finished, both of the last two\n * arguments will be null, which is the equivalent of getting an\n * empty TXT response. When the TXT lookup does finish, its handler\n * can update the service config by using the same address list */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }, err => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n trace('Resolution error for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n err.message);\n this.pendingLookupPromise = null;\n this.stopNextResolutionTimer();\n this.listener.onError(this.defaultResolutionError);\n });\n /* If there already is a still-pending TXT resolution, we can just use\n * that result when it comes in */\n if (this.isServiceConfigEnabled && this.pendingTxtPromise === null) {\n /* We handle the TXT query promise differently than the others because\n * the name resolution attempt as a whole is a success even if the TXT\n * lookup fails */\n this.pendingTxtPromise = resolveTxtPromise(hostname);\n this.pendingTxtPromise.then(txtRecord => {\n if (this.pendingTxtPromise === null) {\n return;\n }\n this.pendingTxtPromise = null;\n try {\n this.latestServiceConfig = (0, service_config_1.extractAndSelectServiceConfig)(txtRecord, this.percentage);\n }\n catch (err) {\n this.latestServiceConfigError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Parsing service config failed with error ${err.message}`,\n metadata: new metadata_1.Metadata(),\n };\n }\n if (this.latestLookupResult !== null) {\n /* We rely here on the assumption that calling this function with\n * identical parameters will be essentialy idempotent, and calling\n * it with the same address list and a different service config\n * should result in a fast and seamless switchover. */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }\n }, err => {\n /* If TXT lookup fails we should do nothing, which means that we\n * continue to use the result of the most recent successful lookup,\n * or the default null config object if there has never been a\n * successful lookup. We do not set the latestServiceConfigError\n * here because that is specifically used for response validation\n * errors. We still need to handle this error so that it does not\n * bubble up as an unhandled promise rejection. */\n });\n }\n }\n }\n startNextResolutionTimer() {\n var _a, _b;\n clearTimeout(this.nextResolutionTimer);\n this.nextResolutionTimer = setTimeout(() => {\n this.stopNextResolutionTimer();\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, this.minTimeBetweenResolutionsMs);\n (_b = (_a = this.nextResolutionTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.isNextResolutionTimerRunning = true;\n }\n stopNextResolutionTimer() {\n clearTimeout(this.nextResolutionTimer);\n this.isNextResolutionTimerRunning = false;\n }\n startResolutionWithBackoff() {\n if (this.pendingLookupPromise === null) {\n this.continueResolving = false;\n this.backoff.runOnce();\n this.startNextResolutionTimer();\n this.startResolution();\n }\n }\n updateResolution() {\n /* If there is a pending lookup, just let it finish. Otherwise, if the\n * nextResolutionTimer or backoff timer is running, set the\n * continueResolving flag to resolve when whichever of those timers\n * fires. Otherwise, start resolving immediately. */\n if (this.pendingLookupPromise === null) {\n if (this.isNextResolutionTimerRunning || this.backoff.isRunning()) {\n if (this.isNextResolutionTimerRunning) {\n trace('resolution update delayed by \"min time between resolutions\" rate limit');\n }\n else {\n trace('resolution update delayed by backoff timer until ' +\n this.backoff.getEndTime().toISOString());\n }\n this.continueResolving = true;\n }\n else {\n this.startResolutionWithBackoff();\n }\n }\n }\n /**\n * Reset the resolver to the same state it had when it was created. In-flight\n * DNS requests cannot be cancelled, but they are discarded and their results\n * will be ignored.\n */\n destroy() {\n this.continueResolving = false;\n this.backoff.reset();\n this.backoff.stop();\n this.stopNextResolutionTimer();\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.returnedIpResult = false;\n }\n /**\n * Get the default authority for the given target. For IP targets, that is\n * the IP address. For DNS targets, it is the hostname.\n * @param target\n */\n static getDefaultAuthority(target) {\n return target.path;\n }\n}\n/**\n * Set up the DNS resolver class by registering it as the handler for the\n * \"dns:\" prefix and as the default resolver.\n */\nfunction setup() {\n (0, resolver_1.registerResolver)('dns', DnsResolver);\n (0, resolver_1.registerDefaultScheme)('dns');\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-dns.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst net_1 = require(\"net\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst resolver_1 = require(\"./resolver\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'ip_resolver';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst IPV4_SCHEME = 'ipv4';\nconst IPV6_SCHEME = 'ipv6';\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nconst DEFAULT_PORT = 443;\nclass IpResolver {\n constructor(target, listener, channelOptions) {\n var _a;\n this.listener = listener;\n this.endpoints = [];\n this.error = null;\n this.hasReturnedResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const addresses = [];\n if (!(target.scheme === IPV4_SCHEME || target.scheme === IPV6_SCHEME)) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Unrecognized scheme ${target.scheme} in IP resolver`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n const pathList = target.path.split(',');\n for (const path of pathList) {\n const hostPort = (0, uri_parser_1.splitHostPort)(path);\n if (hostPort === null) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n if ((target.scheme === IPV4_SCHEME && !(0, net_1.isIPv4)(hostPort.host)) ||\n (target.scheme === IPV6_SCHEME && !(0, net_1.isIPv6)(hostPort.host))) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n addresses.push({\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : DEFAULT_PORT,\n });\n }\n this.endpoints = addresses.map(address => ({ addresses: [address] }));\n trace('Parsed ' + target.scheme + ' address list ' + addresses);\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(() => {\n if (this.error) {\n this.listener.onError(this.error);\n }\n else {\n this.listener.onSuccessfulResolution(this.endpoints, null, null, null, {});\n }\n });\n }\n }\n destroy() {\n this.hasReturnedResult = false;\n }\n static getDefaultAuthority(target) {\n return target.path.split(',')[0];\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)(IPV4_SCHEME, IpResolver);\n (0, resolver_1.registerResolver)(IPV6_SCHEME, IpResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-ip.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst resolver_1 = require(\"./resolver\");\nclass UdsResolver {\n constructor(target, listener, channelOptions) {\n this.listener = listener;\n this.hasReturnedResult = false;\n this.endpoints = [];\n let path;\n if (target.authority === '') {\n path = '/' + target.path;\n }\n else {\n path = target.path;\n }\n this.endpoints = [{ addresses: [{ path }] }];\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(this.listener.onSuccessfulResolution, this.endpoints, null, null, null, {});\n }\n }\n destroy() {\n this.hasReturnedResult = false;\n }\n static getDefaultAuthority(target) {\n return 'localhost';\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)('unix', UdsResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-uds.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapUriDefaultScheme = exports.getDefaultAuthority = exports.createResolver = exports.registerDefaultScheme = exports.registerResolver = void 0;\nconst uri_parser_1 = require(\"./uri-parser\");\nconst registeredResolvers = {};\nlet defaultScheme = null;\n/**\n * Register a resolver class to handle target names prefixed with the `prefix`\n * string. This prefix should correspond to a URI scheme name listed in the\n * [gRPC Name Resolution document](https://github.com/grpc/grpc/blob/master/doc/naming.md)\n * @param prefix\n * @param resolverClass\n */\nfunction registerResolver(scheme, resolverClass) {\n registeredResolvers[scheme] = resolverClass;\n}\nexports.registerResolver = registerResolver;\n/**\n * Register a default resolver to handle target names that do not start with\n * any registered prefix.\n * @param resolverClass\n */\nfunction registerDefaultScheme(scheme) {\n defaultScheme = scheme;\n}\nexports.registerDefaultScheme = registerDefaultScheme;\n/**\n * Create a name resolver for the specified target, if possible. Throws an\n * error if no such name resolver can be created.\n * @param target\n * @param listener\n */\nfunction createResolver(target, listener, options) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return new registeredResolvers[target.scheme](target, listener, options);\n }\n else {\n throw new Error(`No resolver could be created for target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.createResolver = createResolver;\n/**\n * Get the default authority for the specified target, if possible. Throws an\n * error if no registered name resolver can parse that target string.\n * @param target\n */\nfunction getDefaultAuthority(target) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return registeredResolvers[target.scheme].getDefaultAuthority(target);\n }\n else {\n throw new Error(`Invalid target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.getDefaultAuthority = getDefaultAuthority;\nfunction mapUriDefaultScheme(target) {\n if (target.scheme === undefined || !(target.scheme in registeredResolvers)) {\n if (defaultScheme !== null) {\n return {\n scheme: defaultScheme,\n authority: undefined,\n path: (0, uri_parser_1.uriToString)(target),\n };\n }\n else {\n return null;\n }\n }\n return target;\n}\nexports.mapUriDefaultScheme = mapUriDefaultScheme;\n//# sourceMappingURL=resolver.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingCall = void 0;\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst TRACER_NAME = 'resolving_call';\nclass ResolvingCall {\n constructor(channel, method, options, filterStackFactory, credentials, callNumber) {\n this.channel = channel;\n this.method = method;\n this.filterStackFactory = filterStackFactory;\n this.credentials = credentials;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.readFilterPending = false;\n this.writeFilterPending = false;\n this.pendingChildStatus = null;\n this.metadata = null;\n this.listener = null;\n this.statusWatchers = [];\n this.deadlineTimer = setTimeout(() => { }, 0);\n this.filterStack = null;\n this.deadlineStartTime = null;\n this.configReceivedTime = null;\n this.childStartTime = null;\n this.deadline = options.deadline;\n this.host = options.host;\n if (options.parentCall) {\n if (options.flags & constants_1.Propagate.CANCELLATION) {\n options.parentCall.on('cancelled', () => {\n this.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled by parent call');\n });\n }\n if (options.flags & constants_1.Propagate.DEADLINE) {\n this.trace('Propagating deadline from parent: ' +\n options.parentCall.getDeadline());\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, options.parentCall.getDeadline());\n }\n }\n this.trace('Created');\n this.runDeadlineTimer();\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n runDeadlineTimer() {\n clearTimeout(this.deadlineTimer);\n this.deadlineStartTime = new Date();\n this.trace('Deadline: ' + (0, deadline_1.deadlineToString)(this.deadline));\n const timeout = (0, deadline_1.getRelativeTimeout)(this.deadline);\n if (timeout !== Infinity) {\n this.trace('Deadline will be reached in ' + timeout + 'ms');\n const handleDeadline = () => {\n if (!this.deadlineStartTime) {\n this.cancelWithStatus(constants_1.Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n return;\n }\n const deadlineInfo = [];\n const deadlineEndTime = new Date();\n deadlineInfo.push(`Deadline exceeded after ${(0, deadline_1.formatDateDifference)(this.deadlineStartTime, deadlineEndTime)}`);\n if (this.configReceivedTime) {\n if (this.configReceivedTime > this.deadlineStartTime) {\n deadlineInfo.push(`name resolution: ${(0, deadline_1.formatDateDifference)(this.deadlineStartTime, this.configReceivedTime)}`);\n }\n if (this.childStartTime) {\n if (this.childStartTime > this.configReceivedTime) {\n deadlineInfo.push(`metadata filters: ${(0, deadline_1.formatDateDifference)(this.configReceivedTime, this.childStartTime)}`);\n }\n }\n else {\n deadlineInfo.push('waiting for metadata filters');\n }\n }\n else {\n deadlineInfo.push('waiting for name resolution');\n }\n if (this.child) {\n deadlineInfo.push(...this.child.getDeadlineInfo());\n }\n this.cancelWithStatus(constants_1.Status.DEADLINE_EXCEEDED, deadlineInfo.join(','));\n };\n if (timeout <= 0) {\n process.nextTick(handleDeadline);\n }\n else {\n this.deadlineTimer = setTimeout(handleDeadline, timeout);\n }\n }\n }\n outputStatus(status) {\n if (!this.ended) {\n this.ended = true;\n if (!this.filterStack) {\n this.filterStack = this.filterStackFactory.createFilter();\n }\n clearTimeout(this.deadlineTimer);\n const filteredStatus = this.filterStack.receiveTrailers(status);\n this.trace('ended with status: code=' +\n filteredStatus.code +\n ' details=\"' +\n filteredStatus.details +\n '\"');\n this.statusWatchers.forEach(watcher => watcher(filteredStatus));\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(filteredStatus);\n });\n }\n }\n sendMessageOnChild(context, message) {\n if (!this.child) {\n throw new Error('sendMessageonChild called with child not populated');\n }\n const child = this.child;\n this.writeFilterPending = true;\n this.filterStack.sendMessage(Promise.resolve({ message: message, flags: context.flags })).then(filteredMessage => {\n this.writeFilterPending = false;\n child.sendMessageWithContext(context, filteredMessage.message);\n if (this.pendingHalfClose) {\n child.halfClose();\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n }\n getConfig() {\n if (this.ended) {\n return;\n }\n if (!this.metadata || !this.listener) {\n throw new Error('getConfig called before start');\n }\n const configResult = this.channel.getConfig(this.method, this.metadata);\n if (configResult.type === 'NONE') {\n this.channel.queueCallForConfig(this);\n return;\n }\n else if (configResult.type === 'ERROR') {\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(configResult.error);\n }\n return;\n }\n // configResult.type === 'SUCCESS'\n this.configReceivedTime = new Date();\n const config = configResult.config;\n if (config.status !== constants_1.Status.OK) {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(config.status, 'Failed to route call to method ' + this.method);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n if (config.methodConfig.timeout) {\n const configDeadline = new Date();\n configDeadline.setSeconds(configDeadline.getSeconds() + config.methodConfig.timeout.seconds);\n configDeadline.setMilliseconds(configDeadline.getMilliseconds() +\n config.methodConfig.timeout.nanos / 1000000);\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, configDeadline);\n this.runDeadlineTimer();\n }\n this.filterStackFactory.push(config.dynamicFilterFactories);\n this.filterStack = this.filterStackFactory.createFilter();\n this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then(filteredMetadata => {\n this.child = this.channel.createInnerCall(config, this.method, this.host, this.credentials, this.deadline);\n this.trace('Created child [' + this.child.getCallNumber() + ']');\n this.childStartTime = new Date();\n this.child.start(filteredMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(this.filterStack.receiveMetadata(metadata));\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.readFilterPending = true;\n this.filterStack.receiveMessage(message).then(filteredMesssage => {\n this.trace('Finished filtering received message');\n this.readFilterPending = false;\n this.listener.onReceiveMessage(filteredMesssage);\n if (this.pendingChildStatus) {\n this.outputStatus(this.pendingChildStatus);\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (this.readFilterPending) {\n this.pendingChildStatus = status;\n }\n else {\n this.outputStatus(status);\n }\n },\n });\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.sendMessageOnChild(this.pendingMessage.context, this.pendingMessage.message);\n }\n else if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (status) => {\n this.outputStatus(status);\n });\n }\n reportResolverError(status) {\n var _a;\n if ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(status);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({\n code: status,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.metadata = metadata.clone();\n this.listener = listener;\n this.getConfig();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.sendMessageOnChild(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child && !this.writeFilterPending) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n this.credentials = this.credentials.compose(credentials);\n }\n addStatusWatcher(watcher) {\n this.statusWatchers.push(watcher);\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.ResolvingCall = ResolvingCall;\n//# sourceMappingURL=resolving-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst service_config_1 = require(\"./service-config\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst resolver_1 = require(\"./resolver\");\nconst picker_1 = require(\"./picker\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst TRACER_NAME = 'resolving_load_balancer';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * Name match levels in order from most to least specific. This is the order in\n * which searches will be performed.\n */\nconst NAME_MATCH_LEVEL_ORDER = [\n 'SERVICE_AND_METHOD',\n 'SERVICE',\n 'EMPTY',\n];\nfunction hasMatchingName(service, method, methodConfig, matchLevel) {\n for (const name of methodConfig.name) {\n switch (matchLevel) {\n case 'EMPTY':\n if (!name.service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE':\n if (name.service === service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE_AND_METHOD':\n if (name.service === service && name.method === method) {\n return true;\n }\n }\n }\n return false;\n}\nfunction findMatchingConfig(service, method, methodConfigs, matchLevel) {\n for (const config of methodConfigs) {\n if (hasMatchingName(service, method, config, matchLevel)) {\n return config;\n }\n }\n return null;\n}\nfunction getDefaultConfigSelector(serviceConfig) {\n return function defaultConfigSelector(methodName, metadata) {\n var _a, _b;\n const splitName = methodName.split('/').filter(x => x.length > 0);\n const service = (_a = splitName[0]) !== null && _a !== void 0 ? _a : '';\n const method = (_b = splitName[1]) !== null && _b !== void 0 ? _b : '';\n if (serviceConfig && serviceConfig.methodConfig) {\n /* Check for the following in order, and return the first method\n * config that matches:\n * 1. A name that exactly matches the service and method\n * 2. A name with no method set that matches the service\n * 3. An empty name\n */\n for (const matchLevel of NAME_MATCH_LEVEL_ORDER) {\n const matchingConfig = findMatchingConfig(service, method, serviceConfig.methodConfig, matchLevel);\n if (matchingConfig) {\n return {\n methodConfig: matchingConfig,\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n }\n }\n }\n return {\n methodConfig: { name: [] },\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n };\n}\nclass ResolvingLoadBalancer {\n /**\n * Wrapper class that behaves like a `LoadBalancer` and also handles name\n * resolution internally.\n * @param target The address of the backend to connect to.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n * @param defaultServiceConfig The default service configuration to be used\n * if none is provided by the name resolver. A `null` value indicates\n * that the default behavior should be the default unconfigured behavior.\n * In practice, that means using the \"pick first\" load balancer\n * implmentation\n */\n constructor(target, channelControlHelper, channelOptions, onSuccessfulResolution, onFailedResolution) {\n this.target = target;\n this.channelControlHelper = channelControlHelper;\n this.onSuccessfulResolution = onSuccessfulResolution;\n this.onFailedResolution = onFailedResolution;\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n /**\n * This resolving load balancer's current connectivity state.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The service config object from the last successful resolution, if\n * available. A value of null indicates that we have not yet received a valid\n * service config from the resolver.\n */\n this.previousServiceConfig = null;\n /**\n * Indicates whether we should attempt to resolve again after the backoff\n * timer runs out.\n */\n this.continueResolving = false;\n if (channelOptions['grpc.service_config']) {\n this.defaultServiceConfig = (0, service_config_1.validateServiceConfig)(JSON.parse(channelOptions['grpc.service_config']));\n }\n else {\n this.defaultServiceConfig = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n }\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n this.childLoadBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler({\n createSubchannel: channelControlHelper.createSubchannel.bind(channelControlHelper),\n requestReresolution: () => {\n /* If the backoffTimeout is running, we're still backing off from\n * making resolve requests, so we shouldn't make another one here.\n * In that case, the backoff timer callback will call\n * updateResolution */\n if (this.backoffTimeout.isRunning()) {\n trace('requestReresolution delayed by backoff timer until ' +\n this.backoffTimeout.getEndTime().toISOString());\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n },\n updateState: (newState, picker) => {\n this.latestChildState = newState;\n this.latestChildPicker = picker;\n this.updateState(newState, picker);\n },\n addChannelzChild: channelControlHelper.addChannelzChild.bind(channelControlHelper),\n removeChannelzChild: channelControlHelper.removeChannelzChild.bind(channelControlHelper),\n }, channelOptions);\n this.innerResolver = (0, resolver_1.createResolver)(target, {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError, configSelector, attributes) => {\n var _a;\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n let workingServiceConfig = null;\n /* This first group of conditionals implements the algorithm described\n * in https://github.com/grpc/proposal/blob/master/A21-service-config-error-handling.md\n * in the section called \"Behavior on receiving a new gRPC Config\".\n */\n if (serviceConfig === null) {\n // Step 4 and 5\n if (serviceConfigError === null) {\n // Step 5\n this.previousServiceConfig = null;\n workingServiceConfig = this.defaultServiceConfig;\n }\n else {\n // Step 4\n if (this.previousServiceConfig === null) {\n // Step 4.ii\n this.handleResolutionFailure(serviceConfigError);\n }\n else {\n // Step 4.i\n workingServiceConfig = this.previousServiceConfig;\n }\n }\n }\n else {\n // Step 3\n workingServiceConfig = serviceConfig;\n this.previousServiceConfig = serviceConfig;\n }\n const workingConfigList = (_a = workingServiceConfig === null || workingServiceConfig === void 0 ? void 0 : workingServiceConfig.loadBalancingConfig) !== null && _a !== void 0 ? _a : [];\n const loadBalancingConfig = (0, load_balancer_1.selectLbConfigFromList)(workingConfigList, true);\n if (loadBalancingConfig === null) {\n // There were load balancing configs but none are supported. This counts as a resolution failure\n this.handleResolutionFailure({\n code: constants_1.Status.UNAVAILABLE,\n details: 'All load balancer options in service config are not compatible',\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.childLoadBalancer.updateAddressList(endpointList, loadBalancingConfig, attributes);\n const finalServiceConfig = workingServiceConfig !== null && workingServiceConfig !== void 0 ? workingServiceConfig : this.defaultServiceConfig;\n this.onSuccessfulResolution(finalServiceConfig, configSelector !== null && configSelector !== void 0 ? configSelector : getDefaultConfigSelector(finalServiceConfig));\n },\n onError: (error) => {\n this.handleResolutionFailure(error);\n },\n }, channelOptions);\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.updateResolution();\n this.continueResolving = false;\n }\n else {\n this.updateState(this.latestChildState, this.latestChildPicker);\n }\n }, backoffOptions);\n this.backoffTimeout.unref();\n }\n updateResolution() {\n this.innerResolver.updateResolution();\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE) {\n /* this.latestChildPicker is initialized as new QueuePicker(this), which\n * is an appropriate value here if the child LB policy is unset.\n * Otherwise, we want to delegate to the child here, in case that\n * triggers something. */\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, this.latestChildPicker);\n }\n this.backoffTimeout.runOnce();\n }\n updateState(connectivityState, picker) {\n trace((0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[connectivityState]);\n // Ensure that this.exitIdle() is called by the picker\n if (connectivityState === connectivity_state_1.ConnectivityState.IDLE) {\n picker = new picker_1.QueuePicker(this, picker);\n }\n this.currentState = connectivityState;\n this.channelControlHelper.updateState(connectivityState, picker);\n }\n handleResolutionFailure(error) {\n if (this.latestChildState === connectivity_state_1.ConnectivityState.IDLE) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker(error));\n this.onFailedResolution(error);\n }\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE ||\n this.currentState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n if (this.backoffTimeout.isRunning()) {\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n }\n this.childLoadBalancer.exitIdle();\n }\n updateAddressList(endpointList, lbConfig) {\n throw new Error('updateAddressList not supported on ResolvingLoadBalancer');\n }\n resetBackoff() {\n this.backoffTimeout.reset();\n this.childLoadBalancer.resetBackoff();\n }\n destroy() {\n this.childLoadBalancer.destroy();\n this.innerResolver.destroy();\n this.backoffTimeout.reset();\n this.backoffTimeout.stop();\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.previousServiceConfig = null;\n this.continueResolving = false;\n }\n getTypeName() {\n return 'resolving_load_balancer';\n }\n}\nexports.ResolvingLoadBalancer = ResolvingLoadBalancer;\n//# sourceMappingURL=resolving-load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RetryingCall = exports.MessageBufferTracker = exports.RetryThrottler = void 0;\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'retrying_call';\nclass RetryThrottler {\n constructor(maxTokens, tokenRatio, previousRetryThrottler) {\n this.maxTokens = maxTokens;\n this.tokenRatio = tokenRatio;\n if (previousRetryThrottler) {\n /* When carrying over tokens from a previous config, rescale them to the\n * new max value */\n this.tokens =\n previousRetryThrottler.tokens *\n (maxTokens / previousRetryThrottler.maxTokens);\n }\n else {\n this.tokens = maxTokens;\n }\n }\n addCallSucceeded() {\n this.tokens = Math.max(this.tokens + this.tokenRatio, this.maxTokens);\n }\n addCallFailed() {\n this.tokens = Math.min(this.tokens - 1, 0);\n }\n canRetryCall() {\n return this.tokens > this.maxTokens / 2;\n }\n}\nexports.RetryThrottler = RetryThrottler;\nclass MessageBufferTracker {\n constructor(totalLimit, limitPerCall) {\n this.totalLimit = totalLimit;\n this.limitPerCall = limitPerCall;\n this.totalAllocated = 0;\n this.allocatedPerCall = new Map();\n }\n allocate(size, callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.limitPerCall - currentPerCall < size ||\n this.totalLimit - this.totalAllocated < size) {\n return false;\n }\n this.allocatedPerCall.set(callId, currentPerCall + size);\n this.totalAllocated += size;\n return true;\n }\n free(size, callId) {\n var _a;\n if (this.totalAllocated < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= size;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (currentPerCall < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > allocated for call ${currentPerCall}`);\n }\n this.allocatedPerCall.set(callId, currentPerCall - size);\n }\n freeAll(callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.totalAllocated < currentPerCall) {\n throw new Error(`Invalid buffer allocation state: call ${callId} allocated ${currentPerCall} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= currentPerCall;\n this.allocatedPerCall.delete(callId);\n }\n}\nexports.MessageBufferTracker = MessageBufferTracker;\nconst PREVIONS_RPC_ATTEMPTS_METADATA_KEY = 'grpc-previous-rpc-attempts';\nclass RetryingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber, bufferTracker, retryThrottler) {\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.bufferTracker = bufferTracker;\n this.retryThrottler = retryThrottler;\n this.listener = null;\n this.initialMetadata = null;\n this.underlyingCalls = [];\n this.writeBuffer = [];\n /**\n * The offset of message indices in the writeBuffer. For example, if\n * writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15\n * is in writeBuffer[5].\n */\n this.writeBufferOffset = 0;\n /**\n * Tracks whether a read has been started, so that we know whether to start\n * reads on new child calls. This only matters for the first read, because\n * once a message comes in the child call becomes committed and there will\n * be no new child calls.\n */\n this.readStarted = false;\n this.transparentRetryUsed = false;\n /**\n * Number of attempts so far\n */\n this.attempts = 0;\n this.hedgingTimer = null;\n this.committedCallIndex = null;\n this.initialRetryBackoffSec = 0;\n this.nextRetryBackoffSec = 0;\n if (callConfig.methodConfig.retryPolicy) {\n this.state = 'RETRY';\n const retryPolicy = callConfig.methodConfig.retryPolicy;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec = Number(retryPolicy.initialBackoff.substring(0, retryPolicy.initialBackoff.length - 1));\n }\n else if (callConfig.methodConfig.hedgingPolicy) {\n this.state = 'HEDGING';\n }\n else {\n this.state = 'TRANSPARENT_ONLY';\n }\n this.startTime = new Date();\n }\n getDeadlineInfo() {\n if (this.underlyingCalls.length === 0) {\n return [];\n }\n const deadlineInfo = [];\n const latestCall = this.underlyingCalls[this.underlyingCalls.length - 1];\n if (this.underlyingCalls.length > 1) {\n deadlineInfo.push(`previous attempts: ${this.underlyingCalls.length - 1}`);\n }\n if (latestCall.startTime > this.startTime) {\n deadlineInfo.push(`time to current attempt start: ${(0, deadline_1.formatDateDifference)(this.startTime, latestCall.startTime)}`);\n }\n deadlineInfo.push(...latestCall.call.getDeadlineInfo());\n return deadlineInfo;\n }\n getCallNumber() {\n return this.callNumber;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n reportStatus(statusObject) {\n this.trace('ended with status: code=' +\n statusObject.code +\n ' details=\"' +\n statusObject.details +\n '\" start time=' +\n this.startTime.toISOString());\n this.bufferTracker.freeAll(this.callNumber);\n this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length;\n this.writeBuffer = [];\n process.nextTick(() => {\n var _a;\n // Explicitly construct status object to remove progress field\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus({\n code: statusObject.code,\n details: statusObject.details,\n metadata: statusObject.metadata,\n });\n });\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.reportStatus({ code: status, details, metadata: new metadata_1.Metadata() });\n for (const { call } of this.underlyingCalls) {\n call.cancelWithStatus(status, details);\n }\n }\n getPeer() {\n if (this.committedCallIndex !== null) {\n return this.underlyingCalls[this.committedCallIndex].call.getPeer();\n }\n else {\n return 'unknown';\n }\n }\n getBufferEntry(messageIndex) {\n var _a;\n return ((_a = this.writeBuffer[messageIndex - this.writeBufferOffset]) !== null && _a !== void 0 ? _a : {\n entryType: 'FREED',\n allocated: false,\n });\n }\n getNextBufferIndex() {\n return this.writeBufferOffset + this.writeBuffer.length;\n }\n clearSentMessages() {\n if (this.state !== 'COMMITTED') {\n return;\n }\n const earliestNeededMessageIndex = this.underlyingCalls[this.committedCallIndex].nextMessageToSend;\n for (let messageIndex = this.writeBufferOffset; messageIndex < earliestNeededMessageIndex; messageIndex++) {\n const bufferEntry = this.getBufferEntry(messageIndex);\n if (bufferEntry.allocated) {\n this.bufferTracker.free(bufferEntry.message.message.length, this.callNumber);\n }\n }\n this.writeBuffer = this.writeBuffer.slice(earliestNeededMessageIndex - this.writeBufferOffset);\n this.writeBufferOffset = earliestNeededMessageIndex;\n }\n commitCall(index) {\n if (this.state === 'COMMITTED') {\n return;\n }\n if (this.underlyingCalls[index].state === 'COMPLETED') {\n return;\n }\n this.trace('Committing call [' +\n this.underlyingCalls[index].call.getCallNumber() +\n '] at index ' +\n index);\n this.state = 'COMMITTED';\n this.committedCallIndex = index;\n for (let i = 0; i < this.underlyingCalls.length; i++) {\n if (i === index) {\n continue;\n }\n if (this.underlyingCalls[i].state === 'COMPLETED') {\n continue;\n }\n this.underlyingCalls[i].state = 'COMPLETED';\n this.underlyingCalls[i].call.cancelWithStatus(constants_1.Status.CANCELLED, 'Discarded in favor of other hedged attempt');\n }\n this.clearSentMessages();\n }\n commitCallWithMostMessages() {\n if (this.state === 'COMMITTED') {\n return;\n }\n let mostMessages = -1;\n let callWithMostMessages = -1;\n for (const [index, childCall] of this.underlyingCalls.entries()) {\n if (childCall.state === 'ACTIVE' &&\n childCall.nextMessageToSend > mostMessages) {\n mostMessages = childCall.nextMessageToSend;\n callWithMostMessages = index;\n }\n }\n if (callWithMostMessages === -1) {\n /* There are no active calls, disable retries to force the next call that\n * is started to be committed. */\n this.state = 'TRANSPARENT_ONLY';\n }\n else {\n this.commitCall(callWithMostMessages);\n }\n }\n isStatusCodeInList(list, code) {\n return list.some(value => value === code ||\n value.toString().toLowerCase() === constants_1.Status[code].toLowerCase());\n }\n getNextRetryBackoffMs() {\n var _a;\n const retryPolicy = (_a = this.callConfig) === null || _a === void 0 ? void 0 : _a.methodConfig.retryPolicy;\n if (!retryPolicy) {\n return 0;\n }\n const nextBackoffMs = Math.random() * this.nextRetryBackoffSec * 1000;\n const maxBackoffSec = Number(retryPolicy.maxBackoff.substring(0, retryPolicy.maxBackoff.length - 1));\n this.nextRetryBackoffSec = Math.min(this.nextRetryBackoffSec * retryPolicy.backoffMultiplier, maxBackoffSec);\n return nextBackoffMs;\n }\n maybeRetryCall(pushback, callback) {\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n const retryPolicy = this.callConfig.methodConfig.retryPolicy;\n if (this.attempts >= Math.min(retryPolicy.maxAttempts, 5)) {\n callback(false);\n return;\n }\n let retryDelayMs;\n if (pushback === null) {\n retryDelayMs = this.getNextRetryBackoffMs();\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n callback(false);\n return;\n }\n else {\n retryDelayMs = pushback;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec;\n }\n setTimeout(() => {\n var _a, _b;\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n if ((_b = (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.canRetryCall()) !== null && _b !== void 0 ? _b : true) {\n callback(true);\n this.attempts += 1;\n this.startNewAttempt();\n }\n }, retryDelayMs);\n }\n countActiveCalls() {\n let count = 0;\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE') {\n count += 1;\n }\n }\n return count;\n }\n handleProcessedStatus(status, callIndex, pushback) {\n var _a, _b, _c;\n switch (this.state) {\n case 'COMMITTED':\n case 'TRANSPARENT_ONLY':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'HEDGING':\n if (this.isStatusCodeInList((_a = this.callConfig.methodConfig.hedgingPolicy.nonFatalStatusCodes) !== null && _a !== void 0 ? _a : [], status.code)) {\n (_b = this.retryThrottler) === null || _b === void 0 ? void 0 : _b.addCallFailed();\n let delayMs;\n if (pushback === null) {\n delayMs = 0;\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n else {\n delayMs = pushback;\n }\n setTimeout(() => {\n this.maybeStartHedgingAttempt();\n // If after trying to start a call there are no active calls, this was the last one\n if (this.countActiveCalls() === 0) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n }, delayMs);\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n case 'RETRY':\n if (this.isStatusCodeInList(this.callConfig.methodConfig.retryPolicy.retryableStatusCodes, status.code)) {\n (_c = this.retryThrottler) === null || _c === void 0 ? void 0 : _c.addCallFailed();\n this.maybeRetryCall(pushback, retried => {\n if (!retried) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n });\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n }\n }\n getPushback(metadata) {\n const mdValue = metadata.get('grpc-retry-pushback-ms');\n if (mdValue.length === 0) {\n return null;\n }\n try {\n return parseInt(mdValue[0]);\n }\n catch (e) {\n return -1;\n }\n }\n handleChildStatus(status, callIndex) {\n var _a;\n if (this.underlyingCalls[callIndex].state === 'COMPLETED') {\n return;\n }\n this.trace('state=' +\n this.state +\n ' handling status with progress ' +\n status.progress +\n ' from child [' +\n this.underlyingCalls[callIndex].call.getCallNumber() +\n '] in state ' +\n this.underlyingCalls[callIndex].state);\n this.underlyingCalls[callIndex].state = 'COMPLETED';\n if (status.code === constants_1.Status.OK) {\n (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.addCallSucceeded();\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n if (this.state === 'COMMITTED') {\n this.reportStatus(status);\n return;\n }\n const pushback = this.getPushback(status.metadata);\n switch (status.progress) {\n case 'NOT_STARTED':\n // RPC never leaves the client, always safe to retry\n this.startNewAttempt();\n break;\n case 'REFUSED':\n // RPC reaches the server library, but not the server application logic\n if (this.transparentRetryUsed) {\n this.handleProcessedStatus(status, callIndex, pushback);\n }\n else {\n this.transparentRetryUsed = true;\n this.startNewAttempt();\n }\n break;\n case 'DROP':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'PROCESSED':\n this.handleProcessedStatus(status, callIndex, pushback);\n break;\n }\n }\n maybeStartHedgingAttempt() {\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n maybeStartHedgingTimer() {\n var _a, _b, _c;\n if (this.hedgingTimer) {\n clearTimeout(this.hedgingTimer);\n }\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n const hedgingDelayString = (_a = hedgingPolicy.hedgingDelay) !== null && _a !== void 0 ? _a : '0s';\n const hedgingDelaySec = Number(hedgingDelayString.substring(0, hedgingDelayString.length - 1));\n this.hedgingTimer = setTimeout(() => {\n this.maybeStartHedgingAttempt();\n }, hedgingDelaySec * 1000);\n (_c = (_b = this.hedgingTimer).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n startNewAttempt() {\n const child = this.channel.createLoadBalancingCall(this.callConfig, this.methodName, this.host, this.credentials, this.deadline);\n this.trace('Created child call [' +\n child.getCallNumber() +\n '] for attempt ' +\n this.attempts);\n const index = this.underlyingCalls.length;\n this.underlyingCalls.push({\n state: 'ACTIVE',\n call: child,\n nextMessageToSend: 0,\n startTime: new Date()\n });\n const previousAttempts = this.attempts - 1;\n const initialMetadata = this.initialMetadata.clone();\n if (previousAttempts > 0) {\n initialMetadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n let receivedMetadata = false;\n child.start(initialMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n receivedMetadata = true;\n if (previousAttempts > 0) {\n metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMetadata(metadata);\n }\n },\n onReceiveMessage: message => {\n this.trace('Received message from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMessage(message);\n }\n },\n onReceiveStatus: status => {\n this.trace('Received status from child [' + child.getCallNumber() + ']');\n if (!receivedMetadata && previousAttempts > 0) {\n status.metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n this.handleChildStatus(status, index);\n },\n });\n this.sendNextChildMessage(index);\n if (this.readStarted) {\n child.startRead();\n }\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.initialMetadata = metadata;\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n handleChildWriteCompleted(childIndex) {\n var _a, _b;\n const childCall = this.underlyingCalls[childIndex];\n const messageIndex = childCall.nextMessageToSend;\n (_b = (_a = this.getBufferEntry(messageIndex)).callback) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.clearSentMessages();\n childCall.nextMessageToSend += 1;\n this.sendNextChildMessage(childIndex);\n }\n sendNextChildMessage(childIndex) {\n const childCall = this.underlyingCalls[childIndex];\n if (childCall.state === 'COMPLETED') {\n return;\n }\n if (this.getBufferEntry(childCall.nextMessageToSend)) {\n const bufferEntry = this.getBufferEntry(childCall.nextMessageToSend);\n switch (bufferEntry.entryType) {\n case 'MESSAGE':\n childCall.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(childIndex);\n },\n }, bufferEntry.message.message);\n break;\n case 'HALF_CLOSE':\n childCall.nextMessageToSend += 1;\n childCall.call.halfClose();\n break;\n case 'FREED':\n // Should not be possible\n break;\n }\n }\n }\n sendMessageWithContext(context, message) {\n var _a;\n this.trace('write() called with message of length ' + message.length);\n const writeObj = {\n message,\n flags: context.flags,\n };\n const messageIndex = this.getNextBufferIndex();\n const bufferEntry = {\n entryType: 'MESSAGE',\n message: writeObj,\n allocated: this.bufferTracker.allocate(message.length, this.callNumber),\n };\n this.writeBuffer.push(bufferEntry);\n if (bufferEntry.allocated) {\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n for (const [callIndex, call] of this.underlyingCalls.entries()) {\n if (call.state === 'ACTIVE' &&\n call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(callIndex);\n },\n }, message);\n }\n }\n }\n else {\n this.commitCallWithMostMessages();\n // commitCallWithMostMessages can fail if we are between ping attempts\n if (this.committedCallIndex === null) {\n return;\n }\n const call = this.underlyingCalls[this.committedCallIndex];\n bufferEntry.callback = context.callback;\n if (call.state === 'ACTIVE' && call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(this.committedCallIndex);\n },\n }, message);\n }\n }\n }\n startRead() {\n this.trace('startRead called');\n this.readStarted = true;\n for (const underlyingCall of this.underlyingCalls) {\n if ((underlyingCall === null || underlyingCall === void 0 ? void 0 : underlyingCall.state) === 'ACTIVE') {\n underlyingCall.call.startRead();\n }\n }\n }\n halfClose() {\n this.trace('halfClose called');\n const halfCloseIndex = this.getNextBufferIndex();\n this.writeBuffer.push({\n entryType: 'HALF_CLOSE',\n allocated: false,\n });\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE' &&\n call.nextMessageToSend === halfCloseIndex) {\n call.nextMessageToSend += 1;\n call.call.halfClose();\n }\n }\n }\n setCredentials(newCredentials) {\n throw new Error('Method not implemented.');\n }\n getMethod() {\n return this.methodName;\n }\n getHost() {\n return this.host;\n }\n}\nexports.RetryingCall = RetryingCall;\n//# sourceMappingURL=retrying-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerDuplexStreamImpl = exports.ServerWritableStreamImpl = exports.ServerReadableStreamImpl = exports.ServerUnaryCallImpl = exports.serverErrorToStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nfunction serverErrorToStatus(error, overrideTrailers) {\n var _a;\n const status = {\n code: constants_1.Status.UNKNOWN,\n details: 'message' in error ? error.message : 'Unknown Error',\n metadata: (_a = overrideTrailers !== null && overrideTrailers !== void 0 ? overrideTrailers : error.metadata) !== null && _a !== void 0 ? _a : null,\n };\n if ('code' in error &&\n typeof error.code === 'number' &&\n Number.isInteger(error.code)) {\n status.code = error.code;\n if ('details' in error && typeof error.details === 'string') {\n status.details = error.details;\n }\n }\n return status;\n}\nexports.serverErrorToStatus = serverErrorToStatus;\nclass ServerUnaryCallImpl extends events_1.EventEmitter {\n constructor(path, call, metadata, request) {\n super();\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.cancelled = false;\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerUnaryCallImpl = ServerUnaryCallImpl;\nclass ServerReadableStreamImpl extends stream_1.Readable {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.cancelled = false;\n }\n _read(size) {\n this.call.startRead();\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerReadableStreamImpl = ServerReadableStreamImpl;\nclass ServerWritableStreamImpl extends stream_1.Writable {\n constructor(path, call, metadata, request) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK',\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n callback(null);\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerWritableStreamImpl = ServerWritableStreamImpl;\nclass ServerDuplexStreamImpl extends stream_1.Duplex {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK',\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _read(size) {\n this.call.startRead();\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n callback(null);\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerDuplexStreamImpl = ServerDuplexStreamImpl;\n//# sourceMappingURL=server-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerCredentials = void 0;\nconst tls_helpers_1 = require(\"./tls-helpers\");\nclass ServerCredentials {\n static createInsecure() {\n return new InsecureServerCredentials();\n }\n static createSsl(rootCerts, keyCertPairs, checkClientCertificate = false) {\n var _a;\n if (rootCerts !== null && !Buffer.isBuffer(rootCerts)) {\n throw new TypeError('rootCerts must be null or a Buffer');\n }\n if (!Array.isArray(keyCertPairs)) {\n throw new TypeError('keyCertPairs must be an array');\n }\n if (typeof checkClientCertificate !== 'boolean') {\n throw new TypeError('checkClientCertificate must be a boolean');\n }\n const cert = [];\n const key = [];\n for (let i = 0; i < keyCertPairs.length; i++) {\n const pair = keyCertPairs[i];\n if (pair === null || typeof pair !== 'object') {\n throw new TypeError(`keyCertPair[${i}] must be an object`);\n }\n if (!Buffer.isBuffer(pair.private_key)) {\n throw new TypeError(`keyCertPair[${i}].private_key must be a Buffer`);\n }\n if (!Buffer.isBuffer(pair.cert_chain)) {\n throw new TypeError(`keyCertPair[${i}].cert_chain must be a Buffer`);\n }\n cert.push(pair.cert_chain);\n key.push(pair.private_key);\n }\n return new SecureServerCredentials({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n cert,\n key,\n requestCert: checkClientCertificate,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n }\n}\nexports.ServerCredentials = ServerCredentials;\nclass InsecureServerCredentials extends ServerCredentials {\n _isSecure() {\n return false;\n }\n _getSettings() {\n return null;\n }\n _equals(other) {\n return other instanceof InsecureServerCredentials;\n }\n}\nclass SecureServerCredentials extends ServerCredentials {\n constructor(options) {\n super();\n this.options = options;\n }\n _isSecure() {\n return true;\n }\n _getSettings() {\n return this.options;\n }\n /**\n * Checks equality by checking the options that are actually set by\n * createSsl.\n * @param other\n * @returns\n */\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (!(other instanceof SecureServerCredentials)) {\n return false;\n }\n // options.ca equality check\n if (Buffer.isBuffer(this.options.ca) && Buffer.isBuffer(other.options.ca)) {\n if (!this.options.ca.equals(other.options.ca)) {\n return false;\n }\n }\n else {\n if (this.options.ca !== other.options.ca) {\n return false;\n }\n }\n // options.cert equality check\n if (Array.isArray(this.options.cert) && Array.isArray(other.options.cert)) {\n if (this.options.cert.length !== other.options.cert.length) {\n return false;\n }\n for (let i = 0; i < this.options.cert.length; i++) {\n const thisCert = this.options.cert[i];\n const otherCert = other.options.cert[i];\n if (Buffer.isBuffer(thisCert) && Buffer.isBuffer(otherCert)) {\n if (!thisCert.equals(otherCert)) {\n return false;\n }\n }\n else {\n if (thisCert !== otherCert) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.cert !== other.options.cert) {\n return false;\n }\n }\n // options.key equality check\n if (Array.isArray(this.options.key) && Array.isArray(other.options.key)) {\n if (this.options.key.length !== other.options.key.length) {\n return false;\n }\n for (let i = 0; i < this.options.key.length; i++) {\n const thisKey = this.options.key[i];\n const otherKey = other.options.key[i];\n if (Buffer.isBuffer(thisKey) && Buffer.isBuffer(otherKey)) {\n if (!thisKey.equals(otherKey)) {\n return false;\n }\n }\n else {\n if (thisKey !== otherKey) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.key !== other.options.key) {\n return false;\n }\n }\n // options.requestCert equality check\n if (this.options.requestCert !== other.options.requestCert) {\n return false;\n }\n /* ciphers is derived from a value that is constant for the process, so no\n * equality check is needed. */\n return true;\n }\n}\n//# sourceMappingURL=server-credentials.js.map","\"use strict\";\n/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getServerInterceptingCall = exports.BaseServerInterceptingCall = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.isInterceptingServerListener = exports.ServerListenerBuilder = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nconst http2 = require(\"http2\");\nconst error_1 = require(\"./error\");\nconst zlib = require(\"zlib\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'server_call';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nclass ServerListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveHalfClose(onReceiveHalfClose) {\n this.halfClose = onReceiveHalfClose;\n return this;\n }\n withOnCancel(onCancel) {\n this.cancel = onCancel;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveHalfClose: this.halfClose,\n onCancel: this.cancel,\n };\n }\n}\nexports.ServerListenerBuilder = ServerListenerBuilder;\nfunction isInterceptingServerListener(listener) {\n return (listener.onReceiveMetadata !== undefined &&\n listener.onReceiveMetadata.length === 1);\n}\nexports.isInterceptingServerListener = isInterceptingServerListener;\nclass InterceptingServerListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n /**\n * Once the call is cancelled, ignore all other events.\n */\n this.cancelled = false;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.pendingMessage = null;\n this.processingMessage = false;\n this.hasPendingHalfClose = false;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingHalfClose() {\n if (this.hasPendingHalfClose) {\n this.nextListener.onReceiveHalfClose();\n this.hasPendingHalfClose = false;\n }\n }\n onReceiveMetadata(metadata) {\n if (this.cancelled) {\n return;\n }\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n if (this.cancelled) {\n return;\n }\n this.nextListener.onReceiveMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n onReceiveMessage(message) {\n if (this.cancelled) {\n return;\n }\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingHalfClose();\n }\n });\n }\n onReceiveHalfClose() {\n if (this.cancelled) {\n return;\n }\n this.listener.onReceiveHalfClose(() => {\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata || this.processingMessage) {\n this.hasPendingHalfClose = true;\n }\n else {\n this.nextListener.onReceiveHalfClose();\n }\n });\n }\n onCancel() {\n this.cancelled = true;\n this.listener.onCancel();\n this.nextListener.onCancel();\n }\n}\nclass ResponderBuilder {\n constructor() {\n this.start = undefined;\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMetadata(sendMetadata) {\n this.metadata = sendMetadata;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withSendStatus(sendStatus) {\n this.status = sendStatus;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMetadata: this.metadata,\n sendMessage: this.message,\n sendStatus: this.status,\n };\n }\n}\nexports.ResponderBuilder = ResponderBuilder;\nconst defaultServerListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveHalfClose: next => {\n next();\n },\n onCancel: () => { },\n};\nconst defaultResponder = {\n start: next => {\n next();\n },\n sendMetadata: (metadata, next) => {\n next(metadata);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n sendStatus: (status, next) => {\n next(status);\n },\n};\nclass ServerInterceptingCall {\n constructor(nextCall, responder) {\n var _a, _b, _c, _d;\n this.nextCall = nextCall;\n this.processingMetadata = false;\n this.processingMessage = false;\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n this.pendingStatus = null;\n this.responder = {\n start: (_a = responder === null || responder === void 0 ? void 0 : responder.start) !== null && _a !== void 0 ? _a : defaultResponder.start,\n sendMetadata: (_b = responder === null || responder === void 0 ? void 0 : responder.sendMetadata) !== null && _b !== void 0 ? _b : defaultResponder.sendMetadata,\n sendMessage: (_c = responder === null || responder === void 0 ? void 0 : responder.sendMessage) !== null && _c !== void 0 ? _c : defaultResponder.sendMessage,\n sendStatus: (_d = responder === null || responder === void 0 ? void 0 : responder.sendStatus) !== null && _d !== void 0 ? _d : defaultResponder.sendStatus,\n };\n }\n processPendingMessage() {\n if (this.pendingMessageCallback) {\n this.nextCall.sendMessage(this.pendingMessage, this.pendingMessageCallback);\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextCall.sendStatus(this.pendingStatus);\n this.pendingStatus = null;\n }\n }\n start(listener) {\n this.responder.start(interceptedListener => {\n var _a, _b, _c, _d;\n const fullInterceptedListener = {\n onReceiveMetadata: (_a = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveMetadata) !== null && _a !== void 0 ? _a : defaultServerListener.onReceiveMetadata,\n onReceiveMessage: (_b = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveMessage) !== null && _b !== void 0 ? _b : defaultServerListener.onReceiveMessage,\n onReceiveHalfClose: (_c = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onReceiveHalfClose) !== null && _c !== void 0 ? _c : defaultServerListener.onReceiveHalfClose,\n onCancel: (_d = interceptedListener === null || interceptedListener === void 0 ? void 0 : interceptedListener.onCancel) !== null && _d !== void 0 ? _d : defaultServerListener.onCancel,\n };\n const finalInterceptingListener = new InterceptingServerListenerImpl(fullInterceptedListener, listener);\n this.nextCall.start(finalInterceptingListener);\n });\n }\n sendMetadata(metadata) {\n this.processingMetadata = true;\n this.responder.sendMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n this.nextCall.sendMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n sendMessage(message, callback) {\n this.processingMessage = true;\n this.responder.sendMessage(message, interceptedMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = interceptedMessage;\n this.pendingMessageCallback = callback;\n }\n else {\n this.nextCall.sendMessage(interceptedMessage, callback);\n }\n });\n }\n sendStatus(status) {\n this.responder.sendStatus(status, interceptedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = interceptedStatus;\n }\n else {\n this.nextCall.sendStatus(interceptedStatus);\n }\n });\n }\n startRead() {\n this.nextCall.startRead();\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n getDeadline() {\n return this.nextCall.getDeadline();\n }\n}\nexports.ServerInterceptingCall = ServerInterceptingCall;\nconst GRPC_ACCEPT_ENCODING_HEADER = 'grpc-accept-encoding';\nconst GRPC_ENCODING_HEADER = 'grpc-encoding';\nconst GRPC_MESSAGE_HEADER = 'grpc-message';\nconst GRPC_STATUS_HEADER = 'grpc-status';\nconst GRPC_TIMEOUT_HEADER = 'grpc-timeout';\nconst DEADLINE_REGEX = /(\\d{1,8})\\s*([HMSmun])/;\nconst deadlineUnitsToMs = {\n H: 3600000,\n M: 60000,\n S: 1000,\n m: 1,\n u: 0.001,\n n: 0.000001,\n};\nconst defaultCompressionHeaders = {\n // TODO(cjihrig): Remove these encoding headers from the default response\n // once compression is integrated.\n [GRPC_ACCEPT_ENCODING_HEADER]: 'identity,deflate,gzip',\n [GRPC_ENCODING_HEADER]: 'identity',\n};\nconst defaultResponseHeaders = {\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK,\n [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto',\n};\nconst defaultResponseOptions = {\n waitForTrailers: true,\n};\nclass BaseServerInterceptingCall {\n constructor(stream, headers, callEventTracker, handler, options) {\n this.stream = stream;\n this.callEventTracker = callEventTracker;\n this.handler = handler;\n this.listener = null;\n this.deadlineTimer = null;\n this.deadline = Infinity;\n this.maxSendMessageSize = constants_1.DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n this.maxReceiveMessageSize = constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n this.cancelled = false;\n this.metadataSent = false;\n this.wantTrailers = false;\n this.cancelNotified = false;\n this.incomingEncoding = 'identity';\n this.readQueue = [];\n this.isReadPending = false;\n this.receivedHalfClose = false;\n this.streamEnded = false;\n this.stream.once('error', (err) => {\n /* We need an error handler to avoid uncaught error event exceptions, but\n * there is nothing we can reasonably do here. Any error event should\n * have a corresponding close event, which handles emitting the cancelled\n * event. And the stream is now in a bad state, so we can't reasonably\n * expect to be able to send an error over it. */\n });\n this.stream.once('close', () => {\n var _a;\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' stream closed with rstCode ' +\n this.stream.rstCode);\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(false);\n this.callEventTracker.onCallEnd({\n code: constants_1.Status.CANCELLED,\n details: 'Stream closed before sending status',\n metadata: null,\n });\n }\n this.notifyOnCancel();\n });\n this.stream.on('data', (data) => {\n this.handleDataFrame(data);\n });\n this.stream.pause();\n this.stream.on('end', () => {\n this.handleEndEvent();\n });\n if ('grpc.max_send_message_length' in options) {\n this.maxSendMessageSize = options['grpc.max_send_message_length'];\n }\n if ('grpc.max_receive_message_length' in options) {\n this.maxReceiveMessageSize = options['grpc.max_receive_message_length'];\n }\n this.decoder = new stream_decoder_1.StreamDecoder(this.maxReceiveMessageSize);\n const metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n if (logging.isTracerEnabled(TRACER_NAME)) {\n trace('Request to ' +\n this.handler.path +\n ' received headers ' +\n JSON.stringify(metadata.toJSON()));\n }\n const timeoutHeader = metadata.get(GRPC_TIMEOUT_HEADER);\n if (timeoutHeader.length > 0) {\n this.handleTimeoutHeader(timeoutHeader[0]);\n }\n const encodingHeader = metadata.get(GRPC_ENCODING_HEADER);\n if (encodingHeader.length > 0) {\n this.incomingEncoding = encodingHeader[0];\n }\n // Remove several headers that should not be propagated to the application\n metadata.remove(GRPC_TIMEOUT_HEADER);\n metadata.remove(GRPC_ENCODING_HEADER);\n metadata.remove(GRPC_ACCEPT_ENCODING_HEADER);\n metadata.remove(http2.constants.HTTP2_HEADER_ACCEPT_ENCODING);\n metadata.remove(http2.constants.HTTP2_HEADER_TE);\n metadata.remove(http2.constants.HTTP2_HEADER_CONTENT_TYPE);\n this.metadata = metadata;\n }\n handleTimeoutHeader(timeoutHeader) {\n const match = timeoutHeader.toString().match(DEADLINE_REGEX);\n if (match === null) {\n const status = {\n code: constants_1.Status.INTERNAL,\n details: `Invalid ${GRPC_TIMEOUT_HEADER} value \"${timeoutHeader}\"`,\n metadata: null,\n };\n // Wait for the constructor to complete before sending the error.\n process.nextTick(() => {\n this.sendStatus(status);\n });\n return;\n }\n const timeout = (+match[1] * deadlineUnitsToMs[match[2]]) | 0;\n const now = new Date();\n this.deadline = now.setMilliseconds(now.getMilliseconds() + timeout);\n this.deadlineTimer = setTimeout(() => {\n const status = {\n code: constants_1.Status.DEADLINE_EXCEEDED,\n details: 'Deadline exceeded',\n metadata: null,\n };\n this.sendStatus(status);\n }, timeout);\n }\n checkCancelled() {\n /* In some cases the stream can become destroyed before the close event\n * fires. That creates a race condition that this check works around */\n if (!this.cancelled && (this.stream.destroyed || this.stream.closed)) {\n this.notifyOnCancel();\n this.cancelled = true;\n }\n return this.cancelled;\n }\n notifyOnCancel() {\n if (this.cancelNotified) {\n return;\n }\n this.cancelNotified = true;\n this.cancelled = true;\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onCancel();\n });\n if (this.deadlineTimer) {\n clearTimeout(this.deadlineTimer);\n }\n // Flush incoming data frames\n this.stream.resume();\n }\n /**\n * A server handler can start sending messages without explicitly sending\n * metadata. In that case, we need to send headers before sending any\n * messages. This function does that if necessary.\n */\n maybeSendMetadata() {\n if (!this.metadataSent) {\n this.sendMetadata(new metadata_1.Metadata());\n }\n }\n /**\n * Serialize a message to a length-delimited byte string.\n * @param value\n * @returns\n */\n serializeMessage(value) {\n const messageBuffer = this.handler.serialize(value);\n const byteLength = messageBuffer.byteLength;\n const output = Buffer.allocUnsafe(byteLength + 5);\n /* Note: response compression is currently not supported, so this\n * compressed bit is always 0. */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(byteLength, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n decompressMessage(message, encoding) {\n const messageContents = message.subarray(5);\n if (encoding === 'identity') {\n return messageContents;\n }\n else if (encoding === 'deflate' || encoding === 'gzip') {\n let decompresser;\n if (encoding === 'deflate') {\n decompresser = zlib.createInflate();\n }\n else {\n decompresser = zlib.createGunzip();\n }\n return new Promise((resolve, reject) => {\n let totalLength = 0;\n const messageParts = [];\n decompresser.on('data', (chunk) => {\n messageParts.push(chunk);\n totalLength += chunk.byteLength;\n if (this.maxReceiveMessageSize !== -1 && totalLength > this.maxReceiveMessageSize) {\n decompresser.destroy();\n reject({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message that decompresses to a size larger than ${this.maxReceiveMessageSize}`\n });\n }\n });\n decompresser.on('end', () => {\n resolve(Buffer.concat(messageParts));\n });\n decompresser.write(messageContents);\n decompresser.end();\n });\n }\n else {\n return Promise.reject({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received message compressed with unsupported encoding \"${encoding}\"`,\n });\n }\n }\n async decompressAndMaybePush(queueEntry) {\n if (queueEntry.type !== 'COMPRESSED') {\n throw new Error(`Invalid queue entry type: ${queueEntry.type}`);\n }\n const compressed = queueEntry.compressedMessage.readUInt8(0) === 1;\n const compressedMessageEncoding = compressed\n ? this.incomingEncoding\n : 'identity';\n let decompressedMessage;\n try {\n decompressedMessage = await this.decompressMessage(queueEntry.compressedMessage, compressedMessageEncoding);\n }\n catch (err) {\n this.sendStatus(err);\n return;\n }\n try {\n queueEntry.parsedMessage = this.handler.deserialize(decompressedMessage);\n }\n catch (err) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error deserializing request: ${err.message}`,\n });\n return;\n }\n queueEntry.type = 'READABLE';\n this.maybePushNextMessage();\n }\n maybePushNextMessage() {\n if (this.listener &&\n this.isReadPending &&\n this.readQueue.length > 0 &&\n this.readQueue[0].type !== 'COMPRESSED') {\n this.isReadPending = false;\n const nextQueueEntry = this.readQueue.shift();\n if (nextQueueEntry.type === 'READABLE') {\n this.listener.onReceiveMessage(nextQueueEntry.parsedMessage);\n }\n else {\n // nextQueueEntry.type === 'HALF_CLOSE'\n this.listener.onReceiveHalfClose();\n }\n }\n }\n handleDataFrame(data) {\n var _a;\n if (this.checkCancelled()) {\n return;\n }\n trace('Request to ' +\n this.handler.path +\n ' received data frame of size ' +\n data.length);\n let rawMessages;\n try {\n rawMessages = this.decoder.write(data);\n }\n catch (e) {\n this.sendStatus({ code: constants_1.Status.RESOURCE_EXHAUSTED, details: e.message });\n return;\n }\n for (const messageBytes of rawMessages) {\n this.stream.pause();\n const queueEntry = {\n type: 'COMPRESSED',\n compressedMessage: messageBytes,\n parsedMessage: null,\n };\n this.readQueue.push(queueEntry);\n this.decompressAndMaybePush(queueEntry);\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageReceived();\n }\n }\n handleEndEvent() {\n this.readQueue.push({\n type: 'HALF_CLOSE',\n compressedMessage: null,\n parsedMessage: null,\n });\n this.receivedHalfClose = true;\n this.maybePushNextMessage();\n }\n start(listener) {\n trace('Request to ' + this.handler.path + ' start called');\n if (this.checkCancelled()) {\n return;\n }\n this.listener = listener;\n listener.onReceiveMetadata(this.metadata);\n }\n sendMetadata(metadata) {\n if (this.checkCancelled()) {\n return;\n }\n if (this.metadataSent) {\n return;\n }\n this.metadataSent = true;\n const custom = metadata ? metadata.toHttp2Headers() : null;\n const headers = Object.assign(Object.assign(Object.assign({}, defaultResponseHeaders), defaultCompressionHeaders), custom);\n this.stream.respond(headers, defaultResponseOptions);\n }\n sendMessage(message, callback) {\n if (this.checkCancelled()) {\n return;\n }\n let response;\n try {\n response = this.serializeMessage(message);\n }\n catch (e) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error serializing response: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: null,\n });\n return;\n }\n if (this.maxSendMessageSize !== -1 &&\n response.length - 5 > this.maxSendMessageSize) {\n this.sendStatus({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Sent message larger than max (${response.length} vs. ${this.maxSendMessageSize})`,\n metadata: null,\n });\n return;\n }\n this.maybeSendMetadata();\n trace('Request to ' +\n this.handler.path +\n ' sent data frame of size ' +\n response.length);\n this.stream.write(response, error => {\n var _a;\n if (error) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error writing message: ${(0, error_1.getErrorMessage)(error)}`,\n metadata: null,\n });\n return;\n }\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageSent();\n callback();\n });\n }\n sendStatus(status) {\n var _a, _b;\n if (this.checkCancelled()) {\n return;\n }\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' ended with status code: ' +\n constants_1.Status[status.code] +\n ' details: ' +\n status.details);\n if (this.metadataSent) {\n if (!this.wantTrailers) {\n this.wantTrailers = true;\n this.stream.once('wantTrailers', () => {\n var _a;\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n const trailersToSend = Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, (_a = status.metadata) === null || _a === void 0 ? void 0 : _a.toHttp2Headers());\n this.stream.sendTrailers(trailersToSend);\n this.notifyOnCancel();\n });\n this.stream.end();\n }\n else {\n this.notifyOnCancel();\n }\n }\n else {\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n // Trailers-only response\n const trailersToSend = Object.assign(Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, defaultResponseHeaders), (_b = status.metadata) === null || _b === void 0 ? void 0 : _b.toHttp2Headers());\n this.stream.respond(trailersToSend, { endStream: true });\n this.notifyOnCancel();\n }\n }\n startRead() {\n trace('Request to ' + this.handler.path + ' startRead called');\n if (this.checkCancelled()) {\n return;\n }\n this.isReadPending = true;\n if (this.readQueue.length === 0) {\n if (!this.receivedHalfClose) {\n this.stream.resume();\n }\n }\n else {\n this.maybePushNextMessage();\n }\n }\n getPeer() {\n var _a;\n const socket = (_a = this.stream.session) === null || _a === void 0 ? void 0 : _a.socket;\n if (socket === null || socket === void 0 ? void 0 : socket.remoteAddress) {\n if (socket.remotePort) {\n return `${socket.remoteAddress}:${socket.remotePort}`;\n }\n else {\n return socket.remoteAddress;\n }\n }\n else {\n return 'unknown';\n }\n }\n getDeadline() {\n return this.deadline;\n }\n}\nexports.BaseServerInterceptingCall = BaseServerInterceptingCall;\nfunction getServerInterceptingCall(interceptors, stream, headers, callEventTracker, handler, options) {\n const methodDefinition = {\n path: handler.path,\n requestStream: handler.type === 'clientStream' || handler.type === 'bidi',\n responseStream: handler.type === 'serverStream' || handler.type === 'bidi',\n requestDeserialize: handler.deserialize,\n responseSerialize: handler.serialize,\n };\n const baseCall = new BaseServerInterceptingCall(stream, headers, callEventTracker, handler, options);\n return interceptors.reduce((call, interceptor) => {\n return interceptor(methodDefinition, call);\n }, baseCall);\n}\nexports.getServerInterceptingCall = getServerInterceptingCall;\n//# sourceMappingURL=server-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Server = void 0;\nconst http2 = require(\"http2\");\nconst util = require(\"util\");\nconst constants_1 = require(\"./constants\");\nconst server_call_1 = require(\"./server-call\");\nconst server_credentials_1 = require(\"./server-credentials\");\nconst resolver_1 = require(\"./resolver\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst channelz_1 = require(\"./channelz\");\nconst server_interceptors_1 = require(\"./server-interceptors\");\nconst UNLIMITED_CONNECTION_AGE_MS = ~(1 << 31);\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst MAX_CONNECTION_IDLE_MS = ~(1 << 31);\nconst { HTTP2_HEADER_PATH } = http2.constants;\nconst TRACER_NAME = 'server';\nconst kMaxAge = Buffer.from('max_age');\nfunction noop() { }\n/**\n * Decorator to wrap a class method with util.deprecate\n * @param message The message to output if the deprecated method is called\n * @returns\n */\nfunction deprecate(message) {\n return function (target, context) {\n return util.deprecate(target, message);\n };\n}\nfunction getUnimplementedStatusResponse(methodName) {\n return {\n code: constants_1.Status.UNIMPLEMENTED,\n details: `The server does not implement the method ${methodName}`,\n };\n}\nfunction getDefaultHandler(handlerType, methodName) {\n const unimplementedStatusResponse = getUnimplementedStatusResponse(methodName);\n switch (handlerType) {\n case 'unary':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'clientStream':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'serverStream':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n case 'bidi':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n default:\n throw new Error(`Invalid handlerType ${handlerType}`);\n }\n}\nlet Server = (() => {\n var _a;\n let _instanceExtraInitializers = [];\n let _start_decorators;\n return _a = class Server {\n constructor(options) {\n var _b, _c, _d, _e, _f, _g;\n this.boundPorts = (__runInitializers(this, _instanceExtraInitializers), new Map());\n this.http2Servers = new Map();\n this.sessionIdleTimeouts = new Map();\n this.handlers = new Map();\n this.sessions = new Map();\n /**\n * This field only exists to ensure that the start method throws an error if\n * it is called twice, as it did previously.\n */\n this.started = false;\n this.shutdown = false;\n this.serverAddressString = 'null';\n // Channelz Info\n this.channelzEnabled = true;\n this.options = options !== null && options !== void 0 ? options : {};\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.channelzTrace = new channelz_1.ChannelzTraceStub();\n this.callTracker = new channelz_1.ChannelzCallTrackerStub();\n this.listenerChildrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n this.sessionChildrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n }\n else {\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.listenerChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.sessionChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzServer)('server', () => this.getChannelzInfo(), this.channelzEnabled);\n this.channelzTrace.addTrace('CT_INFO', 'Server created');\n this.maxConnectionAgeMs =\n (_b = this.options['grpc.max_connection_age_ms']) !== null && _b !== void 0 ? _b : UNLIMITED_CONNECTION_AGE_MS;\n this.maxConnectionAgeGraceMs =\n (_c = this.options['grpc.max_connection_age_grace_ms']) !== null && _c !== void 0 ? _c : UNLIMITED_CONNECTION_AGE_MS;\n this.keepaliveTimeMs =\n (_d = this.options['grpc.keepalive_time_ms']) !== null && _d !== void 0 ? _d : KEEPALIVE_MAX_TIME_MS;\n this.keepaliveTimeoutMs =\n (_e = this.options['grpc.keepalive_timeout_ms']) !== null && _e !== void 0 ? _e : KEEPALIVE_TIMEOUT_MS;\n this.sessionIdleTimeout =\n (_f = this.options['grpc.max_connection_idle_ms']) !== null && _f !== void 0 ? _f : MAX_CONNECTION_IDLE_MS;\n this.commonServerOptions = {\n maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER,\n };\n if ('grpc-node.max_session_memory' in this.options) {\n this.commonServerOptions.maxSessionMemory =\n this.options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n this.commonServerOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n if ('grpc.max_concurrent_streams' in this.options) {\n this.commonServerOptions.settings = {\n maxConcurrentStreams: this.options['grpc.max_concurrent_streams'],\n };\n }\n this.interceptors = (_g = this.options.interceptors) !== null && _g !== void 0 ? _g : [];\n this.trace('Server constructed');\n }\n getChannelzInfo() {\n return {\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n listenerChildren: this.listenerChildrenTracker.getChildLists(),\n sessionChildren: this.sessionChildrenTracker.getChildLists(),\n };\n }\n getChannelzSessionInfo(session) {\n var _b, _c, _d;\n const sessionInfo = this.sessions.get(session);\n const sessionSocket = session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_b = cipherInfo.standardName) !== null && _b !== void 0 ? _b : null,\n cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: null,\n streamsStarted: sessionInfo.streamTracker.callsStarted,\n streamsSucceeded: sessionInfo.streamTracker.callsSucceeded,\n streamsFailed: sessionInfo.streamTracker.callsFailed,\n messagesSent: sessionInfo.messagesSent,\n messagesReceived: sessionInfo.messagesReceived,\n keepAlivesSent: sessionInfo.keepAlivesSent,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: sessionInfo.streamTracker.lastCallStartedTimestamp,\n lastMessageSentTimestamp: sessionInfo.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: sessionInfo.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_c = session.state.localWindowSize) !== null && _c !== void 0 ? _c : null,\n remoteFlowControlWindow: (_d = session.state.remoteWindowSize) !== null && _d !== void 0 ? _d : null,\n };\n return socketInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' + this.channelzRef.id + ') ' + text);\n }\n addProtoService() {\n throw new Error('Not implemented. Use addService() instead');\n }\n addService(service, implementation) {\n if (service === null ||\n typeof service !== 'object' ||\n implementation === null ||\n typeof implementation !== 'object') {\n throw new Error('addService() requires two objects as arguments');\n }\n const serviceKeys = Object.keys(service);\n if (serviceKeys.length === 0) {\n throw new Error('Cannot add an empty service to a server');\n }\n serviceKeys.forEach(name => {\n const attrs = service[name];\n let methodType;\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'clientStream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'serverStream';\n }\n else {\n methodType = 'unary';\n }\n }\n let implFn = implementation[name];\n let impl;\n if (implFn === undefined && typeof attrs.originalName === 'string') {\n implFn = implementation[attrs.originalName];\n }\n if (implFn !== undefined) {\n impl = implFn.bind(implementation);\n }\n else {\n impl = getDefaultHandler(methodType, name);\n }\n const success = this.register(attrs.path, impl, attrs.responseSerialize, attrs.requestDeserialize, methodType);\n if (success === false) {\n throw new Error(`Method handler for ${attrs.path} already provided.`);\n }\n });\n }\n removeService(service) {\n if (service === null || typeof service !== 'object') {\n throw new Error('removeService() requires object as argument');\n }\n const serviceKeys = Object.keys(service);\n serviceKeys.forEach(name => {\n const attrs = service[name];\n this.unregister(attrs.path);\n });\n }\n bind(port, creds) {\n throw new Error('Not implemented. Use bindAsync() instead');\n }\n registerListenerToChannelz(boundAddress) {\n return (0, channelz_1.registerChannelzSocket)((0, subchannel_address_1.subchannelAddressToString)(boundAddress), () => {\n return {\n localAddress: boundAddress,\n remoteAddress: null,\n security: null,\n remoteName: null,\n streamsStarted: 0,\n streamsSucceeded: 0,\n streamsFailed: 0,\n messagesSent: 0,\n messagesReceived: 0,\n keepAlivesSent: 0,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n localFlowControlWindow: null,\n remoteFlowControlWindow: null,\n };\n }, this.channelzEnabled);\n }\n createHttp2Server(credentials) {\n let http2Server;\n if (credentials._isSecure()) {\n const secureServerOptions = Object.assign(this.commonServerOptions, credentials._getSettings());\n secureServerOptions.enableTrace =\n this.options['grpc-node.tls_enable_trace'] === 1;\n http2Server = http2.createSecureServer(secureServerOptions);\n http2Server.on('secureConnection', (socket) => {\n /* These errors need to be handled by the user of Http2SecureServer,\n * according to https://github.com/nodejs/node/issues/35824 */\n socket.on('error', (e) => {\n this.trace('An incoming TLS connection closed with error: ' + e.message);\n });\n });\n }\n else {\n http2Server = http2.createServer(this.commonServerOptions);\n }\n http2Server.setTimeout(0, noop);\n this._setupHandlers(http2Server);\n return http2Server;\n }\n bindOneAddress(address, boundPortObject) {\n this.trace('Attempting to bind ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n const http2Server = this.createHttp2Server(boundPortObject.credentials);\n return new Promise((resolve, reject) => {\n const onError = (err) => {\n this.trace('Failed to bind ' +\n (0, subchannel_address_1.subchannelAddressToString)(address) +\n ' with error ' +\n err.message);\n resolve({\n port: 'port' in address ? address.port : 1,\n error: err.message,\n });\n };\n http2Server.once('error', onError);\n http2Server.listen(address, () => {\n const boundAddress = http2Server.address();\n let boundSubchannelAddress;\n if (typeof boundAddress === 'string') {\n boundSubchannelAddress = {\n path: boundAddress,\n };\n }\n else {\n boundSubchannelAddress = {\n host: boundAddress.address,\n port: boundAddress.port,\n };\n }\n const channelzRef = this.registerListenerToChannelz(boundSubchannelAddress);\n this.listenerChildrenTracker.refChild(channelzRef);\n this.http2Servers.set(http2Server, {\n channelzRef: channelzRef,\n sessions: new Set(),\n });\n boundPortObject.listeningServers.add(http2Server);\n this.trace('Successfully bound ' +\n (0, subchannel_address_1.subchannelAddressToString)(boundSubchannelAddress));\n resolve({\n port: 'port' in boundSubchannelAddress ? boundSubchannelAddress.port : 1,\n });\n http2Server.removeListener('error', onError);\n });\n });\n }\n async bindManyPorts(addressList, boundPortObject) {\n if (addressList.length === 0) {\n return {\n count: 0,\n port: 0,\n errors: [],\n };\n }\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && addressList[0].port === 0) {\n /* If binding to port 0, first try to bind the first address, then bind\n * the rest of the address list to the specific port that it binds. */\n const firstAddressResult = await this.bindOneAddress(addressList[0], boundPortObject);\n if (firstAddressResult.error) {\n /* If the first address fails to bind, try the same operation starting\n * from the second item in the list. */\n const restAddressResult = await this.bindManyPorts(addressList.slice(1), boundPortObject);\n return Object.assign(Object.assign({}, restAddressResult), { errors: [firstAddressResult.error, ...restAddressResult.errors] });\n }\n else {\n const restAddresses = addressList\n .slice(1)\n .map(address => (0, subchannel_address_1.isTcpSubchannelAddress)(address)\n ? { host: address.host, port: firstAddressResult.port }\n : address);\n const restAddressResult = await Promise.all(restAddresses.map(address => this.bindOneAddress(address, boundPortObject)));\n const allResults = [firstAddressResult, ...restAddressResult];\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: firstAddressResult.port,\n errors: allResults\n .filter(result => result.error)\n .map(result => result.error),\n };\n }\n }\n else {\n const allResults = await Promise.all(addressList.map(address => this.bindOneAddress(address, boundPortObject)));\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: allResults[0].port,\n errors: allResults\n .filter(result => result.error)\n .map(result => result.error),\n };\n }\n }\n async bindAddressList(addressList, boundPortObject) {\n const bindResult = await this.bindManyPorts(addressList, boundPortObject);\n if (bindResult.count > 0) {\n if (bindResult.count < addressList.length) {\n logging.log(constants_1.LogVerbosity.INFO, `WARNING Only ${bindResult.count} addresses added out of total ${addressList.length} resolved`);\n }\n return bindResult.port;\n }\n else {\n const errorString = `No address added out of total ${addressList.length} resolved`;\n logging.log(constants_1.LogVerbosity.ERROR, errorString);\n throw new Error(`${errorString} errors: [${bindResult.errors.join(',')}]`);\n }\n }\n resolvePort(port) {\n return new Promise((resolve, reject) => {\n const resolverListener = {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError) => {\n // We only want one resolution result. Discard all future results\n resolverListener.onSuccessfulResolution = () => { };\n const addressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (addressList.length === 0) {\n reject(new Error(`No addresses resolved for port ${port}`));\n return;\n }\n resolve(addressList);\n },\n onError: error => {\n reject(new Error(error.details));\n },\n };\n const resolver = (0, resolver_1.createResolver)(port, resolverListener, this.options);\n resolver.updateResolution();\n });\n }\n async bindPort(port, boundPortObject) {\n const addressList = await this.resolvePort(port);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n const portNumber = await this.bindAddressList(addressList, boundPortObject);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n return portNumber;\n }\n normalizePort(port) {\n const initialPortUri = (0, uri_parser_1.parseUri)(port);\n if (initialPortUri === null) {\n throw new Error(`Could not parse port \"${port}\"`);\n }\n const portUri = (0, resolver_1.mapUriDefaultScheme)(initialPortUri);\n if (portUri === null) {\n throw new Error(`Could not get a default scheme for port \"${port}\"`);\n }\n return portUri;\n }\n bindAsync(port, creds, callback) {\n if (this.shutdown) {\n throw new Error('bindAsync called after shutdown');\n }\n if (typeof port !== 'string') {\n throw new TypeError('port must be a string');\n }\n if (creds === null || !(creds instanceof server_credentials_1.ServerCredentials)) {\n throw new TypeError('creds must be a ServerCredentials object');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n this.trace('bindAsync port=' + port);\n const portUri = this.normalizePort(port);\n const deferredCallback = (error, port) => {\n process.nextTick(() => callback(error, port));\n };\n /* First, if this port is already bound or that bind operation is in\n * progress, use that result. */\n let boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n if (!creds._equals(boundPortObject.credentials)) {\n deferredCallback(new Error(`${port} already bound with incompatible credentials`), 0);\n return;\n }\n /* If that operation has previously been cancelled by an unbind call,\n * uncancel it. */\n boundPortObject.cancelled = false;\n if (boundPortObject.completionPromise) {\n boundPortObject.completionPromise.then(portNum => callback(null, portNum), error => callback(error, 0));\n }\n else {\n deferredCallback(null, boundPortObject.portNumber);\n }\n return;\n }\n boundPortObject = {\n mapKey: (0, uri_parser_1.uriToString)(portUri),\n originalUri: portUri,\n completionPromise: null,\n cancelled: false,\n portNumber: 0,\n credentials: creds,\n listeningServers: new Set(),\n };\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n const completionPromise = this.bindPort(portUri, boundPortObject);\n boundPortObject.completionPromise = completionPromise;\n /* If the port number is 0, defer populating the map entry until after the\n * bind operation completes and we have a specific port number. Otherwise,\n * populate it immediately. */\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n completionPromise.then(portNum => {\n const finalUri = {\n scheme: portUri.scheme,\n authority: portUri.authority,\n path: (0, uri_parser_1.combineHostPort)({ host: splitPort.host, port: portNum }),\n };\n boundPortObject.mapKey = (0, uri_parser_1.uriToString)(finalUri);\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n else {\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n completionPromise.then(portNum => {\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n }\n closeServer(server, callback) {\n this.trace('Closing server with address ' + JSON.stringify(server.address()));\n const serverInfo = this.http2Servers.get(server);\n server.close(() => {\n if (serverInfo) {\n this.listenerChildrenTracker.unrefChild(serverInfo.channelzRef);\n (0, channelz_1.unregisterChannelzRef)(serverInfo.channelzRef);\n }\n this.http2Servers.delete(server);\n callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n closeSession(session, callback) {\n var _b;\n this.trace('Closing session initiated by ' + ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress));\n const sessionInfo = this.sessions.get(session);\n const closeCallback = () => {\n if (sessionInfo) {\n this.sessionChildrenTracker.unrefChild(sessionInfo.ref);\n (0, channelz_1.unregisterChannelzRef)(sessionInfo.ref);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n };\n if (session.closed) {\n queueMicrotask(closeCallback);\n }\n else {\n session.close(closeCallback);\n }\n }\n completeUnbind(boundPortObject) {\n for (const server of boundPortObject.listeningServers) {\n const serverInfo = this.http2Servers.get(server);\n this.closeServer(server, () => {\n boundPortObject.listeningServers.delete(server);\n });\n if (serverInfo) {\n for (const session of serverInfo.sessions) {\n this.closeSession(session);\n }\n }\n }\n this.boundPorts.delete(boundPortObject.mapKey);\n }\n /**\n * Unbind a previously bound port, or cancel an in-progress bindAsync\n * operation. If port 0 was bound, only the actual bound port can be\n * unbound. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be unbound as \"localhost:54321\".\n * @param port\n */\n unbind(port) {\n this.trace('unbind port=' + port);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot unbind port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n this.trace('unbinding ' +\n boundPortObject.mapKey +\n ' originally bound as ' +\n (0, uri_parser_1.uriToString)(boundPortObject.originalUri));\n /* If the bind operation is pending, the cancelled flag will trigger\n * the unbind operation later. */\n if (boundPortObject.completionPromise) {\n boundPortObject.cancelled = true;\n }\n else {\n this.completeUnbind(boundPortObject);\n }\n }\n }\n /**\n * Gracefully close all connections associated with a previously bound port.\n * After the grace time, forcefully close all remaining open connections.\n *\n * If port 0 was bound, only the actual bound port can be\n * drained. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be drained as \"localhost:54321\".\n * @param port\n * @param graceTimeMs\n * @returns\n */\n drain(port, graceTimeMs) {\n var _b, _c;\n this.trace('drain port=' + port + ' graceTimeMs=' + graceTimeMs);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot drain port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (!boundPortObject) {\n return;\n }\n const allSessions = new Set();\n for (const http2Server of boundPortObject.listeningServers) {\n const serverEntry = this.http2Servers.get(http2Server);\n if (serverEntry) {\n for (const session of serverEntry.sessions) {\n allSessions.add(session);\n this.closeSession(session, () => {\n allSessions.delete(session);\n });\n }\n }\n }\n /* After the grace time ends, send another goaway to all remaining sessions\n * with the CANCEL code. */\n (_c = (_b = setTimeout(() => {\n for (const session of allSessions) {\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n }\n }, graceTimeMs)).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n forceShutdown() {\n for (const boundPortObject of this.boundPorts.values()) {\n boundPortObject.cancelled = true;\n }\n this.boundPorts.clear();\n // Close the server if it is still running.\n for (const server of this.http2Servers.keys()) {\n this.closeServer(server);\n }\n // Always destroy any available sessions. It's possible that one or more\n // tryShutdown() calls are in progress. Don't wait on them to finish.\n this.sessions.forEach((channelzInfo, session) => {\n this.closeSession(session);\n // Cast NGHTTP2_CANCEL to any because TypeScript doesn't seem to\n // recognize destroy(code) as a valid signature.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n });\n this.sessions.clear();\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n this.shutdown = true;\n }\n register(name, handler, serialize, deserialize, type) {\n if (this.handlers.has(name)) {\n return false;\n }\n this.handlers.set(name, {\n func: handler,\n serialize,\n deserialize,\n type,\n path: name,\n });\n return true;\n }\n unregister(name) {\n return this.handlers.delete(name);\n }\n /**\n * @deprecated No longer needed as of version 1.10.x\n */\n start() {\n if (this.http2Servers.size === 0 ||\n [...this.http2Servers.keys()].every(server => !server.listening)) {\n throw new Error('server must be bound in order to start');\n }\n if (this.started === true) {\n throw new Error('server is already started');\n }\n this.started = true;\n }\n tryShutdown(callback) {\n var _b;\n const wrappedCallback = (error) => {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n callback(error);\n };\n let pendingChecks = 0;\n function maybeCallback() {\n pendingChecks--;\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n this.shutdown = true;\n for (const [serverKey, server] of this.http2Servers.entries()) {\n pendingChecks++;\n const serverString = server.channelzRef.name;\n this.trace('Waiting for server ' + serverString + ' to close');\n this.closeServer(serverKey, () => {\n this.trace('Server ' + serverString + ' finished closing');\n maybeCallback();\n });\n for (const session of server.sessions.keys()) {\n pendingChecks++;\n const sessionString = (_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress;\n this.trace('Waiting for session ' + sessionString + ' to close');\n this.closeSession(session, () => {\n this.trace('Session ' + sessionString + ' finished closing');\n maybeCallback();\n });\n }\n }\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n addHttp2Port() {\n throw new Error('Not yet implemented');\n }\n /**\n * Get the channelz reference object for this server. The returned value is\n * garbage if channelz is disabled for this server.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n _verifyContentType(stream, headers) {\n const contentType = headers[http2.constants.HTTP2_HEADER_CONTENT_TYPE];\n if (typeof contentType !== 'string' ||\n !contentType.startsWith('application/grpc')) {\n stream.respond({\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,\n }, { endStream: true });\n return false;\n }\n return true;\n }\n _retrieveHandler(path) {\n this.trace('Received call to method ' +\n path +\n ' at address ' +\n this.serverAddressString);\n const handler = this.handlers.get(path);\n if (handler === undefined) {\n this.trace('No handler registered for method ' +\n path +\n '. Sending UNIMPLEMENTED status.');\n return null;\n }\n return handler;\n }\n _respondWithError(err, stream, channelzSessionInfo = null) {\n var _b, _c;\n const trailersToSend = Object.assign({ 'grpc-status': (_b = err.code) !== null && _b !== void 0 ? _b : constants_1.Status.INTERNAL, 'grpc-message': err.details, [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK, [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto' }, (_c = err.metadata) === null || _c === void 0 ? void 0 : _c.toHttp2Headers());\n stream.respond(trailersToSend, { endStream: true });\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n }\n _channelzHandler(stream, headers) {\n // for handling idle timeout\n this.onStreamOpened(stream);\n const channelzSessionInfo = this.sessions.get(stream.session);\n this.callTracker.addCallStarted();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallStarted();\n if (!this._verifyContentType(stream, headers)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, channelzSessionInfo);\n return;\n }\n const callEventTracker = {\n addMessageSent: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesSent += 1;\n channelzSessionInfo.lastMessageSentTimestamp = new Date();\n }\n },\n addMessageReceived: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesReceived += 1;\n channelzSessionInfo.lastMessageReceivedTimestamp = new Date();\n }\n },\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n onStreamEnd: success => {\n if (channelzSessionInfo) {\n if (success) {\n channelzSessionInfo.streamTracker.addCallSucceeded();\n }\n else {\n channelzSessionInfo.streamTracker.addCallFailed();\n }\n }\n },\n };\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, callEventTracker, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _streamHandler(stream, headers) {\n // for handling idle timeout\n this.onStreamOpened(stream);\n if (this._verifyContentType(stream, headers) !== true) {\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, null);\n return;\n }\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, null, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _runHandlerForCall(call, handler) {\n const { type } = handler;\n if (type === 'unary') {\n handleUnary(call, handler);\n }\n else if (type === 'clientStream') {\n handleClientStreaming(call, handler);\n }\n else if (type === 'serverStream') {\n handleServerStreaming(call, handler);\n }\n else if (type === 'bidi') {\n handleBidiStreaming(call, handler);\n }\n else {\n return false;\n }\n return true;\n }\n _setupHandlers(http2Server) {\n if (http2Server === null) {\n return;\n }\n const serverAddress = http2Server.address();\n let serverAddressString = 'null';\n if (serverAddress) {\n if (typeof serverAddress === 'string') {\n serverAddressString = serverAddress;\n }\n else {\n serverAddressString = serverAddress.address + ':' + serverAddress.port;\n }\n }\n this.serverAddressString = serverAddressString;\n const handler = this.channelzEnabled\n ? this._channelzHandler\n : this._streamHandler;\n const sessionHandler = this.channelzEnabled\n ? this._channelzSessionHandler(http2Server)\n : this._sessionHandler(http2Server);\n http2Server.on('stream', handler.bind(this));\n http2Server.on('session', sessionHandler);\n }\n _sessionHandler(http2Server) {\n return (session) => {\n var _b, _c, _d;\n (_b = this.http2Servers.get(http2Server)) === null || _b === void 0 ? void 0 : _b.sessions.add(session);\n let connectionAgeTimer = null;\n let connectionAgeGraceTimer = null;\n let keeapliveTimeTimer = null;\n let keepaliveTimeoutTimer = null;\n let sessionClosedByServer = false;\n const idleTimeoutObj = this.enableIdleTimeout(session);\n if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n // Apply a random jitter within a +/-10% range\n const jitterMagnitude = this.maxConnectionAgeMs / 10;\n const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n connectionAgeTimer = setTimeout(() => {\n var _b, _c;\n sessionClosedByServer = true;\n this.trace('Connection dropped by max connection age: ' +\n ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress));\n try {\n session.goaway(http2.constants.NGHTTP2_NO_ERROR, ~(1 << 31), kMaxAge);\n }\n catch (e) {\n // The goaway can't be sent because the session is already closed\n session.destroy();\n return;\n }\n session.close();\n /* Allow a grace period after sending the GOAWAY before forcibly\n * closing the connection. */\n if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n connectionAgeGraceTimer = setTimeout(() => {\n session.destroy();\n }, this.maxConnectionAgeGraceMs);\n (_c = connectionAgeGraceTimer.unref) === null || _c === void 0 ? void 0 : _c.call(connectionAgeGraceTimer);\n }\n }, this.maxConnectionAgeMs + jitter);\n (_c = connectionAgeTimer.unref) === null || _c === void 0 ? void 0 : _c.call(connectionAgeTimer);\n }\n if (this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS) {\n keeapliveTimeTimer = setInterval(() => {\n var _b;\n keepaliveTimeoutTimer = setTimeout(() => {\n sessionClosedByServer = true;\n session.close();\n }, this.keepaliveTimeoutMs);\n (_b = keepaliveTimeoutTimer.unref) === null || _b === void 0 ? void 0 : _b.call(keepaliveTimeoutTimer);\n try {\n session.ping((err, duration, payload) => {\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n if (err) {\n sessionClosedByServer = true;\n this.trace('Connection dropped due to error of a ping frame ' +\n err.message +\n ' return in ' +\n duration);\n session.close();\n }\n });\n }\n catch (e) {\n clearTimeout(keepaliveTimeoutTimer);\n // The ping can't be sent because the session is already closed\n session.destroy();\n }\n }, this.keepaliveTimeMs);\n (_d = keeapliveTimeTimer.unref) === null || _d === void 0 ? void 0 : _d.call(keeapliveTimeTimer);\n }\n session.on('close', () => {\n var _b, _c;\n if (!sessionClosedByServer) {\n this.trace(`Connection dropped by client ${(_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress}`);\n }\n if (connectionAgeTimer) {\n clearTimeout(connectionAgeTimer);\n }\n if (connectionAgeGraceTimer) {\n clearTimeout(connectionAgeGraceTimer);\n }\n if (keeapliveTimeTimer) {\n clearInterval(keeapliveTimeTimer);\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n }\n if (idleTimeoutObj !== null) {\n clearTimeout(idleTimeoutObj.timeout);\n this.sessionIdleTimeouts.delete(session);\n }\n (_c = this.http2Servers.get(http2Server)) === null || _c === void 0 ? void 0 : _c.sessions.delete(session);\n });\n };\n }\n _channelzSessionHandler(http2Server) {\n return (session) => {\n var _b, _c, _d, _e, _f;\n const channelzRef = (0, channelz_1.registerChannelzSocket)((_c = (_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress) !== null && _c !== void 0 ? _c : 'unknown', this.getChannelzSessionInfo.bind(this, session), this.channelzEnabled);\n const channelzSessionInfo = {\n ref: channelzRef,\n streamTracker: new channelz_1.ChannelzCallTracker(),\n messagesSent: 0,\n messagesReceived: 0,\n keepAlivesSent: 0,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n };\n (_d = this.http2Servers.get(http2Server)) === null || _d === void 0 ? void 0 : _d.sessions.add(session);\n this.sessions.set(session, channelzSessionInfo);\n const clientAddress = `${session.socket.remoteAddress}:${session.socket.remotePort}`;\n this.channelzTrace.addTrace('CT_INFO', 'Connection established by client ' + clientAddress);\n this.trace('Connection established by client ' + clientAddress);\n this.sessionChildrenTracker.refChild(channelzRef);\n let connectionAgeTimer = null;\n let connectionAgeGraceTimer = null;\n let keeapliveTimeTimer = null;\n let keepaliveTimeoutTimer = null;\n let sessionClosedByServer = false;\n const idleTimeoutObj = this.enableIdleTimeout(session);\n if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n // Apply a random jitter within a +/-10% range\n const jitterMagnitude = this.maxConnectionAgeMs / 10;\n const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n connectionAgeTimer = setTimeout(() => {\n var _b;\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by max connection age from ' + clientAddress);\n try {\n session.goaway(http2.constants.NGHTTP2_NO_ERROR, ~(1 << 31), kMaxAge);\n }\n catch (e) {\n // The goaway can't be sent because the session is already closed\n session.destroy();\n return;\n }\n session.close();\n /* Allow a grace period after sending the GOAWAY before forcibly\n * closing the connection. */\n if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n connectionAgeGraceTimer = setTimeout(() => {\n session.destroy();\n }, this.maxConnectionAgeGraceMs);\n (_b = connectionAgeGraceTimer.unref) === null || _b === void 0 ? void 0 : _b.call(connectionAgeGraceTimer);\n }\n }, this.maxConnectionAgeMs + jitter);\n (_e = connectionAgeTimer.unref) === null || _e === void 0 ? void 0 : _e.call(connectionAgeTimer);\n }\n if (this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS) {\n keeapliveTimeTimer = setInterval(() => {\n var _b;\n keepaliveTimeoutTimer = setTimeout(() => {\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by keepalive timeout from ' + clientAddress);\n session.close();\n }, this.keepaliveTimeoutMs);\n (_b = keepaliveTimeoutTimer.unref) === null || _b === void 0 ? void 0 : _b.call(keepaliveTimeoutTimer);\n try {\n session.ping((err, duration, payload) => {\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n if (err) {\n sessionClosedByServer = true;\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped due to error of a ping frame ' +\n err.message +\n ' return in ' +\n duration);\n session.close();\n }\n });\n channelzSessionInfo.keepAlivesSent += 1;\n }\n catch (e) {\n clearTimeout(keepaliveTimeoutTimer);\n // The ping can't be sent because the session is already closed\n session.destroy();\n }\n }, this.keepaliveTimeMs);\n (_f = keeapliveTimeTimer.unref) === null || _f === void 0 ? void 0 : _f.call(keeapliveTimeTimer);\n }\n session.on('close', () => {\n var _b;\n if (!sessionClosedByServer) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by client ' + clientAddress);\n }\n this.sessionChildrenTracker.unrefChild(channelzRef);\n (0, channelz_1.unregisterChannelzRef)(channelzRef);\n if (connectionAgeTimer) {\n clearTimeout(connectionAgeTimer);\n }\n if (connectionAgeGraceTimer) {\n clearTimeout(connectionAgeGraceTimer);\n }\n if (keeapliveTimeTimer) {\n clearInterval(keeapliveTimeTimer);\n if (keepaliveTimeoutTimer) {\n clearTimeout(keepaliveTimeoutTimer);\n }\n }\n if (idleTimeoutObj !== null) {\n clearTimeout(idleTimeoutObj.timeout);\n this.sessionIdleTimeouts.delete(session);\n }\n (_b = this.http2Servers.get(http2Server)) === null || _b === void 0 ? void 0 : _b.sessions.delete(session);\n this.sessions.delete(session);\n });\n };\n }\n enableIdleTimeout(session) {\n var _b, _c;\n if (this.sessionIdleTimeout >= MAX_CONNECTION_IDLE_MS) {\n return null;\n }\n const idleTimeoutObj = {\n activeStreams: 0,\n lastIdle: Date.now(),\n onClose: this.onStreamClose.bind(this, session),\n timeout: setTimeout(this.onIdleTimeout, this.sessionIdleTimeout, this, session),\n };\n (_c = (_b = idleTimeoutObj.timeout).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.sessionIdleTimeouts.set(session, idleTimeoutObj);\n const { socket } = session;\n this.trace('Enable idle timeout for ' +\n socket.remoteAddress +\n ':' +\n socket.remotePort);\n return idleTimeoutObj;\n }\n onIdleTimeout(ctx, session) {\n const { socket } = session;\n const sessionInfo = ctx.sessionIdleTimeouts.get(session);\n // if it is called while we have activeStreams - timer will not be rescheduled\n // until last active stream is closed, then it will call .refresh() on the timer\n // important part is to not clearTimeout(timer) or it becomes unusable\n // for future refreshes\n if (sessionInfo !== undefined &&\n sessionInfo.activeStreams === 0 &&\n Date.now() - sessionInfo.lastIdle >= ctx.sessionIdleTimeout) {\n ctx.trace('Session idle timeout triggered for ' +\n (socket === null || socket === void 0 ? void 0 : socket.remoteAddress) +\n ':' +\n (socket === null || socket === void 0 ? void 0 : socket.remotePort) +\n ' last idle at ' +\n sessionInfo.lastIdle);\n ctx.closeSession(session);\n }\n }\n onStreamOpened(stream) {\n const session = stream.session;\n const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n if (idleTimeoutObj) {\n idleTimeoutObj.activeStreams += 1;\n stream.once('close', idleTimeoutObj.onClose);\n }\n }\n onStreamClose(session) {\n var _b, _c;\n const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n if (idleTimeoutObj) {\n idleTimeoutObj.activeStreams -= 1;\n if (idleTimeoutObj.activeStreams === 0) {\n idleTimeoutObj.lastIdle = Date.now();\n idleTimeoutObj.timeout.refresh();\n this.trace('Session onStreamClose' +\n ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress) +\n ':' +\n ((_c = session.socket) === null || _c === void 0 ? void 0 : _c.remotePort) +\n ' at ' +\n idleTimeoutObj.lastIdle);\n }\n }\n }\n },\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _start_decorators = [deprecate('Calling start() is no longer necessary. It can be safely omitted.')];\n __esDecorate(_a, null, _start_decorators, { kind: \"method\", name: \"start\", static: false, private: false, access: { has: obj => \"start\" in obj, get: obj => obj.start }, metadata: _metadata }, null, _instanceExtraInitializers);\n if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n })(),\n _a;\n})();\nexports.Server = Server;\nasync function handleUnary(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null,\n });\n });\n }\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n }\n },\n });\n}\nfunction handleClientStreaming(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null,\n });\n });\n }\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleServerStreaming(call, handler) {\n let stream;\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null,\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleBidiStreaming(call, handler) {\n let stream;\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null,\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\n//# sourceMappingURL=server.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractAndSelectServiceConfig = exports.validateServiceConfig = exports.validateRetryThrottling = void 0;\n/* This file implements gRFC A2 and the service config spec:\n * https://github.com/grpc/proposal/blob/master/A2-service-configs-in-dns.md\n * https://github.com/grpc/grpc/blob/master/doc/service_config.md. Each\n * function here takes an object with unknown structure and returns its\n * specific object type if the input has the right structure, and throws an\n * error otherwise. */\n/* The any type is purposely used here. All functions validate their input at\n * runtime */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\n/**\n * Recognizes a number with up to 9 digits after the decimal point, followed by\n * an \"s\", representing a number of seconds.\n */\nconst DURATION_REGEX = /^\\d+(\\.\\d{1,9})?s$/;\n/**\n * Client language name used for determining whether this client matches a\n * `ServiceConfigCanaryConfig`'s `clientLanguage` list.\n */\nconst CLIENT_LANGUAGE_STRING = 'node';\nfunction validateName(obj) {\n // In this context, and unset field and '' are considered the same\n if ('service' in obj && obj.service !== '') {\n if (typeof obj.service !== 'string') {\n throw new Error(`Invalid method config name: invalid service: expected type string, got ${typeof obj.service}`);\n }\n if ('method' in obj && obj.method !== '') {\n if (typeof obj.method !== 'string') {\n throw new Error(`Invalid method config name: invalid method: expected type string, got ${typeof obj.service}`);\n }\n return {\n service: obj.service,\n method: obj.method,\n };\n }\n else {\n return {\n service: obj.service,\n };\n }\n }\n else {\n if ('method' in obj && obj.method !== undefined) {\n throw new Error(`Invalid method config name: method set with empty or unset service`);\n }\n return {};\n }\n}\nfunction validateRetryPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config retry policy: maxAttempts must be an integer at least 2');\n }\n if (!('initialBackoff' in obj) ||\n typeof obj.initialBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.initialBackoff)) {\n throw new Error('Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('maxBackoff' in obj) ||\n typeof obj.maxBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.maxBackoff)) {\n throw new Error('Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('backoffMultiplier' in obj) ||\n typeof obj.backoffMultiplier !== 'number' ||\n obj.backoffMultiplier <= 0) {\n throw new Error('Invalid method config retry policy: backoffMultiplier must be a number greater than 0');\n }\n if (!('retryableStatusCodes' in obj && Array.isArray(obj.retryableStatusCodes))) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes is required');\n }\n if (obj.retryableStatusCodes.length === 0) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes must be non-empty');\n }\n for (const value of obj.retryableStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value must be a string or number');\n }\n }\n return {\n maxAttempts: obj.maxAttempts,\n initialBackoff: obj.initialBackoff,\n maxBackoff: obj.maxBackoff,\n backoffMultiplier: obj.backoffMultiplier,\n retryableStatusCodes: obj.retryableStatusCodes,\n };\n}\nfunction validateHedgingPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config hedging policy: maxAttempts must be an integer at least 2');\n }\n if ('hedgingDelay' in obj &&\n (typeof obj.hedgingDelay !== 'string' ||\n !DURATION_REGEX.test(obj.hedgingDelay))) {\n throw new Error('Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s');\n }\n if ('nonFatalStatusCodes' in obj && Array.isArray(obj.nonFatalStatusCodes)) {\n for (const value of obj.nonFatalStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value must be a string or number');\n }\n }\n }\n const result = {\n maxAttempts: obj.maxAttempts,\n };\n if (obj.hedgingDelay) {\n result.hedgingDelay = obj.hedgingDelay;\n }\n if (obj.nonFatalStatusCodes) {\n result.nonFatalStatusCodes = obj.nonFatalStatusCodes;\n }\n return result;\n}\nfunction validateMethodConfig(obj) {\n var _a;\n const result = {\n name: [],\n };\n if (!('name' in obj) || !Array.isArray(obj.name)) {\n throw new Error('Invalid method config: invalid name array');\n }\n for (const name of obj.name) {\n result.name.push(validateName(name));\n }\n if ('waitForReady' in obj) {\n if (typeof obj.waitForReady !== 'boolean') {\n throw new Error('Invalid method config: invalid waitForReady');\n }\n result.waitForReady = obj.waitForReady;\n }\n if ('timeout' in obj) {\n if (typeof obj.timeout === 'object') {\n if (!('seconds' in obj.timeout) ||\n !(typeof obj.timeout.seconds === 'number')) {\n throw new Error('Invalid method config: invalid timeout.seconds');\n }\n if (!('nanos' in obj.timeout) ||\n !(typeof obj.timeout.nanos === 'number')) {\n throw new Error('Invalid method config: invalid timeout.nanos');\n }\n result.timeout = obj.timeout;\n }\n else if (typeof obj.timeout === 'string' &&\n DURATION_REGEX.test(obj.timeout)) {\n const timeoutParts = obj.timeout\n .substring(0, obj.timeout.length - 1)\n .split('.');\n result.timeout = {\n seconds: timeoutParts[0] | 0,\n nanos: ((_a = timeoutParts[1]) !== null && _a !== void 0 ? _a : 0) | 0,\n };\n }\n else {\n throw new Error('Invalid method config: invalid timeout');\n }\n }\n if ('maxRequestBytes' in obj) {\n if (typeof obj.maxRequestBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxRequestBytes = obj.maxRequestBytes;\n }\n if ('maxResponseBytes' in obj) {\n if (typeof obj.maxResponseBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxResponseBytes = obj.maxResponseBytes;\n }\n if ('retryPolicy' in obj) {\n if ('hedgingPolicy' in obj) {\n throw new Error('Invalid method config: retryPolicy and hedgingPolicy cannot both be specified');\n }\n else {\n result.retryPolicy = validateRetryPolicy(obj.retryPolicy);\n }\n }\n else if ('hedgingPolicy' in obj) {\n result.hedgingPolicy = validateHedgingPolicy(obj.hedgingPolicy);\n }\n return result;\n}\nfunction validateRetryThrottling(obj) {\n if (!('maxTokens' in obj) ||\n typeof obj.maxTokens !== 'number' ||\n obj.maxTokens <= 0 ||\n obj.maxTokens > 1000) {\n throw new Error('Invalid retryThrottling: maxTokens must be a number in (0, 1000]');\n }\n if (!('tokenRatio' in obj) ||\n typeof obj.tokenRatio !== 'number' ||\n obj.tokenRatio <= 0) {\n throw new Error('Invalid retryThrottling: tokenRatio must be a number greater than 0');\n }\n return {\n maxTokens: +obj.maxTokens.toFixed(3),\n tokenRatio: +obj.tokenRatio.toFixed(3),\n };\n}\nexports.validateRetryThrottling = validateRetryThrottling;\nfunction validateLoadBalancingConfig(obj) {\n if (!(typeof obj === 'object' && obj !== null)) {\n throw new Error(`Invalid loadBalancingConfig: unexpected type ${typeof obj}`);\n }\n const keys = Object.keys(obj);\n if (keys.length > 1) {\n throw new Error(`Invalid loadBalancingConfig: unexpected multiple keys ${keys}`);\n }\n if (keys.length === 0) {\n throw new Error('Invalid loadBalancingConfig: load balancing policy name required');\n }\n return {\n [keys[0]]: obj[keys[0]],\n };\n}\nfunction validateServiceConfig(obj) {\n const result = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n if ('loadBalancingPolicy' in obj) {\n if (typeof obj.loadBalancingPolicy === 'string') {\n result.loadBalancingPolicy = obj.loadBalancingPolicy;\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingPolicy');\n }\n }\n if ('loadBalancingConfig' in obj) {\n if (Array.isArray(obj.loadBalancingConfig)) {\n for (const config of obj.loadBalancingConfig) {\n result.loadBalancingConfig.push(validateLoadBalancingConfig(config));\n }\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingConfig');\n }\n }\n if ('methodConfig' in obj) {\n if (Array.isArray(obj.methodConfig)) {\n for (const methodConfig of obj.methodConfig) {\n result.methodConfig.push(validateMethodConfig(methodConfig));\n }\n }\n }\n if ('retryThrottling' in obj) {\n result.retryThrottling = validateRetryThrottling(obj.retryThrottling);\n }\n // Validate method name uniqueness\n const seenMethodNames = [];\n for (const methodConfig of result.methodConfig) {\n for (const name of methodConfig.name) {\n for (const seenName of seenMethodNames) {\n if (name.service === seenName.service &&\n name.method === seenName.method) {\n throw new Error(`Invalid service config: duplicate name ${name.service}/${name.method}`);\n }\n }\n seenMethodNames.push(name);\n }\n }\n return result;\n}\nexports.validateServiceConfig = validateServiceConfig;\nfunction validateCanaryConfig(obj) {\n if (!('serviceConfig' in obj)) {\n throw new Error('Invalid service config choice: missing service config');\n }\n const result = {\n serviceConfig: validateServiceConfig(obj.serviceConfig),\n };\n if ('clientLanguage' in obj) {\n if (Array.isArray(obj.clientLanguage)) {\n result.clientLanguage = [];\n for (const lang of obj.clientLanguage) {\n if (typeof lang === 'string') {\n result.clientLanguage.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n if ('clientHostname' in obj) {\n if (Array.isArray(obj.clientHostname)) {\n result.clientHostname = [];\n for (const lang of obj.clientHostname) {\n if (typeof lang === 'string') {\n result.clientHostname.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n if ('percentage' in obj) {\n if (typeof obj.percentage === 'number' &&\n 0 <= obj.percentage &&\n obj.percentage <= 100) {\n result.percentage = obj.percentage;\n }\n else {\n throw new Error('Invalid service config choice: invalid percentage');\n }\n }\n // Validate that no unexpected fields are present\n const allowedFields = [\n 'clientLanguage',\n 'percentage',\n 'clientHostname',\n 'serviceConfig',\n ];\n for (const field in obj) {\n if (!allowedFields.includes(field)) {\n throw new Error(`Invalid service config choice: unexpected field ${field}`);\n }\n }\n return result;\n}\nfunction validateAndSelectCanaryConfig(obj, percentage) {\n if (!Array.isArray(obj)) {\n throw new Error('Invalid service config list');\n }\n for (const config of obj) {\n const validatedConfig = validateCanaryConfig(config);\n /* For each field, we check if it is present, then only discard the\n * config if the field value does not match the current client */\n if (typeof validatedConfig.percentage === 'number' &&\n percentage > validatedConfig.percentage) {\n continue;\n }\n if (Array.isArray(validatedConfig.clientHostname)) {\n let hostnameMatched = false;\n for (const hostname of validatedConfig.clientHostname) {\n if (hostname === os.hostname()) {\n hostnameMatched = true;\n }\n }\n if (!hostnameMatched) {\n continue;\n }\n }\n if (Array.isArray(validatedConfig.clientLanguage)) {\n let languageMatched = false;\n for (const language of validatedConfig.clientLanguage) {\n if (language === CLIENT_LANGUAGE_STRING) {\n languageMatched = true;\n }\n }\n if (!languageMatched) {\n continue;\n }\n }\n return validatedConfig.serviceConfig;\n }\n throw new Error('No matching service config found');\n}\n/**\n * Find the \"grpc_config\" record among the TXT records, parse its value as JSON, validate its contents,\n * and select a service config with selection fields that all match this client. Most of these steps\n * can fail with an error; the caller must handle any errors thrown this way.\n * @param txtRecord The TXT record array that is output from a successful call to dns.resolveTxt\n * @param percentage A number chosen from the range [0, 100) that is used to select which config to use\n * @return The service configuration to use, given the percentage value, or null if the service config\n * data has a valid format but none of the options match the current client.\n */\nfunction extractAndSelectServiceConfig(txtRecord, percentage) {\n for (const record of txtRecord) {\n if (record.length > 0 && record[0].startsWith('grpc_config=')) {\n /* Treat the list of strings in this record as a single string and remove\n * \"grpc_config=\" from the beginning. The rest should be a JSON string */\n const recordString = record.join('').substring('grpc_config='.length);\n const recordJson = JSON.parse(recordString);\n return validateAndSelectCanaryConfig(recordJson, percentage);\n }\n }\n return null;\n}\nexports.extractAndSelectServiceConfig = extractAndSelectServiceConfig;\n//# sourceMappingURL=service-config.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusBuilder = void 0;\n/**\n * A builder for gRPC status objects.\n */\nclass StatusBuilder {\n constructor() {\n this.code = null;\n this.details = null;\n this.metadata = null;\n }\n /**\n * Adds a status code to the builder.\n */\n withCode(code) {\n this.code = code;\n return this;\n }\n /**\n * Adds details to the builder.\n */\n withDetails(details) {\n this.details = details;\n return this;\n }\n /**\n * Adds metadata to the builder.\n */\n withMetadata(metadata) {\n this.metadata = metadata;\n return this;\n }\n /**\n * Builds the status object.\n */\n build() {\n const status = {};\n if (this.code !== null) {\n status.code = this.code;\n }\n if (this.details !== null) {\n status.details = this.details;\n }\n if (this.metadata !== null) {\n status.metadata = this.metadata;\n }\n return status;\n }\n}\nexports.StatusBuilder = StatusBuilder;\n//# sourceMappingURL=status-builder.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamDecoder = void 0;\nvar ReadState;\n(function (ReadState) {\n ReadState[ReadState[\"NO_DATA\"] = 0] = \"NO_DATA\";\n ReadState[ReadState[\"READING_SIZE\"] = 1] = \"READING_SIZE\";\n ReadState[ReadState[\"READING_MESSAGE\"] = 2] = \"READING_MESSAGE\";\n})(ReadState || (ReadState = {}));\nclass StreamDecoder {\n constructor(maxReadMessageLength) {\n this.maxReadMessageLength = maxReadMessageLength;\n this.readState = ReadState.NO_DATA;\n this.readCompressFlag = Buffer.alloc(1);\n this.readPartialSize = Buffer.alloc(4);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readPartialMessage = [];\n this.readMessageRemaining = 0;\n }\n write(data) {\n let readHead = 0;\n let toRead;\n const result = [];\n while (readHead < data.length) {\n switch (this.readState) {\n case ReadState.NO_DATA:\n this.readCompressFlag = data.slice(readHead, readHead + 1);\n readHead += 1;\n this.readState = ReadState.READING_SIZE;\n this.readPartialSize.fill(0);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readMessageRemaining = 0;\n this.readPartialMessage = [];\n break;\n case ReadState.READING_SIZE:\n toRead = Math.min(data.length - readHead, this.readSizeRemaining);\n data.copy(this.readPartialSize, 4 - this.readSizeRemaining, readHead, readHead + toRead);\n this.readSizeRemaining -= toRead;\n readHead += toRead;\n // readSizeRemaining >=0 here\n if (this.readSizeRemaining === 0) {\n this.readMessageSize = this.readPartialSize.readUInt32BE(0);\n if (this.maxReadMessageLength !== -1 && this.readMessageSize > this.maxReadMessageLength) {\n throw new Error(`Received message larger than max (${this.readMessageSize} vs ${this.maxReadMessageLength})`);\n }\n this.readMessageRemaining = this.readMessageSize;\n if (this.readMessageRemaining > 0) {\n this.readState = ReadState.READING_MESSAGE;\n }\n else {\n const message = Buffer.concat([this.readCompressFlag, this.readPartialSize], 5);\n this.readState = ReadState.NO_DATA;\n result.push(message);\n }\n }\n break;\n case ReadState.READING_MESSAGE:\n toRead = Math.min(data.length - readHead, this.readMessageRemaining);\n this.readPartialMessage.push(data.slice(readHead, readHead + toRead));\n this.readMessageRemaining -= toRead;\n readHead += toRead;\n // readMessageRemaining >=0 here\n if (this.readMessageRemaining === 0) {\n // At this point, we have read a full message\n const framedMessageBuffers = [\n this.readCompressFlag,\n this.readPartialSize,\n ].concat(this.readPartialMessage);\n const framedMessage = Buffer.concat(framedMessageBuffers, this.readMessageSize + 5);\n this.readState = ReadState.NO_DATA;\n result.push(framedMessage);\n }\n break;\n default:\n throw new Error('Unexpected read state');\n }\n }\n return result;\n }\n}\nexports.StreamDecoder = StreamDecoder;\n//# sourceMappingURL=stream-decoder.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.endpointEqual = exports.stringToSubchannelAddress = exports.subchannelAddressToString = exports.subchannelAddressEqual = exports.isTcpSubchannelAddress = void 0;\nconst net_1 = require(\"net\");\nfunction isTcpSubchannelAddress(address) {\n return 'port' in address;\n}\nexports.isTcpSubchannelAddress = isTcpSubchannelAddress;\nfunction subchannelAddressEqual(address1, address2) {\n if (!address1 && !address2) {\n return true;\n }\n if (!address1 || !address2) {\n return false;\n }\n if (isTcpSubchannelAddress(address1)) {\n return (isTcpSubchannelAddress(address2) &&\n address1.host === address2.host &&\n address1.port === address2.port);\n }\n else {\n return !isTcpSubchannelAddress(address2) && address1.path === address2.path;\n }\n}\nexports.subchannelAddressEqual = subchannelAddressEqual;\nfunction subchannelAddressToString(address) {\n if (isTcpSubchannelAddress(address)) {\n if ((0, net_1.isIPv6)(address.host)) {\n return '[' + address.host + ']:' + address.port;\n }\n else {\n return address.host + ':' + address.port;\n }\n }\n else {\n return address.path;\n }\n}\nexports.subchannelAddressToString = subchannelAddressToString;\nconst DEFAULT_PORT = 443;\nfunction stringToSubchannelAddress(addressString, port) {\n if ((0, net_1.isIP)(addressString)) {\n return {\n host: addressString,\n port: port !== null && port !== void 0 ? port : DEFAULT_PORT,\n };\n }\n else {\n return {\n path: addressString,\n };\n }\n}\nexports.stringToSubchannelAddress = stringToSubchannelAddress;\nfunction endpointEqual(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (let i = 0; i < endpoint1.addresses.length; i++) {\n if (!subchannelAddressEqual(endpoint1.addresses[i], endpoint2.addresses[i])) {\n return false;\n }\n }\n return true;\n}\nexports.endpointEqual = endpointEqual;\nfunction endpointToString(endpoint) {\n return ('[' + endpoint.addresses.map(subchannelAddressToString).join(', ') + ']');\n}\nexports.endpointToString = endpointToString;\nfunction endpointHasAddress(endpoint, expectedAddress) {\n for (const address of endpoint.addresses) {\n if (subchannelAddressEqual(address, expectedAddress)) {\n return true;\n }\n }\n return false;\n}\nexports.endpointHasAddress = endpointHasAddress;\nfunction endpointEqualUnordered(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (const address1 of endpoint1.addresses) {\n let matchFound = false;\n for (const address2 of endpoint2.addresses) {\n if (subchannelAddressEqual(address1, address2)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) {\n return false;\n }\n }\n return true;\n}\nclass EndpointMap {\n constructor() {\n this.map = new Set();\n }\n get size() {\n return this.map.size;\n }\n getForSubchannelAddress(address) {\n for (const entry of this.map) {\n if (endpointHasAddress(entry.key, address)) {\n return entry.value;\n }\n }\n return undefined;\n }\n /**\n * Delete any entries in this map with keys that are not in endpoints\n * @param endpoints\n */\n deleteMissing(endpoints) {\n const removedValues = [];\n for (const entry of this.map) {\n let foundEntry = false;\n for (const endpoint of endpoints) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n foundEntry = true;\n }\n }\n if (!foundEntry) {\n removedValues.push(entry.value);\n this.map.delete(entry);\n }\n }\n return removedValues;\n }\n get(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return entry.value;\n }\n }\n return undefined;\n }\n set(endpoint, mapEntry) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n entry.value = mapEntry;\n return;\n }\n }\n this.map.add({ key: endpoint, value: mapEntry });\n }\n delete(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n this.map.delete(entry);\n return;\n }\n }\n }\n has(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return true;\n }\n }\n return false;\n }\n clear() {\n this.map.clear();\n }\n *keys() {\n for (const entry of this.map) {\n yield entry.key;\n }\n }\n *values() {\n for (const entry of this.map) {\n yield entry.value;\n }\n }\n *entries() {\n for (const entry of this.map) {\n yield [entry.key, entry.value];\n }\n }\n}\nexports.EndpointMap = EndpointMap;\n//# sourceMappingURL=subchannel-address.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelCall = void 0;\nconst http2 = require(\"http2\");\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst TRACER_NAME = 'subchannel_call';\n/**\n * Should do approximately the same thing as util.getSystemErrorName but the\n * TypeScript types don't have that function for some reason so I just made my\n * own.\n * @param errno\n */\nfunction getSystemErrorName(errno) {\n for (const [name, num] of Object.entries(os.constants.errno)) {\n if (num === errno) {\n return name;\n }\n }\n return 'Unknown system error ' + errno;\n}\nfunction mapHttpStatusCode(code) {\n const details = `Received HTTP status code ${code}`;\n let mappedStatusCode;\n switch (code) {\n // TODO(murgatroid99): handle 100 and 101\n case 400:\n mappedStatusCode = constants_1.Status.INTERNAL;\n break;\n case 401:\n mappedStatusCode = constants_1.Status.UNAUTHENTICATED;\n break;\n case 403:\n mappedStatusCode = constants_1.Status.PERMISSION_DENIED;\n break;\n case 404:\n mappedStatusCode = constants_1.Status.UNIMPLEMENTED;\n break;\n case 429:\n case 502:\n case 503:\n case 504:\n mappedStatusCode = constants_1.Status.UNAVAILABLE;\n break;\n default:\n mappedStatusCode = constants_1.Status.UNKNOWN;\n }\n return {\n code: mappedStatusCode,\n details: details,\n metadata: new metadata_1.Metadata()\n };\n}\nclass Http2SubchannelCall {\n constructor(http2Stream, callEventTracker, listener, transport, callId) {\n var _a;\n this.http2Stream = http2Stream;\n this.callEventTracker = callEventTracker;\n this.listener = listener;\n this.transport = transport;\n this.callId = callId;\n this.isReadFilterPending = false;\n this.isPushPending = false;\n this.canPush = false;\n /**\n * Indicates that an 'end' event has come from the http2 stream, so there\n * will be no more data events.\n */\n this.readsClosed = false;\n this.statusOutput = false;\n this.unpushedReadMessages = [];\n // This is populated (non-null) if and only if the call has ended\n this.finalStatus = null;\n this.internalError = null;\n this.serverEndedCall = false;\n const maxReceiveMessageLength = (_a = transport.getOptions()['grpc.max_receive_message_length']) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n this.decoder = new stream_decoder_1.StreamDecoder(maxReceiveMessageLength);\n http2Stream.on('response', (headers, flags) => {\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server headers:\\n' + headersString);\n this.httpStatusCode = headers[':status'];\n if (flags & http2.constants.NGHTTP2_FLAG_END_STREAM) {\n this.handleTrailers(headers);\n }\n else {\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNKNOWN,\n details: error.message,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.listener.onReceiveMetadata(metadata);\n }\n });\n http2Stream.on('trailers', (headers) => {\n this.handleTrailers(headers);\n });\n http2Stream.on('data', (data) => {\n /* If the status has already been output, allow the http2 stream to\n * drain without processing the data. */\n if (this.statusOutput) {\n return;\n }\n this.trace('receive HTTP/2 data frame of length ' + data.length);\n let messages;\n try {\n messages = this.decoder.write(data);\n }\n catch (e) {\n this.cancelWithStatus(constants_1.Status.RESOURCE_EXHAUSTED, e.message);\n return;\n }\n for (const message of messages) {\n this.trace('parsed message of length ' + message.length);\n this.callEventTracker.addMessageReceived();\n this.tryPush(message);\n }\n });\n http2Stream.on('end', () => {\n this.readsClosed = true;\n this.maybeOutputStatus();\n });\n http2Stream.on('close', () => {\n this.serverEndedCall = true;\n /* Use process.next tick to ensure that this code happens after any\n * \"error\" event that may be emitted at about the same time, so that\n * we can bubble up the error message from that event. */\n process.nextTick(() => {\n var _a;\n this.trace('HTTP/2 stream closed with code ' + http2Stream.rstCode);\n /* If we have a final status with an OK status code, that means that\n * we have received all of the messages and we have processed the\n * trailers and the call completed successfully, so it doesn't matter\n * how the stream ends after that */\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n return;\n }\n let code;\n let details = '';\n switch (http2Stream.rstCode) {\n case http2.constants.NGHTTP2_NO_ERROR:\n /* If we get a NO_ERROR code and we already have a status, the\n * stream completed properly and we just haven't fully processed\n * it yet */\n if (this.finalStatus !== null) {\n return;\n }\n if (this.httpStatusCode && this.httpStatusCode !== 200) {\n const mappedStatus = mapHttpStatusCode(this.httpStatusCode);\n code = mappedStatus.code;\n details = mappedStatus.details;\n }\n else {\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode} (Call ended without gRPC status)`;\n }\n break;\n case http2.constants.NGHTTP2_REFUSED_STREAM:\n code = constants_1.Status.UNAVAILABLE;\n details = 'Stream refused by server';\n break;\n case http2.constants.NGHTTP2_CANCEL:\n code = constants_1.Status.CANCELLED;\n details = 'Call cancelled';\n break;\n case http2.constants.NGHTTP2_ENHANCE_YOUR_CALM:\n code = constants_1.Status.RESOURCE_EXHAUSTED;\n details = 'Bandwidth exhausted or memory limit exceeded';\n break;\n case http2.constants.NGHTTP2_INADEQUATE_SECURITY:\n code = constants_1.Status.PERMISSION_DENIED;\n details = 'Protocol not secure enough';\n break;\n case http2.constants.NGHTTP2_INTERNAL_ERROR:\n code = constants_1.Status.INTERNAL;\n if (this.internalError === null) {\n /* This error code was previously handled in the default case, and\n * there are several instances of it online, so I wanted to\n * preserve the original error message so that people find existing\n * information in searches, but also include the more recognizable\n * \"Internal server error\" message. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} (Internal server error)`;\n }\n else {\n if (this.internalError.code === 'ECONNRESET' ||\n this.internalError.code === 'ETIMEDOUT') {\n code = constants_1.Status.UNAVAILABLE;\n details = this.internalError.message;\n }\n else {\n /* The \"Received RST_STREAM with code ...\" error is preserved\n * here for continuity with errors reported online, but the\n * error message at the end will probably be more relevant in\n * most cases. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} triggered by internal client error: ${this.internalError.message}`;\n }\n }\n break;\n default:\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode}`;\n }\n // This is a no-op if trailers were received at all.\n // This is OK, because status codes emitted here correspond to more\n // catastrophic issues that prevent us from receiving trailers in the\n // first place.\n this.endCall({\n code,\n details,\n metadata: new metadata_1.Metadata(),\n rstCode: http2Stream.rstCode,\n });\n });\n });\n http2Stream.on('error', (err) => {\n /* We need an error handler here to stop \"Uncaught Error\" exceptions\n * from bubbling up. However, errors here should all correspond to\n * \"close\" events, where we will handle the error more granularly */\n /* Specifically looking for stream errors that were *not* constructed\n * from a RST_STREAM response here:\n * https://github.com/nodejs/node/blob/8b8620d580314050175983402dfddf2674e8e22a/lib/internal/http2/core.js#L2267\n */\n if (err.code !== 'ERR_HTTP2_STREAM_ERROR') {\n this.trace('Node error event: message=' +\n err.message +\n ' code=' +\n err.code +\n ' errno=' +\n getSystemErrorName(err.errno) +\n ' syscall=' +\n err.syscall);\n this.internalError = err;\n }\n this.callEventTracker.onStreamEnd(false);\n });\n }\n getDeadlineInfo() {\n return [`remote_addr=${this.getPeer()}`];\n }\n onDisconnect() {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: 'Connection dropped',\n metadata: new metadata_1.Metadata(),\n });\n }\n outputStatus() {\n /* Precondition: this.finalStatus !== null */\n if (!this.statusOutput) {\n this.statusOutput = true;\n this.trace('ended with status: code=' +\n this.finalStatus.code +\n ' details=\"' +\n this.finalStatus.details +\n '\"');\n this.callEventTracker.onCallEnd(this.finalStatus);\n /* We delay the actual action of bubbling up the status to insulate the\n * cleanup code in this class from any errors that may be thrown in the\n * upper layers as a result of bubbling up the status. In particular,\n * if the status is not OK, the \"error\" event may be emitted\n * synchronously at the top level, which will result in a thrown error if\n * the user does not handle that event. */\n process.nextTick(() => {\n this.listener.onReceiveStatus(this.finalStatus);\n });\n /* Leave the http2 stream in flowing state to drain incoming messages, to\n * ensure that the stream closure completes. The call stream already does\n * not push more messages after the status is output, so the messages go\n * nowhere either way. */\n this.http2Stream.resume();\n }\n }\n trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callId + '] ' + text);\n }\n /**\n * On first call, emits a 'status' event with the given StatusObject.\n * Subsequent calls are no-ops.\n * @param status The status of the call.\n */\n endCall(status) {\n /* If the status is OK and a new status comes in (e.g. from a\n * deserialization failure), that new status takes priority */\n if (this.finalStatus === null || this.finalStatus.code === constants_1.Status.OK) {\n this.finalStatus = status;\n this.maybeOutputStatus();\n }\n this.destroyHttp2Stream();\n }\n maybeOutputStatus() {\n if (this.finalStatus !== null) {\n /* The combination check of readsClosed and that the two message buffer\n * arrays are empty checks that there all incoming data has been fully\n * processed */\n if (this.finalStatus.code !== constants_1.Status.OK ||\n (this.readsClosed &&\n this.unpushedReadMessages.length === 0 &&\n !this.isReadFilterPending &&\n !this.isPushPending)) {\n this.outputStatus();\n }\n }\n }\n push(message) {\n this.trace('pushing to reader message of length ' +\n (message instanceof Buffer ? message.length : null));\n this.canPush = false;\n this.isPushPending = true;\n process.nextTick(() => {\n this.isPushPending = false;\n /* If we have already output the status any later messages should be\n * ignored, and can cause out-of-order operation errors higher up in the\n * stack. Checking as late as possible here to avoid any race conditions.\n */\n if (this.statusOutput) {\n return;\n }\n this.listener.onReceiveMessage(message);\n this.maybeOutputStatus();\n });\n }\n tryPush(messageBytes) {\n if (this.canPush) {\n this.http2Stream.pause();\n this.push(messageBytes);\n }\n else {\n this.trace('unpushedReadMessages.push message of length ' + messageBytes.length);\n this.unpushedReadMessages.push(messageBytes);\n }\n }\n handleTrailers(headers) {\n this.serverEndedCall = true;\n this.callEventTracker.onStreamEnd(true);\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server trailers:\\n' + headersString);\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (e) {\n metadata = new metadata_1.Metadata();\n }\n const metadataMap = metadata.getMap();\n let status;\n if (typeof metadataMap['grpc-status'] === 'string') {\n const receivedStatus = Number(metadataMap['grpc-status']);\n this.trace('received status code ' + receivedStatus + ' from server');\n metadata.remove('grpc-status');\n let details = '';\n if (typeof metadataMap['grpc-message'] === 'string') {\n try {\n details = decodeURI(metadataMap['grpc-message']);\n }\n catch (e) {\n details = metadataMap['grpc-message'];\n }\n metadata.remove('grpc-message');\n this.trace('received status details string \"' + details + '\" from server');\n }\n status = {\n code: receivedStatus,\n details: details,\n metadata: metadata\n };\n }\n else if (this.httpStatusCode) {\n status = mapHttpStatusCode(this.httpStatusCode);\n status.metadata = metadata;\n }\n else {\n status = {\n code: constants_1.Status.UNKNOWN,\n details: 'No status information received',\n metadata: metadata\n };\n }\n // This is a no-op if the call was already ended when handling headers.\n this.endCall(status);\n }\n destroyHttp2Stream() {\n var _a;\n // The http2 stream could already have been destroyed if cancelWithStatus\n // is called in response to an internal http2 error.\n if (this.http2Stream.destroyed) {\n return;\n }\n /* If the server ended the call, sending an RST_STREAM is redundant, so we\n * just half close on the client side instead to finish closing the stream.\n */\n if (this.serverEndedCall) {\n this.http2Stream.end();\n }\n else {\n /* If the call has ended with an OK status, communicate that when closing\n * the stream, partly to avoid a situation in which we detect an error\n * RST_STREAM as a result after we have the status */\n let code;\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n code = http2.constants.NGHTTP2_NO_ERROR;\n }\n else {\n code = http2.constants.NGHTTP2_CANCEL;\n }\n this.trace('close http2 stream with code ' + code);\n this.http2Stream.close(code);\n }\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.endCall({ code: status, details, metadata: new metadata_1.Metadata() });\n }\n getStatus() {\n return this.finalStatus;\n }\n getPeer() {\n return this.transport.getPeerName();\n }\n getCallNumber() {\n return this.callId;\n }\n startRead() {\n /* If the stream has ended with an error, we should not emit any more\n * messages and we should communicate that the stream has ended */\n if (this.finalStatus !== null && this.finalStatus.code !== constants_1.Status.OK) {\n this.readsClosed = true;\n this.maybeOutputStatus();\n return;\n }\n this.canPush = true;\n if (this.unpushedReadMessages.length > 0) {\n const nextMessage = this.unpushedReadMessages.shift();\n this.push(nextMessage);\n return;\n }\n /* Only resume reading from the http2Stream if we don't have any pending\n * messages to emit */\n this.http2Stream.resume();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n const cb = (error) => {\n /* nextTick here ensures that no stream action can be taken in the call\n * stack of the write callback, in order to hopefully work around\n * https://github.com/nodejs/node/issues/49147 */\n process.nextTick(() => {\n var _a;\n let code = constants_1.Status.UNAVAILABLE;\n if ((error === null || error === void 0 ? void 0 : error.code) ===\n 'ERR_STREAM_WRITE_AFTER_END') {\n code = constants_1.Status.INTERNAL;\n }\n if (error) {\n this.cancelWithStatus(code, `Write error: ${error.message}`);\n }\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n });\n };\n this.trace('sending data chunk of length ' + message.length);\n this.callEventTracker.addMessageSent();\n try {\n this.http2Stream.write(message, cb);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: `Write failed with error ${error.message}`,\n metadata: new metadata_1.Metadata(),\n });\n }\n }\n halfClose() {\n this.trace('end() called');\n this.trace('calling end() on HTTP/2 stream');\n this.http2Stream.end();\n }\n}\nexports.Http2SubchannelCall = Http2SubchannelCall;\n//# sourceMappingURL=subchannel-call.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = void 0;\nclass BaseSubchannelWrapper {\n constructor(child) {\n this.child = child;\n this.healthy = true;\n this.healthListeners = new Set();\n child.addHealthStateWatcher(childHealthy => {\n /* A change to the child health state only affects this wrapper's overall\n * health state if this wrapper is reporting healthy. */\n if (this.healthy) {\n this.updateHealthListeners();\n }\n });\n }\n updateHealthListeners() {\n for (const listener of this.healthListeners) {\n listener(this.isHealthy());\n }\n }\n getConnectivityState() {\n return this.child.getConnectivityState();\n }\n addConnectivityStateListener(listener) {\n this.child.addConnectivityStateListener(listener);\n }\n removeConnectivityStateListener(listener) {\n this.child.removeConnectivityStateListener(listener);\n }\n startConnecting() {\n this.child.startConnecting();\n }\n getAddress() {\n return this.child.getAddress();\n }\n throttleKeepalive(newKeepaliveTime) {\n this.child.throttleKeepalive(newKeepaliveTime);\n }\n ref() {\n this.child.ref();\n }\n unref() {\n this.child.unref();\n }\n getChannelzRef() {\n return this.child.getChannelzRef();\n }\n isHealthy() {\n return this.healthy && this.child.isHealthy();\n }\n addHealthStateWatcher(listener) {\n this.healthListeners.add(listener);\n }\n removeHealthStateWatcher(listener) {\n this.healthListeners.delete(listener);\n }\n setHealthy(healthy) {\n if (healthy !== this.healthy) {\n this.healthy = healthy;\n /* A change to this wrapper's health state only affects the overall\n * reported health state if the child is healthy. */\n if (this.child.isHealthy()) {\n this.updateHealthListeners();\n }\n }\n }\n getRealSubchannel() {\n return this.child.getRealSubchannel();\n }\n realSubchannelEquals(other) {\n return this.getRealSubchannel() === other.getRealSubchannel();\n }\n}\nexports.BaseSubchannelWrapper = BaseSubchannelWrapper;\n//# sourceMappingURL=subchannel-interface.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSubchannelPool = exports.SubchannelPool = void 0;\nconst channel_options_1 = require(\"./channel-options\");\nconst subchannel_1 = require(\"./subchannel\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst transport_1 = require(\"./transport\");\n// 10 seconds in milliseconds. This value is arbitrary.\n/**\n * The amount of time in between checks for dropping subchannels that have no\n * other references\n */\nconst REF_CHECK_INTERVAL = 10000;\nclass SubchannelPool {\n /**\n * A pool of subchannels use for making connections. Subchannels with the\n * exact same parameters will be reused.\n */\n constructor() {\n this.pool = Object.create(null);\n /**\n * A timer of a task performing a periodic subchannel cleanup.\n */\n this.cleanupTimer = null;\n }\n /**\n * Unrefs all unused subchannels and cancels the cleanup task if all\n * subchannels have been unrefed.\n */\n unrefUnusedSubchannels() {\n let allSubchannelsUnrefed = true;\n /* These objects are created with Object.create(null), so they do not\n * have a prototype, which means that for (... in ...) loops over them\n * do not need to be filtered */\n // eslint-disable-disable-next-line:forin\n for (const channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n const refedSubchannels = subchannelObjArray.filter(value => !value.subchannel.unrefIfOneRef());\n if (refedSubchannels.length > 0) {\n allSubchannelsUnrefed = false;\n }\n /* For each subchannel in the pool, try to unref it if it has\n * exactly one ref (which is the ref from the pool itself). If that\n * does happen, remove the subchannel from the pool */\n this.pool[channelTarget] = refedSubchannels;\n }\n /* Currently we do not delete keys with empty values. If that results\n * in significant memory usage we should change it. */\n // Cancel the cleanup task if all subchannels have been unrefed.\n if (allSubchannelsUnrefed && this.cleanupTimer !== null) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n }\n /**\n * Ensures that the cleanup task is spawned.\n */\n ensureCleanupTask() {\n var _a, _b;\n if (this.cleanupTimer === null) {\n this.cleanupTimer = setInterval(() => {\n this.unrefUnusedSubchannels();\n }, REF_CHECK_INTERVAL);\n // Unref because this timer should not keep the event loop running.\n // Call unref only if it exists to address electron/electron#21162\n (_b = (_a = this.cleanupTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Get a subchannel if one already exists with exactly matching parameters.\n * Otherwise, create and save a subchannel with those parameters.\n * @param channelTarget\n * @param subchannelTarget\n * @param channelArguments\n * @param channelCredentials\n */\n getOrCreateSubchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials) {\n this.ensureCleanupTask();\n const channelTarget = (0, uri_parser_1.uriToString)(channelTargetUri);\n if (channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n for (const subchannelObj of subchannelObjArray) {\n if ((0, subchannel_address_1.subchannelAddressEqual)(subchannelTarget, subchannelObj.subchannelAddress) &&\n (0, channel_options_1.channelOptionsEqual)(channelArguments, subchannelObj.channelArguments) &&\n channelCredentials._equals(subchannelObj.channelCredentials)) {\n return subchannelObj.subchannel;\n }\n }\n }\n // If we get here, no matching subchannel was found\n const subchannel = new subchannel_1.Subchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials, new transport_1.Http2SubchannelConnector(channelTargetUri));\n if (!(channelTarget in this.pool)) {\n this.pool[channelTarget] = [];\n }\n this.pool[channelTarget].push({\n subchannelAddress: subchannelTarget,\n channelArguments,\n channelCredentials,\n subchannel,\n });\n subchannel.ref();\n return subchannel;\n }\n}\nexports.SubchannelPool = SubchannelPool;\nconst globalSubchannelPool = new SubchannelPool();\n/**\n * Get either the global subchannel pool, or a new subchannel pool.\n * @param global\n */\nfunction getSubchannelPool(global) {\n if (global) {\n return globalSubchannelPool;\n }\n else {\n return new SubchannelPool();\n }\n}\nexports.getSubchannelPool = getSubchannelPool;\n//# sourceMappingURL=subchannel-pool.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Subchannel = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst channelz_1 = require(\"./channelz\");\nconst TRACER_NAME = 'subchannel';\n/* setInterval and setTimeout only accept signed 32 bit integers. JS doesn't\n * have a constant for the max signed 32 bit integer, so this is a simple way\n * to calculate it */\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nclass Subchannel {\n /**\n * A class representing a connection to a single backend.\n * @param channelTarget The target string for the channel as a whole\n * @param subchannelAddress The address for the backend that this subchannel\n * will connect to\n * @param options The channel options, plus any specific subchannel options\n * for this subchannel\n * @param credentials The channel credentials used to establish this\n * connection\n */\n constructor(channelTarget, subchannelAddress, options, credentials, connector) {\n var _a;\n this.channelTarget = channelTarget;\n this.subchannelAddress = subchannelAddress;\n this.options = options;\n this.credentials = credentials;\n this.connector = connector;\n /**\n * The subchannel's current connectivity state. Invariant: `session` === `null`\n * if and only if `connectivityState` is IDLE or TRANSIENT_FAILURE.\n */\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The underlying http2 session used to make requests.\n */\n this.transport = null;\n /**\n * Indicates that the subchannel should transition from TRANSIENT_FAILURE to\n * CONNECTING instead of IDLE when the backoff timeout ends.\n */\n this.continueConnecting = false;\n /**\n * A list of listener functions that will be called whenever the connectivity\n * state changes. Will be modified by `addConnectivityStateListener` and\n * `removeConnectivityStateListener`\n */\n this.stateListeners = new Set();\n /**\n * Tracks channels and subchannel pools with references to this subchannel\n */\n this.refcount = 0;\n // Channelz info\n this.channelzEnabled = true;\n const backoffOptions = {\n initialDelay: options['grpc.initial_reconnect_backoff_ms'],\n maxDelay: options['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n this.handleBackoffTimer();\n }, backoffOptions);\n this.backoffTimeout.unref();\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n this.keepaliveTime = (_a = options['grpc.keepalive_time_ms']) !== null && _a !== void 0 ? _a : -1;\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.channelzTrace = new channelz_1.ChannelzTraceStub();\n this.callTracker = new channelz_1.ChannelzCallTrackerStub();\n this.childrenTracker = new channelz_1.ChannelzChildrenTrackerStub();\n this.streamTracker = new channelz_1.ChannelzCallTrackerStub();\n }\n else {\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzSubchannel)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n this.channelzTrace.addTrace('CT_INFO', 'Subchannel created');\n this.trace('Subchannel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n }\n getChannelzInfo() {\n return {\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n target: this.subchannelAddressString,\n };\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n refTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'subchannel_refcount', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n handleBackoffTimer() {\n if (this.continueConnecting) {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n }\n else {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.IDLE);\n }\n }\n /**\n * Start a backoff timer with the current nextBackoff timeout\n */\n startBackoff() {\n this.backoffTimeout.runOnce();\n }\n stopBackoff() {\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n }\n startConnectingInternal() {\n let options = this.options;\n if (options['grpc.keepalive_time_ms']) {\n const adjustedKeepaliveTime = Math.min(this.keepaliveTime, KEEPALIVE_MAX_TIME_MS);\n options = Object.assign(Object.assign({}, options), { 'grpc.keepalive_time_ms': adjustedKeepaliveTime });\n }\n this.connector\n .connect(this.subchannelAddress, this.credentials, options)\n .then(transport => {\n if (this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.READY)) {\n this.transport = transport;\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(transport.getChannelzRef());\n }\n transport.addDisconnectListener(tooManyPings => {\n this.transitionToState([connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n if (tooManyPings && this.keepaliveTime > 0) {\n this.keepaliveTime *= 2;\n logging.log(constants_1.LogVerbosity.ERROR, `Connection to ${(0, uri_parser_1.uriToString)(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTime} ms`);\n }\n });\n }\n else {\n /* If we can't transition from CONNECTING to READY here, we will\n * not be using this transport, so release its resources. */\n transport.shutdown();\n }\n }, error => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, `${error}`);\n });\n }\n /**\n * Initiate a state transition from any element of oldStates to the new\n * state. If the current connectivityState is not in oldStates, do nothing.\n * @param oldStates The set of states to transition from\n * @param newState The state to transition to\n * @returns True if the state changed, false otherwise\n */\n transitionToState(oldStates, newState, errorMessage) {\n var _a, _b;\n if (oldStates.indexOf(this.connectivityState) === -1) {\n return false;\n }\n this.trace(connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n const previousState = this.connectivityState;\n this.connectivityState = newState;\n switch (newState) {\n case connectivity_state_1.ConnectivityState.READY:\n this.stopBackoff();\n break;\n case connectivity_state_1.ConnectivityState.CONNECTING:\n this.startBackoff();\n this.startConnectingInternal();\n this.continueConnecting = false;\n break;\n case connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.shutdown();\n this.transport = null;\n /* If the backoff timer has already ended by the time we get to the\n * TRANSIENT_FAILURE state, we want to immediately transition out of\n * TRANSIENT_FAILURE as though the backoff timer is ending right now */\n if (!this.backoffTimeout.isRunning()) {\n process.nextTick(() => {\n this.handleBackoffTimer();\n });\n }\n break;\n case connectivity_state_1.ConnectivityState.IDLE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_b = this.transport) === null || _b === void 0 ? void 0 : _b.shutdown();\n this.transport = null;\n break;\n default:\n throw new Error(`Invalid state: unknown ConnectivityState ${newState}`);\n }\n for (const listener of this.stateListeners) {\n listener(this, previousState, newState, this.keepaliveTime, errorMessage);\n }\n return true;\n }\n ref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount + 1));\n this.refcount += 1;\n }\n unref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount - 1));\n this.refcount -= 1;\n if (this.refcount === 0) {\n this.channelzTrace.addTrace('CT_INFO', 'Shutting down');\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n process.nextTick(() => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING, connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n });\n }\n }\n unrefIfOneRef() {\n if (this.refcount === 1) {\n this.unref();\n return true;\n }\n return false;\n }\n createCall(metadata, host, method, listener) {\n if (!this.transport) {\n throw new Error('Cannot create call, subchannel not READY');\n }\n let statsTracker;\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n this.streamTracker.addCallStarted();\n statsTracker = {\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n };\n }\n else {\n statsTracker = {};\n }\n return this.transport.createCall(metadata, host, method, listener, statsTracker);\n }\n /**\n * If the subchannel is currently IDLE, start connecting and switch to the\n * CONNECTING state. If the subchannel is current in TRANSIENT_FAILURE,\n * the next time it would transition to IDLE, start connecting again instead.\n * Otherwise, do nothing.\n */\n startConnecting() {\n process.nextTick(() => {\n /* First, try to transition from IDLE to connecting. If that doesn't happen\n * because the state is not currently IDLE, check if it is\n * TRANSIENT_FAILURE, and if so indicate that it should go back to\n * connecting after the backoff timer ends. Otherwise do nothing */\n if (!this.transitionToState([connectivity_state_1.ConnectivityState.IDLE], connectivity_state_1.ConnectivityState.CONNECTING)) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.continueConnecting = true;\n }\n }\n });\n }\n /**\n * Get the subchannel's current connectivity state.\n */\n getConnectivityState() {\n return this.connectivityState;\n }\n /**\n * Add a listener function to be called whenever the subchannel's\n * connectivity state changes.\n * @param listener\n */\n addConnectivityStateListener(listener) {\n this.stateListeners.add(listener);\n }\n /**\n * Remove a listener previously added with `addConnectivityStateListener`\n * @param listener A reference to a function previously passed to\n * `addConnectivityStateListener`\n */\n removeConnectivityStateListener(listener) {\n this.stateListeners.delete(listener);\n }\n /**\n * Reset the backoff timeout, and immediately start connecting if in backoff.\n */\n resetBackoff() {\n process.nextTick(() => {\n this.backoffTimeout.reset();\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n });\n }\n getAddress() {\n return this.subchannelAddressString;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n isHealthy() {\n return true;\n }\n addHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n removeHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n getRealSubchannel() {\n return this;\n }\n realSubchannelEquals(other) {\n return other.getRealSubchannel() === this;\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n }\n }\n}\nexports.Subchannel = Subchannel;\n//# sourceMappingURL=subchannel.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRootsData = exports.CIPHER_SUITES = void 0;\nconst fs = require(\"fs\");\nexports.CIPHER_SUITES = process.env.GRPC_SSL_CIPHER_SUITES;\nconst DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;\nlet defaultRootsData = null;\nfunction getDefaultRootsData() {\n if (DEFAULT_ROOTS_FILE_PATH) {\n if (defaultRootsData === null) {\n defaultRootsData = fs.readFileSync(DEFAULT_ROOTS_FILE_PATH);\n }\n return defaultRootsData;\n }\n return null;\n}\nexports.getDefaultRootsData = getDefaultRootsData;\n//# sourceMappingURL=tls-helpers.js.map","\"use strict\";\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelConnector = void 0;\nconst http2 = require(\"http2\");\nconst tls_1 = require(\"tls\");\nconst channelz_1 = require(\"./channelz\");\nconst constants_1 = require(\"./constants\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst logging = require(\"./logging\");\nconst resolver_1 = require(\"./resolver\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net = require(\"net\");\nconst subchannel_call_1 = require(\"./subchannel-call\");\nconst call_number_1 = require(\"./call-number\");\nconst TRACER_NAME = 'transport';\nconst FLOW_CONTROL_TRACER_NAME = 'transport_flowctrl';\nconst clientVersion = require('../../package.json').version;\nconst { HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_CONTENT_TYPE, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_TE, HTTP2_HEADER_USER_AGENT, } = http2.constants;\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst tooManyPingsData = Buffer.from('too_many_pings', 'ascii');\nclass Http2Transport {\n constructor(session, subchannelAddress, options, \n /**\n * Name of the remote server, if it is not the same as the subchannel\n * address, i.e. if connecting through an HTTP CONNECT proxy.\n */\n remoteName) {\n this.session = session;\n this.options = options;\n this.remoteName = remoteName;\n /**\n * The amount of time in between sending pings\n */\n this.keepaliveTimeMs = -1;\n /**\n * The amount of time to wait for an acknowledgement after sending a ping\n */\n this.keepaliveTimeoutMs = KEEPALIVE_TIMEOUT_MS;\n /**\n * Timer reference for timeout that indicates when to send the next ping\n */\n this.keepaliveTimerId = null;\n /**\n * Indicates that the keepalive timer ran out while there were no active\n * calls, and a ping should be sent the next time a call starts.\n */\n this.pendingSendKeepalivePing = false;\n /**\n * Timer reference tracking when the most recent ping will be considered lost\n */\n this.keepaliveTimeoutId = null;\n /**\n * Indicates whether keepalive pings should be sent without any active calls\n */\n this.keepaliveWithoutCalls = false;\n this.activeCalls = new Set();\n this.disconnectListeners = [];\n this.disconnectHandled = false;\n this.channelzEnabled = true;\n this.keepalivesSent = 0;\n this.messagesSent = 0;\n this.messagesReceived = 0;\n this.lastMessageSentTimestamp = null;\n this.lastMessageReceivedTimestamp = null;\n /* Populate subchannelAddressString and channelzRef before doing anything\n * else, because they are used in the trace methods. */\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n this.streamTracker = new channelz_1.ChannelzCallTrackerStub();\n }\n else {\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n }\n this.channelzRef = (0, channelz_1.registerChannelzSocket)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n // Build user-agent string.\n this.userAgent = [\n options['grpc.primary_user_agent'],\n `grpc-node-js/${clientVersion}`,\n options['grpc.secondary_user_agent'],\n ]\n .filter(e => e)\n .join(' '); // remove falsey values first\n if ('grpc.keepalive_time_ms' in options) {\n this.keepaliveTimeMs = options['grpc.keepalive_time_ms'];\n }\n if ('grpc.keepalive_timeout_ms' in options) {\n this.keepaliveTimeoutMs = options['grpc.keepalive_timeout_ms'];\n }\n if ('grpc.keepalive_permit_without_calls' in options) {\n this.keepaliveWithoutCalls =\n options['grpc.keepalive_permit_without_calls'] === 1;\n }\n else {\n this.keepaliveWithoutCalls = false;\n }\n session.once('close', () => {\n this.trace('session closed');\n this.stopKeepalivePings();\n this.handleDisconnect();\n });\n session.once('goaway', (errorCode, lastStreamID, opaqueData) => {\n let tooManyPings = false;\n /* See the last paragraph of\n * https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md#basic-keepalive */\n if (errorCode === http2.constants.NGHTTP2_ENHANCE_YOUR_CALM &&\n opaqueData &&\n opaqueData.equals(tooManyPingsData)) {\n tooManyPings = true;\n }\n this.trace('connection closed by GOAWAY with code ' +\n errorCode +\n ' and data ' +\n (opaqueData === null || opaqueData === void 0 ? void 0 : opaqueData.toString()));\n this.reportDisconnectToOwner(tooManyPings);\n });\n session.once('error', error => {\n /* Do nothing here. Any error should also trigger a close event, which is\n * where we want to handle that. */\n this.trace('connection closed with error ' + error.message);\n });\n if (logging.isTracerEnabled(TRACER_NAME)) {\n session.on('remoteSettings', (settings) => {\n this.trace('new settings received' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n session.on('localSettings', (settings) => {\n this.trace('local settings acknowledged by remote' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n }\n /* Start the keepalive timer last, because this can trigger trace logs,\n * which should only happen after everything else is set up. */\n if (this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n getChannelzInfo() {\n var _a, _b, _c;\n const sessionSocket = this.session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (this.session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_a = cipherInfo.standardName) !== null && _a !== void 0 ? _a : null,\n cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: this.remoteName,\n streamsStarted: this.streamTracker.callsStarted,\n streamsSucceeded: this.streamTracker.callsSucceeded,\n streamsFailed: this.streamTracker.callsFailed,\n messagesSent: this.messagesSent,\n messagesReceived: this.messagesReceived,\n keepAlivesSent: this.keepalivesSent,\n lastLocalStreamCreatedTimestamp: this.streamTracker.lastCallStartedTimestamp,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: this.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: this.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_b = this.session.state.localWindowSize) !== null && _b !== void 0 ? _b : null,\n remoteFlowControlWindow: (_c = this.session.state.remoteWindowSize) !== null && _c !== void 0 ? _c : null,\n };\n return socketInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n keepaliveTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'keepalive', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n flowControlTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, FLOW_CONTROL_TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n internalsTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'transport_internals', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n /**\n * Indicate to the owner of this object that this transport should no longer\n * be used. That happens if the connection drops, or if the server sends a\n * GOAWAY.\n * @param tooManyPings If true, this was triggered by a GOAWAY with data\n * indicating that the session was closed becaues the client sent too many\n * pings.\n * @returns\n */\n reportDisconnectToOwner(tooManyPings) {\n if (this.disconnectHandled) {\n return;\n }\n this.disconnectHandled = true;\n this.disconnectListeners.forEach(listener => listener(tooManyPings));\n }\n /**\n * Handle connection drops, but not GOAWAYs.\n */\n handleDisconnect() {\n this.reportDisconnectToOwner(false);\n /* Give calls an event loop cycle to finish naturally before reporting the\n * disconnnection to them. */\n setImmediate(() => {\n for (const call of this.activeCalls) {\n call.onDisconnect();\n }\n });\n }\n addDisconnectListener(listener) {\n this.disconnectListeners.push(listener);\n }\n clearKeepaliveTimer() {\n if (!this.keepaliveTimerId) {\n return;\n }\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n clearKeepaliveTimeout() {\n if (!this.keepaliveTimeoutId) {\n return;\n }\n clearTimeout(this.keepaliveTimeoutId);\n this.keepaliveTimeoutId = null;\n }\n canSendPing() {\n return (this.keepaliveTimeMs > 0 &&\n (this.keepaliveWithoutCalls || this.activeCalls.size > 0));\n }\n maybeSendPing() {\n var _a, _b;\n this.clearKeepaliveTimer();\n if (!this.canSendPing()) {\n this.pendingSendKeepalivePing = true;\n return;\n }\n if (this.channelzEnabled) {\n this.keepalivesSent += 1;\n }\n this.keepaliveTrace('Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms');\n if (!this.keepaliveTimeoutId) {\n this.keepaliveTimeoutId = setTimeout(() => {\n this.keepaliveTrace('Ping timeout passed without response');\n this.handleDisconnect();\n }, this.keepaliveTimeoutMs);\n (_b = (_a = this.keepaliveTimeoutId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n try {\n this.session.ping((err, duration, payload) => {\n if (err) {\n this.keepaliveTrace('Ping failed with error ' + err.message);\n this.handleDisconnect();\n }\n this.keepaliveTrace('Received ping response');\n this.clearKeepaliveTimeout();\n this.maybeStartKeepalivePingTimer();\n });\n }\n catch (e) {\n /* If we fail to send a ping, the connection is no longer functional, so\n * we should discard it. */\n this.handleDisconnect();\n }\n }\n /**\n * Starts the keepalive ping timer if appropriate. If the timer already ran\n * out while there were no active requests, instead send a ping immediately.\n * If the ping timer is already running or a ping is currently in flight,\n * instead do nothing and wait for them to resolve.\n */\n maybeStartKeepalivePingTimer() {\n var _a, _b;\n if (!this.canSendPing()) {\n return;\n }\n if (this.pendingSendKeepalivePing) {\n this.pendingSendKeepalivePing = false;\n this.maybeSendPing();\n }\n else if (!this.keepaliveTimerId && !this.keepaliveTimeoutId) {\n this.keepaliveTrace('Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms');\n this.keepaliveTimerId = setTimeout(() => {\n this.maybeSendPing();\n }, this.keepaliveTimeMs);\n (_b = (_a = this.keepaliveTimerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /* Otherwise, there is already either a keepalive timer or a ping pending,\n * wait for those to resolve. */\n }\n stopKeepalivePings() {\n if (this.keepaliveTimerId) {\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n this.clearKeepaliveTimeout();\n }\n removeActiveCall(call) {\n this.activeCalls.delete(call);\n if (this.activeCalls.size === 0) {\n this.session.unref();\n }\n }\n addActiveCall(call) {\n this.activeCalls.add(call);\n if (this.activeCalls.size === 1) {\n this.session.ref();\n if (!this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n }\n createCall(metadata, host, method, listener, subchannelCallStatsTracker) {\n const headers = metadata.toHttp2Headers();\n headers[HTTP2_HEADER_AUTHORITY] = host;\n headers[HTTP2_HEADER_USER_AGENT] = this.userAgent;\n headers[HTTP2_HEADER_CONTENT_TYPE] = 'application/grpc';\n headers[HTTP2_HEADER_METHOD] = 'POST';\n headers[HTTP2_HEADER_PATH] = method;\n headers[HTTP2_HEADER_TE] = 'trailers';\n let http2Stream;\n /* In theory, if an error is thrown by session.request because session has\n * become unusable (e.g. because it has received a goaway), this subchannel\n * should soon see the corresponding close or goaway event anyway and leave\n * READY. But we have seen reports that this does not happen\n * (https://github.com/googleapis/nodejs-firestore/issues/1023#issuecomment-653204096)\n * so for defense in depth, we just discard the session when we see an\n * error here.\n */\n try {\n http2Stream = this.session.request(headers);\n }\n catch (e) {\n this.handleDisconnect();\n throw e;\n }\n this.flowControlTrace('local window size: ' +\n this.session.state.localWindowSize +\n ' remote window size: ' +\n this.session.state.remoteWindowSize);\n this.internalsTrace('session.closed=' +\n this.session.closed +\n ' session.destroyed=' +\n this.session.destroyed +\n ' session.socket.destroyed=' +\n this.session.socket.destroyed);\n let eventTracker;\n // eslint-disable-next-line prefer-const\n let call;\n if (this.channelzEnabled) {\n this.streamTracker.addCallStarted();\n eventTracker = {\n addMessageSent: () => {\n var _a;\n this.messagesSent += 1;\n this.lastMessageSentTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n this.messagesReceived += 1;\n this.lastMessageReceivedTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n if (success) {\n this.streamTracker.addCallSucceeded();\n }\n else {\n this.streamTracker.addCallFailed();\n }\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n else {\n eventTracker = {\n addMessageSent: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n call = new subchannel_call_1.Http2SubchannelCall(http2Stream, eventTracker, listener, this, (0, call_number_1.getNextCallNumber)());\n this.addActiveCall(call);\n return call;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n getPeerName() {\n return this.subchannelAddressString;\n }\n getOptions() {\n return this.options;\n }\n shutdown() {\n this.session.close();\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n}\nclass Http2SubchannelConnector {\n constructor(channelTarget) {\n this.channelTarget = channelTarget;\n this.session = null;\n this.isShutdown = false;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, (0, uri_parser_1.uriToString)(this.channelTarget) + ' ' + text);\n }\n createSession(address, credentials, options, proxyConnectionResult) {\n if (this.isShutdown) {\n return Promise.reject();\n }\n return new Promise((resolve, reject) => {\n var _a, _b, _c, _d;\n let remoteName;\n if (proxyConnectionResult.realTarget) {\n remoteName = (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget);\n this.trace('creating HTTP/2 session through proxy to ' +\n (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget));\n }\n else {\n remoteName = null;\n this.trace('creating HTTP/2 session to ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n }\n const targetAuthority = (0, resolver_1.getDefaultAuthority)((_a = proxyConnectionResult.realTarget) !== null && _a !== void 0 ? _a : this.channelTarget);\n let connectionOptions = credentials._getConnectionOptions() || {};\n connectionOptions.maxSendHeaderBlockLength = Number.MAX_SAFE_INTEGER;\n if ('grpc-node.max_session_memory' in options) {\n connectionOptions.maxSessionMemory =\n options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n connectionOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n let addressScheme = 'http://';\n if ('secureContext' in connectionOptions) {\n addressScheme = 'https://';\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n const originalCheckServerIdentity = (_b = connectionOptions.checkServerIdentity) !== null && _b !== void 0 ? _b : tls_1.checkServerIdentity;\n connectionOptions.checkServerIdentity = (host, cert) => {\n return originalCheckServerIdentity(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n const authorityHostname = (_d = (_c = (0, uri_parser_1.splitHostPort)(targetAuthority)) === null || _c === void 0 ? void 0 : _c.host) !== null && _d !== void 0 ? _d : 'localhost';\n // We want to always set servername to support SNI\n connectionOptions.servername = authorityHostname;\n }\n if (proxyConnectionResult.socket) {\n /* This is part of the workaround for\n * https://github.com/nodejs/node/issues/32922. Without that bug,\n * proxyConnectionResult.socket would always be a plaintext socket and\n * this would say\n * connectionOptions.socket = proxyConnectionResult.socket; */\n connectionOptions.createConnection = (authority, option) => {\n return proxyConnectionResult.socket;\n };\n }\n }\n else {\n /* In all but the most recent versions of Node, http2.connect does not use\n * the options when establishing plaintext connections, so we need to\n * establish that connection explicitly. */\n connectionOptions.createConnection = (authority, option) => {\n if (proxyConnectionResult.socket) {\n return proxyConnectionResult.socket;\n }\n else {\n /* net.NetConnectOpts is declared in a way that is more restrictive\n * than what net.connect will actually accept, so we use the type\n * assertion to work around that. */\n return net.connect(address);\n }\n };\n }\n connectionOptions = Object.assign(Object.assign(Object.assign({}, connectionOptions), address), { enableTrace: options['grpc-node.tls_enable_trace'] === 1 });\n /* http2.connect uses the options here:\n * https://github.com/nodejs/node/blob/70c32a6d190e2b5d7b9ff9d5b6a459d14e8b7d59/lib/internal/http2/core.js#L3028-L3036\n * The spread operator overides earlier values with later ones, so any port\n * or host values in the options will be used rather than any values extracted\n * from the first argument. In addition, the path overrides the host and port,\n * as documented for plaintext connections here:\n * https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener\n * and for TLS connections here:\n * https://nodejs.org/api/tls.html#tls_tls_connect_options_callback. In\n * earlier versions of Node, http2.connect passes these options to\n * tls.connect but not net.connect, so in the insecure case we still need\n * to set the createConnection option above to create the connection\n * explicitly. We cannot do that in the TLS case because http2.connect\n * passes necessary additional options to tls.connect.\n * The first argument just needs to be parseable as a URL and the scheme\n * determines whether the connection will be established over TLS or not.\n */\n const session = http2.connect(addressScheme + targetAuthority, connectionOptions);\n this.session = session;\n let errorMessage = 'Failed to connect';\n session.unref();\n session.once('connect', () => {\n session.removeAllListeners();\n resolve(new Http2Transport(session, address, options, remoteName));\n this.session = null;\n });\n session.once('close', () => {\n this.session = null;\n // Leave time for error event to happen before rejecting\n setImmediate(() => {\n reject(`${errorMessage} (${new Date().toISOString()})`);\n });\n });\n session.once('error', error => {\n errorMessage = error.message;\n this.trace('connection failed with error ' + errorMessage);\n });\n });\n }\n connect(address, credentials, options) {\n var _a, _b, _c;\n if (this.isShutdown) {\n return Promise.reject();\n }\n /* Pass connection options through to the proxy so that it's able to\n * upgrade it's connection to support tls if needed.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const connectionOptions = credentials._getConnectionOptions() || {};\n if ('secureContext' in connectionOptions) {\n connectionOptions.ALPNProtocols = ['h2'];\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n const originalCheckServerIdentity = (_a = connectionOptions.checkServerIdentity) !== null && _a !== void 0 ? _a : tls_1.checkServerIdentity;\n connectionOptions.checkServerIdentity = (host, cert) => {\n return originalCheckServerIdentity(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n if ('grpc.http_connect_target' in options) {\n /* This is more or less how servername will be set in createSession\n * if a connection is successfully established through the proxy.\n * If the proxy is not used, these connectionOptions are discarded\n * anyway */\n const targetPath = (0, resolver_1.getDefaultAuthority)((_b = (0, uri_parser_1.parseUri)(options['grpc.http_connect_target'])) !== null && _b !== void 0 ? _b : {\n path: 'localhost',\n });\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n connectionOptions.servername = (_c = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _c !== void 0 ? _c : targetPath;\n }\n }\n if (options['grpc-node.tls_enable_trace']) {\n connectionOptions.enableTrace = true;\n }\n }\n return (0, http_proxy_1.getProxiedConnection)(address, options, connectionOptions).then(result => this.createSession(address, credentials, options, result));\n }\n shutdown() {\n var _a;\n this.isShutdown = true;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.close();\n this.session = null;\n }\n}\nexports.Http2SubchannelConnector = Http2SubchannelConnector;\n//# sourceMappingURL=transport.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uriToString = exports.combineHostPort = exports.splitHostPort = exports.parseUri = void 0;\n/*\n * The groups correspond to URI parts as follows:\n * 1. scheme\n * 2. authority\n * 3. path\n */\nconst URI_REGEX = /^(?:([A-Za-z0-9+.-]+):)?(?:\\/\\/([^/]*)\\/)?(.+)$/;\nfunction parseUri(uriString) {\n const parsedUri = URI_REGEX.exec(uriString);\n if (parsedUri === null) {\n return null;\n }\n return {\n scheme: parsedUri[1],\n authority: parsedUri[2],\n path: parsedUri[3],\n };\n}\nexports.parseUri = parseUri;\nconst NUMBER_REGEX = /^\\d+$/;\nfunction splitHostPort(path) {\n if (path.startsWith('[')) {\n const hostEnd = path.indexOf(']');\n if (hostEnd === -1) {\n return null;\n }\n const host = path.substring(1, hostEnd);\n /* Only an IPv6 address should be in bracketed notation, and an IPv6\n * address should have at least one colon */\n if (host.indexOf(':') === -1) {\n return null;\n }\n if (path.length > hostEnd + 1) {\n if (path[hostEnd + 1] === ':') {\n const portString = path.substring(hostEnd + 2);\n if (NUMBER_REGEX.test(portString)) {\n return {\n host: host,\n port: +portString,\n };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n else {\n return {\n host,\n };\n }\n }\n else {\n const splitPath = path.split(':');\n /* Exactly one colon means that this is host:port. Zero colons means that\n * there is no port. And multiple colons means that this is a bare IPv6\n * address with no port */\n if (splitPath.length === 2) {\n if (NUMBER_REGEX.test(splitPath[1])) {\n return {\n host: splitPath[0],\n port: +splitPath[1],\n };\n }\n else {\n return null;\n }\n }\n else {\n return {\n host: path,\n };\n }\n }\n}\nexports.splitHostPort = splitHostPort;\nfunction combineHostPort(hostPort) {\n if (hostPort.port === undefined) {\n return hostPort.host;\n }\n else {\n // Only an IPv6 host should include a colon\n if (hostPort.host.includes(':')) {\n return `[${hostPort.host}]:${hostPort.port}`;\n }\n else {\n return `${hostPort.host}:${hostPort.port}`;\n }\n }\n}\nexports.combineHostPort = combineHostPort;\nfunction uriToString(uri) {\n let result = '';\n if (uri.scheme !== undefined) {\n result += uri.scheme + ':';\n }\n if (uri.authority !== undefined) {\n result += '//' + uri.authority + '/';\n }\n result += uri.path;\n return result;\n}\nexports.uriToString = uriToString;\n//# sourceMappingURL=uri-parser.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadFileDescriptorSetFromObject = exports.loadFileDescriptorSetFromBuffer = exports.fromJSON = exports.loadSync = exports.load = exports.IdempotencyLevel = exports.isAnyExtension = exports.Long = void 0;\nconst camelCase = require(\"lodash.camelcase\");\nconst Protobuf = require(\"protobufjs\");\nconst descriptor = require(\"protobufjs/ext/descriptor\");\nconst util_1 = require(\"./util\");\nconst Long = require(\"long\");\nexports.Long = Long;\nfunction isAnyExtension(obj) {\n return ('@type' in obj) && (typeof obj['@type'] === 'string');\n}\nexports.isAnyExtension = isAnyExtension;\nvar IdempotencyLevel;\n(function (IdempotencyLevel) {\n IdempotencyLevel[\"IDEMPOTENCY_UNKNOWN\"] = \"IDEMPOTENCY_UNKNOWN\";\n IdempotencyLevel[\"NO_SIDE_EFFECTS\"] = \"NO_SIDE_EFFECTS\";\n IdempotencyLevel[\"IDEMPOTENT\"] = \"IDEMPOTENT\";\n})(IdempotencyLevel = exports.IdempotencyLevel || (exports.IdempotencyLevel = {}));\nconst descriptorOptions = {\n longs: String,\n enums: String,\n bytes: String,\n defaults: true,\n oneofs: true,\n json: true,\n};\nfunction joinName(baseName, name) {\n if (baseName === '') {\n return name;\n }\n else {\n return baseName + '.' + name;\n }\n}\nfunction isHandledReflectionObject(obj) {\n return (obj instanceof Protobuf.Service ||\n obj instanceof Protobuf.Type ||\n obj instanceof Protobuf.Enum);\n}\nfunction isNamespaceBase(obj) {\n return obj instanceof Protobuf.Namespace || obj instanceof Protobuf.Root;\n}\nfunction getAllHandledReflectionObjects(obj, parentName) {\n const objName = joinName(parentName, obj.name);\n if (isHandledReflectionObject(obj)) {\n return [[objName, obj]];\n }\n else {\n if (isNamespaceBase(obj) && typeof obj.nested !== 'undefined') {\n return Object.keys(obj.nested)\n .map(name => {\n return getAllHandledReflectionObjects(obj.nested[name], objName);\n })\n .reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);\n }\n }\n return [];\n}\nfunction createDeserializer(cls, options) {\n return function deserialize(argBuf) {\n return cls.toObject(cls.decode(argBuf), options);\n };\n}\nfunction createSerializer(cls) {\n return function serialize(arg) {\n if (Array.isArray(arg)) {\n throw new Error(`Failed to serialize message: expected object with ${cls.name} structure, got array instead`);\n }\n const message = cls.fromObject(arg);\n return cls.encode(message).finish();\n };\n}\nfunction mapMethodOptions(options) {\n return (options || []).reduce((obj, item) => {\n for (const [key, value] of Object.entries(item)) {\n switch (key) {\n case 'uninterpreted_option':\n obj.uninterpreted_option.push(item.uninterpreted_option);\n break;\n default:\n obj[key] = value;\n }\n }\n return obj;\n }, {\n deprecated: false,\n idempotency_level: IdempotencyLevel.IDEMPOTENCY_UNKNOWN,\n uninterpreted_option: [],\n });\n}\nfunction createMethodDefinition(method, serviceName, options, fileDescriptors) {\n /* This is only ever called after the corresponding root.resolveAll(), so we\n * can assume that the resolved request and response types are non-null */\n const requestType = method.resolvedRequestType;\n const responseType = method.resolvedResponseType;\n return {\n path: '/' + serviceName + '/' + method.name,\n requestStream: !!method.requestStream,\n responseStream: !!method.responseStream,\n requestSerialize: createSerializer(requestType),\n requestDeserialize: createDeserializer(requestType, options),\n responseSerialize: createSerializer(responseType),\n responseDeserialize: createDeserializer(responseType, options),\n // TODO(murgatroid99): Find a better way to handle this\n originalName: camelCase(method.name),\n requestType: createMessageDefinition(requestType, fileDescriptors),\n responseType: createMessageDefinition(responseType, fileDescriptors),\n options: mapMethodOptions(method.parsedOptions),\n };\n}\nfunction createServiceDefinition(service, name, options, fileDescriptors) {\n const def = {};\n for (const method of service.methodsArray) {\n def[method.name] = createMethodDefinition(method, name, options, fileDescriptors);\n }\n return def;\n}\nfunction createMessageDefinition(message, fileDescriptors) {\n const messageDescriptor = message.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 DescriptorProto',\n type: messageDescriptor.$type.toObject(messageDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\nfunction createEnumDefinition(enumType, fileDescriptors) {\n const enumDescriptor = enumType.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 EnumDescriptorProto',\n type: enumDescriptor.$type.toObject(enumDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\n/**\n * function createDefinition(obj: Protobuf.Service, name: string, options:\n * Options): ServiceDefinition; function createDefinition(obj: Protobuf.Type,\n * name: string, options: Options): MessageTypeDefinition; function\n * createDefinition(obj: Protobuf.Enum, name: string, options: Options):\n * EnumTypeDefinition;\n */\nfunction createDefinition(obj, name, options, fileDescriptors) {\n if (obj instanceof Protobuf.Service) {\n return createServiceDefinition(obj, name, options, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Type) {\n return createMessageDefinition(obj, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Enum) {\n return createEnumDefinition(obj, fileDescriptors);\n }\n else {\n throw new Error('Type mismatch in reflection object handling');\n }\n}\nfunction createPackageDefinition(root, options) {\n const def = {};\n root.resolveAll();\n const descriptorList = root.toDescriptor('proto3').file;\n const bufferList = descriptorList.map(value => Buffer.from(descriptor.FileDescriptorProto.encode(value).finish()));\n for (const [name, obj] of getAllHandledReflectionObjects(root, '')) {\n def[name] = createDefinition(obj, name, options, bufferList);\n }\n return def;\n}\nfunction createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options) {\n options = options || {};\n const root = Protobuf.Root.fromDescriptor(decodedDescriptorSet);\n root.resolveAll();\n return createPackageDefinition(root, options);\n}\n/**\n * Load a .proto file with the specified options.\n * @param filename One or multiple file paths to load. Can be an absolute path\n * or relative to an include path.\n * @param options.keepCase Preserve field names. The default is to change them\n * to camel case.\n * @param options.longs The type that should be used to represent `long` values.\n * Valid options are `Number` and `String`. Defaults to a `Long` object type\n * from a library.\n * @param options.enums The type that should be used to represent `enum` values.\n * The only valid option is `String`. Defaults to the numeric value.\n * @param options.bytes The type that should be used to represent `bytes`\n * values. Valid options are `Array` and `String`. The default is to use\n * `Buffer`.\n * @param options.defaults Set default values on output objects. Defaults to\n * `false`.\n * @param options.arrays Set empty arrays for missing array values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.objects Set empty objects for missing object values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.oneofs Set virtual oneof properties to the present field's\n * name\n * @param options.json Represent Infinity and NaN as strings in float fields,\n * and automatically decode google.protobuf.Any values.\n * @param options.includeDirs Paths to search for imported `.proto` files.\n */\nfunction load(filename, options) {\n return (0, util_1.loadProtosWithOptions)(filename, options).then(loadedRoot => {\n return createPackageDefinition(loadedRoot, options);\n });\n}\nexports.load = load;\nfunction loadSync(filename, options) {\n const loadedRoot = (0, util_1.loadProtosWithOptionsSync)(filename, options);\n return createPackageDefinition(loadedRoot, options);\n}\nexports.loadSync = loadSync;\nfunction fromJSON(json, options) {\n options = options || {};\n const loadedRoot = Protobuf.Root.fromJSON(json);\n loadedRoot.resolveAll();\n return createPackageDefinition(loadedRoot, options);\n}\nexports.fromJSON = fromJSON;\nfunction loadFileDescriptorSetFromBuffer(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.decode(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromBuffer = loadFileDescriptorSetFromBuffer;\nfunction loadFileDescriptorSetFromObject(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.fromObject(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromObject = loadFileDescriptorSetFromObject;\n(0, util_1.addCommonProtos)();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addCommonProtos = exports.loadProtosWithOptionsSync = exports.loadProtosWithOptions = void 0;\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst Protobuf = require(\"protobufjs\");\nfunction addIncludePathResolver(root, includePaths) {\n const originalResolvePath = root.resolvePath;\n root.resolvePath = (origin, target) => {\n if (path.isAbsolute(target)) {\n return target;\n }\n for (const directory of includePaths) {\n const fullPath = path.join(directory, target);\n try {\n fs.accessSync(fullPath, fs.constants.R_OK);\n return fullPath;\n }\n catch (err) {\n continue;\n }\n }\n process.emitWarning(`${target} not found in any of the include paths ${includePaths}`);\n return originalResolvePath(origin, target);\n };\n}\nasync function loadProtosWithOptions(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n return Promise.reject(new Error('The includeDirs option must be an array'));\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = await root.load(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptions = loadProtosWithOptions;\nfunction loadProtosWithOptionsSync(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n throw new Error('The includeDirs option must be an array');\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = root.loadSync(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptionsSync = loadProtosWithOptionsSync;\n/**\n * Load Google's well-known proto files that aren't exposed by Protobuf.js.\n */\nfunction addCommonProtos() {\n // Protobuf.js exposes: any, duration, empty, field_mask, struct, timestamp,\n // and wrappers. compiler/plugin is excluded in Protobuf.js and here.\n // Using constant strings for compatibility with tools like Webpack\n const apiDescriptor = require('protobufjs/google/protobuf/api.json');\n const descriptorDescriptor = require('protobufjs/google/protobuf/descriptor.json');\n const sourceContextDescriptor = require('protobufjs/google/protobuf/source_context.json');\n const typeDescriptor = require('protobufjs/google/protobuf/type.json');\n Protobuf.common('api', apiDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('descriptor', descriptorDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('source_context', sourceContextDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('type', typeDescriptor.nested.google.nested.protobuf.nested);\n}\nexports.addCommonProtos = addCommonProtos;\n//# sourceMappingURL=util.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"t\", {\n value: true\n});\n\nclass TreeNode {\n constructor(t, e, s = 1) {\n this.i = undefined;\n this.h = undefined;\n this.o = undefined;\n this.u = t;\n this.l = e;\n this.p = s;\n }\n I() {\n let t = this;\n const e = t.o.o === t;\n if (e && t.p === 1) {\n t = t.h;\n } else if (t.i) {\n t = t.i;\n while (t.h) {\n t = t.h;\n }\n } else {\n if (e) {\n return t.o;\n }\n let s = t.o;\n while (s.i === t) {\n t = s;\n s = t.o;\n }\n t = s;\n }\n return t;\n }\n B() {\n let t = this;\n if (t.h) {\n t = t.h;\n while (t.i) {\n t = t.i;\n }\n return t;\n } else {\n let e = t.o;\n while (e.h === t) {\n t = e;\n e = t.o;\n }\n if (t.h !== e) {\n return e;\n } else return t;\n }\n }\n _() {\n const t = this.o;\n const e = this.h;\n const s = e.i;\n if (t.o === this) t.o = e; else if (t.i === this) t.i = e; else t.h = e;\n e.o = t;\n e.i = this;\n this.o = e;\n this.h = s;\n if (s) s.o = this;\n return e;\n }\n g() {\n const t = this.o;\n const e = this.i;\n const s = e.h;\n if (t.o === this) t.o = e; else if (t.i === this) t.i = e; else t.h = e;\n e.o = t;\n e.h = this;\n this.o = e;\n this.i = s;\n if (s) s.o = this;\n return e;\n }\n}\n\nclass TreeNodeEnableIndex extends TreeNode {\n constructor() {\n super(...arguments);\n this.M = 1;\n }\n _() {\n const t = super._();\n this.O();\n t.O();\n return t;\n }\n g() {\n const t = super.g();\n this.O();\n t.O();\n return t;\n }\n O() {\n this.M = 1;\n if (this.i) {\n this.M += this.i.M;\n }\n if (this.h) {\n this.M += this.h.M;\n }\n }\n}\n\nclass ContainerIterator {\n constructor(t = 0) {\n this.iteratorType = t;\n }\n equals(t) {\n return this.T === t.T;\n }\n}\n\nclass Base {\n constructor() {\n this.m = 0;\n }\n get length() {\n return this.m;\n }\n size() {\n return this.m;\n }\n empty() {\n return this.m === 0;\n }\n}\n\nclass Container extends Base {}\n\nfunction throwIteratorAccessError() {\n throw new RangeError(\"Iterator access denied!\");\n}\n\nclass TreeContainer extends Container {\n constructor(t = function(t, e) {\n if (t < e) return -1;\n if (t > e) return 1;\n return 0;\n }, e = false) {\n super();\n this.v = undefined;\n this.A = t;\n this.enableIndex = e;\n this.N = e ? TreeNodeEnableIndex : TreeNode;\n this.C = new this.N;\n }\n R(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n t = t.h;\n } else if (i > 0) {\n s = t;\n t = t.i;\n } else return t;\n }\n return s;\n }\n K(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i <= 0) {\n t = t.h;\n } else {\n s = t;\n t = t.i;\n }\n }\n return s;\n }\n L(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n s = t;\n t = t.h;\n } else if (i > 0) {\n t = t.i;\n } else return t;\n }\n return s;\n }\n k(t, e) {\n let s = this.C;\n while (t) {\n const i = this.A(t.u, e);\n if (i < 0) {\n s = t;\n t = t.h;\n } else {\n t = t.i;\n }\n }\n return s;\n }\n P(t) {\n while (true) {\n const e = t.o;\n if (e === this.C) return;\n if (t.p === 1) {\n t.p = 0;\n return;\n }\n if (t === e.i) {\n const s = e.h;\n if (s.p === 1) {\n s.p = 0;\n e.p = 1;\n if (e === this.v) {\n this.v = e._();\n } else e._();\n } else {\n if (s.h && s.h.p === 1) {\n s.p = e.p;\n e.p = 0;\n s.h.p = 0;\n if (e === this.v) {\n this.v = e._();\n } else e._();\n return;\n } else if (s.i && s.i.p === 1) {\n s.p = 1;\n s.i.p = 0;\n s.g();\n } else {\n s.p = 1;\n t = e;\n }\n }\n } else {\n const s = e.i;\n if (s.p === 1) {\n s.p = 0;\n e.p = 1;\n if (e === this.v) {\n this.v = e.g();\n } else e.g();\n } else {\n if (s.i && s.i.p === 1) {\n s.p = e.p;\n e.p = 0;\n s.i.p = 0;\n if (e === this.v) {\n this.v = e.g();\n } else e.g();\n return;\n } else if (s.h && s.h.p === 1) {\n s.p = 1;\n s.h.p = 0;\n s._();\n } else {\n s.p = 1;\n t = e;\n }\n }\n }\n }\n }\n S(t) {\n if (this.m === 1) {\n this.clear();\n return;\n }\n let e = t;\n while (e.i || e.h) {\n if (e.h) {\n e = e.h;\n while (e.i) e = e.i;\n } else {\n e = e.i;\n }\n const s = t.u;\n t.u = e.u;\n e.u = s;\n const i = t.l;\n t.l = e.l;\n e.l = i;\n t = e;\n }\n if (this.C.i === e) {\n this.C.i = e.o;\n } else if (this.C.h === e) {\n this.C.h = e.o;\n }\n this.P(e);\n let s = e.o;\n if (e === s.i) {\n s.i = undefined;\n } else s.h = undefined;\n this.m -= 1;\n this.v.p = 0;\n if (this.enableIndex) {\n while (s !== this.C) {\n s.M -= 1;\n s = s.o;\n }\n }\n }\n U(t) {\n const e = typeof t === \"number\" ? t : undefined;\n const s = typeof t === \"function\" ? t : undefined;\n const i = typeof t === \"undefined\" ? [] : undefined;\n let r = 0;\n let n = this.v;\n const h = [];\n while (h.length || n) {\n if (n) {\n h.push(n);\n n = n.i;\n } else {\n n = h.pop();\n if (r === e) return n;\n i && i.push(n);\n s && s(n, r, this);\n r += 1;\n n = n.h;\n }\n }\n return i;\n }\n j(t) {\n while (true) {\n const e = t.o;\n if (e.p === 0) return;\n const s = e.o;\n if (e === s.i) {\n const i = s.h;\n if (i && i.p === 1) {\n i.p = e.p = 0;\n if (s === this.v) return;\n s.p = 1;\n t = s;\n continue;\n } else if (t === e.h) {\n t.p = 0;\n if (t.i) {\n t.i.o = e;\n }\n if (t.h) {\n t.h.o = s;\n }\n e.h = t.i;\n s.i = t.h;\n t.i = e;\n t.h = s;\n if (s === this.v) {\n this.v = t;\n this.C.o = t;\n } else {\n const e = s.o;\n if (e.i === s) {\n e.i = t;\n } else e.h = t;\n }\n t.o = s.o;\n e.o = t;\n s.o = t;\n s.p = 1;\n } else {\n e.p = 0;\n if (s === this.v) {\n this.v = s.g();\n } else s.g();\n s.p = 1;\n return;\n }\n } else {\n const i = s.i;\n if (i && i.p === 1) {\n i.p = e.p = 0;\n if (s === this.v) return;\n s.p = 1;\n t = s;\n continue;\n } else if (t === e.i) {\n t.p = 0;\n if (t.i) {\n t.i.o = s;\n }\n if (t.h) {\n t.h.o = e;\n }\n s.h = t.i;\n e.i = t.h;\n t.i = s;\n t.h = e;\n if (s === this.v) {\n this.v = t;\n this.C.o = t;\n } else {\n const e = s.o;\n if (e.i === s) {\n e.i = t;\n } else e.h = t;\n }\n t.o = s.o;\n e.o = t;\n s.o = t;\n s.p = 1;\n } else {\n e.p = 0;\n if (s === this.v) {\n this.v = s._();\n } else s._();\n s.p = 1;\n return;\n }\n }\n if (this.enableIndex) {\n e.O();\n s.O();\n t.O();\n }\n return;\n }\n }\n q(t, e, s) {\n if (this.v === undefined) {\n this.m += 1;\n this.v = new this.N(t, e, 0);\n this.v.o = this.C;\n this.C.o = this.C.i = this.C.h = this.v;\n return this.m;\n }\n let i;\n const r = this.C.i;\n const n = this.A(r.u, t);\n if (n === 0) {\n r.l = e;\n return this.m;\n } else if (n > 0) {\n r.i = new this.N(t, e);\n r.i.o = r;\n i = r.i;\n this.C.i = i;\n } else {\n const r = this.C.h;\n const n = this.A(r.u, t);\n if (n === 0) {\n r.l = e;\n return this.m;\n } else if (n < 0) {\n r.h = new this.N(t, e);\n r.h.o = r;\n i = r.h;\n this.C.h = i;\n } else {\n if (s !== undefined) {\n const r = s.T;\n if (r !== this.C) {\n const s = this.A(r.u, t);\n if (s === 0) {\n r.l = e;\n return this.m;\n } else if (s > 0) {\n const s = r.I();\n const n = this.A(s.u, t);\n if (n === 0) {\n s.l = e;\n return this.m;\n } else if (n < 0) {\n i = new this.N(t, e);\n if (s.h === undefined) {\n s.h = i;\n i.o = s;\n } else {\n r.i = i;\n i.o = r;\n }\n }\n }\n }\n }\n if (i === undefined) {\n i = this.v;\n while (true) {\n const s = this.A(i.u, t);\n if (s > 0) {\n if (i.i === undefined) {\n i.i = new this.N(t, e);\n i.i.o = i;\n i = i.i;\n break;\n }\n i = i.i;\n } else if (s < 0) {\n if (i.h === undefined) {\n i.h = new this.N(t, e);\n i.h.o = i;\n i = i.h;\n break;\n }\n i = i.h;\n } else {\n i.l = e;\n return this.m;\n }\n }\n }\n }\n }\n if (this.enableIndex) {\n let t = i.o;\n while (t !== this.C) {\n t.M += 1;\n t = t.o;\n }\n }\n this.j(i);\n this.m += 1;\n return this.m;\n }\n H(t, e) {\n while (t) {\n const s = this.A(t.u, e);\n if (s < 0) {\n t = t.h;\n } else if (s > 0) {\n t = t.i;\n } else return t;\n }\n return t || this.C;\n }\n clear() {\n this.m = 0;\n this.v = undefined;\n this.C.o = undefined;\n this.C.i = this.C.h = undefined;\n }\n updateKeyByIterator(t, e) {\n const s = t.T;\n if (s === this.C) {\n throwIteratorAccessError();\n }\n if (this.m === 1) {\n s.u = e;\n return true;\n }\n const i = s.B().u;\n if (s === this.C.i) {\n if (this.A(i, e) > 0) {\n s.u = e;\n return true;\n }\n return false;\n }\n const r = s.I().u;\n if (s === this.C.h) {\n if (this.A(r, e) < 0) {\n s.u = e;\n return true;\n }\n return false;\n }\n if (this.A(r, e) >= 0 || this.A(i, e) <= 0) return false;\n s.u = e;\n return true;\n }\n eraseElementByPos(t) {\n if (t < 0 || t > this.m - 1) {\n throw new RangeError;\n }\n const e = this.U(t);\n this.S(e);\n return this.m;\n }\n eraseElementByKey(t) {\n if (this.m === 0) return false;\n const e = this.H(this.v, t);\n if (e === this.C) return false;\n this.S(e);\n return true;\n }\n eraseElementByIterator(t) {\n const e = t.T;\n if (e === this.C) {\n throwIteratorAccessError();\n }\n const s = e.h === undefined;\n const i = t.iteratorType === 0;\n if (i) {\n if (s) t.next();\n } else {\n if (!s || e.i === undefined) t.next();\n }\n this.S(e);\n return t;\n }\n getHeight() {\n if (this.m === 0) return 0;\n function traversal(t) {\n if (!t) return 0;\n return Math.max(traversal(t.i), traversal(t.h)) + 1;\n }\n return traversal(this.v);\n }\n}\n\nclass TreeIterator extends ContainerIterator {\n constructor(t, e, s) {\n super(s);\n this.T = t;\n this.C = e;\n if (this.iteratorType === 0) {\n this.pre = function() {\n if (this.T === this.C.i) {\n throwIteratorAccessError();\n }\n this.T = this.T.I();\n return this;\n };\n this.next = function() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n this.T = this.T.B();\n return this;\n };\n } else {\n this.pre = function() {\n if (this.T === this.C.h) {\n throwIteratorAccessError();\n }\n this.T = this.T.B();\n return this;\n };\n this.next = function() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n this.T = this.T.I();\n return this;\n };\n }\n }\n get index() {\n let t = this.T;\n const e = this.C.o;\n if (t === this.C) {\n if (e) {\n return e.M - 1;\n }\n return 0;\n }\n let s = 0;\n if (t.i) {\n s += t.i.M;\n }\n while (t !== e) {\n const e = t.o;\n if (t === e.h) {\n s += 1;\n if (e.i) {\n s += e.i.M;\n }\n }\n t = e;\n }\n return s;\n }\n isAccessible() {\n return this.T !== this.C;\n }\n}\n\nclass OrderedMapIterator extends TreeIterator {\n constructor(t, e, s, i) {\n super(t, e, i);\n this.container = s;\n }\n get pointer() {\n if (this.T === this.C) {\n throwIteratorAccessError();\n }\n const t = this;\n return new Proxy([], {\n get(e, s) {\n if (s === \"0\") return t.T.u; else if (s === \"1\") return t.T.l;\n e[0] = t.T.u;\n e[1] = t.T.l;\n return e[s];\n },\n set(e, s, i) {\n if (s !== \"1\") {\n throw new TypeError(\"prop must be 1\");\n }\n t.T.l = i;\n return true;\n }\n });\n }\n copy() {\n return new OrderedMapIterator(this.T, this.C, this.container, this.iteratorType);\n }\n}\n\nclass OrderedMap extends TreeContainer {\n constructor(t = [], e, s) {\n super(e, s);\n const i = this;\n t.forEach((function(t) {\n i.setElement(t[0], t[1]);\n }));\n }\n begin() {\n return new OrderedMapIterator(this.C.i || this.C, this.C, this);\n }\n end() {\n return new OrderedMapIterator(this.C, this.C, this);\n }\n rBegin() {\n return new OrderedMapIterator(this.C.h || this.C, this.C, this, 1);\n }\n rEnd() {\n return new OrderedMapIterator(this.C, this.C, this, 1);\n }\n front() {\n if (this.m === 0) return;\n const t = this.C.i;\n return [ t.u, t.l ];\n }\n back() {\n if (this.m === 0) return;\n const t = this.C.h;\n return [ t.u, t.l ];\n }\n lowerBound(t) {\n const e = this.R(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n upperBound(t) {\n const e = this.K(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n reverseLowerBound(t) {\n const e = this.L(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n reverseUpperBound(t) {\n const e = this.k(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n forEach(t) {\n this.U((function(e, s, i) {\n t([ e.u, e.l ], s, i);\n }));\n }\n setElement(t, e, s) {\n return this.q(t, e, s);\n }\n getElementByPos(t) {\n if (t < 0 || t > this.m - 1) {\n throw new RangeError;\n }\n const e = this.U(t);\n return [ e.u, e.l ];\n }\n find(t) {\n const e = this.H(this.v, t);\n return new OrderedMapIterator(e, this.C, this);\n }\n getElementByKey(t) {\n const e = this.H(this.v, t);\n return e.l;\n }\n union(t) {\n const e = this;\n t.forEach((function(t) {\n e.setElement(t[0], t[1]);\n }));\n return this.m;\n }\n * [Symbol.iterator]() {\n const t = this.m;\n const e = this.U();\n for (let s = 0; s < t; ++s) {\n const t = e[s];\n yield [ t.u, t.l ];\n }\n }\n}\n\nexports.OrderedMap = OrderedMap;\n//# sourceMappingURL=index.js.map\n","'use strict'\n\nmodule.exports = require('./lib/tail-file.js')\n","'use strict'\n\nconst {Readable} = require('stream')\nconst fs = require('fs')\nconst {once} = require('events')\n\nconst kOpts = Symbol('opts')\nconst kFileName = Symbol('filename')\nconst kPollFileIntervalMs = Symbol('pollFileIntervalMs')\nconst kPollFailureRetryMs = Symbol('pollFailureRetryMs')\nconst kMaxPollFailures = Symbol('maxPollFailures')\nconst kPollFailureCount = Symbol('pollFailureCount')\nconst kStartPos = Symbol('startPos')\nconst kStream = Symbol('stream')\nconst kFileHandle = Symbol('fileHandle')\nconst kPollTimer = Symbol('pollTimer')\nconst kQuitting = Symbol('quitting')\nconst kInode = Symbol('inode')\n\nfunction NOOP() {}\n\nclass TailFile extends Readable {\n constructor(filename, opts) {\n opts = opts || {}\n\n const {\n pollFileIntervalMs\n , pollFailureRetryMs\n , maxPollFailures\n , readStreamOpts\n , startPos\n , ...superOpts\n } = opts\n\n if (typeof filename !== 'string' || !filename.length) {\n const err = new TypeError('filename must be a non-empty string')\n err.code = 'EFILENAME'\n throw err\n }\n if (pollFileIntervalMs && typeof pollFileIntervalMs !== 'number') {\n const err = new TypeError('pollFileIntervalMs must be a number')\n err.code = 'EPOLLINTERVAL'\n err.meta = {\n got: pollFileIntervalMs\n }\n throw err\n }\n if (pollFailureRetryMs && typeof pollFailureRetryMs !== 'number') {\n const err = new TypeError('pollFailureRetryMs must be a number')\n err.code = 'EPOLLRETRY'\n err.meta = {\n got: pollFailureRetryMs\n }\n throw err\n }\n if (maxPollFailures && typeof maxPollFailures !== 'number') {\n const err = new TypeError('maxPollFailures must be a number')\n err.code = 'EMAXPOLLFAIL'\n err.meta = {\n got: maxPollFailures\n }\n throw err\n }\n if (readStreamOpts && typeof readStreamOpts !== 'object') {\n const err = new TypeError('readStreamOpts must be an object')\n err.code = 'EREADSTREAMOPTS'\n err.meta = {\n got: typeof readStreamOpts\n }\n throw err\n }\n if (startPos !== null && startPos !== undefined) {\n if (typeof startPos !== 'number') {\n const err = new TypeError('startPos must be an integer >= 0')\n err.code = 'ESTARTPOS'\n err.meta = {\n got: typeof startPos\n }\n throw err\n }\n if (startPos < 0 || !Number.isInteger(startPos)) {\n const err = new RangeError('startPos must be an integer >= 0')\n err.code = 'ESTARTPOS'\n err.meta = {\n got: startPos\n }\n throw err\n }\n }\n\n super(superOpts)\n\n this[kOpts] = opts\n this[kFileName] = filename\n this[kPollFileIntervalMs] = pollFileIntervalMs || 1000\n this[kPollFailureRetryMs] = pollFailureRetryMs || 200\n this[kMaxPollFailures] = maxPollFailures || 10\n this[kPollFailureCount] = 0\n this[kStartPos] = startPos >= 0\n ? startPos\n : null\n this[kStream] = null\n this[kFileHandle] = null\n this[kPollTimer] = null\n this[kQuitting] = false\n this[kInode] = null\n }\n\n async start() {\n await this._openFile()\n await this._pollFileForChanges()\n return\n }\n\n async _openFile() {\n this[kFileHandle] = await fs.promises.open(this[kFileName], 'r')\n return\n }\n\n async _readRemainderFromFileHandle() {\n // Read the end of a renamed file before re-opening the new file.\n // Use the file handle since it remains open even if the file name has changed\n const fileHandleTemp = this[kFileHandle] // Prevent races when closing\n this[kFileHandle] = null\n const stats = await fileHandleTemp.stat()\n const lengthToEnd = stats.size - this[kStartPos]\n const {buffer} = await fileHandleTemp.read(\n Buffer.alloc(lengthToEnd)\n , 0\n , lengthToEnd\n , this[kStartPos]\n )\n this.push(buffer)\n await fileHandleTemp.close()\n return\n }\n\n async _readChunks(stream) {\n // For node 16 and higher: https://nodejs.org/docs/latest-v16.x/api/stream.html#readableiteratoroptions\n /* istanbul ignore next */\n const iterator = stream.iterator\n ? stream.iterator({destroyOnReturn: false})\n : stream\n\n for await (const chunk of iterator) {\n this[kStartPos] += chunk.length\n if (!this.push(chunk)) {\n this[kStream] = stream\n this[kPollTimer] = null\n return\n }\n }\n // Chunks read successfully (no backpressure)\n if (this[kStream]) {\n // Backpressure had been on, and polling was paused. Resume here.\n this._scheduleTimer(this[kPollFileIntervalMs])\n }\n this[kStream] = null\n setImmediate(this.emit.bind(this), 'flush', {\n lastReadPosition: this[kStartPos]\n })\n return\n }\n\n async _pollFileForChanges() {\n try {\n const stats = await fs.promises.stat(this[kFileName])\n\n this[kPollFailureCount] = 0 // reset\n const eof = stats.size\n let fileHasChanged = false\n\n if (!this[kInode]) this[kInode] = stats.ino\n\n if (this[kStartPos] === null) {\n // First iteration - nothing has been polled yet\n this[kStartPos] = eof\n } else if (this[kInode] !== stats.ino) {\n // File renamed/rolled between polls without triggering `ENOENT`.\n // Conditional since this *may* have already been done if `ENOENT` threw earlier.\n if (this[kFileHandle]) {\n try {\n await this._readRemainderFromFileHandle()\n } catch (error) {\n const err = new Error('Could not read remaining bytes from old FH')\n err.meta = {\n error: error.message\n , code: error.code\n }\n this.emit('tail_error', err)\n }\n }\n await this._openFile()\n this[kStartPos] = 0\n this[kInode] = stats.ino\n fileHasChanged = true\n this.emit('renamed', {\n message: 'The file was renamed or rolled. Tailing resumed from the beginning.'\n , filename: this[kFileName]\n , when: new Date()\n })\n } else if (eof < this[kStartPos]) {\n // Same file, but smaller/truncated\n this[kStartPos] = 0\n this[kInode] = stats.ino\n fileHasChanged = true\n this.emit('truncated', {\n message: 'The file was truncated. Tailing resumed from the beginning.'\n , filename: this[kFileName]\n , when: new Date()\n })\n } else if (this[kStartPos] !== eof) {\n fileHasChanged = true\n }\n\n if (fileHasChanged) {\n await this._streamFileChanges()\n if (this[kStream]) return // Pause polling if backpressure is on\n } else {\n setImmediate(this.emit.bind(this), 'flush', {\n lastReadPosition: this[kStartPos]\n })\n }\n\n this._scheduleTimer(this[kPollFileIntervalMs])\n\n } catch (err) {\n if (err.code === 'ENOENT') {\n if (this[kFileHandle]) {\n // The .stat() via polling may have happened during a file rename/roll.\n // Don't lose the last lines in the file if it previously existed.\n // Perhaps it has not been re-created yet (or won't be)\n try {\n await this._readRemainderFromFileHandle()\n } catch (error) {\n this.emit('tail_error', error)\n }\n }\n this[kPollFailureCount]++\n if (this[kPollFailureCount] >= this[kMaxPollFailures]) {\n return this.quit(err)\n }\n this.emit('retry', {\n message: 'File disappeared. Retrying.'\n , filename: this[kFileName]\n , attempts: this[kPollFailureCount]\n , when: new Date()\n })\n this._scheduleTimer(this[kPollFailureRetryMs])\n return\n }\n // Some other error like EACCES\n // TODO: Retries for certain error codes can be put here\n return this.quit(err)\n }\n return\n }\n\n _scheduleTimer(ms) {\n clearTimeout(this[kPollTimer])\n if (this[kQuitting]) return\n this[kPollTimer] = setTimeout(this._pollFileForChanges.bind(this), ms)\n return\n }\n\n async _streamFileChanges() {\n try {\n const stream = fs.createReadStream(this[kFileName], {\n ...this[kOpts].readStreamOpts\n , start: this[kStartPos]\n })\n await this._readChunks(stream)\n } catch (err) {\n // Possible file removal. Let auto-retry handle it.\n this[kPollFailureCount]++\n const error = new Error('An error was encountered while tailing the file')\n error.code = 'ETAIL'\n error.meta = {actual: err}\n // Emitting on 'error' would bork the parent Readstream\n this.emit('tail_error', error)\n }\n return\n }\n\n _read() {\n if (this[kStream]) {\n this._readChunks(this[kStream])\n }\n return\n }\n\n async quit(err) {\n this[kQuitting] = true\n clearTimeout(this[kPollTimer])\n\n if (err) {\n this.emit('error', err)\n } else {\n // One last read to get lines added in high throughput\n this._pollFileForChanges().catch(NOOP)\n await once(this, 'flush')\n }\n\n // Signal the end of this Readstream\n this.push(null)\n\n // Clean open file handles and streams\n if (this[kFileHandle]) {\n this[kFileHandle].close().catch(NOOP)\n }\n if (this[kStream]) {\n this[kStream].destroy()\n }\n\n process.nextTick(() => {\n if (this._readableState && !this._readableState.endEmitted) {\n // 'end' is not emitted unless data is flowing, but this makes\n // confusing inconsistencies, so emit it all the time\n this.emit('end')\n }\n })\n return\n }\n}\n\nmodule.exports = TailFile\n","'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\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","'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.2\";\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';\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","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = __importStar(require(\"../utils\"));\n/**\n * An Archive represents a collection of named assets.\n */\nclass Archive {\n constructor() {\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiArchive = true;\n }\n /**\n * Returns true if the given object is an instance of an Archive. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiArchive\");\n }\n}\nexports.Archive = Archive;\n/**\n * An AssetArchive is an archive created from an in-memory collection of named assets or other archives.\n */\nclass AssetArchive extends Archive {\n constructor(assets) {\n super();\n this.assets = Promise.resolve(assets);\n }\n}\nexports.AssetArchive = AssetArchive;\n/**\n * A FileArchive is a file-based archive, or a collection of file-based assets. This can be a raw directory or a\n * single archive file in one of the supported formats (.tar, .tar.gz, or .zip).\n */\nclass FileArchive extends Archive {\n constructor(path) {\n super();\n this.path = Promise.resolve(path);\n }\n}\nexports.FileArchive = FileArchive;\n/**\n * A RemoteArchive is a file-based archive fetched from a remote location. The URI's scheme dictates the\n * protocol for fetching the archive's contents: `file://` is a local file (just like a FileArchive), `http://` and\n * `https://` specify HTTP and HTTPS, respectively, and specific providers may recognize custom schemes.\n */\nclass RemoteArchive extends Archive {\n constructor(uri) {\n super();\n this.uri = Promise.resolve(uri);\n }\n}\nexports.RemoteArchive = RemoteArchive;\n//# sourceMappingURL=archive.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils = __importStar(require(\"../utils\"));\n/**\n * Asset represents a single blob of text or data that is managed as a first class entity.\n */\nclass Asset {\n constructor() {\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiAsset = true;\n }\n /**\n * Returns true if the given object is an instance of an Asset. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiAsset\");\n }\n}\nexports.Asset = Asset;\n/**\n * Blob is a kind of asset produced from an in-memory blob represented as a byte array.\n */\n/* IDEA: enable this once Uint8Array is supported.\nexport class Blob extends Asset {\n constructor(data: Uint8Array) {\n super();\n }\n}\n*/\n/**\n * FileAsset is a kind of asset produced from a given path to a file on the local filesystem.\n */\nclass FileAsset extends Asset {\n constructor(path) {\n super();\n this.path = Promise.resolve(path);\n }\n}\nexports.FileAsset = FileAsset;\n/**\n * StringAsset is a kind of asset produced from an in-memory UTF8-encoded string.\n */\nclass StringAsset extends Asset {\n constructor(text) {\n super();\n this.text = Promise.resolve(text);\n }\n}\nexports.StringAsset = StringAsset;\n/**\n * RemoteAsset is a kind of asset produced from a given URI string. The URI's scheme dictates the protocol for fetching\n * contents: `file://` specifies a local file, `http://` and `https://` specify HTTP and HTTPS, respectively. Note that\n * specific providers may recognize alternative schemes; this is merely the base-most set that all providers support.\n */\nclass RemoteAsset extends Asset {\n constructor(uri) {\n super();\n this.uri = Promise.resolve(uri);\n }\n}\nexports.RemoteAsset = RemoteAsset;\n//# sourceMappingURL=asset.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./archive\"));\n__export(require(\"./asset\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright 2016-2020, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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};\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst execa_1 = __importDefault(require(\"execa\"));\nconst fs = __importStar(require(\"fs\"));\nconst got_1 = __importDefault(require(\"got\"));\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst semver = __importStar(require(\"semver\"));\nconst tmp = __importStar(require(\"tmp\"));\nconst version_1 = require(\"../version\");\nconst minimumVersion_1 = require(\"./minimumVersion\");\nconst errors_1 = require(\"./errors\");\nconst SKIP_VERSION_CHECK_VAR = \"PULUMI_AUTOMATION_API_SKIP_VERSION_CHECK\";\n/** @internal */\nclass CommandResult {\n constructor(stdout, stderr, code, err) {\n this.stdout = stdout;\n this.stderr = stderr;\n this.code = code;\n this.err = err;\n }\n toString() {\n let errStr = \"\";\n if (this.err) {\n errStr = this.err.toString();\n }\n return `code: ${this.code}\\n stdout: ${this.stdout}\\n stderr: ${this.stderr}\\n err?: ${errStr}\\n`;\n }\n}\nexports.CommandResult = CommandResult;\nclass PulumiCommand {\n constructor(command, version) {\n this.command = command;\n this.version = version;\n }\n /**\n * Get a new Pulumi instance that uses the installation in `opts.root`.\n * Defaults to using the pulumi binary found in $PATH if no installation\n * root is specified. If `opts.version` is specified, it validates that\n * the CLI is compatible with the requested version and throws an error if\n * not. This validation can be skipped by setting the environment variable\n * `PULUMI_AUTOMATION_API_SKIP_VERSION_CHECK` or setting\n * `opts.skipVersionCheck` to `true`. Note that the environment variable\n * always takes precedence. If it is set it is not possible to re-enable\n * the validation with `opts.skipVersionCheck`.\n */\n static get(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const command = (opts === null || opts === void 0 ? void 0 : opts.root) ? path.resolve(path.join(opts.root, \"bin/pulumi\")) : \"pulumi\";\n const { stdout } = yield exec(command, [\"version\"]);\n const skipVersionCheck = !!(opts === null || opts === void 0 ? void 0 : opts.skipVersionCheck) || !!process.env[SKIP_VERSION_CHECK_VAR];\n let min = minimumVersion_1.minimumVersion;\n if ((opts === null || opts === void 0 ? void 0 : opts.version) && semver.gt(opts.version, minimumVersion_1.minimumVersion)) {\n min = opts.version;\n }\n const version = parseAndValidatePulumiVersion(min, stdout.trim(), skipVersionCheck);\n return new PulumiCommand(command, version);\n });\n }\n /**\n * Installs the Pulumi CLI.\n *\n * @param opts.version the version of the CLI. Defaults to the CLI version matching the SDK version.\n * @param opts.root the directory to install the CLI in. Defaults to $HOME/.pulumi/versions/$VERSION.\n * @param opts.skipVersionCheck skips the CLI version check.\n */\n static install(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const optsWithDefaults = withDefaults(opts);\n try {\n return yield PulumiCommand.get(optsWithDefaults);\n }\n catch (err) {\n // ignore\n }\n if (process.platform === \"win32\") {\n yield PulumiCommand.installWindows(optsWithDefaults);\n }\n else {\n yield PulumiCommand.installPosix(optsWithDefaults);\n }\n return yield PulumiCommand.get(optsWithDefaults);\n });\n }\n static installWindows(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield got_1.default(\"https://get.pulumi.com/install.ps1\");\n const script = yield writeTempFile(response.body, { extension: \".ps1\" });\n try {\n const command = process.env.SystemRoot\n ? path.join(process.env.SystemRoot, \"System32\", \"WindowsPowerShell\", \"v1.0\", \"powershell.exe\")\n : \"powershell.exe\";\n const args = [\n \"-NoProfile\",\n \"-InputFormat\",\n \"None\",\n \"-ExecutionPolicy\",\n \"Bypass\",\n \"-File\",\n script.path,\n \"-NoEditPath\",\n \"-InstallRoot\",\n opts.root,\n \"-Version\",\n `${opts.version}`,\n ];\n yield exec(command, args);\n }\n finally {\n script.cleanup();\n }\n });\n }\n static installPosix(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield got_1.default(\"https://get.pulumi.com/install.sh\");\n const script = yield writeTempFile(response.body);\n try {\n const args = [script.path, \"--no-edit-path\", \"--install-root\", opts.root, \"--version\", `${opts.version}`];\n yield exec(\"/bin/sh\", args);\n }\n finally {\n script.cleanup();\n }\n });\n }\n /** @internal */\n run(args, cwd, additionalEnv, onOutput) {\n // all commands should be run in non-interactive mode.\n // this causes commands to fail rather than prompting for input (and thus hanging indefinitely)\n if (!args.includes(\"--non-interactive\")) {\n args.push(\"--non-interactive\");\n }\n // Prepend the folder where the CLI is installed to the path to ensure\n // we pickup the matching bundled plugins.\n if (path.isAbsolute(this.command)) {\n const pulumiBin = path.dirname(this.command);\n const sep = os.platform() === \"win32\" ? \";\" : \":\";\n const envPath = pulumiBin + sep + (additionalEnv[\"PATH\"] || process.env.PATH);\n additionalEnv[\"PATH\"] = envPath;\n }\n return exec(this.command, args, cwd, additionalEnv, onOutput);\n }\n}\nexports.PulumiCommand = PulumiCommand;\nfunction exec(command, args, cwd, additionalEnv, onOutput) {\n return __awaiter(this, void 0, void 0, function* () {\n const unknownErrCode = -2;\n const env = additionalEnv ? Object.assign({}, additionalEnv) : undefined;\n try {\n const proc = execa_1.default(command, args, { env, cwd });\n if (onOutput && proc.stdout) {\n proc.stdout.on(\"data\", (data) => {\n if (data === null || data === void 0 ? void 0 : data.toString) {\n data = data.toString();\n }\n onOutput(data);\n });\n }\n const { stdout, stderr, exitCode } = yield proc;\n const commandResult = new CommandResult(stdout, stderr, exitCode);\n if (exitCode !== 0) {\n throw errors_1.createCommandError(commandResult);\n }\n return commandResult;\n }\n catch (err) {\n const error = err;\n throw errors_1.createCommandError(new CommandResult(\"\", error.message, unknownErrCode, error));\n }\n });\n}\nfunction withDefaults(opts) {\n let version = opts === null || opts === void 0 ? void 0 : opts.version;\n if (!version) {\n version = new semver.SemVer(version_1.version);\n }\n let root = opts === null || opts === void 0 ? void 0 : opts.root;\n if (!root) {\n root = path.join(os.homedir(), \".pulumi\", \"versions\", `${version}`);\n }\n const skipVersionCheck = (opts === null || opts === void 0 ? void 0 : opts.skipVersionCheck) !== undefined ? opts.skipVersionCheck : false;\n return { version, root, skipVersionCheck };\n}\nfunction writeTempFile(contents, options) {\n return new Promise((resolve, reject) => {\n tmp.file({\n // Powershell requires a `.ps1` extension.\n postfix: options === null || options === void 0 ? void 0 : options.extension,\n // Powershell won't execute the script if the file descriptor is open.\n discardDescriptor: true,\n }, (tmpErr, tmpPath, _fd, cleanup) => {\n if (tmpErr) {\n reject(tmpErr);\n }\n else {\n fs.writeFile(tmpPath, contents, (writeErr) => {\n if (writeErr) {\n cleanup();\n reject(writeErr);\n }\n else {\n resolve({ path: tmpPath, cleanup });\n }\n });\n }\n });\n });\n}\n/**\n * @internal\n * Throws an error if the Pulumi CLI version is not valid.\n *\n * @param minVersion The minimum acceptable version of the Pulumi CLI.\n * @param currentVersion The currently known version. `null` indicates that the current version is unknown.\n * @param optOut If the user has opted out of the version check.\n */\nfunction parseAndValidatePulumiVersion(minVersion, currentVersion, optOut) {\n const version = semver.parse(currentVersion);\n if (optOut) {\n return version;\n }\n if (version == null) {\n throw new Error(`Failed to parse Pulumi CLI version. This is probably an internal error. You can override this by setting \"${SKIP_VERSION_CHECK_VAR}\" to \"true\".`);\n }\n if (minVersion.major < version.major) {\n throw new Error(`Major version mismatch. You are using Pulumi CLI version ${currentVersion} with Automation SDK v${minVersion.major}. Please update the SDK.`);\n }\n if (minVersion.compare(version) === 1) {\n throw new Error(`Minimum version requirement failed. The minimum CLI version requirement is ${minVersion.toString()}, your current CLI version is ${currentVersion}. Please update the Pulumi CLI.`);\n }\n return version;\n}\nexports.parseAndValidatePulumiVersion = parseAndValidatePulumiVersion;\n//# sourceMappingURL=cmd.js.map","\"use strict\";\n// Copyright 2016-2020, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * CommandError is an error resulting from invocation of a Pulumi Command.\n * @alpha\n */\nclass CommandError extends Error {\n /** @internal */\n constructor(commandResult) {\n super(commandResult.toString());\n this.commandResult = commandResult;\n this.name = \"CommandError\";\n }\n}\nexports.CommandError = CommandError;\n/**\n * ConcurrentUpdateError is thrown when attempting to update a stack that already has an update in progress.\n */\nclass ConcurrentUpdateError extends CommandError {\n /** @internal */\n constructor(commandResult) {\n super(commandResult);\n this.name = \"ConcurrentUpdateError\";\n }\n}\nexports.ConcurrentUpdateError = ConcurrentUpdateError;\n/**\n * StackNotFoundError is thrown when attempting to select a stack that does not exist.\n */\nclass StackNotFoundError extends CommandError {\n /** @internal */\n constructor(commandResult) {\n super(commandResult);\n this.name = \"StackNotFoundError\";\n }\n}\nexports.StackNotFoundError = StackNotFoundError;\n/**\n * StackAlreadyExistsError is thrown when attempting to create a stack that already exists.\n */\nclass StackAlreadyExistsError extends CommandError {\n /** @internal */\n constructor(commandResult) {\n super(commandResult);\n this.name = \"StackAlreadyExistsError\";\n }\n}\nexports.StackAlreadyExistsError = StackAlreadyExistsError;\nconst notFoundRegex = new RegExp(\"no stack named.*found\");\nconst alreadyExistsRegex = new RegExp(\"stack.*already exists\");\nconst conflictText = \"[409] Conflict: Another update is currently in progress.\";\nconst diyBackendConflictText = \"the stack is currently locked by\";\n/** @internal */\nfunction createCommandError(result) {\n const stderr = result.stderr;\n return notFoundRegex.test(stderr)\n ? new StackNotFoundError(result)\n : alreadyExistsRegex.test(stderr)\n ? new StackAlreadyExistsError(result)\n : stderr.indexOf(conflictText) >= 0\n ? new ConcurrentUpdateError(result)\n : stderr.indexOf(diyBackendConflictText) >= 0\n ? new ConcurrentUpdateError(result)\n : new CommandError(result);\n}\nexports.createCommandError = createCommandError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// Copyright 2016-2020, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DiffKind;\n(function (DiffKind) {\n // add indicates that the property was added.\n DiffKind[\"add\"] = \"add\";\n // addReplace indicates that the property was added and requires that the resource be replaced.\n DiffKind[\"addReplace\"] = \"add-replace\";\n // delete indicates that the property was deleted.\n DiffKind[\"delete\"] = \"delete\";\n // deleteReplace indicates that the property was deleted and requires that the resource be replaced.\n DiffKind[\"deleteReplace\"] = \"delete-replace\";\n // update indicates that the property was updated.\n DiffKind[\"update\"] = \"update\";\n // updateReplace indicates that the property was updated and requires that the resource be replaced.\n DiffKind[\"updateReplace\"] = \"update-replace\";\n})(DiffKind = exports.DiffKind || (exports.DiffKind = {}));\n//# sourceMappingURL=events.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./cmd\"));\n__export(require(\"./errors\"));\n__export(require(\"./stack\"));\n__export(require(\"./stackSettings\"));\n__export(require(\"./localWorkspace\"));\n__export(require(\"./events\"));\n__export(require(\"./remoteStack\"));\n__export(require(\"./remoteWorkspace\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright 2016-2023, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = __importStar(require(\"fs\"));\nconst yaml = __importStar(require(\"js-yaml\"));\nconst os = __importStar(require(\"os\"));\nconst semver = __importStar(require(\"semver\"));\nconst upath = __importStar(require(\"upath\"));\nconst cmd_1 = require(\"./cmd\");\nconst stack_1 = require(\"./stack\");\nconst stackSettings_1 = require(\"./stackSettings\");\nconst SKIP_VERSION_CHECK_VAR = \"PULUMI_AUTOMATION_API_SKIP_VERSION_CHECK\";\n/**\n * LocalWorkspace is a default implementation of the Workspace interface.\n * A Workspace is the execution context containing a single Pulumi project, a program,\n * and multiple stacks. Workspaces are used to manage the execution environment,\n * providing various utilities such as plugin installation, environment configuration\n * ($PULUMI_HOME), and creation, deletion, and listing of Stacks.\n * LocalWorkspace relies on Pulumi.yaml and Pulumi..yaml as the intermediate format\n * for Project and Stack settings. Modifying ProjectSettings will\n * alter the Workspace Pulumi.yaml file, and setting config on a Stack will modify the Pulumi..yaml file.\n * This is identical to the behavior of Pulumi CLI driven workspaces.\n *\n * @alpha\n */\nclass LocalWorkspace {\n constructor(opts) {\n let dir = \"\";\n let envs = {};\n if (opts) {\n const { workDir, pulumiHome, program, envVars, secretsProvider, remote, remoteGitProgramArgs, remotePreRunCommands, remoteEnvVars, remoteSkipInstallDependencies, } = opts;\n if (workDir) {\n // Verify that the workdir exists.\n if (!fs.existsSync(workDir)) {\n throw new Error(`Invalid workDir passed to local workspace: '${workDir}' does not exist`);\n }\n dir = workDir;\n }\n this.pulumiHome = pulumiHome;\n this.program = program;\n this.secretsProvider = secretsProvider;\n this.remote = remote;\n this.remoteGitProgramArgs = remoteGitProgramArgs;\n this.remotePreRunCommands = remotePreRunCommands;\n this.remoteEnvVars = Object.assign({}, remoteEnvVars);\n this.remoteSkipInstallDependencies = remoteSkipInstallDependencies;\n envs = Object.assign({}, envVars);\n }\n if (!dir) {\n dir = fs.mkdtempSync(upath.joinSafe(os.tmpdir(), \"automation-\"));\n }\n this.workDir = dir;\n this.envVars = envs;\n const skipVersionCheck = !!this.envVars[SKIP_VERSION_CHECK_VAR] || !!process.env[SKIP_VERSION_CHECK_VAR];\n const pulumiCommand = (opts === null || opts === void 0 ? void 0 : opts.pulumiCommand) ? Promise.resolve(opts.pulumiCommand)\n : cmd_1.PulumiCommand.get({ skipVersionCheck });\n const readinessPromises = [\n pulumiCommand.then((p) => {\n this._pulumiCommand = p;\n if (p.version) {\n this._pulumiVersion = p.version;\n }\n return this.checkRemoteSupport();\n }),\n ];\n if (opts === null || opts === void 0 ? void 0 : opts.projectSettings) {\n readinessPromises.push(this.saveProjectSettings(opts.projectSettings));\n }\n if (opts === null || opts === void 0 ? void 0 : opts.stackSettings) {\n for (const [name, value] of Object.entries(opts.stackSettings)) {\n readinessPromises.push(this.saveStackSettings(name, value));\n }\n }\n this.ready = Promise.all(readinessPromises);\n }\n /**\n * The underlying Pulumi CLI.\n */\n get pulumiCommand() {\n if (this._pulumiCommand === undefined) {\n throw new Error(\"Failed to get Pulumi CLI\");\n }\n return this._pulumiCommand;\n }\n /**\n * The version of the underlying Pulumi CLI/Engine.\n *\n * @returns A string representation of the version, if available. `null` otherwise.\n */\n get pulumiVersion() {\n if (this._pulumiVersion === undefined) {\n throw new Error(`Failed to get Pulumi version`);\n }\n return this._pulumiVersion.toString();\n }\n /**\n * Creates a workspace using the specified options. Used for maximal control and customization\n * of the underlying environment before any stacks are created or selected.\n *\n * @param opts Options used to configure the Workspace\n */\n static create(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const ws = new LocalWorkspace(opts);\n yield ws.ready;\n return ws;\n });\n }\n static createStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isInlineProgramArgs(args)) {\n return yield this.inlineSourceStackHelper(args, stack_1.Stack.create, opts);\n }\n else if (isLocalProgramArgs(args)) {\n return yield this.localSourceStackHelper(args, stack_1.Stack.create, opts);\n }\n throw new Error(`unexpected args: ${args}`);\n });\n }\n static selectStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isInlineProgramArgs(args)) {\n return yield this.inlineSourceStackHelper(args, stack_1.Stack.select, opts);\n }\n else if (isLocalProgramArgs(args)) {\n return yield this.localSourceStackHelper(args, stack_1.Stack.select, opts);\n }\n throw new Error(`unexpected args: ${args}`);\n });\n }\n static createOrSelectStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n if (isInlineProgramArgs(args)) {\n return yield this.inlineSourceStackHelper(args, stack_1.Stack.createOrSelect, opts);\n }\n else if (isLocalProgramArgs(args)) {\n return yield this.localSourceStackHelper(args, stack_1.Stack.createOrSelect, opts);\n }\n throw new Error(`unexpected args: ${args}`);\n });\n }\n static localSourceStackHelper(args, initFn, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n let wsOpts = { workDir: args.workDir };\n if (opts) {\n wsOpts = Object.assign(Object.assign({}, opts), { workDir: args.workDir });\n }\n const ws = new LocalWorkspace(wsOpts);\n yield ws.ready;\n return yield initFn(args.stackName, ws);\n });\n }\n static inlineSourceStackHelper(args, initFn, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n let wsOpts = { program: args.program };\n if (opts) {\n wsOpts = Object.assign(Object.assign({}, opts), { program: args.program });\n }\n if (!wsOpts.projectSettings) {\n if (wsOpts.workDir) {\n try {\n // Try to load the project settings.\n loadProjectSettings(wsOpts.workDir);\n }\n catch (e) {\n // If it failed to find the project settings file, set a default project.\n if (e.toString().includes(\"failed to find project settings\")) {\n wsOpts.projectSettings = defaultProject(args.projectName);\n }\n else {\n throw e;\n }\n }\n }\n else {\n wsOpts.projectSettings = defaultProject(args.projectName);\n }\n }\n const ws = new LocalWorkspace(wsOpts);\n yield ws.ready;\n return yield initFn(args.stackName, ws);\n });\n }\n /**\n * Returns the settings object for the current project if any\n * LocalWorkspace reads settings from the Pulumi.yaml in the workspace.\n * A workspace can contain only a single project at a time.\n */\n projectSettings() {\n return __awaiter(this, void 0, void 0, function* () {\n return loadProjectSettings(this.workDir);\n });\n }\n /**\n * Overwrites the settings object in the current project.\n * There can only be a single project per workspace. Fails if new project name does not match old.\n * LocalWorkspace writes this value to a Pulumi.yaml file in Workspace.WorkDir().\n *\n * @param settings The settings object to save to the Workspace.\n */\n saveProjectSettings(settings) {\n return __awaiter(this, void 0, void 0, function* () {\n let foundExt = \".yaml\";\n for (const ext of settingsExtensions) {\n const testPath = upath.joinSafe(this.workDir, `Pulumi${ext}`);\n if (fs.existsSync(testPath)) {\n foundExt = ext;\n break;\n }\n }\n const path = upath.joinSafe(this.workDir, `Pulumi${foundExt}`);\n let contents;\n if (foundExt === \".json\") {\n contents = JSON.stringify(settings, null, 4);\n }\n else {\n contents = yaml.safeDump(settings, { skipInvalid: true });\n }\n return fs.writeFileSync(path, contents);\n });\n }\n /**\n * Returns the settings object for the stack matching the specified stack name if any.\n * LocalWorkspace reads this from a Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to retrieve settings from.\n */\n stackSettings(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n const stackSettingsName = getStackSettingsName(stackName);\n for (const ext of settingsExtensions) {\n const isJSON = ext === \".json\";\n const path = upath.joinSafe(this.workDir, `Pulumi.${stackSettingsName}${ext}`);\n if (!fs.existsSync(path)) {\n continue;\n }\n const contents = fs.readFileSync(path).toString();\n let stackSettings;\n if (isJSON) {\n stackSettings = JSON.parse(contents);\n }\n stackSettings = yaml.safeLoad(contents);\n // Transform the serialized representation back to what we expect.\n for (const key of stackSettings_1.stackSettingsSerDeKeys) {\n if (stackSettings.hasOwnProperty(key[0])) {\n stackSettings[key[1]] = stackSettings[key[0]];\n delete stackSettings[key[0]];\n }\n }\n return stackSettings;\n }\n throw new Error(`failed to find stack settings file in workdir: ${this.workDir}`);\n });\n }\n /**\n * Overwrites the settings object for the stack matching the specified stack name.\n * LocalWorkspace writes this value to a Pulumi..yaml file in Workspace.WorkDir()\n *\n * @param stackName The stack to operate on.\n * @param settings The settings object to save.\n */\n saveStackSettings(stackName, settings) {\n return __awaiter(this, void 0, void 0, function* () {\n const stackSettingsName = getStackSettingsName(stackName);\n let foundExt = \".yaml\";\n for (const ext of settingsExtensions) {\n const testPath = upath.joinSafe(this.workDir, `Pulumi.${stackSettingsName}${ext}`);\n if (fs.existsSync(testPath)) {\n foundExt = ext;\n break;\n }\n }\n const path = upath.joinSafe(this.workDir, `Pulumi.${stackSettingsName}${foundExt}`);\n const serializeSettings = Object.assign({}, settings);\n let contents;\n // Transform the keys to the serialized representation that we expect.\n for (const key of stackSettings_1.stackSettingsSerDeKeys) {\n if (serializeSettings.hasOwnProperty(key[1])) {\n serializeSettings[key[0]] = serializeSettings[key[1]];\n delete serializeSettings[key[1]];\n }\n }\n if (foundExt === \".json\") {\n contents = JSON.stringify(serializeSettings, null, 4);\n }\n else {\n contents = yaml.safeDump(serializeSettings, { skipInvalid: true });\n }\n return fs.writeFileSync(path, contents);\n });\n }\n /**\n * Creates and sets a new stack with the stack name, failing if one already exists.\n *\n * @param stackName The stack to create.\n */\n createStack(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"stack\", \"init\", stackName];\n if (this.secretsProvider) {\n args.push(\"--secrets-provider\", this.secretsProvider);\n }\n if (this.isRemote) {\n args.push(\"--no-select\");\n }\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Selects and sets an existing stack matching the stack name, failing if none exists.\n *\n * @param stackName The stack to select.\n */\n selectStack(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n // If this is a remote workspace, we don't want to actually select the stack (which would modify global state);\n // but we will ensure the stack exists by calling `pulumi stack`.\n const args = [\"stack\"];\n if (!this.isRemote) {\n args.push(\"select\");\n }\n args.push(\"--stack\", stackName);\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Deletes the stack and all associated configuration and history.\n *\n * @param stackName The stack to remove\n */\n removeStack(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"stack\", \"rm\", \"--yes\", stackName]);\n });\n }\n /**\n * Adds environments to the end of a stack's import list. Imported environments are merged in order\n * per the ESC merge rules. The list of environments behaves as if it were the import list in an anonymous\n * environment.\n *\n * @param stackName The stack to operate on\n * @param environments The names of the environments to add to the stack's configuration\n */\n addEnvironments(stackName, ...environments) {\n return __awaiter(this, void 0, void 0, function* () {\n let ver = this._pulumiVersion;\n if (ver === undefined) {\n // Assume an old version. Doesn't really matter what this is as long as it's pre-3.95.\n ver = semver.parse(\"3.0.0\");\n }\n // 3.95 added this command (https://github.com/pulumi/pulumi/releases/tag/v3.95.0)\n if (ver.compare(\"3.95.0\") < 0) {\n throw new Error(`addEnvironments requires Pulumi version >= 3.95.0`);\n }\n yield this.runPulumiCmd([\"config\", \"env\", \"add\", ...environments, \"--stack\", stackName, \"--yes\"]);\n });\n }\n /**\n * Returns the list of environments associated with the specified stack name.\n *\n * @param stackName The stack to operate on\n */\n listEnvironments(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n let ver = this._pulumiVersion;\n if (ver === undefined) {\n // Assume an old version. Doesn't really matter what this is as long as it's pre-3.99.\n ver = semver.parse(\"3.0.0\");\n }\n // 3.99 added this command (https://github.com/pulumi/pulumi/releases/tag/v3.99.0)\n if (ver.compare(\"3.99.0\") < 0) {\n throw new Error(`listEnvironments requires Pulumi version >= 3.99.0`);\n }\n const result = yield this.runPulumiCmd([\"config\", \"env\", \"ls\", \"--stack\", stackName, \"--json\"]);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * Removes an environment from a stack's import list.\n *\n * @param stackName The stack to operate on\n * @param environment The name of the environment to remove from the stack's configuration\n */\n removeEnvironment(stackName, environment) {\n return __awaiter(this, void 0, void 0, function* () {\n let ver = this._pulumiVersion;\n if (ver === undefined) {\n // Assume an old version. Doesn't really matter what this is as long as it's pre-3.95.\n ver = semver.parse(\"3.0.0\");\n }\n // 3.95 added this command (https://github.com/pulumi/pulumi/releases/tag/v3.95.0)\n if (ver.compare(\"3.95.0\") < 0) {\n throw new Error(`removeEnvironments requires Pulumi version >= 3.95.0`);\n }\n yield this.runPulumiCmd([\"config\", \"env\", \"rm\", environment, \"--stack\", stackName, \"--yes\"]);\n });\n }\n /**\n * Returns the value associated with the specified stack name and key,\n * scoped to the current workspace. LocalWorkspace reads this config from the matching Pulumi.stack.yaml file.\n *\n * @param stackName The stack to read config from\n * @param key The key to use for the config lookup\n * @param path The key contains a path to a property in a map or list to get\n */\n getConfig(stackName, key, path) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"config\", \"get\"];\n if (path) {\n args.push(\"--path\");\n }\n args.push(key, \"--json\", \"--stack\", stackName);\n const result = yield this.runPulumiCmd(args);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * Returns the config map for the specified stack name, scoped to the current workspace.\n * LocalWorkspace reads this config from the matching Pulumi.stack.yaml file.\n *\n * @param stackName The stack to read config from\n */\n getAllConfig(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"config\", \"--show-secrets\", \"--json\", \"--stack\", stackName]);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * Sets the specified key-value pair on the provided stack name.\n * LocalWorkspace writes this value to the matching Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to operate on\n * @param key The config key to set\n * @param value The value to set\n * @param path The key contains a path to a property in a map or list to set\n */\n setConfig(stackName, key, value, path) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"config\", \"set\"];\n if (path) {\n args.push(\"--path\");\n }\n const secretArg = value.secret ? \"--secret\" : \"--plaintext\";\n args.push(key, \"--stack\", stackName, secretArg, \"--non-interactive\", \"--\", value.value);\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Sets all values in the provided config map for the specified stack name.\n * LocalWorkspace writes the config to the matching Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to operate on\n * @param config The `ConfigMap` to upsert against the existing config\n * @param path The keys contain a path to a property in a map or list to set\n */\n setAllConfig(stackName, config, path) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"config\", \"set-all\", \"--stack\", stackName];\n if (path) {\n args.push(\"--path\");\n }\n for (const [key, value] of Object.entries(config)) {\n const secretArg = value.secret ? \"--secret\" : \"--plaintext\";\n args.push(secretArg, `${key}=${value.value}`);\n }\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Removes the specified key-value pair on the provided stack name.\n * It will remove any matching values in the Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to operate on\n * @param key The config key to remove\n * @param path The key contains a path to a property in a map or list to remove\n */\n removeConfig(stackName, key, path) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"config\", \"rm\", key, \"--stack\", stackName];\n if (path) {\n args.push(\"--path\");\n }\n yield this.runPulumiCmd(args);\n });\n }\n /**\n *\n * Removes all values in the provided key list for the specified stack name\n * It will remove any matching values in the Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to operate on\n * @param keys The list of keys to remove from the underlying config\n * @param path The keys contain a path to a property in a map or list to remove\n */\n removeAllConfig(stackName, keys, path) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"config\", \"rm-all\", \"--stack\", stackName];\n if (path) {\n args.push(\"--path\");\n }\n args.push(...keys);\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Gets and sets the config map used with the last update for Stack matching stack name.\n * It will overwrite all configuration in the Pulumi..yaml file in Workspace.WorkDir().\n *\n * @param stackName The stack to refresh\n */\n refreshConfig(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"config\", \"refresh\", \"--force\", \"--stack\", stackName]);\n return this.getAllConfig(stackName);\n });\n }\n /**\n * Returns the value associated with the specified stack name and key,\n * scoped to the LocalWorkspace.\n *\n * @param stackName The stack to read tag metadata from.\n * @param key The key to use for the tag lookup.\n */\n getTag(stackName, key) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"stack\", \"tag\", \"get\", key, \"--stack\", stackName]);\n return result.stdout.trim();\n });\n }\n /**\n * Sets the specified key-value pair on the provided stack name.\n *\n * @param stackName The stack to operate on.\n * @param key The tag key to set.\n * @param value The tag value to set.\n */\n setTag(stackName, key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"stack\", \"tag\", \"set\", key, value, \"--stack\", stackName]);\n });\n }\n /**\n * Removes the specified key-value pair on the provided stack name.\n *\n * @param stackName The stack to operate on.\n * @param key The tag key to remove.\n */\n removeTag(stackName, key) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"stack\", \"tag\", \"rm\", key, \"--stack\", stackName]);\n });\n }\n /**\n * Returns the tag map for the specified tag name, scoped to the current LocalWorkspace.\n *\n * @param stackName The stack to read tag metadata from.\n */\n listTags(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"stack\", \"tag\", \"ls\", \"--json\", \"--stack\", stackName]);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * Returns the currently authenticated user.\n */\n whoAmI() {\n return __awaiter(this, void 0, void 0, function* () {\n let ver = this._pulumiVersion;\n if (ver === undefined) {\n // Assume an old version. Doesn't really matter what this is as long as it's pre-3.58.\n ver = semver.parse(\"3.0.0\");\n }\n // 3.58 added the --json flag (https://github.com/pulumi/pulumi/releases/tag/v3.58.0)\n if (ver.compare(\"3.58.0\") >= 0) {\n const result = yield this.runPulumiCmd([\"whoami\", \"--json\"]);\n return JSON.parse(result.stdout);\n }\n else {\n const result = yield this.runPulumiCmd([\"whoami\"]);\n return { user: result.stdout.trim() };\n }\n });\n }\n /**\n * Returns a summary of the currently selected stack, if any.\n */\n stack() {\n return __awaiter(this, void 0, void 0, function* () {\n const stacks = yield this.listStacks();\n for (const stack of stacks) {\n if (stack.current) {\n return stack;\n }\n }\n return undefined;\n });\n }\n /**\n * Returns all Stacks created under the current Project.\n * This queries underlying backend and may return stacks not present in the Workspace (as Pulumi..yaml files).\n */\n listStacks() {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"stack\", \"ls\", \"--json\"]);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * Installs a plugin in the Workspace, for example to use cloud providers like AWS or GCP.\n *\n * @param name the name of the plugin.\n * @param version the version of the plugin e.g. \"v1.0.0\".\n * @param kind the kind of plugin, defaults to \"resource\"\n */\n installPlugin(name, version, kind = \"resource\") {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"plugin\", \"install\", kind, name, version]);\n });\n }\n /**\n * Installs a plugin in the Workspace, from a third party server.\n *\n * @param name the name of the plugin.\n * @param version the version of the plugin e.g. \"v1.0.0\".\n * @param kind the kind of plugin, defaults to \"resource\"\n * @param server the server to install the plugin from\n */\n installPluginFromServer(name, version, server) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"plugin\", \"install\", \"resource\", name, version, \"--server\", server]);\n });\n }\n /**\n * Removes a plugin from the Workspace matching the specified name and version.\n *\n * @param name the optional name of the plugin.\n * @param versionRange optional semver range to check when removing plugins matching the given name\n * e.g. \"1.0.0\", \">1.0.0\".\n * @param kind he kind of plugin, defaults to \"resource\".\n */\n removePlugin(name, versionRange, kind = \"resource\") {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"plugin\", \"rm\", kind];\n if (name) {\n args.push(name);\n }\n if (versionRange) {\n args.push(versionRange);\n }\n args.push(\"--yes\");\n yield this.runPulumiCmd(args);\n });\n }\n /**\n * Returns a list of all plugins installed in the Workspace.\n */\n listPlugins() {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"plugin\", \"ls\", \"--json\"]);\n return JSON.parse(result.stdout, (key, value) => {\n if (key === \"installTime\" || key === \"lastUsedTime\") {\n return new Date(value);\n }\n return value;\n });\n });\n }\n /**\n * exportStack exports the deployment state of the stack.\n * This can be combined with Workspace.importStack to edit a stack's state (such as recovery from failed deployments).\n *\n * @param stackName the name of the stack.\n */\n exportStack(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.runPulumiCmd([\"stack\", \"export\", \"--show-secrets\", \"--stack\", stackName]);\n return JSON.parse(result.stdout);\n });\n }\n /**\n * importStack imports the specified deployment state into a pre-existing stack.\n * This can be combined with Workspace.exportStack to edit a stack's state (such as recovery from failed deployments).\n *\n * @param stackName the name of the stack.\n * @param state the stack state to import.\n */\n importStack(stackName, state) {\n return __awaiter(this, void 0, void 0, function* () {\n const randomSuffix = Math.floor(100000 + Math.random() * 900000);\n const filepath = upath.joinSafe(os.tmpdir(), `automation-${randomSuffix}`);\n const contents = JSON.stringify(state, null, 4);\n fs.writeFileSync(filepath, contents);\n yield this.runPulumiCmd([\"stack\", \"import\", \"--file\", filepath, \"--stack\", stackName]);\n fs.unlinkSync(filepath);\n });\n }\n /**\n * Gets the current set of Stack outputs from the last Stack.up().\n * @param stackName the name of the stack.\n */\n stackOutputs(stackName) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: do this in parallel after this is fixed https://github.com/pulumi/pulumi/issues/6050\n const maskedResult = yield this.runPulumiCmd([\"stack\", \"output\", \"--json\", \"--stack\", stackName]);\n const plaintextResult = yield this.runPulumiCmd([\n \"stack\",\n \"output\",\n \"--json\",\n \"--show-secrets\",\n \"--stack\",\n stackName,\n ]);\n const maskedOuts = JSON.parse(maskedResult.stdout);\n const plaintextOuts = JSON.parse(plaintextResult.stdout);\n const outputs = {};\n for (const [key, value] of Object.entries(plaintextOuts)) {\n const secret = maskedOuts[key] === \"[secret]\";\n outputs[key] = { value, secret };\n }\n return outputs;\n });\n }\n /**\n * serializeArgsForOp is hook to provide additional args to every CLI commands before they are executed.\n * Provided with stack name,\n * returns a list of args to append to an invoked command [\"--config=...\", ]\n * LocalWorkspace does not utilize this extensibility point.\n */\n serializeArgsForOp(_) {\n return __awaiter(this, void 0, void 0, function* () {\n // LocalWorkspace does not utilize this extensibility point.\n return [];\n });\n }\n /**\n * postCommandCallback is a hook executed after every command. Called with the stack name.\n * An extensibility point to perform workspace cleanup (CLI operations may create/modify a Pulumi.stack.yaml)\n * LocalWorkspace does not utilize this extensibility point.\n */\n postCommandCallback(_) {\n return __awaiter(this, void 0, void 0, function* () {\n // LocalWorkspace does not utilize this extensibility point.\n return;\n });\n }\n checkRemoteSupport() {\n return __awaiter(this, void 0, void 0, function* () {\n const optOut = !!this.envVars[SKIP_VERSION_CHECK_VAR] || !!process.env[SKIP_VERSION_CHECK_VAR];\n // If remote was specified, ensure the CLI supports it.\n if (!optOut && this.isRemote) {\n // See if `--remote` is present in `pulumi preview --help`'s output.\n const previewResult = yield this.runPulumiCmd([\"preview\", \"--help\"]);\n const previewOutput = previewResult.stdout.trim();\n if (!previewOutput.includes(\"--remote\")) {\n throw new Error(\"The Pulumi CLI does not support remote operations. Please upgrade.\");\n }\n }\n });\n }\n runPulumiCmd(args) {\n return __awaiter(this, void 0, void 0, function* () {\n let envs = {};\n if (this.pulumiHome) {\n envs[\"PULUMI_HOME\"] = this.pulumiHome;\n }\n if (this.isRemote) {\n envs[\"PULUMI_EXPERIMENTAL\"] = \"true\";\n }\n envs = Object.assign(Object.assign({}, envs), this.envVars);\n return this.pulumiCommand.run(args, this.workDir, envs);\n });\n }\n /** @internal */\n get isRemote() {\n return !!this.remote;\n }\n /** @internal */\n remoteArgs() {\n var _a, _b;\n const args = [];\n if (!this.isRemote) {\n return args;\n }\n args.push(\"--remote\");\n if (this.remoteGitProgramArgs) {\n const { url, projectPath, branch, commitHash, auth } = this.remoteGitProgramArgs;\n if (url) {\n args.push(url);\n }\n if (projectPath) {\n args.push(\"--remote-git-repo-dir\", projectPath);\n }\n if (branch) {\n args.push(\"--remote-git-branch\", branch);\n }\n if (commitHash) {\n args.push(\"--remote-git-commit\", commitHash);\n }\n if (auth) {\n const { personalAccessToken, sshPrivateKey, sshPrivateKeyPath, password, username } = auth;\n if (personalAccessToken) {\n args.push(\"--remote-git-auth-access-token\", personalAccessToken);\n }\n if (sshPrivateKey) {\n args.push(\"--remote-git-auth-ssh-private-key\", sshPrivateKey);\n }\n if (sshPrivateKeyPath) {\n args.push(\"--remote-git-auth-ssh-private-key-path\", sshPrivateKeyPath);\n }\n if (password) {\n args.push(\"--remote-git-auth-password\", password);\n }\n if (username) {\n args.push(\"--remote-git-auth-username\", username);\n }\n }\n }\n for (const key of Object.keys((_a = this.remoteEnvVars) !== null && _a !== void 0 ? _a : {})) {\n const val = this.remoteEnvVars[key];\n if (typeof val === \"string\") {\n args.push(\"--remote-env\", `${key}=${val}`);\n }\n else if (\"secret\" in val) {\n args.push(\"--remote-env-secret\", `${key}=${val.secret}`);\n }\n else {\n throw new Error(`unexpected env value '${val}' for key '${key}'`);\n }\n }\n for (const command of (_b = this.remotePreRunCommands) !== null && _b !== void 0 ? _b : []) {\n args.push(\"--remote-pre-run-command\", command);\n }\n if (this.remoteSkipInstallDependencies) {\n args.push(\"--remote-skip-install-dependencies\");\n }\n return args;\n }\n}\nexports.LocalWorkspace = LocalWorkspace;\n/**\n * Returns true if the provided `args` object satisfies the `LocalProgramArgs` interface.\n *\n * @param args The args object to evaluate\n */\nfunction isLocalProgramArgs(args) {\n return args.workDir !== undefined;\n}\n/**\n * Returns true if the provided `args` object satisfies the `InlineProgramArgs` interface.\n *\n * @param args The args object to evaluate\n */\nfunction isInlineProgramArgs(args) {\n return args.projectName !== undefined && args.program !== undefined;\n}\nconst settingsExtensions = [\".yaml\", \".yml\", \".json\"];\nfunction getStackSettingsName(name) {\n const parts = name.split(\"/\");\n if (parts.length < 1) {\n return name;\n }\n return parts[parts.length - 1];\n}\nfunction defaultProject(projectName) {\n const settings = { name: projectName, runtime: \"nodejs\", main: process.cwd() };\n return settings;\n}\nfunction loadProjectSettings(workDir) {\n for (const ext of settingsExtensions) {\n const isJSON = ext === \".json\";\n const path = upath.joinSafe(workDir, `Pulumi${ext}`);\n if (!fs.existsSync(path)) {\n continue;\n }\n const contents = fs.readFileSync(path).toString();\n if (isJSON) {\n return JSON.parse(contents);\n }\n return yaml.safeLoad(contents);\n }\n throw new Error(`failed to find project settings file in workdir: ${workDir}`);\n}\n//# sourceMappingURL=localWorkspace.js.map","\"use strict\";\n// Copyright 2016-2021, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst semver = __importStar(require(\"semver\"));\n/** @internal */\nexports.minimumVersion = new semver.SemVer(\"v3.2.0-alpha\");\n//# sourceMappingURL=minimumVersion.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst localWorkspace_1 = require(\"./localWorkspace\");\n/**\n * RemoteStack is an isolated, independencly configurable instance of a Pulumi program that is\n * operated on remotely (up/preview/refresh/destroy).\n */\nclass RemoteStack {\n constructor(stack) {\n this.stack = stack;\n const ws = stack.workspace;\n if (!(ws instanceof localWorkspace_1.LocalWorkspace)) {\n throw new Error(\"expected workspace to be an instance of LocalWorkspace\");\n }\n }\n /** @internal */\n static create(stack) {\n return new RemoteStack(stack);\n }\n /**\n * The name identifying the Stack.\n */\n get name() {\n return this.stack.name;\n }\n /**\n * Creates or updates the resources in a stack by executing the program in the Workspace.\n * https://www.pulumi.com/docs/cli/commands/pulumi_up/\n * This operation runs remotely.\n *\n * @param opts Options to customize the behavior of the update.\n */\n up(opts) {\n return this.stack.up(opts);\n }\n /**\n * Performs a dry-run update to a stack, returning pending changes.\n * https://www.pulumi.com/docs/cli/commands/pulumi_preview/\n * This operation runs remotely.\n *\n * @param opts Options to customize the behavior of the preview.\n */\n preview(opts) {\n return this.stack.preview(opts);\n }\n /**\n * Compares the current stack’s resource state with the state known to exist in the actual\n * cloud provider. Any such changes are adopted into the current stack.\n * This operation runs remotely.\n *\n * @param opts Options to customize the behavior of the refresh.\n */\n refresh(opts) {\n return this.stack.refresh(opts);\n }\n /**\n * Destroy deletes all resources in a stack, leaving all history and configuration intact.\n * This operation runs remotely.\n *\n * @param opts Options to customize the behavior of the destroy.\n */\n destroy(opts) {\n return this.stack.destroy(opts);\n }\n /**\n * Gets the current set of Stack outputs from the last Stack.up().\n */\n outputs() {\n return this.stack.outputs();\n }\n /**\n * Returns a list summarizing all previous and current results from Stack lifecycle operations\n * (up/preview/refresh/destroy).\n */\n history(pageSize, page) {\n // TODO: Find a way to allow showSecrets as an option that doesn't require loading the project.\n return this.stack.history(pageSize, page, false);\n }\n /**\n * Cancel stops a stack's currently running update. It returns an error if no update is currently running.\n * Note that this operation is _very dangerous_, and may leave the stack in an inconsistent state\n * if a resource operation was pending when the update was canceled.\n * This command is not supported for diy backends.\n */\n cancel() {\n return this.stack.cancel();\n }\n /**\n * exportStack exports the deployment state of the stack.\n * This can be combined with Stack.importStack to edit a stack's state (such as recovery from failed deployments).\n */\n exportStack() {\n return this.stack.exportStack();\n }\n /**\n * importStack imports the specified deployment state into a pre-existing stack.\n * This can be combined with Stack.exportStack to edit a stack's state (such as recovery from failed deployments).\n *\n * @param state the stack state to import.\n */\n importStack(state) {\n return this.stack.importStack(state);\n }\n}\nexports.RemoteStack = RemoteStack;\n//# sourceMappingURL=remoteStack.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 });\nconst localWorkspace_1 = require(\"./localWorkspace\");\nconst remoteStack_1 = require(\"./remoteStack\");\nconst stack_1 = require(\"./stack\");\n/**\n * RemoteWorkspace is the execution context containing a single remote Pulumi project.\n */\nclass RemoteWorkspace {\n /**\n * PREVIEW: Creates a Stack backed by a RemoteWorkspace with source code from the specified Git repository.\n * Pulumi operations on the stack (Preview, Update, Refresh, and Destroy) are performed remotely.\n *\n * @param args A set of arguments to initialize a RemoteStack with a remote Pulumi program from a Git repository.\n * @param opts Additional customizations to be applied to the Workspace.\n */\n static createStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const ws = yield createLocalWorkspace(args, opts);\n const stack = yield stack_1.Stack.create(args.stackName, ws);\n return remoteStack_1.RemoteStack.create(stack);\n });\n }\n /**\n * PREVIEW: Selects an existing Stack backed by a RemoteWorkspace with source code from the specified Git\n * repository. Pulumi operations on the stack (Preview, Update, Refresh, and Destroy) are performed remotely.\n *\n * @param args A set of arguments to initialize a RemoteStack with a remote Pulumi program from a Git repository.\n * @param opts Additional customizations to be applied to the Workspace.\n */\n static selectStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const ws = yield createLocalWorkspace(args, opts);\n const stack = yield stack_1.Stack.select(args.stackName, ws);\n return remoteStack_1.RemoteStack.create(stack);\n });\n }\n /**\n * PREVIEW: Creates or selects an existing Stack backed by a RemoteWorkspace with source code from the specified\n * Git repository. Pulumi operations on the stack (Preview, Update, Refresh, and Destroy) are performed remotely.\n *\n * @param args A set of arguments to initialize a RemoteStack with a remote Pulumi program from a Git repository.\n * @param opts Additional customizations to be applied to the Workspace.\n */\n static createOrSelectStack(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const ws = yield createLocalWorkspace(args, opts);\n const stack = yield stack_1.Stack.createOrSelect(args.stackName, ws);\n return remoteStack_1.RemoteStack.create(stack);\n });\n }\n constructor() { } // eslint-disable-line @typescript-eslint/no-empty-function\n}\nexports.RemoteWorkspace = RemoteWorkspace;\nfunction createLocalWorkspace(args, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!isFullyQualifiedStackName(args.stackName)) {\n throw new Error(`stack name \"${args.stackName}\" must be fully qualified.`);\n }\n if (!args.url) {\n throw new Error(\"url is required.\");\n }\n if (args.branch && args.commitHash) {\n throw new Error(\"branch and commitHash cannot both be specified.\");\n }\n if (!args.branch && !args.commitHash) {\n throw new Error(\"either branch or commitHash is required.\");\n }\n if (args.auth) {\n if (args.auth.sshPrivateKey && args.auth.sshPrivateKeyPath) {\n throw new Error(\"sshPrivateKey and sshPrivateKeyPath cannot both be specified.\");\n }\n }\n const localOpts = {\n remote: true,\n remoteGitProgramArgs: args,\n remoteEnvVars: opts === null || opts === void 0 ? void 0 : opts.envVars,\n remotePreRunCommands: opts === null || opts === void 0 ? void 0 : opts.preRunCommands,\n remoteSkipInstallDependencies: opts === null || opts === void 0 ? void 0 : opts.skipInstallDependencies,\n };\n return yield localWorkspace_1.LocalWorkspace.create(localOpts);\n });\n}\n/** @internal exported only so it can be tested */\nfunction isFullyQualifiedStackName(stackName) {\n if (!stackName) {\n return false;\n }\n const split = stackName.split(\"/\");\n return split.length === 3 && !!split[0] && !!split[1] && !!split[2];\n}\nexports.isFullyQualifiedStackName = isFullyQualifiedStackName;\n//# sourceMappingURL=remoteWorkspace.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst log = __importStar(require(\"../log\"));\nconst runtimeConfig = __importStar(require(\"../runtime/config\"));\nconst debuggable = __importStar(require(\"../runtime/debuggable\"));\nconst settings = __importStar(require(\"../runtime/settings\"));\nconst stack = __importStar(require(\"../runtime/stack\"));\nconst localState = __importStar(require(\"../runtime/state\"));\nconst langproto = __importStar(require(\"../proto/language_pb\"));\nconst plugproto = __importStar(require(\"../proto/plugin_pb\"));\n// maxRPCMessageSize raises the gRPC Max Message size from `4194304` (4mb) to `419430400` (400mb)\n/** @internal */\nexports.maxRPCMessageSize = 1024 * 1024 * 400;\n/** @internal */\nclass LanguageServer {\n constructor(program) {\n this.program = program;\n }\n onPulumiExit(hasError) {\n // check for leaks once the CLI exits but skip if the program otherwise errored to keep error output clean\n if (!hasError) {\n const [leaks, leakMessage] = debuggable.leakedPromises();\n if (leaks.size !== 0) {\n throw new Error(leakMessage);\n }\n }\n }\n getRequiredPlugins(call, callback) {\n const resp = new langproto.GetRequiredPluginsResponse();\n resp.setPluginsList([]);\n callback(undefined, resp);\n }\n run(call, callback) {\n const req = call.request;\n const resp = new langproto.RunResponse();\n // Setup a new async state store for this run\n const store = new localState.LocalStore();\n return localState.asyncLocalStorage.run(store, () => __awaiter(this, void 0, void 0, function* () {\n var _a;\n const errorSet = new Set();\n const uncaughtHandler = newUncaughtHandler(errorSet);\n try {\n const args = req.getArgsList();\n const engineAddr = args && args.length > 0 ? args[0] : \"\";\n settings.resetOptions(req.getProject(), req.getStack(), req.getParallel(), engineAddr, req.getMonitorAddress(), req.getDryrun(), req.getOrganization());\n const config = {};\n for (const [k, v] of ((_a = req.getConfigMap()) === null || _a === void 0 ? void 0 : _a.entries()) || []) {\n config[k] = v;\n }\n runtimeConfig.setAllConfig(config, req.getConfigsecretkeysList() || []);\n process.setMaxListeners(settings.getMaximumListeners());\n process.on(\"uncaughtException\", uncaughtHandler);\n // @ts-ignore 'unhandledRejection' will almost always invoke uncaughtHandler with an Error. so\n // just suppress the TS strictness here.\n process.on(\"unhandledRejection\", uncaughtHandler);\n try {\n yield stack.runInPulumiStack(this.program);\n yield settings.disconnect();\n process.off(\"uncaughtException\", uncaughtHandler);\n process.off(\"unhandledRejection\", uncaughtHandler);\n }\n catch (e) {\n yield settings.disconnect();\n process.off(\"uncaughtException\", uncaughtHandler);\n process.off(\"unhandledRejection\", uncaughtHandler);\n if (!errors_1.isGrpcError(e)) {\n throw e;\n }\n }\n if (errorSet.size !== 0 || log.hasErrors()) {\n throw new Error(\"One or more errors occurred\");\n }\n }\n catch (e) {\n const err = e instanceof Error ? e : new Error(`unknown error ${e}`);\n resp.setError(err.message);\n callback(err, undefined);\n }\n callback(undefined, resp);\n }));\n }\n getPluginInfo(call, callback) {\n const resp = new plugproto.PluginInfo();\n resp.setVersion(\"1.0.0\");\n callback(undefined, resp);\n }\n}\nexports.LanguageServer = LanguageServer;\nfunction newUncaughtHandler(errorSet) {\n return (err) => {\n // In node, if you throw an error in a chained promise, but the exception is not finally\n // handled, then you can end up getting an unhandledRejection for each exception/promise\n // pair. Because the exception is the same through all of these, we keep track of it and\n // only report it once so the user doesn't get N messages for the same thing.\n if (errorSet.has(err)) {\n return;\n }\n errorSet.add(err);\n // Default message should be to include the full stack (which includes the message), or\n // fallback to just the message if we can't get the stack.\n //\n // If both the stack and message are empty, then just stringify the err object itself. This\n // is also necessary as users can throw arbitrary things in JS (including non-Errors).\n let defaultMessage = \"\";\n if (err) {\n defaultMessage = err.stack || err.message || \"\" + err;\n }\n // First, log the error.\n if (errors_1.RunError.isInstance(err)) {\n // Always hide the stack for RunErrors.\n log.error(err.message);\n }\n else if (errors_1.ResourceError.isInstance(err)) {\n // Hide the stack if requested to by the ResourceError creator.\n const message = err.hideStack ? err.message : defaultMessage;\n log.error(message, err.resource);\n }\n else if (!errors_1.isGrpcError(err)) {\n log.error(`Unhandled exception: ${defaultMessage}`);\n }\n };\n}\n//# sourceMappingURL=server.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst pathlib = __importStar(require(\"path\"));\nconst readline = __importStar(require(\"readline\"));\nconst upath = __importStar(require(\"upath\"));\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst tail_file_1 = __importDefault(require(\"@logdna/tail-file\"));\nconst log = __importStar(require(\"../log\"));\nconst errors_1 = require(\"./errors\");\nconst localWorkspace_1 = require(\"./localWorkspace\");\nconst server_1 = require(\"./server\");\nconst langrpc = __importStar(require(\"../proto/language_grpc_pb\"));\n/**\n * Stack is an isolated, independently configurable instance of a Pulumi program.\n * Stack exposes methods for the full pulumi lifecycle (up/preview/refresh/destroy), as well as managing configuration.\n * Multiple Stacks are commonly used to denote different phases of development\n * (such as development, staging and production) or feature branches (such as feature-x-dev, jane-feature-x-dev).\n *\n * @alpha\n */\nclass Stack {\n constructor(name, workspace, mode) {\n this.name = name;\n this.workspace = workspace;\n switch (mode) {\n case \"create\":\n this.ready = workspace.createStack(name);\n return this;\n case \"select\":\n this.ready = workspace.selectStack(name);\n return this;\n case \"createOrSelect\":\n this.ready = workspace.selectStack(name).catch((err) => {\n if (err instanceof errors_1.StackNotFoundError) {\n return workspace.createStack(name);\n }\n throw err;\n });\n return this;\n default:\n throw new Error(`unexpected Stack creation mode: ${mode}`);\n }\n }\n /**\n * Creates a new stack using the given workspace, and stack name.\n * It fails if a stack with that name already exists\n *\n * @param name The name identifying the Stack.\n * @param workspace The Workspace the Stack was created from.\n */\n static create(name, workspace) {\n return __awaiter(this, void 0, void 0, function* () {\n const stack = new Stack(name, workspace, \"create\");\n yield stack.ready;\n return stack;\n });\n }\n /**\n * Selects stack using the given workspace, and stack name.\n * It returns an error if the given Stack does not exist.\n *\n * @param name The name identifying the Stack.\n * @param workspace The Workspace the Stack was created from.\n */\n static select(name, workspace) {\n return __awaiter(this, void 0, void 0, function* () {\n const stack = new Stack(name, workspace, \"select\");\n yield stack.ready;\n return stack;\n });\n }\n /**\n * Tries to create a new stack using the given workspace and\n * stack name if the stack does not already exist,\n * or falls back to selecting the existing stack. If the stack does not exist,\n * it will be created and selected.\n *\n * @param name The name identifying the Stack.\n * @param workspace The Workspace the Stack was created from.\n */\n static createOrSelect(name, workspace) {\n return __awaiter(this, void 0, void 0, function* () {\n const stack = new Stack(name, workspace, \"createOrSelect\");\n yield stack.ready;\n return stack;\n });\n }\n readLines(logPath, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const eventLogTail = new tail_file_1.default(logPath, { startPos: 0, pollFileIntervalMs: 200 }).on(\"tail_error\", (err) => {\n throw err;\n });\n yield eventLogTail.start();\n const lineSplitter = readline.createInterface({ input: eventLogTail });\n lineSplitter.on(\"line\", (line) => {\n let event;\n try {\n event = JSON.parse(line);\n callback(event);\n }\n catch (e) {\n log.warn(`Failed to parse engine event\nIf you're seeing this warning, please comment on https://github.com/pulumi/pulumi/issues/6768 with the event and any\ndetails about your environment.\n\nEvent: ${line}\\n${e.toString()}`);\n }\n });\n return {\n tail: eventLogTail,\n rl: lineSplitter,\n };\n });\n }\n /**\n * Creates or updates the resources in a stack by executing the program in the Workspace.\n * https://www.pulumi.com/docs/cli/commands/pulumi_up/\n *\n * @param opts Options to customize the behavior of the update.\n */\n up(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"up\", \"--yes\", \"--skip-preview\"];\n let kind = execKind.local;\n let program = this.workspace.program;\n args.push(...this.remoteArgs());\n if (opts) {\n if (opts.program) {\n program = opts.program;\n }\n if (opts.message) {\n args.push(\"--message\", opts.message);\n }\n if (opts.expectNoChanges) {\n args.push(\"--expect-no-changes\");\n }\n if (opts.refresh) {\n args.push(\"--refresh\");\n }\n if (opts.diff) {\n args.push(\"--diff\");\n }\n if (opts.replace) {\n for (const rURN of opts.replace) {\n args.push(\"--replace\", rURN);\n }\n }\n if (opts.target) {\n for (const tURN of opts.target) {\n args.push(\"--target\", tURN);\n }\n }\n if (opts.policyPacks) {\n for (const pack of opts.policyPacks) {\n args.push(\"--policy-pack\", pack);\n }\n }\n if (opts.policyPackConfigs) {\n for (const packConfig of opts.policyPackConfigs) {\n args.push(\"--policy-pack-config\", packConfig);\n }\n }\n if (opts.targetDependents) {\n args.push(\"--target-dependents\");\n }\n if (opts.parallel) {\n args.push(\"--parallel\", opts.parallel.toString());\n }\n if (opts.userAgent) {\n args.push(\"--exec-agent\", opts.userAgent);\n }\n if (opts.plan) {\n args.push(\"--plan\", opts.plan);\n }\n applyGlobalOpts(opts, args);\n }\n let onExit = (hasError) => {\n return;\n };\n let didError = false;\n if (program) {\n kind = execKind.inline;\n const server = new grpc.Server({\n \"grpc.max_receive_message_length\": server_1.maxRPCMessageSize,\n });\n const languageServer = new server_1.LanguageServer(program);\n server.addService(langrpc.LanguageRuntimeService, languageServer);\n const port = yield new Promise((resolve, reject) => {\n server.bindAsync(`127.0.0.1:0`, grpc.ServerCredentials.createInsecure(), (err, p) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(p);\n }\n });\n });\n onExit = (hasError) => {\n languageServer.onPulumiExit(hasError);\n server.forceShutdown();\n };\n args.push(`--client=127.0.0.1:${port}`);\n }\n args.push(\"--exec-kind\", kind);\n let logPromise;\n let logFile;\n // Set up event log tailing\n if (opts === null || opts === void 0 ? void 0 : opts.onEvent) {\n const onEvent = opts.onEvent;\n logFile = createLogFile(\"up\");\n args.push(\"--event-log\", logFile);\n logPromise = this.readLines(logFile, (event) => {\n onEvent(event);\n });\n }\n let upResult;\n try {\n upResult = yield this.runPulumiCmd(args, opts === null || opts === void 0 ? void 0 : opts.onOutput);\n }\n catch (e) {\n didError = true;\n throw e;\n }\n finally {\n onExit(didError);\n yield cleanUp(logFile, yield logPromise);\n }\n // TODO: do this in parallel after this is fixed https://github.com/pulumi/pulumi/issues/6050\n const outputs = yield this.outputs();\n // If it's a remote workspace, explicitly set showSecrets to false to prevent attempting to\n // load the project file.\n const summary = yield this.info(!this.isRemote && (opts === null || opts === void 0 ? void 0 : opts.showSecrets));\n return {\n stdout: upResult.stdout,\n stderr: upResult.stderr,\n summary: summary,\n outputs: outputs,\n };\n });\n }\n /**\n * Performs a dry-run update to a stack, returning pending changes.\n * https://www.pulumi.com/docs/cli/commands/pulumi_preview/\n *\n * @param opts Options to customize the behavior of the preview.\n */\n preview(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"preview\"];\n let kind = execKind.local;\n let program = this.workspace.program;\n args.push(...this.remoteArgs());\n if (opts) {\n if (opts.program) {\n program = opts.program;\n }\n if (opts.message) {\n args.push(\"--message\", opts.message);\n }\n if (opts.expectNoChanges) {\n args.push(\"--expect-no-changes\");\n }\n if (opts.refresh) {\n args.push(\"--refresh\");\n }\n if (opts.diff) {\n args.push(\"--diff\");\n }\n if (opts.replace) {\n for (const rURN of opts.replace) {\n args.push(\"--replace\", rURN);\n }\n }\n if (opts.target) {\n for (const tURN of opts.target) {\n args.push(\"--target\", tURN);\n }\n }\n if (opts.policyPacks) {\n for (const pack of opts.policyPacks) {\n args.push(\"--policy-pack\", pack);\n }\n }\n if (opts.policyPackConfigs) {\n for (const packConfig of opts.policyPackConfigs) {\n args.push(\"--policy-pack-config\", packConfig);\n }\n }\n if (opts.targetDependents) {\n args.push(\"--target-dependents\");\n }\n if (opts.parallel) {\n args.push(\"--parallel\", opts.parallel.toString());\n }\n if (opts.userAgent) {\n args.push(\"--exec-agent\", opts.userAgent);\n }\n if (opts.plan) {\n args.push(\"--save-plan\", opts.plan);\n }\n applyGlobalOpts(opts, args);\n }\n let onExit = (hasError) => {\n return;\n };\n let didError = false;\n if (program) {\n kind = execKind.inline;\n const server = new grpc.Server({\n \"grpc.max_receive_message_length\": server_1.maxRPCMessageSize,\n });\n const languageServer = new server_1.LanguageServer(program);\n server.addService(langrpc.LanguageRuntimeService, languageServer);\n const port = yield new Promise((resolve, reject) => {\n server.bindAsync(`127.0.0.1:0`, grpc.ServerCredentials.createInsecure(), (err, p) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(p);\n }\n });\n });\n onExit = (hasError) => {\n languageServer.onPulumiExit(hasError);\n server.forceShutdown();\n };\n args.push(`--client=127.0.0.1:${port}`);\n }\n args.push(\"--exec-kind\", kind);\n // Set up event log tailing\n const logFile = createLogFile(\"preview\");\n args.push(\"--event-log\", logFile);\n let summaryEvent;\n const logPromise = this.readLines(logFile, (event) => {\n if (event.summaryEvent) {\n summaryEvent = event.summaryEvent;\n }\n if (opts === null || opts === void 0 ? void 0 : opts.onEvent) {\n const onEvent = opts.onEvent;\n onEvent(event);\n }\n });\n let previewResult;\n try {\n previewResult = yield this.runPulumiCmd(args, opts === null || opts === void 0 ? void 0 : opts.onOutput);\n }\n catch (e) {\n didError = true;\n throw e;\n }\n finally {\n onExit(didError);\n yield cleanUp(logFile, yield logPromise);\n }\n if (!summaryEvent) {\n log.warn(\"Failed to parse summary event, but preview succeeded. PreviewResult `changeSummary` will be empty.\");\n }\n return {\n stdout: previewResult.stdout,\n stderr: previewResult.stderr,\n changeSummary: (summaryEvent === null || summaryEvent === void 0 ? void 0 : summaryEvent.resourceChanges) || {},\n };\n });\n }\n /**\n * Compares the current stack’s resource state with the state known to exist in the actual\n * cloud provider. Any such changes are adopted into the current stack.\n *\n * @param opts Options to customize the behavior of the refresh.\n */\n refresh(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"refresh\", \"--yes\", \"--skip-preview\"];\n args.push(...this.remoteArgs());\n if (opts) {\n if (opts.message) {\n args.push(\"--message\", opts.message);\n }\n if (opts.expectNoChanges) {\n args.push(\"--expect-no-changes\");\n }\n if (opts.target) {\n for (const tURN of opts.target) {\n args.push(\"--target\", tURN);\n }\n }\n if (opts.parallel) {\n args.push(\"--parallel\", opts.parallel.toString());\n }\n if (opts.userAgent) {\n args.push(\"--exec-agent\", opts.userAgent);\n }\n applyGlobalOpts(opts, args);\n }\n let logPromise;\n let logFile;\n // Set up event log tailing\n if (opts === null || opts === void 0 ? void 0 : opts.onEvent) {\n const onEvent = opts.onEvent;\n logFile = createLogFile(\"refresh\");\n args.push(\"--event-log\", logFile);\n logPromise = this.readLines(logFile, (event) => {\n onEvent(event);\n });\n }\n const kind = this.workspace.program ? execKind.inline : execKind.local;\n args.push(\"--exec-kind\", kind);\n let refResult;\n try {\n refResult = yield this.runPulumiCmd(args, opts === null || opts === void 0 ? void 0 : opts.onOutput);\n }\n finally {\n yield cleanUp(logFile, yield logPromise);\n }\n // If it's a remote workspace, explicitly set showSecrets to false to prevent attempting to\n // load the project file.\n const summary = yield this.info(!this.isRemote && (opts === null || opts === void 0 ? void 0 : opts.showSecrets));\n return {\n stdout: refResult.stdout,\n stderr: refResult.stderr,\n summary: summary,\n };\n });\n }\n /**\n * Destroy deletes all resources in a stack, leaving all history and configuration intact.\n *\n * @param opts Options to customize the behavior of the destroy.\n */\n destroy(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"destroy\", \"--yes\", \"--skip-preview\"];\n args.push(...this.remoteArgs());\n if (opts) {\n if (opts.message) {\n args.push(\"--message\", opts.message);\n }\n if (opts.target) {\n for (const tURN of opts.target) {\n args.push(\"--target\", tURN);\n }\n }\n if (opts.targetDependents) {\n args.push(\"--target-dependents\");\n }\n if (opts.excludeProtected) {\n args.push(\"--exclude-protected\");\n }\n if (opts.parallel) {\n args.push(\"--parallel\", opts.parallel.toString());\n }\n if (opts.userAgent) {\n args.push(\"--exec-agent\", opts.userAgent);\n }\n applyGlobalOpts(opts, args);\n }\n let logPromise;\n let logFile;\n // Set up event log tailing\n if (opts === null || opts === void 0 ? void 0 : opts.onEvent) {\n const onEvent = opts.onEvent;\n logFile = createLogFile(\"destroy\");\n args.push(\"--event-log\", logFile);\n logPromise = this.readLines(logFile, (event) => {\n onEvent(event);\n });\n }\n const kind = this.workspace.program ? execKind.inline : execKind.local;\n args.push(\"--exec-kind\", kind);\n let desResult;\n try {\n desResult = yield this.runPulumiCmd(args, opts === null || opts === void 0 ? void 0 : opts.onOutput);\n }\n finally {\n yield cleanUp(logFile, yield logPromise);\n }\n // If it's a remote workspace, explicitly set showSecrets to false to prevent attempting to\n // load the project file.\n const summary = yield this.info(!this.isRemote && (opts === null || opts === void 0 ? void 0 : opts.showSecrets));\n return {\n stdout: desResult.stdout,\n stderr: desResult.stderr,\n summary: summary,\n };\n });\n }\n /**\n * Adds environments to the end of a stack's import list. Imported environments are merged in order\n * per the ESC merge rules. The list of environments behaves as if it were the import list in an anonymous\n * environment.\n *\n * @param environments The names of the environments to add to the stack's configuration\n */\n addEnvironments(...environments) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.workspace.addEnvironments(this.name, ...environments);\n });\n }\n /**\n * Returns the list of environments currently in the stack's import list.\n */\n listEnvironments() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.listEnvironments(this.name);\n });\n }\n /**\n * Removes an environment from a stack's import list.\n *\n * @param environment The name of the environment to remove from the stack's configuration\n */\n removeEnvironment(environment) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.workspace.removeEnvironment(this.name, environment);\n });\n }\n /**\n * Returns the config value associated with the specified key.\n *\n * @param key The key to use for the config lookup\n * @param path The key contains a path to a property in a map or list to get\n */\n getConfig(key, path) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.getConfig(this.name, key, path);\n });\n }\n /**\n * Returns the full config map associated with the stack in the Workspace.\n */\n getAllConfig() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.getAllConfig(this.name);\n });\n }\n /**\n * Sets a config key-value pair on the Stack in the associated Workspace.\n *\n * @param key The key to set.\n * @param value The config value to set.\n * @param path The key contains a path to a property in a map or list to set.\n */\n setConfig(key, value, path) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.setConfig(this.name, key, value, path);\n });\n }\n /**\n * Sets all specified config values on the stack in the associated Workspace.\n *\n * @param config The map of config key-value pairs to set.\n * @param path The keys contain a path to a property in a map or list to set.\n */\n setAllConfig(config, path) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.setAllConfig(this.name, config, path);\n });\n }\n /**\n * Removes the specified config key from the Stack in the associated Workspace.\n *\n * @param key The config key to remove.\n * @param path The key contains a path to a property in a map or list to remove.\n */\n removeConfig(key, path) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.removeConfig(this.name, key, path);\n });\n }\n /**\n * Removes the specified config keys from the Stack in the associated Workspace.\n *\n * @param keys The config keys to remove.\n * @param path The keys contain a path to a property in a map or list to remove.\n */\n removeAllConfig(keys, path) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.removeAllConfig(this.name, keys, path);\n });\n }\n /**\n * Gets and sets the config map used with the last update.\n */\n refreshConfig() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.refreshConfig(this.name);\n });\n }\n /**\n * Returns the tag value associated with specified key.\n *\n * @param key The key to use for the tag lookup.\n */\n getTag(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.getTag(this.name, key);\n });\n }\n /**\n * Sets a tag key-value pair on the Stack in the associated Workspace.\n *\n * @param key The tag key to set.\n * @param value The tag value to set.\n */\n setTag(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.workspace.setTag(this.name, key, value);\n });\n }\n /**\n * Removes the specified tag key-value pair from the Stack in the associated Workspace.\n *\n * @param key The tag key to remove.\n */\n removeTag(key) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.workspace.removeTag(this.name, key);\n });\n }\n /**\n * Returns the full tag map associated with the stack in the Workspace.\n */\n listTags() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.listTags(this.name);\n });\n }\n /**\n * Gets the current set of Stack outputs from the last Stack.up().\n */\n outputs() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.stackOutputs(this.name);\n });\n }\n /**\n * Returns a list summarizing all previous and current results from Stack lifecycle operations\n * (up/preview/refresh/destroy).\n */\n history(pageSize, page, showSecrets) {\n return __awaiter(this, void 0, void 0, function* () {\n const args = [\"stack\", \"history\", \"--json\"];\n if (showSecrets !== null && showSecrets !== void 0 ? showSecrets : true) {\n args.push(\"--show-secrets\");\n }\n if (pageSize) {\n if (!page || page < 1) {\n page = 1;\n }\n args.push(\"--page-size\", Math.floor(pageSize).toString(), \"--page\", Math.floor(page).toString());\n }\n const result = yield this.runPulumiCmd(args);\n return JSON.parse(result.stdout, (key, value) => {\n if (key === \"startTime\" || key === \"endTime\") {\n return new Date(value);\n }\n return value;\n });\n });\n }\n info(showSecrets) {\n return __awaiter(this, void 0, void 0, function* () {\n const history = yield this.history(1 /*pageSize*/, undefined, showSecrets);\n if (!history || history.length === 0) {\n return undefined;\n }\n return history[0];\n });\n }\n /**\n * Cancel stops a stack's currently running update. It returns an error if no update is currently running.\n * Note that this operation is _very dangerous_, and may leave the stack in an inconsistent state\n * if a resource operation was pending when the update was canceled.\n * This command is not supported for diy backends.\n */\n cancel() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.runPulumiCmd([\"cancel\", \"--yes\"]);\n });\n }\n /**\n * exportStack exports the deployment state of the stack.\n * This can be combined with Stack.importStack to edit a stack's state (such as recovery from failed deployments).\n */\n exportStack() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.exportStack(this.name);\n });\n }\n /**\n * importStack imports the specified deployment state into a pre-existing stack.\n * This can be combined with Stack.exportStack to edit a stack's state (such as recovery from failed deployments).\n *\n * @param state the stack state to import.\n */\n importStack(state) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.workspace.importStack(this.name, state);\n });\n }\n runPulumiCmd(args, onOutput) {\n return __awaiter(this, void 0, void 0, function* () {\n let envs = {\n PULUMI_DEBUG_COMMANDS: \"true\",\n };\n if (this.isRemote) {\n envs[\"PULUMI_EXPERIMENTAL\"] = \"true\";\n }\n const pulumiHome = this.workspace.pulumiHome;\n if (pulumiHome) {\n envs[\"PULUMI_HOME\"] = pulumiHome;\n }\n envs = Object.assign(Object.assign({}, envs), this.workspace.envVars);\n const additionalArgs = yield this.workspace.serializeArgsForOp(this.name);\n args = [...args, \"--stack\", this.name, ...additionalArgs];\n const result = yield this.workspace.pulumiCommand.run(args, this.workspace.workDir, envs, onOutput);\n yield this.workspace.postCommandCallback(this.name);\n return result;\n });\n }\n get isRemote() {\n const ws = this.workspace;\n return ws instanceof localWorkspace_1.LocalWorkspace ? ws.isRemote : false;\n }\n remoteArgs() {\n const ws = this.workspace;\n return ws instanceof localWorkspace_1.LocalWorkspace ? ws.remoteArgs() : [];\n }\n}\nexports.Stack = Stack;\nfunction applyGlobalOpts(opts, args) {\n if (opts.color) {\n args.push(\"--color\", opts.color);\n }\n if (opts.logFlow) {\n args.push(\"--logflow\");\n }\n if (opts.logVerbosity) {\n args.push(\"--verbose\", opts.logVerbosity.toString());\n }\n if (opts.logToStdErr) {\n args.push(\"--logtostderr\");\n }\n if (opts.tracing) {\n args.push(\"--tracing\", opts.tracing);\n }\n if (opts.debug) {\n args.push(\"--debug\");\n }\n if (opts.suppressOutputs) {\n args.push(\"--suppress-outputs\");\n }\n if (opts.suppressProgress) {\n args.push(\"--suppress-progress\");\n }\n}\n/**\n * Returns a stack name formatted with the greatest possible specificity:\n * org/project/stack or user/project/stack\n * Using this format avoids ambiguity in stack identity guards creating or selecting the wrong stack.\n * Note that legacy diy backends (local file, S3, Azure Blob) do not support stack names in this\n * format, and instead only use the stack name without an org/user or project to qualify it.\n * See: https://github.com/pulumi/pulumi/issues/2522\n * Non-legacy diy backends do support the org/project/stack format but org must be set to \"organization\".\n *\n * @param org The org (or user) that contains the Stack.\n * @param project The project that parents the Stack.\n * @param stack The name of the Stack.\n */\nfunction fullyQualifiedStackName(org, project, stack) {\n return `${org}/${project}/${stack}`;\n}\nexports.fullyQualifiedStackName = fullyQualifiedStackName;\nconst execKind = {\n local: \"auto.local\",\n inline: \"auto.inline\",\n};\nconst createLogFile = (command) => {\n const logDir = fs.mkdtempSync(upath.joinSafe(os.tmpdir(), `automation-logs-${command}-`));\n const logFile = upath.joinSafe(logDir, \"eventlog.txt\");\n // just open/close the file to make sure it exists when we start polling.\n fs.closeSync(fs.openSync(logFile, \"w\"));\n return logFile;\n};\nconst cleanUp = (logFile, rl) => __awaiter(void 0, void 0, void 0, function* () {\n if (rl) {\n // stop tailing\n yield rl.tail.quit();\n // close the readline interface\n rl.rl.close();\n }\n if (logFile) {\n // remove the logfile\n if (fs.rm) {\n // remove with Node JS 15.X+\n fs.rm(pathlib.dirname(logFile), { recursive: true }, () => {\n return;\n });\n }\n else {\n // remove with Node JS 14.X\n fs.rmdir(pathlib.dirname(logFile), { recursive: true }, () => {\n return;\n });\n }\n }\n});\n//# sourceMappingURL=stack.js.map","\"use strict\";\n// Copyright 2016-2020, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/** @internal */\nexports.stackSettingsSerDeKeys = [\n [\"secretsprovider\", \"secretsProvider\"],\n [\"encryptedkey\", \"encryptedKey\"],\n [\"encryptionsalt\", \"encryptionSalt\"],\n];\n//# sourceMappingURL=stackSettings.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst utils = __importStar(require(\"./utils\"));\n/**\n * RunError can be used for terminating a program abruptly, but resulting in a clean exit rather\n * than the usual verbose unhandled error logic which emits the source program text and complete\n * stack trace. This type should be rarely used. Ideally ResourceError should always be used so\n * that as many errors as possible can be associated with a Resource.\n */\nclass RunError extends Error {\n constructor() {\n super(...arguments);\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiRunError = true;\n }\n /**\n * Returns true if the given object is an instance of a RunError. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiRunError\");\n }\n}\nexports.RunError = RunError;\n/**\n * ResourceError can be used for terminating a program abruptly, specifically associating the\n * problem with a Resource. Depending on the nature of the problem, clients can choose whether or\n * not a call stack should be returned as well. This should be very rare, and would only indicate\n * no usefulness of presenting that stack to the user.\n */\nclass ResourceError extends Error {\n constructor(message, resource, hideStack) {\n super(message);\n this.resource = resource;\n this.hideStack = hideStack;\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n this.__pulumResourceError = true;\n }\n /**\n * Returns true if the given object is an instance of a ResourceError. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumResourceError\");\n }\n}\nexports.ResourceError = ResourceError;\nfunction isGrpcError(err) {\n const code = err.code;\n return code === grpc.status.UNAVAILABLE || code === grpc.status.CANCELLED;\n}\nexports.isGrpcError = isGrpcError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst engproto = __importStar(require(\"../proto/engine_pb\"));\nconst settings_1 = require(\"../runtime/settings\");\nconst state_1 = require(\"../runtime/state\");\nlet lastLog = Promise.resolve();\nconst messageLevels = {\n [engproto.LogSeverity.DEBUG]: \"debug\",\n [engproto.LogSeverity.INFO]: \"info\",\n [engproto.LogSeverity.WARNING]: \"warn\",\n [engproto.LogSeverity.ERROR]: \"error\",\n};\n/**\n * hasErrors returns true if any errors have occurred in the program.\n */\nfunction hasErrors() {\n return state_1.getStore().logErrorCount > 0;\n}\nexports.hasErrors = hasErrors;\n/**\n * debug logs a debug-level message that is generally hidden from end-users.\n */\nfunction debug(msg, resource, streamId, ephemeral) {\n const engine = settings_1.getEngine();\n if (engine) {\n return log(engine, engproto.LogSeverity.DEBUG, msg, resource, streamId, ephemeral);\n }\n else {\n return Promise.resolve();\n }\n}\nexports.debug = debug;\n/**\n * info logs an informational message that is generally printed to stdout during resource operations.\n */\nfunction info(msg, resource, streamId, ephemeral) {\n const engine = settings_1.getEngine();\n if (engine) {\n return log(engine, engproto.LogSeverity.INFO, msg, resource, streamId, ephemeral);\n }\n else {\n console.log(`info: [runtime] ${msg}`);\n return Promise.resolve();\n }\n}\nexports.info = info;\n/**\n * warn logs a warning to indicate that something went wrong, but not catastrophically so.\n */\nfunction warn(msg, resource, streamId, ephemeral) {\n const engine = settings_1.getEngine();\n if (engine) {\n return log(engine, engproto.LogSeverity.WARNING, msg, resource, streamId, ephemeral);\n }\n else {\n console.warn(`warning: [runtime] ${msg}`);\n return Promise.resolve();\n }\n}\nexports.warn = warn;\n/**\n * error logs a fatal condition. Consider raising an exception after calling error to stop the Pulumi program.\n */\nfunction error(msg, resource, streamId, ephemeral) {\n state_1.getStore().logErrorCount++; // remember the error so we can suppress leaks.\n const engine = settings_1.getEngine();\n if (engine) {\n return log(engine, engproto.LogSeverity.ERROR, msg, resource, streamId, ephemeral);\n }\n else {\n console.error(`error: [runtime] ${msg}`);\n return Promise.resolve();\n }\n}\nexports.error = error;\nfunction log(engine, sev, msg, resource, streamId, ephemeral) {\n // Ensure we log everything in serial order.\n const keepAlive = settings_1.rpcKeepAlive();\n const urnPromise = resource ? resource.urn.promise() : Promise.resolve(\"\");\n lastLog = Promise.all([lastLog, urnPromise]).then(([_, urn]) => {\n return new Promise((resolve, reject) => {\n try {\n const req = new engproto.LogRequest();\n req.setSeverity(sev);\n req.setMessage(msg);\n req.setUrn(urn);\n req.setStreamid(streamId === undefined ? 0 : streamId);\n req.setEphemeral(ephemeral === true);\n engine.log(req, () => {\n resolve(); // let the next log through\n keepAlive(); // permit RPC channel tear-downs\n });\n }\n catch (err) {\n reject(err);\n }\n });\n });\n return lastLog.catch((err) => {\n // debug messages never go to stdout/err\n if (sev !== engproto.LogSeverity.DEBUG) {\n // if we're unable to deliver the log message, deliver to stderr instead\n console.error(`failed to deliver log message. \\nerror: ${err} \\noriginal message: ${msg}\\n message severity: ${messageLevels[sev]}`);\n }\n // we still need to free up the outstanding promise chain, whether or not delivery succeeded.\n keepAlive();\n });\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// This file exports metadata about the context in which a program is being run.\nconst settings = __importStar(require(\"./runtime/settings\"));\n/**\n * getOrganization returns the current organization name.\n */\nfunction getOrganization() {\n return settings.getOrganization();\n}\nexports.getOrganization = getOrganization;\n/**\n * getProject returns the current project name. It throws an exception if none is registered.\n */\nfunction getProject() {\n return settings.getProject();\n}\nexports.getProject = getProject;\n/**\n * getStack returns the current stack name. It throws an exception if none is registered.\n */\nfunction getStack() {\n return settings.getStack();\n}\nexports.getStack = getStack;\n//# sourceMappingURL=metadata.js.map","'use strict';\nconst path = require('path');\nconst childProcess = require('child_process');\nconst crossSpawn = require('cross-spawn');\nconst stripFinalNewline = require('strip-final-newline');\nconst npmRunPath = require('npm-run-path');\nconst onetime = require('onetime');\nconst makeError = require('./lib/error');\nconst normalizeStdio = require('./lib/stdio');\nconst {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} = require('./lib/kill');\nconst {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = require('./lib/stream');\nconst {mergePromise, getSpawnedPromise} = require('./lib/promise');\nconst {joinCommand, parseCommand, getEscapedCommand} = require('./lib/command');\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPath.env({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\t...options\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execa.sync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nconst execa = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t}));\n\t\treturn mergePromise(dummySpawned, errorPromise);\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled,\n\t\t\t\tkilled: spawned.killed\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options.input);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\treturn mergePromise(spawned, handlePromiseOnce);\n};\n\nmodule.exports = execa;\n\nmodule.exports.sync = (file, args, options) => {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\n\tvalidateInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false\n\t};\n};\n\nmodule.exports.command = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n};\n\nmodule.exports.commandSync = (command, options) => {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa.sync(file, args, options);\n};\n\nmodule.exports.node = (scriptPath, args, options = {}) => {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdio.node(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : [])\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false\n\t\t}\n\t);\n};\n","'use strict';\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\nconst DOUBLE_QUOTES_REGEXP = /\"/g;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replace(DOUBLE_QUOTES_REGEXP, '\\\\\"')}\"`;\n};\n\nconst joinCommand = (file, args) => {\n\treturn normalizeArgs(file, args).join(' ');\n};\n\nconst getEscapedCommand = (file, args) => {\n\treturn normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n};\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execa.command()`\nconst parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens[tokens.length - 1];\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nmodule.exports = {\n\tjoinCommand,\n\tgetEscapedCommand,\n\tparseCommand\n};\n","'use strict';\nconst {signalsByName} = require('human-signals');\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nconst makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout}}\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n\nmodule.exports = makeError;\n","'use strict';\nconst os = require('os');\nconst onExit = require('signal-exit');\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nconst spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => {\n\treturn isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n};\n\nconst isSigterm = signal => {\n\treturn signal === os.constants.signals.SIGTERM ||\n\t\t(typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n};\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nconst spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nconst setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nconst validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nconst setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n\nmodule.exports = {\n\tspawnedKill,\n\tspawnedCancel,\n\tsetupTimeout,\n\tvalidateTimeout,\n\tsetExitHandler\n};\n","'use strict';\n\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property)\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nconst mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function' ?\n\t\t\t(...args) => Reflect.apply(descriptor.value, promise(), args) :\n\t\t\tdescriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n\n\treturn spawned;\n};\n\n// Use promises instead of `child_process` events\nconst getSpawnedPromise = spawned => {\n\treturn new Promise((resolve, reject) => {\n\t\tspawned.on('exit', (exitCode, signal) => {\n\t\t\tresolve({exitCode, signal});\n\t\t});\n\n\t\tspawned.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\n\t\tif (spawned.stdin) {\n\t\t\tspawned.stdin.on('error', error => {\n\t\t\t\treject(error);\n\t\t\t});\n\t\t}\n\t});\n};\n\nmodule.exports = {\n\tmergePromise,\n\tgetSpawnedPromise\n};\n\n","'use strict';\nconst aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nconst normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\nmodule.exports = normalizeStdio;\n\n// `ipc` is pushed unless it is already present\nmodule.exports.node = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n","'use strict';\nconst isStream = require('is-stream');\nconst getStream = require('get-stream');\nconst mergeStream = require('merge-stream');\n\n// `input` option\nconst handleInput = (spawned, input) => {\n\t// Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852\n\t// @todo remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0\n\tif (input === undefined || spawned.stdin === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nconst makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\tif (!stream) {\n\t\treturn;\n\t}\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\tif (encoding) {\n\t\treturn getStream(stream, {encoding, maxBuffer});\n\t}\n\n\treturn getStream.buffer(stream, {maxBuffer});\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nconst getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise)\n\t\t]);\n\t}\n};\n\nconst validateInputSync = ({input}) => {\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n};\n\nmodule.exports = {\n\thandleInput,\n\tmakeAllStream,\n\tgetSpawnedResult,\n\tvalidateInputSync\n};\n\n","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst stream = require('stream');\nconst {promisify} = require('util');\nconst bufferStream = require('./buffer-stream');\n\nconst streamPipelinePromisified = promisify(stream.pipeline);\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\tthrow new Error('Expected a stream');\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\tconst stream = bufferStream(options);\n\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait streamPipelinePromisified(inputStream, stream);\n\t\t\t\tresolve();\n\t\t\t} catch (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t}\n\t\t})();\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resource_1 = require(\"./resource\");\nconst settings = __importStar(require(\"./runtime/settings\"));\nconst utils = __importStar(require(\"./utils\"));\n/* eslint-disable no-shadow, @typescript-eslint/no-shadow */\n/**\n * Output helps encode the relationship between Resources in a Pulumi application. Specifically an\n * Output holds onto a piece of Data and the Resource it was generated from. An Output value can\n * then be provided when constructing new Resources, allowing that new Resource to know both the\n * value as well as the Resource the value came from. This allows for a precise 'Resource\n * dependency graph' to be created, which properly tracks the relationship between resources.\n */\nclass OutputImpl {\n /** @internal */\n constructor(resources, promise, isKnown, isSecret, allResources) {\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n *\n * This is internal instead of being truly private, to support mixins and our serialization model.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiOutput = true;\n // Always create a copy so that no one accidentally modifies our Resource list.\n const resourcesCopy = copyResources(resources);\n // Create a copy of the async resources. Populate this with the sync-resources if that's\n // all we have. That way this is always ensured to be a superset of the list of sync resources.\n allResources = allResources || Promise.resolve([]);\n const allResourcesCopy = allResources.then((r) => utils.union(copyResources(r), resourcesCopy));\n // We are only known if we are not explicitly unknown and the resolved value of the output\n // contains no distinguished unknown values.\n isKnown = Promise.all([isKnown, promise]).then(([known, val]) => known && !containsUnknowns(val));\n const lifted = Promise.all([allResourcesCopy, promise, isKnown, isSecret]).then(([liftedResources, value, liftedIsKnown, liftedIsSecret]) => liftInnerOutput(liftedResources, value, liftedIsKnown, liftedIsSecret));\n this.resources = () => resourcesCopy;\n this.allResources = () => lifted.then((l) => l.allResources);\n this.isKnown = lifted.then((l) => l.isKnown);\n this.isSecret = lifted.then((l) => l.isSecret);\n this.promise = (withUnknowns) => OutputImpl.getPromisedValue(lifted.then((l) => l.value), withUnknowns);\n this.toString = () => {\n let message = `Calling [toString] on an [Output] is not supported.\n\nTo get the value of an Output as an Output consider either:\n1: o.apply(v => \\`prefix\\${v}suffix\\`)\n2: pulumi.interpolate \\`prefix\\${v}suffix\\`\n\nSee https://www.pulumi.com/docs/concepts/inputs-outputs for more details.`;\n if (utils.errorOutputString) {\n throw new Error(message);\n }\n message += `\\nThis function may throw in a future version of @pulumi/pulumi.`;\n return message;\n };\n this.toJSON = () => {\n let message = `Calling [toJSON] on an [Output] is not supported.\n\nTo get the value of an Output as a JSON value or JSON string consider either:\n 1: o.apply(v => v.toJSON())\n 2: o.apply(v => JSON.stringify(v))\n\nSee https://www.pulumi.com/docs/concepts/inputs-outputs for more details.`;\n if (utils.errorOutputString) {\n throw new Error(message);\n }\n message += `\\nThis function may throw in a future version of @pulumi/pulumi.`;\n return message;\n };\n return new Proxy(this, {\n get: (obj, prop) => {\n // Recreate the prototype walk to ensure we find any actual members defined directly\n // on `Output`.\n for (let o = obj; o; o = Object.getPrototypeOf(o)) {\n if (o.hasOwnProperty(prop)) {\n return o[prop];\n }\n }\n // Always explicitly fail on a member called 'then'. It is used by other systems to\n // determine if this is a Promise, and we do not want to indicate that that's what\n // we are.\n if (prop === \"then\") {\n return undefined;\n }\n // Do not lift members that start with __. Technically, if all libraries were\n // using this version of pulumi/pulumi we would not need this. However, this is\n // so that downstream consumers can use this version of pulumi/pulumi while also\n // passing these new Outputs to older versions of pulumi/pulumi. The reason this\n // can be a problem is that older versions do an RTTI check that simply asks questions\n // like:\n //\n // Is there a member on this object called '__pulumiResource'\n //\n // If we automatically lift such a member (even if it eventually points to 'undefined'),\n // then those RTTI checks will succeed.\n //\n // Note: this should be safe to not lift as, in general, properties with this prefix\n // are not at all common (and in general are used to represent private things anyway\n // that likely should not be exposed).\n //\n // Similarly, do not respond to the 'doNotCapture' member name. It serves a similar\n // RTTI purpose.\n if (typeof prop === \"string\") {\n if (prop.startsWith(\"__\") || prop === \"doNotCapture\" || prop === \"deploymentOnlyModule\") {\n return undefined;\n }\n }\n // Fail out if we are being accessed using a symbol. Many APIs will access with a\n // well known symbol (like 'Symbol.toPrimitive') to check for the presence of something.\n // They will only check for the existence of that member, and we don't want to make it\n // appear that have those.\n //\n // Another way of putting this is that we only forward 'string/number' members to our\n // underlying value.\n if (typeof prop === \"symbol\") {\n return undefined;\n }\n // Else for *any other* property lookup, succeed the lookup and return a lifted\n // `apply` on the underlying `Output`.\n return obj.apply((ob) => {\n if (ob === undefined || ob === null) {\n return undefined;\n }\n else if (isUnknown(ob)) {\n // If the value of this output is unknown, the result of the access should also be unknown.\n // This is conceptually consistent, and also prevents us from returning a \"known undefined\"\n // value from the `ob[prop]` expression below.\n return exports.unknown;\n }\n return ob[prop];\n }, /*runWithUnknowns:*/ true);\n },\n });\n }\n static create(val) {\n return output(val);\n }\n /**\n * Returns true if the given object is an instance of Output. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiOutput\");\n }\n /** @internal */\n static getPromisedValue(promise, withUnknowns) {\n return __awaiter(this, void 0, void 0, function* () {\n // If the caller did not explicitly ask to see unknown values and val contains unknowns, return undefined. This\n // preserves compatibility with earlier versions of the Pulumi SDK.\n const val = yield promise;\n if (!withUnknowns && containsUnknowns(val)) {\n return undefined;\n }\n return val;\n });\n }\n get() {\n throw new Error(`Cannot call '.get' during update or preview.\nTo manipulate the value of this Output, use '.apply' instead.`);\n }\n // runWithUnknowns requests that `func` is run even if `isKnown` resolves to `false`. This is used to allow\n // callers to process fully- or partially-unknown values and return a known result. the output proxy takes\n // advantage of this to allow proxied property accesses to return known values even if other properties of\n // the containing object are unknown.\n apply(func, runWithUnknowns) {\n // we're inside the modern `output` code, so it's safe to call `.allResources!` here.\n const applied = Promise.all([\n this.allResources(),\n this.promise(/*withUnknowns*/ true),\n this.isKnown,\n this.isSecret,\n ]).then(([allResources, value, isKnown, isSecret]) => applyHelperAsync(allResources, value, isKnown, isSecret, func, !!runWithUnknowns));\n const result = new OutputImpl(this.resources(), applied.then((a) => a.value), applied.then((a) => a.isKnown), applied.then((a) => a.isSecret), applied.then((a) => a.allResources));\n return result;\n }\n}\n/** @internal */\nfunction getAllResources(op) {\n return op.allResources instanceof Function ? op.allResources() : Promise.resolve(op.resources());\n}\nexports.getAllResources = getAllResources;\nfunction copyResources(resources) {\n const copy = Array.isArray(resources)\n ? new Set(resources)\n : resources instanceof Set\n ? new Set(resources)\n : new Set([resources]);\n return copy;\n}\nfunction liftInnerOutput(allResources, value, isKnown, isSecret) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!exports.Output.isInstance(value)) {\n // 'value' itself wasn't an output, no need to transform any of the data we got.\n return { allResources, value, isKnown, isSecret };\n }\n // 'value' was an Output. So we unwrap that to get the inner value/isKnown/isSecret/resources\n // returned by that Output and merge with the state passed in to get the state of the final Output.\n // Note: we intentionally await all the promises of the inner output. This way we properly\n // propagate any rejections of any of these promises through the outer output as well.\n const innerValue = yield value.promise(/*withUnknowns*/ true);\n const innerIsKnown = yield value.isKnown;\n const innerIsSecret = yield (value.isSecret || Promise.resolve(false));\n // If we're working with a new-style output, grab all its resources and merge into ours.\n // Otherwise, if this is an old-style output, just grab the resources it was known to have\n // at construction time.\n const innerResources = yield getAllResources(value);\n const totalResources = utils.union(allResources, innerResources);\n return {\n allResources: totalResources,\n value: innerValue,\n isKnown: innerIsKnown,\n isSecret: isSecret || innerIsSecret,\n };\n });\n}\n/* eslint-disable max-len */\nfunction applyHelperAsync(allResources, value, isKnown, isSecret, func, runWithUnknowns) {\n return __awaiter(this, void 0, void 0, function* () {\n if (settings.isDryRun()) {\n // During previews only perform the apply if the engine was able to give us an actual value\n // for this Output.\n const applyDuringPreview = isKnown || runWithUnknowns;\n if (!applyDuringPreview) {\n // We didn't actually run the function, our new Output is definitely **not** known.\n return {\n allResources,\n value: undefined,\n isKnown: false,\n isSecret,\n };\n }\n // If we are running with unknown values and the value is explicitly unknown but does not actually\n // contain any unknown values, collapse its value to the unknown value. This ensures that callbacks\n // that expect to see unknowns during preview in outputs that are not known will always do so.\n if (!isKnown && runWithUnknowns && !containsUnknowns(value)) {\n value = exports.unknown;\n }\n }\n const transformed = yield func(value);\n // We successfully ran the inner function. Our new Output should be considered known. We\n // preserve secretness from our original Output to the new one we're creating.\n return liftInnerOutput(allResources, transformed, /*isKnown*/ true, isSecret);\n });\n}\n// Returns an promise denoting if the output is a secret or not. This is not the same as just calling `.isSecret`\n// because in cases where the output does not have a `isSecret` property and it is a Proxy, we need to ignore\n// the isSecret member that the proxy reports back.\n// This calls the public implementation so that we only make any calculations in a single place.\n/** @internal */\nfunction isSecretOutput(o) {\n return isSecret(o);\n}\nexports.isSecretOutput = isSecretOutput;\n// Helper function for `output`. This function trivially recurses through an object, copying it,\n// while also lifting any inner Outputs (with all their respective state) to a top-level Output at\n// the end. If there are no inner outputs, this will not affect the data (except by producing a new\n// copy of it).\n//\n// Importantly:\n//\n// 1. Resources encountered while recursing are not touched. This helps ensure they stay Resources\n// (with an appropriate prototype chain).\n// 2. Primitive values (string, number, etc.) are returned as is.\n// 3. Arrays and Record are recursed into. An Array<...> that contains any Outputs wil become an\n// Output>. A Record that contains any Output values will be an\n// Output>. In both cases of recursion, the outer Output's\n// known/secret/resources will be computed from the nested Outputs.\nfunction outputRec(val) {\n if (val === null || typeof val !== \"object\") {\n // strings, numbers, booleans, functions, symbols, undefineds, nulls are all returned as\n // themselves. They are always 'known' (i.e. we can safely 'apply' off of them even during\n // preview).\n return val;\n }\n else if (resource_1.Resource.isInstance(val)) {\n // Don't unwrap Resources, there are existing codepaths that return Resources through\n // Outputs and we want to preserve them as is when flattening.\n return val;\n }\n else if (isUnknown(val)) {\n return val;\n }\n else if (val instanceof Promise) {\n // Recurse into the value the Promise points to. This may end up producing a\n // Promise. Wrap this in another Output as the final result. This Output's\n // construction will be able to merge the inner Output's data with its own. See\n // liftInnerOutput for more details.\n return createSimpleOutput(val.then((v) => outputRec(v)));\n }\n else if (exports.Output.isInstance(val)) {\n // We create a new output here from the raw pieces of the original output in order to\n // accommodate outputs from downlevel SxS SDKs. This ensures that within this package it is\n // safe to assume the implementation of any Output returned by the `output` function.\n //\n // This includes:\n // 1. that first-class unknowns are properly represented in the system: if this was a\n // downlevel output where val.isKnown resolves to false, this guarantees that the\n // returned output's promise resolves to unknown.\n // 2. That the `isSecret` property is available.\n // 3. That the `.allResources` is available.\n const allResources = getAllResources(val);\n const newOutput = new OutputImpl(val.resources(), val.promise(/*withUnknowns*/ true), val.isKnown, val.isSecret, allResources);\n return newOutput.apply(outputRec, /*runWithUnknowns*/ true);\n }\n else if (val instanceof Array) {\n const allValues = [];\n let hasOutputs = false;\n for (const v of val) {\n const ev = outputRec(v);\n allValues.push(ev);\n if (exports.Output.isInstance(ev)) {\n hasOutputs = true;\n }\n }\n // If we didn't encounter any nested Outputs, we don't need to do anything. We can just\n // return this value as is.\n if (!hasOutputs) {\n // Note: we intentionally return 'allValues' here and not 'val'. This ensures we get a\n // copy. This has been behavior we've had since the beginning and there may be subtle\n // logic out there that depends on this that we would not want ot break.\n return allValues;\n }\n // Otherwise, combine the data from all the outputs/non-outputs to one final output.\n const promisedArray = Promise.all(allValues.map((v) => getAwaitableValue(v)));\n const [syncResources, isKnown, isSecret, allResources] = getResourcesAndDetails(allValues);\n return new exports.Output(syncResources, promisedArray, isKnown, isSecret, allResources);\n }\n else {\n const promisedValues = [];\n let hasOutputs = false;\n for (const k of Object.keys(val)) {\n const ev = outputRec(val[k]);\n promisedValues.push({ key: k, value: ev });\n if (exports.Output.isInstance(ev)) {\n hasOutputs = true;\n }\n }\n if (!hasOutputs) {\n // Note: we intentionally return a new value here and not 'val'. This ensures we get a\n // copy. This has been behavior we've had since the beginning and there may be subtle\n // logic out there that depends on this that we would not want ot break.\n return promisedValues.reduce((o, kvp) => {\n o[kvp.key] = kvp.value;\n return o;\n }, {});\n }\n const promisedObject = getPromisedObject(promisedValues);\n const [syncResources, isKnown, isSecret, allResources] = getResourcesAndDetails(promisedValues.map((kvp) => kvp.value));\n return new exports.Output(syncResources, promisedObject, isKnown, isSecret, allResources);\n }\n}\nfunction output(val) {\n const ov = outputRec(val);\n return exports.Output.isInstance(ov) ? ov : createSimpleOutput(ov);\n}\nexports.output = output;\nfunction secret(val) {\n const o = output(val);\n // we called `output` right above this, so it's safe to call `.allResources` on the result.\n return new exports.Output(o.resources(), o.promise(/*withUnknowns*/ true), o.isKnown, Promise.resolve(true), o.allResources());\n}\nexports.secret = secret;\n/**\n * [unsecret] behaves the same as [output] except the returned output takes the existing output and unwraps the secret\n */\nfunction unsecret(val) {\n return new exports.Output(val.resources(), val.promise(/*withUnknowns*/ true), val.isKnown, Promise.resolve(false), val.allResources());\n}\nexports.unsecret = unsecret;\nfunction isSecret(val) {\n return exports.Output.isInstance(val.isSecret) ? Promise.resolve(false) : val.isSecret;\n}\nexports.isSecret = isSecret;\nfunction createSimpleOutput(val) {\n return new exports.Output(new Set(), val instanceof Promise ? val : Promise.resolve(val), \n /*isKnown*/ Promise.resolve(true), \n /*isSecret */ Promise.resolve(false), Promise.resolve(new Set()));\n}\nfunction all(val) {\n // Our recursive `output` helper already does exactly what `all` needs to do in terms of the\n // implementation. Why have both `output` and `all` then? Currently, to the best of our\n // abilities, we haven't been able to make a single signature for both that can unify tuples and\n // arrays for TypeScript. So `all` is much better when dealing with a tuple of heterogenous\n // values, while `output` is good for everything else.\n //\n // Specifically ``all` can take an `[Output, Output]` and produce an\n // `Output<[string, number]>` However, `output` for that same type will produce an\n // `Output<(string|number)[]>` which is definitely suboptimal.\n return output(val);\n}\nexports.all = all;\nfunction getAwaitableValue(v) {\n if (exports.Output.isInstance(v)) {\n return v.promise(/* withUnknowns */ true);\n }\n else {\n return v;\n }\n}\nfunction getPromisedObject(keysAndOutputs) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = {};\n for (const kvp of keysAndOutputs) {\n result[kvp.key] = yield getAwaitableValue(kvp.value);\n }\n return result;\n });\n}\nfunction getResourcesAndDetails(allValues) {\n const syncResources = new Set();\n const allOutputs = [];\n for (const v of allValues) {\n if (exports.Output.isInstance(v)) {\n allOutputs.push(v);\n for (const res of v.resources()) {\n syncResources.add(res);\n }\n }\n }\n // All the outputs were generated in `function all` using `output(v)`. So it's safe\n // to call `.allResources!` here.\n const allResources = Promise.all(allOutputs.map((o) => o.allResources())).then((arr) => {\n const result = new Set();\n for (const set of arr) {\n for (const res of set) {\n result.add(res);\n }\n }\n return result;\n });\n // A merged output is known if all of its inputs are known.\n const isKnown = Promise.all(allOutputs.map((o) => o.isKnown)).then((ps) => ps.every((b) => b));\n // A merged output is secret if any of its inputs are secret.\n const isSecret = Promise.all(allOutputs.map((o) => isSecretOutput(o))).then((ps) => ps.some((b) => b));\n return [syncResources, isKnown, isSecret, allResources];\n}\n/**\n * Unknown represents a value that is unknown. These values correspond to unknown property values received from the\n * Pulumi engine as part of the result of a resource registration (see runtime/rpc.ts). User code is not typically\n * exposed to these values: any Output<> that contains an Unknown will itself be unknown, so any user callbacks\n * passed to `apply` will not be run. Internal callers of `apply` can request that they are run even with unknown\n * values; the output proxy takes advantage of this to allow proxied property accesses to return known values even\n * if other properties of the containing object are unknown.\n */\nclass Unknown {\n constructor() {\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n *\n * This is internal instead of being truly private, to support mixins and our serialization model.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiUnknown = true;\n }\n /**\n * Returns true if the given object is an instance of Unknown. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiUnknown\");\n }\n}\n/**\n * unknown is the singleton unknown value.\n * @internal\n */\nexports.unknown = new Unknown();\n/**\n * isUnknown returns true if the given value is unknown.\n */\nfunction isUnknown(val) {\n return Unknown.isInstance(val);\n}\nexports.isUnknown = isUnknown;\n/**\n * containsUnknowns returns true if the given value is or contains unknown values.\n */\nfunction containsUnknowns(value) {\n return impl(value, new Set());\n function impl(val, seen) {\n if (val === null || typeof val !== \"object\") {\n return false;\n }\n else if (isUnknown(val)) {\n return true;\n }\n else if (seen.has(val)) {\n return false;\n }\n seen.add(val);\n if (val instanceof Array) {\n return val.some((e) => impl(e, seen));\n }\n else {\n return Object.keys(val).some((k) => impl(val[k], seen));\n }\n }\n}\nexports.containsUnknowns = containsUnknowns;\n// eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-redeclare,no-underscore-dangle,id-blacklist,id-match\nexports.Output = OutputImpl;\n/**\n * [concat] takes a sequence of [Inputs], stringifies each, and concatenates all values into one\n * final string. Individual inputs can be any sort of [Input] value. i.e. they can be [Promise]s,\n * [Output]s, or just plain JavaScript values. This can be used like so:\n *\n * ```ts\n * // 'server' and 'loadBalancer' are both resources that expose [Output] properties.\n * let val: Output = pulumi.concat(\"http://\", server.hostname, \":\", loadBalancer.port);\n * ```\n *\n */\nfunction concat(...params) {\n return output(params).apply((array) => array.join(\"\"));\n}\nexports.concat = concat;\n/**\n * [interpolate] is similar to [concat] but is designed to be used as a tagged template expression.\n * i.e.:\n *\n * ```ts\n * // 'server' and 'loadBalancer' are both resources that expose [Output] properties.\n * let val: Output = pulumi.interpolate `http://${server.hostname}:${loadBalancer.port}`\n * ```\n *\n * As with [concat] the 'placeholders' between `${}` can be any Inputs. i.e. they can be\n * [Promise]s, [Output]s, or just plain JavaScript values.\n */\nfunction interpolate(literals, ...placeholders) {\n return output(placeholders).apply((unwrapped) => {\n let result = \"\";\n // interleave the literals with the placeholders\n for (let i = 0; i < unwrapped.length; i++) {\n result += literals[i];\n result += unwrapped[i];\n }\n // add the last literal\n result += literals[literals.length - 1];\n return result;\n });\n}\nexports.interpolate = interpolate;\n/**\n * [jsonStringify] Uses JSON.stringify to serialize the given Input value into a JSON string.\n */\nfunction jsonStringify(obj, replacer, space) {\n return output(obj).apply((o) => {\n return JSON.stringify(o, replacer, space);\n });\n}\nexports.jsonStringify = jsonStringify;\n/**\n * [jsonParse] Uses JSON.parse to deserialize the given Input JSON string into a value.\n */\nfunction jsonParse(text, reviver) {\n return output(text).apply((t) => {\n return JSON.parse(t, reviver);\n });\n}\nexports.jsonParse = jsonParse;\n//# sourceMappingURL=output.js.map","// source: pulumi/alias.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\ngoog.exportSymbol('proto.pulumirpc.Alias', null, global);\ngoog.exportSymbol('proto.pulumirpc.Alias.AliasCase', null, global);\ngoog.exportSymbol('proto.pulumirpc.Alias.Spec', null, global);\ngoog.exportSymbol('proto.pulumirpc.Alias.Spec.ParentCase', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.Alias = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pulumirpc.Alias.oneofGroups_);\n};\ngoog.inherits(proto.pulumirpc.Alias, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.Alias.displayName = 'proto.pulumirpc.Alias';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.Alias.Spec = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pulumirpc.Alias.Spec.oneofGroups_);\n};\ngoog.inherits(proto.pulumirpc.Alias.Spec, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.Alias.Spec.displayName = 'proto.pulumirpc.Alias.Spec';\n}\n\n/**\n * Oneof group definitions for this message. Each group defines the field\n * numbers belonging to that group. When of these fields' value is set, all\n * other fields in the group are cleared. During deserialization, if multiple\n * fields are encountered for a group, only the last value seen will be kept.\n * @private {!Array>}\n * @const\n */\nproto.pulumirpc.Alias.oneofGroups_ = [[1,2]];\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.Alias.AliasCase = {\n ALIAS_NOT_SET: 0,\n URN: 1,\n SPEC: 2\n};\n\n/**\n * @return {proto.pulumirpc.Alias.AliasCase}\n */\nproto.pulumirpc.Alias.prototype.getAliasCase = function() {\n return /** @type {proto.pulumirpc.Alias.AliasCase} */(jspb.Message.computeOneofCase(this, proto.pulumirpc.Alias.oneofGroups_[0]));\n};\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.Alias.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.Alias.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.Alias} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Alias.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n spec: (f = msg.getSpec()) && proto.pulumirpc.Alias.Spec.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.Alias}\n */\nproto.pulumirpc.Alias.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.Alias;\n return proto.pulumirpc.Alias.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.Alias} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.Alias}\n */\nproto.pulumirpc.Alias.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new proto.pulumirpc.Alias.Spec;\n reader.readMessage(value,proto.pulumirpc.Alias.Spec.deserializeBinaryFromReader);\n msg.setSpec(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.Alias.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.Alias.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.Alias} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Alias.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = /** @type {string} */ (jspb.Message.getField(message, 1));\n if (f != null) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getSpec();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n proto.pulumirpc.Alias.Spec.serializeBinaryToWriter\n );\n }\n};\n\n\n\n/**\n * Oneof group definitions for this message. Each group defines the field\n * numbers belonging to that group. When of these fields' value is set, all\n * other fields in the group are cleared. During deserialization, if multiple\n * fields are encountered for a group, only the last value seen will be kept.\n * @private {!Array>}\n * @const\n */\nproto.pulumirpc.Alias.Spec.oneofGroups_ = [[5,6]];\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.Alias.Spec.ParentCase = {\n PARENT_NOT_SET: 0,\n PARENTURN: 5,\n NOPARENT: 6\n};\n\n/**\n * @return {proto.pulumirpc.Alias.Spec.ParentCase}\n */\nproto.pulumirpc.Alias.Spec.prototype.getParentCase = function() {\n return /** @type {proto.pulumirpc.Alias.Spec.ParentCase} */(jspb.Message.computeOneofCase(this, proto.pulumirpc.Alias.Spec.oneofGroups_[0]));\n};\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.Alias.Spec.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.Alias.Spec.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.Alias.Spec} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Alias.Spec.toObject = function(includeInstance, msg) {\n var f, obj = {\n name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n type: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n stack: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n project: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n parenturn: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n noparent: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.Alias.Spec}\n */\nproto.pulumirpc.Alias.Spec.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.Alias.Spec;\n return proto.pulumirpc.Alias.Spec.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.Alias.Spec} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.Alias.Spec}\n */\nproto.pulumirpc.Alias.Spec.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setStack(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setParenturn(value);\n break;\n case 6:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setNoparent(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.Alias.Spec.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.Alias.Spec.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.Alias.Spec} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Alias.Spec.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getStack();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = /** @type {string} */ (jspb.Message.getField(message, 5));\n if (f != null) {\n writer.writeString(\n 5,\n f\n );\n }\n f = /** @type {boolean} */ (jspb.Message.getField(message, 6));\n if (f != null) {\n writer.writeBool(\n 6,\n f\n );\n }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.pulumirpc.Alias.Spec.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string type = 2;\n * @return {string}\n */\nproto.pulumirpc.Alias.Spec.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string stack = 3;\n * @return {string}\n */\nproto.pulumirpc.Alias.Spec.prototype.getStack = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setStack = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string project = 4;\n * @return {string}\n */\nproto.pulumirpc.Alias.Spec.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string parentUrn = 5;\n * @return {string}\n */\nproto.pulumirpc.Alias.Spec.prototype.getParenturn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setParenturn = function(value) {\n return jspb.Message.setOneofField(this, 5, proto.pulumirpc.Alias.Spec.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.clearParenturn = function() {\n return jspb.Message.setOneofField(this, 5, proto.pulumirpc.Alias.Spec.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.Alias.Spec.prototype.hasParenturn = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional bool noParent = 6;\n * @return {boolean}\n */\nproto.pulumirpc.Alias.Spec.prototype.getNoparent = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.setNoparent = function(value) {\n return jspb.Message.setOneofField(this, 6, proto.pulumirpc.Alias.Spec.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.Alias.Spec} returns this\n */\nproto.pulumirpc.Alias.Spec.prototype.clearNoparent = function() {\n return jspb.Message.setOneofField(this, 6, proto.pulumirpc.Alias.Spec.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.Alias.Spec.prototype.hasNoparent = function() {\n return jspb.Message.getField(this, 6) != null;\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.Alias.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Alias} returns this\n */\nproto.pulumirpc.Alias.prototype.setUrn = function(value) {\n return jspb.Message.setOneofField(this, 1, proto.pulumirpc.Alias.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.Alias} returns this\n */\nproto.pulumirpc.Alias.prototype.clearUrn = function() {\n return jspb.Message.setOneofField(this, 1, proto.pulumirpc.Alias.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.Alias.prototype.hasUrn = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional Spec spec = 2;\n * @return {?proto.pulumirpc.Alias.Spec}\n */\nproto.pulumirpc.Alias.prototype.getSpec = function() {\n return /** @type{?proto.pulumirpc.Alias.Spec} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.Alias.Spec, 2));\n};\n\n\n/**\n * @param {?proto.pulumirpc.Alias.Spec|undefined} value\n * @return {!proto.pulumirpc.Alias} returns this\n*/\nproto.pulumirpc.Alias.prototype.setSpec = function(value) {\n return jspb.Message.setOneofWrapperField(this, 2, proto.pulumirpc.Alias.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.Alias} returns this\n */\nproto.pulumirpc.Alias.prototype.clearSpec = function() {\n return this.setSpec(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.Alias.prototype.hasSpec = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// GENERATED CODE -- DO NOT EDIT!\n\n// Original file comments:\n// Copyright 2016-2023, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n'use strict';\nvar grpc = require('@grpc/grpc-js');\nvar pulumi_callback_pb = require('./callback_pb.js');\n\nfunction serialize_pulumirpc_CallbackInvokeRequest(arg) {\n if (!(arg instanceof pulumi_callback_pb.CallbackInvokeRequest)) {\n throw new Error('Expected argument of type pulumirpc.CallbackInvokeRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_CallbackInvokeRequest(buffer_arg) {\n return pulumi_callback_pb.CallbackInvokeRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_CallbackInvokeResponse(arg) {\n if (!(arg instanceof pulumi_callback_pb.CallbackInvokeResponse)) {\n throw new Error('Expected argument of type pulumirpc.CallbackInvokeResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_CallbackInvokeResponse(buffer_arg) {\n return pulumi_callback_pb.CallbackInvokeResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\n\n// Callbacks is a service for invoking functions in one runtime from other processes.\nvar CallbacksService = exports.CallbacksService = {\n // Invoke invokes a given callback, identified by its token.\ninvoke: {\n path: '/pulumirpc.Callbacks/Invoke',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_callback_pb.CallbackInvokeRequest,\n responseType: pulumi_callback_pb.CallbackInvokeResponse,\n requestSerialize: serialize_pulumirpc_CallbackInvokeRequest,\n requestDeserialize: deserialize_pulumirpc_CallbackInvokeRequest,\n responseSerialize: serialize_pulumirpc_CallbackInvokeResponse,\n responseDeserialize: deserialize_pulumirpc_CallbackInvokeResponse,\n },\n};\n\nexports.CallbacksClient = grpc.makeGenericClientConstructor(CallbacksService);\n","// source: pulumi/callback.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\ngoog.exportSymbol('proto.pulumirpc.Callback', null, global);\ngoog.exportSymbol('proto.pulumirpc.CallbackInvokeRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.CallbackInvokeResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.Callback = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.Callback, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.Callback.displayName = 'proto.pulumirpc.Callback';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallbackInvokeRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CallbackInvokeRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallbackInvokeRequest.displayName = 'proto.pulumirpc.CallbackInvokeRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallbackInvokeResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CallbackInvokeResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallbackInvokeResponse.displayName = 'proto.pulumirpc.CallbackInvokeResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.Callback.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.Callback.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.Callback} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Callback.toObject = function(includeInstance, msg) {\n var f, obj = {\n target: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n token: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.Callback}\n */\nproto.pulumirpc.Callback.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.Callback;\n return proto.pulumirpc.Callback.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.Callback} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.Callback}\n */\nproto.pulumirpc.Callback.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTarget(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setToken(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.Callback.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.Callback.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.Callback} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.Callback.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTarget();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getToken();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string target = 1;\n * @return {string}\n */\nproto.pulumirpc.Callback.prototype.getTarget = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Callback} returns this\n */\nproto.pulumirpc.Callback.prototype.setTarget = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string token = 2;\n * @return {string}\n */\nproto.pulumirpc.Callback.prototype.getToken = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.Callback} returns this\n */\nproto.pulumirpc.Callback.prototype.setToken = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallbackInvokeRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallbackInvokeRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallbackInvokeRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n token: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n request: msg.getRequest_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallbackInvokeRequest}\n */\nproto.pulumirpc.CallbackInvokeRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallbackInvokeRequest;\n return proto.pulumirpc.CallbackInvokeRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallbackInvokeRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallbackInvokeRequest}\n */\nproto.pulumirpc.CallbackInvokeRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setToken(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setRequest(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallbackInvokeRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallbackInvokeRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallbackInvokeRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getToken();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getRequest_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string token = 1;\n * @return {string}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.getToken = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallbackInvokeRequest} returns this\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.setToken = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bytes request = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.getRequest = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes request = 2;\n * This is a type-conversion wrapper around `getRequest()`\n * @return {string}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.getRequest_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getRequest()));\n};\n\n\n/**\n * optional bytes request = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getRequest()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.getRequest_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getRequest()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.CallbackInvokeRequest} returns this\n */\nproto.pulumirpc.CallbackInvokeRequest.prototype.setRequest = function(value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallbackInvokeResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallbackInvokeResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallbackInvokeResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n response: msg.getResponse_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallbackInvokeResponse}\n */\nproto.pulumirpc.CallbackInvokeResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallbackInvokeResponse;\n return proto.pulumirpc.CallbackInvokeResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallbackInvokeResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallbackInvokeResponse}\n */\nproto.pulumirpc.CallbackInvokeResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setResponse(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallbackInvokeResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallbackInvokeResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallbackInvokeResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getResponse_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional bytes response = 1;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.getResponse = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * optional bytes response = 1;\n * This is a type-conversion wrapper around `getResponse()`\n * @return {string}\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.getResponse_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getResponse()));\n};\n\n\n/**\n * optional bytes response = 1;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getResponse()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.getResponse_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getResponse()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.CallbackInvokeResponse} returns this\n */\nproto.pulumirpc.CallbackInvokeResponse.prototype.setResponse = function(value) {\n return jspb.Message.setProto3BytesField(this, 1, value);\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// source: pulumi/codegen/hcl.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\ngoog.exportSymbol('proto.pulumirpc.codegen.Diagnostic', null, global);\ngoog.exportSymbol('proto.pulumirpc.codegen.DiagnosticSeverity', null, global);\ngoog.exportSymbol('proto.pulumirpc.codegen.Pos', null, global);\ngoog.exportSymbol('proto.pulumirpc.codegen.Range', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.codegen.Pos = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.codegen.Pos, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.codegen.Pos.displayName = 'proto.pulumirpc.codegen.Pos';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.codegen.Range = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.codegen.Range, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.codegen.Range.displayName = 'proto.pulumirpc.codegen.Range';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.codegen.Diagnostic = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.codegen.Diagnostic, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.codegen.Diagnostic.displayName = 'proto.pulumirpc.codegen.Diagnostic';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.codegen.Pos.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.codegen.Pos.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.codegen.Pos} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Pos.toObject = function(includeInstance, msg) {\n var f, obj = {\n line: jspb.Message.getFieldWithDefault(msg, 1, 0),\n column: jspb.Message.getFieldWithDefault(msg, 2, 0),\n pb_byte: jspb.Message.getFieldWithDefault(msg, 3, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.codegen.Pos}\n */\nproto.pulumirpc.codegen.Pos.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.codegen.Pos;\n return proto.pulumirpc.codegen.Pos.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.codegen.Pos} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.codegen.Pos}\n */\nproto.pulumirpc.codegen.Pos.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setLine(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setColumn(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setByte(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.codegen.Pos.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.codegen.Pos.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.codegen.Pos} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Pos.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getLine();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getColumn();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getByte();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional int64 line = 1;\n * @return {number}\n */\nproto.pulumirpc.codegen.Pos.prototype.getLine = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.codegen.Pos} returns this\n */\nproto.pulumirpc.codegen.Pos.prototype.setLine = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 column = 2;\n * @return {number}\n */\nproto.pulumirpc.codegen.Pos.prototype.getColumn = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.codegen.Pos} returns this\n */\nproto.pulumirpc.codegen.Pos.prototype.setColumn = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 byte = 3;\n * @return {number}\n */\nproto.pulumirpc.codegen.Pos.prototype.getByte = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.codegen.Pos} returns this\n */\nproto.pulumirpc.codegen.Pos.prototype.setByte = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.codegen.Range.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.codegen.Range.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.codegen.Range} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Range.toObject = function(includeInstance, msg) {\n var f, obj = {\n filename: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n start: (f = msg.getStart()) && proto.pulumirpc.codegen.Pos.toObject(includeInstance, f),\n end: (f = msg.getEnd()) && proto.pulumirpc.codegen.Pos.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.codegen.Range}\n */\nproto.pulumirpc.codegen.Range.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.codegen.Range;\n return proto.pulumirpc.codegen.Range.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.codegen.Range} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.codegen.Range}\n */\nproto.pulumirpc.codegen.Range.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setFilename(value);\n break;\n case 2:\n var value = new proto.pulumirpc.codegen.Pos;\n reader.readMessage(value,proto.pulumirpc.codegen.Pos.deserializeBinaryFromReader);\n msg.setStart(value);\n break;\n case 3:\n var value = new proto.pulumirpc.codegen.Pos;\n reader.readMessage(value,proto.pulumirpc.codegen.Pos.deserializeBinaryFromReader);\n msg.setEnd(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.codegen.Range.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.codegen.Range.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.codegen.Range} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Range.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFilename();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getStart();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n proto.pulumirpc.codegen.Pos.serializeBinaryToWriter\n );\n }\n f = message.getEnd();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n proto.pulumirpc.codegen.Pos.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string filename = 1;\n * @return {string}\n */\nproto.pulumirpc.codegen.Range.prototype.getFilename = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.codegen.Range} returns this\n */\nproto.pulumirpc.codegen.Range.prototype.setFilename = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional Pos start = 2;\n * @return {?proto.pulumirpc.codegen.Pos}\n */\nproto.pulumirpc.codegen.Range.prototype.getStart = function() {\n return /** @type{?proto.pulumirpc.codegen.Pos} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.codegen.Pos, 2));\n};\n\n\n/**\n * @param {?proto.pulumirpc.codegen.Pos|undefined} value\n * @return {!proto.pulumirpc.codegen.Range} returns this\n*/\nproto.pulumirpc.codegen.Range.prototype.setStart = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.codegen.Range} returns this\n */\nproto.pulumirpc.codegen.Range.prototype.clearStart = function() {\n return this.setStart(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.codegen.Range.prototype.hasStart = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional Pos end = 3;\n * @return {?proto.pulumirpc.codegen.Pos}\n */\nproto.pulumirpc.codegen.Range.prototype.getEnd = function() {\n return /** @type{?proto.pulumirpc.codegen.Pos} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.codegen.Pos, 3));\n};\n\n\n/**\n * @param {?proto.pulumirpc.codegen.Pos|undefined} value\n * @return {!proto.pulumirpc.codegen.Range} returns this\n*/\nproto.pulumirpc.codegen.Range.prototype.setEnd = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.codegen.Range} returns this\n */\nproto.pulumirpc.codegen.Range.prototype.clearEnd = function() {\n return this.setEnd(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.codegen.Range.prototype.hasEnd = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.codegen.Diagnostic.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.codegen.Diagnostic} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Diagnostic.toObject = function(includeInstance, msg) {\n var f, obj = {\n severity: jspb.Message.getFieldWithDefault(msg, 1, 0),\n summary: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n detail: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n subject: (f = msg.getSubject()) && proto.pulumirpc.codegen.Range.toObject(includeInstance, f),\n context: (f = msg.getContext()) && proto.pulumirpc.codegen.Range.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.codegen.Diagnostic}\n */\nproto.pulumirpc.codegen.Diagnostic.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.codegen.Diagnostic;\n return proto.pulumirpc.codegen.Diagnostic.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.codegen.Diagnostic} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.codegen.Diagnostic}\n */\nproto.pulumirpc.codegen.Diagnostic.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!proto.pulumirpc.codegen.DiagnosticSeverity} */ (reader.readEnum());\n msg.setSeverity(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setSummary(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setDetail(value);\n break;\n case 4:\n var value = new proto.pulumirpc.codegen.Range;\n reader.readMessage(value,proto.pulumirpc.codegen.Range.deserializeBinaryFromReader);\n msg.setSubject(value);\n break;\n case 5:\n var value = new proto.pulumirpc.codegen.Range;\n reader.readMessage(value,proto.pulumirpc.codegen.Range.deserializeBinaryFromReader);\n msg.setContext(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.codegen.Diagnostic.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.codegen.Diagnostic} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.codegen.Diagnostic.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSeverity();\n if (f !== 0.0) {\n writer.writeEnum(\n 1,\n f\n );\n }\n f = message.getSummary();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getDetail();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getSubject();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n proto.pulumirpc.codegen.Range.serializeBinaryToWriter\n );\n }\n f = message.getContext();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n proto.pulumirpc.codegen.Range.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional DiagnosticSeverity severity = 1;\n * @return {!proto.pulumirpc.codegen.DiagnosticSeverity}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.getSeverity = function() {\n return /** @type {!proto.pulumirpc.codegen.DiagnosticSeverity} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {!proto.pulumirpc.codegen.DiagnosticSeverity} value\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.setSeverity = function(value) {\n return jspb.Message.setProto3EnumField(this, 1, value);\n};\n\n\n/**\n * optional string summary = 2;\n * @return {string}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.getSummary = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.setSummary = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string detail = 3;\n * @return {string}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.getDetail = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.setDetail = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional Range subject = 4;\n * @return {?proto.pulumirpc.codegen.Range}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.getSubject = function() {\n return /** @type{?proto.pulumirpc.codegen.Range} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.codegen.Range, 4));\n};\n\n\n/**\n * @param {?proto.pulumirpc.codegen.Range|undefined} value\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n*/\nproto.pulumirpc.codegen.Diagnostic.prototype.setSubject = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.clearSubject = function() {\n return this.setSubject(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.hasSubject = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional Range context = 5;\n * @return {?proto.pulumirpc.codegen.Range}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.getContext = function() {\n return /** @type{?proto.pulumirpc.codegen.Range} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.codegen.Range, 5));\n};\n\n\n/**\n * @param {?proto.pulumirpc.codegen.Range|undefined} value\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n*/\nproto.pulumirpc.codegen.Diagnostic.prototype.setContext = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.codegen.Diagnostic} returns this\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.clearContext = function() {\n return this.setContext(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.codegen.Diagnostic.prototype.hasContext = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.codegen.DiagnosticSeverity = {\n DIAG_INVALID: 0,\n DIAG_ERROR: 1,\n DIAG_WARNING: 2\n};\n\ngoog.object.extend(exports, proto.pulumirpc.codegen);\n","// GENERATED CODE -- DO NOT EDIT!\n\n// Original file comments:\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n'use strict';\nvar grpc = require('@grpc/grpc-js');\nvar pulumi_engine_pb = require('./engine_pb.js');\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\n\nfunction serialize_google_protobuf_Empty(arg) {\n if (!(arg instanceof google_protobuf_empty_pb.Empty)) {\n throw new Error('Expected argument of type google.protobuf.Empty');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_google_protobuf_Empty(buffer_arg) {\n return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetRootResourceRequest(arg) {\n if (!(arg instanceof pulumi_engine_pb.GetRootResourceRequest)) {\n throw new Error('Expected argument of type pulumirpc.GetRootResourceRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetRootResourceRequest(buffer_arg) {\n return pulumi_engine_pb.GetRootResourceRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetRootResourceResponse(arg) {\n if (!(arg instanceof pulumi_engine_pb.GetRootResourceResponse)) {\n throw new Error('Expected argument of type pulumirpc.GetRootResourceResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetRootResourceResponse(buffer_arg) {\n return pulumi_engine_pb.GetRootResourceResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_LogRequest(arg) {\n if (!(arg instanceof pulumi_engine_pb.LogRequest)) {\n throw new Error('Expected argument of type pulumirpc.LogRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_LogRequest(buffer_arg) {\n return pulumi_engine_pb.LogRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_SetRootResourceRequest(arg) {\n if (!(arg instanceof pulumi_engine_pb.SetRootResourceRequest)) {\n throw new Error('Expected argument of type pulumirpc.SetRootResourceRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_SetRootResourceRequest(buffer_arg) {\n return pulumi_engine_pb.SetRootResourceRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_SetRootResourceResponse(arg) {\n if (!(arg instanceof pulumi_engine_pb.SetRootResourceResponse)) {\n throw new Error('Expected argument of type pulumirpc.SetRootResourceResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_SetRootResourceResponse(buffer_arg) {\n return pulumi_engine_pb.SetRootResourceResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\n\n// Engine is an auxiliary service offered to language and resource provider plugins. Its main purpose today is\n// to serve as a common logging endpoint, but it also serves as a state storage mechanism for language hosts\n// that can't store their own global state.\nvar EngineService = exports.EngineService = {\n // Log logs a global message in the engine, including errors and warnings.\nlog: {\n path: '/pulumirpc.Engine/Log',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_engine_pb.LogRequest,\n responseType: google_protobuf_empty_pb.Empty,\n requestSerialize: serialize_pulumirpc_LogRequest,\n requestDeserialize: deserialize_pulumirpc_LogRequest,\n responseSerialize: serialize_google_protobuf_Empty,\n responseDeserialize: deserialize_google_protobuf_Empty,\n },\n // GetRootResource gets the URN of the root resource, the resource that should be the root of all\n// otherwise-unparented resources.\ngetRootResource: {\n path: '/pulumirpc.Engine/GetRootResource',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_engine_pb.GetRootResourceRequest,\n responseType: pulumi_engine_pb.GetRootResourceResponse,\n requestSerialize: serialize_pulumirpc_GetRootResourceRequest,\n requestDeserialize: deserialize_pulumirpc_GetRootResourceRequest,\n responseSerialize: serialize_pulumirpc_GetRootResourceResponse,\n responseDeserialize: deserialize_pulumirpc_GetRootResourceResponse,\n },\n // SetRootResource sets the URN of the root resource.\nsetRootResource: {\n path: '/pulumirpc.Engine/SetRootResource',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_engine_pb.SetRootResourceRequest,\n responseType: pulumi_engine_pb.SetRootResourceResponse,\n requestSerialize: serialize_pulumirpc_SetRootResourceRequest,\n requestDeserialize: deserialize_pulumirpc_SetRootResourceRequest,\n responseSerialize: serialize_pulumirpc_SetRootResourceResponse,\n responseDeserialize: deserialize_pulumirpc_SetRootResourceResponse,\n },\n};\n\nexports.EngineClient = grpc.makeGenericClientConstructor(EngineService);\n","// source: pulumi/engine.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\ngoog.object.extend(proto, google_protobuf_empty_pb);\ngoog.exportSymbol('proto.pulumirpc.GetRootResourceRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetRootResourceResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.LogRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.LogSeverity', null, global);\ngoog.exportSymbol('proto.pulumirpc.SetRootResourceRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.SetRootResourceResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.LogRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.LogRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.LogRequest.displayName = 'proto.pulumirpc.LogRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetRootResourceRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetRootResourceRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetRootResourceRequest.displayName = 'proto.pulumirpc.GetRootResourceRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetRootResourceResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetRootResourceResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetRootResourceResponse.displayName = 'proto.pulumirpc.GetRootResourceResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.SetRootResourceRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.SetRootResourceRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.SetRootResourceRequest.displayName = 'proto.pulumirpc.SetRootResourceRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.SetRootResourceResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.SetRootResourceResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.SetRootResourceResponse.displayName = 'proto.pulumirpc.SetRootResourceResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.LogRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.LogRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.LogRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.LogRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n severity: jspb.Message.getFieldWithDefault(msg, 1, 0),\n message: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n urn: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n streamid: jspb.Message.getFieldWithDefault(msg, 4, 0),\n ephemeral: jspb.Message.getBooleanFieldWithDefault(msg, 5, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.LogRequest}\n */\nproto.pulumirpc.LogRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.LogRequest;\n return proto.pulumirpc.LogRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.LogRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.LogRequest}\n */\nproto.pulumirpc.LogRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!proto.pulumirpc.LogSeverity} */ (reader.readEnum());\n msg.setSeverity(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setMessage(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setStreamid(value);\n break;\n case 5:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setEphemeral(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.LogRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.LogRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.LogRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.LogRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSeverity();\n if (f !== 0.0) {\n writer.writeEnum(\n 1,\n f\n );\n }\n f = message.getMessage();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getStreamid();\n if (f !== 0) {\n writer.writeInt32(\n 4,\n f\n );\n }\n f = message.getEphemeral();\n if (f) {\n writer.writeBool(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional LogSeverity severity = 1;\n * @return {!proto.pulumirpc.LogSeverity}\n */\nproto.pulumirpc.LogRequest.prototype.getSeverity = function() {\n return /** @type {!proto.pulumirpc.LogSeverity} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {!proto.pulumirpc.LogSeverity} value\n * @return {!proto.pulumirpc.LogRequest} returns this\n */\nproto.pulumirpc.LogRequest.prototype.setSeverity = function(value) {\n return jspb.Message.setProto3EnumField(this, 1, value);\n};\n\n\n/**\n * optional string message = 2;\n * @return {string}\n */\nproto.pulumirpc.LogRequest.prototype.getMessage = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.LogRequest} returns this\n */\nproto.pulumirpc.LogRequest.prototype.setMessage = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string urn = 3;\n * @return {string}\n */\nproto.pulumirpc.LogRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.LogRequest} returns this\n */\nproto.pulumirpc.LogRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional int32 streamId = 4;\n * @return {number}\n */\nproto.pulumirpc.LogRequest.prototype.getStreamid = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.LogRequest} returns this\n */\nproto.pulumirpc.LogRequest.prototype.setStreamid = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional bool ephemeral = 5;\n * @return {boolean}\n */\nproto.pulumirpc.LogRequest.prototype.getEphemeral = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.LogRequest} returns this\n */\nproto.pulumirpc.LogRequest.prototype.setEphemeral = function(value) {\n return jspb.Message.setProto3BooleanField(this, 5, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetRootResourceRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetRootResourceRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetRootResourceRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRootResourceRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetRootResourceRequest}\n */\nproto.pulumirpc.GetRootResourceRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetRootResourceRequest;\n return proto.pulumirpc.GetRootResourceRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetRootResourceRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetRootResourceRequest}\n */\nproto.pulumirpc.GetRootResourceRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetRootResourceRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetRootResourceRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetRootResourceRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRootResourceRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetRootResourceResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetRootResourceResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetRootResourceResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRootResourceResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetRootResourceResponse}\n */\nproto.pulumirpc.GetRootResourceResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetRootResourceResponse;\n return proto.pulumirpc.GetRootResourceResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetRootResourceResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetRootResourceResponse}\n */\nproto.pulumirpc.GetRootResourceResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetRootResourceResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetRootResourceResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetRootResourceResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRootResourceResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.GetRootResourceResponse.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetRootResourceResponse} returns this\n */\nproto.pulumirpc.GetRootResourceResponse.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.SetRootResourceRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.SetRootResourceRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.SetRootResourceRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SetRootResourceRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.SetRootResourceRequest}\n */\nproto.pulumirpc.SetRootResourceRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.SetRootResourceRequest;\n return proto.pulumirpc.SetRootResourceRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.SetRootResourceRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.SetRootResourceRequest}\n */\nproto.pulumirpc.SetRootResourceRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.SetRootResourceRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.SetRootResourceRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.SetRootResourceRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SetRootResourceRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.SetRootResourceRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.SetRootResourceRequest} returns this\n */\nproto.pulumirpc.SetRootResourceRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.SetRootResourceResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.SetRootResourceResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.SetRootResourceResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SetRootResourceResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.SetRootResourceResponse}\n */\nproto.pulumirpc.SetRootResourceResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.SetRootResourceResponse;\n return proto.pulumirpc.SetRootResourceResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.SetRootResourceResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.SetRootResourceResponse}\n */\nproto.pulumirpc.SetRootResourceResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.SetRootResourceResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.SetRootResourceResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.SetRootResourceResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SetRootResourceResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.LogSeverity = {\n DEBUG: 0,\n INFO: 1,\n WARNING: 2,\n ERROR: 3\n};\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// GENERATED CODE -- DO NOT EDIT!\n\n// Original file comments:\n// Copyright 2016-2023, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n'use strict';\nvar grpc = require('@grpc/grpc-js');\nvar pulumi_language_pb = require('./language_pb.js');\nvar pulumi_codegen_hcl_pb = require('./codegen/hcl_pb.js');\nvar pulumi_plugin_pb = require('./plugin_pb.js');\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\n\nfunction serialize_google_protobuf_Empty(arg) {\n if (!(arg instanceof google_protobuf_empty_pb.Empty)) {\n throw new Error('Expected argument of type google.protobuf.Empty');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_google_protobuf_Empty(buffer_arg) {\n return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_AboutResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.AboutResponse)) {\n throw new Error('Expected argument of type pulumirpc.AboutResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_AboutResponse(buffer_arg) {\n return pulumi_language_pb.AboutResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GeneratePackageRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.GeneratePackageRequest)) {\n throw new Error('Expected argument of type pulumirpc.GeneratePackageRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GeneratePackageRequest(buffer_arg) {\n return pulumi_language_pb.GeneratePackageRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GeneratePackageResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.GeneratePackageResponse)) {\n throw new Error('Expected argument of type pulumirpc.GeneratePackageResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GeneratePackageResponse(buffer_arg) {\n return pulumi_language_pb.GeneratePackageResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GenerateProgramRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.GenerateProgramRequest)) {\n throw new Error('Expected argument of type pulumirpc.GenerateProgramRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GenerateProgramRequest(buffer_arg) {\n return pulumi_language_pb.GenerateProgramRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GenerateProgramResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.GenerateProgramResponse)) {\n throw new Error('Expected argument of type pulumirpc.GenerateProgramResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GenerateProgramResponse(buffer_arg) {\n return pulumi_language_pb.GenerateProgramResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GenerateProjectRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.GenerateProjectRequest)) {\n throw new Error('Expected argument of type pulumirpc.GenerateProjectRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GenerateProjectRequest(buffer_arg) {\n return pulumi_language_pb.GenerateProjectRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GenerateProjectResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.GenerateProjectResponse)) {\n throw new Error('Expected argument of type pulumirpc.GenerateProjectResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GenerateProjectResponse(buffer_arg) {\n return pulumi_language_pb.GenerateProjectResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetProgramDependenciesRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.GetProgramDependenciesRequest)) {\n throw new Error('Expected argument of type pulumirpc.GetProgramDependenciesRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetProgramDependenciesRequest(buffer_arg) {\n return pulumi_language_pb.GetProgramDependenciesRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetProgramDependenciesResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.GetProgramDependenciesResponse)) {\n throw new Error('Expected argument of type pulumirpc.GetProgramDependenciesResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetProgramDependenciesResponse(buffer_arg) {\n return pulumi_language_pb.GetProgramDependenciesResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetRequiredPluginsRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.GetRequiredPluginsRequest)) {\n throw new Error('Expected argument of type pulumirpc.GetRequiredPluginsRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetRequiredPluginsRequest(buffer_arg) {\n return pulumi_language_pb.GetRequiredPluginsRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_GetRequiredPluginsResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.GetRequiredPluginsResponse)) {\n throw new Error('Expected argument of type pulumirpc.GetRequiredPluginsResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_GetRequiredPluginsResponse(buffer_arg) {\n return pulumi_language_pb.GetRequiredPluginsResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_InstallDependenciesRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.InstallDependenciesRequest)) {\n throw new Error('Expected argument of type pulumirpc.InstallDependenciesRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_InstallDependenciesRequest(buffer_arg) {\n return pulumi_language_pb.InstallDependenciesRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_InstallDependenciesResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.InstallDependenciesResponse)) {\n throw new Error('Expected argument of type pulumirpc.InstallDependenciesResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_InstallDependenciesResponse(buffer_arg) {\n return pulumi_language_pb.InstallDependenciesResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_PackRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.PackRequest)) {\n throw new Error('Expected argument of type pulumirpc.PackRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_PackRequest(buffer_arg) {\n return pulumi_language_pb.PackRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_PackResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.PackResponse)) {\n throw new Error('Expected argument of type pulumirpc.PackResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_PackResponse(buffer_arg) {\n return pulumi_language_pb.PackResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_PluginInfo(arg) {\n if (!(arg instanceof pulumi_plugin_pb.PluginInfo)) {\n throw new Error('Expected argument of type pulumirpc.PluginInfo');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_PluginInfo(buffer_arg) {\n return pulumi_plugin_pb.PluginInfo.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RunPluginRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.RunPluginRequest)) {\n throw new Error('Expected argument of type pulumirpc.RunPluginRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RunPluginRequest(buffer_arg) {\n return pulumi_language_pb.RunPluginRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RunPluginResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.RunPluginResponse)) {\n throw new Error('Expected argument of type pulumirpc.RunPluginResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RunPluginResponse(buffer_arg) {\n return pulumi_language_pb.RunPluginResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RunRequest(arg) {\n if (!(arg instanceof pulumi_language_pb.RunRequest)) {\n throw new Error('Expected argument of type pulumirpc.RunRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RunRequest(buffer_arg) {\n return pulumi_language_pb.RunRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RunResponse(arg) {\n if (!(arg instanceof pulumi_language_pb.RunResponse)) {\n throw new Error('Expected argument of type pulumirpc.RunResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RunResponse(buffer_arg) {\n return pulumi_language_pb.RunResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\n\n// LanguageRuntime is the interface that the planning monitor uses to drive execution of an interpreter responsible\n// for confguring and creating resource objects.\nvar LanguageRuntimeService = exports.LanguageRuntimeService = {\n // GetRequiredPlugins computes the complete set of anticipated plugins required by a program.\ngetRequiredPlugins: {\n path: '/pulumirpc.LanguageRuntime/GetRequiredPlugins',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.GetRequiredPluginsRequest,\n responseType: pulumi_language_pb.GetRequiredPluginsResponse,\n requestSerialize: serialize_pulumirpc_GetRequiredPluginsRequest,\n requestDeserialize: deserialize_pulumirpc_GetRequiredPluginsRequest,\n responseSerialize: serialize_pulumirpc_GetRequiredPluginsResponse,\n responseDeserialize: deserialize_pulumirpc_GetRequiredPluginsResponse,\n },\n // Run executes a program and returns its result.\nrun: {\n path: '/pulumirpc.LanguageRuntime/Run',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.RunRequest,\n responseType: pulumi_language_pb.RunResponse,\n requestSerialize: serialize_pulumirpc_RunRequest,\n requestDeserialize: deserialize_pulumirpc_RunRequest,\n responseSerialize: serialize_pulumirpc_RunResponse,\n responseDeserialize: deserialize_pulumirpc_RunResponse,\n },\n // GetPluginInfo returns generic information about this plugin, like its version.\ngetPluginInfo: {\n path: '/pulumirpc.LanguageRuntime/GetPluginInfo',\n requestStream: false,\n responseStream: false,\n requestType: google_protobuf_empty_pb.Empty,\n responseType: pulumi_plugin_pb.PluginInfo,\n requestSerialize: serialize_google_protobuf_Empty,\n requestDeserialize: deserialize_google_protobuf_Empty,\n responseSerialize: serialize_pulumirpc_PluginInfo,\n responseDeserialize: deserialize_pulumirpc_PluginInfo,\n },\n // InstallDependencies will install dependencies for the project, e.g. by running `npm install` for nodejs projects.\ninstallDependencies: {\n path: '/pulumirpc.LanguageRuntime/InstallDependencies',\n requestStream: false,\n responseStream: true,\n requestType: pulumi_language_pb.InstallDependenciesRequest,\n responseType: pulumi_language_pb.InstallDependenciesResponse,\n requestSerialize: serialize_pulumirpc_InstallDependenciesRequest,\n requestDeserialize: deserialize_pulumirpc_InstallDependenciesRequest,\n responseSerialize: serialize_pulumirpc_InstallDependenciesResponse,\n responseDeserialize: deserialize_pulumirpc_InstallDependenciesResponse,\n },\n // About returns information about the runtime for this language.\nabout: {\n path: '/pulumirpc.LanguageRuntime/About',\n requestStream: false,\n responseStream: false,\n requestType: google_protobuf_empty_pb.Empty,\n responseType: pulumi_language_pb.AboutResponse,\n requestSerialize: serialize_google_protobuf_Empty,\n requestDeserialize: deserialize_google_protobuf_Empty,\n responseSerialize: serialize_pulumirpc_AboutResponse,\n responseDeserialize: deserialize_pulumirpc_AboutResponse,\n },\n // GetProgramDependencies returns the set of dependencies required by the program.\ngetProgramDependencies: {\n path: '/pulumirpc.LanguageRuntime/GetProgramDependencies',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.GetProgramDependenciesRequest,\n responseType: pulumi_language_pb.GetProgramDependenciesResponse,\n requestSerialize: serialize_pulumirpc_GetProgramDependenciesRequest,\n requestDeserialize: deserialize_pulumirpc_GetProgramDependenciesRequest,\n responseSerialize: serialize_pulumirpc_GetProgramDependenciesResponse,\n responseDeserialize: deserialize_pulumirpc_GetProgramDependenciesResponse,\n },\n // RunPlugin executes a plugin program and returns its result asynchronously.\nrunPlugin: {\n path: '/pulumirpc.LanguageRuntime/RunPlugin',\n requestStream: false,\n responseStream: true,\n requestType: pulumi_language_pb.RunPluginRequest,\n responseType: pulumi_language_pb.RunPluginResponse,\n requestSerialize: serialize_pulumirpc_RunPluginRequest,\n requestDeserialize: deserialize_pulumirpc_RunPluginRequest,\n responseSerialize: serialize_pulumirpc_RunPluginResponse,\n responseDeserialize: deserialize_pulumirpc_RunPluginResponse,\n },\n // GenerateProgram generates a given PCL program into a program for this language.\ngenerateProgram: {\n path: '/pulumirpc.LanguageRuntime/GenerateProgram',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.GenerateProgramRequest,\n responseType: pulumi_language_pb.GenerateProgramResponse,\n requestSerialize: serialize_pulumirpc_GenerateProgramRequest,\n requestDeserialize: deserialize_pulumirpc_GenerateProgramRequest,\n responseSerialize: serialize_pulumirpc_GenerateProgramResponse,\n responseDeserialize: deserialize_pulumirpc_GenerateProgramResponse,\n },\n // GenerateProject generates a given PCL program into a project for this language.\ngenerateProject: {\n path: '/pulumirpc.LanguageRuntime/GenerateProject',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.GenerateProjectRequest,\n responseType: pulumi_language_pb.GenerateProjectResponse,\n requestSerialize: serialize_pulumirpc_GenerateProjectRequest,\n requestDeserialize: deserialize_pulumirpc_GenerateProjectRequest,\n responseSerialize: serialize_pulumirpc_GenerateProjectResponse,\n responseDeserialize: deserialize_pulumirpc_GenerateProjectResponse,\n },\n // GeneratePackage generates a given pulumi package into a package for this language.\ngeneratePackage: {\n path: '/pulumirpc.LanguageRuntime/GeneratePackage',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.GeneratePackageRequest,\n responseType: pulumi_language_pb.GeneratePackageResponse,\n requestSerialize: serialize_pulumirpc_GeneratePackageRequest,\n requestDeserialize: deserialize_pulumirpc_GeneratePackageRequest,\n responseSerialize: serialize_pulumirpc_GeneratePackageResponse,\n responseDeserialize: deserialize_pulumirpc_GeneratePackageResponse,\n },\n // Pack packs a package into a language specific artifact.\npack: {\n path: '/pulumirpc.LanguageRuntime/Pack',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_language_pb.PackRequest,\n responseType: pulumi_language_pb.PackResponse,\n requestSerialize: serialize_pulumirpc_PackRequest,\n requestDeserialize: deserialize_pulumirpc_PackRequest,\n responseSerialize: serialize_pulumirpc_PackResponse,\n responseDeserialize: deserialize_pulumirpc_PackResponse,\n },\n};\n\nexports.LanguageRuntimeClient = grpc.makeGenericClientConstructor(LanguageRuntimeService);\n","// source: pulumi/language.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\nvar pulumi_codegen_hcl_pb = require('./codegen/hcl_pb.js');\ngoog.object.extend(proto, pulumi_codegen_hcl_pb);\nvar pulumi_plugin_pb = require('./plugin_pb.js');\ngoog.object.extend(proto, pulumi_plugin_pb);\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\ngoog.object.extend(proto, google_protobuf_empty_pb);\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\ngoog.object.extend(proto, google_protobuf_struct_pb);\ngoog.exportSymbol('proto.pulumirpc.AboutResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.DependencyInfo', null, global);\ngoog.exportSymbol('proto.pulumirpc.GeneratePackageRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GeneratePackageResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GenerateProgramRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GenerateProgramResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GenerateProjectRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GenerateProjectResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetProgramDependenciesRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetProgramDependenciesResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetRequiredPluginsRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetRequiredPluginsResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.InstallDependenciesRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.InstallDependenciesResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.PackRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.PackResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.ProgramInfo', null, global);\ngoog.exportSymbol('proto.pulumirpc.RunPluginRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.RunPluginResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.RunPluginResponse.OutputCase', null, global);\ngoog.exportSymbol('proto.pulumirpc.RunRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.RunResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ProgramInfo = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ProgramInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ProgramInfo.displayName = 'proto.pulumirpc.ProgramInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.AboutResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.AboutResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.AboutResponse.displayName = 'proto.pulumirpc.AboutResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetProgramDependenciesRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetProgramDependenciesRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetProgramDependenciesRequest.displayName = 'proto.pulumirpc.GetProgramDependenciesRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.DependencyInfo = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.DependencyInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.DependencyInfo.displayName = 'proto.pulumirpc.DependencyInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetProgramDependenciesResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GetProgramDependenciesResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GetProgramDependenciesResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetProgramDependenciesResponse.displayName = 'proto.pulumirpc.GetProgramDependenciesResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetRequiredPluginsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetRequiredPluginsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetRequiredPluginsRequest.displayName = 'proto.pulumirpc.GetRequiredPluginsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetRequiredPluginsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GetRequiredPluginsResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GetRequiredPluginsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetRequiredPluginsResponse.displayName = 'proto.pulumirpc.GetRequiredPluginsResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RunRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RunRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RunRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RunRequest.displayName = 'proto.pulumirpc.RunRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RunResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.RunResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RunResponse.displayName = 'proto.pulumirpc.RunResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.InstallDependenciesRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.InstallDependenciesRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.InstallDependenciesRequest.displayName = 'proto.pulumirpc.InstallDependenciesRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.InstallDependenciesResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.InstallDependenciesResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.InstallDependenciesResponse.displayName = 'proto.pulumirpc.InstallDependenciesResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RunPluginRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RunPluginRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RunPluginRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RunPluginRequest.displayName = 'proto.pulumirpc.RunPluginRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RunPluginResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, proto.pulumirpc.RunPluginResponse.oneofGroups_);\n};\ngoog.inherits(proto.pulumirpc.RunPluginResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RunPluginResponse.displayName = 'proto.pulumirpc.RunPluginResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GenerateProgramRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GenerateProgramRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GenerateProgramRequest.displayName = 'proto.pulumirpc.GenerateProgramRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GenerateProgramResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GenerateProgramResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GenerateProgramResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GenerateProgramResponse.displayName = 'proto.pulumirpc.GenerateProgramResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GenerateProjectRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GenerateProjectRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GenerateProjectRequest.displayName = 'proto.pulumirpc.GenerateProjectRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GenerateProjectResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GenerateProjectResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GenerateProjectResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GenerateProjectResponse.displayName = 'proto.pulumirpc.GenerateProjectResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GeneratePackageRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GeneratePackageRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GeneratePackageRequest.displayName = 'proto.pulumirpc.GeneratePackageRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GeneratePackageResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GeneratePackageResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GeneratePackageResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GeneratePackageResponse.displayName = 'proto.pulumirpc.GeneratePackageResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PackRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PackRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PackRequest.displayName = 'proto.pulumirpc.PackRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PackResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PackResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PackResponse.displayName = 'proto.pulumirpc.PackResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ProgramInfo.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ProgramInfo.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ProgramInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ProgramInfo.toObject = function(includeInstance, msg) {\n var f, obj = {\n rootDirectory: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n programDirectory: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n entryPoint: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n options: (f = msg.getOptions()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.ProgramInfo.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ProgramInfo;\n return proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ProgramInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.ProgramInfo.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setRootDirectory(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setProgramDirectory(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setEntryPoint(value);\n break;\n case 4:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOptions(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ProgramInfo.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ProgramInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ProgramInfo.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getRootDirectory();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProgramDirectory();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getEntryPoint();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getOptions();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string root_directory = 1;\n * @return {string}\n */\nproto.pulumirpc.ProgramInfo.prototype.getRootDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ProgramInfo} returns this\n */\nproto.pulumirpc.ProgramInfo.prototype.setRootDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string program_directory = 2;\n * @return {string}\n */\nproto.pulumirpc.ProgramInfo.prototype.getProgramDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ProgramInfo} returns this\n */\nproto.pulumirpc.ProgramInfo.prototype.setProgramDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string entry_point = 3;\n * @return {string}\n */\nproto.pulumirpc.ProgramInfo.prototype.getEntryPoint = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ProgramInfo} returns this\n */\nproto.pulumirpc.ProgramInfo.prototype.setEntryPoint = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional google.protobuf.Struct options = 4;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ProgramInfo.prototype.getOptions = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ProgramInfo} returns this\n*/\nproto.pulumirpc.ProgramInfo.prototype.setOptions = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ProgramInfo} returns this\n */\nproto.pulumirpc.ProgramInfo.prototype.clearOptions = function() {\n return this.setOptions(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ProgramInfo.prototype.hasOptions = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.AboutResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.AboutResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.AboutResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.AboutResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n executable: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n metadataMap: (f = msg.getMetadataMap()) ? f.toObject(includeInstance, undefined) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.AboutResponse}\n */\nproto.pulumirpc.AboutResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.AboutResponse;\n return proto.pulumirpc.AboutResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.AboutResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.AboutResponse}\n */\nproto.pulumirpc.AboutResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setExecutable(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 3:\n var value = msg.getMetadataMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.AboutResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.AboutResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.AboutResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.AboutResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getExecutable();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getMetadataMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n};\n\n\n/**\n * optional string executable = 1;\n * @return {string}\n */\nproto.pulumirpc.AboutResponse.prototype.getExecutable = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.AboutResponse} returns this\n */\nproto.pulumirpc.AboutResponse.prototype.setExecutable = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string version = 2;\n * @return {string}\n */\nproto.pulumirpc.AboutResponse.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.AboutResponse} returns this\n */\nproto.pulumirpc.AboutResponse.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * map metadata = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.AboutResponse.prototype.getMetadataMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.AboutResponse} returns this\n */\nproto.pulumirpc.AboutResponse.prototype.clearMetadataMap = function() {\n this.getMetadataMap().clear();\n return this;};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetProgramDependenciesRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetProgramDependenciesRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetProgramDependenciesRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n project: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n pwd: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n program: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n transitivedependencies: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n info: (f = msg.getInfo()) && proto.pulumirpc.ProgramInfo.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetProgramDependenciesRequest;\n return proto.pulumirpc.GetProgramDependenciesRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetProgramDependenciesRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setPwd(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setProgram(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setTransitivedependencies(value);\n break;\n case 5:\n var value = new proto.pulumirpc.ProgramInfo;\n reader.readMessage(value,proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetProgramDependenciesRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetProgramDependenciesRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetProgramDependenciesRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getPwd();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getProgram();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getTransitivedependencies();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string project = 1;\n * @return {string}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string pwd = 2;\n * @return {string}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.getPwd = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.setPwd = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string program = 3;\n * @return {string}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.getProgram = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.setProgram = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional bool transitiveDependencies = 4;\n * @return {boolean}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.getTransitivedependencies = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.setTransitivedependencies = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional ProgramInfo info = 5;\n * @return {?proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.getInfo = function() {\n return /** @type{?proto.pulumirpc.ProgramInfo} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ProgramInfo, 5));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ProgramInfo|undefined} value\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n*/\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.setInfo = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.GetProgramDependenciesRequest} returns this\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.clearInfo = function() {\n return this.setInfo(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.GetProgramDependenciesRequest.prototype.hasInfo = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.DependencyInfo.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.DependencyInfo.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.DependencyInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DependencyInfo.toObject = function(includeInstance, msg) {\n var f, obj = {\n name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.DependencyInfo}\n */\nproto.pulumirpc.DependencyInfo.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.DependencyInfo;\n return proto.pulumirpc.DependencyInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.DependencyInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.DependencyInfo}\n */\nproto.pulumirpc.DependencyInfo.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.DependencyInfo.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.DependencyInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.DependencyInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DependencyInfo.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.pulumirpc.DependencyInfo.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DependencyInfo} returns this\n */\nproto.pulumirpc.DependencyInfo.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string version = 2;\n * @return {string}\n */\nproto.pulumirpc.DependencyInfo.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DependencyInfo} returns this\n */\nproto.pulumirpc.DependencyInfo.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GetProgramDependenciesResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetProgramDependenciesResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetProgramDependenciesResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetProgramDependenciesResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n dependenciesList: jspb.Message.toObjectList(msg.getDependenciesList(),\n proto.pulumirpc.DependencyInfo.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetProgramDependenciesResponse}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetProgramDependenciesResponse;\n return proto.pulumirpc.GetProgramDependenciesResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetProgramDependenciesResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetProgramDependenciesResponse}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.pulumirpc.DependencyInfo;\n reader.readMessage(value,proto.pulumirpc.DependencyInfo.deserializeBinaryFromReader);\n msg.addDependencies(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetProgramDependenciesResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetProgramDependenciesResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetProgramDependenciesResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDependenciesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.pulumirpc.DependencyInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated DependencyInfo dependencies = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.getDependenciesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.DependencyInfo, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GetProgramDependenciesResponse} returns this\n*/\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.setDependenciesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.DependencyInfo=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.DependencyInfo}\n */\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.addDependencies = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.DependencyInfo, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GetProgramDependenciesResponse} returns this\n */\nproto.pulumirpc.GetProgramDependenciesResponse.prototype.clearDependenciesList = function() {\n return this.setDependenciesList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetRequiredPluginsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetRequiredPluginsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRequiredPluginsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n project: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n pwd: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n program: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n info: (f = msg.getInfo()) && proto.pulumirpc.ProgramInfo.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetRequiredPluginsRequest;\n return proto.pulumirpc.GetRequiredPluginsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetRequiredPluginsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setPwd(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setProgram(value);\n break;\n case 4:\n var value = new proto.pulumirpc.ProgramInfo;\n reader.readMessage(value,proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetRequiredPluginsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetRequiredPluginsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRequiredPluginsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getPwd();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getProgram();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string project = 1;\n * @return {string}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest} returns this\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string pwd = 2;\n * @return {string}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.getPwd = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest} returns this\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.setPwd = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string program = 3;\n * @return {string}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.getProgram = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest} returns this\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.setProgram = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional ProgramInfo info = 4;\n * @return {?proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.getInfo = function() {\n return /** @type{?proto.pulumirpc.ProgramInfo} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ProgramInfo, 4));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ProgramInfo|undefined} value\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest} returns this\n*/\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.setInfo = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.GetRequiredPluginsRequest} returns this\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.clearInfo = function() {\n return this.setInfo(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.GetRequiredPluginsRequest.prototype.hasInfo = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GetRequiredPluginsResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetRequiredPluginsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetRequiredPluginsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRequiredPluginsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n pluginsList: jspb.Message.toObjectList(msg.getPluginsList(),\n pulumi_plugin_pb.PluginDependency.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetRequiredPluginsResponse}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetRequiredPluginsResponse;\n return proto.pulumirpc.GetRequiredPluginsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetRequiredPluginsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetRequiredPluginsResponse}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new pulumi_plugin_pb.PluginDependency;\n reader.readMessage(value,pulumi_plugin_pb.PluginDependency.deserializeBinaryFromReader);\n msg.addPlugins(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetRequiredPluginsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetRequiredPluginsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetRequiredPluginsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getPluginsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n pulumi_plugin_pb.PluginDependency.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated PluginDependency plugins = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.getPluginsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_plugin_pb.PluginDependency, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GetRequiredPluginsResponse} returns this\n*/\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.setPluginsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.PluginDependency=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.PluginDependency}\n */\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.addPlugins = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.PluginDependency, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GetRequiredPluginsResponse} returns this\n */\nproto.pulumirpc.GetRequiredPluginsResponse.prototype.clearPluginsList = function() {\n return this.setPluginsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RunRequest.repeatedFields_ = [5,11];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RunRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RunRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RunRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n project: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n stack: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n pwd: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n program: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n argsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n configMap: (f = msg.getConfigMap()) ? f.toObject(includeInstance, undefined) : [],\n dryrun: jspb.Message.getBooleanFieldWithDefault(msg, 7, false),\n parallel: jspb.Message.getFieldWithDefault(msg, 8, 0),\n monitorAddress: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n querymode: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),\n configsecretkeysList: (f = jspb.Message.getRepeatedField(msg, 11)) == null ? undefined : f,\n organization: jspb.Message.getFieldWithDefault(msg, 12, \"\"),\n configpropertymap: (f = msg.getConfigpropertymap()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n info: (f = msg.getInfo()) && proto.pulumirpc.ProgramInfo.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RunRequest}\n */\nproto.pulumirpc.RunRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RunRequest;\n return proto.pulumirpc.RunRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RunRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RunRequest}\n */\nproto.pulumirpc.RunRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setStack(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setPwd(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setProgram(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.addArgs(value);\n break;\n case 6:\n var value = msg.getConfigMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 7:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDryrun(value);\n break;\n case 8:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setParallel(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setMonitorAddress(value);\n break;\n case 10:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setQuerymode(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.addConfigsecretkeys(value);\n break;\n case 12:\n var value = /** @type {string} */ (reader.readString());\n msg.setOrganization(value);\n break;\n case 13:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setConfigpropertymap(value);\n break;\n case 14:\n var value = new proto.pulumirpc.ProgramInfo;\n reader.readMessage(value,proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RunRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RunRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getStack();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getPwd();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getProgram();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getArgsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 5,\n f\n );\n }\n f = message.getConfigMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getDryrun();\n if (f) {\n writer.writeBool(\n 7,\n f\n );\n }\n f = message.getParallel();\n if (f !== 0) {\n writer.writeInt32(\n 8,\n f\n );\n }\n f = message.getMonitorAddress();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getQuerymode();\n if (f) {\n writer.writeBool(\n 10,\n f\n );\n }\n f = message.getConfigsecretkeysList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 11,\n f\n );\n }\n f = message.getOrganization();\n if (f.length > 0) {\n writer.writeString(\n 12,\n f\n );\n }\n f = message.getConfigpropertymap();\n if (f != null) {\n writer.writeMessage(\n 13,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(\n 14,\n f,\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string project = 1;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string stack = 2;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getStack = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setStack = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string pwd = 3;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getPwd = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setPwd = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string program = 4;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getProgram = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setProgram = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * repeated string args = 5;\n * @return {!Array}\n */\nproto.pulumirpc.RunRequest.prototype.getArgsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setArgsList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.addArgs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.clearArgsList = function() {\n return this.setArgsList([]);\n};\n\n\n/**\n * map config = 6;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.RunRequest.prototype.getConfigMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 6, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.clearConfigMap = function() {\n this.getConfigMap().clear();\n return this;};\n\n\n/**\n * optional bool dryRun = 7;\n * @return {boolean}\n */\nproto.pulumirpc.RunRequest.prototype.getDryrun = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setDryrun = function(value) {\n return jspb.Message.setProto3BooleanField(this, 7, value);\n};\n\n\n/**\n * optional int32 parallel = 8;\n * @return {number}\n */\nproto.pulumirpc.RunRequest.prototype.getParallel = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setParallel = function(value) {\n return jspb.Message.setProto3IntField(this, 8, value);\n};\n\n\n/**\n * optional string monitor_address = 9;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getMonitorAddress = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setMonitorAddress = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional bool queryMode = 10;\n * @return {boolean}\n */\nproto.pulumirpc.RunRequest.prototype.getQuerymode = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setQuerymode = function(value) {\n return jspb.Message.setProto3BooleanField(this, 10, value);\n};\n\n\n/**\n * repeated string configSecretKeys = 11;\n * @return {!Array}\n */\nproto.pulumirpc.RunRequest.prototype.getConfigsecretkeysList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 11));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setConfigsecretkeysList = function(value) {\n return jspb.Message.setField(this, 11, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.addConfigsecretkeys = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 11, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.clearConfigsecretkeysList = function() {\n return this.setConfigsecretkeysList([]);\n};\n\n\n/**\n * optional string organization = 12;\n * @return {string}\n */\nproto.pulumirpc.RunRequest.prototype.getOrganization = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.setOrganization = function(value) {\n return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n/**\n * optional google.protobuf.Struct configPropertyMap = 13;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.RunRequest.prototype.getConfigpropertymap = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 13));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n*/\nproto.pulumirpc.RunRequest.prototype.setConfigpropertymap = function(value) {\n return jspb.Message.setWrapperField(this, 13, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.clearConfigpropertymap = function() {\n return this.setConfigpropertymap(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunRequest.prototype.hasConfigpropertymap = function() {\n return jspb.Message.getField(this, 13) != null;\n};\n\n\n/**\n * optional ProgramInfo info = 14;\n * @return {?proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.RunRequest.prototype.getInfo = function() {\n return /** @type{?proto.pulumirpc.ProgramInfo} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ProgramInfo, 14));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ProgramInfo|undefined} value\n * @return {!proto.pulumirpc.RunRequest} returns this\n*/\nproto.pulumirpc.RunRequest.prototype.setInfo = function(value) {\n return jspb.Message.setWrapperField(this, 14, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RunRequest} returns this\n */\nproto.pulumirpc.RunRequest.prototype.clearInfo = function() {\n return this.setInfo(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunRequest.prototype.hasInfo = function() {\n return jspb.Message.getField(this, 14) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RunResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RunResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RunResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n error: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n bail: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RunResponse}\n */\nproto.pulumirpc.RunResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RunResponse;\n return proto.pulumirpc.RunResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RunResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RunResponse}\n */\nproto.pulumirpc.RunResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setError(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setBail(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RunResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RunResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getError();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getBail();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string error = 1;\n * @return {string}\n */\nproto.pulumirpc.RunResponse.prototype.getError = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunResponse} returns this\n */\nproto.pulumirpc.RunResponse.prototype.setError = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bool bail = 2;\n * @return {boolean}\n */\nproto.pulumirpc.RunResponse.prototype.getBail = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RunResponse} returns this\n */\nproto.pulumirpc.RunResponse.prototype.setBail = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.InstallDependenciesRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.InstallDependenciesRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InstallDependenciesRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n directory: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n isTerminal: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n info: (f = msg.getInfo()) && proto.pulumirpc.ProgramInfo.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.InstallDependenciesRequest}\n */\nproto.pulumirpc.InstallDependenciesRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.InstallDependenciesRequest;\n return proto.pulumirpc.InstallDependenciesRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.InstallDependenciesRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.InstallDependenciesRequest}\n */\nproto.pulumirpc.InstallDependenciesRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setDirectory(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsTerminal(value);\n break;\n case 3:\n var value = new proto.pulumirpc.ProgramInfo;\n reader.readMessage(value,proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.InstallDependenciesRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.InstallDependenciesRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InstallDependenciesRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDirectory();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getIsTerminal();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string directory = 1;\n * @return {string}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.getDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.InstallDependenciesRequest} returns this\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.setDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bool is_terminal = 2;\n * @return {boolean}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.getIsTerminal = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.InstallDependenciesRequest} returns this\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.setIsTerminal = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional ProgramInfo info = 3;\n * @return {?proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.getInfo = function() {\n return /** @type{?proto.pulumirpc.ProgramInfo} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ProgramInfo, 3));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ProgramInfo|undefined} value\n * @return {!proto.pulumirpc.InstallDependenciesRequest} returns this\n*/\nproto.pulumirpc.InstallDependenciesRequest.prototype.setInfo = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.InstallDependenciesRequest} returns this\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.clearInfo = function() {\n return this.setInfo(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.InstallDependenciesRequest.prototype.hasInfo = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.InstallDependenciesResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.InstallDependenciesResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InstallDependenciesResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n stdout: msg.getStdout_asB64(),\n stderr: msg.getStderr_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.InstallDependenciesResponse}\n */\nproto.pulumirpc.InstallDependenciesResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.InstallDependenciesResponse;\n return proto.pulumirpc.InstallDependenciesResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.InstallDependenciesResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.InstallDependenciesResponse}\n */\nproto.pulumirpc.InstallDependenciesResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setStdout(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setStderr(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.InstallDependenciesResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.InstallDependenciesResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InstallDependenciesResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getStdout_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 1,\n f\n );\n }\n f = message.getStderr_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional bytes stdout = 1;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStdout = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * optional bytes stdout = 1;\n * This is a type-conversion wrapper around `getStdout()`\n * @return {string}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStdout_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getStdout()));\n};\n\n\n/**\n * optional bytes stdout = 1;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getStdout()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStdout_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getStdout()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.InstallDependenciesResponse} returns this\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.setStdout = function(value) {\n return jspb.Message.setProto3BytesField(this, 1, value);\n};\n\n\n/**\n * optional bytes stderr = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStderr = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes stderr = 2;\n * This is a type-conversion wrapper around `getStderr()`\n * @return {string}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStderr_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getStderr()));\n};\n\n\n/**\n * optional bytes stderr = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getStderr()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.getStderr_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getStderr()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.InstallDependenciesResponse} returns this\n */\nproto.pulumirpc.InstallDependenciesResponse.prototype.setStderr = function(value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RunPluginRequest.repeatedFields_ = [3,4];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RunPluginRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RunPluginRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RunPluginRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunPluginRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n pwd: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n program: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n argsList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n envList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n info: (f = msg.getInfo()) && proto.pulumirpc.ProgramInfo.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RunPluginRequest}\n */\nproto.pulumirpc.RunPluginRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RunPluginRequest;\n return proto.pulumirpc.RunPluginRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RunPluginRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RunPluginRequest}\n */\nproto.pulumirpc.RunPluginRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setPwd(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setProgram(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.addArgs(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.addEnv(value);\n break;\n case 5:\n var value = new proto.pulumirpc.ProgramInfo;\n reader.readMessage(value,proto.pulumirpc.ProgramInfo.deserializeBinaryFromReader);\n msg.setInfo(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunPluginRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RunPluginRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RunPluginRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunPluginRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getPwd();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProgram();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getArgsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 3,\n f\n );\n }\n f = message.getEnvList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 4,\n f\n );\n }\n f = message.getInfo();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n proto.pulumirpc.ProgramInfo.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string pwd = 1;\n * @return {string}\n */\nproto.pulumirpc.RunPluginRequest.prototype.getPwd = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.setPwd = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string program = 2;\n * @return {string}\n */\nproto.pulumirpc.RunPluginRequest.prototype.getProgram = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.setProgram = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * repeated string args = 3;\n * @return {!Array}\n */\nproto.pulumirpc.RunPluginRequest.prototype.getArgsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.setArgsList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.addArgs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.clearArgsList = function() {\n return this.setArgsList([]);\n};\n\n\n/**\n * repeated string env = 4;\n * @return {!Array}\n */\nproto.pulumirpc.RunPluginRequest.prototype.getEnvList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.setEnvList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.addEnv = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.clearEnvList = function() {\n return this.setEnvList([]);\n};\n\n\n/**\n * optional ProgramInfo info = 5;\n * @return {?proto.pulumirpc.ProgramInfo}\n */\nproto.pulumirpc.RunPluginRequest.prototype.getInfo = function() {\n return /** @type{?proto.pulumirpc.ProgramInfo} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ProgramInfo, 5));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ProgramInfo|undefined} value\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n*/\nproto.pulumirpc.RunPluginRequest.prototype.setInfo = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RunPluginRequest} returns this\n */\nproto.pulumirpc.RunPluginRequest.prototype.clearInfo = function() {\n return this.setInfo(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunPluginRequest.prototype.hasInfo = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n/**\n * Oneof group definitions for this message. Each group defines the field\n * numbers belonging to that group. When of these fields' value is set, all\n * other fields in the group are cleared. During deserialization, if multiple\n * fields are encountered for a group, only the last value seen will be kept.\n * @private {!Array>}\n * @const\n */\nproto.pulumirpc.RunPluginResponse.oneofGroups_ = [[1,2,3]];\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.RunPluginResponse.OutputCase = {\n OUTPUT_NOT_SET: 0,\n STDOUT: 1,\n STDERR: 2,\n EXITCODE: 3\n};\n\n/**\n * @return {proto.pulumirpc.RunPluginResponse.OutputCase}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getOutputCase = function() {\n return /** @type {proto.pulumirpc.RunPluginResponse.OutputCase} */(jspb.Message.computeOneofCase(this, proto.pulumirpc.RunPluginResponse.oneofGroups_[0]));\n};\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RunPluginResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RunPluginResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RunPluginResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunPluginResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n stdout: msg.getStdout_asB64(),\n stderr: msg.getStderr_asB64(),\n exitcode: jspb.Message.getFieldWithDefault(msg, 3, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RunPluginResponse}\n */\nproto.pulumirpc.RunPluginResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RunPluginResponse;\n return proto.pulumirpc.RunPluginResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RunPluginResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RunPluginResponse}\n */\nproto.pulumirpc.RunPluginResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setStdout(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setStderr(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setExitcode(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunPluginResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RunPluginResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RunPluginResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RunPluginResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1));\n if (f != null) {\n writer.writeBytes(\n 1,\n f\n );\n }\n f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 2));\n if (f != null) {\n writer.writeBytes(\n 2,\n f\n );\n }\n f = /** @type {number} */ (jspb.Message.getField(message, 3));\n if (f != null) {\n writer.writeInt32(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional bytes stdout = 1;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStdout = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * optional bytes stdout = 1;\n * This is a type-conversion wrapper around `getStdout()`\n * @return {string}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStdout_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getStdout()));\n};\n\n\n/**\n * optional bytes stdout = 1;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getStdout()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStdout_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getStdout()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.setStdout = function(value) {\n return jspb.Message.setOneofField(this, 1, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.clearStdout = function() {\n return jspb.Message.setOneofField(this, 1, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunPluginResponse.prototype.hasStdout = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional bytes stderr = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStderr = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes stderr = 2;\n * This is a type-conversion wrapper around `getStderr()`\n * @return {string}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStderr_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getStderr()));\n};\n\n\n/**\n * optional bytes stderr = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getStderr()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getStderr_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getStderr()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.setStderr = function(value) {\n return jspb.Message.setOneofField(this, 2, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.clearStderr = function() {\n return jspb.Message.setOneofField(this, 2, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunPluginResponse.prototype.hasStderr = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional int32 exitcode = 3;\n * @return {number}\n */\nproto.pulumirpc.RunPluginResponse.prototype.getExitcode = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.setExitcode = function(value) {\n return jspb.Message.setOneofField(this, 3, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.RunPluginResponse} returns this\n */\nproto.pulumirpc.RunPluginResponse.prototype.clearExitcode = function() {\n return jspb.Message.setOneofField(this, 3, proto.pulumirpc.RunPluginResponse.oneofGroups_[0], undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RunPluginResponse.prototype.hasExitcode = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GenerateProgramRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GenerateProgramRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProgramRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n sourceMap: (f = msg.getSourceMap()) ? f.toObject(includeInstance, undefined) : [],\n loaderTarget: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GenerateProgramRequest}\n */\nproto.pulumirpc.GenerateProgramRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GenerateProgramRequest;\n return proto.pulumirpc.GenerateProgramRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GenerateProgramRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GenerateProgramRequest}\n */\nproto.pulumirpc.GenerateProgramRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = msg.getSourceMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setLoaderTarget(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GenerateProgramRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GenerateProgramRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProgramRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSourceMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getLoaderTarget();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * map source = 1;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.getSourceMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 1, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.GenerateProgramRequest} returns this\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.clearSourceMap = function() {\n this.getSourceMap().clear();\n return this;};\n\n\n/**\n * optional string loader_target = 2;\n * @return {string}\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.getLoaderTarget = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GenerateProgramRequest} returns this\n */\nproto.pulumirpc.GenerateProgramRequest.prototype.setLoaderTarget = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GenerateProgramResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GenerateProgramResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GenerateProgramResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProgramResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n diagnosticsList: jspb.Message.toObjectList(msg.getDiagnosticsList(),\n pulumi_codegen_hcl_pb.Diagnostic.toObject, includeInstance),\n sourceMap: (f = msg.getSourceMap()) ? f.toObject(includeInstance, undefined) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GenerateProgramResponse}\n */\nproto.pulumirpc.GenerateProgramResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GenerateProgramResponse;\n return proto.pulumirpc.GenerateProgramResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GenerateProgramResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GenerateProgramResponse}\n */\nproto.pulumirpc.GenerateProgramResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new pulumi_codegen_hcl_pb.Diagnostic;\n reader.readMessage(value,pulumi_codegen_hcl_pb.Diagnostic.deserializeBinaryFromReader);\n msg.addDiagnostics(value);\n break;\n case 2:\n var value = msg.getSourceMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GenerateProgramResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GenerateProgramResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProgramResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDiagnosticsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n pulumi_codegen_hcl_pb.Diagnostic.serializeBinaryToWriter\n );\n }\n f = message.getSourceMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n};\n\n\n/**\n * repeated codegen.Diagnostic diagnostics = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.getDiagnosticsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_codegen_hcl_pb.Diagnostic, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GenerateProgramResponse} returns this\n*/\nproto.pulumirpc.GenerateProgramResponse.prototype.setDiagnosticsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.codegen.Diagnostic=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.codegen.Diagnostic}\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.addDiagnostics = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.codegen.Diagnostic, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GenerateProgramResponse} returns this\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.clearDiagnosticsList = function() {\n return this.setDiagnosticsList([]);\n};\n\n\n/**\n * map source = 2;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.getSourceMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 2, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.GenerateProgramResponse} returns this\n */\nproto.pulumirpc.GenerateProgramResponse.prototype.clearSourceMap = function() {\n this.getSourceMap().clear();\n return this;};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GenerateProjectRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GenerateProjectRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProjectRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n sourceDirectory: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n targetDirectory: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n project: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n strict: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n loaderTarget: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n localDependenciesMap: (f = msg.getLocalDependenciesMap()) ? f.toObject(includeInstance, undefined) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GenerateProjectRequest}\n */\nproto.pulumirpc.GenerateProjectRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GenerateProjectRequest;\n return proto.pulumirpc.GenerateProjectRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GenerateProjectRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GenerateProjectRequest}\n */\nproto.pulumirpc.GenerateProjectRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setSourceDirectory(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setTargetDirectory(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setStrict(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setLoaderTarget(value);\n break;\n case 6:\n var value = msg.getLocalDependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GenerateProjectRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GenerateProjectRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProjectRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSourceDirectory();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getTargetDirectory();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getStrict();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getLoaderTarget();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getLocalDependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n};\n\n\n/**\n * optional string source_directory = 1;\n * @return {string}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getSourceDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.setSourceDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string target_directory = 2;\n * @return {string}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getTargetDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.setTargetDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string project = 3;\n * @return {string}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional bool strict = 4;\n * @return {boolean}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getStrict = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.setStrict = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional string loader_target = 5;\n * @return {string}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getLoaderTarget = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.setLoaderTarget = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * map local_dependencies = 6;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.getLocalDependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 6, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.GenerateProjectRequest} returns this\n */\nproto.pulumirpc.GenerateProjectRequest.prototype.clearLocalDependenciesMap = function() {\n this.getLocalDependenciesMap().clear();\n return this;};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GenerateProjectResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GenerateProjectResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GenerateProjectResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GenerateProjectResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProjectResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n diagnosticsList: jspb.Message.toObjectList(msg.getDiagnosticsList(),\n pulumi_codegen_hcl_pb.Diagnostic.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GenerateProjectResponse}\n */\nproto.pulumirpc.GenerateProjectResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GenerateProjectResponse;\n return proto.pulumirpc.GenerateProjectResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GenerateProjectResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GenerateProjectResponse}\n */\nproto.pulumirpc.GenerateProjectResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new pulumi_codegen_hcl_pb.Diagnostic;\n reader.readMessage(value,pulumi_codegen_hcl_pb.Diagnostic.deserializeBinaryFromReader);\n msg.addDiagnostics(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GenerateProjectResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GenerateProjectResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GenerateProjectResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GenerateProjectResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDiagnosticsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n pulumi_codegen_hcl_pb.Diagnostic.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated codegen.Diagnostic diagnostics = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GenerateProjectResponse.prototype.getDiagnosticsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_codegen_hcl_pb.Diagnostic, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GenerateProjectResponse} returns this\n*/\nproto.pulumirpc.GenerateProjectResponse.prototype.setDiagnosticsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.codegen.Diagnostic=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.codegen.Diagnostic}\n */\nproto.pulumirpc.GenerateProjectResponse.prototype.addDiagnostics = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.codegen.Diagnostic, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GenerateProjectResponse} returns this\n */\nproto.pulumirpc.GenerateProjectResponse.prototype.clearDiagnosticsList = function() {\n return this.setDiagnosticsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GeneratePackageRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GeneratePackageRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GeneratePackageRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n directory: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n schema: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n extraFilesMap: (f = msg.getExtraFilesMap()) ? f.toObject(includeInstance, undefined) : [],\n loaderTarget: jspb.Message.getFieldWithDefault(msg, 4, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GeneratePackageRequest}\n */\nproto.pulumirpc.GeneratePackageRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GeneratePackageRequest;\n return proto.pulumirpc.GeneratePackageRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GeneratePackageRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GeneratePackageRequest}\n */\nproto.pulumirpc.GeneratePackageRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setDirectory(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setSchema(value);\n break;\n case 3:\n var value = msg.getExtraFilesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setLoaderTarget(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GeneratePackageRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GeneratePackageRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GeneratePackageRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDirectory();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getSchema();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getExtraFilesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n f = message.getLoaderTarget();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional string directory = 1;\n * @return {string}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.getDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GeneratePackageRequest} returns this\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.setDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string schema = 2;\n * @return {string}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.getSchema = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GeneratePackageRequest} returns this\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.setSchema = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * map extra_files = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.getExtraFilesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.GeneratePackageRequest} returns this\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.clearExtraFilesMap = function() {\n this.getExtraFilesMap().clear();\n return this;};\n\n\n/**\n * optional string loader_target = 4;\n * @return {string}\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.getLoaderTarget = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GeneratePackageRequest} returns this\n */\nproto.pulumirpc.GeneratePackageRequest.prototype.setLoaderTarget = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GeneratePackageResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GeneratePackageResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GeneratePackageResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GeneratePackageResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GeneratePackageResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n diagnosticsList: jspb.Message.toObjectList(msg.getDiagnosticsList(),\n pulumi_codegen_hcl_pb.Diagnostic.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GeneratePackageResponse}\n */\nproto.pulumirpc.GeneratePackageResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GeneratePackageResponse;\n return proto.pulumirpc.GeneratePackageResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GeneratePackageResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GeneratePackageResponse}\n */\nproto.pulumirpc.GeneratePackageResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new pulumi_codegen_hcl_pb.Diagnostic;\n reader.readMessage(value,pulumi_codegen_hcl_pb.Diagnostic.deserializeBinaryFromReader);\n msg.addDiagnostics(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GeneratePackageResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GeneratePackageResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GeneratePackageResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GeneratePackageResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDiagnosticsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n pulumi_codegen_hcl_pb.Diagnostic.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated codegen.Diagnostic diagnostics = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GeneratePackageResponse.prototype.getDiagnosticsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_codegen_hcl_pb.Diagnostic, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GeneratePackageResponse} returns this\n*/\nproto.pulumirpc.GeneratePackageResponse.prototype.setDiagnosticsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.codegen.Diagnostic=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.codegen.Diagnostic}\n */\nproto.pulumirpc.GeneratePackageResponse.prototype.addDiagnostics = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.codegen.Diagnostic, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GeneratePackageResponse} returns this\n */\nproto.pulumirpc.GeneratePackageResponse.prototype.clearDiagnosticsList = function() {\n return this.setDiagnosticsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PackRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PackRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PackRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PackRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n packageDirectory: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n destinationDirectory: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PackRequest}\n */\nproto.pulumirpc.PackRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PackRequest;\n return proto.pulumirpc.PackRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PackRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PackRequest}\n */\nproto.pulumirpc.PackRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setPackageDirectory(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setDestinationDirectory(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PackRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PackRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PackRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PackRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getPackageDirectory();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getDestinationDirectory();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string package_directory = 1;\n * @return {string}\n */\nproto.pulumirpc.PackRequest.prototype.getPackageDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PackRequest} returns this\n */\nproto.pulumirpc.PackRequest.prototype.setPackageDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string version = 2;\n * @return {string}\n */\nproto.pulumirpc.PackRequest.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PackRequest} returns this\n */\nproto.pulumirpc.PackRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string destination_directory = 3;\n * @return {string}\n */\nproto.pulumirpc.PackRequest.prototype.getDestinationDirectory = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PackRequest} returns this\n */\nproto.pulumirpc.PackRequest.prototype.setDestinationDirectory = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PackResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PackResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PackResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PackResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n artifactPath: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PackResponse}\n */\nproto.pulumirpc.PackResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PackResponse;\n return proto.pulumirpc.PackResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PackResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PackResponse}\n */\nproto.pulumirpc.PackResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setArtifactPath(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PackResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PackResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PackResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PackResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getArtifactPath();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string artifact_path = 1;\n * @return {string}\n */\nproto.pulumirpc.PackResponse.prototype.getArtifactPath = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PackResponse} returns this\n */\nproto.pulumirpc.PackResponse.prototype.setArtifactPath = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// source: pulumi/plugin.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\ngoog.exportSymbol('proto.pulumirpc.PluginAttach', null, global);\ngoog.exportSymbol('proto.pulumirpc.PluginDependency', null, global);\ngoog.exportSymbol('proto.pulumirpc.PluginInfo', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PluginInfo = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PluginInfo, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PluginInfo.displayName = 'proto.pulumirpc.PluginInfo';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PluginDependency = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PluginDependency, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PluginDependency.displayName = 'proto.pulumirpc.PluginDependency';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PluginAttach = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PluginAttach, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PluginAttach.displayName = 'proto.pulumirpc.PluginAttach';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PluginInfo.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PluginInfo.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PluginInfo} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginInfo.toObject = function(includeInstance, msg) {\n var f, obj = {\n version: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PluginInfo}\n */\nproto.pulumirpc.PluginInfo.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PluginInfo;\n return proto.pulumirpc.PluginInfo.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PluginInfo} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PluginInfo}\n */\nproto.pulumirpc.PluginInfo.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PluginInfo.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PluginInfo.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PluginInfo} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginInfo.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string version = 1;\n * @return {string}\n */\nproto.pulumirpc.PluginInfo.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginInfo} returns this\n */\nproto.pulumirpc.PluginInfo.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PluginDependency.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PluginDependency.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PluginDependency} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginDependency.toObject = function(includeInstance, msg) {\n var f, obj = {\n name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n kind: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n server: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n checksumsMap: (f = msg.getChecksumsMap()) ? f.toObject(includeInstance, undefined) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PluginDependency}\n */\nproto.pulumirpc.PluginDependency.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PluginDependency;\n return proto.pulumirpc.PluginDependency.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PluginDependency} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PluginDependency}\n */\nproto.pulumirpc.PluginDependency.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setKind(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setServer(value);\n break;\n case 5:\n var value = msg.getChecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PluginDependency.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PluginDependency.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PluginDependency} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginDependency.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getKind();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getServer();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getChecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(5, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.pulumirpc.PluginDependency.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginDependency} returns this\n */\nproto.pulumirpc.PluginDependency.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string kind = 2;\n * @return {string}\n */\nproto.pulumirpc.PluginDependency.prototype.getKind = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginDependency} returns this\n */\nproto.pulumirpc.PluginDependency.prototype.setKind = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string version = 3;\n * @return {string}\n */\nproto.pulumirpc.PluginDependency.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginDependency} returns this\n */\nproto.pulumirpc.PluginDependency.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string server = 4;\n * @return {string}\n */\nproto.pulumirpc.PluginDependency.prototype.getServer = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginDependency} returns this\n */\nproto.pulumirpc.PluginDependency.prototype.setServer = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * map checksums = 5;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.PluginDependency.prototype.getChecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 5, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.PluginDependency} returns this\n */\nproto.pulumirpc.PluginDependency.prototype.clearChecksumsMap = function() {\n this.getChecksumsMap().clear();\n return this;};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PluginAttach.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PluginAttach.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PluginAttach} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginAttach.toObject = function(includeInstance, msg) {\n var f, obj = {\n address: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PluginAttach}\n */\nproto.pulumirpc.PluginAttach.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PluginAttach;\n return proto.pulumirpc.PluginAttach.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PluginAttach} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PluginAttach}\n */\nproto.pulumirpc.PluginAttach.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setAddress(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PluginAttach.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PluginAttach.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PluginAttach} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PluginAttach.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAddress();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string address = 1;\n * @return {string}\n */\nproto.pulumirpc.PluginAttach.prototype.getAddress = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.PluginAttach} returns this\n */\nproto.pulumirpc.PluginAttach.prototype.setAddress = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// source: pulumi/provider.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\nvar pulumi_plugin_pb = require('./plugin_pb.js');\ngoog.object.extend(proto, pulumi_plugin_pb);\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\ngoog.object.extend(proto, google_protobuf_empty_pb);\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\ngoog.object.extend(proto, google_protobuf_struct_pb);\ngoog.exportSymbol('proto.pulumirpc.CallRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.CallRequest.ArgumentDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.CallResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.CallResponse.ReturnDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.CheckFailure', null, global);\ngoog.exportSymbol('proto.pulumirpc.CheckRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.CheckResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConfigureErrorMissingKeys', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConfigureRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConfigureResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConstructRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConstructRequest.CustomTimeouts', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConstructRequest.PropertyDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConstructResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.ConstructResponse.PropertyDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.CreateRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.CreateResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.DeleteRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.DiffRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.DiffResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.DiffResponse.DiffChanges', null, global);\ngoog.exportSymbol('proto.pulumirpc.ErrorResourceInitFailed', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetMappingRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetMappingResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetMappingsRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetMappingsResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetSchemaRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.GetSchemaResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.InvokeRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.InvokeResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.PropertyDiff', null, global);\ngoog.exportSymbol('proto.pulumirpc.PropertyDiff.Kind', null, global);\ngoog.exportSymbol('proto.pulumirpc.ReadRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.ReadResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.UpdateRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.UpdateResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetSchemaRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetSchemaRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetSchemaRequest.displayName = 'proto.pulumirpc.GetSchemaRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetSchemaResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetSchemaResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetSchemaResponse.displayName = 'proto.pulumirpc.GetSchemaResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConfigureRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ConfigureRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConfigureRequest.displayName = 'proto.pulumirpc.ConfigureRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConfigureResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ConfigureResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConfigureResponse.displayName = 'proto.pulumirpc.ConfigureResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConfigureErrorMissingKeys = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ConfigureErrorMissingKeys.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ConfigureErrorMissingKeys, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConfigureErrorMissingKeys.displayName = 'proto.pulumirpc.ConfigureErrorMissingKeys';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.displayName = 'proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.InvokeRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.InvokeRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.InvokeRequest.displayName = 'proto.pulumirpc.InvokeRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.InvokeResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.InvokeResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.InvokeResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.InvokeResponse.displayName = 'proto.pulumirpc.InvokeResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.CallRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.CallRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallRequest.displayName = 'proto.pulumirpc.CallRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.CallRequest.ArgumentDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.CallRequest.ArgumentDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallRequest.ArgumentDependencies.displayName = 'proto.pulumirpc.CallRequest.ArgumentDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.CallResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.CallResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallResponse.displayName = 'proto.pulumirpc.CallResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CallResponse.ReturnDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.CallResponse.ReturnDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.CallResponse.ReturnDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CallResponse.ReturnDependencies.displayName = 'proto.pulumirpc.CallResponse.ReturnDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CheckRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CheckRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CheckRequest.displayName = 'proto.pulumirpc.CheckRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CheckResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.CheckResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.CheckResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CheckResponse.displayName = 'proto.pulumirpc.CheckResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CheckFailure = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CheckFailure, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CheckFailure.displayName = 'proto.pulumirpc.CheckFailure';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.DiffRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.DiffRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.DiffRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.DiffRequest.displayName = 'proto.pulumirpc.DiffRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.PropertyDiff = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.PropertyDiff, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.PropertyDiff.displayName = 'proto.pulumirpc.PropertyDiff';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.DiffResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.DiffResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.DiffResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.DiffResponse.displayName = 'proto.pulumirpc.DiffResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CreateRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CreateRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CreateRequest.displayName = 'proto.pulumirpc.CreateRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.CreateResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.CreateResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.CreateResponse.displayName = 'proto.pulumirpc.CreateResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ReadRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ReadRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ReadRequest.displayName = 'proto.pulumirpc.ReadRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ReadResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ReadResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ReadResponse.displayName = 'proto.pulumirpc.ReadResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.UpdateRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.UpdateRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.UpdateRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.UpdateRequest.displayName = 'proto.pulumirpc.UpdateRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.UpdateResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.UpdateResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.UpdateResponse.displayName = 'proto.pulumirpc.UpdateResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.DeleteRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.DeleteRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.DeleteRequest.displayName = 'proto.pulumirpc.DeleteRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConstructRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ConstructRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ConstructRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConstructRequest.displayName = 'proto.pulumirpc.ConstructRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ConstructRequest.PropertyDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ConstructRequest.PropertyDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConstructRequest.PropertyDependencies.displayName = 'proto.pulumirpc.ConstructRequest.PropertyDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ConstructRequest.CustomTimeouts, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConstructRequest.CustomTimeouts.displayName = 'proto.pulumirpc.ConstructRequest.CustomTimeouts';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConstructResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ConstructResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConstructResponse.displayName = 'proto.pulumirpc.ConstructResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ConstructResponse.PropertyDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ConstructResponse.PropertyDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ConstructResponse.PropertyDependencies.displayName = 'proto.pulumirpc.ConstructResponse.PropertyDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ErrorResourceInitFailed = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ErrorResourceInitFailed.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ErrorResourceInitFailed, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ErrorResourceInitFailed.displayName = 'proto.pulumirpc.ErrorResourceInitFailed';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetMappingRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetMappingRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetMappingRequest.displayName = 'proto.pulumirpc.GetMappingRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetMappingResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetMappingResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetMappingResponse.displayName = 'proto.pulumirpc.GetMappingResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetMappingsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.GetMappingsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetMappingsRequest.displayName = 'proto.pulumirpc.GetMappingsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.GetMappingsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.GetMappingsResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.GetMappingsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.GetMappingsResponse.displayName = 'proto.pulumirpc.GetMappingsResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetSchemaRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetSchemaRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetSchemaRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetSchemaRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n version: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetSchemaRequest}\n */\nproto.pulumirpc.GetSchemaRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetSchemaRequest;\n return proto.pulumirpc.GetSchemaRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetSchemaRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetSchemaRequest}\n */\nproto.pulumirpc.GetSchemaRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setVersion(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetSchemaRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetSchemaRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetSchemaRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetSchemaRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getVersion();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional int32 version = 1;\n * @return {number}\n */\nproto.pulumirpc.GetSchemaRequest.prototype.getVersion = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.GetSchemaRequest} returns this\n */\nproto.pulumirpc.GetSchemaRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetSchemaResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetSchemaResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetSchemaResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetSchemaResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n schema: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetSchemaResponse}\n */\nproto.pulumirpc.GetSchemaResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetSchemaResponse;\n return proto.pulumirpc.GetSchemaResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetSchemaResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetSchemaResponse}\n */\nproto.pulumirpc.GetSchemaResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setSchema(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetSchemaResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetSchemaResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetSchemaResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetSchemaResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSchema();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string schema = 1;\n * @return {string}\n */\nproto.pulumirpc.GetSchemaResponse.prototype.getSchema = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetSchemaResponse} returns this\n */\nproto.pulumirpc.GetSchemaResponse.prototype.setSchema = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConfigureRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConfigureRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConfigureRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n variablesMap: (f = msg.getVariablesMap()) ? f.toObject(includeInstance, undefined) : [],\n args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n acceptsecrets: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n sendsOldInputs: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),\n sendsOldInputsToDelete: jspb.Message.getBooleanFieldWithDefault(msg, 6, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConfigureRequest}\n */\nproto.pulumirpc.ConfigureRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConfigureRequest;\n return proto.pulumirpc.ConfigureRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConfigureRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConfigureRequest}\n */\nproto.pulumirpc.ConfigureRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = msg.getVariablesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setArgs(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsecrets(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptresources(value);\n break;\n case 5:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSendsOldInputs(value);\n break;\n case 6:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSendsOldInputsToDelete(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConfigureRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConfigureRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConfigureRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getVariablesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(1, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getArgs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getAcceptsecrets();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getAcceptresources();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getSendsOldInputs();\n if (f) {\n writer.writeBool(\n 5,\n f\n );\n }\n f = message.getSendsOldInputsToDelete();\n if (f) {\n writer.writeBool(\n 6,\n f\n );\n }\n};\n\n\n/**\n * map variables = 1;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getVariablesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 1, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.clearVariablesMap = function() {\n this.getVariablesMap().clear();\n return this;};\n\n\n/**\n * optional google.protobuf.Struct args = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getArgs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n*/\nproto.pulumirpc.ConfigureRequest.prototype.setArgs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.clearArgs = function() {\n return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureRequest.prototype.hasArgs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional bool acceptSecrets = 3;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getAcceptsecrets = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.setAcceptsecrets = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional bool acceptResources = 4;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getAcceptresources = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.setAcceptresources = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional bool sends_old_inputs = 5;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getSendsOldInputs = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.setSendsOldInputs = function(value) {\n return jspb.Message.setProto3BooleanField(this, 5, value);\n};\n\n\n/**\n * optional bool sends_old_inputs_to_delete = 6;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureRequest.prototype.getSendsOldInputsToDelete = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureRequest} returns this\n */\nproto.pulumirpc.ConfigureRequest.prototype.setSendsOldInputsToDelete = function(value) {\n return jspb.Message.setProto3BooleanField(this, 6, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConfigureResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConfigureResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConfigureResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n acceptsecrets: jspb.Message.getBooleanFieldWithDefault(msg, 1, false),\n supportspreview: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n acceptoutputs: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConfigureResponse}\n */\nproto.pulumirpc.ConfigureResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConfigureResponse;\n return proto.pulumirpc.ConfigureResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConfigureResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConfigureResponse}\n */\nproto.pulumirpc.ConfigureResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsecrets(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSupportspreview(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptresources(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptoutputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConfigureResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConfigureResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConfigureResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAcceptsecrets();\n if (f) {\n writer.writeBool(\n 1,\n f\n );\n }\n f = message.getSupportspreview();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = message.getAcceptresources();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getAcceptoutputs();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional bool acceptSecrets = 1;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureResponse.prototype.getAcceptsecrets = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureResponse} returns this\n */\nproto.pulumirpc.ConfigureResponse.prototype.setAcceptsecrets = function(value) {\n return jspb.Message.setProto3BooleanField(this, 1, value);\n};\n\n\n/**\n * optional bool supportsPreview = 2;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureResponse.prototype.getSupportspreview = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureResponse} returns this\n */\nproto.pulumirpc.ConfigureResponse.prototype.setSupportspreview = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional bool acceptResources = 3;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureResponse.prototype.getAcceptresources = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureResponse} returns this\n */\nproto.pulumirpc.ConfigureResponse.prototype.setAcceptresources = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional bool acceptOutputs = 4;\n * @return {boolean}\n */\nproto.pulumirpc.ConfigureResponse.prototype.getAcceptoutputs = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConfigureResponse} returns this\n */\nproto.pulumirpc.ConfigureResponse.prototype.setAcceptoutputs = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConfigureErrorMissingKeys.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.toObject = function(includeInstance, msg) {\n var f, obj = {\n missingkeysList: jspb.Message.toObjectList(msg.getMissingkeysList(),\n proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConfigureErrorMissingKeys;\n return proto.pulumirpc.ConfigureErrorMissingKeys.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey;\n reader.readMessage(value,proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.deserializeBinaryFromReader);\n msg.addMissingkeys(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConfigureErrorMissingKeys.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMissingkeysList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.serializeBinaryToWriter\n );\n }\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.toObject = function(includeInstance, msg) {\n var f, obj = {\n name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n description: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey;\n return proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setDescription(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getDescription();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey} returns this\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string description = 2;\n * @return {string}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.getDescription = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey} returns this\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.MissingKey.prototype.setDescription = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * repeated MissingKey missingKeys = 1;\n * @return {!Array}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.getMissingkeysList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys} returns this\n*/\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.setMissingkeysList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey}\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.addMissingkeys = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.pulumirpc.ConfigureErrorMissingKeys.MissingKey, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConfigureErrorMissingKeys} returns this\n */\nproto.pulumirpc.ConfigureErrorMissingKeys.prototype.clearMissingkeysList = function() {\n return this.setMissingkeysList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.InvokeRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.InvokeRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.InvokeRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InvokeRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n tok: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.InvokeRequest}\n */\nproto.pulumirpc.InvokeRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.InvokeRequest;\n return proto.pulumirpc.InvokeRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.InvokeRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.InvokeRequest}\n */\nproto.pulumirpc.InvokeRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTok(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setArgs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InvokeRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.InvokeRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.InvokeRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InvokeRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTok();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getArgs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string tok = 1;\n * @return {string}\n */\nproto.pulumirpc.InvokeRequest.prototype.getTok = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.InvokeRequest} returns this\n */\nproto.pulumirpc.InvokeRequest.prototype.setTok = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct args = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.InvokeRequest.prototype.getArgs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.InvokeRequest} returns this\n*/\nproto.pulumirpc.InvokeRequest.prototype.setArgs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.InvokeRequest} returns this\n */\nproto.pulumirpc.InvokeRequest.prototype.clearArgs = function() {\n return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.InvokeRequest.prototype.hasArgs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.InvokeResponse.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.InvokeResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.InvokeResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.InvokeResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InvokeResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n pb_return: (f = msg.getReturn()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n failuresList: jspb.Message.toObjectList(msg.getFailuresList(),\n proto.pulumirpc.CheckFailure.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.InvokeResponse}\n */\nproto.pulumirpc.InvokeResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.InvokeResponse;\n return proto.pulumirpc.InvokeResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.InvokeResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.InvokeResponse}\n */\nproto.pulumirpc.InvokeResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setReturn(value);\n break;\n case 2:\n var value = new proto.pulumirpc.CheckFailure;\n reader.readMessage(value,proto.pulumirpc.CheckFailure.deserializeBinaryFromReader);\n msg.addFailures(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.InvokeResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.InvokeResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.InvokeResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.InvokeResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReturn();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getFailuresList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 2,\n f,\n proto.pulumirpc.CheckFailure.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional google.protobuf.Struct return = 1;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.InvokeResponse.prototype.getReturn = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 1));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.InvokeResponse} returns this\n*/\nproto.pulumirpc.InvokeResponse.prototype.setReturn = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.InvokeResponse} returns this\n */\nproto.pulumirpc.InvokeResponse.prototype.clearReturn = function() {\n return this.setReturn(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.InvokeResponse.prototype.hasReturn = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated CheckFailure failures = 2;\n * @return {!Array}\n */\nproto.pulumirpc.InvokeResponse.prototype.getFailuresList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.CheckFailure, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.InvokeResponse} returns this\n*/\nproto.pulumirpc.InvokeResponse.prototype.setFailuresList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.CheckFailure=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CheckFailure}\n */\nproto.pulumirpc.InvokeResponse.prototype.addFailures = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.pulumirpc.CheckFailure, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.InvokeResponse} returns this\n */\nproto.pulumirpc.InvokeResponse.prototype.clearFailuresList = function() {\n return this.setFailuresList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.CallRequest.repeatedFields_ = [9];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n tok: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n argdependenciesMap: (f = msg.getArgdependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.CallRequest.ArgumentDependencies.toObject) : [],\n project: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n stack: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n configMap: (f = msg.getConfigMap()) ? f.toObject(includeInstance, undefined) : [],\n configsecretkeysList: (f = jspb.Message.getRepeatedField(msg, 9)) == null ? undefined : f,\n dryrun: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),\n parallel: jspb.Message.getFieldWithDefault(msg, 11, 0),\n monitorendpoint: jspb.Message.getFieldWithDefault(msg, 12, \"\"),\n organization: jspb.Message.getFieldWithDefault(msg, 14, \"\"),\n acceptsOutputValues: jspb.Message.getBooleanFieldWithDefault(msg, 17, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallRequest}\n */\nproto.pulumirpc.CallRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallRequest;\n return proto.pulumirpc.CallRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallRequest}\n */\nproto.pulumirpc.CallRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTok(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setArgs(value);\n break;\n case 3:\n var value = msg.getArgdependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.CallRequest.ArgumentDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.CallRequest.ArgumentDependencies());\n });\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setStack(value);\n break;\n case 8:\n var value = msg.getConfigMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.addConfigsecretkeys(value);\n break;\n case 10:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDryrun(value);\n break;\n case 11:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setParallel(value);\n break;\n case 12:\n var value = /** @type {string} */ (reader.readString());\n msg.setMonitorendpoint(value);\n break;\n case 14:\n var value = /** @type {string} */ (reader.readString());\n msg.setOrganization(value);\n break;\n case 17:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsOutputValues(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTok();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getArgs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getArgdependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.CallRequest.ArgumentDependencies.serializeBinaryToWriter);\n }\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getStack();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getConfigMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getConfigsecretkeysList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 9,\n f\n );\n }\n f = message.getDryrun();\n if (f) {\n writer.writeBool(\n 10,\n f\n );\n }\n f = message.getParallel();\n if (f !== 0) {\n writer.writeInt32(\n 11,\n f\n );\n }\n f = message.getMonitorendpoint();\n if (f.length > 0) {\n writer.writeString(\n 12,\n f\n );\n }\n f = message.getOrganization();\n if (f.length > 0) {\n writer.writeString(\n 14,\n f\n );\n }\n f = message.getAcceptsOutputValues();\n if (f) {\n writer.writeBool(\n 17,\n f\n );\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallRequest.ArgumentDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallRequest.ArgumentDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallRequest.ArgumentDependencies}\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallRequest.ArgumentDependencies;\n return proto.pulumirpc.CallRequest.ArgumentDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallRequest.ArgumentDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallRequest.ArgumentDependencies}\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallRequest.ArgumentDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallRequest.ArgumentDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.CallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.CallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.CallRequest.ArgumentDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n/**\n * optional string tok = 1;\n * @return {string}\n */\nproto.pulumirpc.CallRequest.prototype.getTok = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setTok = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct args = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CallRequest.prototype.getArgs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n*/\nproto.pulumirpc.CallRequest.prototype.setArgs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.clearArgs = function() {\n return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CallRequest.prototype.hasArgs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * map argDependencies = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.CallRequest.prototype.getArgdependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n proto.pulumirpc.CallRequest.ArgumentDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.clearArgdependenciesMap = function() {\n this.getArgdependenciesMap().clear();\n return this;};\n\n\n/**\n * optional string project = 6;\n * @return {string}\n */\nproto.pulumirpc.CallRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string stack = 7;\n * @return {string}\n */\nproto.pulumirpc.CallRequest.prototype.getStack = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setStack = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * map config = 8;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.CallRequest.prototype.getConfigMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 8, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.clearConfigMap = function() {\n this.getConfigMap().clear();\n return this;};\n\n\n/**\n * repeated string configSecretKeys = 9;\n * @return {!Array}\n */\nproto.pulumirpc.CallRequest.prototype.getConfigsecretkeysList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 9));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setConfigsecretkeysList = function(value) {\n return jspb.Message.setField(this, 9, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.addConfigsecretkeys = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 9, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.clearConfigsecretkeysList = function() {\n return this.setConfigsecretkeysList([]);\n};\n\n\n/**\n * optional bool dryRun = 10;\n * @return {boolean}\n */\nproto.pulumirpc.CallRequest.prototype.getDryrun = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setDryrun = function(value) {\n return jspb.Message.setProto3BooleanField(this, 10, value);\n};\n\n\n/**\n * optional int32 parallel = 11;\n * @return {number}\n */\nproto.pulumirpc.CallRequest.prototype.getParallel = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setParallel = function(value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n\n/**\n * optional string monitorEndpoint = 12;\n * @return {string}\n */\nproto.pulumirpc.CallRequest.prototype.getMonitorendpoint = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setMonitorendpoint = function(value) {\n return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n/**\n * optional string organization = 14;\n * @return {string}\n */\nproto.pulumirpc.CallRequest.prototype.getOrganization = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 14, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setOrganization = function(value) {\n return jspb.Message.setProto3StringField(this, 14, value);\n};\n\n\n/**\n * optional bool accepts_output_values = 17;\n * @return {boolean}\n */\nproto.pulumirpc.CallRequest.prototype.getAcceptsOutputValues = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 17, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.CallRequest} returns this\n */\nproto.pulumirpc.CallRequest.prototype.setAcceptsOutputValues = function(value) {\n return jspb.Message.setProto3BooleanField(this, 17, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.CallResponse.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n pb_return: (f = msg.getReturn()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n returndependenciesMap: (f = msg.getReturndependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.CallResponse.ReturnDependencies.toObject) : [],\n failuresList: jspb.Message.toObjectList(msg.getFailuresList(),\n proto.pulumirpc.CheckFailure.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallResponse}\n */\nproto.pulumirpc.CallResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallResponse;\n return proto.pulumirpc.CallResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallResponse}\n */\nproto.pulumirpc.CallResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setReturn(value);\n break;\n case 2:\n var value = msg.getReturndependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.CallResponse.ReturnDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.CallResponse.ReturnDependencies());\n });\n break;\n case 3:\n var value = new proto.pulumirpc.CheckFailure;\n reader.readMessage(value,proto.pulumirpc.CheckFailure.deserializeBinaryFromReader);\n msg.addFailures(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReturn();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getReturndependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.CallResponse.ReturnDependencies.serializeBinaryToWriter);\n }\n f = message.getFailuresList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 3,\n f,\n proto.pulumirpc.CheckFailure.serializeBinaryToWriter\n );\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CallResponse.ReturnDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CallResponse.ReturnDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CallResponse.ReturnDependencies}\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CallResponse.ReturnDependencies;\n return proto.pulumirpc.CallResponse.ReturnDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CallResponse.ReturnDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CallResponse.ReturnDependencies}\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CallResponse.ReturnDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CallResponse.ReturnDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.CallResponse.ReturnDependencies} returns this\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CallResponse.ReturnDependencies} returns this\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.CallResponse.ReturnDependencies} returns this\n */\nproto.pulumirpc.CallResponse.ReturnDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n/**\n * optional google.protobuf.Struct return = 1;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CallResponse.prototype.getReturn = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 1));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CallResponse} returns this\n*/\nproto.pulumirpc.CallResponse.prototype.setReturn = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CallResponse} returns this\n */\nproto.pulumirpc.CallResponse.prototype.clearReturn = function() {\n return this.setReturn(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CallResponse.prototype.hasReturn = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * map returnDependencies = 2;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.CallResponse.prototype.getReturndependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 2, opt_noLazyCreate,\n proto.pulumirpc.CallResponse.ReturnDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.CallResponse} returns this\n */\nproto.pulumirpc.CallResponse.prototype.clearReturndependenciesMap = function() {\n this.getReturndependenciesMap().clear();\n return this;};\n\n\n/**\n * repeated CheckFailure failures = 3;\n * @return {!Array}\n */\nproto.pulumirpc.CallResponse.prototype.getFailuresList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.CheckFailure, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.CallResponse} returns this\n*/\nproto.pulumirpc.CallResponse.prototype.setFailuresList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.CheckFailure=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CheckFailure}\n */\nproto.pulumirpc.CallResponse.prototype.addFailures = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.pulumirpc.CheckFailure, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.CallResponse} returns this\n */\nproto.pulumirpc.CallResponse.prototype.clearFailuresList = function() {\n return this.setFailuresList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CheckRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CheckRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CheckRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n olds: (f = msg.getOlds()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n news: (f = msg.getNews()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n randomseed: msg.getRandomseed_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CheckRequest}\n */\nproto.pulumirpc.CheckRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CheckRequest;\n return proto.pulumirpc.CheckRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CheckRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CheckRequest}\n */\nproto.pulumirpc.CheckRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOlds(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setNews(value);\n break;\n case 5:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setRandomseed(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CheckRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CheckRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CheckRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getOlds();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getNews();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getRandomseed_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.CheckRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CheckRequest} returns this\n */\nproto.pulumirpc.CheckRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct olds = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CheckRequest.prototype.getOlds = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CheckRequest} returns this\n*/\nproto.pulumirpc.CheckRequest.prototype.setOlds = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CheckRequest} returns this\n */\nproto.pulumirpc.CheckRequest.prototype.clearOlds = function() {\n return this.setOlds(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CheckRequest.prototype.hasOlds = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional google.protobuf.Struct news = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CheckRequest.prototype.getNews = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CheckRequest} returns this\n*/\nproto.pulumirpc.CheckRequest.prototype.setNews = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CheckRequest} returns this\n */\nproto.pulumirpc.CheckRequest.prototype.clearNews = function() {\n return this.setNews(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CheckRequest.prototype.hasNews = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional bytes randomSeed = 5;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.CheckRequest.prototype.getRandomseed = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * optional bytes randomSeed = 5;\n * This is a type-conversion wrapper around `getRandomseed()`\n * @return {string}\n */\nproto.pulumirpc.CheckRequest.prototype.getRandomseed_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getRandomseed()));\n};\n\n\n/**\n * optional bytes randomSeed = 5;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getRandomseed()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CheckRequest.prototype.getRandomseed_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getRandomseed()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.CheckRequest} returns this\n */\nproto.pulumirpc.CheckRequest.prototype.setRandomseed = function(value) {\n return jspb.Message.setProto3BytesField(this, 5, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.CheckResponse.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CheckResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CheckResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CheckResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n failuresList: jspb.Message.toObjectList(msg.getFailuresList(),\n proto.pulumirpc.CheckFailure.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CheckResponse}\n */\nproto.pulumirpc.CheckResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CheckResponse;\n return proto.pulumirpc.CheckResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CheckResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CheckResponse}\n */\nproto.pulumirpc.CheckResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setInputs(value);\n break;\n case 2:\n var value = new proto.pulumirpc.CheckFailure;\n reader.readMessage(value,proto.pulumirpc.CheckFailure.deserializeBinaryFromReader);\n msg.addFailures(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CheckResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CheckResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CheckResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getInputs();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getFailuresList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 2,\n f,\n proto.pulumirpc.CheckFailure.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional google.protobuf.Struct inputs = 1;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CheckResponse.prototype.getInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 1));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CheckResponse} returns this\n*/\nproto.pulumirpc.CheckResponse.prototype.setInputs = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CheckResponse} returns this\n */\nproto.pulumirpc.CheckResponse.prototype.clearInputs = function() {\n return this.setInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CheckResponse.prototype.hasInputs = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated CheckFailure failures = 2;\n * @return {!Array}\n */\nproto.pulumirpc.CheckResponse.prototype.getFailuresList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.pulumirpc.CheckFailure, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.CheckResponse} returns this\n*/\nproto.pulumirpc.CheckResponse.prototype.setFailuresList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.CheckFailure=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.CheckFailure}\n */\nproto.pulumirpc.CheckResponse.prototype.addFailures = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.pulumirpc.CheckFailure, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.CheckResponse} returns this\n */\nproto.pulumirpc.CheckResponse.prototype.clearFailuresList = function() {\n return this.setFailuresList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CheckFailure.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CheckFailure.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CheckFailure} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckFailure.toObject = function(includeInstance, msg) {\n var f, obj = {\n property: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n reason: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CheckFailure}\n */\nproto.pulumirpc.CheckFailure.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CheckFailure;\n return proto.pulumirpc.CheckFailure.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CheckFailure} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CheckFailure}\n */\nproto.pulumirpc.CheckFailure.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProperty(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setReason(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CheckFailure.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CheckFailure.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CheckFailure} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CheckFailure.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProperty();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getReason();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string property = 1;\n * @return {string}\n */\nproto.pulumirpc.CheckFailure.prototype.getProperty = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CheckFailure} returns this\n */\nproto.pulumirpc.CheckFailure.prototype.setProperty = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string reason = 2;\n * @return {string}\n */\nproto.pulumirpc.CheckFailure.prototype.getReason = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CheckFailure} returns this\n */\nproto.pulumirpc.CheckFailure.prototype.setReason = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.DiffRequest.repeatedFields_ = [5];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.DiffRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.DiffRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.DiffRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DiffRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n urn: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n olds: (f = msg.getOlds()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n news: (f = msg.getNews()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n ignorechangesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n oldInputs: (f = msg.getOldInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.DiffRequest}\n */\nproto.pulumirpc.DiffRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.DiffRequest;\n return proto.pulumirpc.DiffRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.DiffRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.DiffRequest}\n */\nproto.pulumirpc.DiffRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOlds(value);\n break;\n case 4:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setNews(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.addIgnorechanges(value);\n break;\n case 6:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOldInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.DiffRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.DiffRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.DiffRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DiffRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getOlds();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getNews();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getIgnorechangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 5,\n f\n );\n }\n f = message.getOldInputs();\n if (f != null) {\n writer.writeMessage(\n 6,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.DiffRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string urn = 2;\n * @return {string}\n */\nproto.pulumirpc.DiffRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct olds = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.DiffRequest.prototype.getOlds = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n*/\nproto.pulumirpc.DiffRequest.prototype.setOlds = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.clearOlds = function() {\n return this.setOlds(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.DiffRequest.prototype.hasOlds = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional google.protobuf.Struct news = 4;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.DiffRequest.prototype.getNews = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n*/\nproto.pulumirpc.DiffRequest.prototype.setNews = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.clearNews = function() {\n return this.setNews(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.DiffRequest.prototype.hasNews = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * repeated string ignoreChanges = 5;\n * @return {!Array}\n */\nproto.pulumirpc.DiffRequest.prototype.getIgnorechangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.setIgnorechangesList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.addIgnorechanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.clearIgnorechangesList = function() {\n return this.setIgnorechangesList([]);\n};\n\n\n/**\n * optional google.protobuf.Struct old_inputs = 6;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.DiffRequest.prototype.getOldInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 6));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.DiffRequest} returns this\n*/\nproto.pulumirpc.DiffRequest.prototype.setOldInputs = function(value) {\n return jspb.Message.setWrapperField(this, 6, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.DiffRequest} returns this\n */\nproto.pulumirpc.DiffRequest.prototype.clearOldInputs = function() {\n return this.setOldInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.DiffRequest.prototype.hasOldInputs = function() {\n return jspb.Message.getField(this, 6) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.PropertyDiff.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.PropertyDiff.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.PropertyDiff} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PropertyDiff.toObject = function(includeInstance, msg) {\n var f, obj = {\n kind: jspb.Message.getFieldWithDefault(msg, 1, 0),\n inputdiff: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.PropertyDiff}\n */\nproto.pulumirpc.PropertyDiff.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.PropertyDiff;\n return proto.pulumirpc.PropertyDiff.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.PropertyDiff} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.PropertyDiff}\n */\nproto.pulumirpc.PropertyDiff.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!proto.pulumirpc.PropertyDiff.Kind} */ (reader.readEnum());\n msg.setKind(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setInputdiff(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.PropertyDiff.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.PropertyDiff.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.PropertyDiff} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.PropertyDiff.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getKind();\n if (f !== 0.0) {\n writer.writeEnum(\n 1,\n f\n );\n }\n f = message.getInputdiff();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.PropertyDiff.Kind = {\n ADD: 0,\n ADD_REPLACE: 1,\n DELETE: 2,\n DELETE_REPLACE: 3,\n UPDATE: 4,\n UPDATE_REPLACE: 5\n};\n\n/**\n * optional Kind kind = 1;\n * @return {!proto.pulumirpc.PropertyDiff.Kind}\n */\nproto.pulumirpc.PropertyDiff.prototype.getKind = function() {\n return /** @type {!proto.pulumirpc.PropertyDiff.Kind} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {!proto.pulumirpc.PropertyDiff.Kind} value\n * @return {!proto.pulumirpc.PropertyDiff} returns this\n */\nproto.pulumirpc.PropertyDiff.prototype.setKind = function(value) {\n return jspb.Message.setProto3EnumField(this, 1, value);\n};\n\n\n/**\n * optional bool inputDiff = 2;\n * @return {boolean}\n */\nproto.pulumirpc.PropertyDiff.prototype.getInputdiff = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.PropertyDiff} returns this\n */\nproto.pulumirpc.PropertyDiff.prototype.setInputdiff = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.DiffResponse.repeatedFields_ = [1,2,5];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.DiffResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.DiffResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.DiffResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DiffResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n replacesList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,\n stablesList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,\n deletebeforereplace: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n changes: jspb.Message.getFieldWithDefault(msg, 4, 0),\n diffsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n detaileddiffMap: (f = msg.getDetaileddiffMap()) ? f.toObject(includeInstance, proto.pulumirpc.PropertyDiff.toObject) : [],\n hasdetaileddiff: jspb.Message.getBooleanFieldWithDefault(msg, 7, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.DiffResponse}\n */\nproto.pulumirpc.DiffResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.DiffResponse;\n return proto.pulumirpc.DiffResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.DiffResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.DiffResponse}\n */\nproto.pulumirpc.DiffResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addReplaces(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.addStables(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDeletebeforereplace(value);\n break;\n case 4:\n var value = /** @type {!proto.pulumirpc.DiffResponse.DiffChanges} */ (reader.readEnum());\n msg.setChanges(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.addDiffs(value);\n break;\n case 6:\n var value = msg.getDetaileddiffMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.PropertyDiff.deserializeBinaryFromReader, \"\", new proto.pulumirpc.PropertyDiff());\n });\n break;\n case 7:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setHasdetaileddiff(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.DiffResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.DiffResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.DiffResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DiffResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReplacesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n f = message.getStablesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 2,\n f\n );\n }\n f = message.getDeletebeforereplace();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getChanges();\n if (f !== 0.0) {\n writer.writeEnum(\n 4,\n f\n );\n }\n f = message.getDiffsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 5,\n f\n );\n }\n f = message.getDetaileddiffMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.PropertyDiff.serializeBinaryToWriter);\n }\n f = message.getHasdetaileddiff();\n if (f) {\n writer.writeBool(\n 7,\n f\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.pulumirpc.DiffResponse.DiffChanges = {\n DIFF_UNKNOWN: 0,\n DIFF_NONE: 1,\n DIFF_SOME: 2\n};\n\n/**\n * repeated string replaces = 1;\n * @return {!Array}\n */\nproto.pulumirpc.DiffResponse.prototype.getReplacesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setReplacesList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.addReplaces = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.clearReplacesList = function() {\n return this.setReplacesList([]);\n};\n\n\n/**\n * repeated string stables = 2;\n * @return {!Array}\n */\nproto.pulumirpc.DiffResponse.prototype.getStablesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setStablesList = function(value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.addStables = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.clearStablesList = function() {\n return this.setStablesList([]);\n};\n\n\n/**\n * optional bool deleteBeforeReplace = 3;\n * @return {boolean}\n */\nproto.pulumirpc.DiffResponse.prototype.getDeletebeforereplace = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setDeletebeforereplace = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional DiffChanges changes = 4;\n * @return {!proto.pulumirpc.DiffResponse.DiffChanges}\n */\nproto.pulumirpc.DiffResponse.prototype.getChanges = function() {\n return /** @type {!proto.pulumirpc.DiffResponse.DiffChanges} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {!proto.pulumirpc.DiffResponse.DiffChanges} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setChanges = function(value) {\n return jspb.Message.setProto3EnumField(this, 4, value);\n};\n\n\n/**\n * repeated string diffs = 5;\n * @return {!Array}\n */\nproto.pulumirpc.DiffResponse.prototype.getDiffsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setDiffsList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.addDiffs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.clearDiffsList = function() {\n return this.setDiffsList([]);\n};\n\n\n/**\n * map detailedDiff = 6;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.DiffResponse.prototype.getDetaileddiffMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 6, opt_noLazyCreate,\n proto.pulumirpc.PropertyDiff));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.clearDetaileddiffMap = function() {\n this.getDetaileddiffMap().clear();\n return this;};\n\n\n/**\n * optional bool hasDetailedDiff = 7;\n * @return {boolean}\n */\nproto.pulumirpc.DiffResponse.prototype.getHasdetaileddiff = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.DiffResponse} returns this\n */\nproto.pulumirpc.DiffResponse.prototype.setHasdetaileddiff = function(value) {\n return jspb.Message.setProto3BooleanField(this, 7, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CreateRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CreateRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CreateRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CreateRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n timeout: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),\n preview: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CreateRequest}\n */\nproto.pulumirpc.CreateRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CreateRequest;\n return proto.pulumirpc.CreateRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CreateRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CreateRequest}\n */\nproto.pulumirpc.CreateRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readDouble());\n msg.setTimeout(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setPreview(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CreateRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CreateRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CreateRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CreateRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getTimeout();\n if (f !== 0.0) {\n writer.writeDouble(\n 3,\n f\n );\n }\n f = message.getPreview();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.CreateRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CreateRequest} returns this\n */\nproto.pulumirpc.CreateRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CreateRequest.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CreateRequest} returns this\n*/\nproto.pulumirpc.CreateRequest.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CreateRequest} returns this\n */\nproto.pulumirpc.CreateRequest.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CreateRequest.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional double timeout = 3;\n * @return {number}\n */\nproto.pulumirpc.CreateRequest.prototype.getTimeout = function() {\n return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.CreateRequest} returns this\n */\nproto.pulumirpc.CreateRequest.prototype.setTimeout = function(value) {\n return jspb.Message.setProto3FloatField(this, 3, value);\n};\n\n\n/**\n * optional bool preview = 4;\n * @return {boolean}\n */\nproto.pulumirpc.CreateRequest.prototype.getPreview = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.CreateRequest} returns this\n */\nproto.pulumirpc.CreateRequest.prototype.setPreview = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.CreateResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.CreateResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.CreateResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CreateResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.CreateResponse}\n */\nproto.pulumirpc.CreateResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.CreateResponse;\n return proto.pulumirpc.CreateResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.CreateResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.CreateResponse}\n */\nproto.pulumirpc.CreateResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.CreateResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.CreateResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.CreateResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.CreateResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.CreateResponse.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.CreateResponse} returns this\n */\nproto.pulumirpc.CreateResponse.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.CreateResponse.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.CreateResponse} returns this\n*/\nproto.pulumirpc.CreateResponse.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.CreateResponse} returns this\n */\nproto.pulumirpc.CreateResponse.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.CreateResponse.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ReadRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ReadRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ReadRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n urn: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ReadRequest}\n */\nproto.pulumirpc.ReadRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ReadRequest;\n return proto.pulumirpc.ReadRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ReadRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ReadRequest}\n */\nproto.pulumirpc.ReadRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 4:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ReadRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ReadRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ReadRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getInputs();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.ReadRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadRequest} returns this\n */\nproto.pulumirpc.ReadRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string urn = 2;\n * @return {string}\n */\nproto.pulumirpc.ReadRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadRequest} returns this\n */\nproto.pulumirpc.ReadRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadRequest.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadRequest} returns this\n*/\nproto.pulumirpc.ReadRequest.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadRequest} returns this\n */\nproto.pulumirpc.ReadRequest.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadRequest.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional google.protobuf.Struct inputs = 4;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadRequest.prototype.getInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadRequest} returns this\n*/\nproto.pulumirpc.ReadRequest.prototype.setInputs = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadRequest} returns this\n */\nproto.pulumirpc.ReadRequest.prototype.clearInputs = function() {\n return this.setInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadRequest.prototype.hasInputs = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ReadResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ReadResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ReadResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ReadResponse}\n */\nproto.pulumirpc.ReadResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ReadResponse;\n return proto.pulumirpc.ReadResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ReadResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ReadResponse}\n */\nproto.pulumirpc.ReadResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ReadResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ReadResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ReadResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getInputs();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.ReadResponse.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResponse} returns this\n */\nproto.pulumirpc.ReadResponse.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadResponse.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadResponse} returns this\n*/\nproto.pulumirpc.ReadResponse.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadResponse} returns this\n */\nproto.pulumirpc.ReadResponse.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadResponse.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional google.protobuf.Struct inputs = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadResponse.prototype.getInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadResponse} returns this\n*/\nproto.pulumirpc.ReadResponse.prototype.setInputs = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadResponse} returns this\n */\nproto.pulumirpc.ReadResponse.prototype.clearInputs = function() {\n return this.setInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadResponse.prototype.hasInputs = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.UpdateRequest.repeatedFields_ = [6];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.UpdateRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.UpdateRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.UpdateRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.UpdateRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n urn: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n olds: (f = msg.getOlds()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n news: (f = msg.getNews()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n timeout: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),\n ignorechangesList: (f = jspb.Message.getRepeatedField(msg, 6)) == null ? undefined : f,\n preview: jspb.Message.getBooleanFieldWithDefault(msg, 7, false),\n oldInputs: (f = msg.getOldInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.UpdateRequest}\n */\nproto.pulumirpc.UpdateRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.UpdateRequest;\n return proto.pulumirpc.UpdateRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.UpdateRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.UpdateRequest}\n */\nproto.pulumirpc.UpdateRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOlds(value);\n break;\n case 4:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setNews(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readDouble());\n msg.setTimeout(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.addIgnorechanges(value);\n break;\n case 7:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setPreview(value);\n break;\n case 8:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOldInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.UpdateRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.UpdateRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.UpdateRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.UpdateRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getOlds();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getNews();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getTimeout();\n if (f !== 0.0) {\n writer.writeDouble(\n 5,\n f\n );\n }\n f = message.getIgnorechangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 6,\n f\n );\n }\n f = message.getPreview();\n if (f) {\n writer.writeBool(\n 7,\n f\n );\n }\n f = message.getOldInputs();\n if (f != null) {\n writer.writeMessage(\n 8,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.UpdateRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string urn = 2;\n * @return {string}\n */\nproto.pulumirpc.UpdateRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct olds = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.UpdateRequest.prototype.getOlds = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n*/\nproto.pulumirpc.UpdateRequest.prototype.setOlds = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.clearOlds = function() {\n return this.setOlds(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.UpdateRequest.prototype.hasOlds = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional google.protobuf.Struct news = 4;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.UpdateRequest.prototype.getNews = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n*/\nproto.pulumirpc.UpdateRequest.prototype.setNews = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.clearNews = function() {\n return this.setNews(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.UpdateRequest.prototype.hasNews = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional double timeout = 5;\n * @return {number}\n */\nproto.pulumirpc.UpdateRequest.prototype.getTimeout = function() {\n return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.setTimeout = function(value) {\n return jspb.Message.setProto3FloatField(this, 5, value);\n};\n\n\n/**\n * repeated string ignoreChanges = 6;\n * @return {!Array}\n */\nproto.pulumirpc.UpdateRequest.prototype.getIgnorechangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.setIgnorechangesList = function(value) {\n return jspb.Message.setField(this, 6, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.addIgnorechanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 6, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.clearIgnorechangesList = function() {\n return this.setIgnorechangesList([]);\n};\n\n\n/**\n * optional bool preview = 7;\n * @return {boolean}\n */\nproto.pulumirpc.UpdateRequest.prototype.getPreview = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 7, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.setPreview = function(value) {\n return jspb.Message.setProto3BooleanField(this, 7, value);\n};\n\n\n/**\n * optional google.protobuf.Struct old_inputs = 8;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.UpdateRequest.prototype.getOldInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 8));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n*/\nproto.pulumirpc.UpdateRequest.prototype.setOldInputs = function(value) {\n return jspb.Message.setWrapperField(this, 8, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.UpdateRequest} returns this\n */\nproto.pulumirpc.UpdateRequest.prototype.clearOldInputs = function() {\n return this.setOldInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.UpdateRequest.prototype.hasOldInputs = function() {\n return jspb.Message.getField(this, 8) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.UpdateResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.UpdateResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.UpdateResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.UpdateResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.UpdateResponse}\n */\nproto.pulumirpc.UpdateResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.UpdateResponse;\n return proto.pulumirpc.UpdateResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.UpdateResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.UpdateResponse}\n */\nproto.pulumirpc.UpdateResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.UpdateResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.UpdateResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.UpdateResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.UpdateResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 1;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.UpdateResponse.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 1));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.UpdateResponse} returns this\n*/\nproto.pulumirpc.UpdateResponse.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.UpdateResponse} returns this\n */\nproto.pulumirpc.UpdateResponse.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.UpdateResponse.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.DeleteRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.DeleteRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.DeleteRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DeleteRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n urn: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n timeout: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0),\n oldInputs: (f = msg.getOldInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.DeleteRequest}\n */\nproto.pulumirpc.DeleteRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.DeleteRequest;\n return proto.pulumirpc.DeleteRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.DeleteRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.DeleteRequest}\n */\nproto.pulumirpc.DeleteRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readDouble());\n msg.setTimeout(value);\n break;\n case 5:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOldInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.DeleteRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.DeleteRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.DeleteRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.DeleteRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getTimeout();\n if (f !== 0.0) {\n writer.writeDouble(\n 4,\n f\n );\n }\n f = message.getOldInputs();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.DeleteRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n */\nproto.pulumirpc.DeleteRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string urn = 2;\n * @return {string}\n */\nproto.pulumirpc.DeleteRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n */\nproto.pulumirpc.DeleteRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.DeleteRequest.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n*/\nproto.pulumirpc.DeleteRequest.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n */\nproto.pulumirpc.DeleteRequest.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.DeleteRequest.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional double timeout = 4;\n * @return {number}\n */\nproto.pulumirpc.DeleteRequest.prototype.getTimeout = function() {\n return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n */\nproto.pulumirpc.DeleteRequest.prototype.setTimeout = function(value) {\n return jspb.Message.setProto3FloatField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Struct old_inputs = 5;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.DeleteRequest.prototype.getOldInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n*/\nproto.pulumirpc.DeleteRequest.prototype.setOldInputs = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.DeleteRequest} returns this\n */\nproto.pulumirpc.DeleteRequest.prototype.clearOldInputs = function() {\n return this.setOldInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.DeleteRequest.prototype.hasOldInputs = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ConstructRequest.repeatedFields_ = [15,16,14,18,22,23];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConstructRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConstructRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConstructRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n project: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n stack: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n configMap: (f = msg.getConfigMap()) ? f.toObject(includeInstance, undefined) : [],\n dryrun: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n parallel: jspb.Message.getFieldWithDefault(msg, 5, 0),\n monitorendpoint: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n type: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n parent: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n inputdependenciesMap: (f = msg.getInputdependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.ConstructRequest.PropertyDependencies.toObject) : [],\n providersMap: (f = msg.getProvidersMap()) ? f.toObject(includeInstance, undefined) : [],\n dependenciesList: (f = jspb.Message.getRepeatedField(msg, 15)) == null ? undefined : f,\n configsecretkeysList: (f = jspb.Message.getRepeatedField(msg, 16)) == null ? undefined : f,\n organization: jspb.Message.getFieldWithDefault(msg, 17, \"\"),\n protect: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),\n aliasesList: (f = jspb.Message.getRepeatedField(msg, 14)) == null ? undefined : f,\n additionalsecretoutputsList: (f = jspb.Message.getRepeatedField(msg, 18)) == null ? undefined : f,\n customtimeouts: (f = msg.getCustomtimeouts()) && proto.pulumirpc.ConstructRequest.CustomTimeouts.toObject(includeInstance, f),\n deletedwith: jspb.Message.getFieldWithDefault(msg, 20, \"\"),\n deletebeforereplace: jspb.Message.getBooleanFieldWithDefault(msg, 21, false),\n ignorechangesList: (f = jspb.Message.getRepeatedField(msg, 22)) == null ? undefined : f,\n replaceonchangesList: (f = jspb.Message.getRepeatedField(msg, 23)) == null ? undefined : f,\n retainondelete: jspb.Message.getBooleanFieldWithDefault(msg, 24, false),\n acceptsOutputValues: jspb.Message.getBooleanFieldWithDefault(msg, 25, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConstructRequest}\n */\nproto.pulumirpc.ConstructRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConstructRequest;\n return proto.pulumirpc.ConstructRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConstructRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConstructRequest}\n */\nproto.pulumirpc.ConstructRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProject(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setStack(value);\n break;\n case 3:\n var value = msg.getConfigMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDryrun(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setParallel(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setMonitorendpoint(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setParent(value);\n break;\n case 10:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setInputs(value);\n break;\n case 11:\n var value = msg.getInputdependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.ConstructRequest.PropertyDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.ConstructRequest.PropertyDependencies());\n });\n break;\n case 13:\n var value = msg.getProvidersMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 15:\n var value = /** @type {string} */ (reader.readString());\n msg.addDependencies(value);\n break;\n case 16:\n var value = /** @type {string} */ (reader.readString());\n msg.addConfigsecretkeys(value);\n break;\n case 17:\n var value = /** @type {string} */ (reader.readString());\n msg.setOrganization(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setProtect(value);\n break;\n case 14:\n var value = /** @type {string} */ (reader.readString());\n msg.addAliases(value);\n break;\n case 18:\n var value = /** @type {string} */ (reader.readString());\n msg.addAdditionalsecretoutputs(value);\n break;\n case 19:\n var value = new proto.pulumirpc.ConstructRequest.CustomTimeouts;\n reader.readMessage(value,proto.pulumirpc.ConstructRequest.CustomTimeouts.deserializeBinaryFromReader);\n msg.setCustomtimeouts(value);\n break;\n case 20:\n var value = /** @type {string} */ (reader.readString());\n msg.setDeletedwith(value);\n break;\n case 21:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDeletebeforereplace(value);\n break;\n case 22:\n var value = /** @type {string} */ (reader.readString());\n msg.addIgnorechanges(value);\n break;\n case 23:\n var value = /** @type {string} */ (reader.readString());\n msg.addReplaceonchanges(value);\n break;\n case 24:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setRetainondelete(value);\n break;\n case 25:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsOutputValues(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConstructRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConstructRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProject();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getStack();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getConfigMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getDryrun();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getParallel();\n if (f !== 0) {\n writer.writeInt32(\n 5,\n f\n );\n }\n f = message.getMonitorendpoint();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getParent();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getInputs();\n if (f != null) {\n writer.writeMessage(\n 10,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getInputdependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(11, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.ConstructRequest.PropertyDependencies.serializeBinaryToWriter);\n }\n f = message.getProvidersMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(13, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getDependenciesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 15,\n f\n );\n }\n f = message.getConfigsecretkeysList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 16,\n f\n );\n }\n f = message.getOrganization();\n if (f.length > 0) {\n writer.writeString(\n 17,\n f\n );\n }\n f = message.getProtect();\n if (f) {\n writer.writeBool(\n 12,\n f\n );\n }\n f = message.getAliasesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 14,\n f\n );\n }\n f = message.getAdditionalsecretoutputsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 18,\n f\n );\n }\n f = message.getCustomtimeouts();\n if (f != null) {\n writer.writeMessage(\n 19,\n f,\n proto.pulumirpc.ConstructRequest.CustomTimeouts.serializeBinaryToWriter\n );\n }\n f = message.getDeletedwith();\n if (f.length > 0) {\n writer.writeString(\n 20,\n f\n );\n }\n f = message.getDeletebeforereplace();\n if (f) {\n writer.writeBool(\n 21,\n f\n );\n }\n f = message.getIgnorechangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 22,\n f\n );\n }\n f = message.getReplaceonchangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 23,\n f\n );\n }\n f = message.getRetainondelete();\n if (f) {\n writer.writeBool(\n 24,\n f\n );\n }\n f = message.getAcceptsOutputValues();\n if (f) {\n writer.writeBool(\n 25,\n f\n );\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConstructRequest.PropertyDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConstructRequest.PropertyDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConstructRequest.PropertyDependencies}\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConstructRequest.PropertyDependencies;\n return proto.pulumirpc.ConstructRequest.PropertyDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConstructRequest.PropertyDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConstructRequest.PropertyDependencies}\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConstructRequest.PropertyDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConstructRequest.PropertyDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructRequest.PropertyDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConstructRequest.CustomTimeouts.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConstructRequest.CustomTimeouts} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.toObject = function(includeInstance, msg) {\n var f, obj = {\n create: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n update: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n pb_delete: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConstructRequest.CustomTimeouts}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConstructRequest.CustomTimeouts;\n return proto.pulumirpc.ConstructRequest.CustomTimeouts.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConstructRequest.CustomTimeouts} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConstructRequest.CustomTimeouts}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setCreate(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUpdate(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setDelete(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConstructRequest.CustomTimeouts.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConstructRequest.CustomTimeouts} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCreate();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUpdate();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getDelete();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string create = 1;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.getCreate = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.setCreate = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string update = 2;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.getUpdate = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.setUpdate = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string delete = 3;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.getDelete = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.ConstructRequest.CustomTimeouts.prototype.setDelete = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string project = 1;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getProject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setProject = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string stack = 2;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getStack = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setStack = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * map config = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ConstructRequest.prototype.getConfigMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearConfigMap = function() {\n this.getConfigMap().clear();\n return this;};\n\n\n/**\n * optional bool dryRun = 4;\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.getDryrun = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setDryrun = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional int32 parallel = 5;\n * @return {number}\n */\nproto.pulumirpc.ConstructRequest.prototype.getParallel = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setParallel = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional string monitorEndpoint = 6;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getMonitorendpoint = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setMonitorendpoint = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string type = 7;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string name = 8;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional string parent = 9;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getParent = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setParent = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional google.protobuf.Struct inputs = 10;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ConstructRequest.prototype.getInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 10));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n*/\nproto.pulumirpc.ConstructRequest.prototype.setInputs = function(value) {\n return jspb.Message.setWrapperField(this, 10, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearInputs = function() {\n return this.setInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.hasInputs = function() {\n return jspb.Message.getField(this, 10) != null;\n};\n\n\n/**\n * map inputDependencies = 11;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ConstructRequest.prototype.getInputdependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 11, opt_noLazyCreate,\n proto.pulumirpc.ConstructRequest.PropertyDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearInputdependenciesMap = function() {\n this.getInputdependenciesMap().clear();\n return this;};\n\n\n/**\n * map providers = 13;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ConstructRequest.prototype.getProvidersMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 13, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearProvidersMap = function() {\n this.getProvidersMap().clear();\n return this;};\n\n\n/**\n * repeated string dependencies = 15;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getDependenciesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 15));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setDependenciesList = function(value) {\n return jspb.Message.setField(this, 15, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addDependencies = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 15, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearDependenciesList = function() {\n return this.setDependenciesList([]);\n};\n\n\n/**\n * repeated string configSecretKeys = 16;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getConfigsecretkeysList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 16));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setConfigsecretkeysList = function(value) {\n return jspb.Message.setField(this, 16, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addConfigsecretkeys = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 16, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearConfigsecretkeysList = function() {\n return this.setConfigsecretkeysList([]);\n};\n\n\n/**\n * optional string organization = 17;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getOrganization = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 17, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setOrganization = function(value) {\n return jspb.Message.setProto3StringField(this, 17, value);\n};\n\n\n/**\n * optional bool protect = 12;\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.getProtect = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setProtect = function(value) {\n return jspb.Message.setProto3BooleanField(this, 12, value);\n};\n\n\n/**\n * repeated string aliases = 14;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getAliasesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 14));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setAliasesList = function(value) {\n return jspb.Message.setField(this, 14, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addAliases = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 14, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearAliasesList = function() {\n return this.setAliasesList([]);\n};\n\n\n/**\n * repeated string additionalSecretOutputs = 18;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getAdditionalsecretoutputsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 18));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setAdditionalsecretoutputsList = function(value) {\n return jspb.Message.setField(this, 18, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addAdditionalsecretoutputs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 18, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearAdditionalsecretoutputsList = function() {\n return this.setAdditionalsecretoutputsList([]);\n};\n\n\n/**\n * optional CustomTimeouts customTimeouts = 19;\n * @return {?proto.pulumirpc.ConstructRequest.CustomTimeouts}\n */\nproto.pulumirpc.ConstructRequest.prototype.getCustomtimeouts = function() {\n return /** @type{?proto.pulumirpc.ConstructRequest.CustomTimeouts} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.ConstructRequest.CustomTimeouts, 19));\n};\n\n\n/**\n * @param {?proto.pulumirpc.ConstructRequest.CustomTimeouts|undefined} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n*/\nproto.pulumirpc.ConstructRequest.prototype.setCustomtimeouts = function(value) {\n return jspb.Message.setWrapperField(this, 19, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearCustomtimeouts = function() {\n return this.setCustomtimeouts(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.hasCustomtimeouts = function() {\n return jspb.Message.getField(this, 19) != null;\n};\n\n\n/**\n * optional string deletedWith = 20;\n * @return {string}\n */\nproto.pulumirpc.ConstructRequest.prototype.getDeletedwith = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 20, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setDeletedwith = function(value) {\n return jspb.Message.setProto3StringField(this, 20, value);\n};\n\n\n/**\n * optional bool deleteBeforeReplace = 21;\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.getDeletebeforereplace = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 21, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setDeletebeforereplace = function(value) {\n return jspb.Message.setProto3BooleanField(this, 21, value);\n};\n\n\n/**\n * repeated string ignoreChanges = 22;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getIgnorechangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 22));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setIgnorechangesList = function(value) {\n return jspb.Message.setField(this, 22, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addIgnorechanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 22, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearIgnorechangesList = function() {\n return this.setIgnorechangesList([]);\n};\n\n\n/**\n * repeated string replaceOnChanges = 23;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructRequest.prototype.getReplaceonchangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 23));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setReplaceonchangesList = function(value) {\n return jspb.Message.setField(this, 23, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.addReplaceonchanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 23, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.clearReplaceonchangesList = function() {\n return this.setReplaceonchangesList([]);\n};\n\n\n/**\n * optional bool retainOnDelete = 24;\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.getRetainondelete = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 24, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setRetainondelete = function(value) {\n return jspb.Message.setProto3BooleanField(this, 24, value);\n};\n\n\n/**\n * optional bool accepts_output_values = 25;\n * @return {boolean}\n */\nproto.pulumirpc.ConstructRequest.prototype.getAcceptsOutputValues = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 25, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ConstructRequest} returns this\n */\nproto.pulumirpc.ConstructRequest.prototype.setAcceptsOutputValues = function(value) {\n return jspb.Message.setProto3BooleanField(this, 25, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConstructResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConstructResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConstructResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n state: (f = msg.getState()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n statedependenciesMap: (f = msg.getStatedependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.ConstructResponse.PropertyDependencies.toObject) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConstructResponse}\n */\nproto.pulumirpc.ConstructResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConstructResponse;\n return proto.pulumirpc.ConstructResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConstructResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConstructResponse}\n */\nproto.pulumirpc.ConstructResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setState(value);\n break;\n case 3:\n var value = msg.getStatedependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.ConstructResponse.PropertyDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.ConstructResponse.PropertyDependencies());\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConstructResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConstructResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConstructResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getState();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getStatedependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.ConstructResponse.PropertyDependencies.serializeBinaryToWriter);\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ConstructResponse.PropertyDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ConstructResponse.PropertyDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ConstructResponse.PropertyDependencies}\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ConstructResponse.PropertyDependencies;\n return proto.pulumirpc.ConstructResponse.PropertyDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ConstructResponse.PropertyDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ConstructResponse.PropertyDependencies}\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ConstructResponse.PropertyDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ConstructResponse.PropertyDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ConstructResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ConstructResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ConstructResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.ConstructResponse.PropertyDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.ConstructResponse.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ConstructResponse} returns this\n */\nproto.pulumirpc.ConstructResponse.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct state = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ConstructResponse.prototype.getState = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ConstructResponse} returns this\n*/\nproto.pulumirpc.ConstructResponse.prototype.setState = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ConstructResponse} returns this\n */\nproto.pulumirpc.ConstructResponse.prototype.clearState = function() {\n return this.setState(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ConstructResponse.prototype.hasState = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * map stateDependencies = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ConstructResponse.prototype.getStatedependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n proto.pulumirpc.ConstructResponse.PropertyDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ConstructResponse} returns this\n */\nproto.pulumirpc.ConstructResponse.prototype.clearStatedependenciesMap = function() {\n this.getStatedependenciesMap().clear();\n return this;};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ErrorResourceInitFailed.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ErrorResourceInitFailed.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ErrorResourceInitFailed} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ErrorResourceInitFailed.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n reasonsList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n inputs: (f = msg.getInputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ErrorResourceInitFailed}\n */\nproto.pulumirpc.ErrorResourceInitFailed.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ErrorResourceInitFailed;\n return proto.pulumirpc.ErrorResourceInitFailed.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ErrorResourceInitFailed} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ErrorResourceInitFailed}\n */\nproto.pulumirpc.ErrorResourceInitFailed.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.addReasons(value);\n break;\n case 4:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setInputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ErrorResourceInitFailed.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ErrorResourceInitFailed} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ErrorResourceInitFailed.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getReasonsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 3,\n f\n );\n }\n f = message.getInputs();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n*/\nproto.pulumirpc.ErrorResourceInitFailed.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * repeated string reasons = 3;\n * @return {!Array}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.getReasonsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.setReasonsList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.addReasons = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.clearReasonsList = function() {\n return this.setReasonsList([]);\n};\n\n\n/**\n * optional google.protobuf.Struct inputs = 4;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.getInputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 4));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n*/\nproto.pulumirpc.ErrorResourceInitFailed.prototype.setInputs = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ErrorResourceInitFailed} returns this\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.clearInputs = function() {\n return this.setInputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ErrorResourceInitFailed.prototype.hasInputs = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetMappingRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetMappingRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetMappingRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n key: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n provider: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetMappingRequest}\n */\nproto.pulumirpc.GetMappingRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetMappingRequest;\n return proto.pulumirpc.GetMappingRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetMappingRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetMappingRequest}\n */\nproto.pulumirpc.GetMappingRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setKey(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetMappingRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetMappingRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetMappingRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getKey();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string key = 1;\n * @return {string}\n */\nproto.pulumirpc.GetMappingRequest.prototype.getKey = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetMappingRequest} returns this\n */\nproto.pulumirpc.GetMappingRequest.prototype.setKey = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string provider = 2;\n * @return {string}\n */\nproto.pulumirpc.GetMappingRequest.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetMappingRequest} returns this\n */\nproto.pulumirpc.GetMappingRequest.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetMappingResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetMappingResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetMappingResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n provider: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n data: msg.getData_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetMappingResponse}\n */\nproto.pulumirpc.GetMappingResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetMappingResponse;\n return proto.pulumirpc.GetMappingResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetMappingResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetMappingResponse}\n */\nproto.pulumirpc.GetMappingResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetMappingResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetMappingResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetMappingResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getData_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string provider = 1;\n * @return {string}\n */\nproto.pulumirpc.GetMappingResponse.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetMappingResponse} returns this\n */\nproto.pulumirpc.GetMappingResponse.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bytes data = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.pulumirpc.GetMappingResponse.prototype.getData = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes data = 2;\n * This is a type-conversion wrapper around `getData()`\n * @return {string}\n */\nproto.pulumirpc.GetMappingResponse.prototype.getData_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getData()));\n};\n\n\n/**\n * optional bytes data = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getData()`\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetMappingResponse.prototype.getData_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getData()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.pulumirpc.GetMappingResponse} returns this\n */\nproto.pulumirpc.GetMappingResponse.prototype.setData = function(value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetMappingsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetMappingsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetMappingsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n key: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetMappingsRequest}\n */\nproto.pulumirpc.GetMappingsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetMappingsRequest;\n return proto.pulumirpc.GetMappingsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetMappingsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetMappingsRequest}\n */\nproto.pulumirpc.GetMappingsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setKey(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetMappingsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetMappingsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetMappingsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getKey();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string key = 1;\n * @return {string}\n */\nproto.pulumirpc.GetMappingsRequest.prototype.getKey = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.GetMappingsRequest} returns this\n */\nproto.pulumirpc.GetMappingsRequest.prototype.setKey = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.GetMappingsResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.GetMappingsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.GetMappingsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.GetMappingsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n providersList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.GetMappingsResponse}\n */\nproto.pulumirpc.GetMappingsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.GetMappingsResponse;\n return proto.pulumirpc.GetMappingsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.GetMappingsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.GetMappingsResponse}\n */\nproto.pulumirpc.GetMappingsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addProviders(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.GetMappingsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.GetMappingsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.GetMappingsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.GetMappingsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProvidersList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string providers = 1;\n * @return {!Array}\n */\nproto.pulumirpc.GetMappingsResponse.prototype.getProvidersList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.GetMappingsResponse} returns this\n */\nproto.pulumirpc.GetMappingsResponse.prototype.setProvidersList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.GetMappingsResponse} returns this\n */\nproto.pulumirpc.GetMappingsResponse.prototype.addProviders = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.GetMappingsResponse} returns this\n */\nproto.pulumirpc.GetMappingsResponse.prototype.clearProvidersList = function() {\n return this.setProvidersList([]);\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// GENERATED CODE -- DO NOT EDIT!\n\n// Original file comments:\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n'use strict';\nvar grpc = require('@grpc/grpc-js');\nvar pulumi_resource_pb = require('./resource_pb.js');\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\nvar pulumi_provider_pb = require('./provider_pb.js');\nvar pulumi_alias_pb = require('./alias_pb.js');\nvar pulumi_source_pb = require('./source_pb.js');\nvar pulumi_callback_pb = require('./callback_pb.js');\n\nfunction serialize_google_protobuf_Empty(arg) {\n if (!(arg instanceof google_protobuf_empty_pb.Empty)) {\n throw new Error('Expected argument of type google.protobuf.Empty');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_google_protobuf_Empty(buffer_arg) {\n return google_protobuf_empty_pb.Empty.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_CallResponse(arg) {\n if (!(arg instanceof pulumi_provider_pb.CallResponse)) {\n throw new Error('Expected argument of type pulumirpc.CallResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_CallResponse(buffer_arg) {\n return pulumi_provider_pb.CallResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_Callback(arg) {\n if (!(arg instanceof pulumi_callback_pb.Callback)) {\n throw new Error('Expected argument of type pulumirpc.Callback');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_Callback(buffer_arg) {\n return pulumi_callback_pb.Callback.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_InvokeResponse(arg) {\n if (!(arg instanceof pulumi_provider_pb.InvokeResponse)) {\n throw new Error('Expected argument of type pulumirpc.InvokeResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_InvokeResponse(buffer_arg) {\n return pulumi_provider_pb.InvokeResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_ReadResourceRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.ReadResourceRequest)) {\n throw new Error('Expected argument of type pulumirpc.ReadResourceRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_ReadResourceRequest(buffer_arg) {\n return pulumi_resource_pb.ReadResourceRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_ReadResourceResponse(arg) {\n if (!(arg instanceof pulumi_resource_pb.ReadResourceResponse)) {\n throw new Error('Expected argument of type pulumirpc.ReadResourceResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_ReadResourceResponse(buffer_arg) {\n return pulumi_resource_pb.ReadResourceResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RegisterResourceOutputsRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.RegisterResourceOutputsRequest)) {\n throw new Error('Expected argument of type pulumirpc.RegisterResourceOutputsRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RegisterResourceOutputsRequest(buffer_arg) {\n return pulumi_resource_pb.RegisterResourceOutputsRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RegisterResourceRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.RegisterResourceRequest)) {\n throw new Error('Expected argument of type pulumirpc.RegisterResourceRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RegisterResourceRequest(buffer_arg) {\n return pulumi_resource_pb.RegisterResourceRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_RegisterResourceResponse(arg) {\n if (!(arg instanceof pulumi_resource_pb.RegisterResourceResponse)) {\n throw new Error('Expected argument of type pulumirpc.RegisterResourceResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_RegisterResourceResponse(buffer_arg) {\n return pulumi_resource_pb.RegisterResourceResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_ResourceCallRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.ResourceCallRequest)) {\n throw new Error('Expected argument of type pulumirpc.ResourceCallRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_ResourceCallRequest(buffer_arg) {\n return pulumi_resource_pb.ResourceCallRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_ResourceInvokeRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.ResourceInvokeRequest)) {\n throw new Error('Expected argument of type pulumirpc.ResourceInvokeRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_ResourceInvokeRequest(buffer_arg) {\n return pulumi_resource_pb.ResourceInvokeRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_SupportsFeatureRequest(arg) {\n if (!(arg instanceof pulumi_resource_pb.SupportsFeatureRequest)) {\n throw new Error('Expected argument of type pulumirpc.SupportsFeatureRequest');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_SupportsFeatureRequest(buffer_arg) {\n return pulumi_resource_pb.SupportsFeatureRequest.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\nfunction serialize_pulumirpc_SupportsFeatureResponse(arg) {\n if (!(arg instanceof pulumi_resource_pb.SupportsFeatureResponse)) {\n throw new Error('Expected argument of type pulumirpc.SupportsFeatureResponse');\n }\n return Buffer.from(arg.serializeBinary());\n}\n\nfunction deserialize_pulumirpc_SupportsFeatureResponse(buffer_arg) {\n return pulumi_resource_pb.SupportsFeatureResponse.deserializeBinary(new Uint8Array(buffer_arg));\n}\n\n\n// ResourceMonitor is the interface a source uses to talk back to the planning monitor orchestrating the execution.\nvar ResourceMonitorService = exports.ResourceMonitorService = {\n supportsFeature: {\n path: '/pulumirpc.ResourceMonitor/SupportsFeature',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.SupportsFeatureRequest,\n responseType: pulumi_resource_pb.SupportsFeatureResponse,\n requestSerialize: serialize_pulumirpc_SupportsFeatureRequest,\n requestDeserialize: deserialize_pulumirpc_SupportsFeatureRequest,\n responseSerialize: serialize_pulumirpc_SupportsFeatureResponse,\n responseDeserialize: deserialize_pulumirpc_SupportsFeatureResponse,\n },\n invoke: {\n path: '/pulumirpc.ResourceMonitor/Invoke',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.ResourceInvokeRequest,\n responseType: pulumi_provider_pb.InvokeResponse,\n requestSerialize: serialize_pulumirpc_ResourceInvokeRequest,\n requestDeserialize: deserialize_pulumirpc_ResourceInvokeRequest,\n responseSerialize: serialize_pulumirpc_InvokeResponse,\n responseDeserialize: deserialize_pulumirpc_InvokeResponse,\n },\n streamInvoke: {\n path: '/pulumirpc.ResourceMonitor/StreamInvoke',\n requestStream: false,\n responseStream: true,\n requestType: pulumi_resource_pb.ResourceInvokeRequest,\n responseType: pulumi_provider_pb.InvokeResponse,\n requestSerialize: serialize_pulumirpc_ResourceInvokeRequest,\n requestDeserialize: deserialize_pulumirpc_ResourceInvokeRequest,\n responseSerialize: serialize_pulumirpc_InvokeResponse,\n responseDeserialize: deserialize_pulumirpc_InvokeResponse,\n },\n call: {\n path: '/pulumirpc.ResourceMonitor/Call',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.ResourceCallRequest,\n responseType: pulumi_provider_pb.CallResponse,\n requestSerialize: serialize_pulumirpc_ResourceCallRequest,\n requestDeserialize: deserialize_pulumirpc_ResourceCallRequest,\n responseSerialize: serialize_pulumirpc_CallResponse,\n responseDeserialize: deserialize_pulumirpc_CallResponse,\n },\n readResource: {\n path: '/pulumirpc.ResourceMonitor/ReadResource',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.ReadResourceRequest,\n responseType: pulumi_resource_pb.ReadResourceResponse,\n requestSerialize: serialize_pulumirpc_ReadResourceRequest,\n requestDeserialize: deserialize_pulumirpc_ReadResourceRequest,\n responseSerialize: serialize_pulumirpc_ReadResourceResponse,\n responseDeserialize: deserialize_pulumirpc_ReadResourceResponse,\n },\n registerResource: {\n path: '/pulumirpc.ResourceMonitor/RegisterResource',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.RegisterResourceRequest,\n responseType: pulumi_resource_pb.RegisterResourceResponse,\n requestSerialize: serialize_pulumirpc_RegisterResourceRequest,\n requestDeserialize: deserialize_pulumirpc_RegisterResourceRequest,\n responseSerialize: serialize_pulumirpc_RegisterResourceResponse,\n responseDeserialize: deserialize_pulumirpc_RegisterResourceResponse,\n },\n registerResourceOutputs: {\n path: '/pulumirpc.ResourceMonitor/RegisterResourceOutputs',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_resource_pb.RegisterResourceOutputsRequest,\n responseType: google_protobuf_empty_pb.Empty,\n requestSerialize: serialize_pulumirpc_RegisterResourceOutputsRequest,\n requestDeserialize: deserialize_pulumirpc_RegisterResourceOutputsRequest,\n responseSerialize: serialize_google_protobuf_Empty,\n responseDeserialize: deserialize_google_protobuf_Empty,\n },\n registerStackTransform: {\n path: '/pulumirpc.ResourceMonitor/RegisterStackTransform',\n requestStream: false,\n responseStream: false,\n requestType: pulumi_callback_pb.Callback,\n responseType: google_protobuf_empty_pb.Empty,\n requestSerialize: serialize_pulumirpc_Callback,\n requestDeserialize: deserialize_pulumirpc_Callback,\n responseSerialize: serialize_google_protobuf_Empty,\n responseDeserialize: deserialize_google_protobuf_Empty,\n },\n};\n\nexports.ResourceMonitorClient = grpc.makeGenericClientConstructor(ResourceMonitorService);\n","// source: pulumi/resource.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\nvar google_protobuf_empty_pb = require('google-protobuf/google/protobuf/empty_pb.js');\ngoog.object.extend(proto, google_protobuf_empty_pb);\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\ngoog.object.extend(proto, google_protobuf_struct_pb);\nvar pulumi_provider_pb = require('./provider_pb.js');\ngoog.object.extend(proto, pulumi_provider_pb);\nvar pulumi_alias_pb = require('./alias_pb.js');\ngoog.object.extend(proto, pulumi_alias_pb);\nvar pulumi_source_pb = require('./source_pb.js');\ngoog.object.extend(proto, pulumi_source_pb);\nvar pulumi_callback_pb = require('./callback_pb.js');\ngoog.object.extend(proto, pulumi_callback_pb);\ngoog.exportSymbol('proto.pulumirpc.ReadResourceRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.ReadResourceResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceOutputsRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceRequest.CustomTimeouts', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceRequest.PropertyDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.RegisterResourceResponse.PropertyDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.ResourceCallRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.ResourceCallRequest.ArgumentDependencies', null, global);\ngoog.exportSymbol('proto.pulumirpc.ResourceInvokeRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.SupportsFeatureRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.SupportsFeatureResponse', null, global);\ngoog.exportSymbol('proto.pulumirpc.TransformRequest', null, global);\ngoog.exportSymbol('proto.pulumirpc.TransformResourceOptions', null, global);\ngoog.exportSymbol('proto.pulumirpc.TransformResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.SupportsFeatureRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.SupportsFeatureRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.SupportsFeatureRequest.displayName = 'proto.pulumirpc.SupportsFeatureRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.SupportsFeatureResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.SupportsFeatureResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.SupportsFeatureResponse.displayName = 'proto.pulumirpc.SupportsFeatureResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ReadResourceRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ReadResourceRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ReadResourceRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ReadResourceRequest.displayName = 'proto.pulumirpc.ReadResourceRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ReadResourceResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ReadResourceResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ReadResourceResponse.displayName = 'proto.pulumirpc.ReadResourceResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RegisterResourceRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceRequest.displayName = 'proto.pulumirpc.RegisterResourceRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceRequest.PropertyDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.displayName = 'proto.pulumirpc.RegisterResourceRequest.PropertyDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceRequest.CustomTimeouts, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.displayName = 'proto.pulumirpc.RegisterResourceRequest.CustomTimeouts';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RegisterResourceResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceResponse.displayName = 'proto.pulumirpc.RegisterResourceResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceResponse.PropertyDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.displayName = 'proto.pulumirpc.RegisterResourceResponse.PropertyDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.RegisterResourceOutputsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.RegisterResourceOutputsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.RegisterResourceOutputsRequest.displayName = 'proto.pulumirpc.RegisterResourceOutputsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ResourceInvokeRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ResourceInvokeRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ResourceInvokeRequest.displayName = 'proto.pulumirpc.ResourceInvokeRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ResourceCallRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.ResourceCallRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ResourceCallRequest.displayName = 'proto.pulumirpc.ResourceCallRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.ResourceCallRequest.ArgumentDependencies, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.displayName = 'proto.pulumirpc.ResourceCallRequest.ArgumentDependencies';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.TransformResourceOptions = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.pulumirpc.TransformResourceOptions.repeatedFields_, null);\n};\ngoog.inherits(proto.pulumirpc.TransformResourceOptions, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.TransformResourceOptions.displayName = 'proto.pulumirpc.TransformResourceOptions';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.TransformRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.TransformRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.TransformRequest.displayName = 'proto.pulumirpc.TransformRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.TransformResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.TransformResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.TransformResponse.displayName = 'proto.pulumirpc.TransformResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.SupportsFeatureRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.SupportsFeatureRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.SupportsFeatureRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SupportsFeatureRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.SupportsFeatureRequest}\n */\nproto.pulumirpc.SupportsFeatureRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.SupportsFeatureRequest;\n return proto.pulumirpc.SupportsFeatureRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.SupportsFeatureRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.SupportsFeatureRequest}\n */\nproto.pulumirpc.SupportsFeatureRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.SupportsFeatureRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.SupportsFeatureRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.SupportsFeatureRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SupportsFeatureRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.SupportsFeatureRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.SupportsFeatureRequest} returns this\n */\nproto.pulumirpc.SupportsFeatureRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.SupportsFeatureResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.SupportsFeatureResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.SupportsFeatureResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SupportsFeatureResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n hassupport: jspb.Message.getBooleanFieldWithDefault(msg, 1, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.SupportsFeatureResponse}\n */\nproto.pulumirpc.SupportsFeatureResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.SupportsFeatureResponse;\n return proto.pulumirpc.SupportsFeatureResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.SupportsFeatureResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.SupportsFeatureResponse}\n */\nproto.pulumirpc.SupportsFeatureResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setHassupport(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.SupportsFeatureResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.SupportsFeatureResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.SupportsFeatureResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SupportsFeatureResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getHassupport();\n if (f) {\n writer.writeBool(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional bool hasSupport = 1;\n * @return {boolean}\n */\nproto.pulumirpc.SupportsFeatureResponse.prototype.getHassupport = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.SupportsFeatureResponse} returns this\n */\nproto.pulumirpc.SupportsFeatureResponse.prototype.setHassupport = function(value) {\n return jspb.Message.setProto3BooleanField(this, 1, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ReadResourceRequest.repeatedFields_ = [6,10];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ReadResourceRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ReadResourceRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResourceRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n type: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n parent: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n dependenciesList: (f = jspb.Message.getRepeatedField(msg, 6)) == null ? undefined : f,\n provider: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n acceptsecrets: jspb.Message.getBooleanFieldWithDefault(msg, 9, false),\n additionalsecretoutputsList: (f = jspb.Message.getRepeatedField(msg, 10)) == null ? undefined : f,\n acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),\n plugindownloadurl: jspb.Message.getFieldWithDefault(msg, 13, \"\"),\n pluginchecksumsMap: (f = msg.getPluginchecksumsMap()) ? f.toObject(includeInstance, undefined) : [],\n sourceposition: (f = msg.getSourceposition()) && pulumi_source_pb.SourcePosition.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ReadResourceRequest}\n */\nproto.pulumirpc.ReadResourceRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ReadResourceRequest;\n return proto.pulumirpc.ReadResourceRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ReadResourceRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ReadResourceRequest}\n */\nproto.pulumirpc.ReadResourceRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setParent(value);\n break;\n case 5:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.addDependencies(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 9:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsecrets(value);\n break;\n case 10:\n var value = /** @type {string} */ (reader.readString());\n msg.addAdditionalsecretoutputs(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptresources(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.setPlugindownloadurl(value);\n break;\n case 15:\n var value = msg.getPluginchecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n case 14:\n var value = new pulumi_source_pb.SourcePosition;\n reader.readMessage(value,pulumi_source_pb.SourcePosition.deserializeBinaryFromReader);\n msg.setSourceposition(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ReadResourceRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ReadResourceRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResourceRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getParent();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getDependenciesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 6,\n f\n );\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getAcceptsecrets();\n if (f) {\n writer.writeBool(\n 9,\n f\n );\n }\n f = message.getAdditionalsecretoutputsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 10,\n f\n );\n }\n f = message.getAcceptresources();\n if (f) {\n writer.writeBool(\n 12,\n f\n );\n }\n f = message.getPlugindownloadurl();\n if (f.length > 0) {\n writer.writeString(\n 13,\n f\n );\n }\n f = message.getPluginchecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(15, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n f = message.getSourceposition();\n if (f != null) {\n writer.writeMessage(\n 14,\n f,\n pulumi_source_pb.SourcePosition.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string type = 2;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string name = 3;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string parent = 4;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getParent = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setParent = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 5;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n*/\nproto.pulumirpc.ReadResourceRequest.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * repeated string dependencies = 6;\n * @return {!Array}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getDependenciesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setDependenciesList = function(value) {\n return jspb.Message.setField(this, 6, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.addDependencies = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 6, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.clearDependenciesList = function() {\n return this.setDependenciesList([]);\n};\n\n\n/**\n * optional string provider = 7;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string version = 8;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional bool acceptSecrets = 9;\n * @return {boolean}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getAcceptsecrets = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 9, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setAcceptsecrets = function(value) {\n return jspb.Message.setProto3BooleanField(this, 9, value);\n};\n\n\n/**\n * repeated string additionalSecretOutputs = 10;\n * @return {!Array}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getAdditionalsecretoutputsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 10));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setAdditionalsecretoutputsList = function(value) {\n return jspb.Message.setField(this, 10, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.addAdditionalsecretoutputs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 10, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.clearAdditionalsecretoutputsList = function() {\n return this.setAdditionalsecretoutputsList([]);\n};\n\n\n/**\n * optional bool acceptResources = 12;\n * @return {boolean}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getAcceptresources = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setAcceptresources = function(value) {\n return jspb.Message.setProto3BooleanField(this, 12, value);\n};\n\n\n/**\n * optional string pluginDownloadURL = 13;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getPlugindownloadurl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.setPlugindownloadurl = function(value) {\n return jspb.Message.setProto3StringField(this, 13, value);\n};\n\n\n/**\n * map pluginChecksums = 15;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getPluginchecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 15, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.clearPluginchecksumsMap = function() {\n this.getPluginchecksumsMap().clear();\n return this;};\n\n\n/**\n * optional SourcePosition sourcePosition = 14;\n * @return {?proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.getSourceposition = function() {\n return /** @type{?proto.pulumirpc.SourcePosition} */ (\n jspb.Message.getWrapperField(this, pulumi_source_pb.SourcePosition, 14));\n};\n\n\n/**\n * @param {?proto.pulumirpc.SourcePosition|undefined} value\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n*/\nproto.pulumirpc.ReadResourceRequest.prototype.setSourceposition = function(value) {\n return jspb.Message.setWrapperField(this, 14, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadResourceRequest} returns this\n */\nproto.pulumirpc.ReadResourceRequest.prototype.clearSourceposition = function() {\n return this.setSourceposition(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadResourceRequest.prototype.hasSourceposition = function() {\n return jspb.Message.getField(this, 14) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ReadResourceResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ReadResourceResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ReadResourceResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResourceResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ReadResourceResponse}\n */\nproto.pulumirpc.ReadResourceResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ReadResourceResponse;\n return proto.pulumirpc.ReadResourceResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ReadResourceResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ReadResourceResponse}\n */\nproto.pulumirpc.ReadResourceResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ReadResourceResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ReadResourceResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ReadResourceResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ReadResourceResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.ReadResourceResponse.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ReadResourceResponse} returns this\n */\nproto.pulumirpc.ReadResourceResponse.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ReadResourceResponse.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ReadResourceResponse} returns this\n*/\nproto.pulumirpc.ReadResourceResponse.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ReadResourceResponse} returns this\n */\nproto.pulumirpc.ReadResourceResponse.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ReadResourceResponse.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RegisterResourceRequest.repeatedFields_ = [7,12,14,15,23,26,31];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n type: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n parent: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n custom: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n object: (f = msg.getObject()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n protect: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),\n dependenciesList: (f = jspb.Message.getRepeatedField(msg, 7)) == null ? undefined : f,\n provider: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n propertydependenciesMap: (f = msg.getPropertydependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.toObject) : [],\n deletebeforereplace: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),\n version: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n ignorechangesList: (f = jspb.Message.getRepeatedField(msg, 12)) == null ? undefined : f,\n acceptsecrets: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),\n additionalsecretoutputsList: (f = jspb.Message.getRepeatedField(msg, 14)) == null ? undefined : f,\n aliasurnsList: (f = jspb.Message.getRepeatedField(msg, 15)) == null ? undefined : f,\n importid: jspb.Message.getFieldWithDefault(msg, 16, \"\"),\n customtimeouts: (f = msg.getCustomtimeouts()) && proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.toObject(includeInstance, f),\n deletebeforereplacedefined: jspb.Message.getBooleanFieldWithDefault(msg, 18, false),\n supportspartialvalues: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),\n remote: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),\n acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 21, false),\n providersMap: (f = msg.getProvidersMap()) ? f.toObject(includeInstance, undefined) : [],\n replaceonchangesList: (f = jspb.Message.getRepeatedField(msg, 23)) == null ? undefined : f,\n plugindownloadurl: jspb.Message.getFieldWithDefault(msg, 24, \"\"),\n pluginchecksumsMap: (f = msg.getPluginchecksumsMap()) ? f.toObject(includeInstance, undefined) : [],\n retainondelete: jspb.Message.getBooleanFieldWithDefault(msg, 25, false),\n aliasesList: jspb.Message.toObjectList(msg.getAliasesList(),\n pulumi_alias_pb.Alias.toObject, includeInstance),\n deletedwith: jspb.Message.getFieldWithDefault(msg, 27, \"\"),\n aliasspecs: jspb.Message.getBooleanFieldWithDefault(msg, 28, false),\n sourceposition: (f = msg.getSourceposition()) && pulumi_source_pb.SourcePosition.toObject(includeInstance, f),\n transformsList: jspb.Message.toObjectList(msg.getTransformsList(),\n pulumi_callback_pb.Callback.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceRequest}\n */\nproto.pulumirpc.RegisterResourceRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceRequest;\n return proto.pulumirpc.RegisterResourceRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceRequest}\n */\nproto.pulumirpc.RegisterResourceRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setParent(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setCustom(value);\n break;\n case 5:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setObject(value);\n break;\n case 6:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setProtect(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.addDependencies(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 9:\n var value = msg.getPropertydependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.RegisterResourceRequest.PropertyDependencies());\n });\n break;\n case 10:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDeletebeforereplace(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 12:\n var value = /** @type {string} */ (reader.readString());\n msg.addIgnorechanges(value);\n break;\n case 13:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptsecrets(value);\n break;\n case 14:\n var value = /** @type {string} */ (reader.readString());\n msg.addAdditionalsecretoutputs(value);\n break;\n case 15:\n var value = /** @type {string} */ (reader.readString());\n msg.addAliasurns(value);\n break;\n case 16:\n var value = /** @type {string} */ (reader.readString());\n msg.setImportid(value);\n break;\n case 17:\n var value = new proto.pulumirpc.RegisterResourceRequest.CustomTimeouts;\n reader.readMessage(value,proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.deserializeBinaryFromReader);\n msg.setCustomtimeouts(value);\n break;\n case 18:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDeletebeforereplacedefined(value);\n break;\n case 19:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSupportspartialvalues(value);\n break;\n case 20:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setRemote(value);\n break;\n case 21:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptresources(value);\n break;\n case 22:\n var value = msg.getProvidersMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 23:\n var value = /** @type {string} */ (reader.readString());\n msg.addReplaceonchanges(value);\n break;\n case 24:\n var value = /** @type {string} */ (reader.readString());\n msg.setPlugindownloadurl(value);\n break;\n case 30:\n var value = msg.getPluginchecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n case 25:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setRetainondelete(value);\n break;\n case 26:\n var value = new pulumi_alias_pb.Alias;\n reader.readMessage(value,pulumi_alias_pb.Alias.deserializeBinaryFromReader);\n msg.addAliases(value);\n break;\n case 27:\n var value = /** @type {string} */ (reader.readString());\n msg.setDeletedwith(value);\n break;\n case 28:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAliasspecs(value);\n break;\n case 29:\n var value = new pulumi_source_pb.SourcePosition;\n reader.readMessage(value,pulumi_source_pb.SourcePosition.deserializeBinaryFromReader);\n msg.setSourceposition(value);\n break;\n case 31:\n var value = new pulumi_callback_pb.Callback;\n reader.readMessage(value,pulumi_callback_pb.Callback.deserializeBinaryFromReader);\n msg.addTransforms(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getParent();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getCustom();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getObject();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getProtect();\n if (f) {\n writer.writeBool(\n 6,\n f\n );\n }\n f = message.getDependenciesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 7,\n f\n );\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getPropertydependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(9, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.serializeBinaryToWriter);\n }\n f = message.getDeletebeforereplace();\n if (f) {\n writer.writeBool(\n 10,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 11,\n f\n );\n }\n f = message.getIgnorechangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 12,\n f\n );\n }\n f = message.getAcceptsecrets();\n if (f) {\n writer.writeBool(\n 13,\n f\n );\n }\n f = message.getAdditionalsecretoutputsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 14,\n f\n );\n }\n f = message.getAliasurnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 15,\n f\n );\n }\n f = message.getImportid();\n if (f.length > 0) {\n writer.writeString(\n 16,\n f\n );\n }\n f = message.getCustomtimeouts();\n if (f != null) {\n writer.writeMessage(\n 17,\n f,\n proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.serializeBinaryToWriter\n );\n }\n f = message.getDeletebeforereplacedefined();\n if (f) {\n writer.writeBool(\n 18,\n f\n );\n }\n f = message.getSupportspartialvalues();\n if (f) {\n writer.writeBool(\n 19,\n f\n );\n }\n f = message.getRemote();\n if (f) {\n writer.writeBool(\n 20,\n f\n );\n }\n f = message.getAcceptresources();\n if (f) {\n writer.writeBool(\n 21,\n f\n );\n }\n f = message.getProvidersMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(22, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getReplaceonchangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 23,\n f\n );\n }\n f = message.getPlugindownloadurl();\n if (f.length > 0) {\n writer.writeString(\n 24,\n f\n );\n }\n f = message.getPluginchecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(30, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n f = message.getRetainondelete();\n if (f) {\n writer.writeBool(\n 25,\n f\n );\n }\n f = message.getAliasesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 26,\n f,\n pulumi_alias_pb.Alias.serializeBinaryToWriter\n );\n }\n f = message.getDeletedwith();\n if (f.length > 0) {\n writer.writeString(\n 27,\n f\n );\n }\n f = message.getAliasspecs();\n if (f) {\n writer.writeBool(\n 28,\n f\n );\n }\n f = message.getSourceposition();\n if (f != null) {\n writer.writeMessage(\n 29,\n f,\n pulumi_source_pb.SourcePosition.serializeBinaryToWriter\n );\n }\n f = message.getTransformsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 31,\n f,\n pulumi_callback_pb.Callback.serializeBinaryToWriter\n );\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies}\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceRequest.PropertyDependencies;\n return proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies}\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceRequest.PropertyDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.PropertyDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.toObject = function(includeInstance, msg) {\n var f, obj = {\n create: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n update: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n pb_delete: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceRequest.CustomTimeouts;\n return proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setCreate(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUpdate(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setDelete(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCreate();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUpdate();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getDelete();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string create = 1;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.getCreate = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.setCreate = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string update = 2;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.getUpdate = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.setUpdate = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string delete = 3;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.getDelete = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.CustomTimeouts.prototype.setDelete = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string type = 1;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string parent = 3;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getParent = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setParent = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional bool custom = 4;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getCustom = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setCustom = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Struct object = 5;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getObject = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceRequest.prototype.setObject = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearObject = function() {\n return this.setObject(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.hasObject = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional bool protect = 6;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getProtect = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setProtect = function(value) {\n return jspb.Message.setProto3BooleanField(this, 6, value);\n};\n\n\n/**\n * repeated string dependencies = 7;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getDependenciesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 7));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setDependenciesList = function(value) {\n return jspb.Message.setField(this, 7, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addDependencies = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 7, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearDependenciesList = function() {\n return this.setDependenciesList([]);\n};\n\n\n/**\n * optional string provider = 8;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * map propertyDependencies = 9;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getPropertydependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 9, opt_noLazyCreate,\n proto.pulumirpc.RegisterResourceRequest.PropertyDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearPropertydependenciesMap = function() {\n this.getPropertydependenciesMap().clear();\n return this;};\n\n\n/**\n * optional bool deleteBeforeReplace = 10;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getDeletebeforereplace = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setDeletebeforereplace = function(value) {\n return jspb.Message.setProto3BooleanField(this, 10, value);\n};\n\n\n/**\n * optional string version = 11;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * repeated string ignoreChanges = 12;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getIgnorechangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 12));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setIgnorechangesList = function(value) {\n return jspb.Message.setField(this, 12, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addIgnorechanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 12, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearIgnorechangesList = function() {\n return this.setIgnorechangesList([]);\n};\n\n\n/**\n * optional bool acceptSecrets = 13;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAcceptsecrets = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 13, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setAcceptsecrets = function(value) {\n return jspb.Message.setProto3BooleanField(this, 13, value);\n};\n\n\n/**\n * repeated string additionalSecretOutputs = 14;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAdditionalsecretoutputsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 14));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setAdditionalsecretoutputsList = function(value) {\n return jspb.Message.setField(this, 14, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addAdditionalsecretoutputs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 14, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearAdditionalsecretoutputsList = function() {\n return this.setAdditionalsecretoutputsList([]);\n};\n\n\n/**\n * repeated string aliasURNs = 15;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAliasurnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 15));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setAliasurnsList = function(value) {\n return jspb.Message.setField(this, 15, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addAliasurns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 15, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearAliasurnsList = function() {\n return this.setAliasurnsList([]);\n};\n\n\n/**\n * optional string importId = 16;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getImportid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 16, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setImportid = function(value) {\n return jspb.Message.setProto3StringField(this, 16, value);\n};\n\n\n/**\n * optional CustomTimeouts customTimeouts = 17;\n * @return {?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getCustomtimeouts = function() {\n return /** @type{?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.RegisterResourceRequest.CustomTimeouts, 17));\n};\n\n\n/**\n * @param {?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts|undefined} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceRequest.prototype.setCustomtimeouts = function(value) {\n return jspb.Message.setWrapperField(this, 17, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearCustomtimeouts = function() {\n return this.setCustomtimeouts(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.hasCustomtimeouts = function() {\n return jspb.Message.getField(this, 17) != null;\n};\n\n\n/**\n * optional bool deleteBeforeReplaceDefined = 18;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getDeletebeforereplacedefined = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 18, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setDeletebeforereplacedefined = function(value) {\n return jspb.Message.setProto3BooleanField(this, 18, value);\n};\n\n\n/**\n * optional bool supportsPartialValues = 19;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getSupportspartialvalues = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setSupportspartialvalues = function(value) {\n return jspb.Message.setProto3BooleanField(this, 19, value);\n};\n\n\n/**\n * optional bool remote = 20;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getRemote = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setRemote = function(value) {\n return jspb.Message.setProto3BooleanField(this, 20, value);\n};\n\n\n/**\n * optional bool acceptResources = 21;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAcceptresources = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 21, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setAcceptresources = function(value) {\n return jspb.Message.setProto3BooleanField(this, 21, value);\n};\n\n\n/**\n * map providers = 22;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getProvidersMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 22, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearProvidersMap = function() {\n this.getProvidersMap().clear();\n return this;};\n\n\n/**\n * repeated string replaceOnChanges = 23;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getReplaceonchangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 23));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setReplaceonchangesList = function(value) {\n return jspb.Message.setField(this, 23, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addReplaceonchanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 23, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearReplaceonchangesList = function() {\n return this.setReplaceonchangesList([]);\n};\n\n\n/**\n * optional string pluginDownloadURL = 24;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getPlugindownloadurl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 24, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setPlugindownloadurl = function(value) {\n return jspb.Message.setProto3StringField(this, 24, value);\n};\n\n\n/**\n * map pluginChecksums = 30;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getPluginchecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 30, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearPluginchecksumsMap = function() {\n this.getPluginchecksumsMap().clear();\n return this;};\n\n\n/**\n * optional bool retainOnDelete = 25;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getRetainondelete = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 25, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setRetainondelete = function(value) {\n return jspb.Message.setProto3BooleanField(this, 25, value);\n};\n\n\n/**\n * repeated Alias aliases = 26;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAliasesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_alias_pb.Alias, 26));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceRequest.prototype.setAliasesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 26, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.Alias=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.Alias}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addAliases = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 26, opt_value, proto.pulumirpc.Alias, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearAliasesList = function() {\n return this.setAliasesList([]);\n};\n\n\n/**\n * optional string deletedWith = 27;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getDeletedwith = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 27, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setDeletedwith = function(value) {\n return jspb.Message.setProto3StringField(this, 27, value);\n};\n\n\n/**\n * optional bool aliasSpecs = 28;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getAliasspecs = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 28, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.setAliasspecs = function(value) {\n return jspb.Message.setProto3BooleanField(this, 28, value);\n};\n\n\n/**\n * optional SourcePosition sourcePosition = 29;\n * @return {?proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getSourceposition = function() {\n return /** @type{?proto.pulumirpc.SourcePosition} */ (\n jspb.Message.getWrapperField(this, pulumi_source_pb.SourcePosition, 29));\n};\n\n\n/**\n * @param {?proto.pulumirpc.SourcePosition|undefined} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceRequest.prototype.setSourceposition = function(value) {\n return jspb.Message.setWrapperField(this, 29, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearSourceposition = function() {\n return this.setSourceposition(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.hasSourceposition = function() {\n return jspb.Message.getField(this, 29) != null;\n};\n\n\n/**\n * repeated Callback transforms = 31;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.getTransformsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_callback_pb.Callback, 31));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceRequest.prototype.setTransformsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 31, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.Callback=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.Callback}\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.addTransforms = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 31, opt_value, proto.pulumirpc.Callback, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceRequest} returns this\n */\nproto.pulumirpc.RegisterResourceRequest.prototype.clearTransformsList = function() {\n return this.setTransformsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RegisterResourceResponse.repeatedFields_ = [5];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n id: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n object: (f = msg.getObject()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n stable: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n stablesList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n propertydependenciesMap: (f = msg.getPropertydependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.toObject) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceResponse}\n */\nproto.pulumirpc.RegisterResourceResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceResponse;\n return proto.pulumirpc.RegisterResourceResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceResponse}\n */\nproto.pulumirpc.RegisterResourceResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setId(value);\n break;\n case 3:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setObject(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setStable(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.addStables(value);\n break;\n case 6:\n var value = msg.getPropertydependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.RegisterResourceResponse.PropertyDependencies());\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getId();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getObject();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getStable();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getStablesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 5,\n f\n );\n }\n f = message.getPropertydependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.serializeBinaryToWriter);\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies}\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceResponse.PropertyDependencies;\n return proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies}\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceResponse.PropertyDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceResponse.PropertyDependencies} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.PropertyDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string id = 2;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getId = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.setId = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct object = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getObject = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n*/\nproto.pulumirpc.RegisterResourceResponse.prototype.setObject = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.clearObject = function() {\n return this.setObject(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.hasObject = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional bool stable = 4;\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getStable = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.setStable = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * repeated string stables = 5;\n * @return {!Array}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getStablesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.setStablesList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.addStables = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.clearStablesList = function() {\n return this.setStablesList([]);\n};\n\n\n/**\n * map propertyDependencies = 6;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.getPropertydependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 6, opt_noLazyCreate,\n proto.pulumirpc.RegisterResourceResponse.PropertyDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.RegisterResourceResponse} returns this\n */\nproto.pulumirpc.RegisterResourceResponse.prototype.clearPropertydependenciesMap = function() {\n this.getPropertydependenciesMap().clear();\n return this;};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.RegisterResourceOutputsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.RegisterResourceOutputsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n urn: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n outputs: (f = msg.getOutputs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.RegisterResourceOutputsRequest}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.RegisterResourceOutputsRequest;\n return proto.pulumirpc.RegisterResourceOutputsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.RegisterResourceOutputsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.RegisterResourceOutputsRequest}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrn(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setOutputs(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.RegisterResourceOutputsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.RegisterResourceOutputsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrn();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getOutputs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string urn = 1;\n * @return {string}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.getUrn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.RegisterResourceOutputsRequest} returns this\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.setUrn = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct outputs = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.getOutputs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.RegisterResourceOutputsRequest} returns this\n*/\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.setOutputs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.RegisterResourceOutputsRequest} returns this\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.clearOutputs = function() {\n return this.setOutputs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.RegisterResourceOutputsRequest.prototype.hasOutputs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ResourceInvokeRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ResourceInvokeRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceInvokeRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n tok: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n provider: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n acceptresources: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),\n plugindownloadurl: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n pluginchecksumsMap: (f = msg.getPluginchecksumsMap()) ? f.toObject(includeInstance, undefined) : [],\n sourceposition: (f = msg.getSourceposition()) && pulumi_source_pb.SourcePosition.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ResourceInvokeRequest}\n */\nproto.pulumirpc.ResourceInvokeRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ResourceInvokeRequest;\n return proto.pulumirpc.ResourceInvokeRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ResourceInvokeRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ResourceInvokeRequest}\n */\nproto.pulumirpc.ResourceInvokeRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTok(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setArgs(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 5:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setAcceptresources(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setPlugindownloadurl(value);\n break;\n case 8:\n var value = msg.getPluginchecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n case 7:\n var value = new pulumi_source_pb.SourcePosition;\n reader.readMessage(value,pulumi_source_pb.SourcePosition.deserializeBinaryFromReader);\n msg.setSourceposition(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ResourceInvokeRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ResourceInvokeRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceInvokeRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTok();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getArgs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getAcceptresources();\n if (f) {\n writer.writeBool(\n 5,\n f\n );\n }\n f = message.getPlugindownloadurl();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getPluginchecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(8, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n f = message.getSourceposition();\n if (f != null) {\n writer.writeMessage(\n 7,\n f,\n pulumi_source_pb.SourcePosition.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string tok = 1;\n * @return {string}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getTok = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.setTok = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct args = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getArgs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n*/\nproto.pulumirpc.ResourceInvokeRequest.prototype.setArgs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.clearArgs = function() {\n return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.hasArgs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional string provider = 3;\n * @return {string}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string version = 4;\n * @return {string}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional bool acceptResources = 5;\n * @return {boolean}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getAcceptresources = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.setAcceptresources = function(value) {\n return jspb.Message.setProto3BooleanField(this, 5, value);\n};\n\n\n/**\n * optional string pluginDownloadURL = 6;\n * @return {string}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getPlugindownloadurl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.setPlugindownloadurl = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * map pluginChecksums = 8;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getPluginchecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 8, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.clearPluginchecksumsMap = function() {\n this.getPluginchecksumsMap().clear();\n return this;};\n\n\n/**\n * optional SourcePosition sourcePosition = 7;\n * @return {?proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.getSourceposition = function() {\n return /** @type{?proto.pulumirpc.SourcePosition} */ (\n jspb.Message.getWrapperField(this, pulumi_source_pb.SourcePosition, 7));\n};\n\n\n/**\n * @param {?proto.pulumirpc.SourcePosition|undefined} value\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n*/\nproto.pulumirpc.ResourceInvokeRequest.prototype.setSourceposition = function(value) {\n return jspb.Message.setWrapperField(this, 7, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ResourceInvokeRequest} returns this\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.clearSourceposition = function() {\n return this.setSourceposition(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ResourceInvokeRequest.prototype.hasSourceposition = function() {\n return jspb.Message.getField(this, 7) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ResourceCallRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ResourceCallRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceCallRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n tok: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n argdependenciesMap: (f = msg.getArgdependenciesMap()) ? f.toObject(includeInstance, proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.toObject) : [],\n provider: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n version: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n plugindownloadurl: jspb.Message.getFieldWithDefault(msg, 13, \"\"),\n pluginchecksumsMap: (f = msg.getPluginchecksumsMap()) ? f.toObject(includeInstance, undefined) : [],\n sourceposition: (f = msg.getSourceposition()) && pulumi_source_pb.SourcePosition.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ResourceCallRequest}\n */\nproto.pulumirpc.ResourceCallRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ResourceCallRequest;\n return proto.pulumirpc.ResourceCallRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ResourceCallRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ResourceCallRequest}\n */\nproto.pulumirpc.ResourceCallRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTok(value);\n break;\n case 2:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setArgs(value);\n break;\n case 3:\n var value = msg.getArgdependenciesMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.deserializeBinaryFromReader, \"\", new proto.pulumirpc.ResourceCallRequest.ArgumentDependencies());\n });\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.setPlugindownloadurl(value);\n break;\n case 16:\n var value = msg.getPluginchecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n case 15:\n var value = new pulumi_source_pb.SourcePosition;\n reader.readMessage(value,pulumi_source_pb.SourcePosition.deserializeBinaryFromReader);\n msg.setSourceposition(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ResourceCallRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ResourceCallRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceCallRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTok();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getArgs();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getArgdependenciesMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.serializeBinaryToWriter);\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getPlugindownloadurl();\n if (f.length > 0) {\n writer.writeString(\n 13,\n f\n );\n }\n f = message.getPluginchecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(16, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n f = message.getSourceposition();\n if (f != null) {\n writer.writeMessage(\n 15,\n f,\n pulumi_source_pb.SourcePosition.serializeBinaryToWriter\n );\n }\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.toObject = function(includeInstance, msg) {\n var f, obj = {\n urnsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies}\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.ResourceCallRequest.ArgumentDependencies;\n return proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies}\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addUrns(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.ResourceCallRequest.ArgumentDependencies.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUrnsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string urns = 1;\n * @return {!Array}\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.getUrnsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.setUrnsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.addUrns = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.ResourceCallRequest.ArgumentDependencies} returns this\n */\nproto.pulumirpc.ResourceCallRequest.ArgumentDependencies.prototype.clearUrnsList = function() {\n return this.setUrnsList([]);\n};\n\n\n/**\n * optional string tok = 1;\n * @return {string}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getTok = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.setTok = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct args = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getArgs = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n*/\nproto.pulumirpc.ResourceCallRequest.prototype.setArgs = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.clearArgs = function() {\n return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.hasArgs = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * map argDependencies = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getArgdependenciesMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n proto.pulumirpc.ResourceCallRequest.ArgumentDependencies));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.clearArgdependenciesMap = function() {\n this.getArgdependenciesMap().clear();\n return this;};\n\n\n/**\n * optional string provider = 4;\n * @return {string}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string version = 5;\n * @return {string}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string pluginDownloadURL = 13;\n * @return {string}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getPlugindownloadurl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.setPlugindownloadurl = function(value) {\n return jspb.Message.setProto3StringField(this, 13, value);\n};\n\n\n/**\n * map pluginChecksums = 16;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getPluginchecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 16, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.clearPluginchecksumsMap = function() {\n this.getPluginchecksumsMap().clear();\n return this;};\n\n\n/**\n * optional SourcePosition sourcePosition = 15;\n * @return {?proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.getSourceposition = function() {\n return /** @type{?proto.pulumirpc.SourcePosition} */ (\n jspb.Message.getWrapperField(this, pulumi_source_pb.SourcePosition, 15));\n};\n\n\n/**\n * @param {?proto.pulumirpc.SourcePosition|undefined} value\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n*/\nproto.pulumirpc.ResourceCallRequest.prototype.setSourceposition = function(value) {\n return jspb.Message.setWrapperField(this, 15, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.ResourceCallRequest} returns this\n */\nproto.pulumirpc.ResourceCallRequest.prototype.clearSourceposition = function() {\n return this.setSourceposition(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.ResourceCallRequest.prototype.hasSourceposition = function() {\n return jspb.Message.getField(this, 15) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.pulumirpc.TransformResourceOptions.repeatedFields_ = [1,3,4,6,13];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.TransformResourceOptions.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.TransformResourceOptions} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformResourceOptions.toObject = function(includeInstance, msg) {\n var f, obj = {\n dependsOnList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f,\n protect: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n ignoreChangesList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n replaceOnChangesList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n version: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n aliasesList: jspb.Message.toObjectList(msg.getAliasesList(),\n pulumi_alias_pb.Alias.toObject, includeInstance),\n provider: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n customTimeouts: (f = msg.getCustomTimeouts()) && proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.toObject(includeInstance, f),\n pluginDownloadUrl: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n retainOnDelete: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),\n deletedWith: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n deleteBeforeReplace: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),\n additionalSecretOutputsList: (f = jspb.Message.getRepeatedField(msg, 13)) == null ? undefined : f,\n providersMap: (f = msg.getProvidersMap()) ? f.toObject(includeInstance, undefined) : [],\n pluginChecksumsMap: (f = msg.getPluginChecksumsMap()) ? f.toObject(includeInstance, undefined) : []\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.TransformResourceOptions}\n */\nproto.pulumirpc.TransformResourceOptions.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.TransformResourceOptions;\n return proto.pulumirpc.TransformResourceOptions.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.TransformResourceOptions} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.TransformResourceOptions}\n */\nproto.pulumirpc.TransformResourceOptions.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addDependsOn(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setProtect(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.addIgnoreChanges(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.addReplaceOnChanges(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setVersion(value);\n break;\n case 6:\n var value = new pulumi_alias_pb.Alias;\n reader.readMessage(value,pulumi_alias_pb.Alias.deserializeBinaryFromReader);\n msg.addAliases(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setProvider(value);\n break;\n case 8:\n var value = new proto.pulumirpc.RegisterResourceRequest.CustomTimeouts;\n reader.readMessage(value,proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.deserializeBinaryFromReader);\n msg.setCustomTimeouts(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setPluginDownloadUrl(value);\n break;\n case 10:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setRetainOnDelete(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.setDeletedWith(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setDeleteBeforeReplace(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.addAdditionalSecretOutputs(value);\n break;\n case 14:\n var value = msg.getProvidersMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n });\n break;\n case 15:\n var value = msg.getPluginChecksumsMap();\n reader.readMessage(value, function(message, reader) {\n jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readBytes, null, \"\", \"\");\n });\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.TransformResourceOptions.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.TransformResourceOptions} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformResourceOptions.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDependsOnList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n f = message.getProtect();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = message.getIgnoreChangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 3,\n f\n );\n }\n f = message.getReplaceOnChangesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 4,\n f\n );\n }\n f = message.getVersion();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getAliasesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 6,\n f,\n pulumi_alias_pb.Alias.serializeBinaryToWriter\n );\n }\n f = message.getProvider();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getCustomTimeouts();\n if (f != null) {\n writer.writeMessage(\n 8,\n f,\n proto.pulumirpc.RegisterResourceRequest.CustomTimeouts.serializeBinaryToWriter\n );\n }\n f = message.getPluginDownloadUrl();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getRetainOnDelete();\n if (f) {\n writer.writeBool(\n 10,\n f\n );\n }\n f = message.getDeletedWith();\n if (f.length > 0) {\n writer.writeString(\n 11,\n f\n );\n }\n f = /** @type {boolean} */ (jspb.Message.getField(message, 12));\n if (f != null) {\n writer.writeBool(\n 12,\n f\n );\n }\n f = message.getAdditionalSecretOutputsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 13,\n f\n );\n }\n f = message.getProvidersMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(14, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n }\n f = message.getPluginChecksumsMap(true);\n if (f && f.getLength() > 0) {\n f.serializeBinary(15, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeBytes);\n }\n};\n\n\n/**\n * repeated string depends_on = 1;\n * @return {!Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getDependsOnList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setDependsOnList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.addDependsOn = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearDependsOnList = function() {\n return this.setDependsOnList([]);\n};\n\n\n/**\n * optional bool protect = 2;\n * @return {boolean}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getProtect = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setProtect = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * repeated string ignore_changes = 3;\n * @return {!Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getIgnoreChangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setIgnoreChangesList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.addIgnoreChanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearIgnoreChangesList = function() {\n return this.setIgnoreChangesList([]);\n};\n\n\n/**\n * repeated string replace_on_changes = 4;\n * @return {!Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getReplaceOnChangesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setReplaceOnChangesList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.addReplaceOnChanges = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearReplaceOnChangesList = function() {\n return this.setReplaceOnChangesList([]);\n};\n\n\n/**\n * optional string version = 5;\n * @return {string}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getVersion = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setVersion = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * repeated Alias aliases = 6;\n * @return {!Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getAliasesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, pulumi_alias_pb.Alias, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n*/\nproto.pulumirpc.TransformResourceOptions.prototype.setAliasesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 6, value);\n};\n\n\n/**\n * @param {!proto.pulumirpc.Alias=} opt_value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.Alias}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.addAliases = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.pulumirpc.Alias, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearAliasesList = function() {\n return this.setAliasesList([]);\n};\n\n\n/**\n * optional string provider = 7;\n * @return {string}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getProvider = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setProvider = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional RegisterResourceRequest.CustomTimeouts custom_timeouts = 8;\n * @return {?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getCustomTimeouts = function() {\n return /** @type{?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.RegisterResourceRequest.CustomTimeouts, 8));\n};\n\n\n/**\n * @param {?proto.pulumirpc.RegisterResourceRequest.CustomTimeouts|undefined} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n*/\nproto.pulumirpc.TransformResourceOptions.prototype.setCustomTimeouts = function(value) {\n return jspb.Message.setWrapperField(this, 8, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearCustomTimeouts = function() {\n return this.setCustomTimeouts(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.hasCustomTimeouts = function() {\n return jspb.Message.getField(this, 8) != null;\n};\n\n\n/**\n * optional string plugin_download_url = 9;\n * @return {string}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getPluginDownloadUrl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setPluginDownloadUrl = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional bool retain_on_delete = 10;\n * @return {boolean}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getRetainOnDelete = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setRetainOnDelete = function(value) {\n return jspb.Message.setProto3BooleanField(this, 10, value);\n};\n\n\n/**\n * optional string deleted_with = 11;\n * @return {string}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getDeletedWith = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setDeletedWith = function(value) {\n return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * optional bool delete_before_replace = 12;\n * @return {boolean}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getDeleteBeforeReplace = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setDeleteBeforeReplace = function(value) {\n return jspb.Message.setField(this, 12, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearDeleteBeforeReplace = function() {\n return jspb.Message.setField(this, 12, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.hasDeleteBeforeReplace = function() {\n return jspb.Message.getField(this, 12) != null;\n};\n\n\n/**\n * repeated string additional_secret_outputs = 13;\n * @return {!Array}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getAdditionalSecretOutputsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 13));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.setAdditionalSecretOutputsList = function(value) {\n return jspb.Message.setField(this, 13, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.addAdditionalSecretOutputs = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 13, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearAdditionalSecretOutputsList = function() {\n return this.setAdditionalSecretOutputsList([]);\n};\n\n\n/**\n * map providers = 14;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getProvidersMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 14, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearProvidersMap = function() {\n this.getProvidersMap().clear();\n return this;};\n\n\n/**\n * map plugin_checksums = 15;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map}\n */\nproto.pulumirpc.TransformResourceOptions.prototype.getPluginChecksumsMap = function(opt_noLazyCreate) {\n return /** @type {!jspb.Map} */ (\n jspb.Message.getMapField(this, 15, opt_noLazyCreate,\n null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.pulumirpc.TransformResourceOptions} returns this\n */\nproto.pulumirpc.TransformResourceOptions.prototype.clearPluginChecksumsMap = function() {\n this.getPluginChecksumsMap().clear();\n return this;};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.TransformRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.TransformRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.TransformRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n type: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n custom: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n parent: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n options: (f = msg.getOptions()) && proto.pulumirpc.TransformResourceOptions.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.TransformRequest}\n */\nproto.pulumirpc.TransformRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.TransformRequest;\n return proto.pulumirpc.TransformRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.TransformRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.TransformRequest}\n */\nproto.pulumirpc.TransformRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setCustom(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setParent(value);\n break;\n case 5:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 6:\n var value = new proto.pulumirpc.TransformResourceOptions;\n reader.readMessage(value,proto.pulumirpc.TransformResourceOptions.deserializeBinaryFromReader);\n msg.setOptions(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.TransformRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.TransformRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.TransformRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getCustom();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getParent();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 5,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getOptions();\n if (f != null) {\n writer.writeMessage(\n 6,\n f,\n proto.pulumirpc.TransformResourceOptions.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional string type = 1;\n * @return {string}\n */\nproto.pulumirpc.TransformRequest.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.pulumirpc.TransformRequest.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional bool custom = 3;\n * @return {boolean}\n */\nproto.pulumirpc.TransformRequest.prototype.getCustom = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.setCustom = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional string parent = 4;\n * @return {string}\n */\nproto.pulumirpc.TransformRequest.prototype.getParent = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.setParent = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 5;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.TransformRequest.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n*/\nproto.pulumirpc.TransformRequest.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformRequest.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional TransformResourceOptions options = 6;\n * @return {?proto.pulumirpc.TransformResourceOptions}\n */\nproto.pulumirpc.TransformRequest.prototype.getOptions = function() {\n return /** @type{?proto.pulumirpc.TransformResourceOptions} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.TransformResourceOptions, 6));\n};\n\n\n/**\n * @param {?proto.pulumirpc.TransformResourceOptions|undefined} value\n * @return {!proto.pulumirpc.TransformRequest} returns this\n*/\nproto.pulumirpc.TransformRequest.prototype.setOptions = function(value) {\n return jspb.Message.setWrapperField(this, 6, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.TransformRequest} returns this\n */\nproto.pulumirpc.TransformRequest.prototype.clearOptions = function() {\n return this.setOptions(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformRequest.prototype.hasOptions = function() {\n return jspb.Message.getField(this, 6) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.TransformResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.TransformResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.TransformResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n properties: (f = msg.getProperties()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n options: (f = msg.getOptions()) && proto.pulumirpc.TransformResourceOptions.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.TransformResponse}\n */\nproto.pulumirpc.TransformResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.TransformResponse;\n return proto.pulumirpc.TransformResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.TransformResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.TransformResponse}\n */\nproto.pulumirpc.TransformResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new google_protobuf_struct_pb.Struct;\n reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n msg.setProperties(value);\n break;\n case 2:\n var value = new proto.pulumirpc.TransformResourceOptions;\n reader.readMessage(value,proto.pulumirpc.TransformResourceOptions.deserializeBinaryFromReader);\n msg.setOptions(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.TransformResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.TransformResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.TransformResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.TransformResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProperties();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n );\n }\n f = message.getOptions();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n proto.pulumirpc.TransformResourceOptions.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional google.protobuf.Struct properties = 1;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.pulumirpc.TransformResponse.prototype.getProperties = function() {\n return /** @type{?proto.google.protobuf.Struct} */ (\n jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 1));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.pulumirpc.TransformResponse} returns this\n*/\nproto.pulumirpc.TransformResponse.prototype.setProperties = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.TransformResponse} returns this\n */\nproto.pulumirpc.TransformResponse.prototype.clearProperties = function() {\n return this.setProperties(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformResponse.prototype.hasProperties = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional TransformResourceOptions options = 2;\n * @return {?proto.pulumirpc.TransformResourceOptions}\n */\nproto.pulumirpc.TransformResponse.prototype.getOptions = function() {\n return /** @type{?proto.pulumirpc.TransformResourceOptions} */ (\n jspb.Message.getWrapperField(this, proto.pulumirpc.TransformResourceOptions, 2));\n};\n\n\n/**\n * @param {?proto.pulumirpc.TransformResourceOptions|undefined} value\n * @return {!proto.pulumirpc.TransformResponse} returns this\n*/\nproto.pulumirpc.TransformResponse.prototype.setOptions = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.pulumirpc.TransformResponse} returns this\n */\nproto.pulumirpc.TransformResponse.prototype.clearOptions = function() {\n return this.setOptions(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.pulumirpc.TransformResponse.prototype.hasOptions = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","// source: pulumi/source.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar proto = { pulumirpc: { codegen: { }, testing: { } } }, global = proto;\n\ngoog.exportSymbol('proto.pulumirpc.SourcePosition', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.pulumirpc.SourcePosition = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.pulumirpc.SourcePosition, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.pulumirpc.SourcePosition.displayName = 'proto.pulumirpc.SourcePosition';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.pulumirpc.SourcePosition.prototype.toObject = function(opt_includeInstance) {\n return proto.pulumirpc.SourcePosition.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.pulumirpc.SourcePosition} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SourcePosition.toObject = function(includeInstance, msg) {\n var f, obj = {\n uri: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n line: jspb.Message.getFieldWithDefault(msg, 2, 0),\n column: jspb.Message.getFieldWithDefault(msg, 3, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.SourcePosition.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.pulumirpc.SourcePosition;\n return proto.pulumirpc.SourcePosition.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.pulumirpc.SourcePosition} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.pulumirpc.SourcePosition}\n */\nproto.pulumirpc.SourcePosition.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setUri(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setLine(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setColumn(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.pulumirpc.SourcePosition.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.pulumirpc.SourcePosition.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.pulumirpc.SourcePosition} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.pulumirpc.SourcePosition.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getUri();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getLine();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getColumn();\n if (f !== 0) {\n writer.writeInt32(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string uri = 1;\n * @return {string}\n */\nproto.pulumirpc.SourcePosition.prototype.getUri = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.pulumirpc.SourcePosition} returns this\n */\nproto.pulumirpc.SourcePosition.prototype.setUri = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional int32 line = 2;\n * @return {number}\n */\nproto.pulumirpc.SourcePosition.prototype.getLine = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.SourcePosition} returns this\n */\nproto.pulumirpc.SourcePosition.prototype.setLine = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int32 column = 3;\n * @return {number}\n */\nproto.pulumirpc.SourcePosition.prototype.getColumn = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.pulumirpc.SourcePosition} returns this\n */\nproto.pulumirpc.SourcePosition.prototype.setColumn = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\ngoog.object.extend(exports, proto.pulumirpc);\n","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst url = __importStar(require(\"url\"));\nconst errors_1 = require(\"./errors\");\nconst log = __importStar(require(\"./log\"));\nconst output_1 = require(\"./output\");\nconst resource_1 = require(\"./runtime/resource\");\nconst rpc_1 = require(\"./runtime/rpc\");\nconst settings_1 = require(\"./runtime/settings\");\nconst state_1 = require(\"./runtime/state\");\nconst utils = __importStar(require(\"./utils\"));\n/**\n * createUrn computes a URN from the combination of a resource name, resource type, optional parent,\n * optional project and optional stack.\n */\nfunction createUrn(name, type, parent, project, stack) {\n let parentPrefix;\n if (parent) {\n let parentUrn;\n if (Resource.isInstance(parent)) {\n parentUrn = parent.urn;\n }\n else {\n parentUrn = output_1.output(parent);\n }\n parentPrefix = parentUrn.apply((parentUrnString) => {\n const prefix = parentUrnString.substring(0, parentUrnString.lastIndexOf(\"::\")) + \"$\";\n if (prefix.endsWith(\"::pulumi:pulumi:Stack$\")) {\n // Don't prefix the stack type as a parent type\n return `urn:pulumi:${stack || settings_1.getStack()}::${project || settings_1.getProject()}::`;\n }\n return prefix;\n });\n }\n else {\n parentPrefix = output_1.output(`urn:pulumi:${stack || settings_1.getStack()}::${project || settings_1.getProject()}::`);\n }\n return output_1.interpolate `${parentPrefix}${type}::${name}`;\n}\nexports.createUrn = createUrn;\n// inheritedChildAlias computes the alias that should be applied to a child based on an alias applied to it's parent.\n// This may involve changing the name of the resource in cases where the resource has a named derived from the name of\n// the parent, and the parent name changed.\nfunction inheritedChildAlias(childName, parentName, parentAlias, childType) {\n // If the child name has the parent name as a prefix, then we make the assumption that it was\n // constructed from the convention of using `{name}-details` as the name of the child resource. To\n // ensure this is aliased correctly, we must then also replace the parent aliases name in the prefix of\n // the child resource name.\n //\n // For example:\n // * name: \"newapp-function\"\n // * opts.parent.__name: \"newapp\"\n // * parentAlias: \"urn:pulumi:stackname::projectname::awsx:ec2:Vpc::app\"\n // * parentAliasName: \"app\"\n // * aliasName: \"app-function\"\n // * childAlias: \"urn:pulumi:stackname::projectname::aws:s3/bucket:Bucket::app-function\"\n let aliasName = output_1.output(childName);\n if (childName.startsWith(parentName)) {\n aliasName = output_1.output(parentAlias).apply((parentAliasUrn) => {\n const parentAliasName = parentAliasUrn.substring(parentAliasUrn.lastIndexOf(\"::\") + 2);\n return parentAliasName + childName.substring(parentName.length);\n });\n }\n return createUrn(aliasName, childType, parentAlias);\n}\n// Extract the type and name parts of a URN\nfunction urnTypeAndName(urn) {\n const parts = urn.split(\"::\");\n const typeParts = parts[2].split(\"$\");\n return {\n name: parts[3],\n type: typeParts[typeParts.length - 1],\n };\n}\n// Make a copy of the aliases array, and add to it any implicit aliases inherited from its parent.\n// If there are N child aliases, and M parent aliases, there will be (M+1)*(N+1)-1 total aliases,\n// or, as calculated in the logic below, N+(M*(1+N)).\nfunction allAliases(childAliases, childName, childType, parent, parentName) {\n const aliases = [];\n for (const childAlias of childAliases) {\n aliases.push(collapseAliasToUrn(childAlias, childName, childType, parent));\n }\n for (const parentAlias of parent.__aliases || []) {\n // For each parent alias, add an alias that uses that base child name and the parent alias\n aliases.push(inheritedChildAlias(childName, parentName, parentAlias, childType));\n // Also add an alias for each child alias and the parent alias\n for (const childAlias of childAliases) {\n const inheritedAlias = collapseAliasToUrn(childAlias, childName, childType, parent).apply((childAliasURN) => {\n const { name: aliasedChildName, type: aliasedChildType } = urnTypeAndName(childAliasURN);\n return inheritedChildAlias(aliasedChildName, parentName, parentAlias, aliasedChildType);\n });\n aliases.push(inheritedAlias);\n }\n }\n return aliases;\n}\nexports.allAliases = allAliases;\n/**\n * Resource represents a class whose CRUD operations are implemented by a provider plugin.\n */\nclass Resource {\n /**\n * Creates and registers a new resource object. [t] is the fully qualified type token and\n * [name] is the \"name\" part to use in creating a stable and globally unique URN for the object.\n * dependsOn is an optional list of other resources that this resource depends on, controlling\n * the order in which we perform resource operations.\n *\n * @param t The type of the resource.\n * @param name The _unique_ name of the resource.\n * @param custom True to indicate that this is a custom resource, managed by a plugin.\n * @param props The arguments to use to populate the new resource.\n * @param opts A bag of options that control this resource's behavior.\n * @param remote True if this is a remote component resource.\n * @param dependency True if this is a synthetic resource used internally for dependency tracking.\n */\n constructor(t, name, custom, props = {}, opts = {}, remote = false, dependency = false) {\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiResource = true;\n this.__pulumiType = t;\n if (dependency) {\n this.__protect = false;\n this.__providers = {};\n return;\n }\n if (opts.parent && !Resource.isInstance(opts.parent)) {\n throw new Error(`Resource parent is not a valid Resource: ${opts.parent}`);\n }\n if (!t) {\n throw new errors_1.ResourceError(\"Missing resource type argument\", opts.parent);\n }\n if (!name) {\n throw new errors_1.ResourceError(\"Missing resource name argument (for URN creation)\", opts.parent);\n }\n // Before anything else - if there are transformations registered, invoke them in order to transform the properties and\n // options assigned to this resource.\n const parent = opts.parent || state_1.getStackResource();\n this.__transformations = [...(opts.transformations || []), ...((parent === null || parent === void 0 ? void 0 : parent.__transformations) || [])];\n for (const transformation of this.__transformations) {\n const tres = transformation({ resource: this, type: t, name, props, opts });\n if (tres) {\n if (tres.opts.parent !== opts.parent) {\n // This is currently not allowed because the parent tree is needed to establish what\n // transformation to apply in the first place, and to compute inheritance of other\n // resource options in the Resource constructor before transformations are run (so\n // modifying it here would only even partially take affect). It's theoretically\n // possible this restriction could be lifted in the future, but for now just\n // disallow re-parenting resources in transformations to be safe.\n throw new Error(\"Transformations cannot currently be used to change the `parent` of a resource.\");\n }\n props = tres.props;\n opts = tres.opts;\n }\n }\n this.__name = name;\n // Make a shallow clone of opts to ensure we don't modify the value passed in.\n opts = Object.assign({}, opts);\n // Check the parent type if one exists and fill in any default options.\n this.__providers = {};\n if (parent) {\n this.__parentResource = parent;\n this.__parentResource.__childResources = this.__parentResource.__childResources || new Set();\n this.__parentResource.__childResources.add(this);\n if (opts.protect === undefined) {\n opts.protect = parent.__protect;\n }\n this.__providers = parent.__providers;\n }\n // providers is found by combining (in ascending order of priority)\n // 1. provider\n // 2. self_providers\n // 3. opts.providers\n this.__providers = Object.assign(Object.assign(Object.assign({}, this.__providers), convertToProvidersMap(opts.providers)), convertToProvidersMap(opts.provider ? [opts.provider] : {}));\n const pkg = resource_1.pkgFromType(t);\n // provider is the first option that does not return none\n // 1. opts.provider\n // 2. a matching provider in opts.providers\n // 3. a matching provider inherited from opts.parent\n if ((custom || remote) && opts.provider === undefined) {\n const parentProvider = parent === null || parent === void 0 ? void 0 : parent.getProvider(t);\n if (pkg && pkg in this.__providers) {\n opts.provider = this.__providers[pkg];\n }\n else if (parentProvider) {\n opts.provider = parentProvider;\n }\n }\n // Custom and remote resources have a backing provider. If this is a custom or\n // remote resource and a provider has been specified that has the same package\n // as the resource's package, save it in `__prov`.\n // If the provider's package isn't the same as the resource's package, don't\n // save it in `__prov` because the user specified `provider: someProvider` as\n // shorthand for `providers: [someProvider]`, which is a provider intended for\n // the component's children and not for this resource itself.\n // `__prov` is passed along in `Call` gRPC requests for resource method calls\n // (when set) so that the call goes to the same provider as the resource.\n if ((custom || remote) && opts.provider) {\n if (pkg && pkg === opts.provider.getPackage()) {\n this.__prov = opts.provider;\n }\n }\n this.__protect = !!opts.protect;\n this.__version = opts.version;\n this.__pluginDownloadURL = opts.pluginDownloadURL;\n // Collapse any `Alias`es down to URNs. We have to wait until this point to do so because we do not know the\n // default `name` and `type` to apply until we are inside the resource constructor.\n this.__aliases = [];\n if (opts.aliases) {\n for (const alias of opts.aliases) {\n this.__aliases.push(collapseAliasToUrn(alias, name, t, parent));\n }\n }\n const sourcePosition = Resource.sourcePosition();\n if (opts.urn) {\n // This is a resource that already exists. Read its state from the engine.\n resource_1.getResource(this, parent, props, custom, opts.urn);\n }\n else if (opts.id) {\n // If this is a custom resource that already exists, read its state from the provider.\n if (!custom) {\n throw new errors_1.ResourceError(\"Cannot read an existing resource unless it has a custom provider\", opts.parent);\n }\n resource_1.readResource(this, parent, t, name, props, opts, sourcePosition);\n }\n else {\n // Kick off the resource registration. If we are actually performing a deployment, this\n // resource's properties will be resolved asynchronously after the operation completes, so\n // that dependent computations resolve normally. If we are just planning, on the other\n // hand, values will never resolve.\n resource_1.registerResource(this, parent, t, name, custom, remote, (urn) => new DependencyResource(urn), props, opts, sourcePosition);\n }\n }\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiResource\");\n }\n // sourcePosition returns the source position of the user code that instantiated this resource.\n //\n // This is somewhat brittle in that it expects a call stack of the form:\n // - Resource class constructor\n // - abstract Resource subclass constructor\n // - concrete Resource subclass constructor\n // - user code\n //\n // This stack reflects the expected class hierarchy of \"cloud resource / component resource < customresource/componentresource < resource\".\n //\n // For example, consider the AWS S3 Bucket resource. When user code instantiates a Bucket, the stack will look like\n // this:\n //\n // new Resource (/path/to/resource.ts:123:45)\n // new CustomResource (/path/to/resource.ts:678:90)\n // new Bucket (/path/to/bucket.ts:987:65)\n // (/path/to/index.ts:4:3)\n //\n // Because Node can only give us the stack trace as text, we parse out the source position using a regex that\n // matches traces of this form (see stackTraceRegExp above).\n static sourcePosition() {\n var _a;\n const stackObj = {};\n Error.captureStackTrace(stackObj, Resource.sourcePosition);\n // Parse out the source position of the user code. If any part of the match is missing, return undefined.\n const { file, line, col } = ((_a = Resource.sourcePositionRegExp.exec(stackObj.stack)) === null || _a === void 0 ? void 0 : _a.groups) || {};\n if (!file || !line || !col) {\n return undefined;\n }\n // Parse the line and column numbers. If either fails to parse, return undefined.\n //\n // Note: this really shouldn't happen given the regex; this is just a bit of defensive coding.\n const lineNum = parseInt(line, 10);\n const colNum = parseInt(col, 10);\n if (Number.isNaN(lineNum) || Number.isNaN(colNum)) {\n return undefined;\n }\n return {\n uri: url.pathToFileURL(file).toString(),\n line: lineNum,\n column: colNum,\n };\n }\n // getProvider fetches the provider for the given module member, if any.\n getProvider(moduleMember) {\n const pkg = resource_1.pkgFromType(moduleMember);\n if (pkg === undefined) {\n return undefined;\n }\n return this.__providers[pkg];\n }\n}\nexports.Resource = Resource;\n/**\n * A regexp for use with sourcePosition.\n */\nResource.sourcePositionRegExp = /Error:\\s*\\n\\s*at new Resource \\(.*\\)\\n\\s*at new \\S*Resource \\(.*\\)\\n(\\s*at new \\S* \\(.*\\)\\n)?[^(]*\\((?.*):(?[0-9]+):(?[0-9]+)\\)\\n/;\nfunction convertToProvidersMap(providers) {\n if (!providers) {\n return {};\n }\n if (!Array.isArray(providers)) {\n return providers;\n }\n const result = {};\n for (const provider of providers) {\n result[provider.getPackage()] = provider;\n }\n return result;\n}\nResource.doNotCapture = true;\n/**\n * Constant to represent the 'root stack' resource for a Pulumi application. The purpose of this is\n * solely to make it easy to write an [Alias] like so:\n *\n * `aliases: [{ parent: rootStackResource }]`.\n *\n * This indicates that the prior name for a resource was created based on it being parented directly\n * by the stack itself and no other resources. Note: this is equivalent to:\n *\n * `aliases: [{ parent: undefined }]`\n *\n * However, the former form is preferable as it is more self-descriptive, while the latter may look\n * a bit confusing and may incorrectly look like something that could be removed without changing\n * semantics.\n */\nexports.rootStackResource = undefined;\n// collapseAliasToUrn turns an Alias into a URN given a set of default data\nfunction collapseAliasToUrn(alias, defaultName, defaultType, defaultParent) {\n return output_1.output(alias).apply((a) => {\n if (typeof a === \"string\") {\n return output_1.output(a);\n }\n const name = a.hasOwnProperty(\"name\") ? a.name : defaultName;\n const type = a.hasOwnProperty(\"type\") ? a.type : defaultType;\n const parent = a.hasOwnProperty(\"parent\") ? a.parent : defaultParent;\n const project = a.hasOwnProperty(\"project\") ? a.project : settings_1.getProject();\n const stack = a.hasOwnProperty(\"stack\") ? a.stack : settings_1.getStack();\n if (name === undefined) {\n throw new Error(\"No valid 'name' passed in for alias.\");\n }\n if (type === undefined) {\n throw new Error(\"No valid 'type' passed in for alias.\");\n }\n return createUrn(name, type, parent, project, stack);\n });\n}\n/**\n * CustomResource is a resource whose create, read, update, and delete (CRUD) operations are managed\n * by performing external operations on some physical entity. The engine understands how to diff\n * and perform partial updates of them, and these CRUD operations are implemented in a dynamically\n * loaded plugin for the defining package.\n */\nclass CustomResource extends Resource {\n /**\n * Creates and registers a new managed resource. t is the fully qualified type token and name\n * is the \"name\" part to use in creating a stable and globally unique URN for the object.\n * dependsOn is an optional list of other resources that this resource depends on, controlling\n * the order in which we perform resource operations. Creating an instance does not necessarily\n * perform a create on the physical entity which it represents, and instead, this is dependent\n * upon the diffing of the new goal state compared to the current known resource state.\n *\n * @param t The type of the resource.\n * @param name The _unique_ name of the resource.\n * @param props The arguments to use to populate the new resource.\n * @param opts A bag of options that control this resource's behavior.\n * @param dependency True if this is a synthetic resource used internally for dependency tracking.\n */\n constructor(t, name, props, opts = {}, dependency = false) {\n if (opts.providers) {\n throw new errors_1.ResourceError(\"Do not supply 'providers' option to a CustomResource. Did you mean 'provider' instead?\", opts.parent);\n }\n super(t, name, true, props, opts, false, dependency);\n this.__pulumiCustomResource = true;\n }\n /**\n * Returns true if the given object is an instance of CustomResource. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiCustomResource\");\n }\n}\nexports.CustomResource = CustomResource;\nCustomResource.doNotCapture = true;\n/**\n * ProviderResource is a resource that implements CRUD operations for other custom resources. These resources are\n * managed similarly to other resources, including the usual diffing and update semantics.\n */\nclass ProviderResource extends CustomResource {\n /**\n * Creates and registers a new provider resource for a particular package.\n *\n * @param pkg The package associated with this provider.\n * @param name The _unique_ name of the provider.\n * @param props The configuration to use for this provider.\n * @param opts A bag of options that control this provider's behavior.\n * @param dependency True if this is a synthetic resource used internally for dependency tracking.\n */\n constructor(pkg, name, props, opts = {}, dependency = false) {\n super(`pulumi:providers:${pkg}`, name, props, opts, dependency);\n this.pkg = pkg;\n }\n static register(provider) {\n return __awaiter(this, void 0, void 0, function* () {\n if (provider === undefined) {\n return undefined;\n }\n if (!provider.__registrationId) {\n const providerURN = yield provider.urn.promise();\n const providerID = (yield provider.id.promise()) || rpc_1.unknownValue;\n provider.__registrationId = `${providerURN}::${providerID}`;\n }\n return provider.__registrationId;\n });\n }\n /** @internal */\n getPackage() {\n return this.pkg;\n }\n}\nexports.ProviderResource = ProviderResource;\n/**\n * ComponentResource is a resource that aggregates one or more other child resources into a higher\n * level abstraction. The component resource itself is a resource, but does not require custom CRUD\n * operations for provisioning.\n */\nclass ComponentResource extends Resource {\n /**\n * Creates and registers a new component resource. [type] is the fully qualified type token and\n * [name] is the \"name\" part to use in creating a stable and globally unique URN for the object.\n * [opts.parent] is the optional parent for this component, and [opts.dependsOn] is an optional\n * list of other resources that this resource depends on, controlling the order in which we\n * perform resource operations.\n *\n * @param t The type of the resource.\n * @param name The _unique_ name of the resource.\n * @param args Information passed to [initialize] method.\n * @param opts A bag of options that control this resource's behavior.\n * @param remote True if this is a remote component resource.\n */\n constructor(type, name, args = {}, opts = {}, remote = false) {\n // Explicitly ignore the props passed in. We allow them for back compat reasons. However,\n // we explicitly do not want to pass them along to the engine. The ComponentResource acts\n // only as a container for other resources. Another way to think about this is that a normal\n // 'custom resource' corresponds to real piece of cloud infrastructure. So, when it changes\n // in some way, the cloud resource needs to be updated (and vice versa). That is not true\n // for a component resource. The component is just used for organizational purposes and does\n // not correspond to a real piece of cloud infrastructure. As such, changes to it *itself*\n // do not have any effect on the cloud side of things at all.\n super(type, name, /*custom:*/ false, /*props:*/ remote || (opts === null || opts === void 0 ? void 0 : opts.urn) ? args : {}, opts, remote);\n /**\n * A private field to help with RTTI that works in SxS scenarios.\n * @internal\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__pulumiComponentResource = true;\n /** @internal */\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n this.__registered = false;\n this.__remote = remote;\n this.__registered = remote || !!(opts === null || opts === void 0 ? void 0 : opts.urn);\n this.__data = remote || (opts === null || opts === void 0 ? void 0 : opts.urn) ? Promise.resolve({}) : this.initializeAndRegisterOutputs(args);\n }\n /**\n * Returns true if the given object is an instance of CustomResource. This is designed to work even when\n * multiple copies of the Pulumi SDK have been loaded into the same process.\n */\n static isInstance(obj) {\n return utils.isInstance(obj, \"__pulumiComponentResource\");\n }\n /** @internal */\n initializeAndRegisterOutputs(args) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = yield this.initialize(args);\n this.registerOutputs();\n return data;\n });\n }\n /**\n * Can be overridden by a subclass to asynchronously initialize data for this Component\n * automatically when constructed. The data will be available immediately for subclass\n * constructors to use. To access the data use `.getData`.\n */\n initialize(args) {\n return __awaiter(this, void 0, void 0, function* () {\n return undefined;\n });\n }\n /**\n * Retrieves the data produces by [initialize]. The data is immediately available in a\n * derived class's constructor after the `super(...)` call to `ComponentResource`.\n */\n getData() {\n return this.__data;\n }\n /**\n * registerOutputs registers synthetic outputs that a component has initialized, usually by\n * allocating other child sub-resources and propagating their resulting property values.\n *\n * ComponentResources can call this at the end of their constructor to indicate that they are\n * done creating child resources. This is not strictly necessary as this will automatically be\n * called after the `initialize` method completes.\n */\n registerOutputs(outputs) {\n if (this.__registered) {\n return;\n }\n this.__registered = true;\n resource_1.registerResourceOutputs(this, outputs || {});\n }\n}\nexports.ComponentResource = ComponentResource;\nComponentResource.doNotCapture = true;\nComponentResource.prototype.registerOutputs.doNotCapture = true;\nComponentResource.prototype.initialize.doNotCapture = true;\nComponentResource.prototype.initializeAndRegisterOutputs.doNotCapture = true;\n/** @internal */\nexports.testingOptions = {\n isDryRun: false,\n};\nfunction mergeOptions(opts1, opts2) {\n const dest = Object.assign({}, opts1);\n const source = Object.assign({}, opts2);\n // Ensure provider/providers are all expanded into the `ProviderResource[]` form.\n // This makes merging simple.\n expandProviders(dest);\n expandProviders(source);\n // iterate specifically over the supplied properties in [source]. Note: there may not be an\n // corresponding value in [dest].\n for (const key of Object.keys(source)) {\n const destVal = dest[key];\n const sourceVal = source[key];\n // For 'dependsOn' we might have singleton resources in both options bags. We\n // want to make sure we combine them into a collection.\n if (key === \"dependsOn\") {\n dest[key] = merge(destVal, sourceVal, /*alwaysCreateArray:*/ true);\n continue;\n }\n dest[key] = merge(destVal, sourceVal, /*alwaysCreateArray:*/ false);\n }\n // Now, if we are left with a .providers that is just a single key/value pair, then\n // collapse that down into .provider form.\n normalizeProviders(dest);\n return dest;\n}\nexports.mergeOptions = mergeOptions;\nfunction isPromiseOrOutput(val) {\n return val instanceof Promise || output_1.Output.isInstance(val);\n}\n/** @internal */\nfunction expandProviders(options) {\n // Convert 'providers' map to array form.\n if (options.providers && !Array.isArray(options.providers)) {\n for (const k in options.providers) {\n if (Object.prototype.hasOwnProperty.call(options.providers, k)) {\n const v = options.providers[k];\n if (k !== v.getPackage()) {\n const message = `provider resource map where key ${k} doesn't match provider ${v.getPackage()}`;\n log.warn(message);\n }\n }\n }\n options.providers = utils.values(options.providers);\n }\n}\nexports.expandProviders = expandProviders;\nfunction normalizeProviders(opts) {\n // If we have 0 providers, delete providers. Otherwise, convert providers into a map.\n const providers = opts.providers;\n if (providers) {\n if (providers.length === 0) {\n opts.providers = undefined;\n }\n else {\n opts.providers = {};\n for (const res of providers) {\n opts.providers[res.getPackage()] = res;\n }\n }\n }\n}\n/** @internal for testing purposes. */\nfunction merge(dest, source, alwaysCreateArray) {\n // unwind any top level promise/outputs.\n if (isPromiseOrOutput(dest)) {\n return output_1.output(dest).apply((d) => merge(d, source, alwaysCreateArray));\n }\n if (isPromiseOrOutput(source)) {\n return output_1.output(source).apply((s) => merge(dest, s, alwaysCreateArray));\n }\n // If either are an array, make a new array and merge the values into it.\n // Otherwise, just overwrite the destination with the source value.\n if (alwaysCreateArray || Array.isArray(dest) || Array.isArray(source)) {\n const result = [];\n addToArray(result, dest);\n addToArray(result, source);\n return result;\n }\n return source;\n}\nexports.merge = merge;\nfunction addToArray(resultArray, value) {\n if (Array.isArray(value)) {\n resultArray.push(...value);\n }\n else if (value !== undefined && value !== null) {\n resultArray.push(value);\n }\n}\n/**\n * A DependencyResource is a resource that is used to indicate that an Output has a dependency on a particular\n * resource. These resources are only created when dealing with remote component resources.\n */\nclass DependencyResource extends CustomResource {\n constructor(urn) {\n super(\"\", \"\", {}, {}, true);\n this.urn = new output_1.Output(this, Promise.resolve(urn), Promise.resolve(true), Promise.resolve(false), Promise.resolve([]));\n }\n}\nexports.DependencyResource = DependencyResource;\n/**\n * A DependencyProviderResource is a resource that is used by the provider SDK as a stand-in for a provider that\n * is only used for its reference. Its only valid properties are its URN and ID.\n */\nclass DependencyProviderResource extends ProviderResource {\n constructor(ref) {\n const [urn, id] = parseResourceReference(ref);\n const urnParts = urn.split(\"::\");\n const qualifiedType = urnParts[2];\n const type = qualifiedType.split(\"$\").pop();\n // type will be \"pulumi:providers:\" and we want the last part.\n const typeParts = type.split(\":\");\n const pkg = typeParts.length > 2 ? typeParts[2] : \"\";\n super(pkg, \"\", {}, {}, true);\n this.urn = new output_1.Output(this, Promise.resolve(urn), Promise.resolve(true), Promise.resolve(false), Promise.resolve([]));\n this.id = new output_1.Output(this, Promise.resolve(id), Promise.resolve(true), Promise.resolve(false), Promise.resolve([]));\n }\n}\nexports.DependencyProviderResource = DependencyProviderResource;\n/**\n * parseResourceReference parses the URN and ID out of the provider reference.\n * @internal\n */\nfunction parseResourceReference(ref) {\n const lastSep = ref.lastIndexOf(\"::\");\n if (lastSep === -1) {\n throw new Error(`expected '::' in provider reference ${ref}`);\n }\n const urn = ref.slice(0, lastSep);\n const id = ref.slice(lastSep + 2);\n return [urn, id];\n}\nexports.parseResourceReference = parseResourceReference;\n//# sourceMappingURL=resource.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 });\nconst closeValue = \"7473659d-924c-414d-84e5-b1640b2a6296\";\n// PushableAsyncIterable is an `AsyncIterable` that data can be pushed to. It is useful for turning\n// push-based callback APIs into pull-based `AsyncIterable` APIs. For example, a user can write:\n//\n// const queue = new PushableAsyncIterable();\n// call.on(\"data\", (thing: any) => queue.push(live));\n//\n// And then later consume `queue` as any other `AsyncIterable`:\n//\n// for await (const l of list) {\n// console.log(l.metadata.name);\n// }\n//\n// Note that this class implements `AsyncIterable`. This is for a fundamental reason:\n// the user can call `complete` at any time. `AsyncIteratable` would normally know when an element\n// is the last, but in this case it can't. Or, another way to look at it is, the last element is\n// guaranteed to be `undefined`.\n/** @internal */\nclass PushableAsyncIterable {\n constructor() {\n this.bufferedData = [];\n this.nextQueue = [];\n this.completed = false;\n }\n push(payload) {\n if (this.nextQueue.length === 0) {\n this.bufferedData.push(payload);\n }\n else {\n const resolve = this.nextQueue.shift();\n resolve(payload);\n }\n }\n complete() {\n this.completed = true;\n if (this.nextQueue.length > 0) {\n const resolve = this.nextQueue.shift();\n resolve(closeValue);\n }\n }\n shift() {\n return new Promise((resolve) => {\n if (this.bufferedData.length === 0) {\n if (this.completed === true) {\n resolve(closeValue);\n }\n this.nextQueue.push(resolve);\n }\n else {\n resolve(this.bufferedData.shift());\n }\n });\n }\n [Symbol.asyncIterator]() {\n const t = this;\n return {\n next() {\n return __awaiter(this, void 0, void 0, function* () {\n const value = yield t.shift();\n if (value === closeValue) {\n return { value: undefined, done: true };\n }\n return { value, done: false };\n });\n },\n };\n }\n}\nexports.PushableAsyncIterable = PushableAsyncIterable;\n//# sourceMappingURL=asyncIterableUtil.js.map","\"use strict\";\n// Copyright 2016-2024, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst crypto_1 = require(\"crypto\");\nconst gstruct = __importStar(require(\"google-protobuf/google/protobuf/struct_pb\"));\nconst log = __importStar(require(\"../log\"));\nconst output_1 = require(\"../output\");\nconst callrpc = __importStar(require(\"../proto/callback_grpc_pb\"));\nconst callback_pb_1 = require(\"../proto/callback_pb\");\nconst resproto = __importStar(require(\"../proto/resource_pb\"));\nconst resource_1 = require(\"../resource\");\nconst resource_2 = require(\"./resource\");\nconst rpc_1 = require(\"./rpc\");\n// maxRPCMessageSize raises the gRPC Max Message size from `4194304` (4mb) to `419430400` (400mb)\n/** @internal */\nconst maxRPCMessageSize = 1024 * 1024 * 400;\nclass CallbackServer {\n constructor(monitor) {\n this._callbacks = new Map();\n this._pendingRegistrations = 0;\n this._awaitQueue = [];\n this._monitor = monitor;\n this._server = new grpc.Server({\n \"grpc.max_receive_message_length\": maxRPCMessageSize,\n });\n const implementation = {\n invoke: this.invoke.bind(this),\n };\n this._server.addService(callrpc.CallbacksService, implementation);\n const self = this;\n this._target = new Promise((resolve, reject) => {\n self._server.bindAsync(`127.0.0.1:0`, grpc.ServerCredentials.createInsecure(), (err, port) => {\n if (err !== null) {\n reject(err);\n return;\n }\n // The server takes a while to _actually_ startup so we need to keep trying to send an invoke\n // to ourselves before we resolve the address to tell the engine about it.\n const target = `127.0.0.1:${port}`;\n const client = new callrpc.CallbacksClient(target, grpc.credentials.createInsecure());\n const connect = () => {\n client.invoke(new callback_pb_1.CallbackInvokeRequest(), (error, _) => {\n if ((error === null || error === void 0 ? void 0 : error.code) === grpc.status.UNAVAILABLE) {\n setTimeout(connect, 1000);\n return;\n }\n // The expected error given we didn't give a token to the invoke.\n if ((error === null || error === void 0 ? void 0 : error.details) === \"callback not found: \") {\n resolve(target);\n return;\n }\n reject(error);\n });\n };\n connect();\n });\n });\n }\n awaitStackRegistrations() {\n if (this._pendingRegistrations === 0) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n this._awaitQueue.push((reason) => {\n if (reason !== undefined) {\n reject(reason);\n }\n else {\n resolve();\n }\n });\n });\n }\n shutdown() {\n this._server.forceShutdown();\n }\n invoke(call, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const req = call.request;\n const cb = this._callbacks.get(req.getToken());\n if (cb === undefined) {\n const err = new grpc.StatusBuilder();\n err.withCode(grpc.status.INVALID_ARGUMENT);\n err.withDetails(\"callback not found: \" + req.getToken());\n callback(err.build());\n return;\n }\n try {\n const response = yield cb(req.getRequest_asU8());\n const resp = new callback_pb_1.CallbackInvokeResponse();\n resp.setResponse(response.serializeBinary());\n callback(null, resp);\n }\n catch (e) {\n const err = new grpc.StatusBuilder();\n err.withCode(grpc.status.UNKNOWN);\n if (e instanceof Error) {\n err.withDetails(e.message);\n }\n else {\n err.withDetails(JSON.stringify(e));\n }\n callback(err.build());\n }\n });\n }\n registerTransform(transform) {\n return __awaiter(this, void 0, void 0, function* () {\n const cb = (bytes) => __awaiter(this, void 0, void 0, function* () {\n const request = resproto.TransformRequest.deserializeBinary(bytes);\n let opts = request.getOptions() || new resproto.TransformResourceOptions();\n let ropts;\n if (request.getCustom()) {\n ropts = {\n deleteBeforeReplace: opts.getDeleteBeforeReplace(),\n additionalSecretOutputs: opts.getAdditionalSecretOutputsList(),\n };\n }\n else {\n const providers = {};\n for (const [key, value] of opts.getProvidersMap().entries()) {\n providers[key] = new resource_1.DependencyProviderResource(value);\n }\n ropts = {\n providers: providers,\n };\n }\n ropts.aliases = opts.getAliasesList().map((alias) => {\n if (alias.hasUrn()) {\n return alias.getUrn();\n }\n else {\n const spec = alias.getSpec();\n if (spec === undefined) {\n throw new Error(\"alias must have either a urn or a spec\");\n }\n const nodeAlias = {\n name: spec.getName(),\n type: spec.getType(),\n project: spec.getProject(),\n stack: spec.getStack(),\n parent: spec.getParenturn() !== \"\" ? new resource_1.DependencyResource(spec.getParenturn()) : undefined,\n };\n if (spec.getNoparent()) {\n nodeAlias.parent = resource_1.rootStackResource;\n }\n return nodeAlias;\n }\n });\n const timeouts = opts.getCustomTimeouts();\n if (timeouts !== undefined) {\n ropts.customTimeouts = {\n create: timeouts.getCreate(),\n update: timeouts.getUpdate(),\n delete: timeouts.getDelete(),\n };\n }\n ropts.deletedWith =\n opts.getDeletedWith() !== \"\" ? new resource_1.DependencyResource(opts.getDeletedWith()) : undefined;\n ropts.dependsOn = opts.getDependsOnList().map((dep) => new resource_1.DependencyResource(dep));\n ropts.ignoreChanges = opts.getIgnoreChangesList();\n ropts.parent = request.getParent() !== \"\" ? new resource_1.DependencyResource(request.getParent()) : undefined;\n ropts.pluginDownloadURL = opts.getPluginDownloadUrl() !== \"\" ? opts.getPluginDownloadUrl() : undefined;\n ropts.protect = opts.getProtect();\n ropts.provider = opts.getProvider() !== \"\" ? new resource_1.DependencyProviderResource(opts.getProvider()) : undefined;\n ropts.replaceOnChanges = opts.getReplaceOnChangesList();\n ropts.retainOnDelete = opts.getRetainOnDelete();\n ropts.version = opts.getVersion() !== \"\" ? opts.getVersion() : undefined;\n const props = request.getProperties();\n const args = {\n custom: request.getCustom(),\n type: request.getType(),\n name: request.getName(),\n props: props === undefined ? {} : rpc_1.deserializeProperties(props),\n opts: ropts,\n };\n const result = yield transform(args);\n const response = new resproto.TransformResponse();\n if (result === undefined) {\n response.setProperties(request.getProperties());\n response.setOptions(request.getOptions());\n }\n else {\n const mprops = yield rpc_1.serializeProperties(\"props\", result.props);\n response.setProperties(gstruct.Struct.fromJavaScript(mprops));\n // Copy the options over.\n if (result.opts !== undefined) {\n opts = new resproto.TransformResourceOptions();\n if (result.opts.aliases !== undefined) {\n const aliases = [];\n const uniqueAliases = new Set();\n for (const alias of result.opts.aliases || []) {\n const aliasVal = yield output_1.output(alias).promise();\n if (!uniqueAliases.has(aliasVal)) {\n uniqueAliases.add(aliasVal);\n aliases.push(aliasVal);\n }\n }\n opts.setAliasesList(yield resource_2.mapAliasesForRequest(aliases, request.getParent()));\n }\n if (result.opts.customTimeouts !== undefined) {\n const customTimeouts = new resproto.RegisterResourceRequest.CustomTimeouts();\n if (result.opts.customTimeouts.create !== undefined) {\n customTimeouts.setCreate(result.opts.customTimeouts.create);\n }\n if (result.opts.customTimeouts.update !== undefined) {\n customTimeouts.setUpdate(result.opts.customTimeouts.update);\n }\n if (result.opts.customTimeouts.delete !== undefined) {\n customTimeouts.setDelete(result.opts.customTimeouts.delete);\n }\n opts.setCustomTimeouts(customTimeouts);\n }\n if (result.opts.deletedWith !== undefined) {\n opts.setDeletedWith(yield result.opts.deletedWith.urn.promise());\n }\n if (result.opts.dependsOn !== undefined) {\n const resolvedDeps = yield output_1.output(result.opts.dependsOn).promise();\n const deps = [];\n if (resource_1.Resource.isInstance(resolvedDeps)) {\n deps.push(yield resolvedDeps.urn.promise());\n }\n else {\n for (const dep of resolvedDeps) {\n deps.push(yield dep.urn.promise());\n }\n }\n opts.setDependsOnList(deps);\n }\n if (result.opts.ignoreChanges !== undefined) {\n opts.setIgnoreChangesList(result.opts.ignoreChanges);\n }\n if (result.opts.pluginDownloadURL !== undefined) {\n opts.setPluginDownloadUrl(result.opts.pluginDownloadURL);\n }\n if (result.opts.protect !== undefined) {\n opts.setProtect(result.opts.protect);\n }\n if (result.opts.provider !== undefined) {\n const providerURN = yield result.opts.provider.urn.promise();\n const providerID = (yield result.opts.provider.id.promise()) || rpc_1.unknownValue;\n opts.setProvider(`${providerURN}::${providerID}`);\n }\n if (result.opts.replaceOnChanges !== undefined) {\n opts.setReplaceOnChangesList(result.opts.replaceOnChanges);\n }\n if (result.opts.retainOnDelete !== undefined) {\n opts.setRetainOnDelete(result.opts.retainOnDelete);\n }\n if (result.opts.version !== undefined) {\n opts.setVersion(result.opts.version);\n }\n if (request.getCustom()) {\n const copts = result.opts;\n if (copts.deleteBeforeReplace !== undefined) {\n opts.setDeleteBeforeReplace(copts.deleteBeforeReplace);\n }\n if (copts.additionalSecretOutputs !== undefined) {\n opts.setAdditionalSecretOutputsList(copts.additionalSecretOutputs);\n }\n }\n else {\n const copts = result.opts;\n if (copts.providers !== undefined) {\n const providers = opts.getProvidersMap();\n if (copts.providers && !Array.isArray(copts.providers)) {\n for (const k in copts.providers) {\n if (Object.prototype.hasOwnProperty.call(copts.providers, k)) {\n const v = copts.providers[k];\n if (k !== v.getPackage()) {\n const message = `provider resource map where key ${k} doesn't match provider ${v.getPackage()}`;\n log.warn(message);\n }\n }\n }\n }\n const provs = Object.values(copts.providers);\n for (const prov of provs) {\n const providerURN = yield prov.urn.promise();\n const providerID = (yield prov.id.promise()) || rpc_1.unknownValue;\n providers.set(prov.getPackage(), `${providerURN}::${providerID}`);\n }\n opts.clearProvidersMap();\n }\n }\n }\n response.setOptions(opts);\n }\n return response;\n });\n const tryCb = (bytes) => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield cb(bytes);\n }\n catch (e) {\n throw new Error(`transform failed: ${e}`);\n }\n });\n const uuid = crypto_1.randomUUID();\n this._callbacks.set(uuid, tryCb);\n const req = new callback_pb_1.Callback();\n req.setToken(uuid);\n req.setTarget(yield this._target);\n return req;\n });\n }\n registerStackTransform(transform) {\n this._pendingRegistrations++;\n this.registerTransform(transform)\n .then((req) => {\n this._monitor.registerStackTransform(req, (err, _) => {\n if (err !== null) {\n // Remove this from the list of callbacks given we didn't manage to actually register it.\n this._callbacks.delete(req.getToken());\n return;\n }\n });\n }, (err) => log.error(`failed to register stack transform: ${err}`))\n .finally(() => {\n this._pendingRegistrations--;\n if (this._pendingRegistrations === 0) {\n const queue = this._awaitQueue;\n this._awaitQueue = [];\n for (const waiter of queue) {\n waiter();\n }\n }\n });\n }\n}\nexports.CallbackServer = CallbackServer;\n//# sourceMappingURL=callbacks.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst state_1 = require(\"./state\");\n/**\n * configEnvKey is the environment variable key that the language plugin uses to set configuration values.\n *\n * @internal\n */\nexports.configEnvKey = \"PULUMI_CONFIG\";\n/**\n * configSecretKeysEnvKey is the environment variable key that the language plugin uses to set configuration keys that\n * contain secrets.\n *\n * @internal\n */\nexports.configSecretKeysEnvKey = \"PULUMI_CONFIG_SECRET_KEYS\";\n/**\n * allConfig returns a copy of the full config map.\n */\nfunction allConfig() {\n const config = parseConfig();\n return Object.assign({}, config);\n}\nexports.allConfig = allConfig;\n/**\n * setAllConfig overwrites the config map.\n */\nfunction setAllConfig(c, secretKeys) {\n const obj = {};\n for (const k of Object.keys(c)) {\n obj[cleanKey(k)] = c[k];\n }\n persistConfig(obj, secretKeys);\n}\nexports.setAllConfig = setAllConfig;\n/**\n * setConfig sets a configuration variable.\n */\nfunction setConfig(k, v) {\n const config = parseConfig();\n config[cleanKey(k)] = v;\n persistConfig(config, []);\n}\nexports.setConfig = setConfig;\n/**\n * getConfig returns a configuration variable's value or undefined if it is unset.\n */\nfunction getConfig(k) {\n const config = parseConfig();\n return config[k];\n}\nexports.getConfig = getConfig;\n/**\n * isConfigSecret returns true if the key contains a secret value.\n * @internal\n */\nfunction isConfigSecret(k) {\n const { config } = state_1.getStore();\n const envConfigSecretKeys = config[exports.configSecretKeysEnvKey];\n if (envConfigSecretKeys) {\n const envConfigSecretArray = JSON.parse(envConfigSecretKeys);\n if (Array.isArray(envConfigSecretArray)) {\n return envConfigSecretArray.includes(k);\n }\n }\n return false;\n}\nexports.isConfigSecret = isConfigSecret;\n/**\n * parseConfig reads config from the source of truth, the environment.\n * config must always be read this way because automation api introduces\n * new program lifetime semantics where program lifetime != module lifetime.\n */\nfunction parseConfig() {\n const { config } = state_1.getStore();\n const parsedConfig = {};\n const envConfig = config[exports.configEnvKey];\n if (envConfig) {\n const envObject = JSON.parse(envConfig);\n for (const k of Object.keys(envObject)) {\n parsedConfig[cleanKey(k)] = envObject[k];\n }\n }\n return parsedConfig;\n}\n/**\n * persistConfig writes config to the environment.\n * config changes must always be persisted to the environment because automation api introduces\n * new program lifetime semantics where program lifetime != module lifetime.\n */\nfunction persistConfig(config, secretKeys) {\n const store = state_1.getStore();\n const serializedConfig = JSON.stringify(config);\n const serializedSecretKeys = Array.isArray(secretKeys) ? JSON.stringify(secretKeys) : \"[]\";\n store.config[exports.configEnvKey] = serializedConfig;\n store.config[exports.configSecretKeysEnvKey] = serializedSecretKeys;\n}\n/**\n * cleanKey takes a configuration key, and if it is of the form \":config:\" removes\n * the \":config:\" portion. Previously, our keys always had the string \":config:\" in them, and we'd\n * like to remove it. However, the language host needs to continue to set it so we can be compatible\n * with older versions of our packages. Once we stop supporting older packages, we can change the\n * language host to not add this :config: thing and remove this function.\n */\nfunction cleanKey(key) {\n const idx = key.indexOf(\":\");\n if (idx > 0 && key.startsWith(\"config:\", idx + 1)) {\n return key.substring(0, idx) + \":\" + key.substring(idx + 1 + \"config:\".length);\n }\n return key;\n}\n//# sourceMappingURL=config.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst log = __importStar(require(\"../log\"));\nconst state = __importStar(require(\"./state\"));\n/** @internal\n * debugPromiseLeaks can be set to enable promises leaks debugging.\n */\nexports.debugPromiseLeaks = !!process.env.PULUMI_DEBUG_PROMISE_LEAKS;\n/**\n * leakDetectorScheduled is true when the promise leak detector is scheduled for process exit.\n */\nlet leakDetectorScheduled = false;\n/** @internal */\nfunction leakedPromises() {\n const localStore = state.getStore();\n const leaked = localStore.leakCandidates;\n const promisePlural = leaked.size === 1 ? \"promise was\" : \"promises were\";\n const message = leaked.size === 0\n ? \"\"\n : `The Pulumi runtime detected that ${leaked.size} ${promisePlural} still active\\n` +\n \"at the time that the process exited. There are a few ways that this can occur:\\n\" +\n \" * Not using `await` or `.then` on a Promise returned from a Pulumi API\\n\" +\n \" * Introducing a cyclic dependency between two Pulumi Resources\\n\" +\n \" * A bug in the Pulumi Runtime\\n\" +\n \"\\n\" +\n \"Leaving promises active is probably not what you want. If you are unsure about\\n\" +\n \"why you are seeing this message, re-run your program \" +\n \"with the `PULUMI_DEBUG_PROMISE_LEAKS`\\n\" +\n \"environment variable. The Pulumi runtime will then print out additional\\n\" +\n \"debug information about the leaked promises.\";\n if (exports.debugPromiseLeaks) {\n for (const leak of leaked) {\n console.error(\"Promise leak detected:\");\n console.error(promiseDebugString(leak));\n }\n }\n localStore.leakCandidates = new Set();\n return [leaked, message];\n}\nexports.leakedPromises = leakedPromises;\n/** @internal */\nfunction promiseDebugString(p) {\n return `CONTEXT(${p._debugId}): ${p._debugCtx}\\n` + `STACK_TRACE:\\n` + `${p._debugStackTrace}`;\n}\nexports.promiseDebugString = promiseDebugString;\nlet promiseId = 0;\n/**\n * debuggablePromise optionally wraps a promise with some goo to make it easier to debug common problems.\n * @internal\n */\nfunction debuggablePromise(p, ctx) {\n const localStore = state.getStore();\n // Whack some stack onto the promise. Leave them non-enumerable to avoid awkward rendering.\n Object.defineProperty(p, \"_debugId\", { writable: true, value: promiseId });\n Object.defineProperty(p, \"_debugCtx\", { writable: true, value: ctx });\n Object.defineProperty(p, \"_debugStackTrace\", { writable: true, value: new Error().stack });\n promiseId++;\n if (!leakDetectorScheduled) {\n process.on(\"exit\", (code) => {\n // Only print leaks if we're exiting normally. Otherwise, it could be a crash, which of\n // course yields things that look like \"leaks\".\n //\n // process.exitCode is undefined unless set, in which case it's the exit code that was\n // passed to process.exit.\n if ((process.exitCode === undefined || process.exitCode === 0) && !log.hasErrors()) {\n const [leaks, message] = leakedPromises();\n if (leaks.size === 0) {\n // No leaks - proceed with the exit.\n return;\n }\n // If we haven't opted-in to the debug error message, print a more user-friendly message.\n if (!exports.debugPromiseLeaks) {\n console.error(message);\n }\n // Fail the deployment if we leaked any promises.\n process.exitCode = 1;\n }\n });\n leakDetectorScheduled = true;\n }\n // Add this promise to the leak candidates list, and schedule it for removal if it resolves.\n localStore.leakCandidates.add(p);\n return p\n .then((val) => {\n localStore.leakCandidates.delete(p);\n return val;\n })\n .catch((err) => {\n localStore.leakCandidates.delete(p);\n err.promise = p;\n throw err;\n });\n}\nexports.debuggablePromise = debuggablePromise;\n/**\n * errorString produces a string from an error, conditionally including additional diagnostics.\n * @internal\n */\nfunction errorString(err) {\n if (err.stack) {\n return err.stack;\n }\n return err.toString();\n}\nexports.errorString = errorString;\n//# sourceMappingURL=debuggable.js.map","\"use strict\";\n// Copyright 2016-2021, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst log = __importStar(require(\"../log\"));\nconst output_1 = require(\"../output\");\nconst debuggable_1 = require(\"./debuggable\");\nconst rpc_1 = require(\"./rpc\");\nconst settings_1 = require(\"./settings\");\nconst resource_1 = require(\"../resource\");\nconst utils = __importStar(require(\"../utils\"));\nconst asyncIterableUtil_1 = require(\"./asyncIterableUtil\");\nconst gstruct = __importStar(require(\"google-protobuf/google/protobuf/struct_pb\"));\nconst resourceproto = __importStar(require(\"../proto/resource_pb\"));\n/**\n * `invoke` dynamically invokes the function, `tok`, which is offered by a provider plugin. `invoke`\n * behaves differently in the case that options contains `{async:true}` or not.\n *\n * In the case where `{async:true}` is present in the options bag:\n *\n * 1. the result of `invoke` will be a Promise resolved to the result value of the provider plugin.\n * 2. the `props` inputs can be a bag of computed values (including, `T`s, `Promise`s,\n * `Output`s etc.).\n *\n *\n * In the case where `{async:true}` is not present in the options bag:\n *\n * 1. the result of `invoke` will be a Promise resolved to the result value of the provider call.\n * However, that Promise will *also* have the respective values of the Provider result exposed\n * directly on it as properties.\n *\n * 2. The inputs must be a bag of simple values, and the result is the result that the Provider\n * produced.\n *\n * Simple values are:\n * 1. `undefined`, `null`, string, number or boolean values.\n * 2. arrays of simple values.\n * 3. objects containing only simple values.\n *\n * Importantly, simple values do *not* include:\n * 1. `Promise`s\n * 2. `Output`s\n * 3. `Asset`s or `Archive`s\n * 4. `Resource`s.\n *\n * All of these contain async values that would prevent `invoke from being able to operate\n * synchronously.\n */\nfunction invoke(tok, props, opts = {}) {\n return invokeAsync(tok, props, opts);\n}\nexports.invoke = invoke;\n/*\n * `invokeSingle` dynamically invokes the function, `tok`, which is offered by a provider plugin.\n * Similar to `invoke`, but returns a single value instead of an object with a single key.\n */\nfunction invokeSingle(tok, props, opts = {}) {\n return invokeAsync(tok, props, opts).then((outputs) => {\n // assume outputs have a single key\n const keys = Object.keys(outputs);\n // return the first key's value from the outputs\n return outputs[keys[0]];\n });\n}\nexports.invokeSingle = invokeSingle;\nfunction streamInvoke(tok, props, opts = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const label = `StreamInvoking function: tok=${tok} asynchronously`;\n log.debug(label + (settings_1.excessiveDebugOutput ? `, props=${JSON.stringify(props)}` : ``));\n // Wait for all values to be available, and then perform the RPC.\n const done = settings_1.rpcKeepAlive();\n try {\n const serialized = yield rpc_1.serializeProperties(`streamInvoke:${tok}`, props);\n log.debug(`StreamInvoke RPC prepared: tok=${tok}` + settings_1.excessiveDebugOutput ? `, obj=${JSON.stringify(serialized)}` : ``);\n // Fetch the monitor and make an RPC request.\n const monitor = settings_1.getMonitor();\n const provider = yield resource_1.ProviderResource.register(getProvider(tok, opts));\n const req = createInvokeRequest(tok, serialized, provider, opts);\n // Call `streamInvoke`.\n const result = monitor.streamInvoke(req, {});\n const queue = new asyncIterableUtil_1.PushableAsyncIterable();\n result.on(\"data\", function (thing) {\n const live = deserializeResponse(tok, thing);\n queue.push(live);\n });\n result.on(\"error\", (err) => {\n if (err.code === 1) {\n return;\n }\n throw err;\n });\n result.on(\"end\", () => {\n queue.complete();\n });\n // Return a cancellable handle to the stream.\n return new StreamInvokeResponse(queue, () => result.cancel());\n }\n finally {\n done();\n }\n });\n}\nexports.streamInvoke = streamInvoke;\nfunction invokeAsync(tok, props, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const label = `Invoking function: tok=${tok} asynchronously`;\n log.debug(label + (settings_1.excessiveDebugOutput ? `, props=${JSON.stringify(props)}` : ``));\n // Wait for all values to be available, and then perform the RPC.\n const done = settings_1.rpcKeepAlive();\n try {\n const serialized = yield rpc_1.serializeProperties(`invoke:${tok}`, props);\n log.debug(`Invoke RPC prepared: tok=${tok}` + settings_1.excessiveDebugOutput ? `, obj=${JSON.stringify(serialized)}` : ``);\n // Fetch the monitor and make an RPC request.\n const monitor = settings_1.getMonitor();\n const provider = yield resource_1.ProviderResource.register(getProvider(tok, opts));\n const req = createInvokeRequest(tok, serialized, provider, opts);\n const resp = yield debuggable_1.debuggablePromise(new Promise((innerResolve, innerReject) => monitor.invoke(req, (err, innerResponse) => {\n log.debug(`Invoke RPC finished: tok=${tok}; err: ${err}, resp: ${innerResponse}`);\n if (err) {\n // If the monitor is unavailable, it is in the process of shutting down or has already\n // shut down. Don't emit an error and don't do any more RPCs, just exit.\n if (err.code === grpc.status.UNAVAILABLE || err.code === grpc.status.CANCELLED) {\n settings_1.terminateRpcs();\n err.message = \"Resource monitor is terminating\";\n innerReject(err);\n return;\n }\n // If the RPC failed, rethrow the error with a native exception and the message that\n // the engine provided - it's suitable for user presentation.\n innerReject(new Error(err.details));\n }\n else {\n innerResolve(innerResponse);\n }\n })), label);\n // Finally propagate any other properties that were given to us as outputs.\n return deserializeResponse(tok, resp);\n }\n finally {\n done();\n }\n });\n}\n// StreamInvokeResponse represents a (potentially infinite) streaming response to `streamInvoke`,\n// with facilities to gracefully cancel and clean up the stream.\nclass StreamInvokeResponse {\n constructor(source, cancelSource) {\n this.source = source;\n this.cancelSource = cancelSource;\n }\n // cancel signals the `streamInvoke` should be cancelled and cleaned up gracefully.\n cancel() {\n this.cancelSource();\n }\n [Symbol.asyncIterator]() {\n return this.source[Symbol.asyncIterator]();\n }\n}\nexports.StreamInvokeResponse = StreamInvokeResponse;\nfunction createInvokeRequest(tok, serialized, provider, opts) {\n if (provider !== undefined && typeof provider !== \"string\") {\n throw new Error(\"Incorrect provider type.\");\n }\n const obj = gstruct.Struct.fromJavaScript(serialized);\n const req = new resourceproto.ResourceInvokeRequest();\n req.setTok(tok);\n req.setArgs(obj);\n req.setProvider(provider || \"\");\n req.setVersion(opts.version || \"\");\n req.setAcceptresources(!utils.disableResourceReferences);\n return req;\n}\nfunction getProvider(tok, opts) {\n return opts.provider ? opts.provider : opts.parent ? opts.parent.getProvider(tok) : undefined;\n}\nfunction deserializeResponse(tok, resp) {\n const failures = resp.getFailuresList();\n if (failures === null || failures === void 0 ? void 0 : failures.length) {\n let reasons = \"\";\n for (let i = 0; i < failures.length; i++) {\n if (reasons !== \"\") {\n reasons += \"; \";\n }\n reasons += `${failures[i].getReason()} (${failures[i].getProperty()})`;\n }\n throw new Error(`Invoke of '${tok}' failed: ${reasons}`);\n }\n const ret = resp.getReturn();\n return ret === undefined ? ret : rpc_1.deserializeProperties(ret);\n}\n/**\n * `call` dynamically calls the function, `tok`, which is offered by a provider plugin.\n */\nfunction call(tok, props, res) {\n const label = `Calling function: tok=${tok}`;\n log.debug(label + (settings_1.excessiveDebugOutput ? `, props=${JSON.stringify(props)}` : ``));\n const [out, resolver] = createOutput(`call(${tok})`);\n debuggable_1.debuggablePromise(Promise.resolve().then(() => __awaiter(this, void 0, void 0, function* () {\n const done = settings_1.rpcKeepAlive();\n try {\n // Construct a provider reference from the given provider, if one is available on the resource.\n let provider = undefined;\n let version = undefined;\n let pluginDownloadURL = undefined;\n if (res) {\n if (res.__prov) {\n provider = yield resource_1.ProviderResource.register(res.__prov);\n }\n version = res.__version;\n pluginDownloadURL = res.__pluginDownloadURL;\n }\n // We keep output values when serializing inputs for call.\n const [serialized, propertyDepsResources] = yield rpc_1.serializePropertiesReturnDeps(`call:${tok}`, props, {\n keepOutputValues: true,\n });\n log.debug(`Call RPC prepared: tok=${tok}` + settings_1.excessiveDebugOutput ? `, obj=${JSON.stringify(serialized)}` : ``);\n const req = yield createCallRequest(tok, serialized, propertyDepsResources, provider, version, pluginDownloadURL);\n const monitor = settings_1.getMonitor();\n const resp = yield debuggable_1.debuggablePromise(new Promise((innerResolve, innerReject) => {\n if (monitor === undefined) {\n throw new Error(\"No monitor available\");\n }\n monitor.call(req, (err, innerResponse) => {\n log.debug(`Call RPC finished: tok=${tok}; err: ${err}, resp: ${innerResponse}`);\n if (err) {\n // If the monitor is unavailable, it is in the process of shutting down or has already\n // shut down. Don't emit an error and don't do any more RPCs, just exit.\n if (err.code === grpc.status.UNAVAILABLE || err.code === grpc.status.CANCELLED) {\n settings_1.terminateRpcs();\n err.message = \"Resource monitor is terminating\";\n innerReject(err);\n return;\n }\n // If the RPC failed, rethrow the error with a native exception and the message that\n // the engine provided - it's suitable for user presentation.\n innerReject(new Error(err.details));\n }\n else {\n innerResolve(innerResponse);\n }\n });\n }), label);\n // Deserialize the response and resolve the output.\n const deserialized = deserializeResponse(tok, resp);\n let isSecret = false;\n const deps = [];\n // Keep track of whether we need to mark the resulting output a secret.\n // and unwrap each individual value.\n if (deserialized !== undefined) {\n for (const k of Object.keys(deserialized)) {\n const v = deserialized[k];\n if (rpc_1.isRpcSecret(v)) {\n isSecret = true;\n deserialized[k] = rpc_1.unwrapRpcSecret(v);\n }\n }\n }\n // Combine the individual dependencies into a single set of dependency resources.\n const rpcDeps = resp.getReturndependenciesMap();\n if (rpcDeps) {\n const urns = new Set();\n for (const [, returnDeps] of rpcDeps.entries()) {\n for (const urn of returnDeps.getUrnsList()) {\n urns.add(urn);\n }\n }\n for (const urn of urns) {\n deps.push(new resource_1.DependencyResource(urn));\n }\n }\n // If the value the engine handed back is or contains an unknown value, the resolver will mark its value as\n // unknown automatically, so we just pass true for isKnown here. Note that unknown values will only be\n // present during previews (i.e. isDryRun() will be true).\n resolver(deserialized, true, isSecret, deps);\n }\n catch (e) {\n resolver(undefined, true, false, undefined, e);\n }\n finally {\n done();\n }\n })), label);\n return out;\n}\nexports.call = call;\nfunction createOutput(label) {\n let resolveValue;\n let rejectValue;\n let resolveIsKnown;\n let rejectIsKnown;\n let resolveIsSecret;\n let rejectIsSecret;\n let resolveDeps;\n let rejectDeps;\n const resolver = (v, isKnown, isSecret, deps = [], err) => {\n if (err) {\n rejectValue(err);\n rejectIsKnown(err);\n rejectIsSecret(err);\n rejectDeps(err);\n }\n else {\n resolveValue(v);\n resolveIsKnown(isKnown);\n resolveIsSecret(isSecret);\n resolveDeps(deps);\n }\n };\n const out = new output_1.Output([], debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveValue = resolve;\n rejectValue = reject;\n }), `${label}Value`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsKnown = resolve;\n rejectIsKnown = reject;\n }), `${label}IsKnown`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsSecret = resolve;\n rejectIsSecret = reject;\n }), `${label}IsSecret`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveDeps = resolve;\n rejectDeps = reject;\n }), `${label}Deps`));\n return [out, resolver];\n}\nfunction createCallRequest(tok, serialized, serializedDeps, provider, version, pluginDownloadURL) {\n return __awaiter(this, void 0, void 0, function* () {\n if (provider !== undefined && typeof provider !== \"string\") {\n throw new Error(\"Incorrect provider type.\");\n }\n const obj = gstruct.Struct.fromJavaScript(serialized);\n const req = new resourceproto.ResourceCallRequest();\n req.setTok(tok);\n req.setArgs(obj);\n req.setProvider(provider || \"\");\n req.setVersion(version || \"\");\n req.setPlugindownloadurl(pluginDownloadURL || \"\");\n const argDependencies = req.getArgdependenciesMap();\n for (const [key, propertyDeps] of serializedDeps) {\n const urns = new Set();\n for (const dep of propertyDeps) {\n const urn = yield dep.urn.promise();\n urns.add(urn);\n }\n const deps = new resourceproto.ResourceCallRequest.ArgumentDependencies();\n deps.setUrnsList(Array.from(urns));\n argDependencies.set(key, deps);\n }\n return req;\n });\n}\n//# sourceMappingURL=invoke.js.map","\"use strict\";\n// Copyright 2016-2021, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst query = __importStar(require(\"@pulumi/query\"));\nconst log = __importStar(require(\"../log\"));\nconst utils = __importStar(require(\"../utils\"));\nconst output_1 = require(\"../output\");\nconst resource_1 = require(\"../resource\");\nconst debuggable_1 = require(\"./debuggable\");\nconst invoke_1 = require(\"./invoke\");\nconst state_1 = require(\"./state\");\nconst errors_1 = require(\"../errors\");\nconst rpc_1 = require(\"./rpc\");\nconst settings_1 = require(\"./settings\");\nconst gstruct = __importStar(require(\"google-protobuf/google/protobuf/struct_pb\"));\nconst aliasproto = __importStar(require(\"../proto/alias_pb\"));\nconst resproto = __importStar(require(\"../proto/resource_pb\"));\nconst sourceproto = __importStar(require(\"../proto/source_pb\"));\nfunction marshalSourcePosition(sourcePosition) {\n if (sourcePosition === undefined) {\n return undefined;\n }\n const pos = new sourceproto.SourcePosition();\n pos.setUri(sourcePosition.uri);\n pos.setLine(sourcePosition.line);\n pos.setColumn(sourcePosition.column);\n return pos;\n}\n/**\n * Get an existing resource's state from the engine.\n */\nfunction getResource(res, parent, props, custom, urn) {\n // Extract the resource type from the URN.\n const urnParts = urn.split(\"::\");\n const qualifiedType = urnParts[2];\n const urnName = urnParts[3];\n const type = qualifiedType.split(\"$\").pop();\n const label = `resource:urn=${urn}`;\n log.debug(`Getting resource: urn=${urn}`);\n const monitor = settings_1.getMonitor();\n const resopAsync = prepareResource(label, res, parent, custom, false, props, {});\n const preallocError = new Error();\n debuggable_1.debuggablePromise(resopAsync.then((resop) => __awaiter(this, void 0, void 0, function* () {\n const inputs = yield rpc_1.serializeProperties(label, { urn });\n const req = new resproto.ResourceInvokeRequest();\n req.setTok(\"pulumi:pulumi:getResource\");\n req.setArgs(gstruct.Struct.fromJavaScript(inputs));\n req.setProvider(\"\");\n req.setVersion(\"\");\n req.setAcceptresources(!utils.disableResourceReferences);\n // Now run the operation, serializing the invocation if necessary.\n const opLabel = `monitor.getResource(${label})`;\n runAsyncResourceOp(opLabel, () => __awaiter(this, void 0, void 0, function* () {\n let resp = {};\n let err;\n try {\n if (monitor) {\n resp = yield debuggable_1.debuggablePromise(new Promise((resolve, reject) => monitor.invoke(req, (rpcError, innerResponse) => {\n log.debug(`getResource Invoke RPC finished: err: ${rpcError}, resp: ${innerResponse}`);\n if (rpcError) {\n if (rpcError.code === grpc.status.UNAVAILABLE ||\n rpcError.code === grpc.status.CANCELLED) {\n err = rpcError;\n settings_1.terminateRpcs();\n rpcError.message = \"Resource monitor is terminating\";\n preallocError.code = rpcError.code;\n }\n preallocError.message = `failed to get resource:urn=${urn}: ${rpcError.message}`;\n reject(new Error(rpcError.details));\n }\n else {\n resolve(innerResponse);\n }\n })), opLabel);\n // If the invoke failed, raise an error\n const failures = resp.getFailuresList();\n if (failures === null || failures === void 0 ? void 0 : failures.length) {\n let reasons = \"\";\n for (let i = 0; i < failures.length; i++) {\n if (reasons !== \"\") {\n reasons += \"; \";\n }\n reasons += `${failures[i].getReason()} (${failures[i].getProperty()})`;\n }\n throw new Error(`getResource Invoke failed: ${reasons}`);\n }\n // Otherwise, return the response.\n const m = resp.getReturn().getFieldsMap();\n resp = {\n urn: m.get(\"urn\").toJavaScript(),\n id: m.get(\"id\").toJavaScript() || undefined,\n state: m.get(\"state\").getStructValue(),\n };\n }\n }\n catch (e) {\n err = e;\n resp = {\n urn: \"\",\n id: undefined,\n state: undefined,\n };\n }\n resop.resolveURN(resp.urn, err);\n // Note: 'id || undefined' is intentional. We intentionally collapse falsy values to\n // undefined so that later parts of our system don't have to deal with values like 'null'.\n if (resop.resolveID) {\n const id = resp.id || undefined;\n resop.resolveID(id, id !== undefined, err);\n }\n yield resolveOutputs(res, type, urnName, props, resp.state, {}, resop.resolvers, err);\n }));\n })), label);\n}\nexports.getResource = getResource;\n/**\n * Reads an existing custom resource's state from the resource monitor. Note that resources read in this way\n * will not be part of the resulting stack's state, as they are presumed to belong to another.\n */\nfunction readResource(res, parent, t, name, props, opts, sourcePosition) {\n if (!opts.id) {\n throw new Error(\"Cannot read resource whose options are lacking an ID value\");\n }\n const id = output_1.output(opts.id).promise(true);\n const label = `resource:${name}[${t}]#...`;\n log.debug(`Reading resource: t=${t}, name=${name}`);\n const monitor = settings_1.getMonitor();\n const resopAsync = prepareResource(label, res, parent, true, false, props, opts);\n const preallocError = new Error();\n debuggable_1.debuggablePromise(resopAsync.then((resop) => __awaiter(this, void 0, void 0, function* () {\n const resolvedID = yield rpc_1.serializeProperty(label, yield id, new Set(), { keepOutputValues: false });\n log.debug(`ReadResource RPC prepared: id=${resolvedID}, t=${t}, name=${name}` +\n (settings_1.excessiveDebugOutput ? `, obj=${JSON.stringify(resop.serializedProps)}` : ``));\n // Create a resource request and do the RPC.\n const req = new resproto.ReadResourceRequest();\n req.setType(t);\n req.setName(name);\n req.setId(resolvedID);\n req.setParent(resop.parentURN || \"\");\n req.setProvider(resop.providerRef || \"\");\n req.setProperties(gstruct.Struct.fromJavaScript(resop.serializedProps));\n req.setDependenciesList(Array.from(resop.allDirectDependencyURNs));\n req.setVersion(opts.version || \"\");\n req.setPlugindownloadurl(opts.pluginDownloadURL || \"\");\n req.setAcceptsecrets(true);\n req.setAcceptresources(!utils.disableResourceReferences);\n req.setAdditionalsecretoutputsList(opts.additionalSecretOutputs || []);\n req.setSourceposition(marshalSourcePosition(sourcePosition));\n // Now run the operation, serializing the invocation if necessary.\n const opLabel = `monitor.readResource(${label})`;\n runAsyncResourceOp(opLabel, () => __awaiter(this, void 0, void 0, function* () {\n let resp = {};\n let err;\n try {\n if (monitor) {\n // If we're attached to the engine, make an RPC call and wait for it to resolve.\n resp = yield debuggable_1.debuggablePromise(new Promise((resolve, reject) => monitor.readResource(req, (rpcError, innerResponse) => {\n log.debug(`ReadResource RPC finished: ${label}; err: ${rpcError}, resp: ${innerResponse}`);\n if (rpcError) {\n if (rpcError.code === grpc.status.UNAVAILABLE ||\n rpcError.code === grpc.status.CANCELLED) {\n err = rpcError;\n settings_1.terminateRpcs();\n rpcError.message = \"Resource monitor is terminating\";\n preallocError.code = rpcError.code;\n }\n preallocError.message = `failed to read resource #${resolvedID} '${name}' [${t}]: ${rpcError.message}`;\n reject(preallocError);\n }\n else {\n resolve(innerResponse);\n }\n })), opLabel);\n }\n else {\n // If we aren't attached to the engine, in test mode, mock up a fake response for testing purposes.\n const mockurn = yield resource_1.createUrn(req.getName(), req.getType(), req.getParent()).promise();\n resp = {\n getUrn: () => mockurn,\n getProperties: () => req.getProperties(),\n };\n }\n }\n catch (e) {\n err = e;\n resp = {\n getUrn: () => \"\",\n getProperties: () => undefined,\n };\n }\n // Now resolve everything: the URN, the ID (supplied as input), and the output properties.\n resop.resolveURN(resp.getUrn(), err);\n resop.resolveID(resolvedID, resolvedID !== undefined, err);\n yield resolveOutputs(res, t, name, props, resp.getProperties(), {}, resop.resolvers, err);\n }));\n })), label);\n}\nexports.readResource = readResource;\nfunction getParentURN(parent) {\n if (resource_1.Resource.isInstance(parent)) {\n return parent.urn;\n }\n return output_1.output(parent);\n}\nfunction mapAliasesForRequest(aliases, parentURN) {\n if (aliases === undefined) {\n return Promise.resolve([]);\n }\n return Promise.all(aliases.map((a) => __awaiter(this, void 0, void 0, function* () {\n const newAlias = new aliasproto.Alias();\n if (typeof a === \"string\") {\n newAlias.setUrn(a);\n }\n else {\n const newAliasSpec = new aliasproto.Alias.Spec();\n const name = a.name === undefined ? undefined : yield output_1.output(a.name).promise();\n const type = a.type === undefined ? undefined : yield output_1.output(a.type).promise();\n const stack = a.stack === undefined ? undefined : yield output_1.output(a.stack).promise();\n const project = a.project === undefined ? undefined : yield output_1.output(a.project).promise();\n newAliasSpec.setName(name || \"\");\n newAliasSpec.setType(type || \"\");\n newAliasSpec.setStack(stack || \"\");\n newAliasSpec.setProject(project || \"\");\n if (a.hasOwnProperty(\"parent\")) {\n if (a.parent === undefined) {\n newAliasSpec.setNoparent(true);\n }\n else {\n const aliasParentUrn = getParentURN(a.parent);\n const urn = yield aliasParentUrn.promise();\n if (urn !== undefined) {\n newAliasSpec.setParenturn(urn);\n }\n }\n }\n else if (parentURN) {\n // If a parent isn't specified for the alias and the resource has a parent,\n // pass along the resource's parent in the alias spec.\n // It shouldn't be necessary to do this because the engine should fill-in the\n // resource's parent if one wasn't specified for the alias.\n // However, some older versions of the CLI don't do this correctly, and this\n // SDK has always passed along the parent in this way, so we continue doing it\n // to maintain compatibility with these versions of the CLI.\n newAliasSpec.setParenturn(parentURN);\n }\n newAlias.setSpec(newAliasSpec);\n }\n return newAlias;\n })));\n}\nexports.mapAliasesForRequest = mapAliasesForRequest;\n/**\n * registerResource registers a new resource object with a given type t and name. It returns the auto-generated\n * URN and the ID that will resolve after the deployment has completed. All properties will be initialized to property\n * objects that the registration operation will resolve at the right time (or remain unresolved for deployments).\n */\nfunction registerResource(res, parent, t, name, custom, remote, newDependency, props, opts, sourcePosition) {\n const label = `resource:${name}[${t}]`;\n log.debug(`Registering resource: t=${t}, name=${name}, custom=${custom}, remote=${remote}`);\n const monitor = settings_1.getMonitor();\n const resopAsync = prepareResource(label, res, parent, custom, remote, props, opts, t, name);\n // In order to present a useful stack trace if an error does occur, we preallocate potential\n // errors here. V8 captures a stack trace at the moment an Error is created and this stack\n // trace will lead directly to user code. Throwing in `runAsyncResourceOp` results in an Error\n // with a non-useful stack trace.\n const preallocError = new Error();\n debuggable_1.debuggablePromise(resopAsync.then((resop) => __awaiter(this, void 0, void 0, function* () {\n log.debug(`RegisterResource RPC prepared: t=${t}, name=${name}` +\n (settings_1.excessiveDebugOutput ? `, obj=${JSON.stringify(resop.serializedProps)}` : ``));\n yield settings_1.awaitStackRegistrations();\n const callbacks = [];\n if (opts.xTransforms !== undefined && opts.xTransforms.length > 0) {\n if (!state_1.getStore().supportsTransforms) {\n throw new Error(\"The Pulumi CLI does not support transforms. Please update the Pulumi CLI\");\n }\n const callbackServer = settings_1.getCallbacks();\n if (callbackServer === undefined) {\n throw new Error(\"Callback server could not initialize\");\n }\n for (const transform of opts.xTransforms) {\n callbacks.push(yield callbackServer.registerTransform(transform));\n }\n }\n const req = new resproto.RegisterResourceRequest();\n req.setType(t);\n req.setName(name);\n req.setParent(resop.parentURN || \"\");\n req.setCustom(custom);\n req.setObject(gstruct.Struct.fromJavaScript(resop.serializedProps));\n req.setProtect(opts.protect || false);\n req.setProvider(resop.providerRef || \"\");\n req.setDependenciesList(Array.from(resop.allDirectDependencyURNs));\n req.setDeletebeforereplace(opts.deleteBeforeReplace || false);\n req.setDeletebeforereplacedefined(opts.deleteBeforeReplace !== undefined);\n req.setIgnorechangesList(opts.ignoreChanges || []);\n req.setVersion(opts.version || \"\");\n req.setAcceptsecrets(true);\n req.setAcceptresources(!utils.disableResourceReferences);\n req.setAdditionalsecretoutputsList(opts.additionalSecretOutputs || []);\n if (resop.monitorSupportsStructuredAliases) {\n const aliasesList = yield mapAliasesForRequest(resop.aliases, resop.parentURN);\n req.setAliasesList(aliasesList);\n }\n else {\n const urns = new Array();\n resop.aliases.forEach((v) => {\n if (typeof v === \"string\") {\n urns.push(v);\n }\n });\n req.setAliasurnsList(urns);\n }\n req.setImportid(resop.import || \"\");\n req.setSupportspartialvalues(true);\n req.setRemote(remote);\n req.setReplaceonchangesList(opts.replaceOnChanges || []);\n req.setPlugindownloadurl(opts.pluginDownloadURL || \"\");\n req.setRetainondelete(opts.retainOnDelete || false);\n req.setDeletedwith(resop.deletedWithURN || \"\");\n req.setAliasspecs(true);\n req.setSourceposition(marshalSourcePosition(sourcePosition));\n req.setTransformsList(callbacks);\n if (resop.deletedWithURN && !state_1.getStore().supportsDeletedWith) {\n throw new Error(\"The Pulumi CLI does not support the DeletedWith option. Please update the Pulumi CLI.\");\n }\n const customTimeouts = new resproto.RegisterResourceRequest.CustomTimeouts();\n if (opts.customTimeouts != null) {\n customTimeouts.setCreate(opts.customTimeouts.create || \"\");\n customTimeouts.setUpdate(opts.customTimeouts.update || \"\");\n customTimeouts.setDelete(opts.customTimeouts.delete || \"\");\n }\n req.setCustomtimeouts(customTimeouts);\n const propertyDependencies = req.getPropertydependenciesMap();\n for (const [key, resourceURNs] of resop.propertyToDirectDependencyURNs) {\n const deps = new resproto.RegisterResourceRequest.PropertyDependencies();\n deps.setUrnsList(Array.from(resourceURNs));\n propertyDependencies.set(key, deps);\n }\n const providerRefs = req.getProvidersMap();\n for (const [key, ref] of resop.providerRefs) {\n providerRefs.set(key, ref);\n }\n // Now run the operation, serializing the invocation if necessary.\n const opLabel = `monitor.registerResource(${label})`;\n runAsyncResourceOp(opLabel, () => __awaiter(this, void 0, void 0, function* () {\n let resp = {};\n let err;\n try {\n if (monitor) {\n // If we're running with an attachment to the engine, perform the operation.\n resp = yield debuggable_1.debuggablePromise(new Promise((resolve, reject) => monitor.registerResource(req, (rpcErr, innerResponse) => {\n if (rpcErr) {\n err = rpcErr;\n // If the monitor is unavailable, it is in the process of shutting down or has already\n // shut down. Don't emit an error and don't do any more RPCs, just exit.\n if (rpcErr.code === grpc.status.UNAVAILABLE ||\n rpcErr.code === grpc.status.CANCELLED) {\n // Re-emit the message\n settings_1.terminateRpcs();\n rpcErr.message = \"Resource monitor is terminating\";\n preallocError.code = rpcErr.code;\n }\n // Node lets us hack the message as long as we do it before accessing the `stack` property.\n log.debug(`RegisterResource RPC finished: ${label}; err: ${rpcErr}, resp: ${innerResponse}`);\n preallocError.message = `failed to register new resource ${name} [${t}]: ${rpcErr.message}`;\n reject(preallocError);\n }\n else {\n log.debug(`RegisterResource RPC finished: ${label}; err: ${rpcErr}, resp: ${innerResponse}`);\n resolve(innerResponse);\n }\n })), opLabel);\n }\n else {\n // If we aren't attached to the engine, in test mode, mock up a fake response for testing purposes.\n const mockurn = yield resource_1.createUrn(req.getName(), req.getType(), req.getParent()).promise();\n resp = {\n getUrn: () => mockurn,\n getId: () => undefined,\n getObject: () => req.getObject(),\n getPropertydependenciesMap: () => undefined,\n };\n }\n }\n catch (e) {\n err = e;\n resp = {\n getUrn: () => \"\",\n getId: () => undefined,\n getObject: () => req.getObject(),\n getPropertydependenciesMap: () => undefined,\n };\n }\n resop.resolveURN(resp.getUrn(), err);\n // Note: 'id || undefined' is intentional. We intentionally collapse falsy values to\n // undefined so that later parts of our system don't have to deal with values like 'null'.\n if (resop.resolveID) {\n const id = resp.getId() || undefined;\n resop.resolveID(id, id !== undefined, err);\n }\n const deps = {};\n const rpcDeps = resp.getPropertydependenciesMap();\n if (rpcDeps) {\n for (const [k, propertyDeps] of resp.getPropertydependenciesMap().entries()) {\n const urns = propertyDeps.getUrnsList();\n deps[k] = urns.map((urn) => newDependency(urn));\n }\n }\n // Now resolve the output properties.\n yield resolveOutputs(res, t, name, props, resp.getObject(), deps, resop.resolvers, err);\n }));\n })), label);\n}\nexports.registerResource = registerResource;\n/** @internal\n * Prepares for an RPC that will manufacture a resource, and hence deals with input and output\n * properties.\n */\nfunction prepareResource(label, res, parent, custom, remote, props, opts, type, name) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // add an entry to the rpc queue while we prepare the request.\n // automation api inline programs that don't have stack exports can exit quickly. If we don't do this,\n // sometimes they will exit right after `prepareResource` is called as a part of register resource, but before the\n // .then() that adds to the queue via `runAsyncResourceOp`.\n const done = settings_1.rpcKeepAlive();\n try {\n // Simply initialize the URN property and get prepared to resolve it later on.\n // Note: a resource urn will always get a value, and thus the output property\n // for it can always run .apply calls.\n let resolveURN;\n {\n let resolveValue;\n let rejectValue;\n let resolveIsKnown;\n let rejectIsKnown;\n res.urn = new output_1.Output(res, debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveValue = resolve;\n rejectValue = reject;\n }), `resolveURN(${label})`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsKnown = resolve;\n rejectIsKnown = reject;\n }), `resolveURNIsKnown(${label})`), \n /*isSecret:*/ Promise.resolve(false), Promise.resolve(res));\n resolveURN = (v, err) => {\n if (err) {\n if (errors_1.isGrpcError(err)) {\n if (debuggable_1.debugPromiseLeaks) {\n console.error(\"info: skipped rejection in resolveURN\");\n }\n return;\n }\n rejectValue(err);\n rejectIsKnown(err);\n }\n else {\n resolveValue(v);\n resolveIsKnown(true);\n }\n };\n }\n // If a custom resource, make room for the ID property.\n let resolveID;\n if (custom) {\n let resolveValue;\n let rejectValue;\n let resolveIsKnown;\n let rejectIsKnown;\n res.id = new output_1.Output(res, debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveValue = resolve;\n rejectValue = reject;\n }), `resolveID(${label})`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsKnown = resolve;\n rejectIsKnown = reject;\n }), `resolveIDIsKnown(${label})`), Promise.resolve(false), Promise.resolve(res));\n resolveID = (v, isKnown, err) => {\n if (err) {\n if (errors_1.isGrpcError(err)) {\n if (debuggable_1.debugPromiseLeaks) {\n console.error(\"info: skipped rejection in resolveID\");\n }\n return;\n }\n rejectValue(err);\n rejectIsKnown(err);\n }\n else {\n resolveValue(v);\n resolveIsKnown(isKnown);\n }\n };\n }\n // Now \"transfer\" all input properties into unresolved Promises on res. This way,\n // this resource will look like it has all its output properties to anyone it is\n // passed to. However, those promises won't actually resolve until the registerResource\n // RPC returns\n const resolvers = rpc_1.transferProperties(res, label, props);\n /** IMPORTANT! We should never await prior to this line, otherwise the Resource will be partly uninitialized. */\n // Before we can proceed, all our dependencies must be finished.\n const explicitDirectDependencies = new Set(yield gatherExplicitDependencies(opts.dependsOn));\n // Serialize out all our props to their final values. In doing so, we'll also collect all\n // the Resources pointed to by any Dependency objects we encounter, adding them to 'propertyDependencies'.\n const [serializedProps, propertyToDirectDependencies] = yield rpc_1.serializeResourceProperties(label, props, {\n // To initially scope the use of this new feature, we only keep output values when\n // remote is true (for multi-lang components).\n keepOutputValues: remote,\n });\n // Wait for the parent to complete.\n // If no parent was provided, parent to the root resource.\n const parentURN = parent ? yield parent.urn.promise() : undefined;\n let importID;\n if (custom) {\n const customOpts = opts;\n importID = customOpts.import;\n }\n let providerRef;\n let sendProvider = custom;\n if (remote && opts.provider) {\n // If it's a remote component and a provider was specified, only\n // send the provider in the request if the provider's package is\n // the same as the component's package. Otherwise, don't send it\n // because the user specified `provider: someProvider` as shorthand\n // for `providers: [someProvider]`.\n const pkg = pkgFromType(type);\n if (pkg && pkg === opts.provider.getPackage()) {\n sendProvider = true;\n }\n }\n if (sendProvider) {\n providerRef = yield resource_1.ProviderResource.register(opts.provider);\n }\n const providerRefs = new Map();\n if (remote || !custom) {\n const componentOpts = opts;\n resource_1.expandProviders(componentOpts);\n // the casts are safe because expandProviders\n // /always/ leaves providers as an array.\n if (componentOpts.provider !== undefined) {\n if (componentOpts.providers === undefined) {\n // We still want to do the promotion, so we define providers\n componentOpts.providers = [componentOpts.provider];\n }\n else if (((_a = componentOpts.providers) === null || _a === void 0 ? void 0 : _a.indexOf(componentOpts.provider)) !== -1) {\n const pkg = componentOpts.provider.getPackage();\n const message = `There is a conflit between the 'provider' field (${pkg}) and a member of the 'providers' map'. `;\n const deprecationd = \"This will become an error in a future version. See https://github.com/pulumi/pulumi/issues/8799 for more details\";\n log.warn(message + deprecationd);\n }\n else {\n componentOpts.providers.push(componentOpts.provider);\n }\n }\n if (componentOpts.providers) {\n for (const provider of componentOpts.providers) {\n const pref = yield resource_1.ProviderResource.register(provider);\n if (pref) {\n providerRefs.set(provider.getPackage(), pref);\n }\n }\n }\n }\n // Collect the URNs for explicit/implicit dependencies for the engine so that it can understand\n // the dependency graph and optimize operations accordingly.\n // The list of all dependencies (implicit or explicit).\n const allDirectDependencies = new Set(explicitDirectDependencies);\n const exclude = new Set([res]);\n const allDirectDependencyURNs = yield getAllTransitivelyReferencedResourceURNs(explicitDirectDependencies, exclude);\n const propertyToDirectDependencyURNs = new Map();\n for (const [propertyName, directDependencies] of propertyToDirectDependencies) {\n addAll(allDirectDependencies, directDependencies);\n const urns = yield getAllTransitivelyReferencedResourceURNs(directDependencies, exclude);\n addAll(allDirectDependencyURNs, urns);\n propertyToDirectDependencyURNs.set(propertyName, urns);\n }\n const monitorSupportsStructuredAliases = state_1.getStore().supportsAliasSpecs;\n let computedAliases;\n if (!monitorSupportsStructuredAliases && parent) {\n computedAliases = resource_1.allAliases(opts.aliases || [], name, type, parent, parent.__name);\n }\n else {\n computedAliases = opts.aliases || [];\n }\n // Wait for all aliases.\n const aliases = [];\n const uniqueAliases = new Set();\n for (const alias of computedAliases || []) {\n const aliasVal = yield output_1.output(alias).promise();\n if (!uniqueAliases.has(aliasVal)) {\n uniqueAliases.add(aliasVal);\n aliases.push(aliasVal);\n }\n }\n const deletedWithURN = (opts === null || opts === void 0 ? void 0 : opts.deletedWith) ? yield opts.deletedWith.urn.promise() : undefined;\n return {\n resolveURN: resolveURN,\n resolveID: resolveID,\n resolvers: resolvers,\n serializedProps: serializedProps,\n parentURN: parentURN,\n providerRef: providerRef,\n providerRefs: providerRefs,\n allDirectDependencyURNs: allDirectDependencyURNs,\n propertyToDirectDependencyURNs: propertyToDirectDependencyURNs,\n aliases: aliases,\n import: importID,\n monitorSupportsStructuredAliases,\n deletedWithURN,\n };\n }\n finally {\n // free the RPC queue\n done();\n }\n });\n}\nexports.prepareResource = prepareResource;\nfunction addAll(to, from) {\n for (const val of from) {\n to.add(val);\n }\n}\n/** @internal */\nfunction getAllTransitivelyReferencedResourceURNs(resources, exclude) {\n return __awaiter(this, void 0, void 0, function* () {\n // Go through 'resources', but transitively walk through **Component** resources, collecting any\n // of their child resources. This way, a Component acts as an aggregation really of all the\n // reachable resources it parents. This walking will stop when it hits custom resources.\n //\n // This function also terminates at remote components, whose children are not known to the Node SDK directly.\n // Remote components will always wait on all of their children, so ensuring we return the remote component\n // itself here and waiting on it will accomplish waiting on all of it's children regardless of whether they\n // are returned explicitly here.\n //\n // In other words, if we had:\n //\n // Comp1\n // / | \\\n // Cust1 Comp2 Remote1\n // / \\ \\\n // Cust2 Cust3 Comp3\n // / \\\n // Cust4 Cust5\n //\n // Then the transitively reachable resources of Comp1 will be [Cust1, Cust2, Cust3, Remote1].\n // It will *not* include:\n // * Cust4 because it is a child of a custom resource\n // * Comp2 because it is a non-remote component resource\n // * Comp3 and Cust5 because Comp3 is a child of a remote component resource\n // To do this, first we just get the transitively reachable set of resources (not diving\n // into custom resources). In the above picture, if we start with 'Comp1', this will be\n // [Comp1, Cust1, Comp2, Cust2, Cust3]\n const transitivelyReachableResources = yield getTransitivelyReferencedChildResourcesOfComponentResources(resources, exclude);\n // Then we filter to only include Custom and Remote resources.\n const transitivelyReachableCustomResources = [...transitivelyReachableResources].filter((r) => (resource_1.CustomResource.isInstance(r) || r.__remote) && !exclude.has(r));\n const promises = transitivelyReachableCustomResources.map((r) => r.urn.promise());\n const urns = yield Promise.all(promises);\n return new Set(urns);\n });\n}\nexports.getAllTransitivelyReferencedResourceURNs = getAllTransitivelyReferencedResourceURNs;\n/**\n * Recursively walk the resources passed in, returning them and all resources reachable from\n * [Resource.__childResources] through any **Component** resources we encounter.\n */\nfunction getTransitivelyReferencedChildResourcesOfComponentResources(resources, exclude) {\n return __awaiter(this, void 0, void 0, function* () {\n // Recursively walk the dependent resources through their children, adding them to the result set.\n const result = new Set();\n yield addTransitivelyReferencedChildResourcesOfComponentResources(resources, exclude, result);\n return result;\n });\n}\nfunction addTransitivelyReferencedChildResourcesOfComponentResources(resources, exclude, result) {\n return __awaiter(this, void 0, void 0, function* () {\n if (resources) {\n for (const resource of resources) {\n if (!result.has(resource)) {\n result.add(resource);\n if (resource_1.ComponentResource.isInstance(resource)) {\n // Skip including children of a resource in the excluded set to avoid depending on\n // children that haven't been registered yet.\n if (exclude.has(resource)) {\n continue;\n }\n // This await is safe even if __isConstructed is undefined. Ensure that the\n // resource has completely finished construction. That way all parent/child\n // relationships will have been setup.\n yield resource.__data;\n const children = resource.__childResources;\n addTransitivelyReferencedChildResourcesOfComponentResources(children, exclude, result);\n }\n }\n }\n }\n });\n}\n/**\n * Gathers explicit dependent Resources from a list of Resources (possibly Promises and/or Outputs).\n */\nfunction gatherExplicitDependencies(dependsOn) {\n return __awaiter(this, void 0, void 0, function* () {\n if (dependsOn) {\n if (Array.isArray(dependsOn)) {\n const dos = [];\n for (const d of dependsOn) {\n dos.push(...(yield gatherExplicitDependencies(d)));\n }\n return dos;\n }\n else if (dependsOn instanceof Promise) {\n return gatherExplicitDependencies(yield dependsOn);\n }\n else if (output_1.Output.isInstance(dependsOn)) {\n // Recursively gather dependencies, await the promise, and append the output's dependencies.\n const dos = dependsOn.apply((v) => gatherExplicitDependencies(v));\n const urns = yield dos.promise();\n const dosResources = yield output_1.getAllResources(dos);\n const implicits = yield gatherExplicitDependencies([...dosResources]);\n return (urns !== null && urns !== void 0 ? urns : []).concat(implicits);\n }\n else {\n if (!resource_1.Resource.isInstance(dependsOn)) {\n throw new Error(\"'dependsOn' was passed a value that was not a Resource.\");\n }\n return [dependsOn];\n }\n }\n return [];\n });\n}\n/**\n * Finishes a resource creation RPC operation by resolving its outputs to the resulting RPC payload.\n */\nfunction resolveOutputs(res, t, name, props, outputs, deps, resolvers, err) {\n return __awaiter(this, void 0, void 0, function* () {\n // Produce a combined set of property states, starting with inputs and then applying\n // outputs. If the same property exists in the inputs and outputs states, the output wins.\n const allProps = {};\n if (outputs) {\n Object.assign(allProps, rpc_1.deserializeProperties(outputs));\n }\n const label = `resource:${name}[${t}]#...`;\n if (!settings_1.isDryRun() || settings_1.isLegacyApplyEnabled()) {\n for (const key of Object.keys(props)) {\n if (!allProps.hasOwnProperty(key)) {\n // input prop the engine didn't give us a final value for. Just use the value passed into the resource\n // after round-tripping it through serialization. We do the round-tripping primarily s.t. we ensure that\n // Output values are handled properly w.r.t. unknowns.\n const inputProp = yield rpc_1.serializeProperty(label, props[key], new Set(), { keepOutputValues: false });\n if (inputProp === undefined) {\n continue;\n }\n allProps[key] = rpc_1.deserializeProperty(inputProp);\n }\n }\n }\n rpc_1.resolveProperties(res, resolvers, t, name, allProps, deps, err);\n });\n}\n/**\n * registerResourceOutputs completes the resource registration, attaching an optional set of computed outputs.\n */\nfunction registerResourceOutputs(res, outputs) {\n // Now run the operation. Note that we explicitly do not serialize output registration with\n // respect to other resource operations, as outputs may depend on properties of other resources\n // that will not resolve until later turns. This would create a circular promise chain that can\n // never resolve.\n const opLabel = `monitor.registerResourceOutputs(...)`;\n runAsyncResourceOp(opLabel, () => __awaiter(this, void 0, void 0, function* () {\n // The registration could very well still be taking place, so we will need to wait for its URN.\n // Additionally, the output properties might have come from other resources, so we must await those too.\n const urn = yield res.urn.promise();\n const resolved = yield rpc_1.serializeProperties(opLabel, { outputs });\n const outputsObj = gstruct.Struct.fromJavaScript(resolved.outputs);\n log.debug(`RegisterResourceOutputs RPC prepared: urn=${urn}` +\n (settings_1.excessiveDebugOutput ? `, outputs=${JSON.stringify(outputsObj)}` : ``));\n // Fetch the monitor and make an RPC request.\n const monitor = settings_1.getMonitor();\n if (monitor) {\n const req = new resproto.RegisterResourceOutputsRequest();\n req.setUrn(urn);\n req.setOutputs(outputsObj);\n const label = `monitor.registerResourceOutputs(${urn}, ...)`;\n yield debuggable_1.debuggablePromise(new Promise((resolve, reject) => monitor.registerResourceOutputs(req, (err, innerResponse) => {\n log.debug(`RegisterResourceOutputs RPC finished: urn=${urn}; ` +\n `err: ${err}, resp: ${innerResponse}`);\n if (err) {\n // If the monitor is unavailable, it is in the process of shutting down or has already\n // shut down. Don't emit an error and don't do any more RPCs, just exit.\n if (err.code === grpc.status.UNAVAILABLE || err.code === grpc.status.CANCELLED) {\n settings_1.terminateRpcs();\n err.message = \"Resource monitor is terminating\";\n }\n reject(err);\n }\n else {\n log.debug(`RegisterResourceOutputs RPC finished: urn=${urn}; ` +\n `err: ${err}, resp: ${innerResponse}`);\n resolve();\n }\n })), label);\n }\n }), false);\n}\nexports.registerResourceOutputs = registerResourceOutputs;\nfunction isAny(o) {\n return true;\n}\n/**\n * listResourceOutputs returns the resource outputs (if any) for a stack, or an error if the stack\n * cannot be found. Resources are retrieved from the latest stack snapshot, which may include\n * ongoing updates.\n *\n * @param stackName Name of stack to retrieve resource outputs for. Defaults to the current stack.\n * @param typeFilter A [type\n * guard](https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards)\n * that specifies which resource types to list outputs of.\n *\n * @example\n * const buckets = pulumi.runtime.listResourceOutput(aws.s3.Bucket.isInstance);\n */\nfunction listResourceOutputs(typeFilter, stackName) {\n if (typeFilter === undefined) {\n typeFilter = isAny;\n }\n return query\n .from(invoke_1.invoke(\"pulumi:pulumi:readStackResourceOutputs\", {\n stackName: stackName || settings_1.getStack(),\n }).then(({ outputs }) => utils.values(outputs)))\n .map(({ type: typ, outputs }) => {\n return Object.assign(Object.assign({}, outputs), { __pulumiType: typ });\n })\n .filter(typeFilter);\n}\nexports.listResourceOutputs = listResourceOutputs;\n/**\n * resourceChain is used to serialize all resource requests. If we don't do this, all resource operations will be\n * entirely asynchronous, meaning the dataflow graph that results will determine ordering of operations. This\n * causes problems with some resource providers, so for now we will serialize all of them. The issue\n * pulumi/pulumi#335 tracks coming up with a long-term solution here.\n */\nlet resourceChain = Promise.resolve();\nlet resourceChainLabel = undefined;\n// runAsyncResourceOp runs an asynchronous resource operation, possibly serializing it as necessary.\nfunction runAsyncResourceOp(label, callback, serial) {\n // Serialize the invocation if necessary.\n if (serial === undefined) {\n serial = settings_1.serialize();\n }\n const resourceOp = rpc_1.suppressUnhandledGrpcRejections(debuggable_1.debuggablePromise(resourceChain.then(() => __awaiter(this, void 0, void 0, function* () {\n if (serial) {\n resourceChainLabel = label;\n log.debug(`Resource RPC serialization requested: ${label} is current`);\n }\n return callback();\n })), label + \"-initial\"));\n // Ensure the process won't exit until this RPC call finishes and resolve it when appropriate.\n const done = settings_1.rpcKeepAlive();\n const finalOp = debuggable_1.debuggablePromise(resourceOp.then(() => {\n done();\n }, () => {\n done();\n }), label + \"-final\");\n // Set up another promise that propagates the error, if any, so that it triggers unhandled rejection logic.\n resourceOp.catch((err) => Promise.reject(err));\n // If serialization is requested, wait for the prior resource operation to finish before we proceed, serializing\n // them, and make this the current resource operation so that everybody piles up on it.\n if (serial) {\n resourceChain = finalOp;\n if (resourceChainLabel) {\n log.debug(`Resource RPC serialization requested: ${label} is behind ${resourceChainLabel}`);\n }\n }\n}\n/**\n * Extract the pkg from the type token of the form \"pkg:module:member\".\n * @internal\n */\nfunction pkgFromType(type) {\n const parts = type.split(\":\");\n if (parts.length === 3) {\n return parts[0];\n }\n return undefined;\n}\nexports.pkgFromType = pkgFromType;\n//# sourceMappingURL=resource.js.map","\"use strict\";\n// Copyright 2016-2024, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst asset = __importStar(require(\"../asset\"));\nconst errors_1 = require(\"../errors\");\nconst log = __importStar(require(\"../log\"));\nconst output_1 = require(\"../output\");\nconst resource_1 = require(\"../resource\");\nconst debuggable_1 = require(\"./debuggable\");\nconst resource_2 = require(\"./resource\");\nconst settings_1 = require(\"./settings\");\nconst state_1 = require(\"./state\");\nconst semver = __importStar(require(\"semver\"));\n/**\n * transferProperties mutates the 'onto' resource so that it has Promise-valued properties for all\n * the 'props' input/output props. *Importantly* all these promises are completely unresolved. This\n * is because we don't want anyone to observe the values of these properties until the rpc call to\n * registerResource actually returns. This is because the registerResource call may actually\n * override input values, and we only want people to see the final value.\n *\n * The result of this call (beyond the stateful changes to 'onto') is the set of Promise resolvers\n * that will be called post-RPC call. When the registerResource RPC call comes back, the values\n * that the engine actualy produced will be used to resolve all the unresolved promised placed on\n * 'onto'.\n */\nfunction transferProperties(onto, label, props) {\n const resolvers = {};\n for (const k of Object.keys(props)) {\n // Skip \"id\" and \"urn\", since we handle those specially.\n if (k === \"id\" || k === \"urn\") {\n continue;\n }\n // Create a property to wrap the value and store it on the resource.\n if (onto.hasOwnProperty(k)) {\n throw new Error(`Property '${k}' is already initialized on target '${label}`);\n }\n let resolveValue;\n let rejectValue;\n let resolveIsKnown;\n let rejectIsKnown;\n let resolveIsSecret;\n let rejectIsSecret;\n let resolveDeps;\n let rejectDeps;\n resolvers[k] = (v, isKnown, isSecret, deps = [], err) => {\n if (err) {\n if (errors_1.isGrpcError(err)) {\n if (debuggable_1.debugPromiseLeaks) {\n console.error(\"info: skipped rejection in transferProperties\");\n }\n return;\n }\n rejectValue(err);\n rejectIsKnown(err);\n rejectIsSecret(err);\n rejectDeps(err);\n }\n else {\n resolveValue(v);\n resolveIsKnown(isKnown);\n resolveIsSecret(isSecret);\n resolveDeps(deps);\n }\n };\n const propString = output_1.Output.isInstance(props[k]) ? \"Output\" : `${props[k]}`;\n onto[k] = new output_1.Output(onto, debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveValue = resolve;\n rejectValue = reject;\n }), `transferProperty(${label}, ${k}, ${propString})`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsKnown = resolve;\n rejectIsKnown = reject;\n }), `transferIsStable(${label}, ${k}, ${propString})`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveIsSecret = resolve;\n rejectIsSecret = reject;\n }), `transferIsSecret(${label}, ${k}, ${propString})`), debuggable_1.debuggablePromise(new Promise((resolve, reject) => {\n resolveDeps = resolve;\n rejectDeps = reject;\n }), `transferDeps(${label}, ${k}, ${propString})`));\n }\n return resolvers;\n}\nexports.transferProperties = transferProperties;\n/**\n * serializeFilteredProperties walks the props object passed in, awaiting all interior promises for\n * properties with keys that match the provided filter, creating a reasonable POJO object that can\n * be remoted over to registerResource.\n */\nfunction serializeFilteredProperties(label, props, acceptKey, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const propertyToDependentResources = new Map();\n const result = {};\n for (const k of Object.keys(props)) {\n if (acceptKey(k)) {\n // We treat properties with undefined values as if they do not exist.\n const dependentResources = new Set();\n const v = yield serializeProperty(`${label}.${k}`, props[k], dependentResources, opts);\n if (v !== undefined) {\n result[k] = v;\n propertyToDependentResources.set(k, dependentResources);\n }\n }\n }\n return [result, propertyToDependentResources];\n });\n}\n/**\n * serializeResourceProperties walks the props object passed in, awaiting all interior promises besides those for `id`\n * and `urn`, creating a reasonable POJO object that can be remoted over to registerResource.\n */\nfunction serializeResourceProperties(label, props, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n return serializeFilteredProperties(label, props, (key) => key !== \"id\" && key !== \"urn\", opts);\n });\n}\nexports.serializeResourceProperties = serializeResourceProperties;\n/**\n * serializeProperties walks the props object passed in, awaiting all interior promises, creating a reasonable\n * POJO object that can be remoted over to registerResource.\n */\nfunction serializeProperties(label, props, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const [result] = yield serializeFilteredProperties(label, props, (_) => true, opts);\n return result;\n });\n}\nexports.serializeProperties = serializeProperties;\n/** @internal */\nfunction serializePropertiesReturnDeps(label, props, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n return serializeFilteredProperties(label, props, (_) => true, opts);\n });\n}\nexports.serializePropertiesReturnDeps = serializePropertiesReturnDeps;\n/**\n * deserializeProperties fetches the raw outputs and deserializes them from a gRPC call result.\n */\nfunction deserializeProperties(outputsStruct) {\n const props = {};\n const outputs = outputsStruct.toJavaScript();\n for (const k of Object.keys(outputs)) {\n // We treat properties with undefined values as if they do not exist.\n if (outputs[k] !== undefined) {\n props[k] = deserializeProperty(outputs[k]);\n }\n }\n return props;\n}\nexports.deserializeProperties = deserializeProperties;\n/**\n * resolveProperties takes as input a gRPC serialized proto.google.protobuf.Struct and resolves all\n * of the resource's matching properties to the values inside.\n *\n * NOTE: it is imperative that the properties in `allProps` were produced by `deserializeProperties` in order for\n * output properties to work correctly w.r.t. knowns/unknowns: this function assumes that any undefined value in\n * `allProps`represents an unknown value that was returned by an engine operation.\n */\nfunction resolveProperties(res, resolvers, t, name, allProps, deps, err) {\n // If there is an error, just reject everything.\n if (err) {\n for (const k of Object.keys(resolvers)) {\n const resolve = resolvers[k];\n resolve(undefined, true, false, [], err);\n }\n return;\n }\n // Now go ahead and resolve all properties present in the inputs and outputs set.\n for (const k of Object.keys(allProps)) {\n // Skip \"id\" and \"urn\", since we handle those specially.\n if (k === \"id\" || k === \"urn\") {\n continue;\n }\n // Otherwise, unmarshal the value, and store it on the resource object.\n const resolve = resolvers[k];\n if (resolve === undefined) {\n // engine returned a property that was not in our initial property-map. This can happen\n // for outputs that were registered through direct calls to 'registerOutputs'. We do\n // *not* want to do anything with these returned properties. First, the component\n // resources that were calling 'registerOutputs' will have already assigned these fields\n // directly on them themselves. Second, if we were to try to assign here we would have\n // an incredibly bad race condition for two reasons:\n //\n // 1. This call to 'resolveProperties' happens asynchronously at some point far after\n // the resource was constructed. So the user will have been able to observe the\n // initial value up until we get to this point.\n //\n // 2. The component resource will have often assigned a value of some arbitrary type\n // (say, a 'string'). If we overwrite this with an `Output` we'll be changing\n // the type at some non-deterministic point in the future.\n continue;\n }\n // If this value is a secret, unwrap its inner value.\n let value = allProps[k];\n const isSecret = isRpcSecret(value);\n value = unwrapRpcSecret(value);\n try {\n // If the value the engine handed back is or contains an unknown value, the resolver will mark its value as\n // unknown automatically, so we just pass true for isKnown here. Note that unknown values will only be\n // present during previews (i.e. isDryRun() will be true).\n resolve(value, /*isKnown*/ true, isSecret, deps[k]);\n }\n catch (resolveError) {\n throw new Error(`Unable to set property '${k}' on resource '${name}' [${t}]; error: ${debuggable_1.errorString(resolveError)}`);\n }\n }\n // `allProps` may not have contained a value for every resolver: for example, optional outputs may not be present.\n // We will resolve all of these values as `undefined`, and will mark the value as known if we are not running a\n // preview.\n for (const k of Object.keys(resolvers)) {\n if (!allProps.hasOwnProperty(k)) {\n const resolve = resolvers[k];\n resolve(undefined, !settings_1.isDryRun(), false);\n }\n }\n}\nexports.resolveProperties = resolveProperties;\n/**\n * Unknown values are encoded as a distinguished string value.\n */\nexports.unknownValue = \"04da6b54-80e4-46f7-96ec-b56ff0331ba9\";\n/**\n * specialSigKey is sometimes used to encode type identity inside of a map. See sdk/go/common/resource/properties.go.\n */\nexports.specialSigKey = \"4dabf18193072939515e22adb298388d\";\n/**\n * specialAssetSig is a randomly assigned hash used to identify assets in maps. See sdk/go/common/resource/asset.go.\n */\nexports.specialAssetSig = \"c44067f5952c0a294b673a41bacd8c17\";\n/**\n * specialArchiveSig is a randomly assigned hash used to identify archives in maps. See sdk/go/common/resource/asset.go.\n */\nexports.specialArchiveSig = \"0def7320c3a5731c473e5ecbe6d01bc7\";\n/**\n * specialSecretSig is a randomly assigned hash used to identify secrets in maps.\n * See sdk/go/common/resource/properties.go.\n */\nexports.specialSecretSig = \"1b47061264138c4ac30d75fd1eb44270\";\n/**\n * specialResourceSig is a randomly assigned hash used to identify resources in maps.\n * See sdk/go/common/resource/properties.go.\n */\nexports.specialResourceSig = \"5cf8f73096256a8f31e491e813e4eb8e\";\n/**\n * specialOutputValueSig is a randomly assigned hash used to identify outputs in maps.\n * See sdk/go/common/resource/properties.go.\n */\nexports.specialOutputValueSig = \"d0e6a833031e9bbcd3f4e8bde6ca49a4\";\n/**\n * serializeProperty serializes properties deeply. This understands how to wait on any unresolved promises, as\n * appropriate, in addition to translating certain \"special\" values so that they are ready to go on the wire.\n */\nfunction serializeProperty(ctx, prop, dependentResources, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n // IMPORTANT:\n // IMPORTANT: Keep this in sync with serializePropertiesSync in invoke.ts\n // IMPORTANT:\n if (prop === undefined ||\n prop === null ||\n typeof prop === \"boolean\" ||\n typeof prop === \"number\" ||\n typeof prop === \"string\") {\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: primitive=${prop}`);\n }\n return prop;\n }\n if (asset.Asset.isInstance(prop) || asset.Archive.isInstance(prop)) {\n // Serializing an asset or archive requires the use of a magical signature key, since otherwise it would look\n // like any old weakly typed object/map when received by the other side of the RPC boundary.\n const obj = {\n [exports.specialSigKey]: asset.Asset.isInstance(prop) ? exports.specialAssetSig : exports.specialArchiveSig,\n };\n return yield serializeAllKeys(prop, obj, { keepOutputValues: false });\n }\n if (prop instanceof Promise) {\n // For a promise input, await the property and then serialize the result.\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: Promise`);\n }\n const subctx = `Promise<${ctx}>`;\n return serializeProperty(subctx, yield debuggable_1.debuggablePromise(prop, `serializeProperty.await(${subctx})`), dependentResources, opts);\n }\n if (output_1.Output.isInstance(prop)) {\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: Output`);\n }\n // handle serializing both old-style outputs (with sync resources) and new-style outputs\n // (with async resources).\n const propResources = yield output_1.getAllResources(prop);\n for (const resource of propResources) {\n dependentResources.add(resource);\n }\n // When serializing an Output, we will either serialize it as its resolved value or the \"unknown value\"\n // sentinel. We will do the former for all outputs created directly by user code (such outputs always\n // resolve isKnown to true) and for any resource outputs that were resolved with known values.\n const isKnown = yield prop.isKnown;\n // You might think that doing an explict `=== true` here is not needed, but it is for a subtle reason. If the\n // output we are serializing is a proxy itself, and it comes from a version of the SDK that did not have the\n // `isSecret` member on `OutputImpl` then the call to `prop.isSecret` here will return an Output itself,\n // which will wrap undefined, if it were to be resolved (since `Output` has no member named .isSecret).\n // so we must compare to the literal true instead of just doing await prop.isSecret.\n const isSecret = (yield prop.isSecret) === true;\n const promiseDeps = new Set();\n const value = yield serializeProperty(`${ctx}.id`, prop.promise(), promiseDeps, {\n keepOutputValues: false,\n });\n for (const resource of promiseDeps) {\n propResources.add(resource);\n dependentResources.add(resource);\n }\n if ((opts === null || opts === void 0 ? void 0 : opts.keepOutputValues) && state_1.getStore().supportsOutputValues) {\n const urnDeps = new Set();\n for (const resource of propResources) {\n yield serializeProperty(`${ctx} dependency`, resource.urn, urnDeps, {\n keepOutputValues: false,\n });\n }\n for (const resource of urnDeps) {\n propResources.add(resource);\n dependentResources.add(resource);\n }\n const dependencies = yield resource_2.getAllTransitivelyReferencedResourceURNs(propResources, new Set());\n const obj = {\n [exports.specialSigKey]: exports.specialOutputValueSig,\n };\n if (isKnown) {\n // coerce 'undefined' to 'null' as required by the protobuf system.\n obj[\"value\"] = value === undefined ? null : value;\n }\n if (isSecret) {\n obj[\"secret\"] = isSecret;\n }\n if (dependencies.size > 0) {\n obj[\"dependencies\"] = Array.from(dependencies);\n }\n return obj;\n }\n if (!isKnown) {\n return exports.unknownValue;\n }\n if (isSecret && state_1.getStore().supportsSecrets) {\n return {\n [exports.specialSigKey]: exports.specialSecretSig,\n // coerce 'undefined' to 'null' as required by the protobuf system.\n value: value === undefined ? null : value,\n };\n }\n return value;\n }\n if (output_1.isUnknown(prop)) {\n return exports.unknownValue;\n }\n if (resource_1.CustomResource.isInstance(prop)) {\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: custom resource urn`);\n }\n dependentResources.add(prop);\n const id = yield serializeProperty(`${ctx}.id`, prop.id, dependentResources, {\n keepOutputValues: false,\n });\n if (state_1.getStore().supportsResourceReferences) {\n // If we are keeping resources, emit a stronly typed wrapper over the URN\n const urn = yield serializeProperty(`${ctx}.urn`, prop.urn, dependentResources, {\n keepOutputValues: false,\n });\n return {\n [exports.specialSigKey]: exports.specialResourceSig,\n urn: urn,\n id: id,\n };\n }\n // Else, return the id for backward compatibility.\n return id;\n }\n if (resource_1.ComponentResource.isInstance(prop)) {\n // Component resources often can contain cycles in them. For example, an awsinfra\n // SecurityGroupRule can point a the awsinfra SecurityGroup, which in turn can point back to\n // its rules through its `egressRules` and `ingressRules` properties. If serializing out\n // the `SecurityGroup` resource ends up trying to serialize out those properties, a deadlock\n // will happen, due to waiting on the child, which is waiting on the parent.\n //\n // Practically, there is no need to actually serialize out a component. It doesn't represent\n // a real resource, nor does it have normal properties that need to be tracked for differences\n // (since changes to its properties don't represent changes to resources in the real world).\n //\n // So, to avoid these problems, while allowing a flexible and simple programming model, we\n // just serialize out the component as its urn. This allows the component to be identified\n // and tracked in a reasonable manner, while not causing us to compute or embed information\n // about it that is not needed, and which can lead to deadlocks.\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: component resource urn`);\n }\n if (state_1.getStore().supportsResourceReferences) {\n // If we are keeping resources, emit a strongly typed wrapper over the URN\n const urn = yield serializeProperty(`${ctx}.urn`, prop.urn, dependentResources, {\n keepOutputValues: false,\n });\n return {\n [exports.specialSigKey]: exports.specialResourceSig,\n urn: urn,\n };\n }\n // Else, return the urn for backward compatibility.\n return serializeProperty(`${ctx}.urn`, prop.urn, dependentResources, {\n keepOutputValues: false,\n });\n }\n if (prop instanceof Array) {\n const result = [];\n for (let i = 0; i < prop.length; i++) {\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: array[${i}] element`);\n }\n // When serializing arrays, we serialize any undefined values as `null`. This matches JSON semantics.\n const elem = yield serializeProperty(`${ctx}[${i}]`, prop[i], dependentResources, opts);\n result.push(elem === undefined ? null : elem);\n }\n return result;\n }\n return yield serializeAllKeys(prop, {}, opts);\n function serializeAllKeys(innerProp, obj, innerOpts) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const k of Object.keys(innerProp)) {\n if (settings_1.excessiveDebugOutput) {\n log.debug(`Serialize property [${ctx}]: object.${k}`);\n }\n // When serializing an object, we omit any keys with undefined values. This matches JSON semantics.\n const v = yield serializeProperty(`${ctx}.${k}`, innerProp[k], dependentResources, innerOpts);\n if (v !== undefined) {\n obj[k] = v;\n }\n }\n return obj;\n });\n }\n });\n}\nexports.serializeProperty = serializeProperty;\n/**\n * isRpcSecret returns true if obj is a wrapped secret value (i.e. it's an object with the special key set).\n */\nfunction isRpcSecret(obj) {\n return obj && obj[exports.specialSigKey] === exports.specialSecretSig;\n}\nexports.isRpcSecret = isRpcSecret;\n/**\n * unwrapRpcSecret returns the underlying value for a secret, or the value itself if it was not a secret.\n */\nfunction unwrapRpcSecret(obj) {\n if (!isRpcSecret(obj)) {\n return obj;\n }\n return obj.value;\n}\nexports.unwrapRpcSecret = unwrapRpcSecret;\n/**\n * deserializeProperty unpacks some special types, reversing the above process.\n */\nfunction deserializeProperty(prop) {\n if (prop === undefined) {\n throw new Error(\"unexpected undefined property value during deserialization\");\n }\n else if (prop === exports.unknownValue) {\n return settings_1.isDryRun() ? output_1.unknown : undefined;\n }\n else if (prop === null || typeof prop === \"boolean\" || typeof prop === \"number\" || typeof prop === \"string\") {\n return prop;\n }\n else if (prop instanceof Array) {\n // We can just deserialize all the elements of the underlying array and return it.\n // However, we want to push secretness up to the top level (since we can't set sub-properties to secret)\n // values since they are not typed as Output.\n let hadSecret = false;\n const elems = [];\n for (const e of prop) {\n prop = deserializeProperty(e);\n hadSecret = hadSecret || isRpcSecret(prop);\n elems.push(unwrapRpcSecret(prop));\n }\n if (hadSecret) {\n return {\n [exports.specialSigKey]: exports.specialSecretSig,\n value: elems,\n };\n }\n return elems;\n }\n else {\n // We need to recognize assets and archives specially, so we can produce the right runtime objects.\n const sig = prop[exports.specialSigKey];\n if (sig) {\n switch (sig) {\n case exports.specialAssetSig:\n if (prop[\"path\"]) {\n return new asset.FileAsset(prop[\"path\"]);\n }\n else if (prop[\"text\"]) {\n return new asset.StringAsset(prop[\"text\"]);\n }\n else if (prop[\"uri\"]) {\n return new asset.RemoteAsset(prop[\"uri\"]);\n }\n else {\n throw new Error(\"Invalid asset encountered when unmarshaling resource property\");\n }\n case exports.specialArchiveSig:\n if (prop[\"assets\"]) {\n const assets = {};\n for (const name of Object.keys(prop[\"assets\"])) {\n const a = deserializeProperty(prop[\"assets\"][name]);\n if (!asset.Asset.isInstance(a) && !asset.Archive.isInstance(a)) {\n throw new Error(\"Expected an AssetArchive's assets to be unmarshaled Asset or Archive objects\");\n }\n assets[name] = a;\n }\n return new asset.AssetArchive(assets);\n }\n else if (prop[\"path\"]) {\n return new asset.FileArchive(prop[\"path\"]);\n }\n else if (prop[\"uri\"]) {\n return new asset.RemoteArchive(prop[\"uri\"]);\n }\n else {\n throw new Error(\"Invalid archive encountered when unmarshaling resource property\");\n }\n case exports.specialSecretSig:\n return {\n [exports.specialSigKey]: exports.specialSecretSig,\n value: deserializeProperty(prop[\"value\"]),\n };\n case exports.specialResourceSig:\n // Deserialize the resource into a live Resource reference\n const urn = prop[\"urn\"];\n const version = prop[\"packageVersion\"];\n const urnParts = urn.split(\"::\");\n const qualifiedType = urnParts[2];\n const urnName = urnParts[3];\n const type = qualifiedType.split(\"$\").pop();\n const typeParts = type.split(\":\");\n const pkgName = typeParts[0];\n const modName = typeParts.length > 1 ? typeParts[1] : \"\";\n const typName = typeParts.length > 2 ? typeParts[2] : \"\";\n const isProvider = pkgName === \"pulumi\" && modName === \"providers\";\n if (isProvider) {\n const resourcePackage = getResourcePackage(typName, version);\n if (resourcePackage) {\n return resourcePackage.constructProvider(urnName, type, urn);\n }\n }\n else {\n const resourceModule = getResourceModule(pkgName, modName, version);\n if (resourceModule) {\n return resourceModule.construct(urnName, type, urn);\n }\n }\n // If we've made it here, deserialize the reference as either a URN or an ID (if present).\n if (prop[\"id\"]) {\n const id = prop[\"id\"];\n return deserializeProperty(id === \"\" ? exports.unknownValue : id);\n }\n return urn;\n case exports.specialOutputValueSig:\n let value = prop[\"value\"];\n const isKnown = value !== undefined;\n if (isKnown) {\n value = deserializeProperty(value);\n }\n const isSecret = prop[\"secret\"] === true;\n const dependencies = prop[\"dependencies\"];\n const resources = Array.isArray(dependencies)\n ? dependencies.map((d) => new resource_1.DependencyResource(d))\n : [];\n return new output_1.Output(resources, Promise.resolve(value), Promise.resolve(isKnown), Promise.resolve(isSecret), Promise.resolve([]));\n default:\n throw new Error(`Unrecognized signature '${sig}' when unmarshaling resource property`);\n }\n }\n // If there isn't a signature, it's not a special type, and we can simply return the object as a map.\n // However, we want to push secretness up to the top level (since we can't set sub-properties to secret)\n // values since they are not typed as Output.\n const obj = {};\n let hadSecrets = false;\n for (const k of Object.keys(prop)) {\n const o = deserializeProperty(prop[k]);\n hadSecrets = hadSecrets || isRpcSecret(o);\n obj[k] = unwrapRpcSecret(o);\n }\n if (hadSecrets) {\n return {\n [exports.specialSigKey]: exports.specialSecretSig,\n value: obj,\n };\n }\n return obj;\n }\n}\nexports.deserializeProperty = deserializeProperty;\n/**\n * suppressUnhandledGrpcRejections silences any unhandled promise rejections that occur due to gRPC errors. The input\n * promise may still be rejected.\n */\nfunction suppressUnhandledGrpcRejections(p) {\n p.catch((err) => {\n if (!errors_1.isGrpcError(err)) {\n throw err;\n }\n });\n return p;\n}\nexports.suppressUnhandledGrpcRejections = suppressUnhandledGrpcRejections;\nfunction sameVersion(a, b) {\n // We treat undefined as a wildcard, so it always equals every other version.\n return a === undefined || b === undefined || semver.eq(a, b);\n}\nfunction checkVersion(want, have) {\n if (want === undefined || have === undefined) {\n return true;\n }\n return have.major === want.major && have.minor >= want.minor && have.patch >= want.patch;\n}\n/** @internal */\nfunction register(source, registrationType, key, item) {\n let items = source.get(key);\n if (items) {\n for (const existing of items) {\n if (sameVersion(existing.version, item.version)) {\n // It is possible for the same version of the same provider SDK to be loaded multiple times in Node.js.\n // In this case, we might legitimately get multiple registrations of the same resource. It should not\n // matter which we use, so we can just skip re-registering. De-serialized resources will always be\n // instances of classes from the first registered package.\n if (settings_1.excessiveDebugOutput) {\n log.debug(`skip re-registering already registered ${registrationType} ${key}@${item.version}.`);\n }\n return false;\n }\n }\n }\n else {\n items = [];\n source.set(key, items);\n }\n if (settings_1.excessiveDebugOutput) {\n log.debug(`registering ${registrationType} ${key}@${item.version}`);\n }\n items.push(item);\n return true;\n}\nexports.register = register;\n/** @internal */\nfunction getRegistration(source, key, version) {\n var _a;\n const ver = version ? new semver.SemVer(version) : undefined;\n let bestMatch = undefined;\n let bestMatchVersion = undefined;\n for (const existing of (_a = source.get(key)) !== null && _a !== void 0 ? _a : []) {\n const existingVersion = existing.version !== undefined ? new semver.SemVer(existing.version) : undefined;\n if (!checkVersion(ver, existingVersion)) {\n continue;\n }\n if (!bestMatch || (existingVersion && bestMatchVersion && semver.gt(existingVersion, bestMatchVersion))) {\n bestMatch = existing;\n bestMatchVersion = existingVersion;\n }\n }\n return bestMatch;\n}\nexports.getRegistration = getRegistration;\nconst resourcePackages = new Map();\n/** @internal Used only for testing purposes. */\nfunction _resetResourcePackages() {\n resourcePackages.clear();\n}\nexports._resetResourcePackages = _resetResourcePackages;\n/**\n * registerResourcePackage registers a resource package that will be used to construct providers for any URNs matching\n * the package name and version that are deserialized by the current instance of the Pulumi JavaScript SDK.\n */\nfunction registerResourcePackage(pkg, resourcePackage) {\n register(resourcePackages, \"package\", pkg, resourcePackage);\n}\nexports.registerResourcePackage = registerResourcePackage;\nfunction getResourcePackage(pkg, version) {\n return getRegistration(resourcePackages, pkg, version);\n}\nexports.getResourcePackage = getResourcePackage;\nconst resourceModules = new Map();\nfunction moduleKey(pkg, mod) {\n return `${pkg}:${mod}`;\n}\n/** @internal Used only for testing purposes. */\nfunction _resetResourceModules() {\n resourceModules.clear();\n}\nexports._resetResourceModules = _resetResourceModules;\n/**\n * registerResourceModule registers a resource module that will be used to construct resources for any URNs matching\n * the module name and version that are deserialized by the current instance of the Pulumi JavaScript SDK.\n */\nfunction registerResourceModule(pkg, mod, module) {\n const key = moduleKey(pkg, mod);\n register(resourceModules, \"module\", key, module);\n}\nexports.registerResourceModule = registerResourceModule;\nfunction getResourceModule(pkg, mod, version) {\n const key = moduleKey(pkg, mod);\n return getRegistration(resourceModules, key, version);\n}\nexports.getResourceModule = getResourceModule;\n//# sourceMappingURL=rpc.js.map","\"use strict\";\n// Copyright 2016-2021, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst grpc = __importStar(require(\"@grpc/grpc-js\"));\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\nconst callbacks_1 = require(\"./callbacks\");\nconst debuggable_1 = require(\"./debuggable\");\nconst state_1 = require(\"./state\");\nconst engrpc = __importStar(require(\"../proto/engine_grpc_pb\"));\nconst engproto = __importStar(require(\"../proto/engine_pb\"));\nconst resrpc = __importStar(require(\"../proto/resource_grpc_pb\"));\nconst resproto = __importStar(require(\"../proto/resource_pb\"));\n// maxRPCMessageSize raises the gRPC Max Message size from `4194304` (4mb) to `419430400` (400mb)\n/** @internal */\nexports.maxRPCMessageSize = 1024 * 1024 * 400;\nconst grpcChannelOptions = { \"grpc.max_receive_message_length\": exports.maxRPCMessageSize };\n/**\n * excessiveDebugOutput enables, well, pretty excessive debug output pertaining to resources and properties.\n */\nexports.excessiveDebugOutput = false;\nlet monitor;\nlet engine;\n// reset options resets nodejs runtime global state (such as rpc clients),\n// and sets nodejs runtime option env vars to the specified values.\nfunction resetOptions(project, stack, parallel, engineAddr, monitorAddr, preview, organization) {\n const store = state_1.getStore();\n monitor = undefined;\n engine = undefined;\n store.settings.monitor = undefined;\n store.settings.engine = undefined;\n store.settings.rpcDone = Promise.resolve();\n store.settings.featureSupport = {};\n // reset node specific environment variables in the process\n store.settings.options.project = project;\n store.settings.options.stack = stack;\n store.settings.options.dryRun = preview;\n store.settings.options.queryMode = isQueryMode();\n store.settings.options.parallel = parallel;\n store.settings.options.monitorAddr = monitorAddr;\n store.settings.options.engineAddr = engineAddr;\n store.settings.options.organization = organization;\n store.leakCandidates = new Set();\n store.logErrorCount = 0;\n store.stackResource = undefined;\n store.supportsSecrets = false;\n store.supportsResourceReferences = false;\n store.supportsOutputValues = false;\n store.supportsDeletedWith = false;\n store.supportsAliasSpecs = false;\n store.supportsTransforms = false;\n store.callbacks = undefined;\n}\nexports.resetOptions = resetOptions;\nfunction setMockOptions(mockMonitor, project, stack, preview, organization) {\n const opts = options();\n resetOptions(project || opts.project || \"project\", stack || opts.stack || \"stack\", opts.parallel || -1, opts.engineAddr || \"\", opts.monitorAddr || \"\", preview || false, organization || \"\");\n monitor = mockMonitor;\n}\nexports.setMockOptions = setMockOptions;\n/** @internal Used only for testing purposes. */\nfunction _setIsDryRun(val) {\n const { settings } = state_1.getStore();\n settings.options.dryRun = val;\n}\nexports._setIsDryRun = _setIsDryRun;\n/**\n * Returns whether or not we are currently doing a preview.\n *\n * When writing unit tests, you can set this flag via either `setMocks` or `_setIsDryRun`.\n */\nfunction isDryRun() {\n return options().dryRun === true;\n}\nexports.isDryRun = isDryRun;\n/**\n * monitorSupportsFeature returns a promise that when resolved tells you if the resource monitor we are connected\n * to is able to support a particular feature.\n *\n * @internal\n */\nfunction monitorSupportsFeature(monitorClient, feature) {\n return __awaiter(this, void 0, void 0, function* () {\n const req = new resproto.SupportsFeatureRequest();\n req.setId(feature);\n const result = yield new Promise((resolve, reject) => {\n monitorClient.supportsFeature(req, (err, resp) => {\n // Back-compat case - if the monitor doesn't let us ask if it supports a feature, it doesn't support\n // any features.\n if (err && err.code === grpc.status.UNIMPLEMENTED) {\n return resolve(false);\n }\n if (err) {\n return reject(err);\n }\n if (resp === undefined) {\n return reject(new Error(\"No response from resource monitor\"));\n }\n return resolve(resp.getHassupport());\n });\n });\n return result;\n });\n}\n/**\n * Queries the resource monitor for its capabilities and sets the appropriate flags in the store.\n *\n * @internal\n **/\nfunction awaitFeatureSupport() {\n return __awaiter(this, void 0, void 0, function* () {\n const monitorRef = getMonitor();\n if (monitorRef !== undefined) {\n const store = state_1.getStore();\n store.supportsSecrets = yield monitorSupportsFeature(monitorRef, \"secrets\");\n store.supportsResourceReferences = yield monitorSupportsFeature(monitorRef, \"resourceReferences\");\n store.supportsOutputValues = yield monitorSupportsFeature(monitorRef, \"outputValues\");\n store.supportsDeletedWith = yield monitorSupportsFeature(monitorRef, \"deletedWith\");\n store.supportsAliasSpecs = yield monitorSupportsFeature(monitorRef, \"aliasSpecs\");\n store.supportsTransforms = yield monitorSupportsFeature(monitorRef, \"transforms\");\n }\n });\n}\nexports.awaitFeatureSupport = awaitFeatureSupport;\n/** @internal Used only for testing purposes. */\nfunction _setQueryMode(val) {\n const { settings } = state_1.getStore();\n settings.options.queryMode = val;\n}\nexports._setQueryMode = _setQueryMode;\n/** @internal Used only for testing purposes */\nfunction _reset() {\n resetOptions(\"\", \"\", -1, \"\", \"\", false, \"\");\n}\nexports._reset = _reset;\n/**\n * Returns true if query mode is enabled.\n */\nfunction isQueryMode() {\n return options().queryMode === true;\n}\nexports.isQueryMode = isQueryMode;\n/**\n * Returns true if we will resolve missing outputs to inputs during preview (PULUMI_ENABLE_LEGACY_APPLY).\n */\nfunction isLegacyApplyEnabled() {\n return options().legacyApply === true;\n}\nexports.isLegacyApplyEnabled = isLegacyApplyEnabled;\n/**\n * Returns true (default) if we will cache serialized dynamic providers on the program side\n */\nfunction cacheDynamicProviders() {\n return options().cacheDynamicProviders === true;\n}\nexports.cacheDynamicProviders = cacheDynamicProviders;\n/**\n * Get the organization being run by the current update.\n */\nfunction getOrganization() {\n const organization = options().organization;\n if (organization) {\n return organization;\n }\n // If the organization is missing, specialize the error.\n // Throw an error if test mode is enabled, instructing how to manually configure the organization:\n throw new Error(\"Missing organization name; for test mode, please call `pulumi.runtime.setMocks`\");\n}\nexports.getOrganization = getOrganization;\n/** @internal Used only for testing purposes. */\nfunction _setOrganization(val) {\n const { settings } = state_1.getStore();\n settings.options.organization = val;\n return settings.options.organization;\n}\nexports._setOrganization = _setOrganization;\n/**\n * Get the project being run by the current update.\n */\nfunction getProject() {\n const { project } = options();\n return project || \"\";\n}\nexports.getProject = getProject;\n/** @internal Used only for testing purposes. */\nfunction _setProject(val) {\n const { settings } = state_1.getStore();\n settings.options.project = val;\n return settings.options.project;\n}\nexports._setProject = _setProject;\n/**\n * Get the stack being targeted by the current update.\n */\nfunction getStack() {\n const { stack } = options();\n return stack || \"\";\n}\nexports.getStack = getStack;\n/** @internal Used only for testing purposes. */\nfunction _setStack(val) {\n const { settings } = state_1.getStore();\n settings.options.stack = val;\n return settings.options.stack;\n}\nexports._setStack = _setStack;\n/**\n * hasMonitor returns true if we are currently connected to a resource monitoring service.\n */\nfunction hasMonitor() {\n return !!monitor && !!options().monitorAddr;\n}\nexports.hasMonitor = hasMonitor;\n/**\n * getMonitor returns the current resource monitoring service client for RPC communications.\n */\nfunction getMonitor() {\n const { settings } = state_1.getStore();\n const addr = options().monitorAddr;\n if (state_1.getLocalStore() === undefined) {\n if (monitor === undefined) {\n if (addr) {\n // Lazily initialize the RPC connection to the monitor.\n monitor = new resrpc.ResourceMonitorClient(addr, grpc.credentials.createInsecure(), grpcChannelOptions);\n settings.options.monitorAddr = addr;\n }\n }\n return monitor;\n }\n else {\n if (settings.monitor === undefined) {\n if (addr) {\n // Lazily initialize the RPC connection to the monitor.\n settings.monitor = new resrpc.ResourceMonitorClient(addr, grpc.credentials.createInsecure(), grpcChannelOptions);\n settings.options.monitorAddr = addr;\n }\n }\n return settings.monitor;\n }\n}\nexports.getMonitor = getMonitor;\n/**\n * Waits for any pending stack transforms to register.\n */\nfunction awaitStackRegistrations() {\n return __awaiter(this, void 0, void 0, function* () {\n const store = state_1.getStore();\n const callbacks = store.callbacks;\n if (callbacks === undefined) {\n return;\n }\n return yield callbacks.awaitStackRegistrations();\n });\n}\nexports.awaitStackRegistrations = awaitStackRegistrations;\n/**\n * getCallbacks returns the current callbacks for RPC communications.\n */\nfunction getCallbacks() {\n const store = state_1.getStore();\n const callbacks = store.callbacks;\n if (callbacks !== undefined) {\n return callbacks;\n }\n const monitorRef = getMonitor();\n if (monitorRef === undefined) {\n return undefined;\n }\n const callbackServer = new callbacks_1.CallbackServer(monitorRef);\n store.callbacks = callbackServer;\n return callbackServer;\n}\nexports.getCallbacks = getCallbacks;\nlet syncInvokes;\n/** @internal */\nfunction tryGetSyncInvokes() {\n const syncDir = options().syncDir;\n if (syncInvokes === undefined && syncDir) {\n const requests = fs.openSync(path.join(syncDir, \"invoke_req\"), fs.constants.O_WRONLY | fs.constants.O_SYNC);\n const responses = fs.openSync(path.join(syncDir, \"invoke_res\"), fs.constants.O_RDONLY | fs.constants.O_SYNC);\n syncInvokes = { requests, responses };\n }\n return syncInvokes;\n}\nexports.tryGetSyncInvokes = tryGetSyncInvokes;\n/**\n * hasEngine returns true if we are currently connected to an engine.\n */\nfunction hasEngine() {\n return !!engine && !!options().engineAddr;\n}\nexports.hasEngine = hasEngine;\n/**\n * getEngine returns the current engine, if any, for RPC communications back to the resource engine.\n */\nfunction getEngine() {\n const { settings } = state_1.getStore();\n if (state_1.getLocalStore() === undefined) {\n if (engine === undefined) {\n const addr = options().engineAddr;\n if (addr) {\n // Lazily initialize the RPC connection to the engine.\n engine = new engrpc.EngineClient(addr, grpc.credentials.createInsecure(), grpcChannelOptions);\n }\n }\n return engine;\n }\n else {\n if (settings.engine === undefined) {\n const addr = options().engineAddr;\n if (addr) {\n // Lazily initialize the RPC connection to the engine.\n settings.engine = new engrpc.EngineClient(addr, grpc.credentials.createInsecure(), grpcChannelOptions);\n }\n }\n return settings.engine;\n }\n}\nexports.getEngine = getEngine;\nfunction terminateRpcs() {\n disconnectSync();\n}\nexports.terminateRpcs = terminateRpcs;\n/**\n * serialize returns true if resource operations should be serialized.\n */\nfunction serialize() {\n return options().parallel === 1;\n}\nexports.serialize = serialize;\n/**\n * options returns the options from the environment, which is the source of truth. Options are global per process.\n * For CLI driven programs, pulumi-language-nodejs sets environment variables prior to the user program loading,\n * meaning that options could be loaded up front and cached.\n * Automation API and multi-language components introduced more complex lifecycles for runtime options().\n * These language hosts manage the lifecycle of options manually throughout the lifetime of the nodejs process.\n * In addition, node module resolution can lead to duplicate copies of @pulumi/pulumi and thus duplicate options\n * objects that may not be synced if options are cached upfront. Mutating options must write to the environment\n * and reading options must always read directly from the environment.\n\n */\nfunction options() {\n const { settings } = state_1.getStore();\n return settings.options;\n}\n/**\n * disconnect permanently disconnects from the server, closing the connections. It waits for the existing RPC\n * queue to drain. If any RPCs come in afterwards, however, they will crash the process.\n */\nfunction disconnect() {\n return waitForRPCs(/*disconnectFromServers*/ true);\n}\nexports.disconnect = disconnect;\n/** @internal */\nfunction waitForRPCs(disconnectFromServers = false) {\n const localStore = state_1.getStore();\n let done;\n const closeCallback = () => {\n if (done !== localStore.settings.rpcDone) {\n // If the done promise has changed, some activity occurred in between callbacks. Wait again.\n done = localStore.settings.rpcDone;\n return debuggable_1.debuggablePromise(done.then(closeCallback), \"disconnect\");\n }\n if (disconnectFromServers) {\n disconnectSync();\n }\n return Promise.resolve();\n };\n return closeCallback();\n}\nexports.waitForRPCs = waitForRPCs;\n/**\n * getMaximumListeners returns the configured number of process listeners available\n */\nfunction getMaximumListeners() {\n const { settings } = state_1.getStore();\n return settings.options.maximumProcessListeners;\n}\nexports.getMaximumListeners = getMaximumListeners;\n/**\n * disconnectSync permanently disconnects from the server, closing the connections. Unlike `disconnect`. it does not\n * wait for the existing RPC queue to drain. Any RPCs that come in after this call will crash the process.\n */\nfunction disconnectSync() {\n // Otherwise, actually perform the close activities (ignoring errors and crashes).\n const store = state_1.getStore();\n if (store.callbacks) {\n store.callbacks.shutdown();\n store.callbacks = undefined;\n }\n if (monitor) {\n try {\n monitor.close();\n }\n catch (err) {\n // ignore.\n }\n monitor = undefined;\n }\n if (engine) {\n try {\n engine.close();\n }\n catch (err) {\n // ignore.\n }\n engine = undefined;\n }\n}\nexports.disconnectSync = disconnectSync;\n/**\n * rpcKeepAlive registers a pending call to ensure that we don't prematurely disconnect from the server. It returns\n * a function that, when invoked, signals that the RPC has completed.\n */\nfunction rpcKeepAlive() {\n const localStore = state_1.getStore();\n let done = undefined;\n const donePromise = debuggable_1.debuggablePromise(new Promise((resolve) => {\n done = resolve;\n return done;\n }), \"rpcKeepAlive\");\n localStore.settings.rpcDone = localStore.settings.rpcDone.then(() => donePromise);\n return done;\n}\nexports.rpcKeepAlive = rpcKeepAlive;\n/**\n * setRootResource registers a resource that will become the default parent for all resources without explicit parents.\n */\nfunction setRootResource(res) {\n return __awaiter(this, void 0, void 0, function* () {\n // This is the first async point of program startup where we can query the resource monitor for its capabilities.\n yield awaitFeatureSupport();\n const engineRef = getEngine();\n if (!engineRef) {\n return Promise.resolve();\n }\n // Back-compat case - Try to set the root URN for SxS old SDKs that expect the engine to roundtrip the\n // stack URN.\n const req = new engproto.SetRootResourceRequest();\n const urn = yield res.urn.promise();\n req.setUrn(urn);\n return new Promise((resolve, reject) => {\n engineRef.setRootResource(req, (err, resp) => {\n // Back-compat case - if the engine we're speaking to isn't aware that it can save and load root\n // resources, just ignore there's nothing we can do.\n if (err && err.code === grpc.status.UNIMPLEMENTED) {\n return resolve();\n }\n if (err) {\n return reject(err);\n }\n return resolve();\n });\n });\n });\n}\nexports.setRootResource = setRootResource;\n//# sourceMappingURL=settings.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst asset = __importStar(require(\"../asset\"));\nconst log_1 = require(\"../log\");\nconst metadata_1 = require(\"../metadata\");\nconst output_1 = require(\"../output\");\nconst resource_1 = require(\"../resource\");\nconst settings_1 = require(\"./settings\");\nconst state_1 = require(\"./state\");\n/**\n * rootPulumiStackTypeName is the type name that should be used to construct the root component in the tree of Pulumi\n * resources allocated by a deployment. This must be kept up to date with\n * `github.com/pulumi/pulumi/sdk/v3/go/common/resource/stack.RootStackType`.\n */\nexports.rootPulumiStackTypeName = \"pulumi:pulumi:Stack\";\n/**\n * runInPulumiStack creates a new Pulumi stack resource and executes the callback inside of it. Any outputs\n * returned by the callback will be stored as output properties on this resulting Stack object.\n */\nfunction runInPulumiStack(init) {\n if (!settings_1.isQueryMode()) {\n const stack = new Stack(init);\n return stack.outputs.promise();\n }\n else {\n return init();\n }\n}\nexports.runInPulumiStack = runInPulumiStack;\n/**\n * Stack is the root resource for a Pulumi stack. Before invoking the `init` callback, it registers itself as the root\n * resource with the Pulumi engine.\n */\nclass Stack extends resource_1.ComponentResource {\n constructor(init) {\n // Clear the stackResource so that when the Resource constructor runs it gives us no parent, we'll\n // then set this to ourselves in init before calling the user code that will then create other\n // resources.\n state_1.setStackResource(undefined);\n super(exports.rootPulumiStackTypeName, `${metadata_1.getProject()}-${metadata_1.getStack()}`, { init });\n const data = this.getData();\n this.outputs = output_1.output(data);\n }\n /**\n * runInit invokes the given init callback with this resource set as the root resource. The return value of init is\n * used as the stack's output properties.\n *\n * @param init The callback to run in the context of this Pulumi stack\n */\n initialize(args) {\n const _super = Object.create(null, {\n registerOutputs: { get: () => super.registerOutputs }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield settings_1.setRootResource(this);\n // Set the global reference to the stack resource before invoking this init() function\n state_1.setStackResource(this);\n let outputs;\n try {\n const inputs = yield args.init();\n outputs = yield massage(undefined, inputs, []);\n }\n finally {\n // We want to expose stack outputs as simple pojo objects (including Resources). This\n // helps ensure that outputs can point to resources, and that that is stored and\n // presented as something reasonable, and not as just an id/urn in the case of\n // Resources.\n _super.registerOutputs.call(this, outputs);\n }\n return outputs;\n });\n }\n}\nexports.Stack = Stack;\nfunction massage(key, prop, objectStack) {\n return __awaiter(this, void 0, void 0, function* () {\n if (prop === undefined && objectStack.length === 1) {\n // This is a top level undefined value, it will not show up in stack outputs, warn the user about\n // this.\n log_1.warn(`Undefined value (${key}) will not show as a stack output.`);\n return undefined;\n }\n if (prop === undefined ||\n prop === null ||\n typeof prop === \"boolean\" ||\n typeof prop === \"number\" ||\n typeof prop === \"string\") {\n return prop;\n }\n if (prop instanceof Promise) {\n return yield massage(key, yield prop, objectStack);\n }\n if (output_1.Output.isInstance(prop)) {\n const result = prop.apply((v) => massage(key, v, objectStack));\n // explicitly await the underlying promise of the output here. This is necessary to get a\n // deterministic walk of the object graph. We need that deterministic walk, otherwise our\n // actual cycle detection logic (using 'objectStack') doesn't work. i.e. if we don't do\n // this then the main walking logic will be interleaved with the async function this output\n // is executing. This interleaving breaks out assumption about pushing/popping values onto\n // objectStack'\n yield result.promise();\n return result;\n }\n // from this point on, we have complex objects. If we see them again, we don't want to emit\n // them again fully or else we'd loop infinitely.\n if (objectStack.indexOf(prop) >= 0) {\n // Note: for Resources we hit again, emit their urn so cycles can be easily understood\n // in the pojo objects.\n if (resource_1.Resource.isInstance(prop)) {\n return yield massage(key, prop.urn, objectStack);\n }\n return undefined;\n }\n try {\n // push and pop what we see into a stack. That way if we see the same object through\n // different paths, we will still print it out. We only skip it if it would truly cause\n // recursion.\n objectStack.push(prop);\n return yield massageComplex(prop, objectStack);\n }\n finally {\n const popped = objectStack.pop();\n if (popped !== prop) {\n throw new Error(\"Invariant broken when processing stack outputs\");\n }\n }\n });\n}\nfunction massageComplex(prop, objectStack) {\n return __awaiter(this, void 0, void 0, function* () {\n if (asset.Asset.isInstance(prop)) {\n if (prop.path !== undefined) {\n return { path: prop.path };\n }\n else if (prop.uri !== undefined) {\n return { uri: prop.uri };\n }\n else if (prop.text !== undefined) {\n return { text: \"...\" };\n }\n return undefined;\n }\n if (asset.Archive.isInstance(prop)) {\n if (prop.assets) {\n return { assets: yield massage(\"assets\", prop.assets, objectStack) };\n }\n else if (prop.path !== undefined) {\n return { path: prop.path };\n }\n else if (prop.uri !== undefined) {\n return { uri: prop.uri };\n }\n return undefined;\n }\n if (resource_1.Resource.isInstance(prop)) {\n // Emit a resource as a normal pojo. But filter out all our internal properties so that\n // they don't clutter the display/checkpoint with values not relevant to the application.\n //\n // In preview only, we mark the POJO with \"@isPulumiResource\" to indicate that it is derived\n // from a resource. This allows the engine to perform resource-specific filtering of unknowns\n // from output diffs during a preview. This filtering is not necessary during an update because\n // all property values are known.\n const pojo = yield serializeAllKeys((n) => !n.startsWith(\"__\"));\n return !settings_1.isDryRun() ? pojo : Object.assign(Object.assign({}, pojo), { \"@isPulumiResource\": true });\n }\n if (prop instanceof Array) {\n const result = [];\n for (let i = 0; i < prop.length; i++) {\n result[i] = yield massage(undefined, prop[i], objectStack);\n }\n return result;\n }\n return yield serializeAllKeys((n) => true);\n function serializeAllKeys(include) {\n return __awaiter(this, void 0, void 0, function* () {\n const obj = {};\n for (const k of Object.keys(prop)) {\n if (include(k)) {\n obj[k] = yield massage(k, prop[k], objectStack);\n }\n }\n return obj;\n });\n }\n });\n}\n/**\n * Add a transformation to all future resources constructed in this Pulumi stack.\n */\nfunction registerStackTransformation(t) {\n const stackResource = getStackResource();\n if (!stackResource) {\n throw new Error(\"The root stack resource was referenced before it was initialized.\");\n }\n stackResource.__transformations = [...(stackResource.__transformations || []), t];\n}\nexports.registerStackTransformation = registerStackTransformation;\n/**\n * Add a transformation to all future resources constructed in this Pulumi stack.\n *\n * This method is experimental.\n */\nfunction xRegisterStackTransform(t) {\n if (!state_1.getStore().supportsTransforms) {\n throw new Error(\"The Pulumi CLI does not support transforms. Please update the Pulumi CLI\");\n }\n const callbacks = settings_1.getCallbacks();\n if (!callbacks) {\n throw new Error(\"No callback server registered.\");\n }\n callbacks.registerStackTransform(t);\n}\nexports.xRegisterStackTransform = xRegisterStackTransform;\nfunction getStackResource() {\n return state_1.getStackResource();\n}\nexports.getStackResource = getStackResource;\n//# sourceMappingURL=stack.js.map","\"use strict\";\n// Copyright 2016-2022, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst async_hooks_1 = require(\"async_hooks\");\nconst config = __importStar(require(\"./config\"));\nconst nodeEnvKeys = {\n project: \"PULUMI_NODEJS_PROJECT\",\n stack: \"PULUMI_NODEJS_STACK\",\n dryRun: \"PULUMI_NODEJS_DRY_RUN\",\n queryMode: \"PULUMI_NODEJS_QUERY_MODE\",\n parallel: \"PULUMI_NODEJS_PARALLEL\",\n monitorAddr: \"PULUMI_NODEJS_MONITOR\",\n engineAddr: \"PULUMI_NODEJS_ENGINE\",\n syncDir: \"PULUMI_NODEJS_SYNC\",\n // this value is not set by the CLI and is controlled via a user set env var unlike the values above\n cacheDynamicProviders: \"PULUMI_NODEJS_CACHE_DYNAMIC_PROVIDERS\",\n organization: \"PULUMI_NODEJS_ORGANIZATION\",\n};\nconst pulumiEnvKeys = {\n legacyApply: \"PULUMI_ENABLE_LEGACY_APPLY\",\n};\n/** @internal */\nexports.asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();\n/** @internal */\nclass LocalStore {\n constructor() {\n this.settings = {\n options: {\n organization: process.env[nodeEnvKeys.organization],\n project: process.env[nodeEnvKeys.project] || \"project\",\n stack: process.env[nodeEnvKeys.stack] || \"stack\",\n dryRun: process.env[nodeEnvKeys.dryRun] === \"true\",\n queryMode: process.env[nodeEnvKeys.queryMode] === \"true\",\n monitorAddr: process.env[nodeEnvKeys.monitorAddr],\n engineAddr: process.env[nodeEnvKeys.engineAddr],\n syncDir: process.env[nodeEnvKeys.syncDir],\n cacheDynamicProviders: process.env[nodeEnvKeys.cacheDynamicProviders] !== \"false\",\n legacyApply: process.env[pulumiEnvKeys.legacyApply] === \"true\",\n maximumProcessListeners: 30,\n },\n rpcDone: Promise.resolve(),\n featureSupport: {},\n };\n this.config = {\n [config.configEnvKey]: process.env[config.configEnvKey] || \"\",\n [config.configSecretKeysEnvKey]: process.env[config.configSecretKeysEnvKey] || \"\",\n };\n this.stackResource = undefined;\n /**\n * leakCandidates tracks the list of potential leak candidates.\n */\n this.leakCandidates = new Set();\n this.logErrorCount = 0;\n this.supportsSecrets = false;\n this.supportsResourceReferences = false;\n this.supportsOutputValues = false;\n this.supportsDeletedWith = false;\n this.supportsAliasSpecs = false;\n this.supportsTransforms = false;\n }\n}\nexports.LocalStore = LocalStore;\n/** Get the root stack resource for the current stack deployment\n * @internal\n */\nfunction getStackResource() {\n const { stackResource } = exports.getStore();\n return stackResource;\n}\nexports.getStackResource = getStackResource;\n/** @internal */\nfunction setStackResource(newStackResource) {\n const localStore = exports.getStore();\n globalThis.stackResource = newStackResource;\n localStore.stackResource = newStackResource;\n}\nexports.setStackResource = setStackResource;\n/** @internal */\nfunction getLocalStore() {\n return exports.asyncLocalStorage.getStore();\n}\nexports.getLocalStore = getLocalStore;\ngetLocalStore.captureReplacement = () => {\n const returnFunc = () => {\n if (global.globalStore === undefined) {\n global.globalStore = new LocalStore();\n }\n return global.globalStore;\n };\n return returnFunc;\n};\n/** @internal */\nexports.getStore = () => {\n const localStore = getLocalStore();\n if (localStore === undefined) {\n if (global.globalStore === undefined) {\n global.globalStore = new LocalStore();\n }\n return global.globalStore;\n }\n return localStore;\n};\nexports.getStore.captureReplacement = () => {\n const returnFunc = () => {\n if (global.globalStore === undefined) {\n global.globalStore = new LocalStore();\n }\n return global.globalStore;\n };\n return returnFunc;\n};\n//# sourceMappingURL=state.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Common code for doing RTTI typechecks. RTTI is done by having a boolean property on an object\n * with a special name (like \"__resource\" or \"__asset\"). This function checks that the object\n * exists, has a **boolean** property with that name, and that that boolean property has the value\n * of 'true'. Checking that property is 'boolean' helps ensure that this test works even on proxies\n * that synthesize properties dynamically (like Output). Checking that the property has the 'true'\n * value isn't strictly necessary, but works to make sure that the impls are following a common\n * pattern.\n *\n * @internal\n */\nfunction isInstance(obj, name) {\n return hasTrueBooleanMember(obj, name);\n}\nexports.isInstance = isInstance;\n/** @internal */\nfunction hasTrueBooleanMember(obj, memberName) {\n if (obj === undefined || obj === null) {\n return false;\n }\n const val = obj[memberName];\n if (typeof val !== \"boolean\") {\n return false;\n }\n return val === true;\n}\nexports.hasTrueBooleanMember = hasTrueBooleanMember;\n/** @internal */\nfunction hasFunctionMember(obj, memberName) {\n if (obj === undefined || obj === null) {\n return false;\n }\n const val = obj[memberName];\n if (typeof val !== \"function\") {\n return false;\n }\n return true;\n}\nexports.hasFunctionMember = hasFunctionMember;\n// Workaround errors we sometimes get on some machines saying that Object.values is not available.\n/** @internal */\nfunction values(obj) {\n const result = [];\n for (const key of Object.keys(obj)) {\n result.push(obj[key]);\n }\n return result;\n}\nexports.values = values;\n/** @internal */\nfunction union(set1, set2) {\n return new Set([...set1, ...set2]);\n}\nexports.union = union;\n/** @internal */\nexports.disableResourceReferences = process.env.PULUMI_DISABLE_RESOURCE_REFERENCES === \"1\" ||\n ((_a = process.env.PULUMI_DISABLE_RESOURCE_REFERENCES) !== null && _a !== void 0 ? _a : \"\").toUpperCase() === \"TRUE\";\n/** @internal */\nexports.errorOutputString = process.env.PULUMI_ERROR_OUTPUT_STRING === \"1\" || ((_b = process.env.PULUMI_ERROR_OUTPUT_STRING) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === \"TRUE\";\n//# sourceMappingURL=utils.js.map","\"use strict\";\n// Copyright 2016-2018, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.version = \"3.109.0\";\n//# sourceMappingURL=version.js.map","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst base_1 = require(\"./base\");\nconst operators_1 = require(\"./operators\");\nconst sources_1 = require(\"./sources\");\nclass AsyncQueryableImpl extends base_1.IterableBase {\n constructor(source) {\n super(source);\n }\n //\n // Constructors.\n //\n static from(source) {\n return new AsyncQueryableImpl(sources_1.from(source));\n }\n //\n // Restriction operators.\n //\n filter(f) {\n return this.pipe(operators_1.filter(f));\n }\n //\n // Projection operators.\n //\n flatMap(selector, resultSelector = (t, ti) => ti) {\n return this.pipe(operators_1.flatMap(selector, resultSelector));\n }\n map(f) {\n return this.pipe(operators_1.map(f));\n }\n //\n // Partitioning operators.\n //\n skip(n) {\n return this.pipe(operators_1.skip(n));\n }\n skipWhile(predicate) {\n return this.pipe(operators_1.skipWhile(predicate));\n }\n take(n) {\n return this.pipe(operators_1.take(n));\n }\n takeWhile(predicate) {\n return this.pipe(operators_1.takeWhile(predicate));\n }\n //\n // Join operators.\n //\n join(inner, outerKeySelector, innerKeySelector, resultSelector) {\n return this.pipe(operators_1.join(sources_1.from(inner), outerKeySelector, innerKeySelector, resultSelector));\n }\n groupJoin(inner, outerKeySelector, innerKeySelector, resultSelector) {\n return this.pipe(operators_1.groupJoin(sources_1.from(inner), outerKeySelector, innerKeySelector, resultSelector));\n }\n //\n // Concatenation operators.\n //\n concat(iter) {\n return this.pipe(operators_1.concat(sources_1.from(iter)));\n }\n //\n // Ordering operators.\n //\n reverse() {\n return this.pipe(operators_1.reverse());\n }\n orderBy(keySelector) {\n return this.pipe(operators_1.orderBy(keySelector));\n }\n orderByDescending(keySelector) {\n return this.pipe(operators_1.orderByDescending(keySelector));\n }\n //\n // Grouping operators.\n //\n groupBy(keySelector, elementSelector) {\n return this.pipe(function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_1, _a;\n const groups = yield __await(operators_1.groupBy(keySelector, elementSelector)(source));\n try {\n for (var groups_1 = __asyncValues(groups), groups_1_1; groups_1_1 = yield __await(groups_1.next()), !groups_1_1.done;) {\n const group = groups_1_1.value;\n yield yield __await(new GroupingImpl(group.key, sources_1.from(group)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) yield __await(_a.call(groups_1));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n });\n }\n //\n // Set operators.\n //\n distinct() {\n return this.pipe(operators_1.distinct());\n }\n union(second) {\n return this.pipe(operators_1.union(sources_1.from(second)));\n }\n intersect(second) {\n return this.pipe(operators_1.intersect(sources_1.from(second)));\n }\n except(second) {\n return this.pipe(operators_1.except(sources_1.from(second)));\n }\n //\n // Element operators.\n //\n first(predicate) {\n return operators_1.first(predicate)(this);\n }\n firstOrDefault(defaultValue, predicate) {\n return operators_1.firstOrDefault(defaultValue, predicate)(this);\n }\n last(predicate) {\n return operators_1.last(predicate)(this);\n }\n lastOrDefault(defaultValue, predicate) {\n return operators_1.lastOrDefault(defaultValue, predicate)(this);\n }\n single(predicate) {\n return operators_1.single(predicate)(this);\n }\n singleOrDefault(defaultValue, predicate) {\n return operators_1.singleOrDefault(defaultValue, predicate)(this);\n }\n elementAt(index) {\n return operators_1.elementAt(index)(this);\n }\n elementAtOrDefault(defaultValue, index) {\n return operators_1.elementAtOrDefault(defaultValue, index)(this);\n }\n defaultIfEmpty(defaultValue) {\n return this.pipe(operators_1.defaultIfEmpty(defaultValue));\n }\n //\n // Quantifiers.\n //\n any(predicate) {\n return operators_1.any(predicate)(this);\n }\n all(predicate) {\n return operators_1.all(predicate)(this);\n }\n contains(value) {\n return operators_1.contains(value)(this);\n }\n //\n // Aggregate operators.\n //\n count(predicate) {\n return operators_1.count(predicate)(this);\n }\n sum(selector) {\n return operators_1.sum(selector)(this);\n }\n min(selector) {\n return operators_1.min(selector)(this);\n }\n max(selector) {\n return operators_1.max(selector)(this);\n }\n average(selector) {\n return operators_1.average(selector)(this);\n }\n aggregate(seed, func) {\n return operators_1.aggregate(seed, func)(this);\n }\n //\n // Eval operators.\n //\n toArray() {\n return __awaiter(this, void 0, void 0, function* () {\n return operators_1.toArray()(this);\n });\n }\n toMap(keySelector, elementSelector) {\n return operators_1.toMap(keySelector, elementSelector)(this);\n }\n ofType(typeGuard) {\n return this.pipe(operators_1.ofType(typeGuard));\n }\n forEach(f) {\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (var _b = __asyncValues(this), _c; _c = yield _b.next(), !_c.done;) {\n const t = _c.value;\n f(t);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n pipe(...ops) {\n return new AsyncQueryableImpl((function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_3, _a;\n let newSource = source;\n for (const op of ops) {\n newSource = op(newSource);\n }\n try {\n for (var newSource_1 = __asyncValues(newSource), newSource_1_1; newSource_1_1 = yield __await(newSource_1.next()), !newSource_1_1.done;) {\n const t = newSource_1_1.value;\n yield yield __await(t);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (newSource_1_1 && !newSource_1_1.done && (_a = newSource_1.return)) yield __await(_a.call(newSource_1));\n }\n finally { if (e_3) throw e_3.error; }\n }\n });\n })(this));\n }\n}\nexports.AsyncQueryableImpl = AsyncQueryableImpl;\nclass GroupingImpl extends AsyncQueryableImpl {\n constructor(key, group) {\n super(group);\n this.key = key;\n }\n}\nexports.GroupingImpl = GroupingImpl;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass IterableBase {\n constructor(core) {\n this.core = core;\n }\n [Symbol.asyncIterator]() {\n return this;\n }\n next(value) {\n return this.core.next(value);\n }\n}\nexports.IterableBase = IterableBase;\nclass GroupedAsyncIterableIteratorImpl extends IterableBase {\n constructor(key, core) {\n super(core);\n this.key = key;\n }\n}\nexports.GroupedAsyncIterableIteratorImpl = GroupedAsyncIterableIteratorImpl;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//\n// NOTE: We choose to be purposefully conservative about what details are exposed through these\n// interfaces in case we decide to change the implementation drastically later.\n//\n//\n// Polyfill the async iterator per the \"caveats\" section of the feature release notes:\n// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#the-for-await-of-statement\n//\nif (typeof Symbol.asyncIterator === \"undefined\") {\n Symbol.asyncIterator = Symbol.asyncIterator || Symbol.for(\"Symbol.asyncIterator\");\n}\nconst asyncQueryable_1 = require(\"./asyncQueryable\");\nconst sources = require(\"./sources\");\n/**\n * Creates an `AsyncQueryable` from things that look `Iterable` or `AsyncIterable`, even if they're\n * wrapped in a `Promise`.\n * @param source Object to convert into an `AsyncQueryable`.\n */\nfunction from(source) {\n return asyncQueryable_1.AsyncQueryableImpl.from(source);\n}\nexports.from = from;\n/**\n * Generates a (potentially infinite) sequence of integral numbers within a range. The first number\n * emitted is `start`, and the last is `stop - 1`. If the enumerated sequence generates zero\n * elements (for example, when `stop <= start + 1`), an exception is thrown.\n * @param start Beginning of the range\n * @param stop Non-inclusive end of the range.\n * @example\n * const squares = await range(0, 3).map(x => x * x).toArray(); // == [0, 1, 4]\n */\nfunction range(start, stop) {\n return asyncQueryable_1.AsyncQueryableImpl.from(sources.range(start, stop));\n}\nexports.range = range;\n/**\n * Returns an empty sequence of `TResult`.\n * @example\n * const noNumbers = await empty().toArray(); // == []\n */\nfunction empty() {\n return asyncQueryable_1.AsyncQueryableImpl.from(sources.from([]));\n}\nexports.empty = empty;\n/**\n * Generates a (potentially infinite) sequence by repeating a single value.\n * @param t Object to repeat\n * @example\n * const ones = await repeat(1).take(3).toArray(); // == [1, 1, 1]\n */\nfunction repeat(t /* TODO: add optional count. */) {\n asyncQueryable_1.AsyncQueryableImpl.from((function () {\n return __asyncGenerator(this, arguments, function* () {\n while (true) {\n yield yield __await(t);\n }\n });\n })());\n}\nexports.repeat = repeat;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n///////////////////////////////////////////////////////////////////////////////\nfunction isAsyncIterable(o) {\n return typeof o[Symbol.asyncIterator] === \"function\";\n}\nexports.isAsyncIterable = isAsyncIterable;\nfunction isIterable(o) {\n return typeof o[Symbol.iterator] === \"function\";\n}\nexports.isIterable = isIterable;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst base_1 = require(\"./base\");\nconst sources_1 = require(\"./sources\");\n//\n// Restriction operators.\n//\nfunction filter(f) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_1, _a;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n if (yield __await(f(t, i))) {\n yield yield __await(t);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n };\n}\nexports.filter = filter;\n//\n// Projection operators.\n//\nfunction flatMap(selector, resultSelector = (t, ti) => ti) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_2, _a, e_3, _b;\n try {\n for (var _c = __asyncValues(zip(source, sources_1.range(0))), _d; _d = yield __await(_c.next()), !_d.done;) {\n const [t, i] = _d.value;\n const us = selector(t, i);\n try {\n for (var _e = __asyncValues(sources_1.from(us)), _f; _f = yield __await(_e.next()), !_f.done;) {\n const u = _f.value;\n yield yield __await(yield __await(resultSelector(t, u)));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_3) throw e_3.error; }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield __await(_a.call(_c));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n };\n}\nexports.flatMap = flatMap;\nfunction map(f) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_4, _a;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n yield yield __await(yield __await(f(t, i)));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_4) throw e_4.error; }\n }\n });\n };\n}\nexports.map = map;\n//\n// Partitioning operators.\n//\nfunction skip(n) {\n if (n < 0) {\n throw Error(\"skip was provided a negative number of elements to skip\");\n }\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_5, _a;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(1))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n if (i > n) {\n yield yield __await(t);\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_5) throw e_5.error; }\n }\n });\n };\n}\nexports.skip = skip;\nfunction skipWhile(predicate) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_6, _a;\n let stopSkipping = false;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n if (stopSkipping === true) {\n yield yield __await(t);\n }\n else if ((yield __await(predicate(t, i))) === false) {\n stopSkipping = true;\n yield yield __await(t);\n }\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_6) throw e_6.error; }\n }\n });\n };\n}\nexports.skipWhile = skipWhile;\nfunction take(n) {\n if (n < 0) {\n throw Error(\"take was provided a negative number of elements to take\");\n }\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_7, _a;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n if (i >= n) {\n return yield __await(void 0);\n }\n yield yield __await(t);\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_7) throw e_7.error; }\n }\n });\n };\n}\nexports.take = take;\nfunction takeWhile(predicate) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_8, _a;\n try {\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [t, i] = _c.value;\n if ((yield __await(predicate(t, i))) === false) {\n return yield __await(void 0);\n }\n yield yield __await(t);\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_8) throw e_8.error; }\n }\n });\n };\n}\nexports.takeWhile = takeWhile;\n//\n// Join operators.\n//\nfunction joinHelper(outer, inner, outerKeySelector, innerKeySelector) {\n return __asyncGenerator(this, arguments, function* joinHelper_1() {\n var e_9, _a, e_10, _b;\n const inners = new Map();\n try {\n for (var inner_1 = __asyncValues(inner), inner_1_1; inner_1_1 = yield __await(inner_1.next()), !inner_1_1.done;) {\n const t = inner_1_1.value;\n const key = yield __await(innerKeySelector(t));\n const val = inners.get(key);\n if (inners.has(key)) {\n val.push(t);\n }\n else {\n inners.set(key, [t]);\n }\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (inner_1_1 && !inner_1_1.done && (_a = inner_1.return)) yield __await(_a.call(inner_1));\n }\n finally { if (e_9) throw e_9.error; }\n }\n try {\n for (var outer_1 = __asyncValues(outer), outer_1_1; outer_1_1 = yield __await(outer_1.next()), !outer_1_1.done;) {\n const t = outer_1_1.value;\n const key = yield __await(outerKeySelector(t));\n if (key === undefined) {\n continue;\n }\n else if (inners.has(key)) {\n const innerValues = inners.get(key);\n yield yield __await([t, innerValues]);\n }\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (outer_1_1 && !outer_1_1.done && (_b = outer_1.return)) yield __await(_b.call(outer_1));\n }\n finally { if (e_10) throw e_10.error; }\n }\n });\n}\nfunction join(inner, outerKeySelector, innerKeySelector, resultSelector) {\n return function (outer) {\n return __asyncGenerator(this, arguments, function* () {\n var e_11, _a;\n try {\n for (var _b = __asyncValues(joinHelper(outer, inner, outerKeySelector, innerKeySelector)), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [o, inners] = _c.value;\n for (const i of inners) {\n yield yield __await(yield __await(resultSelector(o, i)));\n }\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_11) throw e_11.error; }\n }\n });\n };\n}\nexports.join = join;\nfunction groupJoin(inner, outerKeySelector, innerKeySelector, resultSelector) {\n return function (outer) {\n return __asyncGenerator(this, arguments, function* () {\n var e_12, _a;\n try {\n for (var _b = __asyncValues(joinHelper(outer, inner, outerKeySelector, innerKeySelector)), _c; _c = yield __await(_b.next()), !_c.done;) {\n const [o, inners] = _c.value;\n yield yield __await(yield __await(resultSelector(o, sources_1.from(inners))));\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_12) throw e_12.error; }\n }\n });\n };\n}\nexports.groupJoin = groupJoin;\n//\n// Concatenation operators.\n//\nfunction concat(iter) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_13, _a, e_14, _b;\n try {\n for (var source_1 = __asyncValues(source), source_1_1; source_1_1 = yield __await(source_1.next()), !source_1_1.done;) {\n const t = source_1_1.value;\n yield yield __await(t);\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (source_1_1 && !source_1_1.done && (_a = source_1.return)) yield __await(_a.call(source_1));\n }\n finally { if (e_13) throw e_13.error; }\n }\n try {\n for (var iter_1 = __asyncValues(iter), iter_1_1; iter_1_1 = yield __await(iter_1.next()), !iter_1_1.done;) {\n const t = iter_1_1.value;\n yield yield __await(t);\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (iter_1_1 && !iter_1_1.done && (_b = iter_1.return)) yield __await(_b.call(iter_1));\n }\n finally { if (e_14) throw e_14.error; }\n }\n });\n };\n}\nexports.concat = concat;\n//\n// Ordering operators.\n//\nfunction orderBy(keySelector) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n //\n // NOTE: This horrible little function is necessary because the default behavior of\n // JavaScript's `Array#sort` is to coerce every element in the array into string, and then\n // sort those strings lexically.\n //\n // This, of course, is completely unacceptable. Approximately 0 users call `.sort` on an\n // array of `Object` with the intention that they be sorted in this manner. The right thing\n // to do is to simply assume this is a user error and throw an exception.\n //\n // If the user actually wants to sort an array of `Object` by their stringified\n // representation, let them pass us a key function that performs this conversion explicitly.\n // There is no particular need for Brendan Eich's problems from 30 years ago to become our\n // users' problems today.\n //\n let lastKey;\n const ts = yield __await(map(function (t) {\n return __awaiter(this, void 0, void 0, function* () {\n const key = yield keySelector(t);\n if (lastKey === undefined) {\n lastKey = key;\n }\n else {\n if (util_1.isNumber(key) && util_1.isString(key)) {\n throw Error(\"keySelector must produce a number or a string\");\n }\n if (typeof lastKey !== typeof key) {\n throw Error(`keySelector must produce keys all of the same type, but found ` +\n `${typeof key} and ${typeof lastKey}`);\n }\n }\n return [key, t];\n });\n })(source));\n const keyed = yield __await(toArray()(ts));\n const comparator = ((util_1.isNumber(lastKey)\n ? (a, b) => a - b\n : (a, b) => a.localeCompare(b)));\n const sorted = keyed.sort(([k1], [k2]) => comparator(k1, k2));\n for (const [, t] of sorted) {\n yield yield __await(t);\n }\n });\n };\n}\nexports.orderBy = orderBy;\nfunction orderByDescending(keySelector) {\n return function (source) {\n return reverse()(orderBy(keySelector)(source));\n };\n}\nexports.orderByDescending = orderByDescending;\nfunction reverse() {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_15, _a;\n const ts = [];\n try {\n for (var source_2 = __asyncValues(source), source_2_1; source_2_1 = yield __await(source_2.next()), !source_2_1.done;) {\n const t = source_2_1.value;\n ts.push(t);\n }\n }\n catch (e_15_1) { e_15 = { error: e_15_1 }; }\n finally {\n try {\n if (source_2_1 && !source_2_1.done && (_a = source_2.return)) yield __await(_a.call(source_2));\n }\n finally { if (e_15) throw e_15.error; }\n }\n for (const t of ts.reverse()) {\n yield yield __await(t);\n }\n });\n };\n}\nexports.reverse = reverse;\n//\n// Grouping operators.\n//\nfunction groupBy(keySelector, elementSelector) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_16, _a;\n if (elementSelector === undefined) {\n elementSelector = t => t;\n }\n const groups = new Map();\n try {\n for (var source_3 = __asyncValues(source), source_3_1; source_3_1 = yield __await(source_3.next()), !source_3_1.done;) {\n const t = source_3_1.value;\n const key = yield __await(keySelector(t));\n const val = yield __await(elementSelector(t));\n if (!groups.has(key)) {\n groups.set(key, [val]);\n }\n else {\n const group = groups.get(key);\n group.push(val);\n }\n }\n }\n catch (e_16_1) { e_16 = { error: e_16_1 }; }\n finally {\n try {\n if (source_3_1 && !source_3_1.done && (_a = source_3.return)) yield __await(_a.call(source_3));\n }\n finally { if (e_16) throw e_16.error; }\n }\n for (const [key, group] of groups) {\n yield yield __await(new base_1.GroupedAsyncIterableIteratorImpl(key, sources_1.from(group)));\n }\n });\n };\n}\nexports.groupBy = groupBy;\n//\n// Set operators.\n//\nfunction distinct() {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_17, _a;\n const dist = new Set();\n try {\n for (var source_4 = __asyncValues(source), source_4_1; source_4_1 = yield __await(source_4.next()), !source_4_1.done;) {\n const t = source_4_1.value;\n if (!dist.has(t)) {\n dist.add(t);\n yield yield __await(t);\n }\n }\n }\n catch (e_17_1) { e_17 = { error: e_17_1 }; }\n finally {\n try {\n if (source_4_1 && !source_4_1.done && (_a = source_4.return)) yield __await(_a.call(source_4));\n }\n finally { if (e_17) throw e_17.error; }\n }\n });\n };\n}\nexports.distinct = distinct;\nfunction union(second) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_18, _a, e_19, _b;\n const dist = new Set();\n try {\n for (var source_5 = __asyncValues(source), source_5_1; source_5_1 = yield __await(source_5.next()), !source_5_1.done;) {\n const t = source_5_1.value;\n if (!dist.has(t)) {\n dist.add(t);\n yield yield __await(t);\n }\n }\n }\n catch (e_18_1) { e_18 = { error: e_18_1 }; }\n finally {\n try {\n if (source_5_1 && !source_5_1.done && (_a = source_5.return)) yield __await(_a.call(source_5));\n }\n finally { if (e_18) throw e_18.error; }\n }\n try {\n for (var second_1 = __asyncValues(second), second_1_1; second_1_1 = yield __await(second_1.next()), !second_1_1.done;) {\n const t = second_1_1.value;\n if (!dist.has(t)) {\n dist.add(t);\n yield yield __await(t);\n }\n }\n }\n catch (e_19_1) { e_19 = { error: e_19_1 }; }\n finally {\n try {\n if (second_1_1 && !second_1_1.done && (_b = second_1.return)) yield __await(_b.call(second_1));\n }\n finally { if (e_19) throw e_19.error; }\n }\n });\n };\n}\nexports.union = union;\nfunction intersect(second) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_20, _a, e_21, _b;\n const dist = new Set();\n try {\n for (var source_6 = __asyncValues(source), source_6_1; source_6_1 = yield __await(source_6.next()), !source_6_1.done;) {\n const t = source_6_1.value;\n dist.add(t);\n }\n }\n catch (e_20_1) { e_20 = { error: e_20_1 }; }\n finally {\n try {\n if (source_6_1 && !source_6_1.done && (_a = source_6.return)) yield __await(_a.call(source_6));\n }\n finally { if (e_20) throw e_20.error; }\n }\n const emitted = new Set();\n try {\n for (var second_2 = __asyncValues(second), second_2_1; second_2_1 = yield __await(second_2.next()), !second_2_1.done;) {\n const t = second_2_1.value;\n if (dist.has(t) && !emitted.has(t)) {\n emitted.add(t);\n yield yield __await(t);\n }\n }\n }\n catch (e_21_1) { e_21 = { error: e_21_1 }; }\n finally {\n try {\n if (second_2_1 && !second_2_1.done && (_b = second_2.return)) yield __await(_b.call(second_2));\n }\n finally { if (e_21) throw e_21.error; }\n }\n });\n };\n}\nexports.intersect = intersect;\nfunction except(second) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_22, _a, e_23, _b;\n const dist = new Set();\n try {\n for (var source_7 = __asyncValues(source), source_7_1; source_7_1 = yield __await(source_7.next()), !source_7_1.done;) {\n const t = source_7_1.value;\n dist.add(t);\n }\n }\n catch (e_22_1) { e_22 = { error: e_22_1 }; }\n finally {\n try {\n if (source_7_1 && !source_7_1.done && (_a = source_7.return)) yield __await(_a.call(source_7));\n }\n finally { if (e_22) throw e_22.error; }\n }\n try {\n for (var second_3 = __asyncValues(second), second_3_1; second_3_1 = yield __await(second_3.next()), !second_3_1.done;) {\n const t = second_3_1.value;\n if (dist.has(t)) {\n dist.delete(t);\n }\n else {\n dist.add(t);\n }\n }\n }\n catch (e_23_1) { e_23 = { error: e_23_1 }; }\n finally {\n try {\n if (second_3_1 && !second_3_1.done && (_b = second_3.return)) yield __await(_b.call(second_3));\n }\n finally { if (e_23) throw e_23.error; }\n }\n for (const t of dist) {\n yield yield __await(t);\n }\n });\n };\n}\nexports.except = except;\n//\n// Conversion operators.\n//\nfunction toArray() {\n return function (source) {\n var source_8, source_8_1;\n var e_24, _a;\n return __awaiter(this, void 0, void 0, function* () {\n const ret = [];\n try {\n for (source_8 = __asyncValues(source); source_8_1 = yield source_8.next(), !source_8_1.done;) {\n const t = source_8_1.value;\n ret.push(t);\n }\n }\n catch (e_24_1) { e_24 = { error: e_24_1 }; }\n finally {\n try {\n if (source_8_1 && !source_8_1.done && (_a = source_8.return)) yield _a.call(source_8);\n }\n finally { if (e_24) throw e_24.error; }\n }\n return ret;\n });\n };\n}\nexports.toArray = toArray;\nfunction toMap(keySelector, elementSelector) {\n return function (source) {\n var source_9, source_9_1;\n var e_25, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (elementSelector === undefined) {\n elementSelector = x => x;\n }\n const ret = new Map();\n try {\n for (source_9 = __asyncValues(source); source_9_1 = yield source_9.next(), !source_9_1.done;) {\n const t = source_9_1.value;\n const key = yield keySelector(t);\n if (key === undefined) {\n throw Error(\"key selector can't produce a null value\");\n }\n const val = yield elementSelector(t);\n ret.set(key, val);\n }\n }\n catch (e_25_1) { e_25 = { error: e_25_1 }; }\n finally {\n try {\n if (source_9_1 && !source_9_1.done && (_a = source_9.return)) yield _a.call(source_9);\n }\n finally { if (e_25) throw e_25.error; }\n }\n return ret;\n });\n };\n}\nexports.toMap = toMap;\nfunction ofType(typeGuard) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_26, _a;\n try {\n for (var source_10 = __asyncValues(source), source_10_1; source_10_1 = yield __await(source_10.next()), !source_10_1.done;) {\n const t = source_10_1.value;\n if (typeGuard(t)) {\n yield yield __await(t);\n }\n }\n }\n catch (e_26_1) { e_26 = { error: e_26_1 }; }\n finally {\n try {\n if (source_10_1 && !source_10_1.done && (_a = source_10.return)) yield __await(_a.call(source_10));\n }\n finally { if (e_26) throw e_26.error; }\n }\n });\n };\n}\nexports.ofType = ofType;\n//\n// Element operators.\n//\nfunction first(predicate) {\n return function (source) {\n var source_11, source_11_1;\n var e_27, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n try {\n for (source_11 = __asyncValues(source); source_11_1 = yield source_11.next(), !source_11_1.done;) {\n const t = source_11_1.value;\n if ((yield predicate(t)) === true) {\n return t;\n }\n }\n }\n catch (e_27_1) { e_27 = { error: e_27_1 }; }\n finally {\n try {\n if (source_11_1 && !source_11_1.done && (_a = source_11.return)) yield _a.call(source_11);\n }\n finally { if (e_27) throw e_27.error; }\n }\n return Promise.reject(\"first could not find any elements that match predicate\");\n });\n };\n}\nexports.first = first;\nfunction firstOrDefault(defaultValue, predicate) {\n return function (source) {\n var source_12, source_12_1;\n var e_28, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n try {\n for (source_12 = __asyncValues(source); source_12_1 = yield source_12.next(), !source_12_1.done;) {\n const t = source_12_1.value;\n if ((yield predicate(t)) === true) {\n return t;\n }\n }\n }\n catch (e_28_1) { e_28 = { error: e_28_1 }; }\n finally {\n try {\n if (source_12_1 && !source_12_1.done && (_a = source_12.return)) yield _a.call(source_12);\n }\n finally { if (e_28) throw e_28.error; }\n }\n return defaultValue;\n });\n };\n}\nexports.firstOrDefault = firstOrDefault;\nfunction last(predicate) {\n return function (source) {\n var source_13, source_13_1;\n var e_29, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n let curr;\n try {\n for (source_13 = __asyncValues(source); source_13_1 = yield source_13.next(), !source_13_1.done;) {\n const t = source_13_1.value;\n if ((yield predicate(t)) === true) {\n curr = t;\n }\n }\n }\n catch (e_29_1) { e_29 = { error: e_29_1 }; }\n finally {\n try {\n if (source_13_1 && !source_13_1.done && (_a = source_13.return)) yield _a.call(source_13);\n }\n finally { if (e_29) throw e_29.error; }\n }\n if (curr === undefined) {\n return Promise.reject(\"last could not find any elements that match predicate\");\n }\n else {\n return curr;\n }\n });\n };\n}\nexports.last = last;\nfunction lastOrDefault(defaultValue, predicate) {\n return function (source) {\n var source_14, source_14_1;\n var e_30, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n let curr;\n try {\n for (source_14 = __asyncValues(source); source_14_1 = yield source_14.next(), !source_14_1.done;) {\n const t = source_14_1.value;\n if ((yield predicate(t)) === true) {\n curr = t;\n }\n }\n }\n catch (e_30_1) { e_30 = { error: e_30_1 }; }\n finally {\n try {\n if (source_14_1 && !source_14_1.done && (_a = source_14.return)) yield _a.call(source_14);\n }\n finally { if (e_30) throw e_30.error; }\n }\n if (curr === undefined) {\n return defaultValue;\n }\n else {\n return curr;\n }\n });\n };\n}\nexports.lastOrDefault = lastOrDefault;\nfunction single(predicate) {\n return function (source) {\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n const seq = yield toArray()(filter(predicate)(source));\n if (seq.length === 0) {\n throw Error(\"single did not find any elements matching the predicate\");\n }\n else if (seq.length > 1) {\n throw Error(\"single found multiple elements matching the predicate\");\n }\n return seq[0];\n });\n };\n}\nexports.single = single;\nfunction singleOrDefault(defaultValue, predicate) {\n return function (source) {\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n const seq = yield toArray()(filter(predicate)(source));\n if (seq.length === 0) {\n return defaultValue;\n }\n else if (seq.length > 1) {\n throw Error(\"single found multiple elements matching the predicate\");\n }\n else {\n return seq[0];\n }\n });\n };\n}\nexports.singleOrDefault = singleOrDefault;\nfunction elementAt(index) {\n return function (source) {\n var e_31, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // TODO: Maybe support `Array` here if we ever support sync iterables. This would allow us\n // to access that index directly.\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield _b.next(), !_c.done;) {\n const [t, i] = _c.value;\n if (i === index) {\n return t;\n }\n }\n }\n catch (e_31_1) { e_31 = { error: e_31_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_31) throw e_31.error; }\n }\n throw Error(`elementAt tried to find item at index ${index}, but sequence had fewer elements`);\n });\n };\n}\nexports.elementAt = elementAt;\nfunction elementAtOrDefault(defaultValue, index) {\n return function (source) {\n var e_32, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // TODO: Maybe support `Array` here if we ever support sync iterables. This would allow us\n // to access that index directly.\n for (var _b = __asyncValues(zip(source, sources_1.range(0))), _c; _c = yield _b.next(), !_c.done;) {\n const [t, i] = _c.value;\n if (i === index) {\n return t;\n }\n }\n }\n catch (e_32_1) { e_32 = { error: e_32_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_32) throw e_32.error; }\n }\n return defaultValue;\n });\n };\n}\nexports.elementAtOrDefault = elementAtOrDefault;\nfunction defaultIfEmpty(defaultValue) {\n return function (source) {\n return __asyncGenerator(this, arguments, function* () {\n var e_33, _a;\n let sequenceEmpty = true;\n try {\n for (var source_15 = __asyncValues(source), source_15_1; source_15_1 = yield __await(source_15.next()), !source_15_1.done;) {\n const t = source_15_1.value;\n sequenceEmpty = false;\n yield yield __await(t);\n }\n }\n catch (e_33_1) { e_33 = { error: e_33_1 }; }\n finally {\n try {\n if (source_15_1 && !source_15_1.done && (_a = source_15.return)) yield __await(_a.call(source_15));\n }\n finally { if (e_33) throw e_33.error; }\n }\n if (sequenceEmpty) {\n yield yield __await(defaultValue);\n }\n });\n };\n}\nexports.defaultIfEmpty = defaultIfEmpty;\n//\n// Quantifiers.\n//\nfunction any(predicate) {\n return function (source) {\n var source_16, source_16_1;\n var e_34, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n try {\n for (source_16 = __asyncValues(source); source_16_1 = yield source_16.next(), !source_16_1.done;) {\n const t = source_16_1.value;\n if ((yield predicate(t)) === true) {\n return true;\n }\n }\n }\n catch (e_34_1) { e_34 = { error: e_34_1 }; }\n finally {\n try {\n if (source_16_1 && !source_16_1.done && (_a = source_16.return)) yield _a.call(source_16);\n }\n finally { if (e_34) throw e_34.error; }\n }\n return false;\n });\n };\n}\nexports.any = any;\nfunction all(predicate) {\n return function (source) {\n var source_17, source_17_1;\n var e_35, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (source_17 = __asyncValues(source); source_17_1 = yield source_17.next(), !source_17_1.done;) {\n const t = source_17_1.value;\n if ((yield predicate(t)) === false) {\n return false;\n }\n }\n }\n catch (e_35_1) { e_35 = { error: e_35_1 }; }\n finally {\n try {\n if (source_17_1 && !source_17_1.done && (_a = source_17.return)) yield _a.call(source_17);\n }\n finally { if (e_35) throw e_35.error; }\n }\n return true;\n });\n };\n}\nexports.all = all;\nfunction contains(value) {\n return function (source) {\n var source_18, source_18_1;\n var e_36, _a;\n return __awaiter(this, void 0, void 0, function* () {\n const dist = new Set([value]);\n try {\n for (source_18 = __asyncValues(source); source_18_1 = yield source_18.next(), !source_18_1.done;) {\n const t = source_18_1.value;\n if (dist.has(t)) {\n return true;\n }\n }\n }\n catch (e_36_1) { e_36 = { error: e_36_1 }; }\n finally {\n try {\n if (source_18_1 && !source_18_1.done && (_a = source_18.return)) yield _a.call(source_18);\n }\n finally { if (e_36) throw e_36.error; }\n }\n return false;\n });\n };\n}\nexports.contains = contains;\n//\n// Aggregate operators.\n//\nfunction count(predicate) {\n return function (source) {\n var source_19, source_19_1;\n var e_37, _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (predicate === undefined) {\n predicate = t => true;\n }\n let n = 0;\n try {\n for (source_19 = __asyncValues(source); source_19_1 = yield source_19.next(), !source_19_1.done;) {\n const t = source_19_1.value;\n if ((yield predicate(t)) === true) {\n n++;\n }\n }\n }\n catch (e_37_1) { e_37 = { error: e_37_1 }; }\n finally {\n try {\n if (source_19_1 && !source_19_1.done && (_a = source_19.return)) yield _a.call(source_19);\n }\n finally { if (e_37) throw e_37.error; }\n }\n return n;\n });\n };\n}\nexports.count = count;\nfunction sum(selector) {\n return function (source) {\n var source_20, source_20_1;\n var e_38, _a;\n return __awaiter(this, void 0, void 0, function* () {\n // If selector is undefined, the source should emit `number`.\n if (selector === undefined) {\n selector = t => t;\n }\n let total = 0;\n try {\n for (source_20 = __asyncValues(source); source_20_1 = yield source_20.next(), !source_20_1.done;) {\n const t = source_20_1.value;\n const toSum = yield selector(t);\n if (!util_1.isNumber(toSum)) {\n throw Error(\"Can't sum things that aren't numbers\");\n }\n total += toSum;\n }\n }\n catch (e_38_1) { e_38 = { error: e_38_1 }; }\n finally {\n try {\n if (source_20_1 && !source_20_1.done && (_a = source_20.return)) yield _a.call(source_20);\n }\n finally { if (e_38) throw e_38.error; }\n }\n return total;\n });\n };\n}\nexports.sum = sum;\nfunction min(selector) {\n return function (source) {\n var source_21, source_21_1;\n var e_39, _a;\n return __awaiter(this, void 0, void 0, function* () {\n // If selector is undefined, the source should emit `number`.\n if (selector === undefined) {\n selector = t => t;\n }\n let minimum = undefined;\n try {\n for (source_21 = __asyncValues(source); source_21_1 = yield source_21.next(), !source_21_1.done;) {\n const t = source_21_1.value;\n const curr = yield selector(t);\n if (minimum === undefined) {\n minimum = curr;\n }\n if (!util_1.isNumber(curr)) {\n throw Error(\"min can't find the minimum of things that aren't numbers\");\n }\n if (minimum > curr) {\n minimum = curr;\n }\n }\n }\n catch (e_39_1) { e_39 = { error: e_39_1 }; }\n finally {\n try {\n if (source_21_1 && !source_21_1.done && (_a = source_21.return)) yield _a.call(source_21);\n }\n finally { if (e_39) throw e_39.error; }\n }\n if (minimum === undefined) {\n throw Error(\"min can't be called on an empty sequence\");\n }\n return minimum;\n });\n };\n}\nexports.min = min;\nfunction max(selector) {\n return function (source) {\n var source_22, source_22_1;\n var e_40, _a;\n return __awaiter(this, void 0, void 0, function* () {\n // If selector is undefined, the source should emit `number`.\n if (selector === undefined) {\n selector = t => t;\n }\n let maximum = undefined;\n try {\n for (source_22 = __asyncValues(source); source_22_1 = yield source_22.next(), !source_22_1.done;) {\n const t = source_22_1.value;\n const curr = yield selector(t);\n if (maximum === undefined) {\n maximum = curr;\n }\n if (!util_1.isNumber(curr)) {\n throw Error(\"max can't find the maximum of things that aren't numbers\");\n }\n if (maximum < curr) {\n maximum = curr;\n }\n }\n }\n catch (e_40_1) { e_40 = { error: e_40_1 }; }\n finally {\n try {\n if (source_22_1 && !source_22_1.done && (_a = source_22.return)) yield _a.call(source_22);\n }\n finally { if (e_40) throw e_40.error; }\n }\n if (maximum === undefined) {\n throw Error(\"max can't be called on an empty sequence\");\n }\n return maximum;\n });\n };\n}\nexports.max = max;\nfunction average(selector) {\n return function (source) {\n var source_23, source_23_1;\n var e_41, _a;\n return __awaiter(this, void 0, void 0, function* () {\n // If selector is undefined, the source should emit `number`.\n if (selector === undefined) {\n selector = t => t;\n }\n let total = 0;\n let cnt = 0;\n try {\n for (source_23 = __asyncValues(source); source_23_1 = yield source_23.next(), !source_23_1.done;) {\n const t = source_23_1.value;\n const toSum = yield selector(t);\n if (!util_1.isNumber(toSum)) {\n throw Error(\"Can't sum things that aren't numbers\");\n }\n total += toSum;\n cnt++;\n }\n }\n catch (e_41_1) { e_41 = { error: e_41_1 }; }\n finally {\n try {\n if (source_23_1 && !source_23_1.done && (_a = source_23.return)) yield _a.call(source_23);\n }\n finally { if (e_41) throw e_41.error; }\n }\n if (cnt === 0) {\n return Promise.reject(\"Can't compute average of empty sequence\");\n }\n return total / cnt;\n });\n };\n}\nexports.average = average;\nfunction aggregate(seed, func) {\n return function (source) {\n var source_24, source_24_1;\n var e_42, _a;\n return __awaiter(this, void 0, void 0, function* () {\n let acc = seed;\n try {\n for (source_24 = __asyncValues(source); source_24_1 = yield source_24.next(), !source_24_1.done;) {\n const t = source_24_1.value;\n acc = yield func(acc, t);\n }\n }\n catch (e_42_1) { e_42 = { error: e_42_1 }; }\n finally {\n try {\n if (source_24_1 && !source_24_1.done && (_a = source_24.return)) yield _a.call(source_24);\n }\n finally { if (e_42) throw e_42.error; }\n }\n return acc;\n });\n };\n}\nexports.aggregate = aggregate;\n//\n// Misc.\n//\nfunction zip(source1, source2, resultSelector = (t1, t2) => [t1, t2]) {\n return __asyncGenerator(this, arguments, function* zip_1() {\n while (true) {\n const result1 = yield __await(source1.next());\n const result2 = yield __await(source2.next());\n if (result1.done || result2.done) {\n return yield __await(void 0);\n }\n else {\n yield yield __await(yield __await(resultSelector(result1.value, result2.value)));\n }\n }\n });\n}\nexports.zip = zip;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst interfaces_1 = require(\"./interfaces\");\nconst util_1 = require(\"./util\");\nfunction range(start, end) {\n return __asyncGenerator(this, arguments, function* range_1() {\n let i = start;\n while (true) {\n if (end !== undefined && i >= end) {\n return yield __await(void 0);\n }\n yield yield __await(i++);\n }\n });\n}\nexports.range = range;\nfunction from(source) {\n return __asyncGenerator(this, arguments, function* from_1() {\n var e_1, _a;\n let iter;\n if (util_1.isIterable(source) || interfaces_1.isAsyncIterable(source)) {\n iter = source;\n }\n else {\n iter = yield __await(source);\n }\n if (util_1.isIterable(iter)) {\n for (const t of iter) {\n yield yield __await(t);\n }\n }\n else {\n try {\n for (var iter_1 = __asyncValues(iter), iter_1_1; iter_1_1 = yield __await(iter_1.next()), !iter_1_1.done;) {\n const t = iter_1_1.value;\n yield yield __await(t);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iter_1_1 && !iter_1_1.done && (_a = iter_1.return)) yield __await(_a.call(iter_1));\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n}\nexports.from = from;\n","\"use strict\";\n// Copyright 2016-2019, Pulumi Corporation.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isAsyncIterable(o) {\n return typeof o[Symbol.asyncIterator] === \"function\";\n}\nexports.isAsyncIterable = isAsyncIterable;\nfunction isIterable(o) {\n return typeof o[Symbol.iterator] === \"function\";\n}\nexports.isIterable = isIterable;\n","\"use strict\";\n/// \n/// \n/// \nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst typedArrayTypeNames = [\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n];\nfunction isTypedArrayName(name) {\n return typedArrayTypeNames.includes(name);\n}\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Blob',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'FormData',\n 'URLSearchParams',\n 'HTMLElement',\n ...typedArrayTypeNames\n];\nfunction isObjectTypeName(name) {\n return objectTypeNames.includes(name);\n}\nconst primitiveTypeNames = [\n 'null',\n 'undefined',\n 'string',\n 'number',\n 'bigint',\n 'boolean',\n 'symbol'\n];\nfunction isPrimitiveTypeName(name) {\n return primitiveTypeNames.includes(name);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isOfType(type) {\n return (value) => typeof value === type;\n}\nconst { toString } = Object.prototype;\nconst getObjectType = (value) => {\n const objectTypeName = toString.call(value).slice(8, -1);\n if (/HTML\\w+Element/.test(objectTypeName) && is.domElement(value)) {\n return 'HTMLElement';\n }\n if (isObjectTypeName(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n};\nconst isObjectOfType = (type) => (value) => getObjectType(value) === type;\nfunction is(value) {\n if (value === null) {\n return 'null';\n }\n switch (typeof value) {\n case 'undefined':\n return 'undefined';\n case 'string':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'function':\n return 'Function';\n case 'bigint':\n return 'bigint';\n case 'symbol':\n return 'symbol';\n default:\n }\n if (is.observable(value)) {\n return 'Observable';\n }\n if (is.array(value)) {\n return 'Array';\n }\n if (is.buffer(value)) {\n return 'Buffer';\n }\n const tagType = getObjectType(value);\n if (tagType) {\n return tagType;\n }\n if (value instanceof String || value instanceof Boolean || value instanceof Number) {\n throw new TypeError('Please don\\'t use object wrappers for primitive types');\n }\n return 'Object';\n}\nis.undefined = isOfType('undefined');\nis.string = isOfType('string');\nconst isNumberType = isOfType('number');\nis.number = (value) => isNumberType(value) && !is.nan(value);\nis.bigint = isOfType('bigint');\n// eslint-disable-next-line @typescript-eslint/ban-types\nis.function_ = isOfType('function');\nis.null_ = (value) => value === null;\nis.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');\nis.boolean = (value) => value === true || value === false;\nis.symbol = isOfType('symbol');\nis.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));\nis.array = (value, assertion) => {\n if (!Array.isArray(value)) {\n return false;\n }\n if (!is.function_(assertion)) {\n return true;\n }\n return value.every(assertion);\n};\nis.buffer = (value) => { var _a, _b, _c, _d; return (_d = (_c = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.isBuffer) === null || _c === void 0 ? void 0 : _c.call(_b, value)) !== null && _d !== void 0 ? _d : false; };\nis.blob = (value) => isObjectOfType('Blob')(value);\nis.nullOrUndefined = (value) => is.null_(value) || is.undefined(value);\nis.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value));\nis.iterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.iterator]); };\nis.asyncIterable = (value) => { var _a; return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a[Symbol.asyncIterator]); };\nis.generator = (value) => { var _a, _b; return is.iterable(value) && is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.next) && is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.throw); };\nis.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);\nis.nativePromise = (value) => isObjectOfType('Promise')(value);\nconst hasPromiseAPI = (value) => {\n var _a, _b;\n return is.function_((_a = value) === null || _a === void 0 ? void 0 : _a.then) &&\n is.function_((_b = value) === null || _b === void 0 ? void 0 : _b.catch);\n};\nis.promise = (value) => is.nativePromise(value) || hasPromiseAPI(value);\nis.generatorFunction = isObjectOfType('GeneratorFunction');\nis.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';\nis.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';\n// eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types\nis.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');\nis.regExp = isObjectOfType('RegExp');\nis.date = isObjectOfType('Date');\nis.error = isObjectOfType('Error');\nis.map = (value) => isObjectOfType('Map')(value);\nis.set = (value) => isObjectOfType('Set')(value);\nis.weakMap = (value) => isObjectOfType('WeakMap')(value);\nis.weakSet = (value) => isObjectOfType('WeakSet')(value);\nis.int8Array = isObjectOfType('Int8Array');\nis.uint8Array = isObjectOfType('Uint8Array');\nis.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');\nis.int16Array = isObjectOfType('Int16Array');\nis.uint16Array = isObjectOfType('Uint16Array');\nis.int32Array = isObjectOfType('Int32Array');\nis.uint32Array = isObjectOfType('Uint32Array');\nis.float32Array = isObjectOfType('Float32Array');\nis.float64Array = isObjectOfType('Float64Array');\nis.bigInt64Array = isObjectOfType('BigInt64Array');\nis.bigUint64Array = isObjectOfType('BigUint64Array');\nis.arrayBuffer = isObjectOfType('ArrayBuffer');\nis.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');\nis.dataView = isObjectOfType('DataView');\nis.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);\nis.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;\nis.urlInstance = (value) => isObjectOfType('URL')(value);\nis.urlString = (value) => {\n if (!is.string(value)) {\n return false;\n }\n try {\n new URL(value); // eslint-disable-line no-new\n return true;\n }\n catch (_a) {\n return false;\n }\n};\n// Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`\nis.truthy = (value) => Boolean(value);\n// Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`\nis.falsy = (value) => !value;\nis.nan = (value) => Number.isNaN(value);\nis.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);\nis.integer = (value) => Number.isInteger(value);\nis.safeInteger = (value) => Number.isSafeInteger(value);\nis.plainObject = (value) => {\n // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\n if (toString.call(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.getPrototypeOf({});\n};\nis.typedArray = (value) => isTypedArrayName(getObjectType(value));\nconst isValidLength = (value) => is.safeInteger(value) && value >= 0;\nis.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);\nis.inRange = (value, range) => {\n if (is.number(range)) {\n return value >= Math.min(0, range) && value <= Math.max(range, 0);\n }\n if (is.array(range) && range.length === 2) {\n return value >= Math.min(...range) && value <= Math.max(...range);\n }\n throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);\n};\nconst NODE_TYPE_ELEMENT = 1;\nconst DOM_PROPERTIES_TO_CHECK = [\n 'innerHTML',\n 'ownerDocument',\n 'style',\n 'attributes',\n 'nodeValue'\n];\nis.domElement = (value) => {\n return is.object(value) &&\n value.nodeType === NODE_TYPE_ELEMENT &&\n is.string(value.nodeName) &&\n !is.plainObject(value) &&\n DOM_PROPERTIES_TO_CHECK.every(property => property in value);\n};\nis.observable = (value) => {\n var _a, _b, _c, _d;\n if (!value) {\n return false;\n }\n // eslint-disable-next-line no-use-extend-native/no-use-extend-native\n if (value === ((_b = (_a = value)[Symbol.observable]) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n return true;\n }\n if (value === ((_d = (_c = value)['@@observable']) === null || _d === void 0 ? void 0 : _d.call(_c))) {\n return true;\n }\n return false;\n};\nis.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);\nis.infinite = (value) => value === Infinity || value === -Infinity;\nconst isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;\nis.evenInteger = isAbsoluteMod2(0);\nis.oddInteger = isAbsoluteMod2(1);\nis.emptyArray = (value) => is.array(value) && value.length === 0;\nis.nonEmptyArray = (value) => is.array(value) && value.length > 0;\nis.emptyString = (value) => is.string(value) && value.length === 0;\nconst isWhiteSpaceString = (value) => is.string(value) && !/\\S/.test(value);\nis.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyString = (value) => is.string(value) && value.length > 0;\n// TODO: Use `not ''` when the `not` operator is available.\nis.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);\nis.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;\n// TODO: Use `not` operator here to remove `Map` and `Set` from type guard:\n// - https://github.com/Microsoft/TypeScript/pull/29317\nis.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;\nis.emptySet = (value) => is.set(value) && value.size === 0;\nis.nonEmptySet = (value) => is.set(value) && value.size > 0;\nis.emptyMap = (value) => is.map(value) && value.size === 0;\nis.nonEmptyMap = (value) => is.map(value) && value.size > 0;\n// `PropertyKey` is any value that can be used as an object key (string, number, or symbol)\nis.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);\nis.formData = (value) => isObjectOfType('FormData')(value);\nis.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);\nconst predicateOnArray = (method, predicate, values) => {\n if (!is.function_(predicate)) {\n throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);\n }\n if (values.length === 0) {\n throw new TypeError('Invalid number of values');\n }\n return method.call(values, predicate);\n};\nis.any = (predicate, ...values) => {\n const predicates = is.array(predicate) ? predicate : [predicate];\n return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));\n};\nis.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);\nconst assertType = (condition, description, value, options = {}) => {\n if (!condition) {\n const { multipleValues } = options;\n const valuesMessage = multipleValues ?\n `received values of types ${[\n ...new Set(value.map(singleValue => `\\`${is(singleValue)}\\``))\n ].join(', ')}` :\n `received value of type \\`${is(value)}\\``;\n throw new TypeError(`Expected value which is \\`${description}\\`, ${valuesMessage}.`);\n }\n};\nexports.assert = {\n // Unknowns.\n undefined: (value) => assertType(is.undefined(value), 'undefined', value),\n string: (value) => assertType(is.string(value), 'string', value),\n number: (value) => assertType(is.number(value), 'number', value),\n bigint: (value) => assertType(is.bigint(value), 'bigint', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n function_: (value) => assertType(is.function_(value), 'Function', value),\n null_: (value) => assertType(is.null_(value), 'null', value),\n class_: (value) => assertType(is.class_(value), \"Class\" /* class_ */, value),\n boolean: (value) => assertType(is.boolean(value), 'boolean', value),\n symbol: (value) => assertType(is.symbol(value), 'symbol', value),\n numericString: (value) => assertType(is.numericString(value), \"string with a number\" /* numericString */, value),\n array: (value, assertion) => {\n const assert = assertType;\n assert(is.array(value), 'Array', value);\n if (assertion) {\n value.forEach(assertion);\n }\n },\n buffer: (value) => assertType(is.buffer(value), 'Buffer', value),\n blob: (value) => assertType(is.blob(value), 'Blob', value),\n nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), \"null or undefined\" /* nullOrUndefined */, value),\n object: (value) => assertType(is.object(value), 'Object', value),\n iterable: (value) => assertType(is.iterable(value), \"Iterable\" /* iterable */, value),\n asyncIterable: (value) => assertType(is.asyncIterable(value), \"AsyncIterable\" /* asyncIterable */, value),\n generator: (value) => assertType(is.generator(value), 'Generator', value),\n asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),\n nativePromise: (value) => assertType(is.nativePromise(value), \"native Promise\" /* nativePromise */, value),\n promise: (value) => assertType(is.promise(value), 'Promise', value),\n generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),\n asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),\n // eslint-disable-next-line @typescript-eslint/ban-types\n boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),\n regExp: (value) => assertType(is.regExp(value), 'RegExp', value),\n date: (value) => assertType(is.date(value), 'Date', value),\n error: (value) => assertType(is.error(value), 'Error', value),\n map: (value) => assertType(is.map(value), 'Map', value),\n set: (value) => assertType(is.set(value), 'Set', value),\n weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),\n weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),\n int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),\n uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),\n uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),\n int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),\n uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),\n int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),\n uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),\n float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),\n float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),\n bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),\n bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),\n arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),\n sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),\n dataView: (value) => assertType(is.dataView(value), 'DataView', value),\n enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),\n urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),\n urlString: (value) => assertType(is.urlString(value), \"string with a URL\" /* urlString */, value),\n truthy: (value) => assertType(is.truthy(value), \"truthy\" /* truthy */, value),\n falsy: (value) => assertType(is.falsy(value), \"falsy\" /* falsy */, value),\n nan: (value) => assertType(is.nan(value), \"NaN\" /* nan */, value),\n primitive: (value) => assertType(is.primitive(value), \"primitive\" /* primitive */, value),\n integer: (value) => assertType(is.integer(value), \"integer\" /* integer */, value),\n safeInteger: (value) => assertType(is.safeInteger(value), \"integer\" /* safeInteger */, value),\n plainObject: (value) => assertType(is.plainObject(value), \"plain object\" /* plainObject */, value),\n typedArray: (value) => assertType(is.typedArray(value), \"TypedArray\" /* typedArray */, value),\n arrayLike: (value) => assertType(is.arrayLike(value), \"array-like\" /* arrayLike */, value),\n domElement: (value) => assertType(is.domElement(value), \"HTMLElement\" /* domElement */, value),\n observable: (value) => assertType(is.observable(value), 'Observable', value),\n nodeStream: (value) => assertType(is.nodeStream(value), \"Node.js Stream\" /* nodeStream */, value),\n infinite: (value) => assertType(is.infinite(value), \"infinite number\" /* infinite */, value),\n emptyArray: (value) => assertType(is.emptyArray(value), \"empty array\" /* emptyArray */, value),\n nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), \"non-empty array\" /* nonEmptyArray */, value),\n emptyString: (value) => assertType(is.emptyString(value), \"empty string\" /* emptyString */, value),\n emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), \"empty string or whitespace\" /* emptyStringOrWhitespace */, value),\n nonEmptyString: (value) => assertType(is.nonEmptyString(value), \"non-empty string\" /* nonEmptyString */, value),\n nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), \"non-empty string and not whitespace\" /* nonEmptyStringAndNotWhitespace */, value),\n emptyObject: (value) => assertType(is.emptyObject(value), \"empty object\" /* emptyObject */, value),\n nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), \"non-empty object\" /* nonEmptyObject */, value),\n emptySet: (value) => assertType(is.emptySet(value), \"empty set\" /* emptySet */, value),\n nonEmptySet: (value) => assertType(is.nonEmptySet(value), \"non-empty set\" /* nonEmptySet */, value),\n emptyMap: (value) => assertType(is.emptyMap(value), \"empty map\" /* emptyMap */, value),\n nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), \"non-empty map\" /* nonEmptyMap */, value),\n propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),\n formData: (value) => assertType(is.formData(value), 'FormData', value),\n urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),\n // Numbers.\n evenInteger: (value) => assertType(is.evenInteger(value), \"even integer\" /* evenInteger */, value),\n oddInteger: (value) => assertType(is.oddInteger(value), \"odd integer\" /* oddInteger */, value),\n // Two arguments.\n directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), \"T\" /* directInstanceOf */, instance),\n inRange: (value, range) => assertType(is.inRange(value, range), \"in range\" /* inRange */, value),\n // Variadic functions.\n any: (predicate, ...values) => {\n return assertType(is.any(predicate, ...values), \"predicate returns truthy for any value\" /* any */, values, { multipleValues: true });\n },\n all: (predicate, ...values) => assertType(is.all(predicate, ...values), \"predicate returns truthy for all values\" /* all */, values, { multipleValues: true })\n};\n// Some few keywords are reserved, but we'll populate them for Node.js users\n// See https://github.com/Microsoft/TypeScript/issues/2536\nObject.defineProperties(is, {\n class: {\n value: is.class_\n },\n function: {\n value: is.function_\n },\n null: {\n value: is.null_\n }\n});\nObject.defineProperties(exports.assert, {\n class: {\n value: exports.assert.class_\n },\n function: {\n value: exports.assert.function_\n },\n null: {\n value: exports.assert.null_\n }\n});\nexports.default = is;\n// For CommonJS default export support\nmodule.exports = is;\nmodule.exports.default = is;\nmodule.exports.assert = exports.assert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst defer_to_connect_1 = require(\"defer-to-connect\");\nconst util_1 = require(\"util\");\nconst nodejsMajorVersion = Number(process.versions.node.split('.')[0]);\nconst timer = (request) => {\n if (request.timings) {\n return request.timings;\n }\n const timings = {\n start: Date.now(),\n socket: undefined,\n lookup: undefined,\n connect: undefined,\n secureConnect: undefined,\n upload: undefined,\n response: undefined,\n end: undefined,\n error: undefined,\n abort: undefined,\n phases: {\n wait: undefined,\n dns: undefined,\n tcp: undefined,\n tls: undefined,\n request: undefined,\n firstByte: undefined,\n download: undefined,\n total: undefined\n }\n };\n request.timings = timings;\n const handleError = (origin) => {\n const emit = origin.emit.bind(origin);\n origin.emit = (event, ...args) => {\n // Catches the `error` event\n if (event === 'error') {\n timings.error = Date.now();\n timings.phases.total = timings.error - timings.start;\n origin.emit = emit;\n }\n // Saves the original behavior\n return emit(event, ...args);\n };\n };\n handleError(request);\n const onAbort = () => {\n timings.abort = Date.now();\n // Let the `end` response event be responsible for setting the total phase,\n // unless the Node.js major version is >= 13.\n if (!timings.response || nodejsMajorVersion >= 13) {\n timings.phases.total = Date.now() - timings.start;\n }\n };\n request.prependOnceListener('abort', onAbort);\n const onSocket = (socket) => {\n timings.socket = Date.now();\n timings.phases.wait = timings.socket - timings.start;\n if (util_1.types.isProxy(socket)) {\n return;\n }\n const lookupListener = () => {\n timings.lookup = Date.now();\n timings.phases.dns = timings.lookup - timings.socket;\n };\n socket.prependOnceListener('lookup', lookupListener);\n defer_to_connect_1.default(socket, {\n connect: () => {\n timings.connect = Date.now();\n if (timings.lookup === undefined) {\n socket.removeListener('lookup', lookupListener);\n timings.lookup = timings.connect;\n timings.phases.dns = timings.lookup - timings.socket;\n }\n timings.phases.tcp = timings.connect - timings.lookup;\n // This callback is called before flushing any data,\n // so we don't need to set `timings.phases.request` here.\n },\n secureConnect: () => {\n timings.secureConnect = Date.now();\n timings.phases.tls = timings.secureConnect - timings.connect;\n }\n });\n };\n if (request.socket) {\n onSocket(request.socket);\n }\n else {\n request.prependOnceListener('socket', onSocket);\n }\n const onUpload = () => {\n var _a;\n timings.upload = Date.now();\n timings.phases.request = timings.upload - ((_a = timings.secureConnect) !== null && _a !== void 0 ? _a : timings.connect);\n };\n const writableFinished = () => {\n if (typeof request.writableFinished === 'boolean') {\n return request.writableFinished;\n }\n // Node.js doesn't have `request.writableFinished` property\n return request.finished && request.outputSize === 0 && (!request.socket || request.socket.writableLength === 0);\n };\n if (writableFinished()) {\n onUpload();\n }\n else {\n request.prependOnceListener('finish', onUpload);\n }\n request.prependOnceListener('response', (response) => {\n timings.response = Date.now();\n timings.phases.firstByte = timings.response - timings.upload;\n response.timings = timings;\n handleError(response);\n response.prependOnceListener('end', () => {\n timings.end = Date.now();\n timings.phases.download = timings.end - timings.response;\n timings.phases.total = timings.end - timings.start;\n });\n response.prependOnceListener('aborted', onAbort);\n });\n return timings;\n};\nexports.default = timer;\n// For CommonJS default export support\nmodule.exports = timer;\nmodule.exports.default = timer;\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 });\n__exportStar(require(\"./parsers/core\"), exports);\n__exportStar(require(\"./parsers/literal\"), exports);\n__exportStar(require(\"./parsers/number\"), exports);\n__exportStar(require(\"./parsers/parsed\"), exports);\n__exportStar(require(\"./parsers/union\"), exports);\n__exportStar(require(\"./parsers/yaml\"), exports);\n//# sourceMappingURL=main.js.map","\"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 __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.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBooleanInput = exports.getMultilineInput = exports.getInput = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nfunction getInput(name, options) {\n return core.getInput(name, options);\n}\nexports.getInput = getInput;\nfunction getMultilineInput(name, options) {\n return core.getMultilineInput(name, options);\n}\nexports.getMultilineInput = getMultilineInput;\nfunction getBooleanInput(name, options) {\n return core.getBooleanInput(name, options);\n}\nexports.getBooleanInput = getBooleanInput;\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLiteralInput = void 0;\nconst core_1 = require(\"@actions/core\");\nfunction getLiteralInput(name, options) {\n const { requiredValue, ...otherOptions } = options;\n const value = (0, core_1.getInput)(name, otherOptions);\n if (!value) {\n return undefined;\n }\n if (value === requiredValue) {\n return value;\n }\n throw new Error(`Input was not correct for ${name}. Must be ${requiredValue}`);\n}\nexports.getLiteralInput = getLiteralInput;\n//# sourceMappingURL=literal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNumberInput = void 0;\nconst core_1 = require(\"@actions/core\");\nfunction getNumberInput(name, options) {\n const value = (0, core_1.getInput)(name, options);\n if (!value) {\n return undefined;\n }\n const parsedValue = Number(value);\n if (Number.isNaN(parsedValue)) {\n throw new Error('Input was not a number');\n }\n return parsedValue;\n}\nexports.getNumberInput = getNumberInput;\n//# sourceMappingURL=number.js.map","\"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 __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.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getParsedInput = void 0;\nconst core = __importStar(require(\"@actions/core\"));\nfunction getParsedInput(name, options) {\n const { parser, ...otherOptions } = options || {};\n const input = core.getInput(name, otherOptions);\n if (!input) {\n return undefined;\n }\n if (parser) {\n return parser(input);\n }\n return input;\n}\nexports.getParsedInput = getParsedInput;\n//# sourceMappingURL=parsed.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUnionInput = void 0;\nconst core_1 = require(\"@actions/core\");\nfunction getUnionInput(name, options) {\n const { alternatives, ...otherOptions } = options;\n const value = (0, core_1.getInput)(name, otherOptions);\n if (!value) {\n return undefined;\n }\n if (alternatives.includes(value)) {\n return value;\n }\n throw new Error(`Input was not correct for ${name}. Valid alternatives are: ${alternatives.join(', ')}`);\n}\nexports.getUnionInput = getUnionInput;\n//# sourceMappingURL=union.js.map","\"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 __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.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getYAMLInput = void 0;\nconst core_1 = require(\"@actions/core\");\nconst yaml = __importStar(require(\"js-yaml\"));\nfunction getYAMLInput(name, options) {\n const { parser, ...otherOptions } = options || {};\n const value = (0, core_1.getInput)(name, otherOptions);\n if (!value) {\n return undefined;\n }\n const output = yaml.load(value);\n if (parser) {\n return parser(output);\n }\n return output;\n}\nexports.getYAMLInput = getYAMLInput;\n//# sourceMappingURL=yaml.js.map","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n // used for this specific key only because Object.defineProperty is slow\n if (keyNode === '__proto__') {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"! [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\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(null, name ? [state, name] : [state])\n hook.api = { remove: removeHookRef }\n hook.remove = removeHookRef\n\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('[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4')\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","'use strict';\nconst {\n\tV4MAPPED,\n\tADDRCONFIG,\n\tALL,\n\tpromises: {\n\t\tResolver: AsyncResolver\n\t},\n\tlookup: dnsLookup\n} = require('dns');\nconst {promisify} = require('util');\nconst os = require('os');\n\nconst kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection');\nconst kCacheableLookupInstance = Symbol('cacheableLookupInstance');\nconst kExpires = Symbol('expires');\n\nconst supportsALL = typeof ALL === 'number';\n\nconst verifyAgent = agent => {\n\tif (!(agent && typeof agent.createConnection === 'function')) {\n\t\tthrow new Error('Expected an Agent instance as the first argument');\n\t}\n};\n\nconst map4to6 = entries => {\n\tfor (const entry of entries) {\n\t\tif (entry.family === 6) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tentry.address = `::ffff:${entry.address}`;\n\t\tentry.family = 6;\n\t}\n};\n\nconst getIfaceInfo = () => {\n\tlet has4 = false;\n\tlet has6 = false;\n\n\tfor (const device of Object.values(os.networkInterfaces())) {\n\t\tfor (const iface of device) {\n\t\t\tif (iface.internal) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (iface.family === 'IPv6') {\n\t\t\t\thas6 = true;\n\t\t\t} else {\n\t\t\t\thas4 = true;\n\t\t\t}\n\n\t\t\tif (has4 && has6) {\n\t\t\t\treturn {has4, has6};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {has4, has6};\n};\n\nconst isIterable = map => {\n\treturn Symbol.iterator in map;\n};\n\nconst ttl = {ttl: true};\nconst all = {all: true};\n\nclass CacheableLookup {\n\tconstructor({\n\t\tcache = new Map(),\n\t\tmaxTtl = Infinity,\n\t\tfallbackDuration = 3600,\n\t\terrorTtl = 0.15,\n\t\tresolver = new AsyncResolver(),\n\t\tlookup = dnsLookup\n\t} = {}) {\n\t\tthis.maxTtl = maxTtl;\n\t\tthis.errorTtl = errorTtl;\n\n\t\tthis._cache = cache;\n\t\tthis._resolver = resolver;\n\t\tthis._dnsLookup = promisify(lookup);\n\n\t\tif (this._resolver instanceof AsyncResolver) {\n\t\t\tthis._resolve4 = this._resolver.resolve4.bind(this._resolver);\n\t\t\tthis._resolve6 = this._resolver.resolve6.bind(this._resolver);\n\t\t} else {\n\t\t\tthis._resolve4 = promisify(this._resolver.resolve4.bind(this._resolver));\n\t\t\tthis._resolve6 = promisify(this._resolver.resolve6.bind(this._resolver));\n\t\t}\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tthis._pending = {};\n\t\tthis._nextRemovalTime = false;\n\t\tthis._hostnamesToFallback = new Set();\n\n\t\tif (fallbackDuration < 1) {\n\t\t\tthis._fallback = false;\n\t\t} else {\n\t\t\tthis._fallback = true;\n\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tthis._hostnamesToFallback.clear();\n\t\t\t}, fallbackDuration * 1000);\n\n\t\t\t/* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */\n\t\t\tif (interval.unref) {\n\t\t\t\tinterval.unref();\n\t\t\t}\n\t\t}\n\n\t\tthis.lookup = this.lookup.bind(this);\n\t\tthis.lookupAsync = this.lookupAsync.bind(this);\n\t}\n\n\tset servers(servers) {\n\t\tthis.clear();\n\n\t\tthis._resolver.setServers(servers);\n\t}\n\n\tget servers() {\n\t\treturn this._resolver.getServers();\n\t}\n\n\tlookup(hostname, options, callback) {\n\t\tif (typeof options === 'function') {\n\t\t\tcallback = options;\n\t\t\toptions = {};\n\t\t} else if (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tif (!callback) {\n\t\t\tthrow new Error('Callback must be a function.');\n\t\t}\n\n\t\t// eslint-disable-next-line promise/prefer-await-to-then\n\t\tthis.lookupAsync(hostname, options).then(result => {\n\t\t\tif (options.all) {\n\t\t\t\tcallback(null, result);\n\t\t\t} else {\n\t\t\t\tcallback(null, result.address, result.family, result.expires, result.ttl);\n\t\t\t}\n\t\t}, callback);\n\t}\n\n\tasync lookupAsync(hostname, options = {}) {\n\t\tif (typeof options === 'number') {\n\t\t\toptions = {\n\t\t\t\tfamily: options\n\t\t\t};\n\t\t}\n\n\t\tlet cached = await this.query(hostname);\n\n\t\tif (options.family === 6) {\n\t\t\tconst filtered = cached.filter(entry => entry.family === 6);\n\n\t\t\tif (options.hints & V4MAPPED) {\n\t\t\t\tif ((supportsALL && options.hints & ALL) || filtered.length === 0) {\n\t\t\t\t\tmap4to6(cached);\n\t\t\t\t} else {\n\t\t\t\t\tcached = filtered;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcached = filtered;\n\t\t\t}\n\t\t} else if (options.family === 4) {\n\t\t\tcached = cached.filter(entry => entry.family === 4);\n\t\t}\n\n\t\tif (options.hints & ADDRCONFIG) {\n\t\t\tconst {_iface} = this;\n\t\t\tcached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4);\n\t\t}\n\n\t\tif (cached.length === 0) {\n\t\t\tconst error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);\n\t\t\terror.code = 'ENOTFOUND';\n\t\t\terror.hostname = hostname;\n\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (options.all) {\n\t\t\treturn cached;\n\t\t}\n\n\t\treturn cached[0];\n\t}\n\n\tasync query(hostname) {\n\t\tlet cached = await this._cache.get(hostname);\n\n\t\tif (!cached) {\n\t\t\tconst pending = this._pending[hostname];\n\n\t\t\tif (pending) {\n\t\t\t\tcached = await pending;\n\t\t\t} else {\n\t\t\t\tconst newPromise = this.queryAndCache(hostname);\n\t\t\t\tthis._pending[hostname] = newPromise;\n\n\t\t\t\ttry {\n\t\t\t\t\tcached = await newPromise;\n\t\t\t\t} finally {\n\t\t\t\t\tdelete this._pending[hostname];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcached = cached.map(entry => {\n\t\t\treturn {...entry};\n\t\t});\n\n\t\treturn cached;\n\t}\n\n\tasync _resolve(hostname) {\n\t\tconst wrap = async promise => {\n\t\t\ttry {\n\t\t\t\treturn await promise;\n\t\t\t} catch (error) {\n\t\t\t\tif (error.code === 'ENODATA' || error.code === 'ENOTFOUND') {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t};\n\n\t\t// ANY is unsafe as it doesn't trigger new queries in the underlying server.\n\t\tconst [A, AAAA] = await Promise.all([\n\t\t\tthis._resolve4(hostname, ttl),\n\t\t\tthis._resolve6(hostname, ttl)\n\t\t].map(promise => wrap(promise)));\n\n\t\tlet aTtl = 0;\n\t\tlet aaaaTtl = 0;\n\t\tlet cacheTtl = 0;\n\n\t\tconst now = Date.now();\n\n\t\tfor (const entry of A) {\n\t\t\tentry.family = 4;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taTtl = Math.max(aTtl, entry.ttl);\n\t\t}\n\n\t\tfor (const entry of AAAA) {\n\t\t\tentry.family = 6;\n\t\t\tentry.expires = now + (entry.ttl * 1000);\n\n\t\t\taaaaTtl = Math.max(aaaaTtl, entry.ttl);\n\t\t}\n\n\t\tif (A.length > 0) {\n\t\t\tif (AAAA.length > 0) {\n\t\t\t\tcacheTtl = Math.min(aTtl, aaaaTtl);\n\t\t\t} else {\n\t\t\t\tcacheTtl = aTtl;\n\t\t\t}\n\t\t} else {\n\t\t\tcacheTtl = aaaaTtl;\n\t\t}\n\n\t\treturn {\n\t\t\tentries: [\n\t\t\t\t...A,\n\t\t\t\t...AAAA\n\t\t\t],\n\t\t\tcacheTtl\n\t\t};\n\t}\n\n\tasync _lookup(hostname) {\n\t\ttry {\n\t\t\tconst entries = await this._dnsLookup(hostname, {\n\t\t\t\tall: true\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tentries,\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t} catch (_) {\n\t\t\treturn {\n\t\t\t\tentries: [],\n\t\t\t\tcacheTtl: 0\n\t\t\t};\n\t\t}\n\t}\n\n\tasync _set(hostname, data, cacheTtl) {\n\t\tif (this.maxTtl > 0 && cacheTtl > 0) {\n\t\t\tcacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000;\n\t\t\tdata[kExpires] = Date.now() + cacheTtl;\n\n\t\t\ttry {\n\t\t\t\tawait this._cache.set(hostname, data, cacheTtl);\n\t\t\t} catch (error) {\n\t\t\t\tthis.lookupAsync = async () => {\n\t\t\t\t\tconst cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.');\n\t\t\t\t\tcacheError.cause = error;\n\n\t\t\t\t\tthrow cacheError;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (isIterable(this._cache)) {\n\t\t\t\tthis._tick(cacheTtl);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync queryAndCache(hostname) {\n\t\tif (this._hostnamesToFallback.has(hostname)) {\n\t\t\treturn this._dnsLookup(hostname, all);\n\t\t}\n\n\t\tlet query = await this._resolve(hostname);\n\n\t\tif (query.entries.length === 0 && this._fallback) {\n\t\t\tquery = await this._lookup(hostname);\n\n\t\t\tif (query.entries.length !== 0) {\n\t\t\t\t// Use `dns.lookup(...)` for that particular hostname\n\t\t\t\tthis._hostnamesToFallback.add(hostname);\n\t\t\t}\n\t\t}\n\n\t\tconst cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;\n\t\tawait this._set(hostname, query.entries, cacheTtl);\n\n\t\treturn query.entries;\n\t}\n\n\t_tick(ms) {\n\t\tconst nextRemovalTime = this._nextRemovalTime;\n\n\t\tif (!nextRemovalTime || ms < nextRemovalTime) {\n\t\t\tclearTimeout(this._removalTimeout);\n\n\t\t\tthis._nextRemovalTime = ms;\n\n\t\t\tthis._removalTimeout = setTimeout(() => {\n\t\t\t\tthis._nextRemovalTime = false;\n\n\t\t\t\tlet nextExpiry = Infinity;\n\n\t\t\t\tconst now = Date.now();\n\n\t\t\t\tfor (const [hostname, entries] of this._cache) {\n\t\t\t\t\tconst expires = entries[kExpires];\n\n\t\t\t\t\tif (now >= expires) {\n\t\t\t\t\t\tthis._cache.delete(hostname);\n\t\t\t\t\t} else if (expires < nextExpiry) {\n\t\t\t\t\t\tnextExpiry = expires;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (nextExpiry !== Infinity) {\n\t\t\t\t\tthis._tick(nextExpiry - now);\n\t\t\t\t}\n\t\t\t}, ms);\n\n\t\t\t/* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */\n\t\t\tif (this._removalTimeout.unref) {\n\t\t\t\tthis._removalTimeout.unref();\n\t\t\t}\n\t\t}\n\t}\n\n\tinstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (kCacheableLookupCreateConnection in agent) {\n\t\t\tthrow new Error('CacheableLookup has been already installed');\n\t\t}\n\n\t\tagent[kCacheableLookupCreateConnection] = agent.createConnection;\n\t\tagent[kCacheableLookupInstance] = this;\n\n\t\tagent.createConnection = (options, callback) => {\n\t\t\tif (!('lookup' in options)) {\n\t\t\t\toptions.lookup = this.lookup;\n\t\t\t}\n\n\t\t\treturn agent[kCacheableLookupCreateConnection](options, callback);\n\t\t};\n\t}\n\n\tuninstall(agent) {\n\t\tverifyAgent(agent);\n\n\t\tif (agent[kCacheableLookupCreateConnection]) {\n\t\t\tif (agent[kCacheableLookupInstance] !== this) {\n\t\t\t\tthrow new Error('The agent is not owned by this CacheableLookup instance');\n\t\t\t}\n\n\t\t\tagent.createConnection = agent[kCacheableLookupCreateConnection];\n\n\t\t\tdelete agent[kCacheableLookupCreateConnection];\n\t\t\tdelete agent[kCacheableLookupInstance];\n\t\t}\n\t}\n\n\tupdateInterfaceInfo() {\n\t\tconst {_iface} = this;\n\n\t\tthis._iface = getIfaceInfo();\n\n\t\tif ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) {\n\t\t\tthis._cache.clear();\n\t\t}\n\t}\n\n\tclear(hostname) {\n\t\tif (hostname) {\n\t\t\tthis._cache.delete(hostname);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._cache.clear();\n\t}\n}\n\nmodule.exports = CacheableLookup;\nmodule.exports.default = CacheableLookup;\n","'use strict';\n\nconst EventEmitter = require('events');\nconst urlLib = require('url');\nconst normalizeUrl = require('normalize-url');\nconst getStream = require('get-stream');\nconst CachePolicy = require('http-cache-semantics');\nconst Response = require('responselike');\nconst lowercaseKeys = require('lowercase-keys');\nconst cloneResponse = require('clone-response');\nconst Keyv = require('keyv');\n\nclass CacheableRequest {\n\tconstructor(request, cacheAdapter) {\n\t\tif (typeof request !== 'function') {\n\t\t\tthrow new TypeError('Parameter `request` must be a function');\n\t\t}\n\n\t\tthis.cache = new Keyv({\n\t\t\turi: typeof cacheAdapter === 'string' && cacheAdapter,\n\t\t\tstore: typeof cacheAdapter !== 'string' && cacheAdapter,\n\t\t\tnamespace: 'cacheable-request'\n\t\t});\n\n\t\treturn this.createCacheableRequest(request);\n\t}\n\n\tcreateCacheableRequest(request) {\n\t\treturn (opts, cb) => {\n\t\t\tlet url;\n\t\t\tif (typeof opts === 'string') {\n\t\t\t\turl = normalizeUrlObject(urlLib.parse(opts));\n\t\t\t\topts = {};\n\t\t\t} else if (opts instanceof urlLib.URL) {\n\t\t\t\turl = normalizeUrlObject(urlLib.parse(opts.toString()));\n\t\t\t\topts = {};\n\t\t\t} else {\n\t\t\t\tconst [pathname, ...searchParts] = (opts.path || '').split('?');\n\t\t\t\tconst search = searchParts.length > 0 ?\n\t\t\t\t\t`?${searchParts.join('?')}` :\n\t\t\t\t\t'';\n\t\t\t\turl = normalizeUrlObject({ ...opts, pathname, search });\n\t\t\t}\n\n\t\t\topts = {\n\t\t\t\theaders: {},\n\t\t\t\tmethod: 'GET',\n\t\t\t\tcache: true,\n\t\t\t\tstrictTtl: false,\n\t\t\t\tautomaticFailover: false,\n\t\t\t\t...opts,\n\t\t\t\t...urlObjectToRequestOptions(url)\n\t\t\t};\n\t\t\topts.headers = lowercaseKeys(opts.headers);\n\n\t\t\tconst ee = new EventEmitter();\n\t\t\tconst normalizedUrlString = normalizeUrl(\n\t\t\t\turlLib.format(url),\n\t\t\t\t{\n\t\t\t\t\tstripWWW: false,\n\t\t\t\t\tremoveTrailingSlash: false,\n\t\t\t\t\tstripAuthentication: false\n\t\t\t\t}\n\t\t\t);\n\t\t\tconst key = `${opts.method}:${normalizedUrlString}`;\n\t\t\tlet revalidate = false;\n\t\t\tlet madeRequest = false;\n\n\t\t\tconst makeRequest = opts => {\n\t\t\t\tmadeRequest = true;\n\t\t\t\tlet requestErrored = false;\n\t\t\t\tlet requestErrorCallback;\n\n\t\t\t\tconst requestErrorPromise = new Promise(resolve => {\n\t\t\t\t\trequestErrorCallback = () => {\n\t\t\t\t\t\tif (!requestErrored) {\n\t\t\t\t\t\t\trequestErrored = true;\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tconst handler = response => {\n\t\t\t\t\tif (revalidate && !opts.forceRefresh) {\n\t\t\t\t\t\tresponse.status = response.statusCode;\n\t\t\t\t\t\tconst revalidatedPolicy = CachePolicy.fromObject(revalidate.cachePolicy).revalidatedPolicy(opts, response);\n\t\t\t\t\t\tif (!revalidatedPolicy.modified) {\n\t\t\t\t\t\t\tconst headers = revalidatedPolicy.policy.responseHeaders();\n\t\t\t\t\t\t\tresponse = new Response(revalidate.statusCode, headers, revalidate.body, revalidate.url);\n\t\t\t\t\t\t\tresponse.cachePolicy = revalidatedPolicy.policy;\n\t\t\t\t\t\t\tresponse.fromCache = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response.fromCache) {\n\t\t\t\t\t\tresponse.cachePolicy = new CachePolicy(opts, response, opts);\n\t\t\t\t\t\tresponse.fromCache = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet clonedResponse;\n\t\t\t\t\tif (opts.cache && response.cachePolicy.storable()) {\n\t\t\t\t\t\tclonedResponse = cloneResponse(response);\n\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst bodyPromise = getStream.buffer(response);\n\n\t\t\t\t\t\t\t\tawait Promise.race([\n\t\t\t\t\t\t\t\t\trequestErrorPromise,\n\t\t\t\t\t\t\t\t\tnew Promise(resolve => response.once('end', resolve))\n\t\t\t\t\t\t\t\t]);\n\n\t\t\t\t\t\t\t\tif (requestErrored) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst body = await bodyPromise;\n\n\t\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\t\tcachePolicy: response.cachePolicy.toObject(),\n\t\t\t\t\t\t\t\t\turl: response.url,\n\t\t\t\t\t\t\t\t\tstatusCode: response.fromCache ? revalidate.statusCode : response.statusCode,\n\t\t\t\t\t\t\t\t\tbody\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tlet ttl = opts.strictTtl ? response.cachePolicy.timeToLive() : undefined;\n\t\t\t\t\t\t\t\tif (opts.maxTtl) {\n\t\t\t\t\t\t\t\t\tttl = ttl ? Math.min(ttl, opts.maxTtl) : opts.maxTtl;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tawait this.cache.set(key, value, ttl);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t} else if (opts.cache && revalidate) {\n\t\t\t\t\t\t(async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cache.delete(key);\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit('response', clonedResponse || response);\n\t\t\t\t\tif (typeof cb === 'function') {\n\t\t\t\t\t\tcb(clonedResponse || response);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst req = request(opts, handler);\n\t\t\t\t\treq.once('error', requestErrorCallback);\n\t\t\t\t\treq.once('abort', requestErrorCallback);\n\t\t\t\t\tee.emit('request', req);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tee.emit('error', new CacheableRequest.RequestError(error));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t(async () => {\n\t\t\t\tconst get = async opts => {\n\t\t\t\t\tawait Promise.resolve();\n\n\t\t\t\t\tconst cacheEntry = opts.cache ? await this.cache.get(key) : undefined;\n\t\t\t\t\tif (typeof cacheEntry === 'undefined') {\n\t\t\t\t\t\treturn makeRequest(opts);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst policy = CachePolicy.fromObject(cacheEntry.cachePolicy);\n\t\t\t\t\tif (policy.satisfiesWithoutRevalidation(opts) && !opts.forceRefresh) {\n\t\t\t\t\t\tconst headers = policy.responseHeaders();\n\t\t\t\t\t\tconst response = new Response(cacheEntry.statusCode, headers, cacheEntry.body, cacheEntry.url);\n\t\t\t\t\t\tresponse.cachePolicy = policy;\n\t\t\t\t\t\tresponse.fromCache = true;\n\n\t\t\t\t\t\tee.emit('response', response);\n\t\t\t\t\t\tif (typeof cb === 'function') {\n\t\t\t\t\t\t\tcb(response);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trevalidate = cacheEntry;\n\t\t\t\t\t\topts.headers = policy.revalidationHeaders(opts);\n\t\t\t\t\t\tmakeRequest(opts);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst errorHandler = error => ee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\tthis.cache.once('error', errorHandler);\n\t\t\t\tee.on('response', () => this.cache.removeListener('error', errorHandler));\n\n\t\t\t\ttry {\n\t\t\t\t\tawait get(opts);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (opts.automaticFailover && !madeRequest) {\n\t\t\t\t\t\tmakeRequest(opts);\n\t\t\t\t\t}\n\n\t\t\t\t\tee.emit('error', new CacheableRequest.CacheError(error));\n\t\t\t\t}\n\t\t\t})();\n\n\t\t\treturn ee;\n\t\t};\n\t}\n}\n\nfunction urlObjectToRequestOptions(url) {\n\tconst options = { ...url };\n\toptions.path = `${url.pathname || '/'}${url.search || ''}`;\n\tdelete options.pathname;\n\tdelete options.search;\n\treturn options;\n}\n\nfunction normalizeUrlObject(url) {\n\t// If url was parsed by url.parse or new URL:\n\t// - hostname will be set\n\t// - host will be hostname[:port]\n\t// - port will be set if it was explicit in the parsed string\n\t// Otherwise, url was from request options:\n\t// - hostname or host may be set\n\t// - host shall not have port encoded\n\treturn {\n\t\tprotocol: url.protocol,\n\t\tauth: url.auth,\n\t\thostname: url.hostname || url.host || 'localhost',\n\t\tport: url.port,\n\t\tpathname: url.pathname,\n\t\tsearch: url.search\n\t};\n}\n\nCacheableRequest.RequestError = class extends Error {\n\tconstructor(error) {\n\t\tsuper(error.message);\n\t\tthis.name = 'RequestError';\n\t\tObject.assign(this, error);\n\t}\n};\n\nCacheableRequest.CacheError = class extends Error {\n\tconstructor(error) {\n\t\tsuper(error.message);\n\t\tthis.name = 'CacheError';\n\t\tObject.assign(this, error);\n\t}\n};\n\nmodule.exports = CacheableRequest;\n","'use strict';\n\n// We define these manually to ensure they're always copied\n// even if they would move up the prototype chain\n// https://nodejs.org/api/http.html#http_class_http_incomingmessage\nconst knownProps = [\n\t'destroy',\n\t'setTimeout',\n\t'socket',\n\t'headers',\n\t'trailers',\n\t'rawHeaders',\n\t'statusCode',\n\t'httpVersion',\n\t'httpVersionMinor',\n\t'httpVersionMajor',\n\t'rawTrailers',\n\t'statusMessage'\n];\n\nmodule.exports = (fromStream, toStream) => {\n\tconst fromProps = new Set(Object.keys(fromStream).concat(knownProps));\n\n\tfor (const prop of fromProps) {\n\t\t// Don't overwrite existing properties\n\t\tif (prop in toStream) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttoStream[prop] = typeof fromStream[prop] === 'function' ? fromStream[prop].bind(fromStream) : fromStream[prop];\n\t}\n};\n","'use strict';\n\nconst PassThrough = require('stream').PassThrough;\nconst mimicResponse = require('mimic-response');\n\nconst cloneResponse = response => {\n\tif (!(response && response.pipe)) {\n\t\tthrow new TypeError('Parameter `response` must be a response stream.');\n\t}\n\n\tconst clone = new PassThrough();\n\tmimicResponse(response, clone);\n\n\treturn response.pipe(clone);\n};\n\nmodule.exports = cloneResponse;\n","'use strict'\n\nconst { promisify } = require('util')\nconst JSONB = require('json-buffer')\nconst zlib = require('zlib')\n\nconst mergeOptions = require('./merge-options')\n\nconst compress = promisify(zlib.brotliCompress)\n\nconst decompress = promisify(zlib.brotliDecompress)\n\nconst identity = val => val\n\nconst createCompress = ({\n enable = true,\n serialize = JSONB.stringify,\n deserialize = JSONB.parse,\n compressOptions,\n decompressOptions\n} = {}) => {\n if (!enable) {\n return { serialize, deserialize, decompress: identity, compress: identity }\n }\n\n return {\n serialize,\n deserialize,\n compress: async (data, options = {}) => {\n if (data === undefined) return data\n const serializedData = serialize(data)\n return compress(serializedData, mergeOptions(compressOptions, options))\n },\n decompress: async (data, options = {}) => {\n if (data === undefined) return data\n return deserialize(\n await decompress(data, mergeOptions(decompressOptions, options))\n )\n }\n }\n}\n\nmodule.exports = createCompress\nmodule.exports.stringify = JSONB.stringify\nmodule.exports.parse = JSONB.parse\n","'use strict'\n\nmodule.exports = (defaultOptions = {}, options = {}) => {\n const params = {\n ...(defaultOptions.params || {}),\n ...(options.params || {})\n }\n\n return {\n ...defaultOptions,\n ...options,\n ...(Object.keys(params).length\n ? {\n params\n }\n : {})\n }\n}\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\nconst {Transform, PassThrough} = require('stream');\nconst zlib = require('zlib');\nconst mimicResponse = require('mimic-response');\n\nmodule.exports = response => {\n\tconst contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();\n\n\tif (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {\n\t\treturn response;\n\t}\n\n\t// TODO: Remove this when targeting Node.js 12.\n\tconst isBrotli = contentEncoding === 'br';\n\tif (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {\n\t\tresponse.destroy(new Error('Brotli is not supported on Node.js < 12'));\n\t\treturn response;\n\t}\n\n\tlet isEmpty = true;\n\n\tconst checker = new Transform({\n\t\ttransform(data, _encoding, callback) {\n\t\t\tisEmpty = false;\n\n\t\t\tcallback(null, data);\n\t\t},\n\n\t\tflush(callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\n\tconst finalStream = new PassThrough({\n\t\tautoDestroy: false,\n\t\tdestroy(error, callback) {\n\t\t\tresponse.destroy();\n\n\t\t\tcallback(error);\n\t\t}\n\t});\n\n\tconst decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();\n\n\tdecompressStream.once('error', error => {\n\t\tif (isEmpty && !response.readable) {\n\t\t\tfinalStream.end();\n\t\t\treturn;\n\t\t}\n\n\t\tfinalStream.destroy(error);\n\t});\n\n\tmimicResponse(response, finalStream);\n\tresponse.pipe(checker).pipe(decompressStream).pipe(finalStream);\n\n\treturn finalStream;\n};\n","\"use strict\";\n\nfunction dedent(strings) {\n\n var raw = void 0;\n if (typeof strings === \"string\") {\n // dedent can be used as a plain function\n raw = [strings];\n } else {\n raw = strings.raw;\n }\n\n // first, perform interpolation\n var result = \"\";\n for (var i = 0; i < raw.length; i++) {\n result += raw[i].\n // join lines when there is a suppressed newline\n replace(/\\\\\\n[ \\t]*/g, \"\").\n\n // handle escaped backticks\n replace(/\\\\`/g, \"`\");\n\n if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {\n result += arguments.length <= i + 1 ? undefined : arguments[i + 1];\n }\n }\n\n // now strip indentation\n var lines = result.split(\"\\n\");\n var mindent = null;\n lines.forEach(function (l) {\n var m = l.match(/^(\\s+)\\S+/);\n if (m) {\n var indent = m[1].length;\n if (!mindent) {\n // this is the first indented line\n mindent = indent;\n } else {\n mindent = Math.min(mindent, indent);\n }\n }\n });\n\n if (mindent !== null) {\n result = lines.map(function (l) {\n return l[0] === \" \" ? l.slice(mindent) : l;\n }).join(\"\\n\");\n }\n\n // dedent eats leading and trailing whitespace too\n result = result.trim();\n\n // handle escaped newlines at the end to ensure they don't get stripped too\n return result.replace(/\\\\n/g, \"\\n\");\n}\n\nif (typeof module !== \"undefined\") {\n module.exports = dedent;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isTLSSocket(socket) {\n return socket.encrypted;\n}\nconst deferToConnect = (socket, fn) => {\n let listeners;\n if (typeof fn === 'function') {\n const connect = fn;\n listeners = { connect };\n }\n else {\n listeners = fn;\n }\n const hasConnectListener = typeof listeners.connect === 'function';\n const hasSecureConnectListener = typeof listeners.secureConnect === 'function';\n const hasCloseListener = typeof listeners.close === 'function';\n const onConnect = () => {\n if (hasConnectListener) {\n listeners.connect();\n }\n if (isTLSSocket(socket) && hasSecureConnectListener) {\n if (socket.authorized) {\n listeners.secureConnect();\n }\n else if (!socket.authorizationError) {\n socket.once('secureConnect', listeners.secureConnect);\n }\n }\n if (hasCloseListener) {\n socket.once('close', listeners.close);\n }\n };\n if (socket.writable && !socket.connecting) {\n onConnect();\n }\n else if (socket.connecting) {\n socket.once('connect', onConnect);\n }\n else if (socket.destroyed && hasCloseListener) {\n listeners.close(socket._hadError);\n }\n};\nexports.default = deferToConnect;\n// For CommonJS default export support\nmodule.exports = deferToConnect;\nmodule.exports.default = deferToConnect;\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","'use strict';\n\nvar iconvLite = require('iconv-lite');\n\n// Expose to the world\nmodule.exports.convert = convert;\n\n/**\n * Convert encoding of an UTF-8 string or a buffer\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convert(str, to, from) {\n from = checkEncoding(from || 'UTF-8');\n to = checkEncoding(to || 'UTF-8');\n str = str || '';\n\n var result;\n\n if (from !== 'UTF-8' && typeof str === 'string') {\n str = Buffer.from(str, 'binary');\n }\n\n if (from === to) {\n if (typeof str === 'string') {\n result = Buffer.from(str);\n } else {\n result = str;\n }\n } else {\n try {\n result = convertIconvLite(str, to, from);\n } catch (E) {\n console.error(E);\n result = str;\n }\n }\n\n if (typeof result === 'string') {\n result = Buffer.from(result, 'utf-8');\n }\n\n return result;\n}\n\n/**\n * Convert encoding of astring with iconv-lite\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convertIconvLite(str, to, from) {\n if (to === 'UTF-8') {\n return iconvLite.decode(str, from);\n } else if (from === 'UTF-8') {\n return iconvLite.encode(str, to);\n } else {\n return iconvLite.encode(iconvLite.decode(str, from), to);\n }\n}\n\n/**\n * Converts charset name if needed\n *\n * @param {String} name Character set\n * @return {String} Character set name\n */\nfunction checkEncoding(name) {\n return (name || '')\n .toString()\n .trim()\n .replace(/^latin[\\-_]?(\\d+)$/i, 'ISO-8859-$1')\n .replace(/^win(?:dows)?[\\-_]?(\\d+)$/i, 'WINDOWS-$1')\n .replace(/^utf[\\-_]?(\\d+)$/i, 'UTF-$1')\n .replace(/^ks_c_5601\\-1987$/i, 'CP949')\n .replace(/^us[\\-_]?ascii$/i, 'ASCII')\n .toUpperCase();\n}\n","var once = require('once');\n\nvar noop = function() {};\n\nvar isRequest = function(stream) {\n\treturn stream.setHeader && typeof stream.abort === 'function';\n};\n\nvar isChildProcess = function(stream) {\n\treturn stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3\n};\n\nvar eos = function(stream, opts, callback) {\n\tif (typeof opts === 'function') return eos(stream, null, opts);\n\tif (!opts) opts = {};\n\n\tcallback = once(callback || noop);\n\n\tvar ws = stream._writableState;\n\tvar rs = stream._readableState;\n\tvar readable = opts.readable || (opts.readable !== false && stream.readable);\n\tvar writable = opts.writable || (opts.writable !== false && stream.writable);\n\tvar cancelled = false;\n\n\tvar onlegacyfinish = function() {\n\t\tif (!stream.writable) onfinish();\n\t};\n\n\tvar onfinish = function() {\n\t\twritable = false;\n\t\tif (!readable) callback.call(stream);\n\t};\n\n\tvar onend = function() {\n\t\treadable = false;\n\t\tif (!writable) callback.call(stream);\n\t};\n\n\tvar onexit = function(exitCode) {\n\t\tcallback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);\n\t};\n\n\tvar onerror = function(err) {\n\t\tcallback.call(stream, err);\n\t};\n\n\tvar onclose = function() {\n\t\tprocess.nextTick(onclosenexttick);\n\t};\n\n\tvar onclosenexttick = function() {\n\t\tif (cancelled) return;\n\t\tif (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));\n\t\tif (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));\n\t};\n\n\tvar onrequest = function() {\n\t\tstream.req.on('finish', onfinish);\n\t};\n\n\tif (isRequest(stream)) {\n\t\tstream.on('complete', onfinish);\n\t\tstream.on('abort', onclose);\n\t\tif (stream.req) onrequest();\n\t\telse stream.on('request', onrequest);\n\t} else if (writable && !ws) { // legacy streams\n\t\tstream.on('end', onlegacyfinish);\n\t\tstream.on('close', onlegacyfinish);\n\t}\n\n\tif (isChildProcess(stream)) stream.on('exit', onexit);\n\n\tstream.on('end', onend);\n\tstream.on('finish', onfinish);\n\tif (opts.error !== false) stream.on('error', onerror);\n\tstream.on('close', onclose);\n\n\treturn function() {\n\t\tcancelled = true;\n\t\tstream.removeListener('complete', onfinish);\n\t\tstream.removeListener('abort', onclose);\n\t\tstream.removeListener('request', onrequest);\n\t\tif (stream.req) stream.req.removeListener('finish', onfinish);\n\t\tstream.removeListener('end', onlegacyfinish);\n\t\tstream.removeListener('close', onlegacyfinish);\n\t\tstream.removeListener('finish', onfinish);\n\t\tstream.removeListener('exit', onexit);\n\t\tstream.removeListener('end', onend);\n\t\tstream.removeListener('error', onerror);\n\t\tstream.removeListener('close', onclose);\n\t};\n};\n\nmodule.exports = eos;\n","\"use strict\";\nexports.__esModule = true;\nexports.getSanitizedEnv = exports.testOnlySymbol = void 0;\nvar errors_1 = require(\"./errors\");\nvar reporter_1 = require(\"./reporter\");\nexports.testOnlySymbol = Symbol('envalid - test only');\n/**\n * Validate a single env var, given a spec object\n *\n * @throws EnvError - If validation is unsuccessful\n * @return - The cleaned value\n */\nfunction validateVar(_a) {\n var spec = _a.spec, name = _a.name, rawValue = _a.rawValue;\n if (typeof spec._parse !== 'function') {\n throw new errors_1.EnvError(\"Invalid spec for \\\"\".concat(name, \"\\\"\"));\n }\n var value = spec._parse(rawValue);\n if (spec.choices) {\n if (!Array.isArray(spec.choices)) {\n throw new TypeError(\"\\\"choices\\\" must be an array (in spec for \\\"\".concat(name, \"\\\")\"));\n }\n else if (!spec.choices.includes(value)) {\n throw new errors_1.EnvError(\"Value \\\"\".concat(value, \"\\\" not in choices [\").concat(spec.choices, \"]\"));\n }\n }\n if (value == null)\n throw new errors_1.EnvError(\"Invalid value for env var \\\"\".concat(name, \"\\\"\"));\n return value;\n}\n// Format a string error message for when a required env var is missing\nfunction formatSpecDescription(spec) {\n var egText = spec.example ? \" (eg. \\\"\".concat(spec.example, \"\\\")\") : '';\n var docsText = spec.docs ? \". See \".concat(spec.docs) : '';\n return \"\".concat(spec.desc).concat(egText).concat(docsText);\n}\nvar readRawEnvValue = function (env, k) {\n return env[k];\n};\nvar isTestOnlySymbol = function (value) { return value === exports.testOnlySymbol; };\n/**\n * Perform the central validation/sanitization logic on the full environment object\n */\nfunction getSanitizedEnv(environment, specs, options) {\n if (options === void 0) { options = {}; }\n var cleanedEnv = {};\n var errors = {};\n var varKeys = Object.keys(specs);\n var rawNodeEnv = readRawEnvValue(environment, 'NODE_ENV');\n for (var _i = 0, varKeys_1 = varKeys; _i < varKeys_1.length; _i++) {\n var k = varKeys_1[_i];\n var spec = specs[k];\n var rawValue = readRawEnvValue(environment, k);\n // If no value was given and default/devDefault were provided, return the appropriate default\n // value without passing it through validation\n if (rawValue === undefined) {\n // Use devDefault values only if NODE_ENV was explicitly set, and isn't 'production'\n var usingDevDefault = rawNodeEnv && rawNodeEnv !== 'production' && spec.hasOwnProperty('devDefault');\n if (usingDevDefault) {\n // @ts-expect-error default values can break the rules slightly by being explicitly set to undefined\n cleanedEnv[k] = spec.devDefault;\n continue;\n }\n if (spec.hasOwnProperty('default')) {\n // @ts-expect-error default values can break the rules slightly by being explicitly set to undefined\n cleanedEnv[k] = spec[\"default\"];\n continue;\n }\n }\n try {\n if (isTestOnlySymbol(rawValue)) {\n throw new errors_1.EnvMissingError(formatSpecDescription(spec));\n }\n if (rawValue === undefined) {\n // @ts-ignore (fixes #138) Need to figure out why explicitly undefined default/devDefault breaks inference\n cleanedEnv[k] = undefined;\n throw new errors_1.EnvMissingError(formatSpecDescription(spec));\n }\n else {\n cleanedEnv[k] = validateVar({ name: k, spec: spec, rawValue: rawValue });\n }\n }\n catch (err) {\n if ((options === null || options === void 0 ? void 0 : options.reporter) === null)\n throw err;\n if (err instanceof Error)\n errors[k] = err;\n }\n }\n var reporter = (options === null || options === void 0 ? void 0 : options.reporter) || reporter_1.defaultReporter;\n reporter({ errors: errors, env: cleanedEnv });\n return cleanedEnv;\n}\nexports.getSanitizedEnv = getSanitizedEnv;\n//# sourceMappingURL=core.js.map","\"use strict\";\nexports.__esModule = true;\nexports.testOnly = exports.customCleanEnv = exports.cleanEnv = void 0;\nvar core_1 = require(\"./core\");\nvar middleware_1 = require(\"./middleware\");\n/**\n * Returns a sanitized, immutable environment object. _Only_ the env vars\n * specified in the `validators` parameter will be accessible on the returned\n * object.\n * @param environment An object containing your env vars (eg. process.env).\n * @param specs An object that specifies the format of required vars.\n * @param options An object that specifies options for cleanEnv.\n */\nfunction cleanEnv(environment, specs, options) {\n if (options === void 0) { options = {}; }\n var cleaned = (0, core_1.getSanitizedEnv)(environment, specs, options);\n return Object.freeze((0, middleware_1.applyDefaultMiddleware)(cleaned, environment));\n}\nexports.cleanEnv = cleanEnv;\n/**\n * Returns a sanitized, immutable environment object, and passes it through a custom\n * applyMiddleware function before being frozen. Most users won't need the flexibility of custom\n * middleware; prefer cleanEnv() unless you're sure you need it\n *\n * @param environment An object containing your env vars (eg. process.env).\n * @param specs An object that specifies the format of required vars.\n * @param applyMiddleware A function that applies transformations to the cleaned env object\n * @param options An object that specifies options for cleanEnv.\n */\nfunction customCleanEnv(environment, specs, applyMiddleware, options) {\n if (options === void 0) { options = {}; }\n var cleaned = (0, core_1.getSanitizedEnv)(environment, specs, options);\n return Object.freeze(applyMiddleware(cleaned, environment));\n}\nexports.customCleanEnv = customCleanEnv;\n/**\n * Utility function for providing default values only when NODE_ENV=test\n *\n * For more context, see https://github.com/af/envalid/issues/32\n */\nvar testOnly = function (defaultValueForTests) {\n return process.env.NODE_ENV === 'test' ? defaultValueForTests : core_1.testOnlySymbol; // T is not strictly correct, but prevents type errors during usage\n};\nexports.testOnly = testOnly;\n//# sourceMappingURL=envalid.js.map","\"use strict\";\n// Surprisingly involved error subclassing\n// See https://stackoverflow.com/questions/41102060/typescript-extending-error-class\nexports.__esModule = true;\nexports.EnvMissingError = exports.EnvError = void 0;\nvar tslib_1 = require(\"tslib\");\nvar EnvError = /** @class */ (function (_super) {\n tslib_1.__extends(EnvError, _super);\n function EnvError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n Error.captureStackTrace(_this, EnvError);\n _this.name = _this.constructor.name;\n return _this;\n }\n return EnvError;\n}(TypeError));\nexports.EnvError = EnvError;\nvar EnvMissingError = /** @class */ (function (_super) {\n tslib_1.__extends(EnvMissingError, _super);\n function EnvMissingError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n Error.captureStackTrace(_this, EnvMissingError);\n _this.name = _this.constructor.name;\n return _this;\n }\n return EnvMissingError;\n}(ReferenceError));\nexports.EnvMissingError = EnvMissingError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\nexports.__esModule = true;\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./envalid\"), exports);\ntslib_1.__exportStar(require(\"./errors\"), exports);\ntslib_1.__exportStar(require(\"./middleware\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./validators\"), exports);\ntslib_1.__exportStar(require(\"./reporter\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nexports.__esModule = true;\nexports.applyDefaultMiddleware = exports.accessorMiddleware = exports.strictProxyMiddleware = void 0;\nvar strictProxyMiddleware = function (envObj, rawEnv) {\n var inspectables = [\n 'length',\n 'inspect',\n 'hasOwnProperty',\n 'toJSON',\n Symbol.toStringTag,\n Symbol.iterator,\n // For jest\n 'asymmetricMatch',\n 'nodeType',\n // For react-refresh, see #150\n '$$typeof',\n // For libs that use `then` checks to see if objects are Promises (see #74):\n 'then',\n // For usage with TypeScript esModuleInterop flag\n '__esModule',\n ];\n var inspectSymbolStrings = ['Symbol(util.inspect.custom)', 'Symbol(nodejs.util.inspect.custom)'];\n return new Proxy(envObj, {\n get: function (target, name) {\n var _a;\n // These checks are needed because calling console.log on a\n // proxy that throws crashes the entire process. This permits access on\n // the necessary properties for `console.log(envObj)`, `envObj.length`,\n // `envObj.hasOwnProperty('string')` to work.\n if (inspectables.includes(name) || inspectSymbolStrings.includes(name.toString())) {\n // @ts-expect-error TS doesn't like symbol types as indexers\n return target[name];\n }\n var varExists = target.hasOwnProperty(name);\n if (!varExists) {\n if (typeof rawEnv === 'object' && ((_a = rawEnv === null || rawEnv === void 0 ? void 0 : rawEnv.hasOwnProperty) === null || _a === void 0 ? void 0 : _a.call(rawEnv, name))) {\n throw new ReferenceError(\"[envalid] Env var \".concat(name, \" was accessed but not validated. This var is set in the environment; please add an envalid validator for it.\"));\n }\n throw new ReferenceError(\"[envalid] Env var not found: \".concat(name));\n }\n return target[name];\n },\n set: function (_target, name) {\n throw new TypeError(\"[envalid] Attempt to mutate environment value: \".concat(name));\n }\n });\n};\nexports.strictProxyMiddleware = strictProxyMiddleware;\nvar accessorMiddleware = function (envObj, rawEnv) {\n // Attach is{Prod/Dev/Test} properties for more readable NODE_ENV checks\n // Note that isDev and isProd are just aliases to isDevelopment and isProduction\n // @ts-ignore attempt to read NODE_ENV even if it's not in the spec\n var computedNodeEnv = envObj.NODE_ENV || rawEnv.NODE_ENV;\n // If NODE_ENV is not set, assume production\n var isProd = !computedNodeEnv || computedNodeEnv === 'production';\n Object.defineProperties(envObj, {\n isDevelopment: { value: computedNodeEnv === 'development' },\n isDev: { value: computedNodeEnv === 'development' },\n isProduction: { value: isProd },\n isProd: { value: isProd },\n isTest: { value: computedNodeEnv === 'test' }\n });\n return envObj;\n};\nexports.accessorMiddleware = accessorMiddleware;\nvar applyDefaultMiddleware = function (cleanedEnv, rawEnv) {\n // Note: Ideally we would declare the default middlewares in an array and apply them in series with\n // a generic pipe() function. However, a generically typed variadic pipe() appears to not be possible\n // in TypeScript as of 4.x, so we just manually apply them below. See\n // https://github.com/microsoft/TypeScript/pull/39094#issuecomment-647042984\n return (0, exports.strictProxyMiddleware)((0, exports.accessorMiddleware)(cleanedEnv, rawEnv), rawEnv);\n};\nexports.applyDefaultMiddleware = applyDefaultMiddleware;\n//# sourceMappingURL=middleware.js.map","\"use strict\";\nvar _a;\nexports.__esModule = true;\nexports.defaultReporter = exports.envalidErrorFormatter = void 0;\n/* eslint-disable no-console */\nvar errors_1 = require(\"./errors\");\nvar defaultLogger = console.error.bind(console);\n// Apply ANSI colors to the reporter output only if we detect that we're running in Node\nvar isNode = !!(typeof process === 'object' && ((_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node));\nvar colorWith = function (colorCode) { return function (str) {\n return isNode ? \"\\u001B[\".concat(colorCode, \"m\").concat(str, \"\\u001B[0m\") : str;\n}; };\nvar colors = {\n blue: colorWith('34'),\n white: colorWith('37'),\n yellow: colorWith('33')\n};\nvar RULE = colors.white('================================');\n// Takes the provided errors, formats them all to an output string, and passes that string output to the\n// provided \"logger\" function.\n//\n// This is exposed in the public API so third-party reporters can leverage this logic if desired\nvar envalidErrorFormatter = function (errors, logger) {\n if (logger === void 0) { logger = defaultLogger; }\n var missingVarsOutput = [];\n var invalidVarsOutput = [];\n for (var _i = 0, _a = Object.entries(errors); _i < _a.length; _i++) {\n var _b = _a[_i], k = _b[0], err = _b[1];\n if (err instanceof errors_1.EnvMissingError) {\n missingVarsOutput.push(\" \".concat(colors.blue(k), \": \").concat(err.message || '(required)'));\n }\n else\n invalidVarsOutput.push(\" \".concat(colors.blue(k), \": \").concat((err === null || err === void 0 ? void 0 : err.message) || '(invalid format)'));\n }\n // Prepend \"header\" output for each section of the output:\n if (invalidVarsOutput.length) {\n invalidVarsOutput.unshift(\" \".concat(colors.yellow('Invalid'), \" environment variables:\"));\n }\n if (missingVarsOutput.length) {\n missingVarsOutput.unshift(\" \".concat(colors.yellow('Missing'), \" environment variables:\"));\n }\n var output = [\n RULE,\n invalidVarsOutput.sort().join('\\n'),\n missingVarsOutput.sort().join('\\n'),\n RULE,\n ]\n .filter(function (x) { return !!x; })\n .join('\\n');\n logger(output);\n};\nexports.envalidErrorFormatter = envalidErrorFormatter;\nvar defaultReporter = function (_a, _b) {\n var _c = _a.errors, errors = _c === void 0 ? {} : _c;\n var _d = _b === void 0 ? { logger: defaultLogger } : _b, onError = _d.onError, logger = _d.logger;\n if (!Object.keys(errors).length)\n return;\n (0, exports.envalidErrorFormatter)(errors, logger);\n if (onError) {\n onError(errors);\n }\n else if (isNode) {\n logger(colors.yellow('\\n Exiting with error code 1'));\n process.exit(1);\n }\n else {\n throw new TypeError('Environment validation failed');\n }\n};\nexports.defaultReporter = defaultReporter;\n//# sourceMappingURL=reporter.js.map","\"use strict\";\nexports.__esModule = true;\n//# sourceMappingURL=types.js.map","\"use strict\";\nexports.__esModule = true;\nexports.json = exports.url = exports.port = exports.host = exports.email = exports.str = exports.num = exports.bool = exports.makeValidator = void 0;\nvar tslib_1 = require(\"tslib\");\nvar errors_1 = require(\"./errors\");\n// Simplified adaptation of https://github.com/validatorjs/validator.js/blob/master/src/lib/isFQDN.js\nvar isFQDN = function (input) {\n if (!input.length)\n return false;\n var parts = input.split('.');\n for (var part = void 0, i = 0; i < parts.length; i++) {\n part = parts[i];\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part))\n return false;\n if (/[\\uff01-\\uff5e]/.test(part))\n return false; // disallow full-width chars\n if (part[0] === '-' || part[part.length - 1] === '-')\n return false;\n }\n return true;\n};\n// \"best effort\" regex-based IP address check\n// If you want a more exhaustive check, create your own custom validator, perhaps wrapping this\n// implementation (the source of the ipv4 regex below): https://github.com/validatorjs/validator.js/blob/master/src/lib/isIP.js\nvar ipv4Regex = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;\nvar ipv6Regex = /([a-f0-9]+:+)+[a-f0-9]+/;\nvar isIP = function (input) {\n if (!input.length)\n return false;\n return ipv4Regex.test(input) || ipv6Regex.test(input);\n};\nvar EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/; // intentionally non-exhaustive\nvar makeValidator = function (parseFn) {\n return function (spec) {\n return tslib_1.__assign(tslib_1.__assign({}, spec), { _parse: parseFn });\n };\n};\nexports.makeValidator = makeValidator;\n// The reason for the function wrapper is to enable the type parameter\n// that enables better type inference. For more context, check out the following PR:\n// https://github.com/af/envalid/pull/118\nfunction bool(spec) {\n return (0, exports.makeValidator)(function (input) {\n switch (input) {\n case true:\n case 'true':\n case 't':\n case '1':\n return true;\n case false:\n case 'false':\n case 'f':\n case '0':\n return false;\n default:\n throw new errors_1.EnvError(\"Invalid bool input: \\\"\".concat(input, \"\\\"\"));\n }\n })(spec);\n}\nexports.bool = bool;\nfunction num(spec) {\n return (0, exports.makeValidator)(function (input) {\n var coerced = parseFloat(input);\n if (Number.isNaN(coerced))\n throw new errors_1.EnvError(\"Invalid number input: \\\"\".concat(input, \"\\\"\"));\n return coerced;\n })(spec);\n}\nexports.num = num;\nfunction str(spec) {\n return (0, exports.makeValidator)(function (input) {\n if (typeof input === 'string')\n return input;\n throw new errors_1.EnvError(\"Not a string: \\\"\".concat(input, \"\\\"\"));\n })(spec);\n}\nexports.str = str;\nfunction email(spec) {\n return (0, exports.makeValidator)(function (x) {\n if (EMAIL_REGEX.test(x))\n return x;\n throw new errors_1.EnvError(\"Invalid email address: \\\"\".concat(x, \"\\\"\"));\n })(spec);\n}\nexports.email = email;\nfunction host(spec) {\n return (0, exports.makeValidator)(function (input) {\n if (!isFQDN(input) && !isIP(input)) {\n throw new errors_1.EnvError(\"Invalid host (domain or ip): \\\"\".concat(input, \"\\\"\"));\n }\n return input;\n })(spec);\n}\nexports.host = host;\nfunction port(spec) {\n return (0, exports.makeValidator)(function (input) {\n var coerced = +input;\n if (Number.isNaN(coerced) ||\n \"\".concat(coerced) !== \"\".concat(input) ||\n coerced % 1 !== 0 ||\n coerced < 1 ||\n coerced > 65535) {\n throw new errors_1.EnvError(\"Invalid port input: \\\"\".concat(input, \"\\\"\"));\n }\n return coerced;\n })(spec);\n}\nexports.port = port;\nfunction url(spec) {\n return (0, exports.makeValidator)(function (x) {\n try {\n new URL(x);\n return x;\n }\n catch (e) {\n throw new errors_1.EnvError(\"Invalid url: \\\"\".concat(x, \"\\\"\"));\n }\n })(spec);\n}\nexports.url = url;\n// It's recommended that you provide an explicit type parameter for json validation\n// if you're using TypeScript. Otherwise the output will be typed as `any`. For example:\n//\n// cleanEnv({\n// MY_VAR: json<{ foo: number }>({ default: { foo: 123 } }),\n// })\nfunction json(spec) {\n return (0, exports.makeValidator)(function (x) {\n try {\n return JSON.parse(x);\n }\n catch (e) {\n throw new errors_1.EnvError(\"Invalid json: \\\"\".concat(x, \"\\\"\"));\n }\n })(spec);\n}\nexports.json = json;\n//# sourceMappingURL=validators.js.map","'use strict';\nconst {PassThrough: PassThroughStream} = require('stream');\n\nmodule.exports = options => {\n\toptions = {...options};\n\n\tconst {array} = options;\n\tlet {encoding} = options;\n\tconst isBuffer = encoding === 'buffer';\n\tlet objectMode = false;\n\n\tif (array) {\n\t\tobjectMode = !(encoding || isBuffer);\n\t} else {\n\t\tencoding = encoding || 'utf8';\n\t}\n\n\tif (isBuffer) {\n\t\tencoding = null;\n\t}\n\n\tconst stream = new PassThroughStream({objectMode});\n\n\tif (encoding) {\n\t\tstream.setEncoding(encoding);\n\t}\n\n\tlet length = 0;\n\tconst chunks = [];\n\n\tstream.on('data', chunk => {\n\t\tchunks.push(chunk);\n\n\t\tif (objectMode) {\n\t\t\tlength = chunks.length;\n\t\t} else {\n\t\t\tlength += chunk.length;\n\t\t}\n\t});\n\n\tstream.getBufferedValue = () => {\n\t\tif (array) {\n\t\t\treturn chunks;\n\t\t}\n\n\t\treturn isBuffer ? Buffer.concat(chunks, length) : chunks.join('');\n\t};\n\n\tstream.getBufferedLength = () => length;\n\n\treturn stream;\n};\n","'use strict';\nconst {constants: BufferConstants} = require('buffer');\nconst pump = require('pump');\nconst bufferStream = require('./buffer-stream');\n\nclass MaxBufferError extends Error {\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t\tthis.name = 'MaxBufferError';\n\t}\n}\n\nasync function getStream(inputStream, options) {\n\tif (!inputStream) {\n\t\treturn Promise.reject(new Error('Expected a stream'));\n\t}\n\n\toptions = {\n\t\tmaxBuffer: Infinity,\n\t\t...options\n\t};\n\n\tconst {maxBuffer} = options;\n\n\tlet stream;\n\tawait new Promise((resolve, reject) => {\n\t\tconst rejectPromise = error => {\n\t\t\t// Don't retrieve an oversized buffer.\n\t\t\tif (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {\n\t\t\t\terror.bufferedData = stream.getBufferedValue();\n\t\t\t}\n\n\t\t\treject(error);\n\t\t};\n\n\t\tstream = pump(inputStream, bufferStream(options), error => {\n\t\t\tif (error) {\n\t\t\t\trejectPromise(error);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve();\n\t\t});\n\n\t\tstream.on('data', () => {\n\t\t\tif (stream.getBufferedLength() > maxBuffer) {\n\t\t\t\trejectPromise(new MaxBufferError());\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stream.getBufferedValue();\n}\n\nmodule.exports = getStream;\n// TODO: Remove this for the next major release\nmodule.exports.default = getStream;\nmodule.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});\nmodule.exports.array = (stream, options) => getStream(stream, {...options, array: true});\nmodule.exports.MaxBufferError = MaxBufferError;\n","var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e=e}},\"es6\",\"es3\");$jscomp.polyfill(\"Array.prototype.find\",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.startsWith\",function(a){return a?a:function(a,c){var b=$jscomp.checkStringArgs(this,a,\"startsWith\");a+=\"\";var e=b.length,f=a.length;c=Math.max(0,Math.min(c|0,b.length));for(var g=0;g=f}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(a){var b=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>a||1342177279>>=1)b+=b;return d}},\"es6\",\"es3\");var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.isDef=function(a){return void 0!==a};goog.isString=function(a){return\"string\"==typeof a};goog.isBoolean=function(a){return\"boolean\"==typeof a};\ngoog.isNumber=function(a){return\"number\"==typeof a};goog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.provide cannot be used within a module.\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector(\"script[nonce]\"))&&(a=a.nonce||a.getAttribute(\"nonce\"))&&goog.NONCE_PATTERN_.test(a)?a:\"\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInGoogModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\");\nif(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\"es6\",GOOG:\"goog\"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};\ngoog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\"function\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\"goog.declareModuleId may only be called from within an ES6 module\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\"goog.declareModuleId may only be called once per module.\");if(a in goog.loadedModules_)throw Error('Module with namespace \"'+a+'\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\"function\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \"'+\na+'\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};\nCOMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={\"goog.module\":!0});goog.getObjectByName=function(a,b){a=a.split(\".\");b=b||goog.global;for(var c=0;c>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;\ngoog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement(\"script\");e.defer=goog.Dependency.defer_;e.async=!1;e.type=\"text/javascript\";(d=goog.getScriptNonce())&&e.setAttribute(\"nonce\",d);goog.DebugLoader_.IS_OLD_IE_?\n(a.pause(),e.onreadystatechange=function(){if(\"loaded\"==e.readyState||\"complete\"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(a,b){a=b?'