@restatedev/restate-cdk 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,6 +17,7 @@ jobs:
17
17
  - uses: actions/setup-node@v4
18
18
  with:
19
19
  node-version: "22"
20
+ - run: npm install -g npm@latest
20
21
  - run: npm ci
21
22
  - run: npm run lint
22
23
  - run: npm run build
@@ -0,0 +1,92 @@
1
+ name: Publish to NPM
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ release:
7
+ types: [published]
8
+
9
+ jobs:
10
+ publish:
11
+ # prevent from running on forks
12
+ if: github.repository_owner == 'restatedev'
13
+ runs-on: ubuntu-latest
14
+
15
+ permissions:
16
+ contents: write
17
+ id-token: write # required for npm trusted publishing via OIDC
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - uses: actions/setup-node@v4
22
+ with:
23
+ node-version: "22.x"
24
+ registry-url: "https://registry.npmjs.org"
25
+
26
+ # npm 11.5.1+ required for trusted publishing with OIDC
27
+ - run: npm install -g npm@latest
28
+ - run: npm ci
29
+
30
+ # Release: update version BEFORE build so artifacts have correct version
31
+ - name: Extract tag version
32
+ if: github.event_name == 'release'
33
+ run: |
34
+ echo "Full GITHUB_REF: ${GITHUB_REF}"
35
+ TAG_VERSION=${GITHUB_REF#refs/tags/v}
36
+ if [ -z "$TAG_VERSION" ]; then
37
+ echo "Error: TAG_VERSION is empty. Exiting."
38
+ exit 1
39
+ fi
40
+ echo "Extracted TAG_VERSION: $TAG_VERSION"
41
+ echo "TAG_VERSION=$TAG_VERSION" >> $GITHUB_ENV
42
+
43
+ - name: Update package version
44
+ if: github.event_name == 'release'
45
+ run: npm version $TAG_VERSION --no-git-tag-version
46
+
47
+ # Build and test (after version bump for releases)
48
+ - run: npm run build
49
+ - run: npm run test
50
+
51
+ # Release: commit version bump and push to main
52
+ - name: Commit and push release version
53
+ if: github.event_name == 'release'
54
+ run: |
55
+ git config --global user.name "github-actions[bot]"
56
+ git config --global user.email "github-actions[bot]@users.noreply.github.com"
57
+ git commit -am "Release ${TAG_VERSION}"
58
+ git push origin HEAD:main
59
+ env:
60
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61
+
62
+ # Snapshot: create artifact for download
63
+ - name: Create snapshot artifact
64
+ if: github.event_name == 'push'
65
+ run: mv $(npm pack) restatedev-restate-cdk.tgz
66
+ - name: Upload snapshot artifact
67
+ if: github.event_name == 'push'
68
+ uses: actions/upload-artifact@v4
69
+ with:
70
+ name: restatedev-restate-cdk
71
+ path: restatedev-restate-cdk.tgz
72
+ retention-days: 1
73
+ if-no-files-found: error
74
+
75
+ # Snapshot publish: use X.Y.Z-SNAPSHOT-timestamp with 'dev' tag
76
+ - name: Publish snapshot
77
+ if: github.event_name == 'push'
78
+ run: |
79
+ BASE_VERSION=$(node -p "require('./package.json').version.replace(/-SNAPSHOT$/, '')")
80
+ npm version ${BASE_VERSION}-SNAPSHOT-$(date '+%Y%m%d%H%M%S') --git-tag-version false
81
+ # We use dist-tag 'dev' for snapshots to avoid users accidentally installing them
82
+ npm publish --provenance --tag dev --access public
83
+
84
+ # Release publish: use 'next' tag for prereleases, 'latest' for stable
85
+ - name: Publish release
86
+ if: github.event_name == 'release'
87
+ run: |
88
+ if [[ ${{ github.event.release.prerelease }} == true ]]; then
89
+ npm publish --provenance --tag next --access public
90
+ else
91
+ npm publish --provenance --tag latest --access public
92
+ fi
package/RELEASING.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # Releasing the package
2
2
 
3
- - Update `RESTATE_DOCKER_DEFAULT_TAG` / `RESTATE_NPM_DEFAULT_TAG`
4
- - Update version in `package.json`
5
- - Create and publish a new release in [GitHub](https://github.com/restatedev/cdk/releases)
3
+ ## Release process
4
+
5
+ 1. Update `RESTATE_DOCKER_DEFAULT_TAG` / `RESTATE_NPM_DEFAULT_TAG` if needed
6
+ 2. Create and publish a new release in [GitHub](https://github.com/restatedev/cdk/releases)
7
+ - Use tag format `vX.Y.Z` (e.g., `v1.6.0`)
8
+ - Mark as pre-release if appropriate (will publish with `--tag next` instead of `--tag latest`)
9
+ 3. The `publish.yml` workflow will automatically:
10
+ - Extract the version from the tag
11
+ - Update `package.json` and commit to main
12
+ - Run tests
13
+ - Publish to npm with provenance attestation
14
+
15
+ ## npm trusted publishing
16
+
17
+ This repository uses [npm trusted publishing](https://docs.npmjs.com/trusted-publishers/) with OpenID Connect (OIDC) for secure, token-free releases. The workflow authenticates directly with npm using GitHub's OIDC provider.
18
+
19
+ **Configuration on npmjs.com:**
20
+
21
+ - Owner: `restatedev`
22
+ - Repository: `cdk`
23
+ - Workflow: `publish.yml`
24
+ - Environment: _(blank)_
25
+
26
+ If the trusted publisher configuration is lost, reconfigure it at:
27
+ https://www.npmjs.com/package/@restatedev/restate-cdk/access
28
+
29
+ ## Snapshot builds
30
+
31
+ Snapshots are automatically published on every push to `main` with:
32
+
33
+ - Version: `X.Y.Z-SNAPSHOT-YYYYMMDDHHmmss` (based on package.json version)
34
+ - Tag: `dev`
35
+
36
+ To install a snapshot: `npm install @restatedev/restate-cdk@dev`
37
+
38
+ ## Testing major Restate version updates
39
+
40
+ Before releasing a CDK update for a new Restate major/minor version:
41
+
42
+ 1. **Review release notes** for breaking changes, deprecated config options, or new defaults:
43
+
44
+ - Check `restate/release-notes/unreleased/*.md` for upcoming changes
45
+ - Look for removed/renamed configuration options that the CDK might be setting
46
+ - Verify CDK defaults (e.g., `rocksdb-total-memory-size`, `query-engine.memory-size`) make sense for small dev/test deployments
47
+
48
+ 2. **Update version tags** in:
49
+
50
+ - `lib/restate-constructs/single-node-restate-deployment.ts`: `RESTATE_DOCKER_DEFAULT_TAG`, `RESTATE_NPM_DEFAULT_TAG`
51
+ - `lib/restate-constructs/fargate-restate-deployment.ts`: `RESTATE_DOCKER_DEFAULT_TAG`
52
+
53
+ 3. **Run e2e tests** against an RC build before release:
54
+
55
+ ```bash
56
+ # Note the hardcoded main image reference in test/e2e/stacks/ec2-simple-stack.ts
57
+ # You might need to temporarily use a pre-release tag (e.g., 1.6.0-rc.5)
58
+
59
+ # Build and run single-node e2e test
60
+ npm run build && npx tsx test/handlers/build.mts
61
+ RETAIN_STACK=true npx jest --config jest.config.e2e.js --testNamePattern "Single Node"
62
+
63
+ # Inspect the deployment if needed, then clean up
64
+ aws cloudformation delete-stack --stack-name e2e-RestateSingleNode
65
+ ```
66
+
67
+ 4. **Update snapshots** after finalizing version tags:
68
+ ```bash
69
+ npm test -- --updateSnapshot
70
+ ```
@@ -60,7 +60,7 @@ const PUBLIC_ADMIN_PORT = 9070;
60
60
  const RESTATE_INGRESS_PORT = 8080;
61
61
  const RESTATE_ADMIN_PORT = 9070;
62
62
  const RESTATE_IMAGE_DEFAULT = "docker.restate.dev/restatedev/restate";
63
- const RESTATE_DOCKER_DEFAULT_TAG = "1.5";
63
+ const RESTATE_DOCKER_DEFAULT_TAG = "1.6";
64
64
  const ADOT_DOCKER_DEFAULT_TAG = "latest";
65
65
  /**
66
66
  * Creates a Restate service deployment running as a Fargate task and backed by EFS.
@@ -248,4 +248,4 @@ class FargateRestateDeployment extends constructs_1.Construct {
248
248
  }
249
249
  }
250
250
  exports.FargateRestateDeployment = FargateRestateDeployment;
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNq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QyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcIjEuNVwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1yZXN0YXRlLWRlcGxveW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvcmVzdGF0ZS1jb25zdHJ1Y3RzL2ZhcmdhdGUtcmVzdGF0ZS1kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF1QztBQUN2QyxpREFBbUM7QUFDbkMsd0VBQTBEO0FBQzFELDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsNkVBQStEO0FBQy9ELDZEQUErQztBQUMvQyx5RUFBMkQ7QUFJM0QsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUN6QyxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQztBQW9FekM7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXlCLFNBQVEsc0JBQVM7SUFXckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLDBCQUEwQixDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksdUJBQXVCLENBQUMsQ0FBQywrQ0FBK0M7UUFFekcsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDL0MsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlLENBQUMsYUFBYTtZQUNsRCxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlO1lBQ3BELGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVE7WUFDM0MsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPO1NBQ2hFLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxtQkFBbUIsQ0FDcEIsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO1lBQzFDLDJIQUEySDtZQUMzSCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFO29CQUNKLDBDQUEwQyxFQUFFLE1BQU07aUJBQ25EO2FBQ0Y7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXBCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3JFLEdBQUcsRUFBRSxJQUFJO1lBQ1QsY0FBYyxFQUFFLElBQUk7WUFDcEIsZUFBZSxFQUFFO2dCQUNmLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUs7Z0JBQzFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLO2FBQ3ZEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixzQkFBc0IsRUFBRTt3QkFDdEIsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZO3dCQUM3QixtQkFBbUIsRUFBRSxFQUFFO3FCQUN4QjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsNkZBQTZGO1FBQzdGLGdEQUFnRDtRQUNoRCxpSEFBaUg7UUFDakgsSUFBSTtRQUVKLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ2pDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7b0JBQ3RCLEdBQUcsRUFBRSxvQkFBb0I7b0JBQ3pCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxnRkFBZ0Y7aUJBQ25HLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3BELFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDN0QsV0FBVyxFQUFFLCtEQUErRDtTQUM3RSxDQUFDLENBQUM7UUFDSCxXQUFXLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixNQUFNLFFBQVEsR0FDWixLQUFLLENBQUMsUUFBUTtZQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUU7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7Z0JBQ3ZDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTzthQUNoRSxDQUFDLENBQUM7UUFFTCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUNsRCxhQUFhLEVBQUUsaUJBQWlCO1lBQ2hDLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2RSxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLENBQUM7WUFDOUYsT0FBTyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUM3QixRQUFRO2dCQUNSLFlBQVksRUFBRSxTQUFTO2FBQ3hCLENBQUM7WUFDRixXQUFXLEVBQUU7Z0JBQ1gsa0JBQWtCLEVBQUUsTUFBTTtnQkFDMUIsaUJBQWlCLEVBQUUsU0FBUzthQUM3QjtZQUNELE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixZQUFZLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUNyQixhQUFhLEVBQUUsZUFBZTtZQUM5QixRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxjQUFjO1NBQzdCLENBQUMsQ0FBQztRQUVILE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDeEUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDO1FBRTFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDcEUsT0FBTztZQUNQLGNBQWMsRUFBRSxXQUFXO1lBQzNCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRTtnQkFDZCxNQUFNLEVBQUUsSUFBSTtnQkFDWixRQUFRLEVBQUUsSUFBSTthQUNmO1lBQ0QsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLG1GQUFtRjtZQUN6RyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsaUNBQWlDO1lBQ3pELGNBQWMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMxRCxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsRUFBRSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpGLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDeEQsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsY0FBYztTQUNuRCxDQUFDLENBQUM7UUFFSCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3BFLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTztZQUN6QixVQUFVLEVBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1NBQ2hFLENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUU7WUFDekQsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUs7WUFDeEMsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSTtTQUMvQixDQUFDLENBQUM7UUFDSCxlQUFlLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFO1lBQ2pELE9BQU8sRUFBRTtnQkFDUCxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDdkMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO29CQUNwQyxhQUFhLEVBQUUsb0JBQW9CO2lCQUNwQyxDQUFDO2FBQ0g7WUFDRCxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSTtZQUN2QyxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDakMscUJBQXFCLEVBQUUsQ0FBQztnQkFDeEIsdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNqQztZQUNELG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUV2QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRTtZQUNyRCxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSztZQUN4QyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNyQyxDQUFDLENBQUM7UUFDSCxhQUFhLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFO1lBQzdDLE9BQU8sRUFBRTtnQkFDUCxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDdkMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO29CQUNwQyxhQUFhLEVBQUUsa0JBQWtCO2lCQUNsQyxDQUFDO2FBQ0g7WUFDRCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSTtZQUN2QyxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDakMscUJBQXFCLEVBQUUsQ0FBQztnQkFDeEIsdUJBQXVCLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNqQztZQUNELG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDdEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxNQUFNLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkUsaUNBQWlDO1NBQ2xDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxLQUFLLENBQUMsT0FBTyxHQUFHLG1CQUFtQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztRQUMzRyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FDRjtBQW5ORCw0REFtTkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLTIwMjUgLSBSZXN0YXRlIFNvZnR3YXJlLCBJbmMuLCBSZXN0YXRlIEdtYkhcbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUmVzdGF0ZSBDREsgQ29uc3RydWN0IExpYnJhcnksXG4gKiB3aGljaCBpcyByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKlxuICogWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGUgbGljZW5zZSBpbiBmaWxlIExJQ0VOU0UgaW4gdGhlIHJvb3RcbiAqIGRpcmVjdG9yeSBvZiB0aGlzIHJlcG9zaXRvcnkgb3IgcGFja2FnZSwgb3IgYXRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXN0YXRlZGV2L3Nkay10eXBlc2NyaXB0L2Jsb2IvbWFpbi9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFjbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCAqIGFzIGVmcyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVmc1wiO1xuaW1wb3J0ICogYXMgZWxiMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCAqIGFzIHRhcmdldHMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IElSZXN0YXRlRW52aXJvbm1lbnQgfSBmcm9tIFwiLi9yZXN0YXRlLWVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBUcmFjaW5nTW9kZSB9IGZyb20gXCIuL2RlcGxveW1lbnRzLWNvbW1vblwiO1xuXG5jb25zdCBQVUJMSUNfSU5HUkVTU19QT1JUID0gNDQzO1xuY29uc3QgUFVCTElDX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9JTkdSRVNTX1BPUlQgPSA4MDgwO1xuY29uc3QgUkVTVEFURV9BRE1JTl9QT1JUID0gOTA3MDtcbmNvbnN0IFJFU1RBVEVfSU1BR0VfREVGQVVMVCA9IFwiZG9ja2VyLnJlc3RhdGUuZGV2L3Jlc3RhdGVkZXYvcmVzdGF0ZVwiO1xuY29uc3QgUkVTVEFURV9ET0NLRVJfREVGQVVMVF9UQUcgPSBcIjEuNlwiO1xuY29uc3QgQURPVF9ET0NLRVJfREVGQVVMVF9UQUcgPSBcImxhdGVzdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3RhdGVGYXJnYXRlUHJvcHMge1xuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqIExvZyBncm91cCBmb3IgUmVzdGF0ZSBzZXJ2aWNlIGxvZ3MuICovXG4gIGxvZ0dyb3VwPzogbG9ncy5Mb2dHcm91cDtcblxuICAvKiogVHJhY2luZyBtb2RlIGZvciBSZXN0YXRlIHNlcnZpY2VzLiBEZWZhdWx0cyB0byB7QGxpbmsgVHJhY2luZ01vZGUuRElTQUJMRUR9LiAqL1xuICB0cmFjaW5nPzogVHJhY2luZ01vZGU7XG5cbiAgLyoqIFByZWZpeCBmb3IgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgdGhpcyBjb25zdHJ1Y3QgdGhhdCByZXF1aXJlIHVuaXF1ZSBuYW1lcy4gKi9cbiAgcHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKiBFQ1MgY2x1c3RlciBuYW1lLiAqL1xuICBjbHVzdGVyTmFtZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVJbWFnZT86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgdGFnLiBEZWZhdWx0cyB0byBgbGF0ZXN0YC4gKi9cbiAgcmVzdGF0ZVRhZz86IHN0cmluZztcblxuICAvKiogQW1hem9uIERpc3RybyBmb3IgT3BlbiBUZWxlbWV0cnkgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIGFkb3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IGZvciBSZXN0YXRlIGNvbnRhaW5lci4gVXNlIGl0IHRvIGNvbmZpZ3VyZSBsb2dnaW5nIGFuZCBvdGhlciBwcm9jZXNzLWxldmVsIHNldHRpbmdzLlxuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXN0YXRlIGNvbnRhaW5lciBleHRyYSBhcmd1bWVudHMuXG4gICAqL1xuICBjb21tYW5kPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBmdWxsIG5hbWUgZm9yIHRoZSBwdWJsaWMgZW5kcG9pbnQuXG4gICAqL1xuICBkbnNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyB6b25lIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgcHVibGljIGVuZHBvaW50LlxuICAgKi9cbiAgaG9zdGVkWm9uZTogcjUzLklIb3N0ZWRab25lO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGxvYWRCYWxhbmNlcj86IHtcbiAgICAvKiogQHNlZSBCYXNlTG9hZEJhbGFuY2VyUHJvcHMuaW50ZXJuZXRGYWNpbmcgKi9cbiAgICBpbnRlcm5ldEZhY2luZz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB5b3Ugc2V0IHRoaXMgdG8gZmFsc2UsIHlvdSBjYW4gY3VzdG9taXplIHRoZSBhY2Nlc3MgdG8gdGhlIHBhaXIgb2YgQUxCIGxpc3RlbmVycyB2aWFcbiAgICAgKiB7QGxpbmsgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50LmluZ3Jlc3NMaXN0ZW5lcn0gYW5kIHtAbGluayBGYXJnYXRlUmVzdGF0ZURlcGxveW1lbnQuYWRtaW5MaXN0ZW5lcn0uXG4gICAgICpcbiAgICAgKiBAc2VlIEJhc2VBcHBsaWNhdGlvbkxpc3RlbmVyUHJvcHMub3BlbiAqL1xuICAgIG9wZW4/OiBib29sZWFuO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBSZXN0YXRlIHNlcnZpY2UgZGVwbG95bWVudCBydW5uaW5nIGFzIGEgRmFyZ2F0ZSB0YXNrIGFuZCBiYWNrZWQgYnkgRUZTLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3QgaXMgc3RpbGwgZXhwZXJpbWVudGFsISBVc2Ugd2l0aCBjYXV0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGludm9rZXJSb2xlOiBpYW0uSVJvbGU7XG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgcmVhZG9ubHkgaW5ncmVzc1VybDogc3RyaW5nO1xuICByZWFkb25seSBhZG1pblVybDogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwOiBlYzIuU2VjdXJpdHlHcm91cDtcbiAgcmVhZG9ubHkgZGF0YVN0b3JlOiBlZnMuRmlsZVN5c3RlbTtcbiAgcmVhZG9ubHkgaW5ncmVzc0xpc3RlbmVyOiBlbGIyLkFwcGxpY2F0aW9uTGlzdGVuZXI7XG4gIHJlYWRvbmx5IGFkbWluTGlzdGVuZXI6IGVsYjIuQXBwbGljYXRpb25MaXN0ZW5lcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVzdGF0ZUZhcmdhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlSW1hZ2UgPSBwcm9wcy5yZXN0YXRlSW1hZ2UgPz8gUkVTVEFURV9JTUFHRV9ERUZBVUxUO1xuICAgIGNvbnN0IHJlc3RhdGVUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGNvbnN0IGFkb3RUYWcgPSBwcm9wcy5hZG90VGFnID8/IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHOyAvLyBUT0RPOiBhZGQgWC1SYXkgc3VwcG9ydCBsaWtlIHdlIGhhdmUgZm9yIEVDMlxuXG4gICAgY29uc3QgZnMgPSBuZXcgZWZzLkZpbGVTeXN0ZW0odGhpcywgXCJEYXRhU3RvcmVcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGxpZmVjeWNsZVBvbGljeTogZWZzLkxpZmVjeWNsZVBvbGljeS5BRlRFUl8zMF9EQVlTLFxuICAgICAgcGVyZm9ybWFuY2VNb2RlOiBlZnMuUGVyZm9ybWFuY2VNb2RlLkdFTkVSQUxfUFVSUE9TRSxcbiAgICAgIHRocm91Z2hwdXRNb2RlOiBlZnMuVGhyb3VnaHB1dE1vZGUuQlVSU1RJTkcsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgZnMuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgc2lkOiBcIkFsbG93RWZzTW91bnRcIixcbiAgICAgICAgYWN0aW9uczogW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl0sXG4gICAgICAgIC8vIFJlc3RyaWN0aW5nIHRvIHRoZSBFQ1MgZXhlY3V0aW9uIHJvbGUgZG9lcyBub3Qgd29yazsgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgLSBFRlMgYWNjZXNzIGlzIHNlY3VyZWQgYnkgYSBzZWN1cml0eSBncm91cFxuICAgICAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5BbnlQcmluY2lwYWwoKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5kYXRhU3RvcmUgPSBmcztcblxuICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgZWNzLkNsdXN0ZXIodGhpcywgXCJDbHVzdGVyXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlVGFzayA9IG5ldyBlY3MuRmFyZ2F0ZVRhc2tEZWZpbml0aW9uKHRoaXMsIFwiUmVzdGF0ZVRhc2tcIiwge1xuICAgICAgY3B1OiA0MDk2LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IDgxOTIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBlY3MuQ3B1QXJjaGl0ZWN0dXJlLkFSTTY0LFxuICAgICAgICBvcGVyYXRpbmdTeXN0ZW1GYW1pbHk6IGVjcy5PcGVyYXRpbmdTeXN0ZW1GYW1pbHkuTElOVVgsXG4gICAgICB9LFxuICAgICAgdm9sdW1lczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyZXN0YXRlU3RvcmVcIixcbiAgICAgICAgICBlZnNWb2x1bWVDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICBmaWxlU3lzdGVtSWQ6IGZzLmZpbGVTeXN0ZW1JZCxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db25maWc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gVE9ETzogU3RhcnQgYW4gQURPVCBjb250YWluZXIgYW5kIGhvb2sgaXQgdXAgdG8gUmVzdGF0ZSBhbmQgQVdTIFgtUmF5IG9yIGFub3RoZXIgT1RlbCBzaW5rXG4gICAgLy8gaWYgKHByb3BzLnRyYWNpbmcgPT09IFRyYWNpbmdNb2RlLkFXU19YUkFZKSB7XG4gICAgLy8gICByZXN0YXRlVGFzay50YXNrUm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIkFXU1hyYXlXcml0ZU9ubHlBY2Nlc3NcIikpO1xuICAgIC8vIH1cblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiVGFza1BvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVBbnlSb2xlXCIsXG4gICAgICAgICAgYWN0aW9uczogW1wic3RzOkFzc3VtZVJvbGVcIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLCAvLyB3ZSBkb24ndCBrbm93IHVwZnJvbnQgd2hhdCBpbnZva2VyIHJvbGVzIHdlIG1heSBiZSBhc2tlZCB0byBhc3N1bWUgYXQgcnVudGltZVxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkuYXR0YWNoVG9Sb2xlKHJlc3RhdGVUYXNrLnRhc2tSb2xlKTtcblxuICAgIGNvbnN0IGludm9rZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW52b2tlclJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkFyblByaW5jaXBhbChyZXN0YXRlVGFzay50YXNrUm9sZS5yb2xlQXJuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFzc3VtZWQgYnkgUmVzdGF0ZSBkZXBsb3ltZW50IHRvIGludm9rZSBMYW1iZGEtYmFzZWQgc2VydmljZXNcIixcbiAgICB9KTtcbiAgICBpbnZva2VyUm9sZS5ncmFudEFzc3VtZVJvbGUocmVzdGF0ZVRhc2sudGFza1JvbGUpO1xuICAgIHRoaXMuaW52b2tlclJvbGUgPSBpbnZva2VyUm9sZTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID1cbiAgICAgIHByb3BzLmxvZ0dyb3VwID8/XG4gICAgICBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxvZ3NcIiwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvcmVzdGF0ZS8ke2lkfWAsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeSA/PyBjZGsuUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlID0gcmVzdGF0ZVRhc2suYWRkQ29udGFpbmVyKFwiUmVzdGF0ZVwiLCB7XG4gICAgICBjb250YWluZXJOYW1lOiBcInJlc3RhdGUtcnVudGltZVwiLFxuICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVUYWd9YCksXG4gICAgICBwb3J0TWFwcGluZ3M6IFt7IGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JUIH0sIHsgY29udGFpbmVyUG9ydDogUkVTVEFURV9BRE1JTl9QT1JUIH1dLFxuICAgICAgbG9nZ2luZzogZWNzLkxvZ0RyaXZlci5hd3NMb2dzKHtcbiAgICAgICAgbG9nR3JvdXAsXG4gICAgICAgIHN0cmVhbVByZWZpeDogXCJyZXN0YXRlXCIsXG4gICAgICB9KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFJFU1RBVEVfTE9HX0ZPUk1BVDogXCJqc29uXCIsXG4gICAgICAgIFJFU1RBVEVfTk9ERV9OQU1FOiBcImZhcmdhdGVcIixcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBwcm9wcy5jb21tYW5kLFxuICAgICAgc3RhcnRUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBzdG9wVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgIH0pO1xuICAgIHJlc3RhdGUuYWRkTW91bnRQb2ludHMoe1xuICAgICAgY29udGFpbmVyUGF0aDogXCIvcmVzdGF0ZS1kYXRhXCIsXG4gICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICBzb3VyY2VWb2x1bWU6IFwicmVzdGF0ZVN0b3JlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN0YXRlU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBcIlNlY3VyaXR5R3JvdXBcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gcmVzdGF0ZVNlY3VyaXR5R3JvdXA7XG5cbiAgICBjb25zdCByZXN0YXRlRmFyZ2F0ZVNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsIFwiU2VydmljZVwiLCB7XG4gICAgICBjbHVzdGVyLFxuICAgICAgdGFza0RlZmluaXRpb246IHJlc3RhdGVUYXNrLFxuICAgICAgYXNzaWduUHVibGljSXA6IHRydWUsXG4gICAgICBjaXJjdWl0QnJlYWtlcjoge1xuICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIHJvbGxiYWNrOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAwLCAvLyBhbGxvdyBzY2FsZSBkb3duIHRvIHplcm8gZHVyaW5nIGRlcGxveW1lbnRzIChyZXF1aXJlZCBmb3IgYXQtbW9zdC0xIG1heCBzZXR0aW5nKVxuICAgICAgbWF4SGVhbHRoeVBlcmNlbnQ6IDEwMCwgLy8gZG9uJ3Qgc3RhcnQgbW9yZSB0aGFuIG9uZSBjb3B5XG4gICAgICBzZWN1cml0eUdyb3VwczogW3Jlc3RhdGVTZWN1cml0eUdyb3VwXSxcbiAgICB9KTtcblxuICAgIGZzLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKHJlc3RhdGVTZWN1cml0eUdyb3VwKTtcbiAgICBmcy5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0VG8ocmVzdGF0ZVNlY3VyaXR5R3JvdXApO1xuICAgIGZzLmdyYW50Um9vdEFjY2VzcyhyZXN0YXRlRmFyZ2F0ZVNlcnZpY2UudGFza0RlZmluaXRpb24udGFza1JvbGUuZ3JhbnRQcmluY2lwYWwpO1xuXG4gICAgY29uc3QgYWxiID0gbmV3IGVsYjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgXCJBbGJcIiwge1xuICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgIGludGVybmV0RmFjaW5nOiBwcm9wcy5sb2FkQmFsYW5jZXI/LmludGVybmV0RmFjaW5nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcHVibGljQXBpQ2VydGlmaWNhdGUgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwge1xuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG5zTmFtZSxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhwcm9wcy5ob3N0ZWRab25lKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGluZ3Jlc3NMaXN0ZW5lciA9IGFsYi5hZGRMaXN0ZW5lcihcIkluZ3Jlc3NMaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfSU5HUkVTU19QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgIGNlcnRpZmljYXRlczogW3B1YmxpY0FwaUNlcnRpZmljYXRlXSxcbiAgICAgIG9wZW46IHByb3BzLmxvYWRCYWxhbmNlcj8ub3BlbixcbiAgICB9KTtcbiAgICBpbmdyZXNzTGlzdGVuZXIuYWRkVGFyZ2V0cyhcIkZhcmdhdGVJbmdyZXNzVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfSU5HUkVTU19QT1JULFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBwb3J0OiBSRVNUQVRFX0lOR1JFU1NfUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcbiAgICAgIGhlYWx0aENoZWNrOiB7XG4gICAgICAgIHBhdGg6IFwiL3Jlc3RhdGUvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5pbmdyZXNzTGlzdGVuZXIgPSBpbmdyZXNzTGlzdGVuZXI7XG5cbiAgICBjb25zdCBhZG1pbkxpc3RlbmVyID0gYWxiLmFkZExpc3RlbmVyKFwiQWRtaW5MaXN0ZW5lclwiLCB7XG4gICAgICBwb3J0OiBQVUJMSUNfQURNSU5fUE9SVCxcbiAgICAgIHByb3RvY29sOiBlbGIyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUFMsXG4gICAgICBjZXJ0aWZpY2F0ZXM6IFtwdWJsaWNBcGlDZXJ0aWZpY2F0ZV0sXG4gICAgfSk7XG4gICAgYWRtaW5MaXN0ZW5lci5hZGRUYXJnZXRzKFwiRmFyZ2F0ZUFkbWluVGFyZ2V0XCIsIHtcbiAgICAgIHRhcmdldHM6IFtcbiAgICAgICAgcmVzdGF0ZUZhcmdhdGVTZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XG4gICAgICAgICAgY29udGFpbmVyTmFtZTogcmVzdGF0ZS5jb250YWluZXJOYW1lLFxuICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IFJFU1RBVEVfQURNSU5fUE9SVCxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgcG9ydDogUkVTVEFURV9BRE1JTl9QT1JULFxuICAgICAgcHJvdG9jb2w6IGVsYjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQLFxuICAgICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgICAgcGF0aDogXCIvaGVhbHRoXCIsXG4gICAgICAgIGludGVydmFsOiBjZGsuRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAzLFxuICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogMyxcbiAgICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICB9LFxuICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogY2RrLkR1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgfSk7XG4gICAgdGhpcy5hZG1pbkxpc3RlbmVyID0gYWRtaW5MaXN0ZW5lcjtcblxuICAgIG5ldyByNTMuQVJlY29yZCh0aGlzLCBcIkFsYkFsaWFzXCIsIHtcbiAgICAgIHpvbmU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kbnNOYW1lLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgIHRhcmdldDogcjUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuTG9hZEJhbGFuY2VyVGFyZ2V0KGFsYikpLFxuICAgICAgLy8gb3RoZXIgQVJlY29yZCBjb25maWd1cmF0aW9uLi4uXG4gICAgfSk7XG5cbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgaHR0cHM6Ly8ke3Byb3BzLmRuc05hbWV9JHtQVUJMSUNfSU5HUkVTU19QT1JUID09IDQ0MyA/IFwiXCIgOiBgOiR7UFVCTElDX0lOR1JFU1NfUE9SVH1gfWA7XG4gICAgdGhpcy5hZG1pblVybCA9IGBodHRwczovLyR7cHJvcHMuZG5zTmFtZX06JHtQVUJMSUNfQURNSU5fUE9SVH1gO1xuICB9XG59XG4iXX0=
@@ -68,8 +68,8 @@ const RESTATE_TLS_INGRESS_PORT = 443;
68
68
  const RESTATE_ADMIN_PORT = 9070;
69
69
  const RESTATE_TLS_ADMIN_PORT = 9073;
70
70
  const RESTATE_IMAGE_DEFAULT = "docker.restate.dev/restatedev/restate";
71
- const RESTATE_DOCKER_DEFAULT_TAG = "1.5";
72
- const RESTATE_NPM_DEFAULT_TAG = "1.5";
71
+ const RESTATE_DOCKER_DEFAULT_TAG = "1.6";
72
+ const RESTATE_NPM_DEFAULT_TAG = "1.6";
73
73
  const ADOT_DOCKER_DEFAULT_TAG = "latest";
74
74
  const DATA_DEVICE_NAME = "/dev/sdd";
75
75
  /**
@@ -336,4 +336,4 @@ fi
336
336
  }
337
337
  }
338
338
  exports.SingleNodeRestateDeployment = SingleNodeRestateDeployment;
339
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUNuRCxpREFBbUM7QUFDbkMsNkNBQTRDO0FBZ0g1QyxJQUFZLGNBV1g7QUFYRCxXQUFZLGNBQWM7SUFDeEI7O09BRUc7SUFDSCwyREFBUSxDQUFBO0lBRVI7OztPQUdHO0lBQ0gseUdBQStCLENBQUE7QUFDakMsQ0FBQyxFQVhXLGNBQWMsOEJBQWQsY0FBYyxRQVd6QjtBQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE1BQU0scUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7QUFDdEUsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFDekMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFDdEMsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUM7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSwyQkFBNEIsU0FBUSxzQkFBUztJQWF4RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxL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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeFZELGtFQXdWQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgVHJhY2luZ01vZGUgfSBmcm9tIFwiLi9kZXBsb3ltZW50cy1jb21tb25cIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzIHtcbiAgLyoqIEVDMiBpbnN0YW5jZSB0eXBlIHRvIHVzZS4gKi9cbiAgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcblxuICAvKiogTWFjaGluZSBpbWFnZS4gTm90ZTogc3RhcnR1cCBzY3JpcHQgZXhwZWN0cyB5dW0tYmFzZWQgcGFja2FnZSBtYW5hZ2VtZW50LiAqL1xuICBtYWNoaW5lSW1hZ2U/OiBlYzIuSU1hY2hpbmVJbWFnZTtcblxuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgbmV0d29ya0NvbmZpZ3VyYXRpb24/OiB7XG4gICAgLyoqXG4gICAgICogU3VibmV0IHR5cGUgZm9yIHRoZSBSZXN0YXRlIGhvc3QuXG4gICAgICpcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9uczpcbiAgICAgKiAgLSBbRGVmYXVsdF0ge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1N9IHdpbGwgY3JlYXRlIHRoZSBSZXN0YXRlIGluc3RhbmNlIHdpdGggb3V0Ym91bmQgaW50ZXJuZXRcbiAgICAgKiAgICBhY2Nlc3Mgb25seSwgc28gdGhhdCBpdCBjYW4gaW52b2tlIEhUVFAgZW5kcG9pbnRzLiBUaGUgc2VjdXJpdHkgZ3JvdXBzIHtAbGluayBpbmdyZXNzU2VjdXJpdHlHcm91cH0gYW5kXG4gICAgICogICAge0BsaW5rIGFkbWluU2VjdXJpdHlHcm91cH0gY29udHJvbCBpbmJvdW5kIHRyYWZmaWMgdG8gdGhlIHNlcnZpY2UgaW5ncmVzcyBhbmQgYWRtaW4gcG9ydHMgcmVzcGVjdGl2ZWx5LlxuICAgICAqICAgIENvbmZpZ3VyZSB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byB1c2UgdGhlIGxhdHRlciwgYW5kIHNldCB1cCBpbmdyZXNzIHRyYWZmaWMgcm91dGluZyBvdXRzaWRlIG9mIHRoaXNcbiAgICAgKiAgICBjb25zdHJ1Y3QgdXNpbmcgdGhlIGZvcm1lci5cbiAgICAgKiAgLSBJbnNlY3VyZSwgaW50ZXJuZXQtZmFjaW5nIHtAbGluayBlYzIuU3VibmV0VHlwZS5QVUJMSUN9IHdpbGwgYWxzbyBwcm92aXNpb24gYW4gbmdpbnggcmV2ZXJzZSBwcm94eVxuICAgICAqICAgIGFuZCBhbiBIVFRQIGxpc3RlbmVyIHdpdGggYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZS5cbiAgICAgKi9cbiAgICBzdWJuZXRUeXBlPzogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8IGVjMi5TdWJuZXRUeXBlLlBVQkxJQztcbiAgfTtcblxuICAvKipcbiAgICogQWxsb3cgaW5jb21pbmcgaW5ncmVzcyB0cmFmZmljIGZyb20gYW55d2hlcmUuIERlZmF1bHQ6IGBmYWxzZWAuIEFsdGVybmF0aXZlbHksIGFkZCBydWxlcyB0byB0aGVcbiAgICogYGluZ3Jlc3NTZWN1cml0eUdyb3VwYCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpY0luZ3Jlc3M/OiBib29sZWFuO1xuXG4gIC8qKiBMb2cgZ3JvdXAgZm9yIFJlc3RhdGUgc2VydmljZSBsb2dzLiAqL1xuICBsb2dHcm91cD86IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqIFRyYWNpbmcgbW9kZSBmb3IgUmVzdGF0ZSBzZXJ2aWNlcy4gRGVmYXVsdHMgdG8ge0BsaW5rIFRyYWNpbmdNb2RlLkRJU0FCTEVEfS4gKi9cbiAgdHJhY2luZz86IFRyYWNpbmdNb2RlO1xuXG4gIC8qKiBQcmVmaXggZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0IHRoYXQgcmVxdWlyZSB1bmlxdWUgbmFtZXMuICovXG4gIHByZWZpeD86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVgLiAqL1xuICByZXN0YXRlSW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVUYWc/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgTlBNIHRvb2xzIHRhZyAodXNlZCBmb3IgYHJlc3RhdGVgL2ByZXN0YXRlY3RsYCkuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICByZXN0YXRlTnBtVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQlMgZGF0YSB2b2x1bWUgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZGF0YSBzdG9yYWdlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgOEdCIHZvbHVtZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhVm9sdW1lT3B0aW9ucz86IGVjMi5FYnNEZXZpY2VQcm9wcyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVzdGF0ZSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQge0BsaW5rIHJlc3RhdGVDb25maWdPdmVycmlkZX0uICovXG4gIHJlc3RhdGVDb25maWc/OiB7XG4gICAgLyoqIERlZmF1bHRzIHRvIHRoZSBjb25zdHJ1Y3QgaWQgaWYgbGVmdCB1bnNwZWNpZmllZC4gKi9cbiAgICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgICAvKiogRGVmYXVsdHMgdG8gNC4gT25seSB0YWtlcyBlZmZlY3Qgb24gaW5pdGlhbCBwcm92aXNpb25pbmcuICovXG4gICAgYm9vdHN0cmFwTnVtUGFydGl0aW9ucz86IG51bWJlcjtcbiAgICAvKiogUm9ja3NEQiBzZXR0aW5ncy4gKi9cbiAgICByb2Nrc2RiPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDUxMiBNQi4gKi9cbiAgICAgIHRvdGFsTWVtb3J5U2l6ZT86IGNkay5TaXplO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHByb3BlcnRpZXMgdG8gc2V0IGZvciBSZXN0YXRlLiBUaGlzIGlzIGEgc2ltcGxlIHdheSB0byBwYXNzIGN1c3RvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIFJlc3RhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBvdGhlciBSZXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuIFNlZSBodHRwczovL2RvY3MucmVzdGF0ZS5kZXYvb3BlcmF0ZS9jb25maWd1cmF0aW9uL3NlcnZlci9cbiAgICogZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXN0YXRlQ29uZmlnT3ZlcnJpZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEFtYXpvbiBEaXN0cm8gZm9yIE9wZW4gVGVsZW1ldHJ5IERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICBhZG90VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgb24taG9zdCBUTFMgdGVybWluYXRpb24gZm9yIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBEZWZhdWx0cyB0byBgVGxzVGVybWluYXRpb24uTk9ORWAuIEN1cnJlbnRseSwgZW5hYmxpbmdcbiAgICogVExTIGltcGxpY2l0bHkgZW5hYmxlcyBhbiBgbmdpbnhgIHNlcnZpY2UgdG8gYmUgY29uZmlndXJlZCBvbiB0aGUgaG9zdC4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiwgdGhlXG4gICAqIGluZ3Jlc3Mgc2VjdXJpdHkgZ3JvdXAgd2lsbCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGluYm91bmQgdHJhZmZpYyB0byB0aGUgYXBwcm9wcmlhdGUgcG9ydCAtIDgwODAgZm9yIG5vIFRMUywgb3JcbiAgICogNDQzIHdpdGggVExTIGVuYWJsZWQuXG4gICAqL1xuICB0bHNUZXJtaW5hdGlvbj86IFRsc1Rlcm1pbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhZCB0aW1lb3V0IGZvciBwcm94aWVkIGluZ3Jlc3MgcmVxdWVzdHMuIERlZmF1bHQ6IDM2MDAgc2Vjb25kcy5cbiAgICovXG4gIGluZ3Jlc3NQcm94eVJlYWRUaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBuZ2lueGAgY29uZmlndXJhdGlvbiBmb3IgdGhlIGluZ3Jlc3MgcHJveHkuIE5vdGUgdGhhdCBvdGhlclxuICAgKiBpbmdyZXNzIHByb3h5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuXG4gICAqL1xuICBpbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVGxzVGVybWluYXRpb24ge1xuICAvKipcbiAgICogRGlzYWJsZWQgKGRlZmF1bHQpOyBleHBvc2UgdGhlIGByZXN0YXRlLXNlcnZlcmAgSFRUUCBwb3J0cyBkaXJlY3RseS5cbiAgICovXG4gIERJU0FCTEVELFxuXG4gIC8qKlxuICAgKiBVc2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGZvciBUTFMgdGVybWluYXRpb24gb24gdGhlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBDb252ZW5pZW50IGZvciBxdWljayB0ZXN0aW5nLFxuICAgKiBtYWtlIHN1cmUgeW91IHNldCBgaW5zZWN1cmVgID0gYHRydWVgIHdoZW4gdXNpbmcgYFNlcnZpY2VEZXBsb3llcmAgdG8gYWNjZXB0IHRoaXMgY2VydGlmaWNhdGUuXG4gICAqL1xuICBPTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFLFxufVxuXG5jb25zdCBSRVNUQVRFX0lOR1JFU1NfUE9SVCA9IDgwODA7XG5jb25zdCBSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlQgPSA0NDM7XG5jb25zdCBSRVNUQVRFX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9UTFNfQURNSU5fUE9SVCA9IDkwNzM7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCIxLjVcIjtcbmNvbnN0IFJFU1RBVEVfTlBNX0RFRkFVTFRfVEFHID0gXCIxLjVcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IERBVEFfREVWSUNFX05BTUUgPSBcIi9kZXYvc2RkXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFJlc3RhdGUgc2VydmljZSBkZXBsb3ltZW50IGJhY2tlZCBieSBhIHNpbmdsZSBFQzIgaW5zdGFuY2UsIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAqXG4gKiAqKkR1cmFiaWxpdHkqKlxuICpcbiAqIFJlc3RhdGUgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIEVCUyB2b2x1bWUgd2hpY2ggeW91IGNhbiBjb25maWd1cmUgZXhwbGljaXRseSB2aWEgdGhlIGBkYXRhVm9sdW1lT3B0aW9uc2BcbiAqIHByb3BlcnR5LiBVcGRhdGluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzIG1heSB0cmlnZ2VyIGluc3RhbmNlIHJlYm9vdCBvciByZXBsYWNlbWVudCAtIGNvbnNpZGVyIHNuYXBzaG90dGluZyB0aGUgZGF0YVxuICogdm9sdW1lIHByaW9yIHRvIGRlcGxveW1lbnRzLCBhbmQgZW5hYmxpbmcgaW5zdGFuY2UgdGVybWluYXRpb24gcHJvdGVjdGlvbi5cbiAqXG4gKiAqKlNlY3VyaXR5KipcbiAqXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIFR3byBzZWN1cml0eSBncm91cHMgYXJlIGNyZWF0ZWQsXG4gKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGFuZCBgYWRtaW5TZWN1cml0eUdyb3VwYCwgd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gdGhlIFJlc3RhdGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0c1xuICogcmVzcGVjdGl2ZWx5LiBZb3UgbXVzdCBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgb3IgYWRkIG90aGVyIHJlc291cmNlcyB0byB0aGVzZSBzZWN1cml0eSBncm91cHMgdG8gYWxsb3cgYWNjZXNzLlxuICpcbiAqIFNlZSB7QGxpbmsgU2luZ2xlTm9kZVJlc3RhdGVQcm9wc30gZm9yIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB7QGxpbmsgU2VydmljZURlcGxveWVyfSBmb3IgZGVwbG95aW5nXG4gKiBMYW1iZGEgaGFuZGxlcnMgdG8gZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSBpbnZva2VyUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBpbmdyZXNzU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbmdyZXNzUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBpbmdyZXNzVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkbWluU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhZG1pblBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdGxzRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFR5cGUgPz8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIHRoaXMuaW5zdGFuY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnZva2VyUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IHRoaXMuaW5zdGFuY2VSb2xlLFxuICAgIH0pO1xuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJBc3N1bWVJbnZva2VyUm9sZVBvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVJbnZva2VyUm9sZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuaW52b2tlclJvbGUucm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KS5hdHRhY2hUb1JvbGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIGxvZ0dyb3VwLmdyYW50V3JpdGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgbGV0IHJlc3RhdGVJbWFnZSA9IHByb3BzLnJlc3RhdGVJbWFnZSA/PyBSRVNUQVRFX0lNQUdFX0RFRkFVTFQ7XG4gICAgbGV0IHJlc3RhdGVEb2NrZXJUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGxldCByZXN0YXRlTnBtVGFnID0gcHJvcHMucmVzdGF0ZU5wbVRhZyA/PyBSRVNUQVRFX05QTV9ERUZBVUxUX1RBRztcbiAgICBsZXQgdXNlU2hhRGlnZXN0ID0gZmFsc2U7XG4gICAgbGV0IHNoYURpZ2VzdCA9IFwiXCI7XG5cbiAgICBpZiAocmVzdGF0ZUltYWdlLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgY29uc3QgcGFydHMgPSByZXN0YXRlSW1hZ2Uuc3BsaXQoXCJAXCIpO1xuICAgICAgcmVzdGF0ZUltYWdlID0gcGFydHNbMF07XG4gICAgICBzaGFEaWdlc3QgPSBwYXJ0c1sxXTtcbiAgICAgIHVzZVNoYURpZ2VzdCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyZXN0YXRlSW1hZ2UuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHJlc3RhdGVJbWFnZS5zcGxpdChcIjpcIik7XG4gICAgICByZXN0YXRlSW1hZ2UgPSBwYXJ0c1swXTtcbiAgICAgIGNvbnN0IGlubGluZVRhZyA9IHBhcnRzWzFdO1xuXG4gICAgICBpZiAocHJvcHMucmVzdGF0ZVRhZyAmJiBwcm9wcy5yZXN0YXRlVGFnICE9PSBpbmxpbmVUYWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUYWcgY29uZmxpY3Q6IGlubGluZSB0YWcgJyR7aW5saW5lVGFnfScgaW4gaW1hZ2UgZG9lc24ndCBtYXRjaCBleHBsaWNpdCB0YWcgJyR7cHJvcHMucmVzdGF0ZVRhZ30nIHByb3BlcnR5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmVzdGF0ZURvY2tlclRhZyA9IGlubGluZVRhZztcbiAgICB9XG4gICAgY29uc3QgYWRvdFRhZyA9IHByb3BzLmFkb3RUYWcgPz8gQURPVF9ET0NLRVJfREVGQVVMVF9UQUc7XG5cbiAgICB0aGlzLnRsc0VuYWJsZWQgPSBwcm9wcy50bHNUZXJtaW5hdGlvbiA9PT0gVGxzVGVybWluYXRpb24uT05fSE9TVF9TRUxGX1NJR05FRF9DRVJUSUZJQ0FURTtcblxuICAgIGNvbnN0IGVudkRlZmF1bHRzID0ge1xuICAgICAgUkVTVEFURV9MT0dfRk9STUFUOiBcImpzb25cIixcbiAgICAgIFJVU1RfTE9HOiBcImluZm9cIixcbiAgICAgIFJFU1RBVEVfVFJBQ0lOR19FTkRQT0lOVDogXCJodHRwOi8vbG9jYWxob3N0OjQzMTdcIixcbiAgICB9O1xuICAgIGNvbnN0IGVudkFyZ3MgPSBPYmplY3QuZW50cmllcyh7IC4uLmVudkRlZmF1bHRzLCAuLi4ocHJvcHMuZW52aXJvbm1lbnQgPz8ge30pIH0pXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAtZSAke2tleX09XCIke3ZhbHVlfVwiYClcbiAgICAgIC5qb2luKFwiIFwiKTtcblxuICAgIGNvbnN0IGluaXRTY3JpcHQgPSBlYzIuVXNlckRhdGEuZm9yTGludXgoKTtcbiAgICBpbml0U2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgXCJzZXQgLWV1ZiAtbyBwaXBlZmFpbFwiLFxuXG4gICAgICBcInl1bSBpbnN0YWxsIC15IGF3cy1jZm4tYm9vdHN0cmFwXCIsXG4gICAgICBgeXVtIGluc3RhbGwgLXkgbnBtICYmIG5wbSBpbnN0YWxsIC1ncSBAcmVzdGF0ZWRldi9yZXN0YXRlQCR7cmVzdGF0ZU5wbVRhZ30gQHJlc3RhdGVkZXYvcmVzdGF0ZWN0bEAke3Jlc3RhdGVOcG1UYWd9YCxcbiAgICAgIFwieXVtIGluc3RhbGwgLXkgZG9ja2VyXCIsXG4gICAgICB0aGlzLm1vdW50RGF0YVZvbHVtZVNjcmlwdCgpLFxuXG4gICAgICBcIm1rZGlyIC1wIC9ldGMvcmVzdGF0ZVwiLFxuICAgICAgW1wiY2F0IDw8IEVPRiA+IC9ldGMvcmVzdGF0ZS9jb25maWcudG9tbFwiLCB0aGlzLnJlc3RhdGVDb25maWcoaWQsIHByb3BzKSwgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcblxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2VcIixcblxuICAgICAgLy8gU3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIC0gbmVlZGVkIGZvciBYLXJheSB0cmFjZSBmb3J3YXJkaW5nXG4gICAgICBgaWYgWyBcIiQoZG9ja2VyIHBzIC1xYSAtZiBuYW1lPWFkb3QpXCIgXTsgdGhlbiBkb2NrZXIgc3RvcCBhZG90IHx8IHRydWU7IGRvY2tlciBybSBhZG90OyBmaWAsXG4gICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IG9uLWZhaWx1cmUgLS1kZXRhY2ggLS1wdWxsIGFsd2F5c1wiICtcbiAgICAgICAgXCIgLXAgNDMxNzo0MzE3IC1wIDU1NjgwOjU1NjgwIC1wIDg4ODk6ODg4OFwiICtcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBSZXN0YXRlIHNlcnZlciBjb250YWluZXJcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9cmVzdGF0ZSlcIiBdOyB0aGVuIGRvY2tlciBzdG9wIHJlc3RhdGUgfHwgdHJ1ZTsgZG9ja2VyIHJtIHJlc3RhdGU7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaCAtLXB1bGwgYWx3YXlzXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvZXRjL3Jlc3RhdGU6L2V0Yy9yZXN0YXRlXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvdmFyL3Jlc3RhdGU6L3Jlc3RhdGUtZGF0YVwiICtcbiAgICAgICAgXCIgLS1uZXR3b3JrPWhvc3RcIiArXG4gICAgICAgIGAgJHtlbnZBcmdzfWAgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7dXNlU2hhRGlnZXN0ID8gYCR7cmVzdGF0ZUltYWdlfUAke3NoYURpZ2VzdH1gIDogYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVEb2NrZXJUYWd9YH1gICtcbiAgICAgICAgXCIgLS1jb25maWctZmlsZSAvZXRjL3Jlc3RhdGUvY29uZmlnLnRvbWxcIixcbiAgICApO1xuXG4gICAgLy8gT3B0aW9uYWxseSwgY29uZmlndXJlIGFuZCBzdGFydCB0aGUgbmdpbnggc2VydmljZVxuICAgIGlmICh0aGlzLnRsc0VuYWJsZWQpIHtcbiAgICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICAgIFwieXVtIGluc3RhbGwgLXkgbmdpbnhcIixcbiAgICAgICAgXCJta2RpciAtcCAvZXRjL3BraS9wcml2YXRlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgICAgXCIgLXN1YmogJy9DPURFL1NUPUJlcmxpbi9MPUJlcmxpbi9PPXJlc3RhdGUuZGV2L09VPWRlbW8vQ049cmVzdGF0ZS5leGFtcGxlLmNvbSdcIixcbiAgICAgICAgICBcIiAtbmV3a2V5IHJzYToyMDQ4IC1rZXlvdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5IC1vdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCIsXG4gICAgICAgIF0uam9pbihcIlwiKSxcblxuICAgICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9uZ2lueC9jb25mLmQvcmVzdGF0ZS1pbmdyZXNzLmNvbmZcIiwgdGhpcy5pbmdyZXNzTmdpbnhDb25maWcocHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcInN5c3RlbWN0bCBzdGFydCBuZ2lueFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbG91ZENvbmZpZyA9IGVjMi5Vc2VyRGF0YS5jdXN0b20oW2BjbG91ZF9maW5hbF9tb2R1bGVzOmAsIGAtIFtzY3JpcHRzLXVzZXIsIGFsd2F5c11gXS5qb2luKFwiXFxuXCIpKTtcblxuICAgIGNvbnN0IHVzZXJEYXRhID0gbmV3IGVjMi5NdWx0aXBhcnRVc2VyRGF0YSgpO1xuICAgIHVzZXJEYXRhLmFkZFVzZXJEYXRhUGFydChjbG91ZENvbmZpZywgXCJ0ZXh0L2Nsb3VkLWNvbmZpZ1wiKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoaW5pdFNjcmlwdCwgXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIik7XG5cbiAgICBjb25zdCByZXN0YXRlSW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSG9zdFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSA/PyBuZXcgZWMyLkluc3RhbmNlVHlwZShcInQ0Zy5taWNyb1wiKSxcbiAgICAgIG1hY2hpbmVJbWFnZTpcbiAgICAgICAgcHJvcHMubWFjaGluZUltYWdlID8/XG4gICAgICAgIGVjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICBjcHVUeXBlOiBlYzIuQW1hem9uTGludXhDcHVUeXBlLkFSTV82NCxcbiAgICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmluc3RhbmNlUm9sZSxcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogREFUQV9ERVZJQ0VfTkFNRSxcbiAgICAgICAgICB2b2x1bWU6IHtcbiAgICAgICAgICAgIGVic0RldmljZToge1xuICAgICAgICAgICAgICB2b2x1bWVTaXplOiA4LFxuICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uOiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgICAgICAgIC4uLihwcm9wcy5kYXRhVm9sdW1lT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlydHVhbE5hbWU6IFwicmVzdGF0ZS1kYXRhXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyRGF0YSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNmbkluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGVjMi5DZm5JbnN0YW5jZTtcbiAgICBjb25zdCBpbnN0YW5jZUxvZ2ljYWxJZCA9IGNmbkluc3RhbmNlLmxvZ2ljYWxJZDtcblxuICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICBcImVjaG8gJ1dhaXRpbmcgZm9yIFJlc3RhdGUgc2VydmVyIGFkbWluIEFQSSB0byBiZWNvbWUgYXZhaWxhYmxlLi4uJ1wiLFxuICAgICAgXCJIRUFMVEhfQ0hFQ0tfVVJMPSdodHRwOi8vbG9jYWxob3N0OjkwNzAvaGVhbHRoJ1wiLFxuICAgICAgXCJNQVhfQVRURU1QVFM9NjBcIixcbiAgICAgIFwiQVRURU1QVD0wXCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJ3aGlsZSBbICRBVFRFTVBUIC1sdCAkTUFYX0FUVEVNUFRTIF07IGRvXCIsXG4gICAgICBcIiAgaWYgY3VybCAtZiAtcyAkSEVBTFRIX0NIRUNLX1VSTCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuXCIsXG4gICAgICBcIiAgICBlY2hvICdIZWFsdGggY2hlY2sgcGFzc2VkIC0gUmVzdGF0ZSBzZXJ2ZXIgaXMgaGVhbHRoeSdcIixcbiAgICAgIFwiICAgIGJyZWFrXCIsXG4gICAgICBcIiAgZmlcIixcbiAgICAgIFwiICBBVFRFTVBUPSQoKEFUVEVNUFQgKyAxKSlcIixcbiAgICAgICcgIGVjaG8gXCJIZWFsdGggY2hlY2sgYXR0ZW1wdCAkQVRURU1QVC8kTUFYX0FUVEVNUFRTIGZhaWxlZCwgcmV0cnlpbmcgaW4gNSBzZWNvbmRzLi4uXCInLFxuICAgICAgXCIgIHNsZWVwIDVcIixcbiAgICAgIFwiZG9uZVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiaWYgWyAkQVRURU1QVCAtZXEgJE1BWF9BVFRFTVBUUyBdOyB0aGVuXCIsXG4gICAgICAnICBlY2hvIFwiSGVhbHRoIGNoZWNrIGZhaWxlZCBhZnRlciAkTUFYX0FUVEVNUFRTIGF0dGVtcHRzXCInLFxuICAgICAgYCAgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMSAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICAgIFwiICBleGl0IDFcIixcbiAgICAgIFwiZmlcIixcbiAgICAgIFwiXCIsXG4gICAgICBgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMCAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICApO1xuXG4gICAgLy8gQWRkIENyZWF0aW9uUG9saWN5IHRvIHdhaXQgZm9yIGNmbi1zaWduYWxcbiAgICBjZm5JbnN0YW5jZS5jZm5PcHRpb25zLmNyZWF0aW9uUG9saWN5ID0ge1xuICAgICAgcmVzb3VyY2VTaWduYWw6IHtcbiAgICAgICAgdGltZW91dDogXCJQVDEwTVwiLCAvLyAxMCBtaW51dGVzIHRpbWVvdXRcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlO1xuXG4gICAgLy8gV2Ugc3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIHJlZ2FyZGxlc3MsIGFuZCBjb250cm9sIHdoZXRoZXIgdHJhY2VzIHdpbGwgYmUgZXhwb3J0ZWQgdG8gWC1SYXkgdXNpbmcgaW5zdGFuY2Ugcm9sZVxuICAgIC8vIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJJbmdyZXNzU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBJbmdyZXNzIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChpbmdyZXNzU2VjdXJpdHlHcm91cCk7XG4gICAgY29uc3QgYWRtaW5TZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiQWRtaW5TZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEFkbWluIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChhZG1pblNlY3VyaXR5R3JvdXApO1xuXG4gICAgdGhpcy5pbmdyZXNzUG9ydCA9IHRoaXMudGxzRW5hYmxlZCA/IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA6IFJFU1RBVEVfSU5HUkVTU19QT1JUO1xuICAgIHRoaXMuYWRtaW5Qb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfQURNSU5fUE9SVCA6IFJFU1RBVEVfQURNSU5fUE9SVDtcblxuICAgIGluZ3Jlc3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgKHByb3BzLnB1YmxpY0luZ3Jlc3MgPz8gZmFsc2UpID8gZWMyLlBlZXIuYW55SXB2NCgpIDogaW5ncmVzc1NlY3VyaXR5R3JvdXAsXG4gICAgICBlYzIuUG9ydC50Y3AodGhpcy5pbmdyZXNzUG9ydCksXG4gICAgICBcIlJlc3RhdGUgaW5ncmVzc1wiLFxuICAgICk7XG4gICAgYWRtaW5TZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFkbWluU2VjdXJpdHlHcm91cCwgZWMyLlBvcnQudGNwKHRoaXMuYWRtaW5Qb3J0KSwgXCJSZXN0YXRlIGFkbWluXCIpO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnRsc0VuYWJsZWQgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICBjb25zdCBob3N0bmFtZSA9XG4gICAgICBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSAhPT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgID8gYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWV9YFxuICAgICAgICA6IGAke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9YDtcbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfWAgKyAodGhpcy5pbmdyZXNzUG9ydCA9PT0gNDQzID8gXCJcIiA6IGA6JHt0aGlzLmluZ3Jlc3NQb3J0fWApO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3RoaXMuYWRtaW5Qb3J0fWA7XG5cbiAgICB0aGlzLmluZ3Jlc3NTZWN1cml0eUdyb3VwID0gaW5ncmVzc1NlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5hZG1pblNlY3VyaXR5R3JvdXAgPSBhZG1pblNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzdGF0ZUNvbmZpZyhpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5yZXN0YXRlQ29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgYHJvbGVzID0gW2AsXG4gICAgICAgIGAgICAgXCJ3b3JrZXJcIixgLFxuICAgICAgICBgICAgIFwiYWRtaW5cIixgLFxuICAgICAgICBgICAgIFwibWV0YWRhdGEtc2VydmVyXCIsYCxcbiAgICAgICAgYCAgICBcImxvZy1zZXJ2ZXJcIixgLFxuICAgICAgICBgICAgIFwiaHR0cC1pbmdyZXNzXCIsYCxcbiAgICAgICAgYF1gLFxuICAgICAgICBgbm9kZS1uYW1lID0gXCJyZXN0YXRlLTBcImAsXG4gICAgICAgIGBjbHVzdGVyLW5hbWUgPSBcIiR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uY2x1c3Rlck5hbWUgPz8gaWR9XCJgLFxuICAgICAgICBgZGVmYXVsdC1udW0tcGFydGl0aW9ucyA9ICR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uYm9vdHN0cmFwTnVtUGFydGl0aW9ucyA/PyA0fWAsXG4gICAgICAgIGByb2Nrc2RiLXRvdGFsLW1lbW9yeS1zaXplID0gXCIke3Byb3BzLnJlc3RhdGVDb25maWc/LnJvY2tzZGI/LnRvdGFsTWVtb3J5U2l6ZT8udG9NZWJpYnl0ZXMoKSA/PyA1MTIuMCArIFwiIE1CXCJ9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbl1gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0FETUlOX1BPUlR9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbi5xdWVyeS1lbmdpbmVdYCxcbiAgICAgICAgYG1lbW9yeS1zaXplID0gXCIyNTYuMCBNaUJcImAsXG4gICAgICAgIGBgLFxuICAgICAgICBgW2luZ3Jlc3NdYCxcbiAgICAgICAgYGJpbmQtYWRkcmVzcyA9IFwiJHt0aGlzLnRsc0VuYWJsZWQgPyBcIjEyNy4wLjAuMVwiIDogXCIwLjAuMC4wXCJ9OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9XCJgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtb3VudERhdGFWb2x1bWVTY3JpcHQoKSB7XG4gICAgcmV0dXJuIGBcbmlmIG1vdW50IHwgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZSc7IHRoZW5cbiAgZWNobyBcIi92YXIvcmVzdGF0ZSBpcyBtb3VudGVkXCJcbmVsc2VcbiAgaWYgWyAtZCAvdmFyL3Jlc3RhdGUgXTsgdGhlblxuICAgIGlmIFsgXCIkKGxzIC1BIC92YXIvcmVzdGF0ZSlcIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRGF0YSBleGlzdHMgaW4gL3Zhci9yZXN0YXRlIHRoYXQgaXMgbm90IG9uIGRhdGEgdm9sdW1lOyByZWZ1c2luZyB0byBvdmVyd3JpdGUhXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG4gIGVsc2VcbiAgICBta2RpciAvdmFyL3Jlc3RhdGVcbiAgZmlcbiAgaWYgZmlsZSAtc0wgJHtEQVRBX0RFVklDRV9OQU1FfSB8IGdyZXAgLXEgJzogZGF0YSQnOyB0aGVuXG4gICAgbWtmcyAtdCB4ZnMgJHtEQVRBX0RFVklDRV9OQU1FfVxuICBmaVxuICBtb3VudCAke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZVxuICBpZiAhIGdyZXAgLXFzICcvdmFyL3Jlc3RhdGUnIC9ldGMvZnN0YWI7IHRoZW5cbiAgICBlY2hvIFwiJHtEQVRBX0RFVklDRV9OQU1FfSAvdmFyL3Jlc3RhdGUgeGZzIGRlZmF1bHRzIDAgMFwiID4+IC9ldGMvZnN0YWJcbiAgICBlY2hvIFwiQWRkZWQgZW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gdG8gL2V0Yy9mc3RhYlwiXG4gIGVsc2VcbiAgICBlY2hvIFwiRW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gYWxyZWFkeSBleGlzdHMgaW4gL2V0Yy9mc3RhYlwiXG4gIGZpXG5maVxuYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvcHMgY29uc3RydWN0IHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgbmdpbnggY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGluZ3Jlc3MgcmV2ZXJzZSBwcm94eSwgZm9ybWF0dGVkIGFzIGEgbXVsdGktbGluZSBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBpbmdyZXNzTmdpbnhDb25maWcocHJvcHM6IFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcHJvcHMuaW5ncmVzc05naW54Q29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgXCJzZXJ2ZXIge1wiLFxuICAgICAgICBgICBsaXN0ZW4gJHtSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9O2AsXG4gICAgICAgIGAgICAgcHJveHlfcmVhZF90aW1lb3V0ICR7cHJvcHMuaW5ncmVzc1Byb3h5UmVhZFRpbWVvdXQ/LnRvU2Vjb25kcygpID8/IDM2MDB9O2AsXG4gICAgICAgIFwiICB9XCIsXG4gICAgICAgIFwifVwiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBcIiAgc2VydmVyX25hbWUgXztcIixcbiAgICAgICAgXCIgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGUgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIjsnLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGVfa2V5IFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5XCI7JyxcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX2NhY2hlIHNoYXJlZDpTU0w6MW07XCIsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcIixcbiAgICAgICAgXCIgIHNzbF9jaXBoZXJzIFBST0ZJTEU9U1lTVEVNO1wiLFxuICAgICAgICBcIiAgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyBvbjtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIgIGxvY2F0aW9uIC8ge1wiLFxuICAgICAgICBgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke1JFU1RBVEVfQURNSU5fUE9SVH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG59XG4iXX0=
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW5vZGUtcmVzdGF0ZS1kZXBsb3ltZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3Jlc3RhdGUtY29uc3RydWN0cy9zaW5nbGUtbm9kZS1yZXN0YXRlLWRlcGxveW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7R0FTRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMkNBQXVDO0FBQ3ZDLDJEQUE2QztBQUM3Qyx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLDZEQUFtRDtBQUNuRCxpREFBbUM7QUFDbkMsNkNBQTRDO0FBZ0g1QyxJQUFZLGNBV1g7QUFYRCxXQUFZLGNBQWM7SUFDeEI7O09BRUc7SUFDSCwyREFBUSxDQUFBO0lBRVI7OztPQUdHO0lBQ0gseUdBQStCLENBQUE7QUFDakMsQ0FBQyxFQVhXLGNBQWMsOEJBQWQsY0FBYyxRQVd6QjtBQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQ2hDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE1BQU0scUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7QUFDdEUsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFDekMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFDdEMsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUM7QUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7QUFFcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSwyQkFBNEIsU0FBUSxzQkFBUztJQWF4RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxL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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeFZELGtFQXdWQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtMjAyNSAtIFJlc3RhdGUgU29mdHdhcmUsIEluYy4sIFJlc3RhdGUgR21iSFxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBSZXN0YXRlIENESyBDb25zdHJ1Y3QgTGlicmFyeSxcbiAqIHdoaWNoIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqXG4gKiBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGluIGZpbGUgTElDRU5TRSBpbiB0aGUgcm9vdFxuICogZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeSBvciBwYWNrYWdlLCBvciBhdFxuICogaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RhdGVkZXYvc2RrLXR5cGVzY3JpcHQvYmxvYi9tYWluL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBJUmVzdGF0ZUVudmlyb25tZW50IH0gZnJvbSBcIi4vcmVzdGF0ZS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHsgVHJhY2luZ01vZGUgfSBmcm9tIFwiLi9kZXBsb3ltZW50cy1jb21tb25cIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaW5nbGVOb2RlUmVzdGF0ZVByb3BzIHtcbiAgLyoqIEVDMiBpbnN0YW5jZSB0eXBlIHRvIHVzZS4gKi9cbiAgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcblxuICAvKiogTWFjaGluZSBpbWFnZS4gTm90ZTogc3RhcnR1cCBzY3JpcHQgZXhwZWN0cyB5dW0tYmFzZWQgcGFja2FnZSBtYW5hZ2VtZW50LiAqL1xuICBtYWNoaW5lSW1hZ2U/OiBlYzIuSU1hY2hpbmVJbWFnZTtcblxuICAvKiogVGhlIFZQQyBpbiB3aGljaCB0byBsYXVuY2ggdGhlIFJlc3RhdGUgaG9zdC4gKi9cbiAgdnBjPzogZWMyLklWcGM7XG5cbiAgbmV0d29ya0NvbmZpZ3VyYXRpb24/OiB7XG4gICAgLyoqXG4gICAgICogU3VibmV0IHR5cGUgZm9yIHRoZSBSZXN0YXRlIGhvc3QuXG4gICAgICpcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9uczpcbiAgICAgKiAgLSBbRGVmYXVsdF0ge0BsaW5rIGVjMi5TdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9FR1JFU1N9IHdpbGwgY3JlYXRlIHRoZSBSZXN0YXRlIGluc3RhbmNlIHdpdGggb3V0Ym91bmQgaW50ZXJuZXRcbiAgICAgKiAgICBhY2Nlc3Mgb25seSwgc28gdGhhdCBpdCBjYW4gaW52b2tlIEhUVFAgZW5kcG9pbnRzLiBUaGUgc2VjdXJpdHkgZ3JvdXBzIHtAbGluayBpbmdyZXNzU2VjdXJpdHlHcm91cH0gYW5kXG4gICAgICogICAge0BsaW5rIGFkbWluU2VjdXJpdHlHcm91cH0gY29udHJvbCBpbmJvdW5kIHRyYWZmaWMgdG8gdGhlIHNlcnZpY2UgaW5ncmVzcyBhbmQgYWRtaW4gcG9ydHMgcmVzcGVjdGl2ZWx5LlxuICAgICAqICAgIENvbmZpZ3VyZSB7QGxpbmsgU2VydmljZURlcGxveWVyfSB0byB1c2UgdGhlIGxhdHRlciwgYW5kIHNldCB1cCBpbmdyZXNzIHRyYWZmaWMgcm91dGluZyBvdXRzaWRlIG9mIHRoaXNcbiAgICAgKiAgICBjb25zdHJ1Y3QgdXNpbmcgdGhlIGZvcm1lci5cbiAgICAgKiAgLSBJbnNlY3VyZSwgaW50ZXJuZXQtZmFjaW5nIHtAbGluayBlYzIuU3VibmV0VHlwZS5QVUJMSUN9IHdpbGwgYWxzbyBwcm92aXNpb24gYW4gbmdpbnggcmV2ZXJzZSBwcm94eVxuICAgICAqICAgIGFuZCBhbiBIVFRQIGxpc3RlbmVyIHdpdGggYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZS5cbiAgICAgKi9cbiAgICBzdWJuZXRUeXBlPzogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8IGVjMi5TdWJuZXRUeXBlLlBVQkxJQztcbiAgfTtcblxuICAvKipcbiAgICogQWxsb3cgaW5jb21pbmcgaW5ncmVzcyB0cmFmZmljIGZyb20gYW55d2hlcmUuIERlZmF1bHQ6IGBmYWxzZWAuIEFsdGVybmF0aXZlbHksIGFkZCBydWxlcyB0byB0aGVcbiAgICogYGluZ3Jlc3NTZWN1cml0eUdyb3VwYCBkaXJlY3RseS5cbiAgICovXG4gIHB1YmxpY0luZ3Jlc3M/OiBib29sZWFuO1xuXG4gIC8qKiBMb2cgZ3JvdXAgZm9yIFJlc3RhdGUgc2VydmljZSBsb2dzLiAqL1xuICBsb2dHcm91cD86IGxvZ3MuTG9nR3JvdXA7XG5cbiAgLyoqIFRyYWNpbmcgbW9kZSBmb3IgUmVzdGF0ZSBzZXJ2aWNlcy4gRGVmYXVsdHMgdG8ge0BsaW5rIFRyYWNpbmdNb2RlLkRJU0FCTEVEfS4gKi9cbiAgdHJhY2luZz86IFRyYWNpbmdNb2RlO1xuXG4gIC8qKiBQcmVmaXggZm9yIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0IHRoYXQgcmVxdWlyZSB1bmlxdWUgbmFtZXMuICovXG4gIHByZWZpeD86IHN0cmluZztcblxuICAvKiogUmVzdGF0ZSBEb2NrZXIgaW1hZ2UgbmFtZS4gRGVmYXVsdHMgdG8gYGRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVgLiAqL1xuICByZXN0YXRlSW1hZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgRG9ja2VyIGltYWdlIHRhZy4gRGVmYXVsdHMgdG8gYGxhdGVzdGAuICovXG4gIHJlc3RhdGVUYWc/OiBzdHJpbmc7XG5cbiAgLyoqIFJlc3RhdGUgTlBNIHRvb2xzIHRhZyAodXNlZCBmb3IgYHJlc3RhdGVgL2ByZXN0YXRlY3RsYCkuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICByZXN0YXRlTnBtVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQlMgZGF0YSB2b2x1bWUgc2V0dGluZ3MgZm9yIFJlc3RhdGUgZGF0YSBzdG9yYWdlLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgOEdCIHZvbHVtZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhVm9sdW1lT3B0aW9ucz86IGVjMi5FYnNEZXZpY2VQcm9wcyB8IHVuZGVmaW5lZDtcblxuICAvKiogUmVzdGF0ZSBoaWdoLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzZXQge0BsaW5rIHJlc3RhdGVDb25maWdPdmVycmlkZX0uICovXG4gIHJlc3RhdGVDb25maWc/OiB7XG4gICAgLyoqIERlZmF1bHRzIHRvIHRoZSBjb25zdHJ1Y3QgaWQgaWYgbGVmdCB1bnNwZWNpZmllZC4gKi9cbiAgICBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgICAvKiogRGVmYXVsdHMgdG8gNC4gT25seSB0YWtlcyBlZmZlY3Qgb24gaW5pdGlhbCBwcm92aXNpb25pbmcuICovXG4gICAgYm9vdHN0cmFwTnVtUGFydGl0aW9ucz86IG51bWJlcjtcbiAgICAvKiogUm9ja3NEQiBzZXR0aW5ncy4gKi9cbiAgICByb2Nrc2RiPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDUxMiBNQi4gKi9cbiAgICAgIHRvdGFsTWVtb3J5U2l6ZT86IGNkay5TaXplO1xuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHByb3BlcnRpZXMgdG8gc2V0IGZvciBSZXN0YXRlLiBUaGlzIGlzIGEgc2ltcGxlIHdheSB0byBwYXNzIGN1c3RvbSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuXG4gICAqL1xuICBlbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIFJlc3RhdGUgc2VydmVyIGNvbmZpZ3VyYXRpb24uIE5vdGUgdGhhdCBvdGhlciBSZXN0YXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICAgKiB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuIFNlZSBodHRwczovL2RvY3MucmVzdGF0ZS5kZXYvb3BlcmF0ZS9jb25maWd1cmF0aW9uL3NlcnZlci9cbiAgICogZm9yIGRldGFpbHMuXG4gICAqL1xuICByZXN0YXRlQ29uZmlnT3ZlcnJpZGU/OiBzdHJpbmc7XG5cbiAgLyoqIEFtYXpvbiBEaXN0cm8gZm9yIE9wZW4gVGVsZW1ldHJ5IERvY2tlciBpbWFnZSB0YWcuIERlZmF1bHRzIHRvIGBsYXRlc3RgLiAqL1xuICBhZG90VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgbG9uZy1saXZlZCByZXNvdXJjZXMgKHN0b3JhZ2UsIGxvZ3MpLiBEZWZhdWx0OiBgY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWWAuXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogY2RrLlJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIENvbnRyb2wgb24taG9zdCBUTFMgdGVybWluYXRpb24gZm9yIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBEZWZhdWx0cyB0byBgVGxzVGVybWluYXRpb24uTk9ORWAuIEN1cnJlbnRseSwgZW5hYmxpbmdcbiAgICogVExTIGltcGxpY2l0bHkgZW5hYmxlcyBhbiBgbmdpbnhgIHNlcnZpY2UgdG8gYmUgY29uZmlndXJlZCBvbiB0aGUgaG9zdC4gRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiwgdGhlXG4gICAqIGluZ3Jlc3Mgc2VjdXJpdHkgZ3JvdXAgd2lsbCBiZSBjb25maWd1cmVkIHRvIGFsbG93IGluYm91bmQgdHJhZmZpYyB0byB0aGUgYXBwcm9wcmlhdGUgcG9ydCAtIDgwODAgZm9yIG5vIFRMUywgb3JcbiAgICogNDQzIHdpdGggVExTIGVuYWJsZWQuXG4gICAqL1xuICB0bHNUZXJtaW5hdGlvbj86IFRsc1Rlcm1pbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVhZCB0aW1lb3V0IGZvciBwcm94aWVkIGluZ3Jlc3MgcmVxdWVzdHMuIERlZmF1bHQ6IDM2MDAgc2Vjb25kcy5cbiAgICovXG4gIGluZ3Jlc3NQcm94eVJlYWRUaW1lb3V0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBDb21wbGV0ZWx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGBuZ2lueGAgY29uZmlndXJhdGlvbiBmb3IgdGhlIGluZ3Jlc3MgcHJveHkuIE5vdGUgdGhhdCBvdGhlclxuICAgKiBpbmdyZXNzIHByb3h5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGlnbm9yZWQgaWYgdGhpcyBpcyBzZXQuXG4gICAqL1xuICBpbmdyZXNzTmdpbnhDb25maWdPdmVycmlkZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gVGxzVGVybWluYXRpb24ge1xuICAvKipcbiAgICogRGlzYWJsZWQgKGRlZmF1bHQpOyBleHBvc2UgdGhlIGByZXN0YXRlLXNlcnZlcmAgSFRUUCBwb3J0cyBkaXJlY3RseS5cbiAgICovXG4gIERJU0FCTEVELFxuXG4gIC8qKlxuICAgKiBVc2Ugc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGZvciBUTFMgdGVybWluYXRpb24gb24gdGhlIGluZ3Jlc3MgYW5kIGFkbWluIHBvcnRzLiBDb252ZW5pZW50IGZvciBxdWljayB0ZXN0aW5nLFxuICAgKiBtYWtlIHN1cmUgeW91IHNldCBgaW5zZWN1cmVgID0gYHRydWVgIHdoZW4gdXNpbmcgYFNlcnZpY2VEZXBsb3llcmAgdG8gYWNjZXB0IHRoaXMgY2VydGlmaWNhdGUuXG4gICAqL1xuICBPTl9IT1NUX1NFTEZfU0lHTkVEX0NFUlRJRklDQVRFLFxufVxuXG5jb25zdCBSRVNUQVRFX0lOR1JFU1NfUE9SVCA9IDgwODA7XG5jb25zdCBSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlQgPSA0NDM7XG5jb25zdCBSRVNUQVRFX0FETUlOX1BPUlQgPSA5MDcwO1xuY29uc3QgUkVTVEFURV9UTFNfQURNSU5fUE9SVCA9IDkwNzM7XG5jb25zdCBSRVNUQVRFX0lNQUdFX0RFRkFVTFQgPSBcImRvY2tlci5yZXN0YXRlLmRldi9yZXN0YXRlZGV2L3Jlc3RhdGVcIjtcbmNvbnN0IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCIxLjZcIjtcbmNvbnN0IFJFU1RBVEVfTlBNX0RFRkFVTFRfVEFHID0gXCIxLjZcIjtcbmNvbnN0IEFET1RfRE9DS0VSX0RFRkFVTFRfVEFHID0gXCJsYXRlc3RcIjtcbmNvbnN0IERBVEFfREVWSUNFX05BTUUgPSBcIi9kZXYvc2RkXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFJlc3RhdGUgc2VydmljZSBkZXBsb3ltZW50IGJhY2tlZCBieSBhIHNpbmdsZSBFQzIgaW5zdGFuY2UsIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCBhbmQgdGVzdGluZyBwdXJwb3Nlcy5cbiAqXG4gKiAqKkR1cmFiaWxpdHkqKlxuICpcbiAqIFJlc3RhdGUgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIEVCUyB2b2x1bWUgd2hpY2ggeW91IGNhbiBjb25maWd1cmUgZXhwbGljaXRseSB2aWEgdGhlIGBkYXRhVm9sdW1lT3B0aW9uc2BcbiAqIHByb3BlcnR5LiBVcGRhdGluZyBjb25maWd1cmF0aW9uIHNldHRpbmdzIG1heSB0cmlnZ2VyIGluc3RhbmNlIHJlYm9vdCBvciByZXBsYWNlbWVudCAtIGNvbnNpZGVyIHNuYXBzaG90dGluZyB0aGUgZGF0YVxuICogdm9sdW1lIHByaW9yIHRvIGRlcGxveW1lbnRzLCBhbmQgZW5hYmxpbmcgaW5zdGFuY2UgdGVybWluYXRpb24gcHJvdGVjdGlvbi5cbiAqXG4gKiAqKlNlY3VyaXR5KipcbiAqXG4gKiBUaGUgRUMyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGVmYXVsdCBWUEMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuIFR3byBzZWN1cml0eSBncm91cHMgYXJlIGNyZWF0ZWQsXG4gKiBgaW5ncmVzc1NlY3VyaXR5R3JvdXBgIGFuZCBgYWRtaW5TZWN1cml0eUdyb3VwYCwgd2hpY2ggY29udHJvbCBhY2Nlc3MgdG8gdGhlIFJlc3RhdGUgc2VydmljZSBpbmdyZXNzIGFuZCBhZG1pbiBwb3J0c1xuICogcmVzcGVjdGl2ZWx5LiBZb3UgbXVzdCBhZGQgYXBwcm9wcmlhdGUgcnVsZXMgb3IgYWRkIG90aGVyIHJlc291cmNlcyB0byB0aGVzZSBzZWN1cml0eSBncm91cHMgdG8gYWxsb3cgYWNjZXNzLlxuICpcbiAqIFNlZSB7QGxpbmsgU2luZ2xlTm9kZVJlc3RhdGVQcm9wc30gZm9yIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB7QGxpbmsgU2VydmljZURlcGxveWVyfSBmb3IgZGVwbG95aW5nXG4gKiBMYW1iZGEgaGFuZGxlcnMgdG8gZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZVJlc3RhdGVEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJlc3RhdGVFbnZpcm9ubWVudCB7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBlYzIuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSBpbnZva2VyUm9sZTogaWFtLklSb2xlO1xuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICByZWFkb25seSBpbmdyZXNzU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBpbmdyZXNzUG9ydDogbnVtYmVyO1xuICByZWFkb25seSBpbmdyZXNzVXJsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkbWluU2VjdXJpdHlHcm91cDogZWMyLklTZWN1cml0eUdyb3VwO1xuICByZWFkb25seSBhZG1pblBvcnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgYWRtaW5Vcmw6IHN0cmluZztcbiAgcmVhZG9ubHkgdGxzRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnZwYyA9IHByb3BzLnZwYyA/PyBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwgeyBpc0RlZmF1bHQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCBzdWJuZXRUeXBlID0gcHJvcHMubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFR5cGUgPz8gZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcblxuICAgIHRoaXMuaW5zdGFuY2VSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiSW5zdGFuY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWMyLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXCJBbWF6b25TU01NYW5hZ2VkSW5zdGFuY2VDb3JlXCIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMuaW52b2tlclJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJJbnZva2VyUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IHRoaXMuaW5zdGFuY2VSb2xlLFxuICAgIH0pO1xuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJBc3N1bWVJbnZva2VyUm9sZVBvbGljeVwiLCB7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6IFwiQWxsb3dBc3N1bWVJbnZva2VyUm9sZVwiLFxuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMuaW52b2tlclJvbGUucm9sZUFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KS5hdHRhY2hUb1JvbGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPVxuICAgICAgcHJvcHMubG9nR3JvdXAgPz9cbiAgICAgIG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiTG9nc1wiLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogYC9yZXN0YXRlLyR7aWR9YCxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILFxuICAgICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIH0pO1xuICAgIGxvZ0dyb3VwLmdyYW50V3JpdGUodGhpcy5pbnN0YW5jZVJvbGUpO1xuXG4gICAgbGV0IHJlc3RhdGVJbWFnZSA9IHByb3BzLnJlc3RhdGVJbWFnZSA/PyBSRVNUQVRFX0lNQUdFX0RFRkFVTFQ7XG4gICAgbGV0IHJlc3RhdGVEb2NrZXJUYWcgPSBwcm9wcy5yZXN0YXRlVGFnID8/IFJFU1RBVEVfRE9DS0VSX0RFRkFVTFRfVEFHO1xuICAgIGxldCByZXN0YXRlTnBtVGFnID0gcHJvcHMucmVzdGF0ZU5wbVRhZyA/PyBSRVNUQVRFX05QTV9ERUZBVUxUX1RBRztcbiAgICBsZXQgdXNlU2hhRGlnZXN0ID0gZmFsc2U7XG4gICAgbGV0IHNoYURpZ2VzdCA9IFwiXCI7XG5cbiAgICBpZiAocmVzdGF0ZUltYWdlLmluY2x1ZGVzKFwiQFwiKSkge1xuICAgICAgY29uc3QgcGFydHMgPSByZXN0YXRlSW1hZ2Uuc3BsaXQoXCJAXCIpO1xuICAgICAgcmVzdGF0ZUltYWdlID0gcGFydHNbMF07XG4gICAgICBzaGFEaWdlc3QgPSBwYXJ0c1sxXTtcbiAgICAgIHVzZVNoYURpZ2VzdCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChyZXN0YXRlSW1hZ2UuaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHJlc3RhdGVJbWFnZS5zcGxpdChcIjpcIik7XG4gICAgICByZXN0YXRlSW1hZ2UgPSBwYXJ0c1swXTtcbiAgICAgIGNvbnN0IGlubGluZVRhZyA9IHBhcnRzWzFdO1xuXG4gICAgICBpZiAocHJvcHMucmVzdGF0ZVRhZyAmJiBwcm9wcy5yZXN0YXRlVGFnICE9PSBpbmxpbmVUYWcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUYWcgY29uZmxpY3Q6IGlubGluZSB0YWcgJyR7aW5saW5lVGFnfScgaW4gaW1hZ2UgZG9lc24ndCBtYXRjaCBleHBsaWNpdCB0YWcgJyR7cHJvcHMucmVzdGF0ZVRhZ30nIHByb3BlcnR5YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmVzdGF0ZURvY2tlclRhZyA9IGlubGluZVRhZztcbiAgICB9XG4gICAgY29uc3QgYWRvdFRhZyA9IHByb3BzLmFkb3RUYWcgPz8gQURPVF9ET0NLRVJfREVGQVVMVF9UQUc7XG5cbiAgICB0aGlzLnRsc0VuYWJsZWQgPSBwcm9wcy50bHNUZXJtaW5hdGlvbiA9PT0gVGxzVGVybWluYXRpb24uT05fSE9TVF9TRUxGX1NJR05FRF9DRVJUSUZJQ0FURTtcblxuICAgIGNvbnN0IGVudkRlZmF1bHRzID0ge1xuICAgICAgUkVTVEFURV9MT0dfRk9STUFUOiBcImpzb25cIixcbiAgICAgIFJVU1RfTE9HOiBcImluZm9cIixcbiAgICAgIFJFU1RBVEVfVFJBQ0lOR19FTkRQT0lOVDogXCJodHRwOi8vbG9jYWxob3N0OjQzMTdcIixcbiAgICB9O1xuICAgIGNvbnN0IGVudkFyZ3MgPSBPYmplY3QuZW50cmllcyh7IC4uLmVudkRlZmF1bHRzLCAuLi4ocHJvcHMuZW52aXJvbm1lbnQgPz8ge30pIH0pXG4gICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAtZSAke2tleX09XCIke3ZhbHVlfVwiYClcbiAgICAgIC5qb2luKFwiIFwiKTtcblxuICAgIGNvbnN0IGluaXRTY3JpcHQgPSBlYzIuVXNlckRhdGEuZm9yTGludXgoKTtcbiAgICBpbml0U2NyaXB0LmFkZENvbW1hbmRzKFxuICAgICAgXCJzZXQgLWV1ZiAtbyBwaXBlZmFpbFwiLFxuXG4gICAgICBcInl1bSBpbnN0YWxsIC15IGF3cy1jZm4tYm9vdHN0cmFwXCIsXG4gICAgICBgeXVtIGluc3RhbGwgLXkgbnBtICYmIG5wbSBpbnN0YWxsIC1ncSBAcmVzdGF0ZWRldi9yZXN0YXRlQCR7cmVzdGF0ZU5wbVRhZ30gQHJlc3RhdGVkZXYvcmVzdGF0ZWN0bEAke3Jlc3RhdGVOcG1UYWd9YCxcbiAgICAgIFwieXVtIGluc3RhbGwgLXkgZG9ja2VyXCIsXG4gICAgICB0aGlzLm1vdW50RGF0YVZvbHVtZVNjcmlwdCgpLFxuXG4gICAgICBcIm1rZGlyIC1wIC9ldGMvcmVzdGF0ZVwiLFxuICAgICAgW1wiY2F0IDw8IEVPRiA+IC9ldGMvcmVzdGF0ZS9jb25maWcudG9tbFwiLCB0aGlzLnJlc3RhdGVDb25maWcoaWQsIHByb3BzKSwgXCJFT0ZcIl0uam9pbihcIlxcblwiKSxcblxuICAgICAgXCJzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2VcIixcblxuICAgICAgLy8gU3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIC0gbmVlZGVkIGZvciBYLXJheSB0cmFjZSBmb3J3YXJkaW5nXG4gICAgICBgaWYgWyBcIiQoZG9ja2VyIHBzIC1xYSAtZiBuYW1lPWFkb3QpXCIgXTsgdGhlbiBkb2NrZXIgc3RvcCBhZG90IHx8IHRydWU7IGRvY2tlciBybSBhZG90OyBmaWAsXG4gICAgICBcImRvY2tlciBydW4gLS1uYW1lIGFkb3QgLS1yZXN0YXJ0IG9uLWZhaWx1cmUgLS1kZXRhY2ggLS1wdWxsIGFsd2F5c1wiICtcbiAgICAgICAgXCIgLXAgNDMxNzo0MzE3IC1wIDU1NjgwOjU1NjgwIC1wIDg4ODk6ODg4OFwiICtcbiAgICAgICAgYCBwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3Mtb3RlbC1jb2xsZWN0b3I6JHthZG90VGFnfWAsXG5cbiAgICAgIC8vIFN0YXJ0IHRoZSBSZXN0YXRlIHNlcnZlciBjb250YWluZXJcbiAgICAgIGBpZiBbIFwiJChkb2NrZXIgcHMgLXFhIC1mIG5hbWU9cmVzdGF0ZSlcIiBdOyB0aGVuIGRvY2tlciBzdG9wIHJlc3RhdGUgfHwgdHJ1ZTsgZG9ja2VyIHJtIHJlc3RhdGU7IGZpYCxcbiAgICAgIFwiZG9ja2VyIHJ1biAtLW5hbWUgcmVzdGF0ZSAtLXJlc3RhcnQgb24tZmFpbHVyZSAtLWRldGFjaCAtLXB1bGwgYWx3YXlzXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvZXRjL3Jlc3RhdGU6L2V0Yy9yZXN0YXRlXCIgK1xuICAgICAgICBcIiAtLXZvbHVtZSAvdmFyL3Jlc3RhdGU6L3Jlc3RhdGUtZGF0YVwiICtcbiAgICAgICAgXCIgLS1uZXR3b3JrPWhvc3RcIiArXG4gICAgICAgIGAgJHtlbnZBcmdzfWAgK1xuICAgICAgICBgIC0tbG9nLWRyaXZlcj1hd3Nsb2dzIC0tbG9nLW9wdCBhd3Nsb2dzLWdyb3VwPSR7bG9nR3JvdXAubG9nR3JvdXBOYW1lfWAgK1xuICAgICAgICBgICR7dXNlU2hhRGlnZXN0ID8gYCR7cmVzdGF0ZUltYWdlfUAke3NoYURpZ2VzdH1gIDogYCR7cmVzdGF0ZUltYWdlfToke3Jlc3RhdGVEb2NrZXJUYWd9YH1gICtcbiAgICAgICAgXCIgLS1jb25maWctZmlsZSAvZXRjL3Jlc3RhdGUvY29uZmlnLnRvbWxcIixcbiAgICApO1xuXG4gICAgLy8gT3B0aW9uYWxseSwgY29uZmlndXJlIGFuZCBzdGFydCB0aGUgbmdpbnggc2VydmljZVxuICAgIGlmICh0aGlzLnRsc0VuYWJsZWQpIHtcbiAgICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICAgIFwieXVtIGluc3RhbGwgLXkgbmdpbnhcIixcbiAgICAgICAgXCJta2RpciAtcCAvZXRjL3BraS9wcml2YXRlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBcIm9wZW5zc2wgcmVxIC1uZXcgLXg1MDkgLW5vZGVzIC1zaGEyNTYgLWRheXMgMzY1IC1leHRlbnNpb25zIHYzX2NhXCIsXG4gICAgICAgICAgXCIgLXN1YmogJy9DPURFL1NUPUJlcmxpbi9MPUJlcmxpbi9PPXJlc3RhdGUuZGV2L09VPWRlbW8vQ049cmVzdGF0ZS5leGFtcGxlLmNvbSdcIixcbiAgICAgICAgICBcIiAtbmV3a2V5IHJzYToyMDQ4IC1rZXlvdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5IC1vdXQgL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQuY3J0XCIsXG4gICAgICAgIF0uam9pbihcIlwiKSxcblxuICAgICAgICBbXCJjYXQgPDwgRU9GID4gL2V0Yy9uZ2lueC9jb25mLmQvcmVzdGF0ZS1pbmdyZXNzLmNvbmZcIiwgdGhpcy5pbmdyZXNzTmdpbnhDb25maWcocHJvcHMpLCBcIkVPRlwiXS5qb2luKFwiXFxuXCIpLFxuICAgICAgICBcInN5c3RlbWN0bCBzdGFydCBuZ2lueFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbG91ZENvbmZpZyA9IGVjMi5Vc2VyRGF0YS5jdXN0b20oW2BjbG91ZF9maW5hbF9tb2R1bGVzOmAsIGAtIFtzY3JpcHRzLXVzZXIsIGFsd2F5c11gXS5qb2luKFwiXFxuXCIpKTtcblxuICAgIGNvbnN0IHVzZXJEYXRhID0gbmV3IGVjMi5NdWx0aXBhcnRVc2VyRGF0YSgpO1xuICAgIHVzZXJEYXRhLmFkZFVzZXJEYXRhUGFydChjbG91ZENvbmZpZywgXCJ0ZXh0L2Nsb3VkLWNvbmZpZ1wiKTtcbiAgICB1c2VyRGF0YS5hZGRVc2VyRGF0YVBhcnQoaW5pdFNjcmlwdCwgXCJ0ZXh0L3gtc2hlbGxzY3JpcHRcIik7XG5cbiAgICBjb25zdCByZXN0YXRlSW5zdGFuY2UgPSBuZXcgZWMyLkluc3RhbmNlKHRoaXMsIFwiSG9zdFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgdnBjU3VibmV0czogeyBzdWJuZXRUeXBlIH0sXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSA/PyBuZXcgZWMyLkluc3RhbmNlVHlwZShcInQ0Zy5taWNyb1wiKSxcbiAgICAgIG1hY2hpbmVJbWFnZTpcbiAgICAgICAgcHJvcHMubWFjaGluZUltYWdlID8/XG4gICAgICAgIGVjMi5NYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyMDIzKHtcbiAgICAgICAgICBjcHVUeXBlOiBlYzIuQW1hem9uTGludXhDcHVUeXBlLkFSTV82NCxcbiAgICAgICAgfSksXG4gICAgICByb2xlOiB0aGlzLmluc3RhbmNlUm9sZSxcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogREFUQV9ERVZJQ0VfTkFNRSxcbiAgICAgICAgICB2b2x1bWU6IHtcbiAgICAgICAgICAgIGVic0RldmljZToge1xuICAgICAgICAgICAgICB2b2x1bWVTaXplOiA4LFxuICAgICAgICAgICAgICBkZWxldGVPblRlcm1pbmF0aW9uOiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgICAgICAgIC4uLihwcm9wcy5kYXRhVm9sdW1lT3B0aW9ucyA/PyB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlydHVhbE5hbWU6IFwicmVzdGF0ZS1kYXRhXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyRGF0YSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNmbkluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlLm5vZGUuZGVmYXVsdENoaWxkIGFzIGVjMi5DZm5JbnN0YW5jZTtcbiAgICBjb25zdCBpbnN0YW5jZUxvZ2ljYWxJZCA9IGNmbkluc3RhbmNlLmxvZ2ljYWxJZDtcblxuICAgIGluaXRTY3JpcHQuYWRkQ29tbWFuZHMoXG4gICAgICBcImVjaG8gJ1dhaXRpbmcgZm9yIFJlc3RhdGUgc2VydmVyIGFkbWluIEFQSSB0byBiZWNvbWUgYXZhaWxhYmxlLi4uJ1wiLFxuICAgICAgXCJIRUFMVEhfQ0hFQ0tfVVJMPSdodHRwOi8vbG9jYWxob3N0OjkwNzAvaGVhbHRoJ1wiLFxuICAgICAgXCJNQVhfQVRURU1QVFM9NjBcIixcbiAgICAgIFwiQVRURU1QVD0wXCIsXG4gICAgICBcIlwiLFxuICAgICAgXCJ3aGlsZSBbICRBVFRFTVBUIC1sdCAkTUFYX0FUVEVNUFRTIF07IGRvXCIsXG4gICAgICBcIiAgaWYgY3VybCAtZiAtcyAkSEVBTFRIX0NIRUNLX1VSTCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuXCIsXG4gICAgICBcIiAgICBlY2hvICdIZWFsdGggY2hlY2sgcGFzc2VkIC0gUmVzdGF0ZSBzZXJ2ZXIgaXMgaGVhbHRoeSdcIixcbiAgICAgIFwiICAgIGJyZWFrXCIsXG4gICAgICBcIiAgZmlcIixcbiAgICAgIFwiICBBVFRFTVBUPSQoKEFUVEVNUFQgKyAxKSlcIixcbiAgICAgICcgIGVjaG8gXCJIZWFsdGggY2hlY2sgYXR0ZW1wdCAkQVRURU1QVC8kTUFYX0FUVEVNUFRTIGZhaWxlZCwgcmV0cnlpbmcgaW4gNSBzZWNvbmRzLi4uXCInLFxuICAgICAgXCIgIHNsZWVwIDVcIixcbiAgICAgIFwiZG9uZVwiLFxuICAgICAgXCJcIixcbiAgICAgIFwiaWYgWyAkQVRURU1QVCAtZXEgJE1BWF9BVFRFTVBUUyBdOyB0aGVuXCIsXG4gICAgICAnICBlY2hvIFwiSGVhbHRoIGNoZWNrIGZhaWxlZCBhZnRlciAkTUFYX0FUVEVNUFRTIGF0dGVtcHRzXCInLFxuICAgICAgYCAgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMSAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICAgIFwiICBleGl0IDFcIixcbiAgICAgIFwiZmlcIixcbiAgICAgIFwiXCIsXG4gICAgICBgL29wdC9hd3MvYmluL2Nmbi1zaWduYWwgLWUgMCAtLXN0YWNrICR7Y2RrLlN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZX0gLS1yZXNvdXJjZSAke2luc3RhbmNlTG9naWNhbElkfSAtLXJlZ2lvbiAke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259YCxcbiAgICApO1xuXG4gICAgLy8gQWRkIENyZWF0aW9uUG9saWN5IHRvIHdhaXQgZm9yIGNmbi1zaWduYWxcbiAgICBjZm5JbnN0YW5jZS5jZm5PcHRpb25zLmNyZWF0aW9uUG9saWN5ID0ge1xuICAgICAgcmVzb3VyY2VTaWduYWw6IHtcbiAgICAgICAgdGltZW91dDogXCJQVDEwTVwiLCAvLyAxMCBtaW51dGVzIHRpbWVvdXRcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmluc3RhbmNlID0gcmVzdGF0ZUluc3RhbmNlO1xuXG4gICAgLy8gV2Ugc3RhcnQgdGhlIEFET1QgY29sbGVjdG9yIHJlZ2FyZGxlc3MsIGFuZCBjb250cm9sIHdoZXRoZXIgdHJhY2VzIHdpbGwgYmUgZXhwb3J0ZWQgdG8gWC1SYXkgdXNpbmcgaW5zdGFuY2Ugcm9sZVxuICAgIC8vIHBlcm1pc3Npb25zLiBUaGlzIHdheSBoaXN0b3JpYyB0cmFjZXMgd2lsbCBiZSBidWZmZXJlZCBvbiB0aGUgaG9zdCwgZXZlbiBpZiB0cmFjaW5nIGlzIGRpc2FibGVkIGluaXRpYWxseS5cbiAgICBpZiAocHJvcHMudHJhY2luZyA9PT0gVHJhY2luZ01vZGUuQVdTX1hSQVkpIHtcbiAgICAgIHJlc3RhdGVJbnN0YW5jZS5yb2xlLmFkZE1hbmFnZWRQb2xpY3koaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQVdTWHJheVdyaXRlT25seUFjY2Vzc1wiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5ncmVzc1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAodGhpcywgXCJJbmdyZXNzU2VjdXJpdHlHcm91cFwiLCB7XG4gICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IFwiUmVzdGF0ZSBJbmdyZXNzIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChpbmdyZXNzU2VjdXJpdHlHcm91cCk7XG4gICAgY29uc3QgYWRtaW5TZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIFwiQWRtaW5TZWN1cml0eUdyb3VwXCIsIHtcbiAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICBkZXNjcmlwdGlvbjogXCJSZXN0YXRlIEFkbWluIEFDTHNcIixcbiAgICB9KTtcbiAgICByZXN0YXRlSW5zdGFuY2UuYWRkU2VjdXJpdHlHcm91cChhZG1pblNlY3VyaXR5R3JvdXApO1xuXG4gICAgdGhpcy5pbmdyZXNzUG9ydCA9IHRoaXMudGxzRW5hYmxlZCA/IFJFU1RBVEVfVExTX0lOR1JFU1NfUE9SVCA6IFJFU1RBVEVfSU5HUkVTU19QT1JUO1xuICAgIHRoaXMuYWRtaW5Qb3J0ID0gdGhpcy50bHNFbmFibGVkID8gUkVTVEFURV9UTFNfQURNSU5fUE9SVCA6IFJFU1RBVEVfQURNSU5fUE9SVDtcblxuICAgIGluZ3Jlc3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKFxuICAgICAgKHByb3BzLnB1YmxpY0luZ3Jlc3MgPz8gZmFsc2UpID8gZWMyLlBlZXIuYW55SXB2NCgpIDogaW5ncmVzc1NlY3VyaXR5R3JvdXAsXG4gICAgICBlYzIuUG9ydC50Y3AodGhpcy5pbmdyZXNzUG9ydCksXG4gICAgICBcIlJlc3RhdGUgaW5ncmVzc1wiLFxuICAgICk7XG4gICAgYWRtaW5TZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFkbWluU2VjdXJpdHlHcm91cCwgZWMyLlBvcnQudGNwKHRoaXMuYWRtaW5Qb3J0KSwgXCJSZXN0YXRlIGFkbWluXCIpO1xuXG4gICAgY29uc3QgcHJvdG9jb2wgPSB0aGlzLnRsc0VuYWJsZWQgPyBcImh0dHBzXCIgOiBcImh0dHBcIjtcbiAgICBjb25zdCBob3N0bmFtZSA9XG4gICAgICBwcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0VHlwZSAhPT0gZWMyLlN1Ym5ldFR5cGUuUFVCTElDXG4gICAgICAgID8gYCR7cmVzdGF0ZUluc3RhbmNlLmluc3RhbmNlUHJpdmF0ZURuc05hbWV9YFxuICAgICAgICA6IGAke3Jlc3RhdGVJbnN0YW5jZS5pbnN0YW5jZVB1YmxpY0Ruc05hbWV9YDtcbiAgICB0aGlzLmluZ3Jlc3NVcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfWAgKyAodGhpcy5pbmdyZXNzUG9ydCA9PT0gNDQzID8gXCJcIiA6IGA6JHt0aGlzLmluZ3Jlc3NQb3J0fWApO1xuICAgIHRoaXMuYWRtaW5VcmwgPSBgJHtwcm90b2NvbH06Ly8ke2hvc3RuYW1lfToke3RoaXMuYWRtaW5Qb3J0fWA7XG5cbiAgICB0aGlzLmluZ3Jlc3NTZWN1cml0eUdyb3VwID0gaW5ncmVzc1NlY3VyaXR5R3JvdXA7XG4gICAgdGhpcy5hZG1pblNlY3VyaXR5R3JvdXAgPSBhZG1pblNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzdGF0ZUNvbmZpZyhpZDogc3RyaW5nLCBwcm9wczogU2luZ2xlTm9kZVJlc3RhdGVQcm9wcykge1xuICAgIHJldHVybiAoXG4gICAgICBwcm9wcy5yZXN0YXRlQ29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgYHJvbGVzID0gW2AsXG4gICAgICAgIGAgICAgXCJ3b3JrZXJcIixgLFxuICAgICAgICBgICAgIFwiYWRtaW5cIixgLFxuICAgICAgICBgICAgIFwibWV0YWRhdGEtc2VydmVyXCIsYCxcbiAgICAgICAgYCAgICBcImxvZy1zZXJ2ZXJcIixgLFxuICAgICAgICBgICAgIFwiaHR0cC1pbmdyZXNzXCIsYCxcbiAgICAgICAgYF1gLFxuICAgICAgICBgbm9kZS1uYW1lID0gXCJyZXN0YXRlLTBcImAsXG4gICAgICAgIGBjbHVzdGVyLW5hbWUgPSBcIiR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uY2x1c3Rlck5hbWUgPz8gaWR9XCJgLFxuICAgICAgICBgZGVmYXVsdC1udW0tcGFydGl0aW9ucyA9ICR7cHJvcHMucmVzdGF0ZUNvbmZpZz8uYm9vdHN0cmFwTnVtUGFydGl0aW9ucyA/PyA0fWAsXG4gICAgICAgIGByb2Nrc2RiLXRvdGFsLW1lbW9yeS1zaXplID0gXCIke3Byb3BzLnJlc3RhdGVDb25maWc/LnJvY2tzZGI/LnRvdGFsTWVtb3J5U2l6ZT8udG9NZWJpYnl0ZXMoKSA/PyA1MTIuMCArIFwiIE1CXCJ9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbl1gLFxuICAgICAgICBgYmluZC1hZGRyZXNzID0gXCIke3RoaXMudGxzRW5hYmxlZCA/IFwiMTI3LjAuMC4xXCIgOiBcIjAuMC4wLjBcIn06JHtSRVNUQVRFX0FETUlOX1BPUlR9XCJgLFxuICAgICAgICBgYCxcbiAgICAgICAgYFthZG1pbi5xdWVyeS1lbmdpbmVdYCxcbiAgICAgICAgYG1lbW9yeS1zaXplID0gXCIyNTYuMCBNaUJcImAsXG4gICAgICAgIGBgLFxuICAgICAgICBgW2luZ3Jlc3NdYCxcbiAgICAgICAgYGJpbmQtYWRkcmVzcyA9IFwiJHt0aGlzLnRsc0VuYWJsZWQgPyBcIjEyNy4wLjAuMVwiIDogXCIwLjAuMC4wXCJ9OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9XCJgLFxuICAgICAgXS5qb2luKFwiXFxuXCIpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtb3VudERhdGFWb2x1bWVTY3JpcHQoKSB7XG4gICAgcmV0dXJuIGBcbmlmIG1vdW50IHwgZ3JlcCAtcXMgJy92YXIvcmVzdGF0ZSc7IHRoZW5cbiAgZWNobyBcIi92YXIvcmVzdGF0ZSBpcyBtb3VudGVkXCJcbmVsc2VcbiAgaWYgWyAtZCAvdmFyL3Jlc3RhdGUgXTsgdGhlblxuICAgIGlmIFsgXCIkKGxzIC1BIC92YXIvcmVzdGF0ZSlcIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRGF0YSBleGlzdHMgaW4gL3Zhci9yZXN0YXRlIHRoYXQgaXMgbm90IG9uIGRhdGEgdm9sdW1lOyByZWZ1c2luZyB0byBvdmVyd3JpdGUhXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG4gIGVsc2VcbiAgICBta2RpciAvdmFyL3Jlc3RhdGVcbiAgZmlcbiAgaWYgZmlsZSAtc0wgJHtEQVRBX0RFVklDRV9OQU1FfSB8IGdyZXAgLXEgJzogZGF0YSQnOyB0aGVuXG4gICAgbWtmcyAtdCB4ZnMgJHtEQVRBX0RFVklDRV9OQU1FfVxuICBmaVxuICBtb3VudCAke0RBVEFfREVWSUNFX05BTUV9IC92YXIvcmVzdGF0ZVxuICBpZiAhIGdyZXAgLXFzICcvdmFyL3Jlc3RhdGUnIC9ldGMvZnN0YWI7IHRoZW5cbiAgICBlY2hvIFwiJHtEQVRBX0RFVklDRV9OQU1FfSAvdmFyL3Jlc3RhdGUgeGZzIGRlZmF1bHRzIDAgMFwiID4+IC9ldGMvZnN0YWJcbiAgICBlY2hvIFwiQWRkZWQgZW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gdG8gL2V0Yy9mc3RhYlwiXG4gIGVsc2VcbiAgICBlY2hvIFwiRW50cnkgZm9yICR7REFUQV9ERVZJQ0VfTkFNRX0gYWxyZWFkeSBleGlzdHMgaW4gL2V0Yy9mc3RhYlwiXG4gIGZpXG5maVxuYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcHJvcHMgY29uc3RydWN0IHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgbmdpbnggY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGluZ3Jlc3MgcmV2ZXJzZSBwcm94eSwgZm9ybWF0dGVkIGFzIGEgbXVsdGktbGluZSBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBpbmdyZXNzTmdpbnhDb25maWcocHJvcHM6IFNpbmdsZU5vZGVSZXN0YXRlUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcHJvcHMuaW5ncmVzc05naW54Q29uZmlnT3ZlcnJpZGUgPz9cbiAgICAgIFtcbiAgICAgICAgXCJzZXJ2ZXIge1wiLFxuICAgICAgICBgICBsaXN0ZW4gJHtSRVNUQVRFX1RMU19JTkdSRVNTX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0lOR1JFU1NfUE9SVH0gc3NsIGh0dHAyO2AsXG4gICAgICAgIFwiICBzZXJ2ZXJfbmFtZSBfO1wiLFxuICAgICAgICBcIiAgcm9vdCAvdXNyL3NoYXJlL25naW54L2h0bWw7XCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZSBcIi9ldGMvcGtpL3ByaXZhdGUvcmVzdGF0ZS1zZWxmc2lnbmVkLmNydFwiOycsXG4gICAgICAgICcgIHNzbF9jZXJ0aWZpY2F0ZV9rZXkgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5rZXlcIjsnLFxuICAgICAgICBcIiAgc3NsX3Nlc3Npb25fY2FjaGUgc2hhcmVkOlNTTDoxbTtcIixcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX3RpbWVvdXQgMTBtO1wiLFxuICAgICAgICBcIiAgc3NsX2NpcGhlcnMgUFJPRklMRT1TWVNURU07XCIsXG4gICAgICAgIFwiICBzc2xfcHJlZmVyX3NlcnZlcl9jaXBoZXJzIG9uO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcIiAgbG9jYXRpb24gLyB7XCIsXG4gICAgICAgIGAgICAgcHJveHlfcGFzcyBodHRwOi8vbG9jYWxob3N0OiR7UkVTVEFURV9JTkdSRVNTX1BPUlR9O2AsXG4gICAgICAgIGAgICAgcHJveHlfcmVhZF90aW1lb3V0ICR7cHJvcHMuaW5ncmVzc1Byb3h5UmVhZFRpbWVvdXQ/LnRvU2Vjb25kcygpID8/IDM2MDB9O2AsXG4gICAgICAgIFwiICB9XCIsXG4gICAgICAgIFwifVwiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBcInNlcnZlciB7XCIsXG4gICAgICAgIGAgIGxpc3RlbiAke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBgICBsaXN0ZW4gWzo6XToke1JFU1RBVEVfVExTX0FETUlOX1BPUlR9IHNzbCBodHRwMjtgLFxuICAgICAgICBcIiAgc2VydmVyX25hbWUgXztcIixcbiAgICAgICAgXCIgIHJvb3QgL3Vzci9zaGFyZS9uZ2lueC9odG1sO1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGUgXCIvZXRjL3BraS9wcml2YXRlL3Jlc3RhdGUtc2VsZnNpZ25lZC5jcnRcIjsnLFxuICAgICAgICAnICBzc2xfY2VydGlmaWNhdGVfa2V5IFwiL2V0Yy9wa2kvcHJpdmF0ZS9yZXN0YXRlLXNlbGZzaWduZWQua2V5XCI7JyxcbiAgICAgICAgXCIgIHNzbF9zZXNzaW9uX2NhY2hlIHNoYXJlZDpTU0w6MW07XCIsXG4gICAgICAgIFwiICBzc2xfc2Vzc2lvbl90aW1lb3V0IDEwbTtcIixcbiAgICAgICAgXCIgIHNzbF9jaXBoZXJzIFBST0ZJTEU9U1lTVEVNO1wiLFxuICAgICAgICBcIiAgc3NsX3ByZWZlcl9zZXJ2ZXJfY2lwaGVycyBvbjtcIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIgIGxvY2F0aW9uIC8ge1wiLFxuICAgICAgICBgICAgIHByb3h5X3Bhc3MgaHR0cDovL2xvY2FsaG9zdDoke1JFU1RBVEVfQURNSU5fUE9SVH07YCxcbiAgICAgICAgXCIgIH1cIixcbiAgICAgICAgXCJ9XCIsXG4gICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICApO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@restatedev/restate-cdk",
3
3
  "description": "Restate.dev CDK constructs",
4
- "version": "1.5.0",
4
+ "version": "1.6.0",
5
5
  "author": "Restate Developers",
6
6
  "license": "MIT",
7
7
  "email": "code@restate.dev",
@@ -23,6 +23,7 @@
23
23
  "test": "jest --config jest.config.js",
24
24
  "test:e2e": "npx tsx test/handlers/build.mts && jest --config jest.config.e2e.js",
25
25
  "lint": "npx prettier --check .",
26
+ "format": "npx prettier --write .",
26
27
  "cdk": "cdk"
27
28
  },
28
29
  "devDependencies": {
@@ -659,7 +659,7 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
659
659
  yum install -y aws-cfn-bootstrap
660
660
 
661
661
  yum install -y npm && npm install -gq
662
- @restatedev/restate@1.5 @restatedev/restatectl@1.5
662
+ @restatedev/restate@1.6 @restatedev/restatectl@1.6
663
663
 
664
664
  yum install -y docker
665
665
 
@@ -745,7 +745,7 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
745
745
  --log-driver=awslogs --log-opt awslogs-group=
746
746
  - Ref: RestateLogsFD86ECAE
747
747
  - >2-
748
- docker.restate.dev/restatedev/restate:1.5 --config-file /etc/restate/config.toml
748
+ docker.restate.dev/restatedev/restate:1.6 --config-file /etc/restate/config.toml
749
749
  yum install -y nginx
750
750
 
751
751
  mkdir -p /etc/pki/private
@@ -1049,7 +1049,7 @@ exports[`Restate constructs Create a self-hosted Restate environment deployed on
1049
1049
  yum install -y aws-cfn-bootstrap
1050
1050
 
1051
1051
  yum install -y npm && npm install -gq
1052
- @restatedev/restate@1.5 @restatedev/restatectl@1.5
1052
+ @restatedev/restate@1.6 @restatedev/restatectl@1.6
1053
1053
 
1054
1054
  yum install -y docker
1055
1055
 
@@ -1,42 +0,0 @@
1
- name: Publish snapshot to NPM
2
-
3
- on:
4
- push:
5
- branches: [main]
6
-
7
- jobs:
8
- build:
9
- # prevent from running on forks
10
- if: github.repository_owner == 'restatedev'
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - uses: actions/checkout@v4
15
- - uses: actions/setup-node@v4
16
- with:
17
- node-version: "22.x"
18
- registry-url: "https://registry.npmjs.org"
19
- - run: npm ci
20
- - run: npm run build
21
- - run: npm run test
22
- - run: mv $(npm pack) restatedev-restate-cdk.tgz
23
- - uses: actions/upload-artifact@v4
24
- with:
25
- name: restatedev-restate-cdk
26
- path: restatedev-restate-cdk.tgz
27
- retention-days: 1
28
- if-no-files-found: error
29
-
30
- - name: Publish snapshot
31
- if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
32
- env:
33
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
34
- run: |
35
- # We're using 0.0.0 to avoid this version to be higher than released versions.
36
- # To use it:
37
- # "@restatedev/restate-cdk": "^0.0.0-SNAPSHOT"
38
- npm version 0.0.0-SNAPSHOT-$(date '+%Y%m%d%H%M%S') --git-tag-version false
39
- # We use dist-tag dev for the snapshot releases, see https://docs.npmjs.com/cli/v9/commands/npm-dist-tag for more info
40
- # A snapshot MUST not be published with latest tag (omitting --tag defaults to latest) to avoid users to install snapshot releases
41
- # when using npm install
42
- npm publish --tag dev --access public
@@ -1,59 +0,0 @@
1
- name: Publish release to NPM
2
-
3
- on:
4
- release:
5
- types: [published]
6
-
7
- jobs:
8
- build:
9
- # prevent from running on forks
10
- if: github.repository_owner == 'restatedev'
11
- runs-on: ubuntu-latest
12
-
13
- permissions:
14
- contents: write
15
- packages: write
16
-
17
- steps:
18
- - uses: actions/checkout@v4
19
- - uses: actions/setup-node@v4
20
- with:
21
- node-version: "22.x"
22
- registry-url: "https://registry.npmjs.org"
23
-
24
- - run: npm ci
25
-
26
- - name: Extract tag version
27
- # expected tag format is vX.Y.Z
28
- run: |
29
- echo "Full GITHUB_REF: ${GITHUB_REF}"
30
- TAG_VERSION=${GITHUB_REF#refs/tags/v}
31
- if [ -z "$TAG_VERSION" ]; then
32
- echo "Error: TAG_VERSION is empty. Exiting."
33
- exit 1
34
- fi
35
- echo "Extracted TAG_VERSION: $TAG_VERSION"
36
- echo "TAG_VERSION=$TAG_VERSION" >> $GITHUB_ENV
37
-
38
- - name: Update package version
39
- run: npm version $TAG_VERSION --no-git-tag-version
40
-
41
- - name: Commit and push
42
- run: |
43
- git config --global user.name "github-actions[bot]"
44
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
45
- git commit -am "Release ${TAG_VERSION}"
46
- git push origin HEAD:main
47
- env:
48
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49
-
50
- - run: npm run build
51
- - run: npm run test
52
- - run: |
53
- if [[ ${{ github.event.release.prerelease }} == true ]]; then
54
- npm publish --tag next --access public
55
- else
56
- npm publish --tag latest --access public
57
- fi
58
- env:
59
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}