@mrgrain/cdk-esbuild 3.6.0 → 3.7.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.
- package/.jsii +82 -60
- package/.projenrc.ts +16 -0
- package/API.md +121 -16
- package/CHANGELOG.md +12 -0
- package/README.md +6 -6
- package/lib/asset.d.ts +15 -2
- package/lib/asset.js +22 -11
- package/lib/bundler.d.ts +36 -5
- package/lib/bundler.js +14 -4
- package/lib/code.d.ts +51 -9
- package/lib/code.js +43 -11
- package/lib/inline-code.js +4 -4
- package/lib/source.d.ts +81 -5
- package/lib/source.js +84 -8
- package/package.json +2 -1
package/API.md
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
### EsbuildAsset <a name="@mrgrain/cdk-esbuild.EsbuildAsset"></a>
|
|
6
6
|
|
|
7
|
-
Represents
|
|
7
|
+
Represents a generic esbuild asset.
|
|
8
|
+
|
|
9
|
+
You should always use `TypeScriptAsset` or `JavaScriptAsset`.
|
|
8
10
|
|
|
9
11
|
#### Initializers <a name="@mrgrain/cdk-esbuild.EsbuildAsset.Initializer"></a>
|
|
10
12
|
|
|
@@ -211,9 +213,18 @@ public readonly entryPoints: string | string[] | {[ key: string ]: string};
|
|
|
211
213
|
|
|
212
214
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
213
215
|
|
|
214
|
-
A
|
|
216
|
+
A path or list or map of paths to the entry points of your code.
|
|
217
|
+
|
|
218
|
+
Relative paths are by default resolved from the current working directory.
|
|
219
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
220
|
+
|
|
221
|
+
Absolute paths can be used if files are part of the working directory.
|
|
215
222
|
|
|
216
|
-
|
|
223
|
+
Examples:
|
|
224
|
+
- `'src/index.ts'`
|
|
225
|
+
- `require.resolve('./lambda')`
|
|
226
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
227
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
217
228
|
|
|
218
229
|
---
|
|
219
230
|
|
|
@@ -1989,9 +2000,18 @@ new EsbuildBundler(entryPoints: string | string[] | {[ key: string ]: string}, p
|
|
|
1989
2000
|
|
|
1990
2001
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
1991
2002
|
|
|
1992
|
-
A
|
|
2003
|
+
A path or list or map of paths to the entry points of your code.
|
|
2004
|
+
|
|
2005
|
+
Relative paths are by default resolved from the current working directory.
|
|
2006
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2007
|
+
|
|
2008
|
+
Absolute paths can be used if files are part of the working directory.
|
|
1993
2009
|
|
|
1994
|
-
|
|
2010
|
+
Examples:
|
|
2011
|
+
- `'src/index.ts'`
|
|
2012
|
+
- `require.resolve('./lambda')`
|
|
2013
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2014
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
1995
2015
|
|
|
1996
2016
|
---
|
|
1997
2017
|
|
|
@@ -2015,9 +2035,18 @@ public readonly entryPoints: string | string[] | {[ key: string ]: string};
|
|
|
2015
2035
|
|
|
2016
2036
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2017
2037
|
|
|
2018
|
-
A
|
|
2038
|
+
A path or list or map of paths to the entry points of your code.
|
|
2019
2039
|
|
|
2020
|
-
|
|
2040
|
+
Relative paths are by default resolved from the current working directory.
|
|
2041
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2042
|
+
|
|
2043
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2044
|
+
|
|
2045
|
+
Examples:
|
|
2046
|
+
- `'src/index.ts'`
|
|
2047
|
+
- `require.resolve('./lambda')`
|
|
2048
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2049
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2021
2050
|
|
|
2022
2051
|
---
|
|
2023
2052
|
|
|
@@ -2060,7 +2089,9 @@ Props to change the behaviour of the bundler.
|
|
|
2060
2089
|
|
|
2061
2090
|
### EsbuildCode <a name="@mrgrain/cdk-esbuild.EsbuildCode"></a>
|
|
2062
2091
|
|
|
2063
|
-
Represents
|
|
2092
|
+
Represents a generic esbuild code bundle.
|
|
2093
|
+
|
|
2094
|
+
You should always use `TypeScriptCode` or `JavaScriptCode`.
|
|
2064
2095
|
|
|
2065
2096
|
#### Initializers <a name="@mrgrain/cdk-esbuild.EsbuildCode.Initializer"></a>
|
|
2066
2097
|
|
|
@@ -2074,9 +2105,18 @@ new EsbuildCode(entryPoints: string | string[] | {[ key: string ]: string}, prop
|
|
|
2074
2105
|
|
|
2075
2106
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2076
2107
|
|
|
2077
|
-
A
|
|
2108
|
+
A path or list or map of paths to the entry points of your code.
|
|
2109
|
+
|
|
2110
|
+
Relative paths are by default resolved from the current working directory.
|
|
2111
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2078
2112
|
|
|
2079
|
-
|
|
2113
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2114
|
+
|
|
2115
|
+
Examples:
|
|
2116
|
+
- `'src/index.ts'`
|
|
2117
|
+
- `require.resolve('./lambda')`
|
|
2118
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2119
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2080
2120
|
|
|
2081
2121
|
---
|
|
2082
2122
|
|
|
@@ -2136,9 +2176,18 @@ public readonly entryPoints: string | string[] | {[ key: string ]: string};
|
|
|
2136
2176
|
|
|
2137
2177
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2138
2178
|
|
|
2139
|
-
A
|
|
2179
|
+
A path or list or map of paths to the entry points of your code.
|
|
2180
|
+
|
|
2181
|
+
Relative paths are by default resolved from the current working directory.
|
|
2182
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2140
2183
|
|
|
2141
|
-
|
|
2184
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2185
|
+
|
|
2186
|
+
Examples:
|
|
2187
|
+
- `'src/index.ts'`
|
|
2188
|
+
- `require.resolve('./lambda')`
|
|
2189
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2190
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2142
2191
|
|
|
2143
2192
|
---
|
|
2144
2193
|
|
|
@@ -2329,9 +2378,18 @@ new JavaScriptCode(entryPoints: string | string[] | {[ key: string ]: string}, p
|
|
|
2329
2378
|
|
|
2330
2379
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2331
2380
|
|
|
2332
|
-
A
|
|
2381
|
+
A path or list or map of paths to the entry points of your code.
|
|
2382
|
+
|
|
2383
|
+
Relative paths are by default resolved from the current working directory.
|
|
2384
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2333
2385
|
|
|
2334
|
-
|
|
2386
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2387
|
+
|
|
2388
|
+
Examples:
|
|
2389
|
+
- `'src/index.ts'`
|
|
2390
|
+
- `require.resolve('./lambda')`
|
|
2391
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2392
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2335
2393
|
|
|
2336
2394
|
---
|
|
2337
2395
|
|
|
@@ -2368,12 +2426,31 @@ new JavaScriptSource(entryPoints: string | string[] | {[ key: string ]: string},
|
|
|
2368
2426
|
|
|
2369
2427
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2370
2428
|
|
|
2429
|
+
A path or list or map of paths to the entry points of your code.
|
|
2430
|
+
|
|
2431
|
+
Relative paths are by default resolved from the current working directory.
|
|
2432
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2433
|
+
|
|
2434
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2435
|
+
|
|
2436
|
+
Examples:
|
|
2437
|
+
- `'src/index.ts'`
|
|
2438
|
+
- `require.resolve('./lambda')`
|
|
2439
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2440
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2441
|
+
|
|
2371
2442
|
---
|
|
2372
2443
|
|
|
2373
2444
|
##### `props`<sup>Optional</sup> <a name="@mrgrain/cdk-esbuild.JavaScriptSource.parameter.props"></a>
|
|
2374
2445
|
|
|
2375
2446
|
- *Type:* [`@mrgrain/cdk-esbuild.JavaScriptSourceProps`](#@mrgrain/cdk-esbuild.JavaScriptSourceProps)
|
|
2376
2447
|
|
|
2448
|
+
Props to change the behavior of the bundler.
|
|
2449
|
+
|
|
2450
|
+
Default values for `props.buildOptions`:
|
|
2451
|
+
- `bundle=true`
|
|
2452
|
+
- `platform=browser`
|
|
2453
|
+
|
|
2377
2454
|
---
|
|
2378
2455
|
|
|
2379
2456
|
#### Methods <a name="Methods"></a>
|
|
@@ -2426,9 +2503,18 @@ new TypeScriptCode(entryPoints: string | string[] | {[ key: string ]: string}, p
|
|
|
2426
2503
|
|
|
2427
2504
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2428
2505
|
|
|
2429
|
-
A
|
|
2506
|
+
A path or list or map of paths to the entry points of your code.
|
|
2507
|
+
|
|
2508
|
+
Relative paths are by default resolved from the current working directory.
|
|
2509
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2430
2510
|
|
|
2431
|
-
|
|
2511
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2512
|
+
|
|
2513
|
+
Examples:
|
|
2514
|
+
- `'src/index.ts'`
|
|
2515
|
+
- `require.resolve('./lambda')`
|
|
2516
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2517
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2432
2518
|
|
|
2433
2519
|
---
|
|
2434
2520
|
|
|
@@ -2465,12 +2551,31 @@ new TypeScriptSource(entryPoints: string | string[] | {[ key: string ]: string},
|
|
|
2465
2551
|
|
|
2466
2552
|
- *Type:* `string` | `string`[] | {[ key: string ]: `string`}
|
|
2467
2553
|
|
|
2554
|
+
A path or list or map of paths to the entry points of your code.
|
|
2555
|
+
|
|
2556
|
+
Relative paths are by default resolved from the current working directory.
|
|
2557
|
+
To change the working directory, see `buildOptions.absWorkingDir`.
|
|
2558
|
+
|
|
2559
|
+
Absolute paths can be used if files are part of the working directory.
|
|
2560
|
+
|
|
2561
|
+
Examples:
|
|
2562
|
+
- `'src/index.ts'`
|
|
2563
|
+
- `require.resolve('./lambda')`
|
|
2564
|
+
- `['src/index.ts', 'src/util.ts']`
|
|
2565
|
+
- `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
2566
|
+
|
|
2468
2567
|
---
|
|
2469
2568
|
|
|
2470
2569
|
##### `props`<sup>Optional</sup> <a name="@mrgrain/cdk-esbuild.TypeScriptSource.parameter.props"></a>
|
|
2471
2570
|
|
|
2472
2571
|
- *Type:* [`@mrgrain/cdk-esbuild.TypeScriptSourceProps`](#@mrgrain/cdk-esbuild.TypeScriptSourceProps)
|
|
2473
2572
|
|
|
2573
|
+
Props to change the behavior of the bundler.
|
|
2574
|
+
|
|
2575
|
+
Default values for `props.buildOptions`:
|
|
2576
|
+
- `bundle=true`
|
|
2577
|
+
- `platform=browser`
|
|
2578
|
+
|
|
2474
2579
|
---
|
|
2475
2580
|
|
|
2476
2581
|
#### Methods <a name="Methods"></a>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [3.6.0](https://github.com/mrgrain/cdk-esbuild/compare/v3.5.0...v3.6.0) (2022-06-23)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* allow setting of esbuildBinaryPath via Construct interface ([f4eeebe](https://github.com/mrgrain/cdk-esbuild/commit/f4eeebe613bf20b8b28313a81b328bdcd1c1a8e6))
|
|
7
|
+
* upgrade esbuild to support `supported` buildOption and new `copy` loader ([3ac5d92](https://github.com/mrgrain/cdk-esbuild/commit/3ac5d925342505669dbb3d3e88249f6e495b8566))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* make TypeScriptCode and JavaScriptCode correctly extend aws_lambda.Code in jsii ([d04db27](https://github.com/mrgrain/cdk-esbuild/commit/d04db2798559b38d424a2012ebb96d14ebde4fb0))
|
|
1
13
|
|
|
2
14
|
## [3.5.0](https://github.com/mrgrain/cdk-esbuild/compare/v3.4.0...v3.5.0) (2022-06-02)
|
|
3
15
|
|
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
_CDK constructs for [esbuild](https://github.com/evanw/esbuild), an extremely fast JavaScript bundler_
|
|
4
4
|
|
|
5
|
-
[Getting started](#getting-started)
|
|
6
|
-
[Documentation](#documentation) | [API Reference](#api-reference) | [Versioning](#versioning)
|
|
5
|
+
[Getting started](#getting-started)
|
|
6
|
+
[Documentation](#documentation) | [API Reference](#api-reference) | [Versioning](#versioning) | [Upgrading from AWS CDK v1](#upgrading-from-aws-cdk-v1)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
[](https://constructs.dev/packages/@mrgrain/cdk-esbuild)
|
|
9
9
|
|
|
10
10
|
## Why?
|
|
11
11
|
|
|
@@ -205,11 +205,11 @@ Instead of esbuild, the provided function will be invoked with the calculated tr
|
|
|
205
205
|
|
|
206
206
|
Failures have to cause a `TransformFailure` exception in order to be fully handled.
|
|
207
207
|
|
|
208
|
-
###
|
|
208
|
+
### Upgrading from AWS CDK v1
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
This version is compatible with AWS CDK v2. For the previous, AWS CDK v1 compatible release, see [cdk-esbuild@v2](https://github.com/mrgrain/cdk-esbuild/tree/v2).
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
To upgrade from AWS CDK v1 and cdk-esbuild@v2, please follow these steps:
|
|
213
213
|
|
|
214
214
|
- This version requires AWS CDK v2. Follow the [official migration guide](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-v2.html) to upgrade.
|
|
215
215
|
- Update the package dependency to v3: `npm install --save @mrgrain/cdk-esbuild@^3.0.0`
|
package/lib/asset.d.ts
CHANGED
|
@@ -18,7 +18,18 @@ export interface AssetBaseProps extends BundlerProps {
|
|
|
18
18
|
}
|
|
19
19
|
export interface AssetProps extends AssetBaseProps {
|
|
20
20
|
/**
|
|
21
|
-
* A
|
|
21
|
+
* A path or list or map of paths to the entry points of your code.
|
|
22
|
+
*
|
|
23
|
+
* Relative paths are by default resolved from the current working directory.
|
|
24
|
+
* To change the working directory, see `buildOptions.absWorkingDir`.
|
|
25
|
+
*
|
|
26
|
+
* Absolute paths can be used if files are part of the working directory.
|
|
27
|
+
*
|
|
28
|
+
* Examples:
|
|
29
|
+
* - `'src/index.ts'`
|
|
30
|
+
* - `require.resolve('./lambda')`
|
|
31
|
+
* - `['src/index.ts', 'src/util.ts']`
|
|
32
|
+
* - `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
22
33
|
*
|
|
23
34
|
* @stability stable
|
|
24
35
|
*/
|
|
@@ -27,7 +38,9 @@ export interface AssetProps extends AssetBaseProps {
|
|
|
27
38
|
declare type JavaScriptAssetProps = AssetProps;
|
|
28
39
|
declare type TypeScriptAssetProps = AssetProps;
|
|
29
40
|
/**
|
|
30
|
-
* Represents
|
|
41
|
+
* Represents a generic esbuild asset.
|
|
42
|
+
*
|
|
43
|
+
* You should always use `TypeScriptAsset` or `JavaScriptAsset`.
|
|
31
44
|
*
|
|
32
45
|
* @stability experimental
|
|
33
46
|
*/
|
package/lib/asset.js
CHANGED
|
@@ -9,7 +9,9 @@ const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
|
|
|
9
9
|
const constructs_1 = require("constructs");
|
|
10
10
|
const bundler_1 = require("./bundler");
|
|
11
11
|
/**
|
|
12
|
-
* Represents
|
|
12
|
+
* Represents a generic esbuild asset.
|
|
13
|
+
*
|
|
14
|
+
* You should always use `TypeScriptAsset` or `JavaScriptAsset`.
|
|
13
15
|
*
|
|
14
16
|
* @stability experimental
|
|
15
17
|
*/
|
|
@@ -21,12 +23,21 @@ class EsbuildAsset extends aws_s3_assets_1.Asset {
|
|
|
21
23
|
const { assetHash, copyDir, buildOptions: options = {}, buildFn, } = props;
|
|
22
24
|
const entryPoints = typeof props.entryPoints === 'string' ? [props.entryPoints] : props.entryPoints;
|
|
23
25
|
const name = scope.node.path + constructs_1.Node.PATH_SEP + id;
|
|
24
|
-
Object.values(entryPoints).forEach((entryPoint) => {
|
|
25
|
-
if (path_1.isAbsolute(entryPoint)) {
|
|
26
|
-
throw new Error(`${name}: Entry points must be a relative path. If you need to define an absolute path, please use \`buildOptions.absWorkingDir\` accordingly.`);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
26
|
const absWorkingDir = options.absWorkingDir ?? process.cwd();
|
|
27
|
+
const forceRelativeEntrypointPath = (entryPoint) => {
|
|
28
|
+
if (!path_1.isAbsolute(entryPoint)) {
|
|
29
|
+
return entryPoint;
|
|
30
|
+
}
|
|
31
|
+
const relativeEntryPoint = path_1.relative(absWorkingDir, entryPoint);
|
|
32
|
+
if (relativeEntryPoint.startsWith('..') || path_1.isAbsolute(relativeEntryPoint)) {
|
|
33
|
+
throw new Error(`${name}: Entry points must be part of the working directory. See \`buildOptions.absWorkingDir\` to set a working directory different to the current one.`);
|
|
34
|
+
}
|
|
35
|
+
return relativeEntryPoint;
|
|
36
|
+
};
|
|
37
|
+
const relativeEntryPoints = Array.isArray(entryPoints) ?
|
|
38
|
+
entryPoints.map(forceRelativeEntrypointPath) :
|
|
39
|
+
Object.fromEntries(Object.entries(entryPoints)
|
|
40
|
+
.map(([out, entryPoint]) => ([out, forceRelativeEntrypointPath(entryPoint)])));
|
|
30
41
|
const buildOptions = {
|
|
31
42
|
bundle: true,
|
|
32
43
|
...options,
|
|
@@ -36,7 +47,7 @@ class EsbuildAsset extends aws_s3_assets_1.Asset {
|
|
|
36
47
|
path: absWorkingDir,
|
|
37
48
|
assetHash,
|
|
38
49
|
assetHashType: assetHash ? aws_cdk_lib_1.AssetHashType.CUSTOM : aws_cdk_lib_1.AssetHashType.OUTPUT,
|
|
39
|
-
bundling: new bundler_1.EsbuildBundler(
|
|
50
|
+
bundling: new bundler_1.EsbuildBundler(relativeEntryPoints, {
|
|
40
51
|
buildOptions,
|
|
41
52
|
copyDir,
|
|
42
53
|
buildFn,
|
|
@@ -46,7 +57,7 @@ class EsbuildAsset extends aws_s3_assets_1.Asset {
|
|
|
46
57
|
}
|
|
47
58
|
exports.EsbuildAsset = EsbuildAsset;
|
|
48
59
|
_a = JSII_RTTI_SYMBOL_1;
|
|
49
|
-
EsbuildAsset[_a] = { fqn: "@mrgrain/cdk-esbuild.EsbuildAsset", version: "3.
|
|
60
|
+
EsbuildAsset[_a] = { fqn: "@mrgrain/cdk-esbuild.EsbuildAsset", version: "3.7.0" };
|
|
50
61
|
/**
|
|
51
62
|
* Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
|
|
52
63
|
*
|
|
@@ -58,7 +69,7 @@ class JavaScriptAsset extends EsbuildAsset {
|
|
|
58
69
|
}
|
|
59
70
|
exports.JavaScriptAsset = JavaScriptAsset;
|
|
60
71
|
_b = JSII_RTTI_SYMBOL_1;
|
|
61
|
-
JavaScriptAsset[_b] = { fqn: "@mrgrain/cdk-esbuild.JavaScriptAsset", version: "3.
|
|
72
|
+
JavaScriptAsset[_b] = { fqn: "@mrgrain/cdk-esbuild.JavaScriptAsset", version: "3.7.0" };
|
|
62
73
|
/**
|
|
63
74
|
* Bundles the entry points and creates a CDK asset which is uploaded to the bootstrapped CDK S3 bucket during deployment.
|
|
64
75
|
*
|
|
@@ -70,5 +81,5 @@ class TypeScriptAsset extends EsbuildAsset {
|
|
|
70
81
|
}
|
|
71
82
|
exports.TypeScriptAsset = TypeScriptAsset;
|
|
72
83
|
_c = JSII_RTTI_SYMBOL_1;
|
|
73
|
-
TypeScriptAsset[_c] = { fqn: "@mrgrain/cdk-esbuild.TypeScriptAsset", version: "3.
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
TypeScriptAsset[_c] = { fqn: "@mrgrain/cdk-esbuild.TypeScriptAsset", version: "3.7.0" };
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBNEM7QUFDNUMsNkNBQTRDO0FBQzVDLDZEQUE2RDtBQUM3RCwyQ0FBNkM7QUFDN0MsdUNBQXNFO0FBeUN0RTs7Ozs7O0dBTUc7QUFDSCxNQUFhLFlBQXVDLFNBQVEscUJBQU87SUFDakU7O09BRUc7SUFDSCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFZO1FBRVosTUFBTSxFQUNKLFNBQVMsRUFDVCxPQUFPLEVBQ1AsWUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQzFCLE9BQU8sR0FDUixHQUFHLEtBQUssQ0FBQztRQUNWLE1BQU0sV0FBVyxHQUNmLE9BQU8sS0FBSyxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBRWxGLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGlCQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVsRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3RCxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBa0IsRUFBVSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxpQkFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUMzQixPQUFPLFVBQVUsQ0FBQzthQUNuQjtZQUVELE1BQU0sa0JBQWtCLEdBQUcsZUFBUSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMvRCxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxpQkFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7Z0JBQ3pFLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxJQUFJLG1KQUFtSixDQUMzSixDQUFDO2FBQ0g7WUFFRCxPQUFPLGtCQUFrQixDQUFDO1FBQzVCLENBQUMsQ0FBQztRQUVGLE1BQU0sbUJBQW1CLEdBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMxQixXQUFXLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLENBQUMsV0FBVyxDQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztpQkFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUMzRSxDQUNKLENBQUM7UUFHTixNQUFNLFlBQVksR0FBRztZQUNuQixNQUFNLEVBQUUsSUFBSTtZQUNaLEdBQUcsT0FBTztZQUNWLGFBQWE7U0FDZCxDQUFDO1FBRUYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsYUFBYTtZQUNuQixTQUFTO1lBQ1QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsMkJBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDJCQUFhLENBQUMsTUFBTTtZQUN0RSxRQUFRLEVBQUUsSUFBSSx3QkFBYyxDQUMxQixtQkFBbUIsRUFDbkI7Z0JBQ0UsWUFBWTtnQkFDWixPQUFPO2dCQUNQLE9BQU87YUFDUixDQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsRUgsb0NBbUVDOzs7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsWUFBa0M7O0FBQXZFLDBDQUEwRTs7O0FBRTFFOzs7Ozs7R0FNRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxZQUFrQzs7QUFBdkUsMENBQTBFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBYnNvbHV0ZSwgcmVsYXRpdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFzc2V0SGFzaFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBBc3NldCBhcyBTM0Fzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEVzYnVpbGRCdW5kbGVyLCBCdW5kbGVyUHJvcHMsIEVudHJ5UG9pbnRzIH0gZnJvbSAnLi9idW5kbGVyJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldEJhc2VQcm9wcyBleHRlbmRzIEJ1bmRsZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBBIGhhc2ggb2YgdGhpcyBhc3NldCwgd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGNvbnN0cnVjdGlvbiB0aW1lLlxuICAgKlxuICAgKiBBcyB0aGlzIGlzIGEgcGxhaW4gc3RyaW5nLCBpdCBjYW4gYmUgdXNlZCBpbiBjb25zdHJ1Y3QgSURzIGluIG9yZGVyIHRvIGVuZm9yY2UgY3JlYXRpb24gb2YgYSBuZXcgcmVzb3VyY2Ugd2hlbiB0aGUgY29udGVudCBoYXNoIGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBhIGhhc2ggb2YgYWxsIGZpbGVzIGluIHRoZSByZXN1bHRpbmcgYnVuZGxlLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRIYXNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0UHJvcHMgZXh0ZW5kcyBBc3NldEJhc2VQcm9wcyB7XG4gIC8qKlxuICAgKiBBIHBhdGggb3IgbGlzdCBvciBtYXAgb2YgcGF0aHMgdG8gdGhlIGVudHJ5IHBvaW50cyBvZiB5b3VyIGNvZGUuXG4gICAqXG4gICAqIFJlbGF0aXZlIHBhdGhzIGFyZSBieSBkZWZhdWx0IHJlc29sdmVkIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqIFRvIGNoYW5nZSB0aGUgd29ya2luZyBkaXJlY3RvcnksIHNlZSBgYnVpbGRPcHRpb25zLmFic1dvcmtpbmdEaXJgLlxuICAgKlxuICAgKiBBYnNvbHV0ZSBwYXRocyBjYW4gYmUgdXNlZCBpZiBmaWxlcyBhcmUgcGFydCBvZiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEV4YW1wbGVzOlxuICAgKiAgLSBgJ3NyYy9pbmRleC50cydgXG4gICAqICAtIGByZXF1aXJlLnJlc29sdmUoJy4vbGFtYmRhJylgXG4gICAqICAtIGBbJ3NyYy9pbmRleC50cycsICdzcmMvdXRpbC50cyddYFxuICAgKiAgLSBge29uZTogJ3NyYy90d28udHMnLCB0d286ICdzcmMvb25lLnRzJ31gXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBlbnRyeVBvaW50czogRW50cnlQb2ludHM7XG59XG5cbnR5cGUgSmF2YVNjcmlwdEFzc2V0UHJvcHMgPSBBc3NldFByb3BzO1xudHlwZSBUeXBlU2NyaXB0QXNzZXRQcm9wcyA9IEFzc2V0UHJvcHM7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgZXNidWlsZCBhc3NldC5cbiAqXG4gKiBZb3Ugc2hvdWxkIGFsd2F5cyB1c2UgYFR5cGVTY3JpcHRBc3NldGAgb3IgYEphdmFTY3JpcHRBc3NldGAuXG4gKlxuICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGNsYXNzIEVzYnVpbGRBc3NldDxQcm9wcyBleHRlbmRzIEFzc2V0UHJvcHM+IGV4dGVuZHMgUzNBc3NldCB7XG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUHJvcHMsXG4gICkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFzc2V0SGFzaCxcbiAgICAgIGNvcHlEaXIsXG4gICAgICBidWlsZE9wdGlvbnM6IG9wdGlvbnMgPSB7fSxcbiAgICAgIGJ1aWxkRm4sXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGVudHJ5UG9pbnRzOiBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPVxuICAgICAgdHlwZW9mIHByb3BzLmVudHJ5UG9pbnRzID09PSAnc3RyaW5nJyA/IFtwcm9wcy5lbnRyeVBvaW50c10gOiBwcm9wcy5lbnRyeVBvaW50cztcblxuICAgIGNvbnN0IG5hbWUgPSBzY29wZS5ub2RlLnBhdGggKyBOb2RlLlBBVEhfU0VQICsgaWQ7XG5cbiAgICBjb25zdCBhYnNXb3JraW5nRGlyID0gb3B0aW9ucy5hYnNXb3JraW5nRGlyID8/IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBjb25zdCBmb3JjZVJlbGF0aXZlRW50cnlwb2ludFBhdGggPSAoZW50cnlQb2ludDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgIGlmICghaXNBYnNvbHV0ZShlbnRyeVBvaW50KSkge1xuICAgICAgICByZXR1cm4gZW50cnlQb2ludDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRpdmVFbnRyeVBvaW50ID0gcmVsYXRpdmUoYWJzV29ya2luZ0RpciwgZW50cnlQb2ludCk7XG4gICAgICBpZiAocmVsYXRpdmVFbnRyeVBvaW50LnN0YXJ0c1dpdGgoJy4uJykgfHwgaXNBYnNvbHV0ZShyZWxhdGl2ZUVudHJ5UG9pbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHtuYW1lfTogRW50cnkgcG9pbnRzIG11c3QgYmUgcGFydCBvZiB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFNlZSBcXGBidWlsZE9wdGlvbnMuYWJzV29ya2luZ0RpclxcYCB0byBzZXQgYSB3b3JraW5nIGRpcmVjdG9yeSBkaWZmZXJlbnQgdG8gdGhlIGN1cnJlbnQgb25lLmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWxhdGl2ZUVudHJ5UG9pbnQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbGF0aXZlRW50cnlQb2ludHMgPVxuICAgICAgQXJyYXkuaXNBcnJheShlbnRyeVBvaW50cykgP1xuICAgICAgICBlbnRyeVBvaW50cy5tYXAoZm9yY2VSZWxhdGl2ZUVudHJ5cG9pbnRQYXRoKSA6XG4gICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhlbnRyeVBvaW50cylcbiAgICAgICAgICAgIC5tYXAoKFtvdXQsIGVudHJ5UG9pbnRdKSA9PiAoW291dCwgZm9yY2VSZWxhdGl2ZUVudHJ5cG9pbnRQYXRoKGVudHJ5UG9pbnQpXSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuXG5cbiAgICBjb25zdCBidWlsZE9wdGlvbnMgPSB7XG4gICAgICBidW5kbGU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgYWJzV29ya2luZ0RpcixcbiAgICB9O1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwYXRoOiBhYnNXb3JraW5nRGlyLFxuICAgICAgYXNzZXRIYXNoLFxuICAgICAgYXNzZXRIYXNoVHlwZTogYXNzZXRIYXNoID8gQXNzZXRIYXNoVHlwZS5DVVNUT00gOiBBc3NldEhhc2hUeXBlLk9VVFBVVCxcbiAgICAgIGJ1bmRsaW5nOiBuZXcgRXNidWlsZEJ1bmRsZXIoXG4gICAgICAgIHJlbGF0aXZlRW50cnlQb2ludHMsXG4gICAgICAgIHtcbiAgICAgICAgICBidWlsZE9wdGlvbnMsXG4gICAgICAgICAgY29weURpcixcbiAgICAgICAgICBidWlsZEZuLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEJ1bmRsZXMgdGhlIGVudHJ5IHBvaW50cyBhbmQgY3JlYXRlcyBhIENESyBhc3NldCB3aGljaCBpcyB1cGxvYWRlZCB0byB0aGUgYm9vdHN0cmFwcGVkIENESyBTMyBidWNrZXQgZHVyaW5nIGRlcGxveW1lbnQuXG4gKlxuICogVGhlIGFzc2V0IGNhbiBiZSB1c2VkIGJ5IG90aGVyIGNvbnN0cnVjdHMuXG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIEphdmFTY3JpcHRBc3NldCBleHRlbmRzIEVzYnVpbGRBc3NldDxKYXZhU2NyaXB0QXNzZXRQcm9wcz4ge31cblxuLyoqXG4gKiBCdW5kbGVzIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNyZWF0ZXMgYSBDREsgYXNzZXQgd2hpY2ggaXMgdXBsb2FkZWQgdG8gdGhlIGJvb3RzdHJhcHBlZCBDREsgUzMgYnVja2V0IGR1cmluZyBkZXBsb3ltZW50LlxuICpcbiAqIFRoZSBhc3NldCBjYW4gYmUgdXNlZCBieSBvdGhlciBjb25zdHJ1Y3RzLlxuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0QXNzZXQgZXh0ZW5kcyBFc2J1aWxkQXNzZXQ8VHlwZVNjcmlwdEFzc2V0UHJvcHM+IHt9XG4iXX0=
|
package/lib/bundler.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { DockerImage, ILocalBundling } from 'aws-cdk-lib';
|
|
2
2
|
import { BuildOptions } from './esbuild-types';
|
|
3
3
|
/**
|
|
4
|
-
* A
|
|
4
|
+
* A path or list or map of paths to the entry points of your code.
|
|
5
|
+
*
|
|
6
|
+
* Relative paths are by default resolved from the current working directory.
|
|
7
|
+
* To change the working directory, see `buildOptions.absWorkingDir`.
|
|
8
|
+
*
|
|
9
|
+
* Absolute paths can be used if files are part of the working directory.
|
|
10
|
+
*
|
|
11
|
+
* Examples:
|
|
12
|
+
* - `'src/index.ts'`
|
|
13
|
+
* - `require.resolve('./lambda')`
|
|
14
|
+
* - `['src/index.ts', 'src/util.ts']`
|
|
15
|
+
* - `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
5
16
|
*
|
|
6
17
|
* @stability stable
|
|
7
18
|
*/
|
|
@@ -80,8 +91,18 @@ export interface BundlerProps {
|
|
|
80
91
|
*/
|
|
81
92
|
export declare class EsbuildBundler {
|
|
82
93
|
/**
|
|
83
|
-
* A
|
|
84
|
-
*
|
|
94
|
+
* A path or list or map of paths to the entry points of your code.
|
|
95
|
+
*
|
|
96
|
+
* Relative paths are by default resolved from the current working directory.
|
|
97
|
+
* To change the working directory, see `buildOptions.absWorkingDir`.
|
|
98
|
+
*
|
|
99
|
+
* Absolute paths can be used if files are part of the working directory.
|
|
100
|
+
*
|
|
101
|
+
* Examples:
|
|
102
|
+
* - `'src/index.ts'`
|
|
103
|
+
* - `require.resolve('./lambda')`
|
|
104
|
+
* - `['src/index.ts', 'src/util.ts']`
|
|
105
|
+
* - `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
85
106
|
*
|
|
86
107
|
* @stability experimental
|
|
87
108
|
*/
|
|
@@ -109,8 +130,18 @@ export declare class EsbuildBundler {
|
|
|
109
130
|
*/
|
|
110
131
|
constructor(
|
|
111
132
|
/**
|
|
112
|
-
* A
|
|
113
|
-
*
|
|
133
|
+
* A path or list or map of paths to the entry points of your code.
|
|
134
|
+
*
|
|
135
|
+
* Relative paths are by default resolved from the current working directory.
|
|
136
|
+
* To change the working directory, see `buildOptions.absWorkingDir`.
|
|
137
|
+
*
|
|
138
|
+
* Absolute paths can be used if files are part of the working directory.
|
|
139
|
+
*
|
|
140
|
+
* Examples:
|
|
141
|
+
* - `'src/index.ts'`
|
|
142
|
+
* - `require.resolve('./lambda')`
|
|
143
|
+
* - `['src/index.ts', 'src/util.ts']`
|
|
144
|
+
* - `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
114
145
|
*
|
|
115
146
|
* @stability experimental
|
|
116
147
|
*/
|
package/lib/bundler.js
CHANGED
|
@@ -20,8 +20,18 @@ class EsbuildBundler {
|
|
|
20
20
|
*/
|
|
21
21
|
constructor(
|
|
22
22
|
/**
|
|
23
|
-
* A
|
|
24
|
-
*
|
|
23
|
+
* A path or list or map of paths to the entry points of your code.
|
|
24
|
+
*
|
|
25
|
+
* Relative paths are by default resolved from the current working directory.
|
|
26
|
+
* To change the working directory, see `buildOptions.absWorkingDir`.
|
|
27
|
+
*
|
|
28
|
+
* Absolute paths can be used if files are part of the working directory.
|
|
29
|
+
*
|
|
30
|
+
* Examples:
|
|
31
|
+
* - `'src/index.ts'`
|
|
32
|
+
* - `require.resolve('./lambda')`
|
|
33
|
+
* - `['src/index.ts', 'src/util.ts']`
|
|
34
|
+
* - `{one: 'src/two.ts', two: 'src/one.ts'}`
|
|
25
35
|
*
|
|
26
36
|
* @stability experimental
|
|
27
37
|
*/
|
|
@@ -119,5 +129,5 @@ class EsbuildBundler {
|
|
|
119
129
|
}
|
|
120
130
|
exports.EsbuildBundler = EsbuildBundler;
|
|
121
131
|
_a = JSII_RTTI_SYMBOL_1;
|
|
122
|
-
EsbuildBundler[_a] = { fqn: "@mrgrain/cdk-esbuild.EsbuildBundler", version: "3.
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQStCO0FBQy9CLCtCQUE2RTtBQUM3RSw2Q0FLcUI7QUFFckIsdURBQThDO0FBQzlDLHFEQUFzRDtBQWdGdEQ7Ozs7O0dBS0c7QUFDSCxNQUFhLGNBQWM7SUFlekI7O09BRUc7SUFDSDtJQUNFOzs7OztPQUtHO0lBQ2EsV0FBd0I7SUFFeEM7Ozs7T0FJRztJQUNhLEtBQW1CO1FBUG5CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBT3hCLFVBQUssR0FBTCxLQUFLLENBQWM7UUF4QnJDOzs7O1dBSUc7UUFDYSxVQUFLLEdBQUcseUJBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFxQjFELElBQUksS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLElBQUksS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUU7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzNEO1FBRUQsTUFBTSxFQUFFLE9BQU8sR0FBRywyQkFBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUzQyxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsU0FBUyxFQUFFLENBQUMsU0FBaUIsRUFBRSxRQUF5QixFQUFXLEVBQUU7Z0JBRW5FLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7b0JBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFeEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7d0JBQzlCLE1BQU0sTUFBTSxHQUFHLGNBQU8sQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsYUFBYSxJ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LE9BQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsWUFBb0IsRUFDcEIsT0FBaUQsWUFBSztRQUV0RCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRTtZQUNyQyxPQUFPO2dCQUNMLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FDUCxHQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDMUQsT0FBTyxDQUNLLENBQ2YsQ0FDRjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDcEIsSUFBSSxDQUFDLElBQUksQ0FDUCxHQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDekQsT0FBTyxDQUNLLENBQ2YsQ0FDRjtZQUNELE9BQU8sRUFBRSxTQUFTO1NBQ25CLENBQUM7SUFDSixDQUFDOztBQWxKSCx3Q0FtSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2RpclN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luLCBub3JtYWxpemUsIHJlbGF0aXZlLCByZXNvbHZlLCBwb3NpeCwgaXNBYnNvbHV0ZSB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQnVuZGxpbmdPcHRpb25zLFxuICBEb2NrZXJJbWFnZSxcbiAgRmlsZVN5c3RlbSxcbiAgSUxvY2FsQnVuZGxpbmcsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEJ1aWxkRmFpbHVyZSwgQnVpbGRPcHRpb25zLCBCdWlsZFJlc3VsdCB9IGZyb20gJy4vZXNidWlsZC10eXBlcyc7XG5pbXBvcnQgeyBidWlsZFN5bmMgfSBmcm9tICcuL2VzYnVpbGQtd3JhcHBlcic7XG5pbXBvcnQgeyBwcmludEJ1aWxkTWVzc2FnZXMgfSBmcm9tICcuL2Zvcm1hdE1lc3NhZ2VzJztcblxuLyoqXG4gKiBBIHJlbGF0aXZlIHBhdGggb3IgbGlzdCBvciBtYXAgb2YgcmVsYXRpdmUgcGF0aHMgdG8gdGhlIGVudHJ5IHBvaW50cyBvZiB5b3VyIGNvZGUgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdC4gRS5nLiBgc3JjL2luZGV4LnRzYC5cbiAqXG4gKiBAc3RhYmlsaXR5IHN0YWJsZVxuICovXG5leHBvcnQgdHlwZSBFbnRyeVBvaW50cyA9IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuLyoqXG4gKiBAc3RhYmlsaXR5IHN0YWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBCdWlsZCBvcHRpb25zIHBhc3NlZCBvbiB0byBlc2J1aWxkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGVzYnVpbGQgQnVpbGQgQVBJIGRvY3MgZm9yIGRldGFpbHMuXG4gICAqXG4gICAqICogYGJ1aWxkT3B0aW9ucy5vdXRkaXI6IHN0cmluZ2BcbiAgICogVGhlIGFjdHVhbCBwYXRoIGZvciB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpcyBkZWZpbmVkIGJ5IENESy4gSG93ZXZlciBzZXR0aW5nIHRoaXMgb3B0aW9uIGFsbG93cyB0byB3cml0ZSBmaWxlcyBpbnRvIGEgc3ViZGlyZWN0b3J5LiBcXFxuICAgKiBGb3IgZXhhbXBsZSBgeyBvdXRkaXI6ICdqcycgfWAgd2lsbCBjcmVhdGUgYW4gYXNzZXQgd2l0aCBhIHNpbmdsZSBkaXJlY3RvcnkgY2FsbGVkIGBqc2AsIHdoaWNoIGNvbnRhaW5zIGFsbCBidWlsdCBmaWxlcy4gVGhpcyBhcHByb2FjaCBjYW4gYmUgdXNlZnVsIGZvciBzdGF0aWMgd2Vic2l0ZSBkZXBsb3ltZW50cywgd2hlcmUgSmF2YVNjcmlwdCBjb2RlIHNob3VsZCBiZSBwbGFjZWQgaW50byBhIHN1YmRpcmVjdG9yeS4gXFxcbiAgICogKkNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYG91dGZpbGVgKi5cbiAgICogKiBgYnVpbGRPcHRpb25zLm91dGZpbGU6IHN0cmluZ2BcbiAgICogUmVsYXRpdmUgcGF0aCB0byBhIGZpbGUgaW5zaWRlIHRoZSBDREsgYXNzZXQgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICogRm9yIGV4YW1wbGUgYHsgb3V0ZmlsZTogJ2pzL2luZGV4LmpzJyB9YCB3aWxsIGNyZWF0ZSBhbiBhc3NldCB3aXRoIGEgc2luZ2xlIGRpcmVjdG9yeSBjYWxsZWQgYGpzYCwgd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgZmlsZSBgaW5kZXguanNgLiBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gcmVuYW1lIHRoZSBlbnRyeSBwb2ludC4gXFxcbiAgICogKkNhbm5vdCBiZSB1c2VkIHdpdGggbXVsdGlwbGUgZW50cnlQb2ludHMgb3IgdG9nZXRoZXIgd2l0aCBgb3V0ZGlyYC4qXG4gICAqICogYGJ1aWxkT3B0aW9ucy5hYnNXb3JraW5nRGlyOiBzdHJpbmdgXG4gICAqIEFic29sdXRlIHBhdGggdG8gdGhlIFtlc2J1aWxkIHdvcmtpbmcgZGlyZWN0b3J5XShodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jd29ya2luZy1kaXJlY3RvcnkpIGFuZCBkZWZhdWx0cyB0byB0aGUgW2N1cnJlbnQgd29ya2luZyBkaXJlY3RvcnldKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dvcmtpbmdfZGlyZWN0b3J5KS4gXFxcbiAgICogSWYgcGF0aHMgY2Fubm90IGJlIGZvdW5kLCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgdG8gbG9vayBhdCB0aGUgY29uY2F0ZW5hdGlvbiBvZiBgYWJzV29ya2luZ0RpciArIGVudHJ5UG9pbnRgLiBJdCBtdXN0IGFsd2F5cyBiZSBhIHZhbGlkIGFic29sdXRlIHBhdGggcG9pbnRpbmcgdG8gdGhlIGVudHJ5IHBvaW50LiBXaGVuIG5lZWRlZCwgdGhlIHByb2JhYmx5IGVhc2llc3Qgd2F5IHRvIHNldCBhYnNXb3JraW5nRGlyIGlzIHRvIHVzZSBhIGNvbWJpbmF0aW9uIG9mIGByZXNvbHZlYCBhbmQgYF9fZGlybmFtZWAgKHNlZSBcIkxpYnJhcnkgYXV0aG9yc1wiIHNlY3Rpb24gaW4gdGhlIGRvY3VtZW50YXRpb24pLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNidWlsZC1hcGlcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkT3B0aW9ucz86IEJ1aWxkT3B0aW9ucztcblxuICAvKipcbiAgICogQ29weSBhZGRpdGlvbmFsIGZpbGVzIHRvIHRoZSBjb2RlIFthc3NldCBzdGFnaW5nIGRpcmVjdG9yeV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5Bc3NldFN0YWdpbmcuaHRtbCNhYnNvbHV0ZXN0YWdlZHBhdGgpLCBiZWZvcmUgdGhlIGJ1aWxkIHJ1bnMuXG4gICAqIEZpbGVzIGNvcGllZCBsaWtlIHRoaXMgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBlc2J1aWxkIGlmIHRoZXkgc2hhcmUgdGhlIHNhbWUgbmFtZSBhcyBhbnkgb2YgdGhlIG91dHB1dHMuXG4gICAqXG4gICAqICogV2hlbiBwcm92aWRlZCB3aXRoIGEgYHN0cmluZ2Agb3IgYGFycmF5YCwgYWxsIGZpbGVzIGFyZSBjb3BpZWQgdG8gdGhlIHJvb3Qgb2YgYXNzZXQgc3RhZ2luZyBkaXJlY3RvcnkuXG4gICAqICogV2hlbiBnaXZlbiBhIGBtYXBgLCB0aGUga2V5IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gcmVsYXRpdmUgdG8gdGhlIGFzc2V0IHN0YWdpbmcgZGlyZWN0b3J5IGFuZCB0aGUgdmFsdWUgaXMgYSBsaXN0IG9mIGFsbCBzb3VyY2VzIHRvIGJlIGNvcGllZC5cbiAgICpcbiAgICogVGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGZvciBgY29weURpcmAgYXJlIGFsbCBlcXVpdmFsZW50OlxuICAgKiBgYGB0c1xuICAgKiB7IGNvcHlEaXI6IFwicGF0aC90by9zb3VyY2VcIiB9XG4gICAqIHsgY29weURpcjogW1wicGF0aC90by9zb3VyY2VcIl0gfVxuICAgKiB7IGNvcHlEaXI6IHsgXCIuXCI6IFwicGF0aC90by9zb3VyY2VcIiB9IH1cbiAgICogeyBjb3B5RGlyOiB7IFwiLlwiOiBbXCJwYXRoL3RvL3NvdXJjZVwiXSB9IH1cbiAgICogYGBgXG4gICAqIFRoZSBkZXN0aW5hdGlvbiBjYW5ub3QgYmUgb3V0c2lkZSBvZiB0aGUgYXNzZXQgc3RhZ2luZyBkaXJlY3RvcnkuXG4gICAqIElmIHlvdSBhcmUgcmVjZWl2aW5nIHRoZSBlcnJvciBcIkNhbm5vdCBjb3B5IGZpbGVzIHRvIG91dHNpZGUgb2YgdGhlIGFzc2V0IHN0YWdpbmcgZGlyZWN0b3J5LlwiXG4gICAqIHlvdSBhcmUgbGlrZWx5IHVzaW5nIGAuLmAgb3IgYW4gYWJzb2x1dGUgcGF0aCBhcyBrZXkgb24gdGhlIGBjb3B5RGlyYCBtYXAuXG4gICAqIEluc3RlYWQgdXNlIG9ubHkgcmVsYXRpdmUgcGF0aHMgYW5kIGF2b2lkIGAuLmAuXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjb3B5RGlyPzogc3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmcgW10+O1xuXG5cbiAgLyoqXG4gICAqIEVzY2FwZSBoYXRjaCB0byBwcm92aWRlIHRoZSBidW5kbGVyIHdpdGggYSBjdXN0b20gYnVpbGQgZnVuY3Rpb24uXG4gICAqIFRoZSBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgdGhlIGNvbXB1dGVkIG9wdGlvbnMgZnJvbSB0aGUgYnVuZGxlci4gSXQgY2FuIHVzZSB3aXRoIHRoZXNlIG9wdGlvbnMgYXMgaXQgd2lzaGVzLCBob3dldmVyIGBvdXRkaXJgL2BvdXRmaWxlYCBtdXN0IGJlIHJlc3BlY3RlZCB0byBpbnRlZ3JhdGUgd2l0aCBDREsuXG4gICAqIE11c3QgdGhyb3cgYSBgQnVpbGRGYWlsdXJlYCBvbiBmYWlsdXJlIHRvIGNvcnJlY3RseSBpbmZvcm0gdGhlIGJ1bmRsZXIuXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqIEB0eXBlIGVzYnVpbGQuYnVpbGRTeW5jXG4gICAqIEByZXR1cm5zIGVzYnVpbGQuQnVpbGRSZXN1bHRcbiAgICogQHRocm93cyBlc2J1aWxkLkJ1aWxkRmFpbHVyZVxuICAgKiBAZGVmYXVsdCBlc2J1aWxkLmJ1aWxkU3luY1xuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRGbj86IGFueTtcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgYmluYXJ5IHVzZWQgYnkgZXNidWlsZC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBFU0JVSUxEX0JJTkFSWV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcmVhZG9ubHkgZXNidWlsZEJpbmFyeVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTG93LWxldmVsIGNvbnN0cnVjdCB0aGF0IGNhbiBiZSB1c2VkIHdoZXJlIGBCdW5kbGluZ09wdGlvbnNgIGFyZSByZXF1aXJlZC5cbiAqIFRoaXMgY2xhc3MgZGlyZWN0bHkgaW50ZXJmYWNlcyB3aXRoIGVzYnVpbGQgYW5kIHByb3ZpZGVzIGFsbW9zdCBubyBjb25maWd1cmF0aW9uIHNhZmVndWFyZHMuXG4gKlxuICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGNsYXNzIEVzYnVpbGRCdW5kbGVyIHtcbiAgLyoqXG4gICAqIEltcGxlbWVudGF0aW9uIG9mIGBJTG9jYWxCdW5kbGluZ2AgaW50ZXJmYWNlLCByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBlc2J1aWxkIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbDogSUxvY2FsQnVuZGxpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgdmFsdWUgaXMgaWdub3JlZCBzaW5jZSB0aGUgYnVuZGxlciBpcyBhbHdheXMgdXNpbmcgYSBsb2NhbGx5IGluc3RhbGxlZCB2ZXJzaW9uIG9mIGVzYnVpbGQuIEhvd2V2ZXIgdGhlIHByb3BlcnR5IGlzIHJlcXVpcmVkIHRvIGNvbXBseSB3aXRoIHRoZSBgQnVuZGxpbmdPcHRpb25zYCBpbnRlcmZhY2UuXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGltYWdlID0gRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KCdzY3JhdGNoJyk7XG5cbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogQSByZWxhdGl2ZSBwYXRoIG9yIGxpc3Qgb3IgbWFwIG9mIHJlbGF0aXZlIHBhdGhzIHRvIHRoZSBlbnRyeSBwb2ludHMgb2YgeW91ciBjb2RlIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QuXG4gICAgICogRS5nLiBgc3JjL2luZGV4LnRzYC5cbiAgICAgKlxuICAgICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVudHJ5UG9pbnRzOiBFbnRyeVBvaW50cyxcblxuICAgIC8qKlxuICAgICAqIFByb3BzIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBidW5kbGVyLlxuICAgICAqXG4gICAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IEJ1bmRsZXJQcm9wcyxcbiAgKSB7XG4gICAgaWYgKHByb3BzPy5idWlsZE9wdGlvbnM/Lm91dGZpbGUgJiYgcHJvcHM/LmJ1aWxkT3B0aW9ucz8ub3V0ZGlyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgYm90aCBcIm91dGZpbGVcIiBhbmQgXCJvdXRkaXJcIicpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgYnVpbGRGbiA9IGJ1aWxkU3luYyB9ID0gdGhpcy5wcm9wcztcblxuICAgIHRoaXMubG9jYWwgPSB7XG4gICAgICB0cnlCdW5kbGU6IChvdXRwdXREaXI6IHN0cmluZywgX29wdGlvbnM6IEJ1bmRsaW5nT3B0aW9ucyk6IGJvb2xlYW4gPT4ge1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvcHlEaXIpIHtcbiAgICAgICAgICBjb25zdCBjb3B5RGlyID0gdGhpcy5nZXRDb3B5RGlyTGlzdCh0aGlzLnByb3BzLmNvcHlEaXIpO1xuXG4gICAgICAgICAgY29weURpci5mb3JFYWNoKChbZGVzdCwgc3JjXSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3JjRGlyID0gcmVzb2x2ZShcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zPy5hYnNXb3JraW5nRGlyID8/IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgICAgIHNyYyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBkZXN0RGlyID0gcmVzb2x2ZShvdXRwdXREaXIsIGRlc3QpIDtcblxuICAgICAgICAgICAgY29uc3QgZGVzdFRvT3V0cHV0ID0gcmVsYXRpdmUob3V0cHV0RGlyLCBkZXN0RGlyKTtcbiAgICAgICAgICAgIGlmIChkZXN0VG9PdXRwdXQuc3RhcnRzV2l0aCgnLi4nKSB8fCBpc0Fic29sdXRlKGRlc3RUb091dHB1dCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29weSBmaWxlcyB0byBvdXRzaWRlIG9mIHRoZSBhc3NldCBzdGFnaW5nIGRpcmVjdG9yeS4gU2VlIGRvY3MgZm9yIGRldGFpbHMuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1rZGlyU3luYyhkZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIEZpbGVTeXN0ZW0uY29weURpcmVjdG9yeShzcmNEaXIsIGRlc3REaXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFc2J1aWxkQmluYXJ5UGF0aCA9IHByb2Nlc3MuZW52LkVTQlVJTERfQklOQVJZX1BBVEg7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmVzYnVpbGRCaW5hcnlQYXRoKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuRVNCVUlMRF9CSU5BUllfUEFUSCA9IHRoaXMucHJvcHMuZXNidWlsZEJpbmFyeVBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGJ1aWxkUmVzdWx0OiBCdWlsZFJlc3VsdCA9IGJ1aWxkRm4oe1xuICAgICAgICAgICAgZW50cnlQb2ludHMsXG4gICAgICAgICAgICAuLi4odGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zIHx8IHt9KSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0T3V0cHV0T3B0aW9ucyhvdXRwdXREaXIsIHsgbm9ybWFsaXplLCBqb2luIH0pLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcHJpbnRCdWlsZE1lc3NhZ2VzKGJ1aWxkUmVzdWx0LCB7IHByZWZpeDogJ0J1aWxkICcgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcHJpbnRCdWlsZE1lc3NhZ2VzKGVycm9yIGFzIEJ1aWxkRmFpbHVyZSwgeyBwcmVmaXg6ICdCdWlsZCAnIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvY2Vzcy5lbnYuRVNCVUlMRF9CSU5BUllfUEFUSCA9IG9yaWdpbmFsRXNidWlsZEJpbmFyeVBhdGg7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvcHlEaXJMaXN0KGNvcHlEaXI6IEJ1bmRsZXJQcm9wc1snY29weURpciddKTogQXJyYXk8W3N0cmluZywgc3RyaW5nXT4ge1xuICAgIC8vIE5vdGhpbmcgdG8gY29weVxuICAgIGlmICghY29weURpcikge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIExpc3Qgb2Ygc3RyaW5nc1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvcHlEaXIpKSB7XG4gICAgICByZXR1cm4gY29weURpci5tYXAoKHNyYzogc3RyaW5nKSA9PiBbJy4nLCBzcmNdKTtcbiAgICB9XG5cbiAgICAvLyBBIG1hcFxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb3B5RGlyID09PSAnb2JqZWN0JyAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkoY29weURpcikgJiZcbiAgICAgIGNvcHlEaXIgIT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiBPYmplY3RcbiAgICAgICAgLmVudHJpZXMoY29weURpcilcbiAgICAgICAgLmZsYXRNYXAoKFtkZXN0LCBzb3VyY2VzXSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlcy5tYXAoKHNyYykgPT4gW2Rlc3QsIHNyY10pIGFzIEFycmF5PFtzdHJpbmcsIHN0cmluZ10+O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbW2Rlc3QsIHNvdXJjZXNdXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQSBzaW5nbGUgc3RyaW5nXG4gICAgcmV0dXJuIFtbJy4nLCBjb3B5RGlyIGFzIHN0cmluZ11dO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXRPcHRpb25zKFxuICAgIGNka091dHB1dERpcjogc3RyaW5nLFxuICAgIHBhdGg6IFBpY2s8dHlwZW9mIHBvc2l4LCAnbm9ybWFsaXplJyB8ICdqb2luJz4gPSBwb3NpeCxcbiAgKTogQnVpbGRPcHRpb25zIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zPy5vdXRmaWxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdXRkaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgb3V0ZmlsZTogcGF0aC5ub3JtYWxpemUoXG4gICAgICAgICAgcGF0aC5qb2luKFxuICAgICAgICAgICAgLi4uKFtjZGtPdXRwdXREaXIsIHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucz8ub3V0ZmlsZV0uZmlsdGVyKFxuICAgICAgICAgICAgICBCb29sZWFuLFxuICAgICAgICAgICAgKSBhcyBzdHJpbmdbXSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG91dGRpcjogcGF0aC5ub3JtYWxpemUoXG4gICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICAuLi4oW2Nka091dHB1dERpciwgdGhpcy5wcm9wcz8uYnVpbGRPcHRpb25zPy5vdXRkaXJdLmZpbHRlcihcbiAgICAgICAgICAgIEJvb2xlYW4sXG4gICAgICAgICAgKSBhcyBzdHJpbmdbXSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgb3V0ZmlsZTogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
132
|
+
EsbuildBundler[_a] = { fqn: "@mrgrain/cdk-esbuild.EsbuildBundler", version: "3.7.0" };
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQStCO0FBQy9CLCtCQUE2RTtBQUM3RSw2Q0FLcUI7QUFFckIsdURBQThDO0FBQzlDLHFEQUFzRDtBQTJGdEQ7Ozs7O0dBS0c7QUFDSCxNQUFhLGNBQWM7SUFlekI7O09BRUc7SUFDSDtJQUNFOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNhLFdBQXdCO0lBRXhDOzs7O09BSUc7SUFDYSxLQUFtQjtRQVBuQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU94QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBbENyQzs7OztXQUlHO1FBQ2EsVUFBSyxHQUFHLHlCQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBK0IxRCxJQUFJLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFO1lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUVELE1BQU0sRUFBRSxPQUFPLEdBQUcsMkJBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFM0MsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLFNBQVMsRUFBRSxDQUFDLFNBQWlCLEVBQUUsUUFBeUIsRUFBVyxFQUFFO2dCQUVuRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBRXhELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO3dCQUM5QixNQUFNLE1BQU0sR0FBRyxjQUFPLENBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxF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LEdBQUcsRUFBRSxPQUFpQixDQUFDLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sZ0JBQWdCLENBQ3RCLFlBQW9CLEVBQ3BCLE9BQWlELFlBQUs7UUFFdEQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUU7WUFDckMsT0FBTztnQkFDTCxNQUFNLEVBQUUsU0FBUztnQkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3JCLElBQUksQ0FBQyxJQUFJLENBQ1AsR0FBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQzFELE9BQU8sQ0FDSyxDQUNmLENBQ0Y7YUFDRixDQUFDO1NBQ0g7UUFFRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3BCLElBQUksQ0FBQyxJQUFJLENBQ1AsR0FBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQ3pELE9BQU8sQ0FDSyxDQUNmLENBQ0Y7WUFDRCxPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDO0lBQ0osQ0FBQzs7QUE1Skgsd0NBNkpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXJTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiwgbm9ybWFsaXplLCByZWxhdGl2ZSwgcmVzb2x2ZSwgcG9zaXgsIGlzQWJzb2x1dGUgfSBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIEJ1bmRsaW5nT3B0aW9ucyxcbiAgRG9ja2VySW1hZ2UsXG4gIEZpbGVTeXN0ZW0sXG4gIElMb2NhbEJ1bmRsaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBCdWlsZEZhaWx1cmUsIEJ1aWxkT3B0aW9ucywgQnVpbGRSZXN1bHQgfSBmcm9tICcuL2VzYnVpbGQtdHlwZXMnO1xuaW1wb3J0IHsgYnVpbGRTeW5jIH0gZnJvbSAnLi9lc2J1aWxkLXdyYXBwZXInO1xuaW1wb3J0IHsgcHJpbnRCdWlsZE1lc3NhZ2VzIH0gZnJvbSAnLi9mb3JtYXRNZXNzYWdlcyc7XG5cbi8qKlxuICogQSBwYXRoIG9yIGxpc3Qgb3IgbWFwIG9mIHBhdGhzIHRvIHRoZSBlbnRyeSBwb2ludHMgb2YgeW91ciBjb2RlLlxuICpcbiAqIFJlbGF0aXZlIHBhdGhzIGFyZSBieSBkZWZhdWx0IHJlc29sdmVkIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBUbyBjaGFuZ2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCBzZWUgYGJ1aWxkT3B0aW9ucy5hYnNXb3JraW5nRGlyYC5cbiAqXG4gKiBBYnNvbHV0ZSBwYXRocyBjYW4gYmUgdXNlZCBpZiBmaWxlcyBhcmUgcGFydCBvZiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgLSBgJ3NyYy9pbmRleC50cydgXG4gKiAgLSBgcmVxdWlyZS5yZXNvbHZlKCcuL2xhbWJkYScpYFxuICogIC0gYFsnc3JjL2luZGV4LnRzJywgJ3NyYy91dGlsLnRzJ11gXG4gKiAgLSBge29uZTogJ3NyYy90d28udHMnLCB0d286ICdzcmMvb25lLnRzJ31gXG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IHR5cGUgRW50cnlQb2ludHMgPSBzdHJpbmcgfCBzdHJpbmdbXSB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVyUHJvcHMge1xuICAvKipcbiAgICogQnVpbGQgb3B0aW9ucyBwYXNzZWQgb24gdG8gZXNidWlsZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBlc2J1aWxkIEJ1aWxkIEFQSSBkb2NzIGZvciBkZXRhaWxzLlxuICAgKlxuICAgKiAqIGBidWlsZE9wdGlvbnMub3V0ZGlyOiBzdHJpbmdgXG4gICAqIFRoZSBhY3R1YWwgcGF0aCBmb3IgdGhlIG91dHB1dCBkaXJlY3RvcnkgaXMgZGVmaW5lZCBieSBDREsuIEhvd2V2ZXIgc2V0dGluZyB0aGlzIG9wdGlvbiBhbGxvd3MgdG8gd3JpdGUgZmlsZXMgaW50byBhIHN1YmRpcmVjdG9yeS4gXFxcbiAgICogRm9yIGV4YW1wbGUgYHsgb3V0ZGlyOiAnanMnIH1gIHdpbGwgY3JlYXRlIGFuIGFzc2V0IHdpdGggYSBzaW5nbGUgZGlyZWN0b3J5IGNhbGxlZCBganNgLCB3aGljaCBjb250YWlucyBhbGwgYnVpbHQgZmlsZXMuIFRoaXMgYXBwcm9hY2ggY2FuIGJlIHVzZWZ1bCBmb3Igc3RhdGljIHdlYnNpdGUgZGVwbG95bWVudHMsIHdoZXJlIEphdmFTY3JpcHQgY29kZSBzaG91bGQgYmUgcGxhY2VkIGludG8gYSBzdWJkaXJlY3RvcnkuIFxcXG4gICAqICpDYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIGBvdXRmaWxlYCouXG4gICAqICogYGJ1aWxkT3B0aW9ucy5vdXRmaWxlOiBzdHJpbmdgXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gYSBmaWxlIGluc2lkZSB0aGUgQ0RLIGFzc2V0IG91dHB1dCBkaXJlY3RvcnkuXG4gICAqIEZvciBleGFtcGxlIGB7IG91dGZpbGU6ICdqcy9pbmRleC5qcycgfWAgd2lsbCBjcmVhdGUgYW4gYXNzZXQgd2l0aCBhIHNpbmdsZSBkaXJlY3RvcnkgY2FsbGVkIGBqc2AsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIGZpbGUgYGluZGV4LmpzYC4gVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHJlbmFtZSB0aGUgZW50cnkgcG9pbnQuIFxcXG4gICAqICpDYW5ub3QgYmUgdXNlZCB3aXRoIG11bHRpcGxlIGVudHJ5UG9pbnRzIG9yIHRvZ2V0aGVyIHdpdGggYG91dGRpcmAuKlxuICAgKiAqIGBidWlsZE9wdGlvbnMuYWJzV29ya2luZ0Rpcjogc3RyaW5nYFxuICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBbZXNidWlsZCB3b3JraW5nIGRpcmVjdG9yeV0oaHR0cHM6Ly9lc2J1aWxkLmdpdGh1Yi5pby9hcGkvI3dvcmtpbmctZGlyZWN0b3J5KSBhbmQgZGVmYXVsdHMgdG8gdGhlIFtjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Xb3JraW5nX2RpcmVjdG9yeSkuIFxcXG4gICAqIElmIHBhdGhzIGNhbm5vdCBiZSBmb3VuZCwgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlzIHRvIGxvb2sgYXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgYGFic1dvcmtpbmdEaXIgKyBlbnRyeVBvaW50YC4gSXQgbXVzdCBhbHdheXMgYmUgYSB2YWxpZCBhYnNvbHV0ZSBwYXRoIHBvaW50aW5nIHRvIHRoZSBlbnRyeSBwb2ludC4gV2hlbiBuZWVkZWQsIHRoZSBwcm9iYWJseSBlYXNpZXN0IHdheSB0byBzZXQgYWJzV29ya2luZ0RpciBpcyB0byB1c2UgYSBjb21iaW5hdGlvbiBvZiBgcmVzb2x2ZWAgYW5kIGBfX2Rpcm5hbWVgIChzZWUgXCJMaWJyYXJ5IGF1dGhvcnNcIiBzZWN0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uKS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jYnVpbGQtYXBpXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBidWlsZE9wdGlvbnM/OiBCdWlsZE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENvcHkgYWRkaXRpb25hbCBmaWxlcyB0byB0aGUgY29kZSBbYXNzZXQgc3RhZ2luZyBkaXJlY3RvcnldKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuQXNzZXRTdGFnaW5nLmh0bWwjYWJzb2x1dGVzdGFnZWRwYXRoKSwgYmVmb3JlIHRoZSBidWlsZCBydW5zLlxuICAgKiBGaWxlcyBjb3BpZWQgbGlrZSB0aGlzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZXNidWlsZCBpZiB0aGV5IHNoYXJlIHRoZSBzYW1lIG5hbWUgYXMgYW55IG9mIHRoZSBvdXRwdXRzLlxuICAgKlxuICAgKiAqIFdoZW4gcHJvdmlkZWQgd2l0aCBhIGBzdHJpbmdgIG9yIGBhcnJheWAsIGFsbCBmaWxlcyBhcmUgY29waWVkIHRvIHRoZSByb290IG9mIGFzc2V0IHN0YWdpbmcgZGlyZWN0b3J5LlxuICAgKiAqIFdoZW4gZ2l2ZW4gYSBgbWFwYCwgdGhlIGtleSBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIHJlbGF0aXZlIHRvIHRoZSBhc3NldCBzdGFnaW5nIGRpcmVjdG9yeSBhbmQgdGhlIHZhbHVlIGlzIGEgbGlzdCBvZiBhbGwgc291cmNlcyB0byBiZSBjb3BpZWQuXG4gICAqXG4gICAqIFRoZXJlZm9yZSB0aGUgZm9sbG93aW5nIHZhbHVlcyBmb3IgYGNvcHlEaXJgIGFyZSBhbGwgZXF1aXZhbGVudDpcbiAgICogYGBgdHNcbiAgICogeyBjb3B5RGlyOiBcInBhdGgvdG8vc291cmNlXCIgfVxuICAgKiB7IGNvcHlEaXI6IFtcInBhdGgvdG8vc291cmNlXCJdIH1cbiAgICogeyBjb3B5RGlyOiB7IFwiLlwiOiBcInBhdGgvdG8vc291cmNlXCIgfSB9XG4gICAqIHsgY29weURpcjogeyBcIi5cIjogW1wicGF0aC90by9zb3VyY2VcIl0gfSB9XG4gICAqIGBgYFxuICAgKiBUaGUgZGVzdGluYXRpb24gY2Fubm90IGJlIG91dHNpZGUgb2YgdGhlIGFzc2V0IHN0YWdpbmcgZGlyZWN0b3J5LlxuICAgKiBJZiB5b3UgYXJlIHJlY2VpdmluZyB0aGUgZXJyb3IgXCJDYW5ub3QgY29weSBmaWxlcyB0byBvdXRzaWRlIG9mIHRoZSBhc3NldCBzdGFnaW5nIGRpcmVjdG9yeS5cIlxuICAgKiB5b3UgYXJlIGxpa2VseSB1c2luZyBgLi5gIG9yIGFuIGFic29sdXRlIHBhdGggYXMga2V5IG9uIHRoZSBgY29weURpcmAgbWFwLlxuICAgKiBJbnN0ZWFkIHVzZSBvbmx5IHJlbGF0aXZlIHBhdGhzIGFuZCBhdm9pZCBgLi5gLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgY29weURpcj86IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nIFtdPjtcblxuXG4gIC8qKlxuICAgKiBFc2NhcGUgaGF0Y2ggdG8gcHJvdmlkZSB0aGUgYnVuZGxlciB3aXRoIGEgY3VzdG9tIGJ1aWxkIGZ1bmN0aW9uLlxuICAgKiBUaGUgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHRoZSBjb21wdXRlZCBvcHRpb25zIGZyb20gdGhlIGJ1bmRsZXIuIEl0IGNhbiB1c2Ugd2l0aCB0aGVzZSBvcHRpb25zIGFzIGl0IHdpc2hlcywgaG93ZXZlciBgb3V0ZGlyYC9gb3V0ZmlsZWAgbXVzdCBiZSByZXNwZWN0ZWQgdG8gaW50ZWdyYXRlIHdpdGggQ0RLLlxuICAgKiBNdXN0IHRocm93IGEgYEJ1aWxkRmFpbHVyZWAgb24gZmFpbHVyZSB0byBjb3JyZWN0bHkgaW5mb3JtIHRoZSBidW5kbGVyLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKiBAdHlwZSBlc2J1aWxkLmJ1aWxkU3luY1xuICAgKiBAcmV0dXJucyBlc2J1aWxkLkJ1aWxkUmVzdWx0XG4gICAqIEB0aHJvd3MgZXNidWlsZC5CdWlsZEZhaWx1cmVcbiAgICogQGRlZmF1bHQgZXNidWlsZC5idWlsZFN5bmNcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkRm4/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGJpbmFyeSB1c2VkIGJ5IGVzYnVpbGQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyB0aGUgRVNCVUlMRF9CSU5BUllfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICpcbiAgICogQHN0YWJpbGl0eSBleHBlcmltZW50YWxcbiAgICovXG4gIHJlYWRvbmx5IGVzYnVpbGRCaW5hcnlQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIExvdy1sZXZlbCBjb25zdHJ1Y3QgdGhhdCBjYW4gYmUgdXNlZCB3aGVyZSBgQnVuZGxpbmdPcHRpb25zYCBhcmUgcmVxdWlyZWQuXG4gKiBUaGlzIGNsYXNzIGRpcmVjdGx5IGludGVyZmFjZXMgd2l0aCBlc2J1aWxkIGFuZCBwcm92aWRlcyBhbG1vc3Qgbm8gY29uZmlndXJhdGlvbiBzYWZlZ3VhcmRzLlxuICpcbiAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjbGFzcyBFc2J1aWxkQnVuZGxlciB7XG4gIC8qKlxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBgSUxvY2FsQnVuZGxpbmdgIGludGVyZmFjZSwgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgZXNidWlsZCBmdW5jdGlvbnMuXG4gICAqXG4gICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYWw6IElMb2NhbEJ1bmRsaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIHZhbHVlIGlzIGlnbm9yZWQgc2luY2UgdGhlIGJ1bmRsZXIgaXMgYWx3YXlzIHVzaW5nIGEgbG9jYWxseSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBlc2J1aWxkLiBIb3dldmVyIHRoZSBwcm9wZXJ0eSBpcyByZXF1aXJlZCB0byBjb21wbHkgd2l0aCB0aGUgYEJ1bmRsaW5nT3B0aW9uc2AgaW50ZXJmYWNlLlxuICAgKlxuICAgKiBAc3RhYmlsaXR5IGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpbWFnZSA9IERvY2tlckltYWdlLmZyb21SZWdpc3RyeSgnc2NyYXRjaCcpO1xuXG4gIC8qKlxuICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIEEgcGF0aCBvciBsaXN0IG9yIG1hcCBvZiBwYXRocyB0byB0aGUgZW50cnkgcG9pbnRzIG9mIHlvdXIgY29kZS5cbiAgICAgKlxuICAgICAqIFJlbGF0aXZlIHBhdGhzIGFyZSBieSBkZWZhdWx0IHJlc29sdmVkIGZyb20gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gICAgICogVG8gY2hhbmdlIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgc2VlIGBidWlsZE9wdGlvbnMuYWJzV29ya2luZ0RpcmAuXG4gICAgICpcbiAgICAgKiBBYnNvbHV0ZSBwYXRocyBjYW4gYmUgdXNlZCBpZiBmaWxlcyBhcmUgcGFydCBvZiB0aGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAgICpcbiAgICAgKiBFeGFtcGxlczpcbiAgICAgKiAgLSBgJ3NyYy9pbmRleC50cydgXG4gICAgICogIC0gYHJlcXVpcmUucmVzb2x2ZSgnLi9sYW1iZGEnKWBcbiAgICAgKiAgLSBgWydzcmMvaW5kZXgudHMnLCAnc3JjL3V0aWwudHMnXWBcbiAgICAgKiAgLSBge29uZTogJ3NyYy90d28udHMnLCB0d286ICdzcmMvb25lLnRzJ31gXG4gICAgICpcbiAgICAgKiBAc3RhYmlsaXR5IGV4cGVyaW1lbnRhbFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlbnRyeVBvaW50czogRW50cnlQb2ludHMsXG5cbiAgICAvKipcbiAgICAgKiBQcm9wcyB0byBjaGFuZ2UgdGhlIGJlaGF2aW91ciBvZiB0aGUgYnVuZGxlci5cbiAgICAgKlxuICAgICAqIEBzdGFiaWxpdHkgZXhwZXJpbWVudGFsXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBCdW5kbGVyUHJvcHMsXG4gICkge1xuICAgIGlmIChwcm9wcz8uYnVpbGRPcHRpb25zPy5vdXRmaWxlICYmIHByb3BzPy5idWlsZE9wdGlvbnM/Lm91dGRpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIGJvdGggXCJvdXRmaWxlXCIgYW5kIFwib3V0ZGlyXCInKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGJ1aWxkRm4gPSBidWlsZFN5bmMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLmxvY2FsID0ge1xuICAgICAgdHJ5QnVuZGxlOiAob3V0cHV0RGlyOiBzdHJpbmcsIF9vcHRpb25zOiBCdW5kbGluZ09wdGlvbnMpOiBib29sZWFuID0+IHtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5jb3B5RGlyKSB7XG4gICAgICAgICAgY29uc3QgY29weURpciA9IHRoaXMuZ2V0Q29weURpckxpc3QodGhpcy5wcm9wcy5jb3B5RGlyKTtcblxuICAgICAgICAgIGNvcHlEaXIuZm9yRWFjaCgoW2Rlc3QsIHNyY10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNyY0RpciA9IHJlc29sdmUoXG4gICAgICAgICAgICAgIHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucz8uYWJzV29ya2luZ0RpciA/PyBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgICAgICBzcmMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZGVzdERpciA9IHJlc29sdmUob3V0cHV0RGlyLCBkZXN0KSA7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc3RUb091dHB1dCA9IHJlbGF0aXZlKG91dHB1dERpciwgZGVzdERpcik7XG4gICAgICAgICAgICBpZiAoZGVzdFRvT3V0cHV0LnN0YXJ0c1dpdGgoJy4uJykgfHwgaXNBYnNvbHV0ZShkZXN0VG9PdXRwdXQpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvcHkgZmlsZXMgdG8gb3V0c2lkZSBvZiB0aGUgYXNzZXQgc3RhZ2luZyBkaXJlY3RvcnkuIFNlZSBkb2NzIGZvciBkZXRhaWxzLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBta2RpclN5bmMoZGVzdERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBGaWxlU3lzdGVtLmNvcHlEaXJlY3Rvcnkoc3JjRGlyLCBkZXN0RGlyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRXNidWlsZEJpbmFyeVBhdGggPSBwcm9jZXNzLmVudi5FU0JVSUxEX0JJTkFSWV9QQVRIO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5lc2J1aWxkQmluYXJ5UGF0aCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52LkVTQlVJTERfQklOQVJZX1BBVEggPSB0aGlzLnByb3BzLmVzYnVpbGRCaW5hcnlQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBidWlsZFJlc3VsdDogQnVpbGRSZXN1bHQgPSBidWlsZEZuKHtcbiAgICAgICAgICAgIGVudHJ5UG9pbnRzLFxuICAgICAgICAgICAgLi4uKHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucyB8fCB7fSksXG4gICAgICAgICAgICAuLi50aGlzLmdldE91dHB1dE9wdGlvbnMob3V0cHV0RGlyLCB7IG5vcm1hbGl6ZSwgam9pbiB9KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHByaW50QnVpbGRNZXNzYWdlcyhidWlsZFJlc3VsdCwgeyBwcmVmaXg6ICdCdWlsZCAnIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHByaW50QnVpbGRNZXNzYWdlcyhlcnJvciBhcyBCdWlsZEZhaWx1cmUsIHsgcHJlZml4OiAnQnVpbGQgJyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb2Nlc3MuZW52LkVTQlVJTERfQklOQVJZX1BBVEggPSBvcmlnaW5hbEVzYnVpbGRCaW5hcnlQYXRoO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3B5RGlyTGlzdChjb3B5RGlyOiBCdW5kbGVyUHJvcHNbJ2NvcHlEaXInXSk6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+IHtcbiAgICAvLyBOb3RoaW5nIHRvIGNvcHlcbiAgICBpZiAoIWNvcHlEaXIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyBMaXN0IG9mIHN0cmluZ3NcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb3B5RGlyKSkge1xuICAgICAgcmV0dXJuIGNvcHlEaXIubWFwKChzcmM6IHN0cmluZykgPT4gWycuJywgc3JjXSk7XG4gICAgfVxuXG4gICAgLy8gQSBtYXBcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgY29weURpciA9PT0gJ29iamVjdCcgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KGNvcHlEaXIpICYmXG4gICAgICBjb3B5RGlyICE9PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gT2JqZWN0XG4gICAgICAgIC5lbnRyaWVzKGNvcHlEaXIpXG4gICAgICAgIC5mbGF0TWFwKChbZGVzdCwgc291cmNlc10pID0+IHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2VzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZXMubWFwKChzcmMpID0+IFtkZXN0LCBzcmNdKSBhcyBBcnJheTxbc3RyaW5nLCBzdHJpbmddPjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gW1tkZXN0LCBzb3VyY2VzXV07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEEgc2luZ2xlIHN0cmluZ1xuICAgIHJldHVybiBbWycuJywgY29weURpciBhcyBzdHJpbmddXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3V0cHV0T3B0aW9ucyhcbiAgICBjZGtPdXRwdXREaXI6IHN0cmluZyxcbiAgICBwYXRoOiBQaWNrPHR5cGVvZiBwb3NpeCwgJ25vcm1hbGl6ZScgfCAnam9pbic+ID0gcG9zaXgsXG4gICk6IEJ1aWxkT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucz8ub3V0ZmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0ZGlyOiB1bmRlZmluZWQsXG4gICAgICAgIG91dGZpbGU6IHBhdGgubm9ybWFsaXplKFxuICAgICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICAgIC4uLihbY2RrT3V0cHV0RGlyLCB0aGlzLnByb3BzPy5idWlsZE9wdGlvbnM/Lm91dGZpbGVdLmZpbHRlcihcbiAgICAgICAgICAgICAgQm9vbGVhbixcbiAgICAgICAgICAgICkgYXMgc3RyaW5nW10pLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvdXRkaXI6IHBhdGgubm9ybWFsaXplKFxuICAgICAgICBwYXRoLmpvaW4oXG4gICAgICAgICAgLi4uKFtjZGtPdXRwdXREaXIsIHRoaXMucHJvcHM/LmJ1aWxkT3B0aW9ucz8ub3V0ZGlyXS5maWx0ZXIoXG4gICAgICAgICAgICBCb29sZWFuLFxuICAgICAgICAgICkgYXMgc3RyaW5nW10pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIG91dGZpbGU6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG59XG4iXX0=
|