clientnode 4.0.1457 → 4.0.1459
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/dist/Lock.js +83 -69
- package/dist/Logger.js +163 -798
- package/dist/Semaphore.js +46 -56
- package/dist/array.js +337 -668
- package/dist/cli.js +37 -45
- package/dist/constants.js +110 -198
- package/dist/context.js +25 -301
- package/dist/cookie.js +48 -302
- package/dist/data-transfer.js +166 -817
- package/dist/datetime.js +241 -1149
- package/dist/domNode.js +277 -532
- package/dist/expression/evaluators.js +234 -1231
- package/dist/expression/helper.js +82 -102
- package/dist/expression/index.js +10 -1383
- package/dist/expression/indicator-functions.js +21 -316
- package/dist/expression/type.js +5 -1
- package/dist/filesystem.js +324 -385
- package/dist/function.js +51 -93
- package/dist/index.js +27 -3253
- package/dist/indicators.js +68 -519
- package/dist/module.js +99 -233
- package/dist/number.js +25 -498
- package/dist/object.js +791 -958
- package/dist/process.js +38 -298
- package/dist/property-types.js +96 -17
- package/dist/scope.js +56 -2134
- package/dist/string.js +603 -1033
- package/dist/test-helper.js +171 -639
- package/dist/type.js +9 -4
- package/dist/utility.js +91 -408
- package/package.json +2 -2
- package/dist/Lock.d.ts +0 -39
- package/dist/Logger.d.ts +0 -102
- package/dist/Semaphore.d.ts +0 -29
- package/dist/array.d.ts +0 -150
- package/dist/bundle/Lock.js +0 -86
- package/dist/bundle/Logger.js +0 -820
- package/dist/bundle/Semaphore.js +0 -75
- package/dist/bundle/array.js +0 -783
- package/dist/bundle/cli.js +0 -59
- package/dist/bundle/constants.js +0 -214
- package/dist/bundle/context.js +0 -316
- package/dist/bundle/cookie.js +0 -338
- package/dist/bundle/data-transfer.js +0 -867
- package/dist/bundle/datetime.js +0 -1190
- package/dist/bundle/domNode.js +0 -586
- package/dist/bundle/expression/evaluators.js +0 -1270
- package/dist/bundle/expression/helper.js +0 -117
- package/dist/bundle/expression/index.js +0 -1399
- package/dist/bundle/expression/indicator-functions.js +0 -332
- package/dist/bundle/expression/type.js +0 -16
- package/dist/bundle/filesystem.js +0 -472
- package/dist/bundle/function.js +0 -117
- package/dist/bundle/index.js +0 -3269
- package/dist/bundle/indicators.js +0 -572
- package/dist/bundle/module.js +0 -250
- package/dist/bundle/number.js +0 -534
- package/dist/bundle/object.js +0 -1146
- package/dist/bundle/process.js +0 -328
- package/dist/bundle/property-types.js +0 -36
- package/dist/bundle/scope.js +0 -2163
- package/dist/bundle/string.js +0 -1255
- package/dist/bundle/test-helper.js +0 -808
- package/dist/bundle/type.js +0 -16
- package/dist/bundle/utility.js +0 -456
- package/dist/cli.d.ts +0 -31
- package/dist/compatible/Lock.js +0 -86
- package/dist/compatible/Logger.js +0 -820
- package/dist/compatible/Semaphore.js +0 -75
- package/dist/compatible/array.js +0 -783
- package/dist/compatible/cli.js +0 -59
- package/dist/compatible/constants.js +0 -214
- package/dist/compatible/context.js +0 -316
- package/dist/compatible/cookie.js +0 -338
- package/dist/compatible/data-transfer.js +0 -867
- package/dist/compatible/datetime.js +0 -1190
- package/dist/compatible/domNode.js +0 -586
- package/dist/compatible/expression/evaluators.js +0 -1270
- package/dist/compatible/expression/helper.js +0 -117
- package/dist/compatible/expression/index.js +0 -1399
- package/dist/compatible/expression/indicator-functions.js +0 -332
- package/dist/compatible/expression/type.js +0 -16
- package/dist/compatible/filesystem.js +0 -472
- package/dist/compatible/function.js +0 -117
- package/dist/compatible/index.js +0 -3269
- package/dist/compatible/indicators.js +0 -572
- package/dist/compatible/module.js +0 -250
- package/dist/compatible/number.js +0 -534
- package/dist/compatible/object.js +0 -1146
- package/dist/compatible/process.js +0 -328
- package/dist/compatible/property-types.js +0 -36
- package/dist/compatible/scope.js +0 -2163
- package/dist/compatible/string.js +0 -1255
- package/dist/compatible/test-helper.js +0 -808
- package/dist/compatible/type.js +0 -16
- package/dist/compatible/utility.js +0 -456
- package/dist/constants.d.ts +0 -99
- package/dist/context.d.ts +0 -8
- package/dist/cookie.d.ts +0 -31
- package/dist/data-transfer.d.ts +0 -45
- package/dist/datetime.d.ts +0 -37
- package/dist/domNode.d.ts +0 -82
- package/dist/expression/evaluators.d.ts +0 -55
- package/dist/expression/helper.d.ts +0 -4
- package/dist/expression/index.d.ts +0 -7
- package/dist/expression/indicator-functions.d.ts +0 -14
- package/dist/expression/type.d.ts +0 -70
- package/dist/filesystem.d.ts +0 -143
- package/dist/function.d.ts +0 -20
- package/dist/index.d.ts +0 -22
- package/dist/indicators.d.ts +0 -68
- package/dist/module.d.ts +0 -8
- package/dist/number.d.ts +0 -35
- package/dist/object.d.ts +0 -231
- package/dist/process.d.ts +0 -22
- package/dist/property-types.d.ts +0 -460
- package/dist/scope.d.ts +0 -44
- package/dist/string.d.ts +0 -312
- package/dist/test/Lock.d.ts +0 -1
- package/dist/test/Logger.d.ts +0 -1
- package/dist/test/Semaphore.d.ts +0 -1
- package/dist/test/array.d.ts +0 -1
- package/dist/test/cookie.d.ts +0 -1
- package/dist/test/data-transfer.d.ts +0 -1
- package/dist/test/datetime.d.ts +0 -1
- package/dist/test/domNode.d.ts +0 -1
- package/dist/test/expression/evaluators.d.ts +0 -1
- package/dist/test/expression/helper.d.ts +0 -1
- package/dist/test/expression/indicator-functions.d.ts +0 -1
- package/dist/test/filesystem.d.ts +0 -1
- package/dist/test/function.d.ts +0 -1
- package/dist/test/indicators.d.ts +0 -1
- package/dist/test/number.d.ts +0 -1
- package/dist/test/object.d.ts +0 -1
- package/dist/test/process.d.ts +0 -1
- package/dist/test/property-types.d.ts +0 -1
- package/dist/test/scope.d.ts +0 -1
- package/dist/test/string.d.ts +0 -1
- package/dist/test/utility.d.ts +0 -1
- package/dist/test-helper.d.ts +0 -143
- package/dist/type.d.ts +0 -230
- package/dist/utility.d.ts +0 -44
package/dist/function.js
CHANGED
|
@@ -1,85 +1,9 @@
|
|
|
1
|
-
if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;import * as __WEBPACK_EXTERNAL_MODULE_core_js_modules_es_array_includes_js_66c3fd7d__ from "core-js/modules/es.array.includes.js";
|
|
2
|
-
/******/ var __webpack_modules__ = ([
|
|
3
|
-
/* 0 */
|
|
4
|
-
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
5
|
-
|
|
6
|
-
var x = function(y) {
|
|
7
|
-
var x = {}; __webpack_require__.d(x, y); return x
|
|
8
|
-
}
|
|
9
|
-
var y = function(x) { return function() { return x; }; }
|
|
10
|
-
module.exports = x({ });
|
|
11
|
-
|
|
12
|
-
/***/ })
|
|
13
|
-
/******/ ]);
|
|
14
|
-
/************************************************************************/
|
|
15
|
-
/******/ // The module cache
|
|
16
|
-
/******/ var __webpack_module_cache__ = {};
|
|
17
|
-
/******/
|
|
18
|
-
/******/ // The require function
|
|
19
|
-
/******/ function __webpack_require__(moduleId) {
|
|
20
|
-
/******/ // Check if module is in cache
|
|
21
|
-
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
22
|
-
/******/ if (cachedModule !== undefined) {
|
|
23
|
-
/******/ return cachedModule.exports;
|
|
24
|
-
/******/ }
|
|
25
|
-
/******/ // Create a new module (and put it into the cache)
|
|
26
|
-
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
27
|
-
/******/ // no module.id needed
|
|
28
|
-
/******/ // no module.loaded needed
|
|
29
|
-
/******/ exports: {}
|
|
30
|
-
/******/ };
|
|
31
|
-
/******/
|
|
32
|
-
/******/ // Execute the module function
|
|
33
|
-
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
34
|
-
/******/
|
|
35
|
-
/******/ // Return the exports of the module
|
|
36
|
-
/******/ return module.exports;
|
|
37
|
-
/******/ }
|
|
38
|
-
/******/
|
|
39
|
-
/************************************************************************/
|
|
40
|
-
/******/ /* webpack/runtime/define property getters */
|
|
41
|
-
/******/ !function() {
|
|
42
|
-
/******/ // define getter/value functions for harmony exports
|
|
43
|
-
/******/ __webpack_require__.d = function(exports, definition) {
|
|
44
|
-
/******/ if(Array.isArray(definition)) {
|
|
45
|
-
/******/ var i = 0;
|
|
46
|
-
/******/ while(i < definition.length) {
|
|
47
|
-
/******/ var key = definition[i++];
|
|
48
|
-
/******/ var binding = definition[i++];
|
|
49
|
-
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
50
|
-
/******/ if(binding === 0) {
|
|
51
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
52
|
-
/******/ } else {
|
|
53
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
54
|
-
/******/ }
|
|
55
|
-
/******/ } else if(binding === 0) { i++; }
|
|
56
|
-
/******/ }
|
|
57
|
-
/******/ } else {
|
|
58
|
-
/******/ for(var key in definition) {
|
|
59
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
60
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
61
|
-
/******/ }
|
|
62
|
-
/******/ }
|
|
63
|
-
/******/ }
|
|
64
|
-
/******/ };
|
|
65
|
-
/******/ }();
|
|
66
|
-
/******/
|
|
67
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
68
|
-
/******/ !function() {
|
|
69
|
-
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|
70
|
-
/******/ }();
|
|
71
|
-
/******/
|
|
72
|
-
/************************************************************************/
|
|
73
|
-
var __webpack_exports__ = {};
|
|
74
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
75
|
-
/* harmony export */ D_: function() { return /* binding */ identity; },
|
|
76
|
-
/* harmony export */ Gj: function() { return /* binding */ _getParameterNames; },
|
|
77
|
-
/* harmony export */ gH: function() { return /* binding */ invertArrayFilter; }
|
|
78
|
-
/* harmony export */ });
|
|
79
|
-
/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
|
|
80
1
|
// #!/usr/bin/env babel-node
|
|
81
2
|
// -*- coding: utf-8 -*-
|
|
82
|
-
/** @module function
|
|
3
|
+
/** @module function */
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
/* !
|
|
83
7
|
region header
|
|
84
8
|
[Project page](https://torben.website/clientnode)
|
|
85
9
|
|
|
@@ -92,26 +16,60 @@ var __webpack_exports__ = {};
|
|
|
92
16
|
naming 3.0 unported license.
|
|
93
17
|
See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
94
18
|
endregion
|
|
95
|
-
*/
|
|
19
|
+
*/
|
|
20
|
+
import "core-js/modules/es.array.includes.js";
|
|
21
|
+
import "core-js/modules/es.array.push.js";
|
|
22
|
+
/**
|
|
96
23
|
* Determines all parameter names from given callable (function or class,
|
|
97
24
|
* ...).
|
|
98
25
|
* @param callable - Function or function code to inspect.
|
|
99
26
|
* @returns List of parameter names.
|
|
100
|
-
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
27
|
+
*/
|
|
28
|
+
export const getParameterNames = callable => {
|
|
29
|
+
const functionCode = (typeof callable === 'string' ? callable :
|
|
30
|
+
// Strip comments.
|
|
31
|
+
callable.toString()).replace(/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg, '');
|
|
32
|
+
if (functionCode.startsWith('class')) return getParameterNames('function ' + functionCode.replace(/.*(constructor\([^)]+\))/m, '$1'));
|
|
33
|
+
|
|
34
|
+
// Try classic function declaration.
|
|
35
|
+
let parameter = /^function\s*[^(]*\(\s*([^)]*)\)/m.exec(functionCode);
|
|
36
|
+
if (parameter === null)
|
|
37
|
+
// Try arrow function declaration.
|
|
38
|
+
parameter = /^[^(]*\(\s*([^)]*)\) *=>.*/m.exec(functionCode);
|
|
39
|
+
if (parameter === null)
|
|
40
|
+
// Try one argument and without brackets arrow function declaration.
|
|
41
|
+
parameter = /([^= ]+) *=>.*/m.exec(functionCode);
|
|
42
|
+
const names = [];
|
|
43
|
+
if (parameter && parameter.length > 1 && parameter[1].trim().length) {
|
|
44
|
+
for (const name of parameter[1].split(','))
|
|
45
|
+
// Remove default parameter values.
|
|
46
|
+
names.push(name.replace(/=.+$/g, '').trim());
|
|
47
|
+
return names;
|
|
48
|
+
}
|
|
49
|
+
return names;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
106
52
|
* Implements the identity function.
|
|
107
53
|
* @param value - A value to return.
|
|
108
54
|
* @returns Returns the given value.
|
|
109
|
-
*/
|
|
55
|
+
*/
|
|
56
|
+
export const identity = value => value;
|
|
57
|
+
/**
|
|
110
58
|
* Inverted filter helper to inverse each given filter.
|
|
111
59
|
* @param filter - A function that filters an array.
|
|
112
60
|
* @returns The inverted filter.
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
61
|
+
*/
|
|
62
|
+
export const invertArrayFilter = filter => {
|
|
63
|
+
return (data, ...additionalParameter) => {
|
|
64
|
+
if (Array.isArray(data)) {
|
|
65
|
+
const filteredData = filter(data, ...additionalParameter);
|
|
66
|
+
let result = [];
|
|
67
|
+
if (filteredData.length) {
|
|
68
|
+
for (const date of data) if (!filteredData.includes(date)) result.push(date);
|
|
69
|
+
} else result = data;
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
return data;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2Z1bmN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vICMhL3Vzci9iaW4vZW52IGJhYmVsLW5vZGVcbi8vIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuLyoqIEBtb2R1bGUgZnVuY3Rpb24gKi9cbid1c2Ugc3RyaWN0J1xuLyogIVxuICAgIHJlZ2lvbiBoZWFkZXJcbiAgICBbUHJvamVjdCBwYWdlXShodHRwczovL3RvcmJlbi53ZWJzaXRlL2NsaWVudG5vZGUpXG5cbiAgICBDb3B5cmlnaHQgVG9yYmVuIFNpY2tlcnQgKGluZm9bXCJ+YXR+XCJddG9yYmVuLndlYnNpdGUpIDE2LjEyLjIwMTJcblxuICAgIExpY2Vuc2VcbiAgICAtLS0tLS0tXG5cbiAgICBUaGlzIGxpYnJhcnkgd3JpdHRlbiBieSBUb3JiZW4gU2lja2VydCBzdGFuZHMgdW5kZXIgYSBjcmVhdGl2ZSBjb21tb25zXG4gICAgbmFtaW5nIDMuMCB1bnBvcnRlZCBsaWNlbnNlLlxuICAgIFNlZSBodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wL2RlZWQuZGVcbiAgICBlbmRyZWdpb25cbiovXG5pbXBvcnQgdHlwZSB7QW55RnVuY3Rpb24sIEFycmF5VHJhbnNmb3JtZXJ9IGZyb20gJy4vdHlwZSdcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGFsbCBwYXJhbWV0ZXIgbmFtZXMgZnJvbSBnaXZlbiBjYWxsYWJsZSAoZnVuY3Rpb24gb3IgY2xhc3MsXG4gKiAuLi4pLlxuICogQHBhcmFtIGNhbGxhYmxlIC0gRnVuY3Rpb24gb3IgZnVuY3Rpb24gY29kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgTGlzdCBvZiBwYXJhbWV0ZXIgbmFtZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQYXJhbWV0ZXJOYW1lcyA9IChcbiAgICBjYWxsYWJsZTogQW55RnVuY3Rpb24gfCBzdHJpbmdcbik6IEFycmF5PHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IGZ1bmN0aW9uQ29kZTogc3RyaW5nID0gKFxuICAgICAgICAodHlwZW9mIGNhbGxhYmxlID09PSAnc3RyaW5nJykgP1xuICAgICAgICAgICAgY2FsbGFibGUgOlxuICAgICAgICAgICAgLy8gU3RyaXAgY29tbWVudHMuXG4gICAgICAgICAgICBjYWxsYWJsZS50b1N0cmluZygpXG4gICAgKS5yZXBsYWNlKC8oKFxcL1xcLy4qJCl8KFxcL1xcKltcXHNcXFNdKj9cXCpcXC8pKS9tZywgJycpXG5cbiAgICBpZiAoZnVuY3Rpb25Db2RlLnN0YXJ0c1dpdGgoJ2NsYXNzJykpXG4gICAgICAgIHJldHVybiBnZXRQYXJhbWV0ZXJOYW1lcyhcbiAgICAgICAgICAgICdmdW5jdGlvbiAnICtcbiAgICAgICAgICAgIGZ1bmN0aW9uQ29kZS5yZXBsYWNlKC8uKihjb25zdHJ1Y3RvclxcKFteKV0rXFwpKS9tLCAnJDEnKVxuICAgICAgICApXG5cbiAgICAvLyBUcnkgY2xhc3NpYyBmdW5jdGlvbiBkZWNsYXJhdGlvbi5cbiAgICBsZXQgcGFyYW1ldGVyOiBBcnJheTxzdHJpbmc+IHwgbnVsbCA9XG4gICAgICAgIC9eZnVuY3Rpb25cXHMqW14oXSpcXChcXHMqKFteKV0qKVxcKS9tLmV4ZWMoZnVuY3Rpb25Db2RlKVxuICAgIGlmIChwYXJhbWV0ZXIgPT09IG51bGwpXG4gICAgICAgIC8vIFRyeSBhcnJvdyBmdW5jdGlvbiBkZWNsYXJhdGlvbi5cbiAgICAgICAgcGFyYW1ldGVyID0gL15bXihdKlxcKFxccyooW14pXSopXFwpICo9Pi4qL20uZXhlYyhmdW5jdGlvbkNvZGUpXG4gICAgaWYgKHBhcmFtZXRlciA9PT0gbnVsbClcbiAgICAgICAgLy8gVHJ5IG9uZSBhcmd1bWVudCBhbmQgd2l0aG91dCBicmFja2V0cyBhcnJvdyBmdW5jdGlvbiBkZWNsYXJhdGlvbi5cbiAgICAgICAgcGFyYW1ldGVyID0gLyhbXj0gXSspICo9Pi4qL20uZXhlYyhmdW5jdGlvbkNvZGUpXG5cbiAgICBjb25zdCBuYW1lczogQXJyYXk8c3RyaW5nPiA9IFtdXG4gICAgaWYgKHBhcmFtZXRlciAmJiBwYXJhbWV0ZXIubGVuZ3RoID4gMSAmJiBwYXJhbWV0ZXJbMV0udHJpbSgpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGFyYW1ldGVyWzFdLnNwbGl0KCcsJykpXG4gICAgICAgICAgICAvLyBSZW1vdmUgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLlxuICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lLnJlcGxhY2UoLz0uKyQvZywgJycpLnRyaW0oKSlcbiAgICAgICAgcmV0dXJuIG5hbWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIG5hbWVzXG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIGlkZW50aXR5IGZ1bmN0aW9uLlxuICogQHBhcmFtIHZhbHVlIC0gQSB2YWx1ZSB0byByZXR1cm4uXG4gKiBAcmV0dXJucyBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlkZW50aXR5ID0gPFQ+KHZhbHVlOiBUKTogVCA9PiB2YWx1ZVxuLyoqXG4gKiBJbnZlcnRlZCBmaWx0ZXIgaGVscGVyIHRvIGludmVyc2UgZWFjaCBnaXZlbiBmaWx0ZXIuXG4gKiBAcGFyYW0gZmlsdGVyIC0gQSBmdW5jdGlvbiB0aGF0IGZpbHRlcnMgYW4gYXJyYXkuXG4gKiBAcmV0dXJucyBUaGUgaW52ZXJ0ZWQgZmlsdGVyLlxuICovXG5leHBvcnQgY29uc3QgaW52ZXJ0QXJyYXlGaWx0ZXIgPSA8VCwgRCA9IEFycmF5PHVua25vd24+PihmaWx0ZXI6IFQpOiBUID0+IHtcbiAgICByZXR1cm4gKChkYXRhOiBELCAuLi5hZGRpdGlvbmFsUGFyYW1ldGVyOiBBcnJheTx1bmtub3duPik6IEQgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWREYXRhOiBBcnJheTx1bmtub3duPiA9IChcbiAgICAgICAgICAgICAgICBmaWx0ZXIgYXMgdW5rbm93biBhcyBBcnJheVRyYW5zZm9ybWVyXG4gICAgICAgICAgICApKGRhdGEsIC4uLmFkZGl0aW9uYWxQYXJhbWV0ZXIpXG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXSBhcyBEXG4gICAgICAgICAgICBpZiAoZmlsdGVyZWREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGF0ZSBvZiBkYXRhKVxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlcmVkRGF0YS5pbmNsdWRlcyhkYXRlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChyZXN1bHQgYXMgQXJyYXk8dW5rbm93bj4pLnB1c2goZGF0ZSlcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRhdGFcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGFcbiAgICB9KSBhcyB1bmtub3duIGFzIFRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU0saUJBQWlCLEdBQzFCLFFBQThCLElBQ2Q7RUFDaEIsTUFBTSxZQUFvQixHQUFHLENBQ3hCLE9BQU8sUUFBUSxLQUFLLFFBQVEsR0FDekIsUUFBUTtFQUNSO0VBQ0EsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ3pCLE9BQU8sQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLENBQUM7RUFFakQsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUNoQyxPQUFPLGlCQUFpQixDQUNwQixXQUFXLEdBQ1gsWUFBWSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQzFELENBQUM7O0VBRUw7RUFDQSxJQUFJLFNBQStCLEdBQy9CLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7RUFDekQsSUFBSSxTQUFTLEtBQUssSUFBSTtJQUNsQjtJQUNBLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0VBQ2hFLElBQUksU0FBUyxLQUFLLElBQUk7SUFDbEI7SUFDQSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztFQUVwRCxNQUFNLEtBQW9CLEdBQUcsRUFBRTtFQUMvQixJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakUsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUN0QztJQUNBLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLEtBQUs7RUFDaEI7RUFFQSxPQUFPLEtBQUs7QUFDaEIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU0sUUFBUSxHQUFPLEtBQVEsSUFBUSxLQUFLO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU0saUJBQWlCLEdBQTJCLE1BQVMsSUFBUTtFQUN0RSxPQUFRLENBQUMsSUFBTyxFQUFFLEdBQUcsbUJBQW1DLEtBQVE7SUFDNUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO01BQ3JCLE1BQU0sWUFBNEIsR0FDOUIsTUFBTSxDQUNSLElBQUksRUFBRSxHQUFHLG1CQUFtQixDQUFDO01BRS9CLElBQUksTUFBTSxHQUFHLEVBQU87TUFDcEIsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDM0IsTUFBTSxDQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDO01BQ2pELENBQUMsTUFDRyxNQUFNLEdBQUcsSUFBSTtNQUVqQixPQUFPLE1BQU07SUFDakI7SUFFQSxPQUFPLElBQUk7RUFDZixDQUFDO0FBQ0wsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|