@effect-aws/client-ec2 1.2.1 → 1.4.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/CHANGELOG.md +14 -0
- package/LICENSE +1 -1
- package/README.md +58 -1
- package/lib/EC2ClientInstance.d.ts +1 -1
- package/lib/EC2ClientInstance.js +3 -3
- package/lib/EC2ClientInstanceConfig.d.ts +1 -3
- package/lib/EC2ClientInstanceConfig.js +12 -38
- package/lib/EC2Service.d.ts +1489 -1265
- package/lib/EC2Service.js +80 -23
- package/lib/Errors.d.ts +1 -1
- package/lib/Errors.js +4 -27
- package/lib/esm/EC2ClientInstance.js +3 -3
- package/lib/esm/EC2ClientInstanceConfig.js +2 -5
- package/lib/esm/EC2Service.js +81 -24
- package/lib/esm/Errors.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @effect-aws/client-ec2
|
|
2
2
|
|
|
3
|
+
## 1.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`ca9ea34`](https://github.com/floydspace/effect-aws/commit/ca9ea3451567a2ab25a5919ea79b9169605890d6) Thanks [@floydspace](https://github.com/floydspace)! - updates is sdk client functions
|
|
8
|
+
|
|
9
|
+
- [#93](https://github.com/floydspace/effect-aws/pull/93) [`a96fbd8`](https://github.com/floydspace/effect-aws/commit/a96fbd8840a7a6cfb795a2a6ab96aa32d32a3525) Thanks [@godu](https://github.com/godu)! - Destroy client after layer lifecycle to release idle connections.
|
|
10
|
+
|
|
11
|
+
## 1.3.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [#80](https://github.com/floydspace/effect-aws/pull/80) [`4b16fbe`](https://github.com/floydspace/effect-aws/commit/4b16fbebce8131df7798ee92f43cf6b7df3e907c) Thanks [@floydspace](https://github.com/floydspace)! - simplify layers configuration (closes #78)
|
|
16
|
+
|
|
3
17
|
## 1.2.1
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1 +1,58 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @effect-aws/client-ec2
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@effect-aws/client-ec2)
|
|
4
|
+
[](https://www.npmjs.com/package/@effect-aws/client-ec2)
|
|
5
|
+
|
|
6
|
+
## Installation
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install --save @effect-aws/client-ec2
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
With default EC2Client instance:
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { EC2 } from "@effect-aws/client-ec2";
|
|
18
|
+
|
|
19
|
+
const program = EC2.acceptAddressTransfer(args);
|
|
20
|
+
|
|
21
|
+
const result = pipe(
|
|
22
|
+
program,
|
|
23
|
+
Effect.provide(EC2.defaultLayer),
|
|
24
|
+
Effect.runPromise,
|
|
25
|
+
);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
With custom EC2Client instance:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { EC2 } from "@effect-aws/client-ec2";
|
|
32
|
+
|
|
33
|
+
const program = EC2.acceptAddressTransfer(args);
|
|
34
|
+
|
|
35
|
+
const result = await pipe(
|
|
36
|
+
program,
|
|
37
|
+
Effect.provide(
|
|
38
|
+
EC2.baseLayer(() => new EC2Client({ region: "eu-central-1" })),
|
|
39
|
+
),
|
|
40
|
+
Effect.runPromise,
|
|
41
|
+
);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
With custom EC2Client configuration:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { EC2 } from "@effect-aws/client-ec2";
|
|
48
|
+
|
|
49
|
+
const program = EC2.acceptAddressTransfer(args);
|
|
50
|
+
|
|
51
|
+
const result = await pipe(
|
|
52
|
+
program,
|
|
53
|
+
Effect.provide(EC2.layer({ region: "eu-central-1" })),
|
|
54
|
+
Effect.runPromiseExit,
|
|
55
|
+
);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
or use `EC2.baseLayer((default) => new EC2Client({ ...default, region: "eu-central-1" }))`
|
|
@@ -17,7 +17,7 @@ export declare class EC2ClientInstance extends EC2ClientInstance_base {
|
|
|
17
17
|
* @since 1.0.0
|
|
18
18
|
* @category constructors
|
|
19
19
|
*/
|
|
20
|
-
export declare const makeEC2ClientInstance: Effect.Effect<EC2Client, never, EC2ClientInstanceConfig>;
|
|
20
|
+
export declare const makeEC2ClientInstance: Effect.Effect<EC2Client, never, import("effect/Scope").Scope | EC2ClientInstanceConfig>;
|
|
21
21
|
/**
|
|
22
22
|
* @since 1.0.0
|
|
23
23
|
* @category layers
|
package/lib/EC2ClientInstance.js
CHANGED
|
@@ -43,15 +43,15 @@ exports.EC2ClientInstance = EC2ClientInstance;
|
|
|
43
43
|
* @since 1.0.0
|
|
44
44
|
* @category constructors
|
|
45
45
|
*/
|
|
46
|
-
exports.makeEC2ClientInstance = Effect.
|
|
46
|
+
exports.makeEC2ClientInstance = Effect.flatMap(EC2ClientInstanceConfig_1.EC2ClientInstanceConfig, (config) => Effect.acquireRelease(Effect.sync(() => new client_ec2_1.EC2Client(config)), (client) => Effect.sync(() => client.destroy())));
|
|
47
47
|
/**
|
|
48
48
|
* @since 1.0.0
|
|
49
49
|
* @category layers
|
|
50
50
|
*/
|
|
51
|
-
exports.EC2ClientInstanceLayer = Layer.
|
|
51
|
+
exports.EC2ClientInstanceLayer = Layer.scoped(EC2ClientInstance, exports.makeEC2ClientInstance);
|
|
52
52
|
/**
|
|
53
53
|
* @since 1.0.0
|
|
54
54
|
* @category layers
|
|
55
55
|
*/
|
|
56
56
|
exports.DefaultEC2ClientInstanceLayer = exports.EC2ClientInstanceLayer.pipe(Layer.provide(EC2ClientInstanceConfig_1.DefaultEC2ClientConfigLayer));
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUMyQ2xpZW50SW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRUMyQ2xpZW50SW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILG9EQUFnRDtBQUNoRCx3REFBMEM7QUFDMUMsc0RBQXdDO0FBQ3hDLG9EQUFzQztBQUN0Qyx1RUFHbUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxPQUFPLENBQUMsR0FBRyxDQUNoRCwwQ0FBMEMsQ0FDM0MsRUFBZ0M7Q0FBRztBQUZwQyw4Q0FFb0M7QUFFcEM7OztHQUdHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUNqRCxpREFBdUIsRUFDdkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULE1BQU0sQ0FBQyxjQUFjLENBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3hDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUNoRCxDQUNKLENBQUM7QUFFRjs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2hELGlCQUFpQixFQUNqQiw2QkFBcUIsQ0FDdEIsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQUcsOEJBQXNCLENBQUMsSUFBSSxDQUN0RSxLQUFLLENBQUMsT0FBTyxDQUFDLHFEQUEyQixDQUFDLENBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgeyBFQzJDbGllbnQgfSBmcm9tIFwiQGF3cy1zZGsvY2xpZW50LWVjMlwiO1xuaW1wb3J0ICogYXMgQ29udGV4dCBmcm9tIFwiZWZmZWN0L0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgTGF5ZXIgZnJvbSBcImVmZmVjdC9MYXllclwiO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEVDMkNsaWVudENvbmZpZ0xheWVyLFxuICBFQzJDbGllbnRJbnN0YW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vRUMyQ2xpZW50SW5zdGFuY2VDb25maWdcIjtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSB0YWdzXG4gKi9cbmV4cG9ydCBjbGFzcyBFQzJDbGllbnRJbnN0YW5jZSBleHRlbmRzIENvbnRleHQuVGFnKFxuICBcIkBlZmZlY3QtYXdzL2NsaWVudC1lYzIvRUMyQ2xpZW50SW5zdGFuY2VcIixcbik8RUMyQ2xpZW50SW5zdGFuY2UsIEVDMkNsaWVudD4oKSB7fVxuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGNvbnN0cnVjdG9yc1xuICovXG5leHBvcnQgY29uc3QgbWFrZUVDMkNsaWVudEluc3RhbmNlID0gRWZmZWN0LmZsYXRNYXAoXG4gIEVDMkNsaWVudEluc3RhbmNlQ29uZmlnLFxuICAoY29uZmlnKSA9PlxuICAgIEVmZmVjdC5hY3F1aXJlUmVsZWFzZShcbiAgICAgIEVmZmVjdC5zeW5jKCgpID0+IG5ldyBFQzJDbGllbnQoY29uZmlnKSksXG4gICAgICAoY2xpZW50KSA9PiBFZmZlY3Quc3luYygoKSA9PiBjbGllbnQuZGVzdHJveSgpKSxcbiAgICApLFxuKTtcblxuLyoqXG4gKiBAc2luY2UgMS4wLjBcbiAqIEBjYXRlZ29yeSBsYXllcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEVDMkNsaWVudEluc3RhbmNlTGF5ZXIgPSBMYXllci5zY29wZWQoXG4gIEVDMkNsaWVudEluc3RhbmNlLFxuICBtYWtlRUMyQ2xpZW50SW5zdGFuY2UsXG4pO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IGxheWVyc1xuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdEVDMkNsaWVudEluc3RhbmNlTGF5ZXIgPSBFQzJDbGllbnRJbnN0YW5jZUxheWVyLnBpcGUoXG4gIExheWVyLnByb3ZpZGUoRGVmYXVsdEVDMkNsaWVudENvbmZpZ0xheWVyKSxcbik7XG4iXX0=
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type { EC2ClientConfig } from "@aws-sdk/client-ec2";
|
|
5
|
-
import
|
|
6
|
-
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Layer from "effect/Layer";
|
|
5
|
+
import { Context, Effect, Layer } from "effect";
|
|
8
6
|
declare const EC2ClientInstanceConfig_base: Context.TagClass<EC2ClientInstanceConfig, "@effect-aws/client-ec2/EC2ClientInstanceConfig", EC2ClientConfig>;
|
|
9
7
|
/**
|
|
10
8
|
* @since 1.0.0
|
|
@@ -1,63 +1,37 @@
|
|
|
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 (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.DefaultEC2ClientConfigLayer = exports.makeDefaultEC2ClientInstanceConfig = exports.EC2ClientInstanceConfig = void 0;
|
|
27
|
-
const
|
|
28
|
-
const Effect = __importStar(require("effect/Effect"));
|
|
29
|
-
const Layer = __importStar(require("effect/Layer"));
|
|
30
|
-
const Runtime = __importStar(require("effect/Runtime"));
|
|
4
|
+
const effect_1 = require("effect");
|
|
31
5
|
/**
|
|
32
6
|
* @since 1.0.0
|
|
33
7
|
* @category tags
|
|
34
8
|
*/
|
|
35
|
-
class EC2ClientInstanceConfig extends Context.Tag("@effect-aws/client-ec2/EC2ClientInstanceConfig")() {
|
|
9
|
+
class EC2ClientInstanceConfig extends effect_1.Context.Tag("@effect-aws/client-ec2/EC2ClientInstanceConfig")() {
|
|
36
10
|
}
|
|
37
11
|
exports.EC2ClientInstanceConfig = EC2ClientInstanceConfig;
|
|
38
12
|
/**
|
|
39
13
|
* @since 1.0.0
|
|
40
14
|
* @category constructors
|
|
41
15
|
*/
|
|
42
|
-
exports.makeDefaultEC2ClientInstanceConfig = Effect.gen(function* (_) {
|
|
43
|
-
const runtime = yield* _(Effect.runtime());
|
|
44
|
-
const runSync = Runtime.runSync(runtime);
|
|
16
|
+
exports.makeDefaultEC2ClientInstanceConfig = effect_1.Effect.gen(function* (_) {
|
|
17
|
+
const runtime = yield* _(effect_1.Effect.runtime());
|
|
18
|
+
const runSync = effect_1.Runtime.runSync(runtime);
|
|
45
19
|
return {
|
|
46
20
|
logger: {
|
|
47
21
|
info(m) {
|
|
48
|
-
Effect.logInfo(m).pipe(runSync);
|
|
22
|
+
effect_1.Effect.logInfo(m).pipe(runSync);
|
|
49
23
|
},
|
|
50
24
|
warn(m) {
|
|
51
|
-
Effect.logWarning(m).pipe(runSync);
|
|
25
|
+
effect_1.Effect.logWarning(m).pipe(runSync);
|
|
52
26
|
},
|
|
53
27
|
error(m) {
|
|
54
|
-
Effect.logError(m).pipe(runSync);
|
|
28
|
+
effect_1.Effect.logError(m).pipe(runSync);
|
|
55
29
|
},
|
|
56
30
|
debug(m) {
|
|
57
|
-
Effect.logDebug(m).pipe(runSync);
|
|
31
|
+
effect_1.Effect.logDebug(m).pipe(runSync);
|
|
58
32
|
},
|
|
59
33
|
trace(m) {
|
|
60
|
-
Effect.logTrace(m).pipe(runSync);
|
|
34
|
+
effect_1.Effect.logTrace(m).pipe(runSync);
|
|
61
35
|
},
|
|
62
36
|
},
|
|
63
37
|
};
|
|
@@ -66,5 +40,5 @@ exports.makeDefaultEC2ClientInstanceConfig = Effect.gen(function* (_) {
|
|
|
66
40
|
* @since 1.0.0
|
|
67
41
|
* @category layers
|
|
68
42
|
*/
|
|
69
|
-
exports.DefaultEC2ClientConfigLayer = Layer.effect(EC2ClientInstanceConfig, exports.makeDefaultEC2ClientInstanceConfig);
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
exports.DefaultEC2ClientConfigLayer = effect_1.Layer.effect(EC2ClientInstanceConfig, exports.makeDefaultEC2ClientInstanceConfig);
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRUMyQ2xpZW50SW5zdGFuY2VDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvRUMyQ2xpZW50SW5zdGFuY2VDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQXlEO0FBRXpEOzs7R0FHRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsZ0JBQU8sQ0FBQyxHQUFHLENBQ3RELGdEQUFnRCxDQUNqRCxFQUE0QztDQUFHO0FBRmhELDBEQUVnRDtBQUVoRDs7O0dBR0c7QUFDVSxRQUFBLGtDQUFrQyxHQUM3QyxlQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQU0sQ0FBQyxPQUFPLEVBQVMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sT0FBTyxHQUFHLGdCQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLENBQUMsQ0FBQztnQkFDSixlQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLENBQUM7Z0JBQ0osZUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELEtBQUssQ0FBQyxDQUFDO2dCQUNMLGVBQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQztnQkFDTCxlQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUM7Z0JBQ0wsZUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUw7OztHQUdHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxjQUFLLENBQUMsTUFBTSxDQUNyRCx1QkFBdUIsRUFDdkIsMENBQWtDLENBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5pbXBvcnQgdHlwZSB7IEVDMkNsaWVudENvbmZpZyB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtZWMyXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBFZmZlY3QsIExheWVyLCBSdW50aW1lIH0gZnJvbSBcImVmZmVjdFwiO1xuXG4vKipcbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IHRhZ3NcbiAqL1xuZXhwb3J0IGNsYXNzIEVDMkNsaWVudEluc3RhbmNlQ29uZmlnIGV4dGVuZHMgQ29udGV4dC5UYWcoXG4gIFwiQGVmZmVjdC1hd3MvY2xpZW50LWVjMi9FQzJDbGllbnRJbnN0YW5jZUNvbmZpZ1wiLFxuKTxFQzJDbGllbnRJbnN0YW5jZUNvbmZpZywgRUMyQ2xpZW50Q29uZmlnPigpIHt9XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgY29uc3RydWN0b3JzXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlRGVmYXVsdEVDMkNsaWVudEluc3RhbmNlQ29uZmlnOiBFZmZlY3QuRWZmZWN0PEVDMkNsaWVudENvbmZpZz4gPVxuICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoXykge1xuICAgIGNvbnN0IHJ1bnRpbWUgPSB5aWVsZCogXyhFZmZlY3QucnVudGltZTxuZXZlcj4oKSk7XG4gICAgY29uc3QgcnVuU3luYyA9IFJ1bnRpbWUucnVuU3luYyhydW50aW1lKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsb2dnZXI6IHtcbiAgICAgICAgaW5mbyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0luZm8obSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgd2FybihtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ1dhcm5pbmcobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3IobSkge1xuICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihtKS5waXBlKHJ1blN5bmMpO1xuICAgICAgICB9LFxuICAgICAgICBkZWJ1ZyhtKSB7XG4gICAgICAgICAgRWZmZWN0LmxvZ0RlYnVnKG0pLnBpcGUocnVuU3luYyk7XG4gICAgICAgIH0sXG4gICAgICAgIHRyYWNlKG0pIHtcbiAgICAgICAgICBFZmZlY3QubG9nVHJhY2UobSkucGlwZShydW5TeW5jKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQHNpbmNlIDEuMC4wXG4gKiBAY2F0ZWdvcnkgbGF5ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEZWZhdWx0RUMyQ2xpZW50Q29uZmlnTGF5ZXIgPSBMYXllci5lZmZlY3QoXG4gIEVDMkNsaWVudEluc3RhbmNlQ29uZmlnLFxuICBtYWtlRGVmYXVsdEVDMkNsaWVudEluc3RhbmNlQ29uZmlnLFxuKTtcbiJdfQ==
|