scanoss 0.16.0 → 0.16.2
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 +10 -2
- package/README.md +2 -1
- package/assets/data/scanoss-crypto-algorithm-rules.json +3698 -1264
- package/assets/data/scanoss-crypto-library-rules.json +1 -2930
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -1
- package/build/main/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +2 -8
- package/build/main/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +1 -1
- package/build/main/sdk/Cryptography/Algorithm/Files/Helper/Helper.d.ts +1 -1
- package/build/main/sdk/Cryptography/Algorithm/Files/Helper/Helper.js +12 -9
- package/build/main/sdk/Cryptography/CryptographyScanner.js +5 -3
- package/build/main/sdk/Cryptography/CryptographyTypes.d.ts +8 -2
- package/build/main/sdk/Cryptography/Helper/CryptographyHelper.d.ts +6 -0
- package/build/main/sdk/Cryptography/Helper/CryptographyHelper.js +33 -0
- package/build/main/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +1 -1
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -1
- package/build/main/sdk/Cryptography/Hint/Files/HintProcessor.js +1 -8
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +0 -3
- package/build/main/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +1 -29
- package/build/main/sdk/scanner/ScannnerResultPostProcessor/rules/rule-factory.js +4 -3
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.d.ts +1 -1
- package/build/module/sdk/Cryptography/Algorithm/Files/AlgorithmProcessor.js +2 -8
- package/build/module/sdk/Cryptography/Algorithm/Files/FileAlgorithmScanner.js +1 -1
- package/build/module/sdk/Cryptography/Algorithm/Files/Helper/Helper.d.ts +1 -1
- package/build/module/sdk/Cryptography/Algorithm/Files/Helper/Helper.js +12 -9
- package/build/module/sdk/Cryptography/CryptographyScanner.js +5 -3
- package/build/module/sdk/Cryptography/CryptographyTypes.d.ts +8 -2
- package/build/module/sdk/Cryptography/Helper/CryptographyHelper.d.ts +6 -0
- package/build/module/sdk/Cryptography/Helper/CryptographyHelper.js +27 -0
- package/build/module/sdk/Cryptography/Helper/ResultCollector/Component/ComponentCryptographyResultColletor.js +1 -1
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.d.ts +1 -1
- package/build/module/sdk/Cryptography/Hint/Files/HintProcessor.js +1 -8
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.d.ts +0 -3
- package/build/module/sdk/Report/DataLayer/DataProviders/CryptographyDataProvider.js +1 -29
- package/build/module/sdk/scanner/ScannnerResultPostProcessor/rules/rule-factory.js +3 -3
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const cryptographyAlgorithmProcessor = "\nconst { parentPort } = require('worker_threads');\nconst fs = require('fs');\n\nparentPort.on('message', async (job) => {\n\n const
|
|
1
|
+
export declare const cryptographyAlgorithmProcessor = "\nconst { parentPort } = require('worker_threads');\nconst fs = require('fs');\n\nparentPort.on('message', async (job) => {\n\n const { data } = job;\n const { file, rules, cryptoMapper } = data;\n\n const cryptoFound = new Array();\n\n let content = fs.readFileSync(file, 'utf-8');\n rules.forEach((value, key) => {\n try {\n const matches = content.match(value);\n if (matches) {\n cryptoFound.push(key);\n }\n } catch (e){\n console.error(e);\n }\n });\n const algorithms = [];\n cryptoFound.forEach((cf)=>{\n algorithms.push(cryptoMapper.get(cf));\n });\n parentPort.postMessage({ file, algorithms });\n });\n";
|
|
@@ -7,19 +7,13 @@ const fs = require('fs');
|
|
|
7
7
|
|
|
8
8
|
parentPort.on('message', async (job) => {
|
|
9
9
|
|
|
10
|
-
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
11
10
|
const { data } = job;
|
|
12
11
|
const { file, rules, cryptoMapper } = data;
|
|
13
12
|
|
|
14
13
|
const cryptoFound = new Array();
|
|
15
|
-
const stats = await fs.promises.stat(file);
|
|
16
|
-
if (stats.size > MAX_FILE_SIZE) {
|
|
17
|
-
parentPort.postMessage({ file, algorithms:[] });
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
14
|
|
|
21
15
|
let content = fs.readFileSync(file, 'utf-8');
|
|
22
|
-
|
|
16
|
+
rules.forEach((value, key) => {
|
|
23
17
|
try {
|
|
24
18
|
const matches = content.match(value);
|
|
25
19
|
if (matches) {
|
|
@@ -36,4 +30,4 @@ parentPort.on('message', async (job) => {
|
|
|
36
30
|
parentPort.postMessage({ file, algorithms });
|
|
37
31
|
});
|
|
38
32
|
`;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxnb3JpdGhtUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQWxnb3JpdGhtL0ZpbGVzL0FsZ29yaXRobVByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLDhCQUE4QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEI3QyxDQUFDIn0=
|
|
@@ -84,4 +84,4 @@ class FileAlgorithmScanner extends BaseCryptographyScanner_1.BaseCryptographySca
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
exports.FileAlgorithmScanner = FileAlgorithmScanner;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZUFsZ29yaXRobVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9BbGdvcml0aG0vRmlsZXMvRmlsZUFsZ29yaXRobVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDZDQUEwQztBQVExQyxnREFBd0I7QUFDeEIsNENBR3lCO0FBQ3pCLHdEQUFxRDtBQUNyRCxzRUFBbUU7QUFDbkUsNkRBQXNFO0FBQ3RFLDJFQUF3RTtBQU14RTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsaURBR047SUFJbEM7Ozs7T0FJRztJQUNILFlBQVksU0FBb0IsRUFBRSxlQUFnRDtRQUNoRixLQUFLLENBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBUmxCLDJDQUFzQyxHQUFHLHFDQUFxQyxDQUFDO0lBU2hHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWU7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDcEYsTUFBTSxLQUFLLEdBQUcsSUFBQSxrQ0FBeUIsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUEsd0JBQWUsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sZUFBZSxHQUF3QyxFQUFFLENBQUM7UUFDaEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBRyxDQUEwQjtnQkFDOUMsSUFBSSxFQUFDLENBQUM7Z0JBQ04sS0FBSztnQkFDTCxZQUFZO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFvQjtRQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLHVCQUFVLENBQXNELG1EQUE4QixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pKLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQ2xDLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWlCO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxjQUFJLENBQUMsSUFBSSxDQUNyRCxTQUFTLEVBQ1QsK0JBQStCLEVBQUUsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FFRjtBQS9FRCxvREErRUMifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CryptoAlgorithm, CryptoAlgorithmRules } from
|
|
1
|
+
import { CryptoAlgorithm, CryptoAlgorithmRules } from "../../../CryptographyTypes";
|
|
2
2
|
/**
|
|
3
3
|
* Function to create a mapping of regular expressions based on provided crypto definitions.
|
|
4
4
|
* @param cryptoRulesDefinitions An array of objects containing cryptographic definitions.
|
|
@@ -11,12 +11,15 @@ exports.getCryptoMapper = getCryptoMapper;
|
|
|
11
11
|
function createCryptoKeywordMapper(cryptoRulesDefinitions) {
|
|
12
12
|
const mapper = new Map();
|
|
13
13
|
cryptoRulesDefinitions.forEach(c => {
|
|
14
|
-
|
|
15
|
-
c.keywords.
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
// Skips those rules with empty keywords
|
|
15
|
+
if (c.keywords.length > 0) {
|
|
16
|
+
const words = [];
|
|
17
|
+
c.keywords.forEach((k) => {
|
|
18
|
+
const escapedWord = k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
19
|
+
words.push(escapedWord);
|
|
20
|
+
});
|
|
21
|
+
mapper.set((c === null || c === void 0 ? void 0 : c.algorithmId) ? c === null || c === void 0 ? void 0 : c.algorithmId : c.algorithm, new RegExp(words.join('|'), 'gi'));
|
|
22
|
+
}
|
|
20
23
|
});
|
|
21
24
|
return mapper;
|
|
22
25
|
}
|
|
@@ -29,10 +32,10 @@ function createCryptoKeywordMapper(cryptoRulesDefinitions) {
|
|
|
29
32
|
function getCryptoMapper(cryptoDefinitions) {
|
|
30
33
|
const cryptoMapper = new Map();
|
|
31
34
|
cryptoDefinitions.forEach((c) => {
|
|
32
|
-
const { algorithm, strength } = c;
|
|
35
|
+
const { algorithm, strength, algorithmId } = c;
|
|
33
36
|
// Add the algorithm and its details to the map.
|
|
34
|
-
cryptoMapper.set(c.algorithm, { algorithm, strength });
|
|
37
|
+
cryptoMapper.set((c === null || c === void 0 ? void 0 : c.algorithmId) ? c === null || c === void 0 ? void 0 : c.algorithmId : c.algorithm, { algorithm: algorithmId ? algorithmId : algorithm, strength });
|
|
35
38
|
});
|
|
36
39
|
return cryptoMapper;
|
|
37
40
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvQWxnb3JpdGhtL0ZpbGVzL0hlbHBlci9IZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSw4REFjQztBQVFELDBDQVFDO0FBcENEOzs7OztHQUtHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsc0JBQW1EO0lBQzNGLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQ3hDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsRUFBRTtRQUNqQyx3Q0FBd0M7UUFDdkMsSUFBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixlQUFlLENBQUMsaUJBQThDO0lBQzNFLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0lBQ3hELGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFHLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRCxnREFBZ0Q7UUFDaEQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFBLENBQUMsQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDLFNBQVMsRUFBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xJLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyJ9
|
|
@@ -7,6 +7,7 @@ const FileCryptographyResultCollector_1 = require("./Helper/ResultCollector/File
|
|
|
7
7
|
const ComponentCryptographyResultColletor_1 = require("./Helper/ResultCollector/Component/ComponentCryptographyResultColletor");
|
|
8
8
|
const ComponentAlgorithmScanner_1 = require("./Algorithm/Components/ComponentAlgorithmScanner");
|
|
9
9
|
const ComponentHintScanner_1 = require("./Hint/Components/ComponentHintScanner");
|
|
10
|
+
const CryptographyHelper_1 = require("./Helper/CryptographyHelper");
|
|
10
11
|
/**
|
|
11
12
|
* Provides functionality to scan files and components for cryptographic items.
|
|
12
13
|
* This class acts as the primary entry point for cryptographic scanning.
|
|
@@ -25,8 +26,9 @@ class CryptographyScanner {
|
|
|
25
26
|
const cryptoResultCollector = new FileCryptographyResultCollector_1.FileCryptographyResultCollector();
|
|
26
27
|
const cryptoAlgorithmScanner = new FileAlgorithmScanner_1.FileAlgorithmScanner(this.config, cryptoResultCollector);
|
|
27
28
|
const cryptoHintScanner = new FileHintScanner_1.FileHintScanner(this.config, cryptoResultCollector);
|
|
28
|
-
await
|
|
29
|
-
await
|
|
29
|
+
const processableFiles = await (0, CryptographyHelper_1.excludeBinariesAndLargeFiles)(files);
|
|
30
|
+
await cryptoAlgorithmScanner.scan(processableFiles);
|
|
31
|
+
await cryptoHintScanner.scan(processableFiles);
|
|
30
32
|
return cryptoResultCollector.getResults();
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
@@ -45,4 +47,4 @@ class CryptographyScanner {
|
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
exports.CryptographyScanner = CryptographyScanner;
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5U2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0NyeXB0b2dyYXBoeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUZBRWdEO0FBQ2hELGtFQUErRDtBQU0vRCxtSEFFdUU7QUFDdkUsZ0lBRWdGO0FBQ2hGLGdHQUUwRDtBQUMxRCxpRkFFZ0Q7QUFDaEQsb0VBQTJFO0FBSTNFOzs7R0FHRztBQUNILE1BQWEsbUJBQW1CO0lBSTlCLFlBQVksR0FBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQW9CO1FBQ3pDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxpRUFBK0IsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0YsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFBLGlEQUE0QixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLE1BQU0sc0JBQXNCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyxPQUFPLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBZ0I7UUFDMUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLDBFQUFvQyxFQUFFLENBQUM7UUFDbEYsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLHFEQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUNuSCxNQUFNLDBCQUEwQixHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3pHLE1BQU0sK0JBQStCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sMEJBQTBCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sOEJBQThCLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBdENELGtEQXNDQyJ9
|
|
@@ -2,12 +2,18 @@ export interface CryptoAlgorithm {
|
|
|
2
2
|
algorithm: string;
|
|
3
3
|
strength: string;
|
|
4
4
|
}
|
|
5
|
-
export interface
|
|
5
|
+
export interface LocalCryptoAlgorithm {
|
|
6
|
+
algorithm: string;
|
|
7
|
+
algorithmId: string;
|
|
8
|
+
strength: string;
|
|
9
|
+
category: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CryptoAlgorithmRules extends LocalCryptoAlgorithm {
|
|
6
12
|
keywords: Array<string>;
|
|
7
13
|
}
|
|
8
14
|
export interface CryptoAlgorithmJobResponse {
|
|
9
15
|
file: string;
|
|
10
|
-
algorithms: Array<
|
|
16
|
+
algorithms: Array<LocalCryptoAlgorithm>;
|
|
11
17
|
}
|
|
12
18
|
export interface LocalCryptoAlgorithmJob {
|
|
13
19
|
file: string;
|
|
@@ -0,0 +1,33 @@
|
|
|
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.excludeBinariesAndLargeFiles = excludeBinariesAndLargeFiles;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const isbinaryfile_1 = require("isbinaryfile");
|
|
9
|
+
// Maximum file size (2GB)
|
|
10
|
+
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
11
|
+
/**
|
|
12
|
+
* Filters out binary files and files larger than 2GB
|
|
13
|
+
* @param {Array<string>} files - Files to filter
|
|
14
|
+
* @returns {Promise<Array<string>>} Filtered files
|
|
15
|
+
*/
|
|
16
|
+
async function excludeBinariesAndLargeFiles(files) {
|
|
17
|
+
const results = await Promise.all(files.map(async (file) => {
|
|
18
|
+
try {
|
|
19
|
+
const stats = await fs_1.default.promises.stat(file);
|
|
20
|
+
// Skip files that are too large or binary
|
|
21
|
+
if (stats.size > MAX_FILE_SIZE || await (0, isbinaryfile_1.isBinaryFile)(file)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return file;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error(`[ Cryptography Helper ] excludeBinariesAndLargeFiles: ${file}:`, error);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
return results.filter(Boolean);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5SGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9DcnlwdG9ncmFwaHkvSGVscGVyL0NyeXB0b2dyYXBoeUhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBLG9FQWlCQztBQTVCRCw0Q0FBb0I7QUFDcEIsK0NBQTRDO0FBRTVDLDBCQUEwQjtBQUMxQixNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFN0M7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSw0QkFBNEIsQ0FBQyxLQUFvQjtJQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0MsMENBQTBDO1lBQzFDLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxhQUFhLElBQUksTUFBTSxJQUFBLDJCQUFZLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMseURBQXlELElBQUksR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakMsQ0FBQyJ9
|
|
@@ -63,4 +63,4 @@ class ComponentCryptographyResultCollector {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
exports.ComponentCryptographyResultCollector = ComponentCryptographyResultCollector;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50Q3J5cHRvZ3JhcGh5UmVzdWx0Q29sbGV0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0NyeXB0b2dyYXBoeS9IZWxwZXIvUmVzdWx0Q29sbGVjdG9yL0NvbXBvbmVudC9Db21wb25lbnRDcnlwdG9ncmFwaHlSZXN1bHRDb2xsZXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFTQTs7OztHQUlHO0FBQ0gsTUFBYSxvQ0FBb0M7SUFBakQ7UUFFVSxpQkFBWSxHQUFHLElBQUksR0FLekIsQ0FBQTtJQXlESixDQUFDO0lBdkRDOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQWM7UUFDcEQsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUN6QixJQUFJO2dCQUNKLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCLENBQUMsZ0JBQW1DO1FBQ2hFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQzNFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLFdBQTBCO1FBQ2xELFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkQsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVO1FBQ2IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBRUY7QUFoRUQsb0ZBZ0VDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const cryptographyHintProcessor = "\nconst { parentPort } = require('worker_threads');\nconst fs = require('fs');\n\nparentPort.on('message', async (job) => {\n\n const
|
|
1
|
+
export declare const cryptographyHintProcessor = "\nconst { parentPort } = require('worker_threads');\nconst fs = require('fs');\n\nparentPort.on('message', async (job) => {\n\n const { data } = job;\n const { file, rules } = data;\n\n let content = fs.readFileSync(file, 'utf-8');\n const hints = [];\n rules.forEach((rule) => {\n for (const keyword of rule.keywords) {\n if (content.includes(keyword)) {\n const {id, name, description, url , category, purl } = rule;\n hints.push({ id, name, category, purl, description, url });\n break;\n }\n }\n });\n parentPort.postMessage({ file, hints });\n });\n";
|
|
@@ -7,16 +7,9 @@ const fs = require('fs');
|
|
|
7
7
|
|
|
8
8
|
parentPort.on('message', async (job) => {
|
|
9
9
|
|
|
10
|
-
const MAX_FILE_SIZE = 2 * 1024 * 1024 * 1024;
|
|
11
10
|
const { data } = job;
|
|
12
11
|
const { file, rules } = data;
|
|
13
12
|
|
|
14
|
-
const stats = await fs.promises.stat(file);
|
|
15
|
-
if (stats.size > MAX_FILE_SIZE) {
|
|
16
|
-
parentPort.postMessage({ file, hints: [] });
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
13
|
let content = fs.readFileSync(file, 'utf-8');
|
|
21
14
|
const hints = [];
|
|
22
15
|
rules.forEach((rule) => {
|
|
@@ -31,4 +24,4 @@ parentPort.on('message', async (job) => {
|
|
|
31
24
|
parentPort.postMessage({ file, hints });
|
|
32
25
|
});
|
|
33
26
|
`;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGludFByb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvQ3J5cHRvZ3JhcGh5L0hpbnQvRmlsZXMvSGludFByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLHlCQUF5QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0J4QyxDQUFDIn0=
|
|
@@ -7,8 +7,5 @@ export declare class CryptographyDataProvider implements DataProvider {
|
|
|
7
7
|
private getComponentCryptographyData;
|
|
8
8
|
private getLocalCryptographyData;
|
|
9
9
|
getData(): Promise<IDataLayers>;
|
|
10
|
-
private getCrypto;
|
|
11
|
-
private normalizeAlgorithms;
|
|
12
|
-
private removeRepeatedAlgorithms;
|
|
13
10
|
getLayerName(): string;
|
|
14
11
|
}
|
|
@@ -79,37 +79,9 @@ class CryptographyDataProvider {
|
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
getCrypto(scanComponents) {
|
|
83
|
-
const componentCrypto = [];
|
|
84
|
-
scanComponents.forEach((c) => {
|
|
85
|
-
if (c.cryptography && c.cryptography.length > 0) {
|
|
86
|
-
const crypto = {
|
|
87
|
-
purl: c.purl,
|
|
88
|
-
version: c.version,
|
|
89
|
-
algorithms: c.cryptography
|
|
90
|
-
};
|
|
91
|
-
componentCrypto.push(crypto);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
return this.normalizeAlgorithms(componentCrypto);
|
|
95
|
-
}
|
|
96
|
-
normalizeAlgorithms(crypto) {
|
|
97
|
-
crypto.forEach((c) => {
|
|
98
|
-
c.algorithms = this.removeRepeatedAlgorithms(c.algorithms);
|
|
99
|
-
});
|
|
100
|
-
return crypto;
|
|
101
|
-
}
|
|
102
|
-
removeRepeatedAlgorithms(algorithms) {
|
|
103
|
-
const algorithmsMapper = new Map();
|
|
104
|
-
algorithms.forEach((a) => {
|
|
105
|
-
const algorithmToLowerCase = a.algorithm.toLowerCase();
|
|
106
|
-
algorithmsMapper.set(algorithmToLowerCase, { ...a, algorithm: algorithmToLowerCase });
|
|
107
|
-
});
|
|
108
|
-
return Array.from(algorithmsMapper.values());
|
|
109
|
-
}
|
|
110
82
|
getLayerName() {
|
|
111
83
|
return '';
|
|
112
84
|
}
|
|
113
85
|
}
|
|
114
86
|
exports.CryptographyDataProvider = CryptographyDataProvider;
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9SZXBvcnQvRGF0YUxheWVyL0RhdGFQcm92aWRlcnMvQ3J5cHRvZ3JhcGh5RGF0YVByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBLE1BQWEsd0JBQXdCO0lBR25DLFlBQVksV0FBcUMsRUFBRSxxQkFBa0Q7UUFDbkcsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO0lBQ3JELENBQUM7SUFHTyw0QkFBNEI7UUFDbEMsTUFBTSxnQkFBZ0IsR0FBNEIsRUFBRSxDQUFDO1FBQ3JELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQStELENBQUM7UUFDbEcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEMsYUFBYTtZQUNiLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQ3hCLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUM7Z0JBQ2xDLElBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7b0JBQzlCLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztxQkFBSSxDQUFDO29CQUNKLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUs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
|
|
@@ -5,15 +5,16 @@ const remove_rule_1 = require("./remove-rule");
|
|
|
5
5
|
const replace_rule_1 = require("./replace-rule");
|
|
6
6
|
class ScannerResultsRuleFactory {
|
|
7
7
|
static create(settings, scanResults) {
|
|
8
|
+
var _a, _b, _c, _d;
|
|
8
9
|
const rules = [];
|
|
9
|
-
if (settings.bom.remove.length > 0) {
|
|
10
|
+
if (((_b = (_a = settings === null || settings === void 0 ? void 0 : settings.bom) === null || _a === void 0 ? void 0 : _a.remove) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
10
11
|
rules.push(new remove_rule_1.RemoveRule(scanResults, settings));
|
|
11
12
|
}
|
|
12
|
-
if (settings.bom.replace.length > 0) {
|
|
13
|
+
if (((_d = (_c = settings === null || settings === void 0 ? void 0 : settings.bom) === null || _c === void 0 ? void 0 : _c.replace) === null || _d === void 0 ? void 0 : _d.length) > 0) {
|
|
13
14
|
rules.push(new replace_rule_1.ReplaceRule(scanResults, settings));
|
|
14
15
|
}
|
|
15
16
|
return rules;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
exports.ScannerResultsRuleFactory = ScannerResultsRuleFactory;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9zY2FubmVyL1NjYW5ubmVyUmVzdWx0UG9zdFByb2Nlc3Nvci9ydWxlcy9ydWxlLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0NBQXlDO0FBQ3pDLGlEQUEyQztBQUczQyxNQUFhLHlCQUF5QjtJQUUzQixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQWtCLEVBQUUsV0FBZTs7UUFDcEQsTUFBTSxLQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUEsTUFBQSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxHQUFHLDBDQUFFLE1BQU0sMENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSx3QkFBVSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLENBQUEsTUFBQSxNQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxHQUFHLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxJQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSwwQkFBVyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBRUo7QUFoQkQsOERBZ0JDIn0=
|