@bluedynamics/cdk8s-plone 0.1.41 → 0.1.43
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.
- package/.jsii +30 -22
- package/API.md +21 -9
- package/CLAUDE.md +1 -1
- package/README.md +4 -4
- package/documentation/sources/explanation/architecture.md +7 -6
- package/documentation/sources/explanation/features.md +9 -7
- package/documentation/sources/how-to/{deploy-classic-ui.md → deploy-blicca.md} +43 -39
- package/documentation/sources/how-to/deploy-production-volto.md +1 -1
- package/documentation/sources/how-to/index.md +1 -1
- package/documentation/sources/reference/api/index.md +1 -1
- package/documentation/sources/reference/configuration-options.md +16 -10
- package/documentation/sources/tutorials/01-quick-start.md +1 -1
- package/examples/{classic-ui → blicca}/README.md +24 -25
- package/examples/{classic-ui → blicca}/__snapshots__/main.test.ts.snap +3 -3
- package/examples/{classic-ui → blicca}/config/varnish.tpl.vcl +1 -1
- package/examples/{classic-ui → blicca}/main.test.ts +3 -3
- package/examples/{classic-ui → blicca}/main.ts +6 -6
- package/examples/{classic-ui → blicca}/package.json +2 -2
- package/lib/deployment.js +36 -3
- package/lib/httpcache.js +42 -6
- package/lib/imports/k8s.js +1075 -1073
- package/lib/imports/monitoring.coreos.com.js +10 -8
- package/lib/imports/vinyl.bluedynamics.eu.js +11 -8
- package/lib/pdb.js +35 -2
- package/lib/plone.d.ts +13 -5
- package/lib/plone.js +66 -9
- package/lib/service.js +44 -2
- package/lib/vinylcache.js +42 -6
- package/package.json +10 -12
- /package/examples/{classic-ui → blicca}/.env.example +0 -0
- /package/examples/{classic-ui → blicca}/cdk8s.yaml +0 -0
- /package/examples/{classic-ui → blicca}/ingress.ts +0 -0
- /package/examples/{classic-ui → blicca}/jest.config.js +0 -0
- /package/examples/{classic-ui → blicca}/postgres.bitnami.ts +0 -0
- /package/examples/{classic-ui → blicca}/postgres.cloudnativepg.ts +0 -0
|
@@ -16,13 +16,13 @@ Complete reference for all configuration options in cdk8s-plone.
|
|
|
16
16
|
### `Plone`
|
|
17
17
|
|
|
18
18
|
Main construct for deploying Plone CMS. Supports two variants:
|
|
19
|
-
- **VOLTO**:
|
|
20
|
-
- **
|
|
19
|
+
- **VOLTO**: React single-page frontend talking to the REST API backend (default)
|
|
20
|
+
- **BLICCA**: the Plone backend renders the UI server-side and serves HTML directly
|
|
21
21
|
|
|
22
22
|
**Properties:**
|
|
23
23
|
- `backendServiceName` - Name of the backend Kubernetes service
|
|
24
24
|
- `frontendServiceName` - Name of the frontend service (VOLTO only)
|
|
25
|
-
- `variant` - Deployment variant (VOLTO or
|
|
25
|
+
- `variant` - Deployment variant (VOLTO or BLICCA)
|
|
26
26
|
- `siteId` - Plone site ID in ZODB (default: 'Plone')
|
|
27
27
|
|
|
28
28
|
**Example:**
|
|
@@ -75,7 +75,7 @@ Main configuration interface for the Plone construct.
|
|
|
75
75
|
|----------|------|----------|---------|-------------|
|
|
76
76
|
| `version` | `string` | No | - | Version of your project |
|
|
77
77
|
| `siteId` | `string` | No | `'Plone'` | Plone site ID in ZODB |
|
|
78
|
-
| `variant` | `PloneVariant` | No | `VOLTO` | Deployment variant (VOLTO or
|
|
78
|
+
| `variant` | `PloneVariant` | No | `VOLTO` | Deployment variant (VOLTO or BLICCA) |
|
|
79
79
|
| `backend` | `PloneBaseOptions` | Yes | - | Backend configuration |
|
|
80
80
|
| `frontend` | `PloneBaseOptions` | Conditional | - | Frontend configuration (required for VOLTO) |
|
|
81
81
|
| `imagePullSecrets` | `string[]` | No | - | Image pull secrets for private registries |
|
|
@@ -581,18 +581,24 @@ Defines the deployment variant:
|
|
|
581
581
|
|
|
582
582
|
| Value | Description |
|
|
583
583
|
|-------|-------------|
|
|
584
|
-
| `PloneVariant.VOLTO` |
|
|
585
|
-
| `PloneVariant.
|
|
584
|
+
| `PloneVariant.VOLTO` | React single-page frontend talking to the REST API backend (default) |
|
|
585
|
+
| `PloneVariant.BLICCA` | The Plone backend renders the UI server-side and serves HTML directly |
|
|
586
|
+
| `PloneVariant.CLASSICUI` | Deprecated alias for `PloneVariant.BLICCA`, kept for backward compatibility |
|
|
587
|
+
|
|
588
|
+
`BLICCA` is the new name for the former `CLASSICUI` variant.
|
|
589
|
+
Both select the same backend-only deployment.
|
|
590
|
+
`CLASSICUI` keeps its legacy value (`'classicui'`), so existing configuration using `CLASSICUI` or that literal keeps working unchanged.
|
|
591
|
+
The `CLASSICUI` alias will be removed in a future major release.
|
|
586
592
|
|
|
587
593
|
**Example:**
|
|
588
594
|
```typescript
|
|
589
595
|
import { PloneVariant } from '@bluedynamics/cdk8s-plone';
|
|
590
596
|
|
|
591
|
-
// Volto (
|
|
597
|
+
// Volto (React single-page frontend)
|
|
592
598
|
variant: PloneVariant.VOLTO
|
|
593
599
|
|
|
594
|
-
//
|
|
595
|
-
variant: PloneVariant.
|
|
600
|
+
// Blicca (server-side rendered)
|
|
601
|
+
variant: PloneVariant.BLICCA
|
|
596
602
|
```
|
|
597
603
|
|
|
598
604
|
---
|
|
@@ -663,7 +669,7 @@ app.synth();
|
|
|
663
669
|
|
|
664
670
|
- {doc}`/tutorials/01-quick-start` — Get started guide
|
|
665
671
|
- {doc}`/how-to/deploy-production-volto` — Production-ready Volto deployment
|
|
666
|
-
- {doc}`/how-to/deploy-
|
|
672
|
+
- {doc}`/how-to/deploy-blicca` — Blicca deployment
|
|
667
673
|
- {doc}`/how-to/deploy-with-vinyl-cache` — `PloneVinylCache` walk-through
|
|
668
674
|
- {doc}`/how-to/enable-prometheus-monitoring` — Wire up `ServiceMonitor`
|
|
669
675
|
- {doc}`/how-to/configure-security-context` — Harden backend and frontend pods
|
|
@@ -147,7 +147,7 @@ Now that you have a basic Plone deployment:
|
|
|
147
147
|
|
|
148
148
|
- **Configure resources**: See {doc}`/reference/configuration-options` for CPU and memory options.
|
|
149
149
|
- **Add monitoring**: Follow {doc}`/how-to/enable-prometheus-monitoring`.
|
|
150
|
-
- **Explore variants**: Read about Volto and
|
|
150
|
+
- **Explore variants**: Read about Volto and Blicca in {doc}`/explanation/features`.
|
|
151
151
|
- **Harden pods**: Apply {doc}`/how-to/configure-security-context`.
|
|
152
152
|
|
|
153
153
|
## Troubleshooting
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Blicca Example
|
|
2
2
|
|
|
3
|
-
This example demonstrates a **production-ready Plone
|
|
3
|
+
This example demonstrates a **production-ready Plone Blicca deployment** using the [@bluedynamics/cdk8s-plone](https://www.npmjs.com/package/@bluedynamics/cdk8s-plone) TypeScript package.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **Note:** Blicca is the new name for what was formerly called Plone "Classic UI".
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## What is Plone Blicca?
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Blicca is the server-side rendered UI of Plone CMS: the Plone backend renders the HTML and serves it directly. Unlike Volto (a separate React single-page frontend talking to the REST API), Blicca needs no separate frontend service:
|
|
10
|
+
|
|
11
|
+
- **Server-side rendering** - All pages rendered by Plone/Zope
|
|
10
12
|
- **Simpler architecture** - Single backend service (no separate frontend)
|
|
11
|
-
- **Familiar interface** - Classic Plone user interface many users know
|
|
12
13
|
- **Full Plone features** - Complete access to all Plone functionality
|
|
13
14
|
|
|
14
|
-
**When to use
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- Projects requiring specific
|
|
18
|
-
- Environments where simpler deployment is preferred
|
|
15
|
+
**When to use Blicca:**
|
|
16
|
+
- You want a single backend service without a separate frontend deployment
|
|
17
|
+
- Migration from older Plone versions (keeping the familiar server-rendered UX)
|
|
18
|
+
- Projects requiring Blicca-specific add-ons
|
|
19
19
|
|
|
20
|
-
**When to use Volto instead:** See the [production-volto](../production-volto/) example for
|
|
20
|
+
**When to use Volto instead:** See the [production-volto](../production-volto/) example for the React single-page frontend approach.
|
|
21
21
|
|
|
22
22
|
## Features
|
|
23
23
|
|
|
24
24
|
This example includes:
|
|
25
25
|
|
|
26
|
-
- **Plone 6.1 with
|
|
26
|
+
- **Plone 6.1 with Blicca** (server-side rendering)
|
|
27
27
|
- **PostgreSQL with RelStorage** - Choose between:
|
|
28
28
|
- [CloudNativePG](https://cloudnative-pg.io/) (CNCF project, production-ready with HA)
|
|
29
29
|
- [Bitnami PostgreSQL](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) Helm chart (simple, for dev/testing)
|
|
@@ -115,30 +115,29 @@ DATABASE=cloudnativepg
|
|
|
115
115
|
npm run synth
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
This generates `dist/plone-
|
|
118
|
+
This generates `dist/plone-blicca.k8s.yaml` with all Kubernetes resources.
|
|
119
119
|
|
|
120
120
|
### 4. Deploy to Kubernetes
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
kubectl apply -f dist/plone-
|
|
123
|
+
kubectl apply -f dist/plone-blicca.k8s.yaml
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
Or deploy to a specific namespace:
|
|
127
127
|
```bash
|
|
128
|
-
kubectl apply -f dist/plone-
|
|
128
|
+
kubectl apply -f dist/plone-blicca.k8s.yaml -n plone
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
##
|
|
131
|
+
## Blicca vs Volto
|
|
132
132
|
|
|
133
|
-
| Feature |
|
|
133
|
+
| Feature | Blicca | Volto |
|
|
134
134
|
|---------|-----------|-------|
|
|
135
135
|
| **Architecture** | Single backend service | Separate frontend + backend |
|
|
136
136
|
| **Rendering** | Server-side (Zope) | Client-side (React) |
|
|
137
137
|
| **Performance** | Good with caching | Excellent (SPA) |
|
|
138
|
-
| **UX** | Traditional | Modern |
|
|
139
138
|
| **Deployment** | Simpler | More complex |
|
|
140
|
-
| **Add-ons** | Full
|
|
141
|
-
| **Best for** |
|
|
139
|
+
| **Add-ons** | Full Blicca support | Volto-specific needed |
|
|
140
|
+
| **Best for** | Single-service setups, migrations | API-first projects, SPA frontends |
|
|
142
141
|
|
|
143
142
|
## Architecture
|
|
144
143
|
|
|
@@ -157,7 +156,7 @@ kubectl apply -f dist/plone-classic.k8s.yaml -n plone
|
|
|
157
156
|
│ │
|
|
158
157
|
┌─────────▼─────────┐ ┌─────────▼─────────┐
|
|
159
158
|
│ HTTP Cache │ │ Plone Backend │
|
|
160
|
-
│ (Varnish) │ │ (
|
|
159
|
+
│ (Varnish) │ │ (Blicca) │
|
|
161
160
|
└─────────┬─────────┘ │ │
|
|
162
161
|
│ └─────────┬─────────┘
|
|
163
162
|
│ │
|
|
@@ -255,7 +254,7 @@ Edit [ingress.ts](ingress.ts) to:
|
|
|
255
254
|
|
|
256
255
|
## Accessing Your Plone Site
|
|
257
256
|
|
|
258
|
-
After deployment, you can access your Plone
|
|
257
|
+
After deployment, you can access your Plone Blicca site at:
|
|
259
258
|
|
|
260
259
|
- **Cached (public)**: https://plone.example.com (via Varnish)
|
|
261
260
|
- **Uncached (testing)**: https://plone-test.example.com (direct to backend)
|
|
@@ -319,7 +318,7 @@ kubectl get secret -l app.kubernetes.io/part-of=plone
|
|
|
319
318
|
kubectl get all -l app.kubernetes.io/part-of=plone
|
|
320
319
|
```
|
|
321
320
|
|
|
322
|
-
## Migrating from
|
|
321
|
+
## Migrating from Blicca to Volto
|
|
323
322
|
|
|
324
323
|
If you later want to migrate to Volto:
|
|
325
324
|
|
|
@@ -333,7 +332,7 @@ If you later want to migrate to Volto:
|
|
|
333
332
|
|
|
334
333
|
- [cdk8s-plone Documentation](https://bluedynamics.github.io/cdk8s-plone/)
|
|
335
334
|
- [Plone 6 Documentation](https://6.docs.plone.org/)
|
|
336
|
-
- [Plone Classic UI Guide](https://6.docs.plone.org/classic-ui/)
|
|
335
|
+
- [Plone Classic UI Guide](https://6.docs.plone.org/classic-ui/) (upstream docs; Blicca is the new name for Classic UI)
|
|
337
336
|
- [CloudNativePG Documentation](https://cloudnative-pg.io/documentation/)
|
|
338
337
|
- [CDK8S Documentation](https://cdk8s.io/)
|
|
339
338
|
- [Varnish Documentation](https://varnish-cache.org/docs/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`
|
|
3
|
+
exports[`Blicca Example Synthesizes correctly 1`] = `
|
|
4
4
|
[
|
|
5
5
|
{
|
|
6
6
|
"apiVersion": "networking.k8s.io/v1",
|
|
@@ -486,7 +486,7 @@ exports[`Classic UI Example Synthesizes correctly 1`] = `
|
|
|
486
486
|
"app.kubernetes.io/managed-by": "cdk8s-plone",
|
|
487
487
|
"app.kubernetes.io/name": "plone-backend",
|
|
488
488
|
"app.kubernetes.io/part-of": "plone",
|
|
489
|
-
"app.kubernetes.io/version": "
|
|
489
|
+
"app.kubernetes.io/version": "blicca.version",
|
|
490
490
|
},
|
|
491
491
|
},
|
|
492
492
|
"spec": {
|
|
@@ -729,7 +729,7 @@ sub vcl_recv {
|
|
|
729
729
|
# Annotate request with x-auth indicating if request is authenticated or not
|
|
730
730
|
call detect_auth;
|
|
731
731
|
|
|
732
|
-
# Routing: All traffic goes to Plone backend for
|
|
732
|
+
# Routing: All traffic goes to Plone backend for Blicca
|
|
733
733
|
set req.backend_hint = lbPloneBackend.backend();
|
|
734
734
|
|
|
735
735
|
# short cut authenticated requests to pass
|
|
@@ -58,7 +58,7 @@ sub vcl_recv {
|
|
|
58
58
|
# Annotate request with x-auth indicating if request is authenticated or not
|
|
59
59
|
call detect_auth;
|
|
60
60
|
|
|
61
|
-
# Routing: All traffic goes to Plone backend for
|
|
61
|
+
# Routing: All traffic goes to Plone backend for Blicca
|
|
62
62
|
set req.backend_hint = lbPloneBackend.backend();
|
|
63
63
|
|
|
64
64
|
# short cut authenticated requests to pass
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BliccaChart } from './main';
|
|
2
2
|
import { Testing } from 'cdk8s';
|
|
3
3
|
|
|
4
|
-
describe('
|
|
4
|
+
describe('Blicca Example', () => {
|
|
5
5
|
test('Synthesizes correctly', () => {
|
|
6
6
|
const app = Testing.app();
|
|
7
|
-
const chart = new
|
|
7
|
+
const chart = new BliccaChart(app, 'test-chart');
|
|
8
8
|
const results = Testing.synth(chart);
|
|
9
9
|
expect(results).toMatchSnapshot();
|
|
10
10
|
});
|
|
@@ -9,7 +9,7 @@ import { PGBitnamiChart } from './postgres.bitnami';
|
|
|
9
9
|
import { PGCloudNativePGChart } from './postgres.cloudnativepg';
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
export class
|
|
12
|
+
export class BliccaChart extends Chart {
|
|
13
13
|
constructor(scope: Construct, id: string, props: ChartProps = {}) {
|
|
14
14
|
super(scope, id, props);
|
|
15
15
|
|
|
@@ -36,7 +36,7 @@ export class ClassicUIChart extends Chart {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
// ================================================================================================================
|
|
39
|
-
// Plone
|
|
39
|
+
// Plone Blicca
|
|
40
40
|
|
|
41
41
|
// prepare the environment variables for the plone deployment
|
|
42
42
|
const dbMDName = db.dbServiceName
|
|
@@ -55,10 +55,10 @@ export class ClassicUIChart extends Chart {
|
|
|
55
55
|
},
|
|
56
56
|
);
|
|
57
57
|
|
|
58
|
-
// create the plone deployment with
|
|
58
|
+
// create the plone deployment with Blicca variant
|
|
59
59
|
const plone = new Plone(this, 'plone', {
|
|
60
|
-
version: '
|
|
61
|
-
variant: PloneVariant.
|
|
60
|
+
version: 'blicca.version',
|
|
61
|
+
variant: PloneVariant.BLICCA,
|
|
62
62
|
backend: {
|
|
63
63
|
image: process.env.PLONE_BACKEND_IMAGE ?? 'plone/plone-backend:6.1.3',
|
|
64
64
|
environment: env,
|
|
@@ -96,5 +96,5 @@ export class ClassicUIChart extends Chart {
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
const app = new App();
|
|
99
|
-
new
|
|
99
|
+
new BliccaChart(app, 'plone-blicca');
|
|
100
100
|
app.synth();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "cdk8s-plone-example-
|
|
2
|
+
"name": "cdk8s-plone-example-blicca",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "
|
|
4
|
+
"description": "Blicca Plone deployment example using cdk8s-plone",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"types": "main.ts",
|
|
7
7
|
"license": "Apache-2.0",
|
package/lib/deployment.js
CHANGED
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.PloneDeployment = void 0;
|
|
4
37
|
// import { log } from 'console';
|
|
5
38
|
const cdk8s_1 = require("cdk8s");
|
|
6
|
-
const kplus = require("cdk8s-plus-30");
|
|
39
|
+
const kplus = __importStar(require("cdk8s-plus-30"));
|
|
7
40
|
const constructs_1 = require("constructs");
|
|
8
|
-
const k8s = require("./imports/k8s");
|
|
41
|
+
const k8s = __importStar(require("./imports/k8s"));
|
|
9
42
|
const pdb_1 = require("./pdb");
|
|
10
43
|
/**
|
|
11
44
|
* PloneDeployment creates a Kubernetes Deployment for Plone containers.
|
|
@@ -100,4 +133,4 @@ class PloneDeployment extends constructs_1.Construct {
|
|
|
100
133
|
}
|
|
101
134
|
}
|
|
102
135
|
exports.PloneDeployment = PloneDeployment;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUFpQztBQUNqQyxpQ0FBOEI7QUFDOUIsdUNBQXVDO0FBQ3ZDLDJDQUF1QztBQUN2QyxxQ0FBcUM7QUFDckMsK0JBQWtEO0FBcUpsRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFFNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLHdCQUF3QixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLGFBQWE7WUFDaEYsNkJBQTZCLEVBQUUsWUFBWSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxHQUFHLGFBQWE7U0FDakcsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLEdBQUcsWUFBWTtZQUNmLEdBQUcsS0FBSztZQUNSLDJCQUEyQixFQUFFLE9BQU87WUFDcEMsOEJBQThCLEVBQUUsYUFBYTtTQUM5QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWMsT0FBTyxFQUFFLFdBQVcsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksR0FBRyxH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QU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDO1lBQ3JHLDRFQUE0RTtZQUM1RSxrRkFBa0Y7WUFDbEYsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLGNBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZGRCwwQ0F1RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBsb2cgfSBmcm9tICdjb25zb2xlJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0ICogYXMga3BsdXMgZnJvbSAnY2RrOHMtcGx1cy0zMCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCB7IFBsb25lUERCLCBQbG9uZVBEQk9wdGlvbnMgfSBmcm9tICcuL3BkYic7XG5cbi8qKlxuICogQ29udGFpbmVyIGltYWdlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUltYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb250YWluZXIgaW1hZ2UgbmFtZSBhbmQgdGFnLlxuICAgKiBAZXhhbXBsZSAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnXG4gICAqIEBkZWZhdWx0ICdwbG9uZS9wbG9uZS1iYWNrZW5kOmxhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lcyBvZiBLdWJlcm5ldGVzIHNlY3JldHMgZm9yIHB1bGxpbmcgcHJpdmF0ZSBpbWFnZXMuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxTZWNyZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEltYWdlIHB1bGwgcG9saWN5IChBbHdheXMsIElmTm90UHJlc2VudCwgTmV2ZXIpLlxuICAgKiBAZGVmYXVsdCAnSWZOb3RQcmVzZW50J1xuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQdWxsUG9saWN5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUGxvbmVEZXBsb3ltZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lRGVwbG95bWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0ICdwbG9uZS9wbG9uZS1iYWNrZW5kOmxhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogUGxvbmVJbWFnZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIGNkazhzLXBsdXMtMzAgRW52IHRvIGRlZmluZSB2YXJpYWJsZXMgYW5kIHNvdXJjZXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzoga3BsdXMuRW52O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcG9kIHJlcGxpY2FzIHRvIHJ1bi5cbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzEwMDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSBsaW1pdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzFHaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzIwMG0nXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgcmVxdWVzdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzMwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udGFpbmVyIHBvcnQgbnVtYmVyIHRvIGV4cG9zZS5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBLdWJlcm5ldGVzIGxhYmVscyBmb3IgdGhlIGRlcGxveW1lbnQuXG4gICAqIEBkZWZhdWx0IC0gc3RhbmRhcmQgUGxvbmUgbGFiZWxzIG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIERlcGxveW1lbnQgbWV0YWRhdGEuXG4gICAqIENvbW1vbiBhbm5vdGF0aW9ucyBpbmNsdWRlOiBkZXBsb3ltZW50IHRpbWVzdGFtcHMsIGNoYW5nZSB0cmFja2luZywgZXRjLlxuICAgKiBAZXhhbXBsZSB7ICdkZXBsb3ltZW50Lmt1YmVybmV0ZXMuaW8vcmV2aXNpb24nOiAnMScgfVxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYW5ub3RhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFubm90YXRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEFubm90YXRpb25zIHRvIGFkZCB0byB0aGUgUG9kIHRlbXBsYXRlIG1ldGFkYXRhLlxuICAgKiBDb21tb24gYW5ub3RhdGlvbnMgaW5jbHVkZTogUHJvbWV0aGV1cyBzY3JhcGluZyBjb25maWcsIElzdGlvIGNvbmZpZyxcbiAgICogYmFja3VwIHBvbGljaWVzLCBsb2dnaW5nIGNvbmZpZ3VyYXRpb25zLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ3Byb21ldGhldXMuaW8vc2NyYXBlJzogJ3RydWUnLCAncHJvbWV0aGV1cy5pby9wb3J0JzogJzgwODAnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBwb2RBbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbnRhaW5lciBzcGVjaWZpY2F0aW9uIG92ZXJyaWRlcy5cbiAgICogQWR2YW5jZWQgdXNlIG9ubHkgLSBtZXJnZXMgd2l0aCBnZW5lcmF0ZWQgY29udGFpbmVyIHNwZWMuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBwbG9uZUNvbnRhaW5lcj86IGs4cy5Db250YWluZXI7XG5cbiAgLyoqXG4gICAqIFNpZGVjYXIgY29udGFpbmVycyB0byBydW4gYWxvbmdzaWRlIHRoZSBtYWluIGNvbnRhaW5lci5cbiAgICogQGV4YW1wbGUgW3sgbmFtZTogJ2xvZy1mb3J3YXJkZXInLCBpbWFnZTogJ2ZsdWVudGQ6bGF0ZXN0JyB9XVxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZWNhcnM/OiBrOHMuQ29udGFpbmVyW107XG5cbiAgLyoqXG4gICAqIFBvZERpc3J1cHRpb25CdWRnZXQgY29uZmlndXJhdGlvbiBmb3IgaGlnaCBhdmFpbGFiaWxpdHkuXG4gICAqIElmIHByb3ZpZGVkLCBjcmVhdGVzIGEgUERCIHdpdGggdGhlIHNwZWNpZmllZCBjb25zdHJhaW50cy5cbiAgICogQGRlZmF1bHQgLSBubyBQREIgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGRiPzogUGxvbmVQREJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBOb2RlIHNlbGVjdG9yIGxhYmVscyBmb3IgcG9kIHNjaGVkdWxpbmcuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogU2VjdXJpdHkgY29udGV4dCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIHRvIHNldCBjYXBhYmlsaXRpZXMsIHJ1biBhcyBub24tcm9vdCwgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGV0Yy5cbiAgICogQGV4YW1wbGUgeyBjYXBhYmlsaXRpZXM6IHsgYWRkOiBbJ1NZU19QVFJBQ0UnXSB9IH1cbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbnRleHQ/OiBrOHMuU2VjdXJpdHlDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBMaXZlbmVzcyBwcm9iZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCAobm8gbGl2ZW5lc3MgcHJvYmUpXG4gICAqL1xuICBsaXZlbmVzc1Byb2JlPzogazhzLlByb2JlO1xuXG4gIC8qKlxuICAgKiBSZWFkaW5lc3MgcHJvYmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIHJlYWRpbmVzcyBwcm9iZSlcbiAgICovXG4gIHJlYWRpbmVzc1Byb2JlPzogazhzLlByb2JlO1xufVxuXG4vKipcbiAqIFBsb25lRGVwbG95bWVudCBjcmVhdGVzIGEgS3ViZXJuZXRlcyBEZXBsb3ltZW50IGZvciBQbG9uZSBjb250YWluZXJzLlxuICpcbiAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29uc3RydWN0IHVzZWQgYnkgdGhlIFBsb25lIGNsYXNzLlxuICogSXQgY3JlYXRlcyBhIERlcGxveW1lbnQgd2l0aCBjb25maWd1cmFibGUgcmVwbGljYXMsIHJlc291cmNlcywgcHJvYmVzLFxuICogYW5kIGFuIG9wdGlvbmFsIFBvZERpc3J1cHRpb25CdWRnZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbG9uZURlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lRGVwbG95bWVudE9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGltYWdlID0gb3B0aW9ucy5pbWFnZSA/PyB7fTtcbiAgICBjb25zdCByZXBsaWNhcyA9IG9wdGlvbnMucmVwbGljYXMgPz8gMjtcbiAgICBjb25zdCBsYWJlbCA9IHsgYXBwOiBOYW1lcy50b0xhYmVsVmFsdWUodGhpcykgfTtcbiAgICBjb25zdCBvcHRpb25MYWJlbHMgPSBvcHRpb25zLmxhYmVscyA/PyB7fTtcbiAgICBjb25zdCBkZXBsb3ltZW50TGFiZWxzID0ge1xuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiBvcHRpb25MYWJlbHNbJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnXSArICctZGVwbG95bWVudCcsXG4gICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50Jzogb3B0aW9uTGFiZWxzWydhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnXSA/PyAnJyArICctZGVwbG95bWVudCcsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZV9sYWJlbHMgPSB7XG4gICAgICAuLi5vcHRpb25MYWJlbHMsXG4gICAgICAuLi5sYWJlbCxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mJzogJ3Bsb25lJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5JzogJ2NkazhzLXBsb25lJyxcbiAgICB9O1xuICAgIGNvbnN0IGtwRW52OiBrcGx1cy5FbnYgPSBvcHRpb25zPy5lbnZpcm9ubWVudCA/PyBuZXcga3BsdXMuRW52KFtdLCB7fSk7XG4gICAgdmFyIGVudjogazhzLkVudlZhcltdID0gW107XG4gICAgZm9yIChjb25zdCBuYW1lIGluIGtwRW52LnZhcmlhYmxlcykge1xuICAgICAgZW52LnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZToga3BFbnYudmFyaWFibGVzW25hbWVdLnZhbHVlLCB2YWx1ZUZyb206IGtwRW52LnZhcmlhYmxlc1tuYW1lXS52YWx1ZUZyb20gfSk7XG4gICAgfVxuICAgIHZhciBlbnZGcm9tOiBrOHMuRW52RnJvbVNvdXJjZVtdID0gW107XG4gICAgZm9yIChjb25zdCBpZHggaW4ga3BFbnYuc291cmNlcykge1xuICAgICAgY29uc3Qgc291cmNlID0ga3BFbnYuc291cmNlc1tpZHhdO1xuICAgICAgZW52RnJvbS5wdXNoKHNvdXJjZS5fdG9LdWJlKCkpO1xuICAgIH1cbiAgICB2YXIgcGxvbmVDb250YWluZXJTcGVjOiBrOHMuQ29udGFpbmVyID0ge1xuICAgICAgbmFtZTogaWQgKyAnLWNvbnRhaW5lcicsIC8vIGhlcmUgdGhlIG5hbWVzcGFjZWQgbmFtZSBzaG9sZCBiZSB1c2VkLCBidXQgaG93P1xuICAgICAgaW1hZ2U6IGltYWdlLmltYWdlLFxuICAgICAgaW1hZ2VQdWxsUG9saWN5OiBpbWFnZS5pbWFnZVB1bGxQb2xpY3ksXG4gICAgICBlbnY6IGVudixcbiAgICAgIGVudkZyb206IGVudkZyb20sXG4gICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgY3B1OiBrOHMuUXVhbnRpdHkuZnJvbVN0cmluZyhvcHRpb25zLmxpbWl0Q3B1ID8/ICcxMDAwbScpLFxuICAgICAgICAgIG1lbW9yeTogazhzLlF1YW50aXR5LmZyb21TdHJpbmcob3B0aW9ucy5saW1pdE1lbW9yeSA/PyAnMUdpJyksXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgY3B1OiBrOHMuUXVhbnRpdHkuZnJvbVN0cmluZyhvcHRpb25zLnJlcXVlc3RDcHUgPz8gJzIwMG0nKSxcbiAgICAgICAgICBtZW1vcnk6IGs4cy5RdWFudGl0eS5mcm9tU3RyaW5nKG9wdGlvbnMucmVxdWVzdE1lbW9yeSA/PyAnMzAwTWknKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaXZlbmVzc1Byb2JlOiBvcHRpb25zLmxpdmVuZXNzUHJvYmUgPz8gdW5kZWZpbmVkLFxuICAgICAgcmVhZGluZXNzUHJvYmU6IG9wdGlvbnMucmVhZGluZXNzUHJvYmUgPz8gdW5kZWZpbmVkLFxuICAgICAgc2VjdXJpdHlDb250ZXh0OiBvcHRpb25zLnNlY3VyaXR5Q29udGV4dCxcbiAgICB9O1xuICAgIGNvbnN0IGRlcGxveW1lbnRPcHRpb25zOiBrOHMuS3ViZURlcGxveW1lbnRQcm9wcyA9IHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGxhYmVsczogZGVwbG95bWVudExhYmVscyxcbiAgICAgICAgYW5ub3RhdGlvbnM6IG9wdGlvbnMuYW5ub3RhdGlvbnMsXG4gICAgICB9LFxuICAgICAgc3BlYzoge1xuICAgICAgICByZXBsaWNhcyxcbiAgICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgICBtYXRjaExhYmVsczogbGFiZWwsXG4gICAgICAgIH0sXG4gICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIGxhYmVsczogdGVtcGxhdGVfbGFiZWxzLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IG9wdGlvbnMucG9kQW5ub3RhdGlvbnMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzcGVjOiB7XG4gICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOiAoaW1hZ2UuaW1hZ2VQdWxsU2VjcmV0cyA/PyBbXSkubWFwKChuYW1lKSA9PiAoeyBuYW1lOiBuYW1lIH0pKSxcbiAgICAgICAgICAgIG5vZGVTZWxlY3Rvcjogb3B0aW9ucy5ub2RlU2VsZWN0b3IsXG4gICAgICAgICAgICBjb250YWluZXJzOiBbXG4gICAgICAgICAgICAgIHBsb25lQ29udGFpbmVyU3BlYyxcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucy5zaWRlY2FycyA/PyBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIG5ldyBrOHMuS3ViZURlcGxveW1lbnQodGhpcywgJ2RlcGxveW1lbnQnLCBkZXBsb3ltZW50T3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wZGIgPz8gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHBkYk9wdGlvbnMgPSBvcHRpb25zLnBkYiA/PyB7fTtcbiAgICAgIGNvbnN0IHBkYkV4cGxpY2l0ID0gcGRiT3B0aW9ucy5taW5BdmFpbGFibGUgIT09IHVuZGVmaW5lZCB8fCBwZGJPcHRpb25zLm1heFVuYXZhaWxhYmxlICE9PSB1bmRlZmluZWQ7XG4gICAgICAvLyBBIFBEQiBvbiBhIHNpbmdsZS1yZXBsaWNhIGRlcGxveW1lbnQgaXMgYWx3YXlzIHVuZHJhaW5hYmxlIGFuZCBndWFyYW50ZWVzXG4gICAgICAvLyBubyBhdmFpbGFiaWxpdHkuIE9ubHkgZW1pdCBvbmUgZm9yID49MiByZXBsaWNhcywgb3Igd2hlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuXG4gICAgICBpZiAocmVwbGljYXMgPj0gMiB8fCBwZGJFeHBsaWNpdCkge1xuICAgICAgICBuZXcgUGxvbmVQREIodGhpcywgJ3BkYicsIGxhYmVsLCBwZGJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXBsb3ltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUFpQztBQUNqQyxpQ0FBOEI7QUFDOUIscURBQXVDO0FBQ3ZDLDJDQUF1QztBQUN2QyxtREFBcUM7QUFDckMsK0JBQWtEO0FBcUpsRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFFNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLHdCQUF3QixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLGFBQWE7WUFDaEYsNkJBQTZCLEVBQUUsWUFBWSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxHQUFHLGFBQWE7U0FDakcsQ0FBQztRQUNGLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLEdBQUcsWUFBWTtZQUNmLEdBQUcsS0FBSztZQUNSLDJCQUEyQixFQUFFLE9BQU87WUFDcEMsOEJBQThCLEVBQUUsYUFBYTtTQUM5QyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQWMsT0FBTyxFQUFFLFdBQVcsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFF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RUFBRSxDQUFDO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDO1lBQ3JHLDRFQUE0RTtZQUM1RSxrRkFBa0Y7WUFDbEYsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLGNBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZGRCwwQ0F1RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBsb2cgfSBmcm9tICdjb25zb2xlJztcbmltcG9ydCB7IE5hbWVzIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0ICogYXMga3BsdXMgZnJvbSAnY2RrOHMtcGx1cy0zMCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCB7IFBsb25lUERCLCBQbG9uZVBEQk9wdGlvbnMgfSBmcm9tICcuL3BkYic7XG5cbi8qKlxuICogQ29udGFpbmVyIGltYWdlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUltYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb250YWluZXIgaW1hZ2UgbmFtZSBhbmQgdGFnLlxuICAgKiBAZXhhbXBsZSAncGxvbmUvcGxvbmUtYmFja2VuZDo2LjAuMTAnXG4gICAqIEBkZWZhdWx0ICdwbG9uZS9wbG9uZS1iYWNrZW5kOmxhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lcyBvZiBLdWJlcm5ldGVzIHNlY3JldHMgZm9yIHB1bGxpbmcgcHJpdmF0ZSBpbWFnZXMuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICByZWFkb25seSBpbWFnZVB1bGxTZWNyZXRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEltYWdlIHB1bGwgcG9saWN5IChBbHdheXMsIElmTm90UHJlc2VudCwgTmV2ZXIpLlxuICAgKiBAZGVmYXVsdCAnSWZOb3RQcmVzZW50J1xuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VQdWxsUG9saWN5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUGxvbmVEZXBsb3ltZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsb25lRGVwbG95bWVudE9wdGlvbnMge1xuICAvKipcbiAgICogQ29udGFpbmVyIGltYWdlIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0ICdwbG9uZS9wbG9uZS1iYWNrZW5kOmxhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlPzogUGxvbmVJbWFnZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIGNkazhzLXBsdXMtMzAgRW52IHRvIGRlZmluZSB2YXJpYWJsZXMgYW5kIHNvdXJjZXMuXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzoga3BsdXMuRW52O1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcG9kIHJlcGxpY2FzIHRvIHJ1bi5cbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENQVSBsaW1pdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzEwMDBtJ1xuICAgKi9cbiAgcmVhZG9ubHkgbGltaXRDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSBsaW1pdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzFHaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzIwMG0nXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0Q3B1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZW1vcnkgcmVxdWVzdCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgJzMwME1pJ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdE1lbW9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udGFpbmVyIHBvcnQgbnVtYmVyIHRvIGV4cG9zZS5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBLdWJlcm5ldGVzIGxhYmVscyBmb3IgdGhlIGRlcGxveW1lbnQuXG4gICAqIEBkZWZhdWx0IC0gc3RhbmRhcmQgUGxvbmUgbGFiZWxzIG9ubHlcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBbm5vdGF0aW9ucyB0byBhZGQgdG8gdGhlIERlcGxveW1lbnQgbWV0YWRhdGEuXG4gICAqIENvbW1vbiBhbm5vdGF0aW9ucyBpbmNsdWRlOiBkZXBsb3ltZW50IHRpbWVzdGFtcHMsIGNoYW5nZSB0cmFja2luZywgZXRjLlxuICAgKiBAZXhhbXBsZSB7ICdkZXBsb3ltZW50Lmt1YmVybmV0ZXMuaW8vcmV2aXNpb24nOiAnMScgfVxuICAgKiBAZGVmYXVsdCAtIG5vIGFkZGl0aW9uYWwgYW5ub3RhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFubm90YXRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEFubm90YXRpb25zIHRvIGFkZCB0byB0aGUgUG9kIHRlbXBsYXRlIG1ldGFkYXRhLlxuICAgKiBDb21tb24gYW5ub3RhdGlvbnMgaW5jbHVkZTogUHJvbWV0aGV1cyBzY3JhcGluZyBjb25maWcsIElzdGlvIGNvbmZpZyxcbiAgICogYmFja3VwIHBvbGljaWVzLCBsb2dnaW5nIGNvbmZpZ3VyYXRpb25zLCBldGMuXG4gICAqIEBleGFtcGxlIHsgJ3Byb21ldGhldXMuaW8vc2NyYXBlJzogJ3RydWUnLCAncHJvbWV0aGV1cy5pby9wb3J0JzogJzgwODAnIH1cbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGFubm90YXRpb25zXG4gICAqL1xuICByZWFkb25seSBwb2RBbm5vdGF0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNvbnRhaW5lciBzcGVjaWZpY2F0aW9uIG92ZXJyaWRlcy5cbiAgICogQWR2YW5jZWQgdXNlIG9ubHkgLSBtZXJnZXMgd2l0aCBnZW5lcmF0ZWQgY29udGFpbmVyIHNwZWMuXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBwbG9uZUNvbnRhaW5lcj86IGs4cy5Db250YWluZXI7XG5cbiAgLyoqXG4gICAqIFNpZGVjYXIgY29udGFpbmVycyB0byBydW4gYWxvbmdzaWRlIHRoZSBtYWluIGNvbnRhaW5lci5cbiAgICogQGV4YW1wbGUgW3sgbmFtZTogJ2xvZy1mb3J3YXJkZXInLCBpbWFnZTogJ2ZsdWVudGQ6bGF0ZXN0JyB9XVxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgcmVhZG9ubHkgc2lkZWNhcnM/OiBrOHMuQ29udGFpbmVyW107XG5cbiAgLyoqXG4gICAqIFBvZERpc3J1cHRpb25CdWRnZXQgY29uZmlndXJhdGlvbiBmb3IgaGlnaCBhdmFpbGFiaWxpdHkuXG4gICAqIElmIHByb3ZpZGVkLCBjcmVhdGVzIGEgUERCIHdpdGggdGhlIHNwZWNpZmllZCBjb25zdHJhaW50cy5cbiAgICogQGRlZmF1bHQgLSBubyBQREIgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcGRiPzogUGxvbmVQREJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBOb2RlIHNlbGVjdG9yIGxhYmVscyBmb3IgcG9kIHNjaGVkdWxpbmcuXG4gICAqIEBkZWZhdWx0IC0gbm8gbm9kZSBzZWxlY3RvclxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVNlbGVjdG9yPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogU2VjdXJpdHkgY29udGV4dCBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogVXNlIHRvIHNldCBjYXBhYmlsaXRpZXMsIHJ1biBhcyBub24tcm9vdCwgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGV0Yy5cbiAgICogQGV4YW1wbGUgeyBjYXBhYmlsaXRpZXM6IHsgYWRkOiBbJ1NZU19QVFJBQ0UnXSB9IH1cbiAgICogQGRlZmF1bHQgLSBubyBzZWN1cml0eSBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUNvbnRleHQ/OiBrOHMuU2VjdXJpdHlDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBMaXZlbmVzcyBwcm9iZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIHVuZGVmaW5lZCAobm8gbGl2ZW5lc3MgcHJvYmUpXG4gICAqL1xuICBsaXZlbmVzc1Byb2JlPzogazhzLlByb2JlO1xuXG4gIC8qKlxuICAgKiBSZWFkaW5lc3MgcHJvYmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIHJlYWRpbmVzcyBwcm9iZSlcbiAgICovXG4gIHJlYWRpbmVzc1Byb2JlPzogazhzLlByb2JlO1xufVxuXG4vKipcbiAqIFBsb25lRGVwbG95bWVudCBjcmVhdGVzIGEgS3ViZXJuZXRlcyBEZXBsb3ltZW50IGZvciBQbG9uZSBjb250YWluZXJzLlxuICpcbiAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29uc3RydWN0IHVzZWQgYnkgdGhlIFBsb25lIGNsYXNzLlxuICogSXQgY3JlYXRlcyBhIERlcGxveW1lbnQgd2l0aCBjb25maWd1cmFibGUgcmVwbGljYXMsIHJlc291cmNlcywgcHJvYmVzLFxuICogYW5kIGFuIG9wdGlvbmFsIFBvZERpc3J1cHRpb25CdWRnZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbG9uZURlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lRGVwbG95bWVudE9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IGltYWdlID0gb3B0aW9ucy5pbWFnZSA/PyB7fTtcbiAgICBjb25zdCByZXBsaWNhcyA9IG9wdGlvbnMucmVwbGljYXMgPz8gMjtcbiAgICBjb25zdCBsYWJlbCA9IHsgYXBwOiBOYW1lcy50b0xhYmVsVmFsdWUodGhpcykgfTtcbiAgICBjb25zdCBvcHRpb25MYWJlbHMgPSBvcHRpb25zLmxhYmVscyA/PyB7fTtcbiAgICBjb25zdCBkZXBsb3ltZW50TGFiZWxzID0ge1xuICAgICAgJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnOiBvcHRpb25MYWJlbHNbJ2FwcC5rdWJlcm5ldGVzLmlvL25hbWUnXSArICctZGVwbG95bWVudCcsXG4gICAgICAnYXBwLmt1YmVybmV0ZXMuaW8vY29tcG9uZW50Jzogb3B0aW9uTGFiZWxzWydhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnQnXSA/PyAnJyArICctZGVwbG95bWVudCcsXG4gICAgfTtcbiAgICBjb25zdCB0ZW1wbGF0ZV9sYWJlbHMgPSB7XG4gICAgICAuLi5vcHRpb25MYWJlbHMsXG4gICAgICAuLi5sYWJlbCxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mJzogJ3Bsb25lJyxcbiAgICAgICdhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5JzogJ2NkazhzLXBsb25lJyxcbiAgICB9O1xuICAgIGNvbnN0IGtwRW52OiBrcGx1cy5FbnYgPSBvcHRpb25zPy5lbnZpcm9ubWVudCA/PyBuZXcga3BsdXMuRW52KFtdLCB7fSk7XG4gICAgdmFyIGVudjogazhzLkVudlZhcltdID0gW107XG4gICAgZm9yIChjb25zdCBuYW1lIGluIGtwRW52LnZhcmlhYmxlcykge1xuICAgICAgZW52LnB1c2goeyBuYW1lOiBuYW1lLCB2YWx1ZToga3BFbnYudmFyaWFibGVzW25hbWVdLnZhbHVlLCB2YWx1ZUZyb206IGtwRW52LnZhcmlhYmxlc1tuYW1lXS52YWx1ZUZyb20gfSk7XG4gICAgfVxuICAgIHZhciBlbnZGcm9tOiBrOHMuRW52RnJvbVNvdXJjZVtdID0gW107XG4gICAgZm9yIChjb25zdCBpZHggaW4ga3BFbnYuc291cmNlcykge1xuICAgICAgY29uc3Qgc291cmNlID0ga3BFbnYuc291cmNlc1tpZHhdO1xuICAgICAgZW52RnJvbS5wdXNoKHNvdXJjZS5fdG9LdWJlKCkpO1xuICAgIH1cbiAgICB2YXIgcGxvbmVDb250YWluZXJTcGVjOiBrOHMuQ29udGFpbmVyID0ge1xuICAgICAgbmFtZTogaWQgKyAnLWNvbnRhaW5lcicsIC8vIGhlcmUgdGhlIG5hbWVzcGFjZWQgbmFtZSBzaG9sZCBiZSB1c2VkLCBidXQgaG93P1xuICAgICAgaW1hZ2U6IGltYWdlLmltYWdlLFxuICAgICAgaW1hZ2VQdWxsUG9saWN5OiBpbWFnZS5pbWFnZVB1bGxQb2xpY3ksXG4gICAgICBlbnY6IGVudixcbiAgICAgIGVudkZyb206IGVudkZyb20sXG4gICAgICByZXNvdXJjZXM6IHtcbiAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgY3B1OiBrOHMuUXVhbnRpdHkuZnJvbVN0cmluZyhvcHRpb25zLmxpbWl0Q3B1ID8/ICcxMDAwbScpLFxuICAgICAgICAgIG1lbW9yeTogazhzLlF1YW50aXR5LmZyb21TdHJpbmcob3B0aW9ucy5saW1pdE1lbW9yeSA/PyAnMUdpJyksXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgY3B1OiBrOHMuUXVhbnRpdHkuZnJvbVN0cmluZyhvcHRpb25zLnJlcXVlc3RDcHUgPz8gJzIwMG0nKSxcbiAgICAgICAgICBtZW1vcnk6IGs4cy5RdWFudGl0eS5mcm9tU3RyaW5nKG9wdGlvbnMucmVxdWVzdE1lbW9yeSA/PyAnMzAwTWknKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaXZlbmVzc1Byb2JlOiBvcHRpb25zLmxpdmVuZXNzUHJvYmUgPz8gdW5kZWZpbmVkLFxuICAgICAgcmVhZGluZXNzUHJvYmU6IG9wdGlvbnMucmVhZGluZXNzUHJvYmUgPz8gdW5kZWZpbmVkLFxuICAgICAgc2VjdXJpdHlDb250ZXh0OiBvcHRpb25zLnNlY3VyaXR5Q29udGV4dCxcbiAgICB9O1xuICAgIGNvbnN0IGRlcGxveW1lbnRPcHRpb25zOiBrOHMuS3ViZURlcGxveW1lbnRQcm9wcyA9IHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGxhYmVsczogZGVwbG95bWVudExhYmVscyxcbiAgICAgICAgYW5ub3RhdGlvbnM6IG9wdGlvbnMuYW5ub3RhdGlvbnMsXG4gICAgICB9LFxuICAgICAgc3BlYzoge1xuICAgICAgICByZXBsaWNhcyxcbiAgICAgICAgc2VsZWN0b3I6IHtcbiAgICAgICAgICBtYXRjaExhYmVsczogbGFiZWwsXG4gICAgICAgIH0sXG4gICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIGxhYmVsczogdGVtcGxhdGVfbGFiZWxzLFxuICAgICAgICAgICAgYW5ub3RhdGlvbnM6IG9wdGlvbnMucG9kQW5ub3RhdGlvbnMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzcGVjOiB7XG4gICAgICAgICAgICBpbWFnZVB1bGxTZWNyZXRzOiAoaW1hZ2UuaW1hZ2VQdWxsU2VjcmV0cyA/PyBbXSkubWFwKChuYW1lKSA9PiAoeyBuYW1lOiBuYW1lIH0pKSxcbiAgICAgICAgICAgIG5vZGVTZWxlY3Rvcjogb3B0aW9ucy5ub2RlU2VsZWN0b3IsXG4gICAgICAgICAgICBjb250YWluZXJzOiBbXG4gICAgICAgICAgICAgIHBsb25lQ29udGFpbmVyU3BlYyxcbiAgICAgICAgICAgICAgLi4ub3B0aW9ucy5zaWRlY2FycyA/PyBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIG5ldyBrOHMuS3ViZURlcGxveW1lbnQodGhpcywgJ2RlcGxveW1lbnQnLCBkZXBsb3ltZW50T3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5wZGIgPz8gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHBkYk9wdGlvbnMgPSBvcHRpb25zLnBkYiA/PyB7fTtcbiAgICAgIGNvbnN0IHBkYkV4cGxpY2l0ID0gcGRiT3B0aW9ucy5taW5BdmFpbGFibGUgIT09IHVuZGVmaW5lZCB8fCBwZGJPcHRpb25zLm1heFVuYXZhaWxhYmxlICE9PSB1bmRlZmluZWQ7XG4gICAgICAvLyBBIFBEQiBvbiBhIHNpbmdsZS1yZXBsaWNhIGRlcGxveW1lbnQgaXMgYWx3YXlzIHVuZHJhaW5hYmxlIGFuZCBndWFyYW50ZWVzXG4gICAgICAvLyBubyBhdmFpbGFiaWxpdHkuIE9ubHkgZW1pdCBvbmUgZm9yID49MiByZXBsaWNhcywgb3Igd2hlbiBleHBsaWNpdGx5IGNvbmZpZ3VyZWQuXG4gICAgICBpZiAocmVwbGljYXMgPj0gMiB8fCBwZGJFeHBsaWNpdCkge1xuICAgICAgICBuZXcgUGxvbmVQREIodGhpcywgJ3BkYicsIGxhYmVsLCBwZGJPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/lib/httpcache.js
CHANGED
|
@@ -1,10 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.PloneHttpcache = void 0;
|
|
5
37
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const fs = require("fs");
|
|
7
|
-
const path = require("path");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
8
40
|
const cdk8s_1 = require("cdk8s");
|
|
9
41
|
const constructs_1 = require("constructs");
|
|
10
42
|
/**
|
|
@@ -24,6 +56,12 @@ const constructs_1 = require("constructs");
|
|
|
24
56
|
* });
|
|
25
57
|
*/
|
|
26
58
|
class PloneHttpcache extends constructs_1.Construct {
|
|
59
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.43" };
|
|
60
|
+
/**
|
|
61
|
+
* Name of the Varnish service created by the Helm chart.
|
|
62
|
+
* Use this to reference the cache service from ingress or other constructs.
|
|
63
|
+
*/
|
|
64
|
+
httpcacheServiceName;
|
|
27
65
|
constructor(scope, id, options) {
|
|
28
66
|
super(scope, id);
|
|
29
67
|
let varnishVcl;
|
|
@@ -117,6 +155,4 @@ class PloneHttpcache extends constructs_1.Construct {
|
|
|
117
155
|
}
|
|
118
156
|
}
|
|
119
157
|
exports.PloneHttpcache = PloneHttpcache;
|
|
120
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
121
|
-
PloneHttpcache[_a] = { fqn: "@bluedynamics/cdk8s-plone.PloneHttpcache", version: "0.1.41" };
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsaUNBQTZCO0FBQzdCLDJDQUF1QztBQXdKdkM7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFPM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBCQUEwQjtZQUNoQyxLQUFLLEVBQUUsZ0JBQWdCO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFBWTtZQUM3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QUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlRW52VmFyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLdWJlcm5ldGVzIHRvbGVyYXRpb24gZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZUh0dHBjYWNoZSAoVmFybmlzaCBjYWNoaW5nIGxheWVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIEhUVFAgY2FjaGUgdG8uXG4gICAqIFRoZSBjYWNoZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmQgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggVkNMIGNvbmZpZ3VyYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YXJuaXNoVmNsRmlsZS5cbiAgICogQGRlZmF1bHQgLSBsb2FkZWQgZnJvbSB2YXJuaXNoVmNsRmlsZSBvciBkZWZhdWx0IGNvbmZpZyBmaWxlXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgVkNMIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBkZWZhdWx0IGNvbmZpZy92YXJuaXNoLnRwbC52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGFuIGV4aXN0aW5nIEt1YmVybmV0ZXMgc2VjcmV0IGNvbnRhaW5pbmcgVmFybmlzaCBhZG1pbiBjcmVkZW50aWFscy5cbiAgICogVGhlIHNlY3JldCBzaG91bGQgYmUgY3JlYXRlZCBzZXBhcmF0ZWx5IGluIHRoZSBzYW1lIG5hbWVzcGFjZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGV4aXN0aW5nIHNlY3JldClcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwMG0nXG4gICAqL1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIFByb21ldGhldXMgZXhwb3J0ZXIgZm9yIFZhcm5pc2ggbWV0cmljcy5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZXhwb3J0ZXIgc2lkZWNhciBjb250YWluZXIgd2lsbCBiZSBkZXBsb3llZCBhbG9uZ3NpZGUgVmFybmlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0ZXJFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGt1YmUtaHR0cGNhY2hlIENvbnRhaW5lciBJbWFnZSB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChjaGFydFZlcnNpb24gPSB3aXRoIGVhY2ggY2hhcnQgcmVsZWFzZSB0aGVyZSBpcyBhbiBpbWFnZSByZWxlYXNlIHRvbyApXG4gICAqL1xuICByZWFkb25seSBhcHBWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUga3ViZS1odHRwY2FjaGUgY29udGFpbmVyLlxuICAgKiBUaGVzZSBhcmUgYXBwZW5kZWQgdG8gdGhlIGJ1aWx0LWluIGVudiB2YXJzIChCQUNLRU5EX1NFUlZJQ0VfTkFNRSwgZXRjLilcbiAgICogYW5kIGNhbiBiZSByZWZlcmVuY2VkIGluIFZDTCB0ZW1wbGF0ZXMgdXNpbmcgR28gdGVtcGxhdGUgc3ludGF4OiB7eyAuRW52LlZBUl9OQU1FIH19XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnYgdmFyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFFbnZWYXJzPzogSHR0cGNhY2hlRW52VmFyW107XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBVc2UgdGhpcyB0byBhbGxvdyBzY2hlZHVsaW5nIG9uIG5vZGVzIHdpdGggc3BlY2lmaWMgdGFpbnRzLFxuICAgKiBlLmcuIG5vZGVzIHRhaW50ZWQgd2l0aCBrdWJlcm5ldGVzLmlvL2FyY2g9YW1kNjQ6Tm9TY2hlZHVsZS5cbiAgICogQGRlZmF1bHQgLSBubyB0b2xlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9sZXJhdGlvbnM/OiBIdHRwY2FjaGVUb2xlcmF0aW9uW107XG59XG5cbi8qKlxuICogUGxvbmVIdHRwY2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBIVFRQIGNhY2hpbmcgbGF5ZXIuXG4gKlxuICogVXNlcyB0aGUgbWl0dHdhbGQva3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byBkZXBsb3kgVmFybmlzaCBhcyBhXG4gKiBjYWNoaW5nIHByb3h5IGluIGZyb250IG9mIFBsb25lIGJhY2tlbmQgYW5kL29yIGZyb250ZW5kIHNlcnZpY2VzLlxuICpcbiAqIFRoZSBjYWNoZSBhdXRvbWF0aWNhbGx5IGNvbm5lY3RzIHRvIHRoZSBQbG9uZSBzZXJ2aWNlcyBhbmQgcHJvdmlkZXNcbiAqIEhUVFAgY2FjaGUgaW52YWxpZGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVIdHRwY2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICBleGlzdGluZ1NlY3JldDogJ3Zhcm5pc2gtc2VjcmV0JyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmVIdHRwY2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmFybmlzaCBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIEhlbG0gY2hhcnQuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgY2FjaGUgc2VydmljZSBmcm9tIGluZ3Jlc3Mgb3Igb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwY2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lSHR0cGNhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IHZhcm5pc2hWY2w6IHN0cmluZztcbiAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbCkge1xuICAgICAgbGV0IHZjbFBhdGg6IHN0cmluZztcbiAgICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsRmlsZSkge1xuICAgICAgICB2Y2xQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICd2YXJuaXNoLnRwbC52Y2wnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZjbFBhdGggPSBvcHRpb25zLnZhcm5pc2hWY2xGaWxlO1xuICAgICAgfVxuICAgICAgdmFybmlzaFZjbCA9IGZzLnJlYWRGaWxlU3luYyh2Y2xQYXRoLCAndXRmOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJuaXNoVmNsID0gb3B0aW9ucy52YXJuaXNoVmNsO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZVRhZyA9IG9wdGlvbnMuYXBwVmVyc2lvbiA/PyBvcHRpb25zLmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBodHRwY2FjaGUgPSBuZXcgSGVsbSh0aGlzLCAnaHR0cGNhY2hlJywge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9jaGFydFxuICAgICAgcmVwbzogJ2h0dHBzOi8vaGVsbS5taXR0d2FsZC5kZScsXG4gICAgICBjaGFydDogJ2t1YmUtaHR0cGNhY2hlJyxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMuY2hhcnRWZXJzaW9uLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogb3B0aW9ucy5yZXBsaWNhcyA/PyAyLFxuICAgICAgICAuLi4oaW1hZ2VUYWcgJiYgeyBpbWFnZTogeyB0YWc6IGltYWdlVGFnIH0gfSksXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgYmFja2VuZFNlcnZpY2U6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogdHJ1ZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdvcmthcm91bmQ6IHVwc3RyZWFtIGNoYXJ0IGFjY2VwdHMgYmFja2VuZFBvcnROYW1lIGJ1dCBuZXZlclxuICAgICAgICAvLyByZW5kZXJzIGl0IGFzIENMSSBhcmcuIFBhc3MgdmlhIGNhY2hlRXh0cmFBcmdzIGluc3RlYWQuXG4gICAgICAgIGNhY2hlRXh0cmFBcmdzOiAnLSAtYmFja2VuZC1wb3J0bmFtZT1iYWNrZW5kLWh0dHAnLFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiBvcHRpb25zLmV4cG9ydGVyRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cGNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2h0dHBjYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixpQ0FBNkI7QUFDN0IsMkNBQXVDO0FBd0p2Qzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUzs7SUFDM0M7OztPQUdHO0lBQ2Esb0JBQW9CLENBQVM7SUFFN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksVUFBa0IsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBZSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDbkMsQ0FBQztZQUNELFVBQVUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxZQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUM1Qyx1REFBdUQ7WUFDdkQsSUFBSSxFQUFFLDBC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Q0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDOztBQS9GSCx3Q0FnR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgSGVsbSB9IGZyb20gJ2NkazhzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUGxvbmUgfSBmcm9tICcuL3Bsb25lJztcblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwYXNzIHRvIHRoZSBrdWJlLWh0dHBjYWNoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlRW52VmFyIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBLdWJlcm5ldGVzIHRvbGVyYXRpb24gZm9yIHRoZSBWYXJuaXNoIHBvZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cGNhY2hlVG9sZXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFpbnQga2V5IHRvIHRvbGVyYXRlLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRvciAoRXF1YWwgb3IgRXhpc3RzKS5cbiAgICogQGRlZmF1bHQgJ0VxdWFsJ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0b3I/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWludCB2YWx1ZSB0byBtYXRjaCAod2hlbiBvcGVyYXRvciBpcyBFcXVhbCkuXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFpbnQgZWZmZWN0IHRvIHRvbGVyYXRlIChOb1NjaGVkdWxlLCBQcmVmZXJOb1NjaGVkdWxlLCBOb0V4ZWN1dGUpLlxuICAgKiBAZGVmYXVsdCAtIHRvbGVyYXRlIGFsbCBlZmZlY3RzXG4gICAqL1xuICByZWFkb25seSBlZmZlY3Q/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQbG9uZUh0dHBjYWNoZSAoVmFybmlzaCBjYWNoaW5nIGxheWVyKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbG9uZUh0dHBjYWNoZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFBsb25lIGNvbnN0cnVjdCB0byBhdHRhY2ggdGhlIEhUVFAgY2FjaGUgdG8uXG4gICAqIFRoZSBjYWNoZSB3aWxsIGF1dG9tYXRpY2FsbHkgY29ubmVjdCB0byB0aGUgYmFja2VuZCBhbmQgZnJvbnRlbmQgc2VydmljZXMuXG4gICAqL1xuICByZWFkb25seSBwbG9uZTogUGxvbmU7XG5cbiAgLyoqXG4gICAqIFZhcm5pc2ggVkNMIGNvbmZpZ3VyYXRpb24gYXMgYSBzdHJpbmcuXG4gICAqIElmIHByb3ZpZGVkLCB0aGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YXJuaXNoVmNsRmlsZS5cbiAgICogQGRlZmF1bHQgLSBsb2FkZWQgZnJvbSB2YXJuaXNoVmNsRmlsZSBvciBkZWZhdWx0IGNvbmZpZyBmaWxlXG4gICAqL1xuICByZWFkb25seSB2YXJuaXNoVmNsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIGEgVmFybmlzaCBWQ0wgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgVkNMIGZpbGUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IC0gdXNlcyBkZWZhdWx0IGNvbmZpZy92YXJuaXNoLnRwbC52Y2xcbiAgICovXG4gIHJlYWRvbmx5IHZhcm5pc2hWY2xGaWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGFuIGV4aXN0aW5nIEt1YmVybmV0ZXMgc2VjcmV0IGNvbnRhaW5pbmcgVmFybmlzaCBhZG1pbiBjcmVkZW50aWFscy5cbiAgICogVGhlIHNlY3JldCBzaG91bGQgYmUgY3JlYXRlZCBzZXBhcmF0ZWx5IGluIHRoZSBzYW1lIG5hbWVzcGFjZS5cbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgKG5vIGV4aXN0aW5nIHNlY3JldClcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2VjcmV0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgbGltaXQgZm9yIFZhcm5pc2ggcG9kcy5cbiAgICogQGRlZmF1bHQgJzUwMG0nXG4gICAqL1xuICByZWFkb25seSBsaW1pdENwdT86IHN0cmluZztcblxuICAvKipcbiAgICogTWVtb3J5IGxpbWl0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICc1MDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IGxpbWl0TWVtb3J5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDUFUgcmVxdWVzdCBmb3IgVmFybmlzaCBwb2RzLlxuICAgKiBAZGVmYXVsdCAnMTAwbSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RDcHU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSByZXF1ZXN0IGZvciBWYXJuaXNoIHBvZHMuXG4gICAqIEBkZWZhdWx0ICcxMDBNaSdcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RNZW1vcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBQcm9tZXRoZXVzIFNlcnZpY2VNb25pdG9yIGZvciBtZXRyaWNzIGNvbGxlY3Rpb24uXG4gICAqIFJlcXVpcmVzIFByb21ldGhldXMgT3BlcmF0b3IgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSBjbHVzdGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZW1vbml0b3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIFByb21ldGhldXMgZXhwb3J0ZXIgZm9yIFZhcm5pc2ggbWV0cmljcy5cbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZXhwb3J0ZXIgc2lkZWNhciBjb250YWluZXIgd2lsbCBiZSBkZXBsb3llZCBhbG9uZ3NpZGUgVmFybmlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwb3J0ZXJFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChsYXRlc3QpXG4gICAqL1xuICByZWFkb25seSBjaGFydFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGt1YmUtaHR0cGNhY2hlIENvbnRhaW5lciBJbWFnZSB0byB1c2UuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tIHRoZSByZXBvc2l0b3J5IHdpbGwgYmUgdXNlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIChjaGFydFZlcnNpb24gPSB3aXRoIGVhY2ggY2hhcnQgcmVsZWFzZSB0aGVyZSBpcyBhbiBpbWFnZSByZWxlYXNlIHRvbyApXG4gICAqL1xuICByZWFkb25seSBhcHBWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgVmFybmlzaCBwb2QgcmVwbGljYXMgdG8gcnVuLlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUga3ViZS1odHRwY2FjaGUgY29udGFpbmVyLlxuICAgKiBUaGVzZSBhcmUgYXBwZW5kZWQgdG8gdGhlIGJ1aWx0LWluIGVudiB2YXJzIChCQUNLRU5EX1NFUlZJQ0VfTkFNRSwgZXRjLilcbiAgICogYW5kIGNhbiBiZSByZWZlcmVuY2VkIGluIFZDTCB0ZW1wbGF0ZXMgdXNpbmcgR28gdGVtcGxhdGUgc3ludGF4OiB7eyAuRW52LlZBUl9OQU1FIH19XG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBlbnYgdmFyc1xuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFFbnZWYXJzPzogSHR0cGNhY2hlRW52VmFyW107XG5cbiAgLyoqXG4gICAqIFRvbGVyYXRpb25zIGZvciB0aGUgVmFybmlzaCBwb2RzLlxuICAgKiBVc2UgdGhpcyB0byBhbGxvdyBzY2hlZHVsaW5nIG9uIG5vZGVzIHdpdGggc3BlY2lmaWMgdGFpbnRzLFxuICAgKiBlLmcuIG5vZGVzIHRhaW50ZWQgd2l0aCBrdWJlcm5ldGVzLmlvL2FyY2g9YW1kNjQ6Tm9TY2hlZHVsZS5cbiAgICogQGRlZmF1bHQgLSBubyB0b2xlcmF0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdG9sZXJhdGlvbnM/OiBIdHRwY2FjaGVUb2xlcmF0aW9uW107XG59XG5cbi8qKlxuICogUGxvbmVIdHRwY2FjaGUgY29uc3RydWN0IGZvciBkZXBsb3lpbmcgVmFybmlzaCBIVFRQIGNhY2hpbmcgbGF5ZXIuXG4gKlxuICogVXNlcyB0aGUgbWl0dHdhbGQva3ViZS1odHRwY2FjaGUgSGVsbSBjaGFydCB0byBkZXBsb3kgVmFybmlzaCBhcyBhXG4gKiBjYWNoaW5nIHByb3h5IGluIGZyb250IG9mIFBsb25lIGJhY2tlbmQgYW5kL29yIGZyb250ZW5kIHNlcnZpY2VzLlxuICpcbiAqIFRoZSBjYWNoZSBhdXRvbWF0aWNhbGx5IGNvbm5lY3RzIHRvIHRoZSBQbG9uZSBzZXJ2aWNlcyBhbmQgcHJvdmlkZXNcbiAqIEhUVFAgY2FjaGUgaW52YWxpZGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcGxvbmUgPSBuZXcgUGxvbmUoY2hhcnQsICdwbG9uZScpO1xuICogY29uc3QgY2FjaGUgPSBuZXcgUGxvbmVIdHRwY2FjaGUoY2hhcnQsICdjYWNoZScsIHtcbiAqICAgcGxvbmU6IHBsb25lLFxuICogICBleGlzdGluZ1NlY3JldDogJ3Zhcm5pc2gtc2VjcmV0JyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgUGxvbmVIdHRwY2FjaGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgVmFybmlzaCBzZXJ2aWNlIGNyZWF0ZWQgYnkgdGhlIEhlbG0gY2hhcnQuXG4gICAqIFVzZSB0aGlzIHRvIHJlZmVyZW5jZSB0aGUgY2FjaGUgc2VydmljZSBmcm9tIGluZ3Jlc3Mgb3Igb3RoZXIgY29uc3RydWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBodHRwY2FjaGVTZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFBsb25lSHR0cGNhY2hlT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IHZhcm5pc2hWY2w6IHN0cmluZztcbiAgICBpZiAoIW9wdGlvbnMudmFybmlzaFZjbCkge1xuICAgICAgbGV0IHZjbFBhdGg6IHN0cmluZztcbiAgICAgIGlmICghb3B0aW9ucy52YXJuaXNoVmNsRmlsZSkge1xuICAgICAgICB2Y2xQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NvbmZpZycsICd2YXJuaXNoLnRwbC52Y2wnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZjbFBhdGggPSBvcHRpb25zLnZhcm5pc2hWY2xGaWxlO1xuICAgICAgfVxuICAgICAgdmFybmlzaFZjbCA9IGZzLnJlYWRGaWxlU3luYyh2Y2xQYXRoLCAndXRmOCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJuaXNoVmNsID0gb3B0aW9ucy52YXJuaXNoVmNsO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZVRhZyA9IG9wdGlvbnMuYXBwVmVyc2lvbiA/PyBvcHRpb25zLmNoYXJ0VmVyc2lvbjtcbiAgICBjb25zdCBodHRwY2FjaGUgPSBuZXcgSGVsbSh0aGlzLCAnaHR0cGNhY2hlJywge1xuICAgICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taXR0d2FsZC9rdWJlLWh0dHBjYWNoZS9jaGFydFxuICAgICAgcmVwbzogJ2h0dHBzOi8vaGVsbS5taXR0d2FsZC5kZScsXG4gICAgICBjaGFydDogJ2t1YmUtaHR0cGNhY2hlJyxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMuY2hhcnRWZXJzaW9uLFxuICAgICAgdmFsdWVzOiB7XG4gICAgICAgIHJlcGxpY2FDb3VudDogb3B0aW9ucy5yZXBsaWNhcyA/PyAyLFxuICAgICAgICAuLi4oaW1hZ2VUYWcgJiYgeyBpbWFnZTogeyB0YWc6IGltYWdlVGFnIH0gfSksXG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgYmFja2VuZFNlcnZpY2U6IG9wdGlvbnMucGxvbmUuYmFja2VuZFNlcnZpY2VOYW1lLFxuICAgICAgICAgIGZyb250ZW5kV2F0Y2g6IGZhbHNlLFxuICAgICAgICAgIGJhY2tlbmRXYXRjaDogdHJ1ZSxcbiAgICAgICAgICBleGlzdGluZ1NlY3JldDogb3B0aW9ucy5leGlzdGluZ1NlY3JldCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFdvcmthcm91bmQ6IHVwc3RyZWFtIGNoYXJ0IGFjY2VwdHMgYmFja2VuZFBvcnROYW1lIGJ1dCBuZXZlclxuICAgICAgICAvLyByZW5kZXJzIGl0IGFzIENMSSBhcmcuIFBhc3MgdmlhIGNhY2hlRXh0cmFBcmdzIGluc3RlYWQuXG4gICAgICAgIGNhY2hlRXh0cmFBcmdzOiAnLSAtYmFja2VuZC1wb3J0bmFtZT1iYWNrZW5kLWh0dHAnLFxuICAgICAgICB2Y2xUZW1wbGF0ZTogdmFybmlzaFZjbCxcbiAgICAgICAgZXh0cmFFbnZWYXJzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQkFDS0VORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5iYWNrZW5kU2VydmljZU5hbWUgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NFUlZJQ0VfUE9SVCcsIHZhbHVlOiAnODA4MCcgfSxcbiAgICAgICAgICB7IG5hbWU6ICdCQUNLRU5EX1NJVEVfSUQnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5zaXRlSWQgfSxcbiAgICAgICAgICB7IG5hbWU6ICdGUk9OVEVORF9TRVJWSUNFX05BTUUnLCB2YWx1ZTogb3B0aW9ucy5wbG9uZS5mcm9udGVuZFNlcnZpY2VOYW1lIH0sXG4gICAgICAgICAgeyBuYW1lOiAnRlJPTlRFTkRfU0VSVklDRV9QT1JUJywgdmFsdWU6ICczMDAwJyB9LFxuICAgICAgICAgIC4uLihvcHRpb25zLmV4dHJhRW52VmFycyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWl0dHdhbGQva3ViZS1odHRwY2FjaGUvaXNzdWVzLzI1M1xuICAgICAgICBub2RlU2VsZWN0b3I6IHtcbiAgICAgICAgICAna3ViZXJuZXRlcy5pby9hcmNoJzogJ2FtZDY0JyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKG9wdGlvbnMudG9sZXJhdGlvbnMgJiYgeyB0b2xlcmF0aW9uczogb3B0aW9ucy50b2xlcmF0aW9ucyB9KSxcbiAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICBjcHU6IG9wdGlvbnMubGltaXRDcHUgfHwgJzUwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLmxpbWl0TWVtb3J5IHx8ICc1MDBNaScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1ZXN0czoge1xuICAgICAgICAgICAgY3B1OiBvcHRpb25zLnJlcXVlc3RDcHUgfHwgJzEwMG0nLFxuICAgICAgICAgICAgbWVtb3J5OiBvcHRpb25zLnJlcXVlc3RNZW1vcnkgfHwgJzEwME1pJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByYmFjOiB7XG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0ZXI6IHtcbiAgICAgICAgICBlbmFibGVkOiBvcHRpb25zLmV4cG9ydGVyRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICAgIHJlc291cmNlczoge1xuICAgICAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgICAgIGNwdTogJzEwMG0nLFxuICAgICAgICAgICAgICBtZW1vcnk6ICcxMDBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWVzdHM6IHtcbiAgICAgICAgICAgICAgY3B1OiAnMTBtJyxcbiAgICAgICAgICAgICAgbWVtb3J5OiAnNTBNaScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VNb25pdG9yOiB7XG4gICAgICAgICAgZW5hYmxlZDogb3B0aW9ucy5zZXJ2aWNlbW9uaXRvciB8fCBmYWxzZSxcbiAgICAgICAgICBzY3JhcGVTaWduYWxsZXI6IG9wdGlvbnMuc2VydmljZW1vbml0b3IgfHwgZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGh0dHBjYWNoZVNlcnZpY2UgPSBodHRwY2FjaGUuYXBpT2JqZWN0cy5maW5kKChjb25zdHJ1Y3QpID0+IHtcbiAgICAgIGlmICgoY29uc3RydWN0LmtpbmQgPT09ICdTZXJ2aWNlJykgJiYgKGNvbnN0cnVjdC5tZXRhZGF0YS5uYW1lPy5lbmRzV2l0aCgna3ViZS1odHRwY2FjaGUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdC5uYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpZiAoaHR0cGNhY2hlU2VydmljZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGh0dHBjYWNoZSBzZXJ2aWNlJyk7XG4gICAgfVxuICAgIHRoaXMuaHR0cGNhY2hlU2VydmljZU5hbWUgPSBodHRwY2FjaGVTZXJ2aWNlLm5hbWU7XG4gIH1cbn0iXX0=
|