psadk 1.2.4 → 1.3.1
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/build/main/lib/PSAI.d.ts +14 -1
- package/build/main/lib/PSAI.js +54 -7
- package/build/main/lib/PSAgent.js +2 -1
- package/build/main/lib/PSAgentLogger.js +3 -3
- package/build/main/lib/skills/constants.d.ts +12 -0
- package/build/main/lib/skills/constants.js +24 -0
- package/build/main/lib/skills/skillParser.d.ts +10 -0
- package/build/main/lib/skills/skillParser.js +40 -0
- package/build/main/lib/skills/skillsXMLMetaDataGenerator.d.ts +9 -0
- package/build/main/lib/skills/skillsXMLMetaDataGenerator.js +80 -0
- package/build/main/lib/skills/utils.d.ts +10 -0
- package/build/main/lib/skills/utils.js +48 -0
- package/build/main/lib/tools/PSClarifyTool.js +3 -1
- package/build/module/lib/PSAI.d.ts +14 -1
- package/build/module/lib/PSAI.js +58 -2
- package/build/module/lib/PSAgent.js +2 -1
- package/build/module/lib/PSAgentLogger.js +3 -3
- package/build/module/lib/skills/constants.d.ts +12 -0
- package/build/module/lib/skills/constants.js +26 -0
- package/build/module/lib/skills/skillParser.d.ts +10 -0
- package/build/module/lib/skills/skillParser.js +40 -0
- package/build/module/lib/skills/skillsXMLMetaDataGenerator.d.ts +9 -0
- package/build/module/lib/skills/skillsXMLMetaDataGenerator.js +80 -0
- package/build/module/lib/skills/utils.d.ts +10 -0
- package/build/module/lib/skills/utils.js +48 -0
- package/build/module/lib/tools/PSClarifyTool.js +3 -1
- package/package.json +17 -17
- package/build/main/lib/ILogger.d.ts +0 -9
- package/build/main/lib/ILogger.js +0 -25
- package/build/main/lib/ai.d.ts +0 -11
- package/build/main/lib/ai.js +0 -127
- package/build/main/lib/async.d.ts +0 -20
- package/build/main/lib/async.js +0 -36
- package/build/main/lib/getServiceToken.d.ts +0 -1
- package/build/main/lib/getServiceToken.js +0 -3
- package/build/main/lib/number.d.ts +0 -43
- package/build/main/lib/number.js +0 -56
- package/build/main/lib/tests/PSAgent.spec copy.d.ts +0 -1
- package/build/main/lib/tests/PSAgent.spec copy.js +0 -53
- package/build/main/lib/tests/PSReadFileTool.spec copy.d.ts +0 -1
- package/build/main/lib/tests/PSReadFileTool.spec copy.js +0 -92
- package/build/main/lib/tools/PSAentTool.d.ts +0 -7
- package/build/main/lib/tools/PSAentTool.js +0 -78
- package/build/main/lib/tools/PSArtifactTool copy.d.ts +0 -7
- package/build/main/lib/tools/PSArtifactTool copy.js +0 -78
- package/build/main/lib/tools/ReadFileTool.d.ts +0 -10
- package/build/main/lib/tools/ReadFileTool.js +0 -68
- package/build/main/lib/tools/WebSearchTool.d.ts +0 -9
- package/build/main/lib/tools/WebSearchTool.js +0 -92
- package/build/main/lib/tools/WriteFileTool.d.ts +0 -10
- package/build/main/lib/tools/WriteFileTool.js +0 -74
- package/build/module/lib/async.d.ts +0 -20
- package/build/module/lib/async.js +0 -32
- package/build/module/lib/number.d.ts +0 -43
- package/build/module/lib/number.js +0 -51
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.WriteFileTool = void 0;
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
-
const AgentTool_1 = require("./AgentTool");
|
|
9
|
-
const v4_1 = require("zod/v4");
|
|
10
|
-
const fs_1 = __importDefault(require("fs"));
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const helpers_1 = require("./helpers");
|
|
13
|
-
class WriteFileTool extends AgentTool_1.AgentTool {
|
|
14
|
-
constructor(options) {
|
|
15
|
-
super({
|
|
16
|
-
name: WriteFileTool.toolName,
|
|
17
|
-
description: "Writes content to a file in repository identified by 'path'.",
|
|
18
|
-
type: "API",
|
|
19
|
-
local_execution: true,
|
|
20
|
-
hitl: true,
|
|
21
|
-
inputs: {
|
|
22
|
-
url: `http://localhost/${WriteFileTool.toolName}`,
|
|
23
|
-
method: "POST",
|
|
24
|
-
requestBody: v4_1.z.toJSONSchema(v4_1.z.object({
|
|
25
|
-
path: v4_1.z.string().meta({
|
|
26
|
-
title: "File_Path",
|
|
27
|
-
description: "The path of the file to be write. This should be a valid file path in the repository."
|
|
28
|
-
}),
|
|
29
|
-
content: v4_1.z.string().meta({
|
|
30
|
-
title: "File_Content",
|
|
31
|
-
description: "The content to be written to the file. This should be a valid string content."
|
|
32
|
-
}),
|
|
33
|
-
}).meta({
|
|
34
|
-
title: `${WriteFileTool.toolName}_request_body`,
|
|
35
|
-
description: `The request body parameters for the ${WriteFileTool.toolName} tool.`,
|
|
36
|
-
}), { "io": "input" }),
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
this.paths = [];
|
|
40
|
-
this.paths = options.paths || [];
|
|
41
|
-
}
|
|
42
|
-
execute(input, log) {
|
|
43
|
-
if (!input.path || typeof input.path !== "string") {
|
|
44
|
-
throw new Error("Invalid file path provided.");
|
|
45
|
-
}
|
|
46
|
-
const logger = log || console;
|
|
47
|
-
return new Promise((resolve, reject) => {
|
|
48
|
-
const filePath = path_1.default.resolve(...this.paths, input.path);
|
|
49
|
-
const content = input.content;
|
|
50
|
-
// if (!filePath.startsWith(run.srcDir))
|
|
51
|
-
// filePath = path.join(run.srcDir, lastevent.toolInput.request_body.path);
|
|
52
|
-
try {
|
|
53
|
-
logger.info(`📝 Writing ${(0, helpers_1.formatFileSize)(content.length)} to file:\`${input.path}\``);
|
|
54
|
-
fs_1.default.mkdirSync(path_1.default.dirname(filePath), { recursive: true });
|
|
55
|
-
fs_1.default.writeFileSync(filePath, (0, helpers_1.unEscapeHTML)(content), 'utf-8');
|
|
56
|
-
// logger.info(`> Wrote ${content.length} bytes to file.`);
|
|
57
|
-
return resolve({
|
|
58
|
-
status: 'success'
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (error instanceof Error) {
|
|
63
|
-
reject(new Error(`Failed to write file at path: ${input.path}. Error: ${error.message}`));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
reject(new Error(`Failed to write file at path: ${input.path}. Unknown error.`));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.WriteFileTool = WriteFileTool;
|
|
73
|
-
WriteFileTool.toolName = "write_file";
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JpdGVGaWxlVG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbHMvV3JpdGVGaWxlVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsMkNBQXdDO0FBQ3hDLCtCQUEyQjtBQUMzQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBRXhCLHVDQUF5RDtBQUV6RCxNQUFhLGFBQWMsU0FBUSxxQkFBUztJQUczQyxZQUFZLE9BRVg7UUFDQSxLQUFLLENBQUM7WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7WUFDNUIsV0FBVyxFQUFFLDhEQUE4RDtZQUMzRSxJQUFJLEVBQUUsS0FBSztZQUNYLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFO2dCQUNQLEdBQUcsRUFBRSxvQkFBb0IsYUFBYSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsV0FBVyxFQUFFLE1BQUMsQ0FBQyxZQUFZLENBQUMsTUFBQyxDQUFDLE1BQU0sQ0FBQztvQkFDcEMsSUFBSSxFQUFFLE1BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7d0JBQ3JCLEtBQUssRUFBRSxXQUFXO3dCQUNsQixXQUFXLEVBQUUsdUZBQXVGO3FCQUNwRyxDQUFDO29CQUNGLE9BQU8sRUFBRSxNQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO3dCQUN4QixLQUFLLEVBQUUsY0FBYzt3QkFDckIsV0FBVyxFQUFFLCtFQUErRTtxQkFDNUYsQ0FBQztpQkFDRixDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNQLEtBQUssRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLGVBQWU7b0JBQy9DLFdBQVcsRUFBRSx1Q0FBdUMsYUFBYSxDQUFDLFFBQVEsUUFBUTtpQkFDbEYsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3RCO1NBQ0QsQ0FBQyxDQUFDO1FBM0JJLFVBQUssR0FBYSxFQUFFLENBQUM7UUE0QjVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUEwQixFQUFFLEdBQWdCO1FBQzFELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM5Qix3Q0FBd0M7WUFDeEMsNEVBQTRFO1lBQzVFLElBQUksQ0FBQztnQkFDSixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBQSx3QkFBYyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDdEYsWUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzFELFlBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUEsc0JBQVksRUFBQyxPQUFPLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkQsMkRBQTJEO2dCQUMvRCxPQUFPLE9BQU8sQ0FBQztvQkFDZCxNQUFNLEVBQUUsU0FBUztpQkFDakIsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO29CQUM1QixNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsaUNBQWlDLEtBQUssQ0FBQyxJQUFJLFlBQVksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDM0YsQ0FBQztxQkFBTSxDQUFDO29CQUNQLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsS0FBSyxDQUFDLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7QUExREYsc0NBMkRDO0FBMUR1QixzQkFBUSxHQUFHLFlBQVksQUFBZixDQUFnQiJ9
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A sample async function (to demo Typescript's es7 async/await down-leveling).
|
|
3
|
-
*
|
|
4
|
-
* ### Example (es imports)
|
|
5
|
-
* ```js
|
|
6
|
-
* import { asyncABC } from 'typescript-starter'
|
|
7
|
-
* console.log(await asyncABC())
|
|
8
|
-
* // => ['a','b','c']
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* ### Example (commonjs)
|
|
12
|
-
* ```js
|
|
13
|
-
* var double = require('typescript-starter').asyncABC;
|
|
14
|
-
* asyncABC().then(console.log);
|
|
15
|
-
* // => ['a','b','c']
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @returns a Promise which should contain `['a','b','c']`
|
|
19
|
-
*/
|
|
20
|
-
export declare const asyncABC: () => Promise<string[]>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A sample async function (to demo Typescript's es7 async/await down-leveling).
|
|
3
|
-
*
|
|
4
|
-
* ### Example (es imports)
|
|
5
|
-
* ```js
|
|
6
|
-
* import { asyncABC } from 'typescript-starter'
|
|
7
|
-
* console.log(await asyncABC())
|
|
8
|
-
* // => ['a','b','c']
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* ### Example (commonjs)
|
|
12
|
-
* ```js
|
|
13
|
-
* var double = require('typescript-starter').asyncABC;
|
|
14
|
-
* asyncABC().then(console.log);
|
|
15
|
-
* // => ['a','b','c']
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @returns a Promise which should contain `['a','b','c']`
|
|
19
|
-
*/
|
|
20
|
-
export const asyncABC = async () => {
|
|
21
|
-
const somethingSlow = (index) => {
|
|
22
|
-
const storage = 'abc'.charAt(index);
|
|
23
|
-
return new Promise((resolve) =>
|
|
24
|
-
// later...
|
|
25
|
-
resolve(storage));
|
|
26
|
-
};
|
|
27
|
-
const a = await somethingSlow(0);
|
|
28
|
-
const b = await somethingSlow(1);
|
|
29
|
-
const c = await somethingSlow(2);
|
|
30
|
-
return [a, b, c];
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2FzeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDakMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQUU7UUFDekMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksT0FBTyxDQUFTLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckMsV0FBVztRQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDakIsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyJ9
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multiplies a value by 2. (Also a full example of TypeDoc's functionality.)
|
|
3
|
-
*
|
|
4
|
-
* ### Example (es module)
|
|
5
|
-
* ```js
|
|
6
|
-
* import { double } from 'typescript-starter'
|
|
7
|
-
* console.log(double(4))
|
|
8
|
-
* // => 8
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* ### Example (commonjs)
|
|
12
|
-
* ```js
|
|
13
|
-
* var double = require('typescript-starter').double;
|
|
14
|
-
* console.log(double(4))
|
|
15
|
-
* // => 8
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @param value - Comment describing the `value` parameter.
|
|
19
|
-
* @returns Comment describing the return type.
|
|
20
|
-
* @anotherNote Some other value.
|
|
21
|
-
*/
|
|
22
|
-
export declare const double: (value: number) => number;
|
|
23
|
-
/**
|
|
24
|
-
* Raise the value of the first parameter to the power of the second using the
|
|
25
|
-
* es7 exponentiation operator (`**`).
|
|
26
|
-
*
|
|
27
|
-
* ### Example (es module)
|
|
28
|
-
* ```js
|
|
29
|
-
* import { power } from 'typescript-starter'
|
|
30
|
-
* console.log(power(2,3))
|
|
31
|
-
* // => 8
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* ### Example (commonjs)
|
|
35
|
-
* ```js
|
|
36
|
-
* var power = require('typescript-starter').power;
|
|
37
|
-
* console.log(power(2,3))
|
|
38
|
-
* // => 8
|
|
39
|
-
* ```
|
|
40
|
-
* @param base - the base to exponentiate
|
|
41
|
-
* @param exponent - the power to which to raise the base
|
|
42
|
-
*/
|
|
43
|
-
export declare const power: (base: number, exponent: number) => number;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multiplies a value by 2. (Also a full example of TypeDoc's functionality.)
|
|
3
|
-
*
|
|
4
|
-
* ### Example (es module)
|
|
5
|
-
* ```js
|
|
6
|
-
* import { double } from 'typescript-starter'
|
|
7
|
-
* console.log(double(4))
|
|
8
|
-
* // => 8
|
|
9
|
-
* ```
|
|
10
|
-
*
|
|
11
|
-
* ### Example (commonjs)
|
|
12
|
-
* ```js
|
|
13
|
-
* var double = require('typescript-starter').double;
|
|
14
|
-
* console.log(double(4))
|
|
15
|
-
* // => 8
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* @param value - Comment describing the `value` parameter.
|
|
19
|
-
* @returns Comment describing the return type.
|
|
20
|
-
* @anotherNote Some other value.
|
|
21
|
-
*/
|
|
22
|
-
export const double = (value) => {
|
|
23
|
-
return value * 2;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Raise the value of the first parameter to the power of the second using the
|
|
27
|
-
* es7 exponentiation operator (`**`).
|
|
28
|
-
*
|
|
29
|
-
* ### Example (es module)
|
|
30
|
-
* ```js
|
|
31
|
-
* import { power } from 'typescript-starter'
|
|
32
|
-
* console.log(power(2,3))
|
|
33
|
-
* // => 8
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* ### Example (commonjs)
|
|
37
|
-
* ```js
|
|
38
|
-
* var power = require('typescript-starter').power;
|
|
39
|
-
* console.log(power(2,3))
|
|
40
|
-
* // => 8
|
|
41
|
-
* ```
|
|
42
|
-
* @param base - the base to exponentiate
|
|
43
|
-
* @param exponent - the power to which to raise the base
|
|
44
|
-
*/
|
|
45
|
-
export const power = (base, exponent) => {
|
|
46
|
-
/**
|
|
47
|
-
* This es7 exponentiation operator is transpiled by TypeScript
|
|
48
|
-
*/
|
|
49
|
-
return base ** exponent;
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN0RDs7T0FFRztJQUNILE9BQU8sSUFBSSxJQUFJLFFBQVEsQ0FBQztBQUMxQixDQUFDLENBQUMifQ==
|