mnemonica 1.0.0 → 1.0.6
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/.ai/ONBOARDING.md +1 -1
- package/.ai/ask/AGENTS.md +15 -9
- package/.ai/async_init.md +2 -2
- package/.ai/rules-skill/contributing.md +1 -1
- package/.ai/rules-skill/define-patterns.md +8 -2
- package/.ai/rules-skill/ecosystem.md +4 -4
- package/.ai/rules-skill/instance-methods.md +48 -15
- package/.ai/rules-skill/type-system.md +12 -2
- package/AGENTS.md +6 -2
- package/CONTRIBUTING.md +61 -9
- package/FOR_HUMANS.md +149 -239
- package/README.md +75 -40
- package/SKILL.md +1 -1
- package/build/api/errors/exceptionConstructor.js +20 -12
- package/build/api/errors/index.js +9 -5
- package/build/api/errors/throwModificationError.js +15 -9
- package/build/api/index.js +35 -2
- package/build/api/types/InstanceCreator.js +5 -2
- package/build/api/types/Mnemosyne.d.ts +6 -6
- package/build/api/types/Mnemosyne.js +43 -120
- package/build/api/types/Props.js +5 -3
- package/build/api/types/TypeProxy.js +13 -9
- package/build/api/types/compileNewModificatorFunctionBody.js +14 -8
- package/build/api/types/index.js +56 -13
- package/build/api/utils/index.js +21 -12
- package/build/constants/index.js +11 -8
- package/build/descriptors/types/index.js +79 -26
- package/build/index.d.ts +4 -4
- package/build/index.js +62 -15
- package/build/types/index.d.ts +52 -31
- package/build/types/index.js +1 -1
- package/build/utils/clone.d.ts +1 -0
- package/build/utils/clone.js +11 -0
- package/build/utils/collectConstructors.js +5 -3
- package/build/utils/exception.d.ts +1 -0
- package/build/utils/exception.js +14 -0
- package/build/utils/extract.d.ts +2 -3
- package/build/utils/extract.js +3 -2
- package/build/utils/fork.d.ts +1 -0
- package/build/utils/fork.js +33 -0
- package/build/utils/index.d.ts +2 -3
- package/build/utils/index.js +21 -7
- package/build/utils/merge.d.ts +2 -1
- package/build/utils/merge.js +10 -6
- package/build/utils/parent.d.ts +1 -1
- package/build/utils/parent.js +3 -2
- package/build/utils/parse.d.ts +2 -12
- package/build/utils/parse.js +1 -1
- package/build/utils/pick.d.ts +4 -3
- package/build/utils/pick.js +4 -5
- package/build/utils/sibling.d.ts +1 -0
- package/build/utils/sibling.js +25 -0
- package/build/utils/toJSON.d.ts +1 -1
- package/build/utils/toJSON.js +3 -2
- package/docs/UTILS.md +184 -0
- package/docs/ai-learning-trajectory.md +1 -1
- package/docs/async-constructors.md +3 -1
- package/docs/empathy-in-ai.md +170 -0
- package/docs/hott-primer.md +47 -0
- package/docs/performance-vs-security.md +395 -0
- package/docs/purpose.md +38 -7
- package/docs/tactica-pattern.md +10 -10
- package/docs/theory-of-operations.md +224 -0
- package/docs/typed-lookup.md +12 -12
- package/docs/typeomatica.md +1 -1
- package/package.json +13 -6
- package/src/api/errors/exceptionConstructor.ts +14 -9
- package/src/api/errors/index.ts +8 -4
- package/src/api/errors/throwModificationError.ts +10 -9
- package/src/api/types/InstanceCreator.ts +5 -8
- package/src/api/types/Mnemosyne.ts +72 -231
- package/src/api/types/Props.ts +4 -2
- package/src/api/types/TypeProxy.ts +7 -11
- package/src/api/types/compileNewModificatorFunctionBody.ts +13 -7
- package/src/api/types/index.ts +15 -8
- package/src/api/utils/index.ts +16 -14
- package/src/constants/index.ts +6 -9
- package/src/descriptors/types/index.ts +44 -24
- package/src/index.ts +28 -21
- package/src/types/index.ts +101 -69
- package/src/utils/clone.ts +11 -0
- package/src/utils/collectConstructors.ts +4 -2
- package/src/utils/exception.ts +16 -0
- package/src/utils/extract.ts +5 -2
- package/src/utils/fork.ts +57 -0
- package/src/utils/index.ts +32 -13
- package/src/utils/merge.ts +18 -6
- package/src/utils/parent.ts +4 -6
- package/src/utils/parse.ts +5 -4
- package/src/utils/pick.ts +10 -2
- package/src/utils/sibling.ts +33 -0
- package/src/utils/toJSON.ts +3 -2
package/build/constants/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.constants = void 0;
|
|
4
7
|
const MNEMONICA = 'Mnemonica';
|
|
@@ -23,7 +26,7 @@ const ErrorMessages = {
|
|
|
23
26
|
OPTIONS_ERROR: 'options must be an object or a string',
|
|
24
27
|
WRONG_STACK_CLEANER: 'wrong stack cleaner instanceof',
|
|
25
28
|
};
|
|
26
|
-
const createInstanceModificator_1 = require("../api/types/createInstanceModificator");
|
|
29
|
+
const createInstanceModificator_1 = __importDefault(require("../api/types/createInstanceModificator"));
|
|
27
30
|
const defaultOptions = {
|
|
28
31
|
get ModificationConstructor() {
|
|
29
32
|
return createInstanceModificator_1.default;
|
|
@@ -40,9 +43,6 @@ const defaultOptions = {
|
|
|
40
43
|
get awaitReturn() {
|
|
41
44
|
return true;
|
|
42
45
|
},
|
|
43
|
-
get exposeInstanceMethods() {
|
|
44
|
-
return true;
|
|
45
|
-
},
|
|
46
46
|
};
|
|
47
47
|
exports.constants = {
|
|
48
48
|
get 'SymbolParentType'() {
|
|
@@ -64,17 +64,20 @@ exports.constants = {
|
|
|
64
64
|
return MNEMOSYNE;
|
|
65
65
|
},
|
|
66
66
|
get 'odp'() {
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
const result = (o, p, attributes) => {
|
|
68
|
+
const defineResult = Object.defineProperty(o, p, attributes);
|
|
69
|
+
return defineResult;
|
|
69
70
|
};
|
|
71
|
+
return result;
|
|
70
72
|
},
|
|
71
73
|
get 'defaultOptions'() {
|
|
72
74
|
return defaultOptions;
|
|
73
75
|
},
|
|
74
76
|
get 'defaultOptionsKeys'() {
|
|
75
|
-
|
|
77
|
+
const result = Object.keys(defaultOptions);
|
|
78
|
+
return result;
|
|
76
79
|
},
|
|
77
80
|
TYPE_TITLE_PREFIX,
|
|
78
81
|
ErrorMessages,
|
|
79
82
|
};
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7O0FBR2IsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDO0FBSzlCLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQztBQUc5QixNQUFNLDRCQUE0QixHQUFHLE1BQU0sQ0FBRSxXQUFXLFNBQVMsbUJBQW1CLENBQUUsQ0FBQztBQUN2RixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBRSxtQ0FBbUMsQ0FBRSxDQUFDO0FBQ3ZFLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFFLDBCQUEwQixDQUFFLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFFLHVCQUF1QixDQUFFLENBQUM7QUFJdkQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztBQUc5QyxNQUFNLGFBQWEsR0FBRztJQUVyQixrQkFBa0IsRUFBVyx5QkFBeUI7SUFDdEQseUJBQXlCLEVBQUksMkJBQTJCO0lBQ3hELDBCQUEwQixFQUFHLDRCQUE0QjtJQUN6RCxxQkFBcUIsRUFBUSx1QkFBdUI7SUFDcEQseUJBQXlCLEVBQUksMkJBQTJCO0lBQ3hELDBCQUEwQixFQUFHLDRCQUE0QjtJQUN6RCxnQkFBZ0IsRUFBYSxxQ0FBcUM7SUFFbEUsb0JBQW9CLEVBQVMsZ0RBQWdEO0lBQzdFLGVBQWUsRUFBYywrQkFBK0I7SUFDNUQscUJBQXFCLEVBQVEsbUNBQW1DO0lBQ2hFLHlCQUF5QixFQUFJLCtCQUErQjtJQUU1RCxhQUFhLEVBQWdCLHVDQUF1QztJQUNwRSxtQkFBbUIsRUFBVSxnQ0FBZ0M7Q0FHN0QsQ0FBQztBQUVGLHVHQUE2RTtBQUU3RSxNQUFNLGNBQWMsR0FBRztJQUV0QixJQUFJLHVCQUF1QjtRQUMxQixPQUFPLG1DQUF1QixDQUFDO0lBQ2hDLENBQUM7SUFLRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFPRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFLRCxJQUFJLFdBQVc7UUFDZCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFLRCxJQUFJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7Q0FFMEIsQ0FBQztBQUVoQixRQUFBLFNBQVMsR0FBRztJQUV4QixJQUFJLGtCQUFrQjtRQUNyQixPQUFPLGdCQUFnQixDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLHVCQUF1QjtRQUMxQixPQUFPLHFCQUFxQixDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLDhCQUE4QjtRQUNqQyxPQUFPLDRCQUE0QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDakIsT0FBTyxZQUFZLENBQUM7SUFDckIsQ0FBQztJQU9ELElBQUksV0FBVztRQUNkLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDZCxPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ1IsTUFBTSxNQUFNLEdBQUcsQ0FBb0IsQ0FBSSxFQUFFLENBQWMsRUFBRSxVQUE4QixFQUFNLEVBQUU7WUFDOUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FDekMsQ0FBQyxFQUNELENBQUMsRUFDRCxVQUFVLENBQ0wsQ0FBQztZQUNQLE9BQU8sWUFBWSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ25CLE9BQU8sY0FBYyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFFLGNBQWMsQ0FBRSxDQUFDO1FBQzdDLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtJQUVqQixhQUFhO0NBRWIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gbmFtZXNcbmNvbnN0IE1ORU1PTklDQSA9ICdNbmVtb25pY2EnO1xuXG4vLyBPIEdyZWF0IE1uZW1vc3luZSEgUGxlYXNlIVxuLy8gU2F2ZSB1cyBmcm9tIE9ibGl2aW9uLi4uXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NbmVtb3N5bmVcbmNvbnN0IE1ORU1PU1lORSA9ICdNbmVtb3N5bmUnO1xuXG4vLyBzeW1ib2xzXG5jb25zdCBTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uID0gU3ltYm9sKCBgZGVmYXVsdCAke01ORU1PTklDQX0gdHlwZXMgY29sbGVjdGlvbmAgKTtcbmNvbnN0IFN5bWJvbFBhcmVudFR5cGUgPSBTeW1ib2woICdQYXJlbnQgb2YgdGhpcyBTdWJUeXBlIENvbGxlY3Rpb24nICk7XG5jb25zdCBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgPSBTeW1ib2woICdEZWZpbmVkIENvbnN0cnVjdG9yIE5hbWUnICk7XG5cbmNvbnN0IFN5bWJvbENvbmZpZyA9IFN5bWJvbCggJ01uZW1vbmljYSBDb25maWcgRGF0YScgKTtcbi8vIGNvbnN0IFN5bWJvbFVzZWQgPSBTeW1ib2woICcucHJvdG90eXBlIHVzZWQgdHdpY2UnICk7XG5cbi8vIGV0Yy4uLlxuY29uc3QgVFlQRV9USVRMRV9QUkVGSVggPSAnbW9kaWZpY2F0b3Igb2YgOiAnO1xuXG4vLyBlcnJvcnNcbmNvbnN0IEVycm9yTWVzc2FnZXMgPSB7XG5cblx0QkFTRV9FUlJPUl9NRVNTQUdFICAgICAgICAgOiAnVU5QUkVESUNUQUJMRSBCRUhBVklPVVInLFxuXHRUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HICA6ICd0eXBlbmFtZSBtdXN0IGJlIGEgc3RyaW5nJyxcblx0SEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT04gOiAnaGFuZGxlciBtdXN0IGJlIGEgZnVuY3Rpb24nLFxuXHRXUk9OR19UWVBFX0RFRklOSVRJT04gICAgICA6ICd3cm9uZyB0eXBlIGRlZmluaXRpb24nLFxuXHRXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OICA6ICd3cm9uZyBpbnN0YW5jZSBpbnZvY2F0aW9uJyxcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gOiAnd3JvbmcgbW9kaWZpY2F0aW9uIHBhdHRlcm4nLFxuXHRBTFJFQURZX0RFQ0xBUkVEICAgICAgICAgICA6ICd0aGlzIHR5cGUgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCcsXG5cdC8vIEVYSVNURU5UX1BST1BFUlRZX1JFREVGSU5JVElPTiA6ICdhdHRlbXB0IHRvIHJlLWRlZmluZSB0eXBlIGNvbnN0cnVjdG9yJyxcblx0V1JPTkdfQVJHVU1FTlRTX1VTRUQgICAgICAgOiAnd3JvbmcgYXJndW1lbnRzIDogc2hvdWxkIHVzZSBwcm9wZXIgaW52b2NhdGlvbicsXG5cdFdST05HX0hPT0tfVFlQRSAgICAgICAgICAgIDogJ3RoaXMgaG9vayB0eXBlIGRvZXMgbm90IGV4aXN0Jyxcblx0TUlTU0lOR19IT09LX0NBTExCQUNLICAgICAgOiAnaG9vayBkZWZpbml0aW9uIHJlcXVpcmVzIGNhbGxiYWNrJyxcblx0TUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVCAgOiAnY2FsbGJhY2sgaXMgcmVxdWlyZWQgYXJndW1lbnQnLFxuXHQvLyBGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OICA6ICdhdHRlbXB0IHRvIHJlLWRlZmluZSBmbG93IGNoZWNrZXIgY2FsbGJhY2snLFxuXHRPUFRJT05TX0VSUk9SICAgICAgICAgICAgICA6ICdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0IG9yIGEgc3RyaW5nJyxcblx0V1JPTkdfU1RBQ0tfQ0xFQU5FUiAgICAgICAgOiAnd3Jvbmcgc3RhY2sgY2xlYW5lciBpbnN0YW5jZW9mJyxcblx0Ly8gUFJPVE9UWVBFX1VTRURfVFdJQ0UgICAgICAgOiAnLnByb3RvdHlwZSB1c2VkIHR3aWNlJyxcblxufTtcblxuaW1wb3J0IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yIGZyb20gJy4uL2FwaS90eXBlcy9jcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yJztcblxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG5cblx0Z2V0IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yICgpIHtcblx0XHRyZXR1cm4gTW9kaWZpY2F0aW9uQ29uc3RydWN0b3I7XG5cdH0sXG5cblx0Ly8gc2hhbGwgb3Igbm90IHdlIHVzZSBzdHJpY3QgY2hlY2tpbmdcblx0Ly8gZm9yIGNyZWF0aW9uIHN1Yi1pbnN0YW5jZXMgT25seSBmcm9tIGN1cnJlbnQgdHlwZVxuXHQvLyBvciB3ZSBtaWdodCB1c2UgdXAtbmVzdGVkIHN1Yi1pbnN0YW5jZXMgZnJvbSBjaGFpblxuXHRnZXQgc3RyaWN0Q2hhaW4gKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0Ly8gZGlzYWxsb3cgaW5zdGFuY2UgY29uc3RydWN0aW9uXG5cdC8vIGlmIHRoZXJlIGlzIGFuIGVycm9yIGluIHByb3RvdHlwZSBjaGFpblxuXHRnZXQgYmxvY2tFcnJvcnMgKCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIGlmIGl0IGlzIG5lY2Vzc2FyeSB0byBjb2xsZWN0IHN0YWNrXG5cdC8vIGFzIGEgX19zdGFja19fIHByb3RvdHlwZSBwcm9wZXJ0eVxuXHQvLyBkdXJpbmcgdGhlIHByb2Nlc3Mgb2YgaW5zdGFuY2UgY3JlYXRpb25cblx0Z2V0IHN1Ym1pdFN0YWNrICgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0Ly8gb3B0aW9uYWwgLi9pc3N1ZXMvMTA2XG5cdGdldCBhd2FpdFJldHVybiAoKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cbn0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbmV4cG9ydCBjb25zdCBjb25zdGFudHMgPSB7XG5cblx0Z2V0ICdTeW1ib2xQYXJlbnRUeXBlJyAoKSB7XG5cdFx0cmV0dXJuIFN5bWJvbFBhcmVudFR5cGU7XG5cdH0sXG5cblx0Z2V0ICdTeW1ib2xDb25zdHJ1Y3Rvck5hbWUnICgpIHtcblx0XHRyZXR1cm4gU3ltYm9sQ29uc3RydWN0b3JOYW1lO1xuXHR9LFxuXG5cdGdldCAnU3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbicgKCkge1xuXHRcdHJldHVybiBTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uO1xuXHR9LFxuXG5cdGdldCAnU3ltYm9sQ29uZmlnJyAoKSB7XG5cdFx0cmV0dXJuIFN5bWJvbENvbmZpZztcblx0fSxcblxuXHQvLyBnZXQgJ1N5bWJvbFVzZWQnICgpIHtcblx0Ly8gXHRyZXR1cm4gU3ltYm9sVXNlZDtcblx0Ly8gfSxcblxuXHQvLyBjb25zdGFudHNcblx0Z2V0ICdNTkVNT05JQ0EnICgpIHtcblx0XHRyZXR1cm4gTU5FTU9OSUNBO1xuXHR9LFxuXHRnZXQgJ01ORU1PU1lORScgKCkge1xuXHRcdHJldHVybiBNTkVNT1NZTkU7XG5cdH0sXG5cdGdldCAnb2RwJyAoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gPFQgZXh0ZW5kcyBvYmplY3Q+KCBvOiBULCBwOiBQcm9wZXJ0eUtleSwgYXR0cmlidXRlczogUHJvcGVydHlEZXNjcmlwdG9yICk6IFQgPT4ge1xuXHRcdFx0Y29uc3QgZGVmaW5lUmVzdWx0ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KFxuXHRcdFx0XHRvLFxuXHRcdFx0XHRwLFxuXHRcdFx0XHRhdHRyaWJ1dGVzIFxuXHRcdFx0KSBhcyBUO1xuXHRcdFx0cmV0dXJuIGRlZmluZVJlc3VsdDtcblx0XHR9O1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0Z2V0ICdkZWZhdWx0T3B0aW9ucycgKCkge1xuXHRcdHJldHVybiBkZWZhdWx0T3B0aW9ucztcblx0fSxcblxuXHRnZXQgJ2RlZmF1bHRPcHRpb25zS2V5cycgKCkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IE9iamVjdC5rZXlzKCBkZWZhdWx0T3B0aW9ucyApO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0sXG5cblx0VFlQRV9USVRMRV9QUkVGSVgsXG5cblx0RXJyb3JNZXNzYWdlcyxcblxufTtcbiJdfQ==
|
|
@@ -1,10 +1,43 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.types = void 0;
|
|
4
37
|
const constants_1 = require("../../constants");
|
|
5
38
|
const { odp, SymbolConstructorName, SymbolDefaultTypesCollection, SymbolConfig, defaultOptions, defaultOptionsKeys, MNEMONICA, MNEMOSYNE, } = constants_1.constants;
|
|
6
39
|
const types_1 = require("../../api/types");
|
|
7
|
-
const hooksAPI = require("../../api/hooks");
|
|
40
|
+
const hooksAPI = __importStar(require("../../api/hooks"));
|
|
8
41
|
const { registerHook, invokeHook, registerFlowChecker, } = hooksAPI;
|
|
9
42
|
const typesCollections = new Map();
|
|
10
43
|
const TypesCollection = function (_config) {
|
|
@@ -30,9 +63,11 @@ const TypesCollection = function (_config) {
|
|
|
30
63
|
});
|
|
31
64
|
odp(this, Symbol.hasInstance, {
|
|
32
65
|
get() {
|
|
33
|
-
|
|
34
|
-
|
|
66
|
+
const result = (instance) => {
|
|
67
|
+
const checkResult = instance[SymbolConstructorName] === MNEMONICA;
|
|
68
|
+
return checkResult;
|
|
35
69
|
};
|
|
70
|
+
return result;
|
|
36
71
|
}
|
|
37
72
|
});
|
|
38
73
|
odp(this, 'subtypes', {
|
|
@@ -42,12 +77,14 @@ const TypesCollection = function (_config) {
|
|
|
42
77
|
});
|
|
43
78
|
odp(subtypes, MNEMOSYNE, {
|
|
44
79
|
get() {
|
|
45
|
-
|
|
80
|
+
const result = typesCollections.get(self);
|
|
81
|
+
return result;
|
|
46
82
|
}
|
|
47
83
|
});
|
|
48
84
|
odp(this, MNEMOSYNE, {
|
|
49
85
|
get() {
|
|
50
|
-
|
|
86
|
+
const result = typesCollections.get(self);
|
|
87
|
+
return result;
|
|
51
88
|
}
|
|
52
89
|
});
|
|
53
90
|
const hooks = Object.create(null);
|
|
@@ -59,59 +96,71 @@ const TypesCollection = function (_config) {
|
|
|
59
96
|
};
|
|
60
97
|
odp(TypesCollection.prototype, MNEMONICA, {
|
|
61
98
|
get() {
|
|
62
|
-
|
|
99
|
+
const result = typesCollections.get(this);
|
|
100
|
+
return result;
|
|
63
101
|
}
|
|
64
102
|
});
|
|
65
103
|
odp(TypesCollection.prototype, 'define', {
|
|
66
104
|
get() {
|
|
67
105
|
const { subtypes } = this;
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
return
|
|
106
|
+
const result = function (TypeOrTypeName, constructHandlerOrConfig, config) {
|
|
107
|
+
const defineResult = types_1.define.call(this, subtypes, TypeOrTypeName, constructHandlerOrConfig, config);
|
|
108
|
+
return defineResult;
|
|
71
109
|
};
|
|
110
|
+
return result;
|
|
72
111
|
},
|
|
73
112
|
enumerable: true
|
|
74
113
|
});
|
|
75
114
|
odp(TypesCollection.prototype, 'lookup', {
|
|
76
115
|
get() {
|
|
77
|
-
|
|
78
|
-
|
|
116
|
+
const result = function (TypeNestedPath) {
|
|
117
|
+
const lookupResult = types_1.lookup.call(this.subtypes, TypeNestedPath);
|
|
118
|
+
return lookupResult;
|
|
79
119
|
}.bind(this);
|
|
120
|
+
return result;
|
|
80
121
|
},
|
|
81
122
|
enumerable: true
|
|
82
123
|
});
|
|
83
124
|
odp(TypesCollection.prototype, 'registerHook', {
|
|
84
125
|
get() {
|
|
85
126
|
const self = this;
|
|
86
|
-
|
|
87
|
-
|
|
127
|
+
const result = function (hookName, hookCallback) {
|
|
128
|
+
const hookResult = registerHook.call(self, hookName, hookCallback);
|
|
129
|
+
return hookResult;
|
|
88
130
|
}.bind(this);
|
|
131
|
+
return result;
|
|
89
132
|
},
|
|
90
133
|
enumerable: true
|
|
91
134
|
});
|
|
92
135
|
odp(TypesCollection.prototype, 'invokeHook', {
|
|
93
136
|
get() {
|
|
94
|
-
|
|
95
|
-
|
|
137
|
+
const result = (hookName, opts) => {
|
|
138
|
+
const hookResult = invokeHook.call(typesCollections.get(this), hookName, opts);
|
|
139
|
+
return hookResult;
|
|
96
140
|
};
|
|
141
|
+
return result;
|
|
97
142
|
}
|
|
98
143
|
});
|
|
99
144
|
odp(TypesCollection.prototype, 'registerFlowChecker', {
|
|
100
145
|
get() {
|
|
101
|
-
|
|
102
|
-
|
|
146
|
+
const result = (flowCheckerCallback) => {
|
|
147
|
+
const checkerResult = registerFlowChecker.call(typesCollections.get(this), flowCheckerCallback);
|
|
148
|
+
return checkerResult;
|
|
103
149
|
};
|
|
150
|
+
return result;
|
|
104
151
|
}
|
|
105
152
|
});
|
|
106
153
|
const typesCollectionProxyHandler = {
|
|
107
154
|
get(target, prop) {
|
|
108
155
|
if (target.subtypes.has(prop)) {
|
|
109
|
-
|
|
156
|
+
const subtypeResult = target.subtypes.get(prop);
|
|
157
|
+
return subtypeResult;
|
|
110
158
|
}
|
|
111
159
|
if (prop === 'define') {
|
|
112
160
|
return target.define;
|
|
113
161
|
}
|
|
114
|
-
|
|
162
|
+
const reflectResult = Reflect.get(target, prop);
|
|
163
|
+
return reflectResult;
|
|
115
164
|
},
|
|
116
165
|
set(target, TypeName, Constructor) {
|
|
117
166
|
target.define(TypeName, Constructor);
|
|
@@ -119,14 +168,16 @@ const typesCollectionProxyHandler = {
|
|
|
119
168
|
},
|
|
120
169
|
getOwnPropertyDescriptor(target, prop) {
|
|
121
170
|
if (target.subtypes.has(prop)) {
|
|
122
|
-
|
|
171
|
+
const descriptorResult = {
|
|
123
172
|
configurable: true,
|
|
124
173
|
enumerable: true,
|
|
125
174
|
writable: false,
|
|
126
175
|
value: target.subtypes.get(prop)
|
|
127
176
|
};
|
|
177
|
+
return descriptorResult;
|
|
128
178
|
}
|
|
129
|
-
|
|
179
|
+
const ownPropResult = Reflect.getOwnPropertyDescriptor(target, prop);
|
|
180
|
+
return ownPropResult;
|
|
130
181
|
}
|
|
131
182
|
};
|
|
132
183
|
const createTypesCollection = (config = {}) => {
|
|
@@ -143,13 +194,15 @@ odp(DEFAULT_TYPES, SymbolDefaultTypesCollection, {
|
|
|
143
194
|
});
|
|
144
195
|
exports.types = {
|
|
145
196
|
get createTypesCollection() {
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
return
|
|
197
|
+
const result = function (config = {}) {
|
|
198
|
+
const collectionResult = createTypesCollection(config);
|
|
199
|
+
return collectionResult;
|
|
149
200
|
};
|
|
201
|
+
return result;
|
|
150
202
|
},
|
|
151
203
|
get defaultTypes() {
|
|
152
|
-
|
|
204
|
+
const result = DEFAULT_TYPES;
|
|
205
|
+
return result;
|
|
153
206
|
}
|
|
154
207
|
};
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDRDQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxDQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ25CLENBQUM7UUFD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Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG5cdF9JbnRlcm5hbF9UQ18sXG5cdENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uLFxuXHRUeXBlc0NvbGxlY3Rpb24sXG5cdGhvb2tzT3B0cyxcblx0aG9va1xufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdGRlZmF1bHRPcHRpb25zLFxuXHRkZWZhdWx0T3B0aW9uc0tleXMsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxufSA9IGNvbnN0YW50cztcblxuLy8gaGVyZSBpcyBUeXBlc0NvbGxlY3Rpb24uZGVmaW5lKCkgbWV0aG9kXG5pbXBvcnQge1xuXHRkZWZpbmUsIGxvb2t1cCwgdHlwZSBUeXBlc01hcCBcbn0gZnJvbSAnLi4vLi4vYXBpL3R5cGVzJztcblxuaW1wb3J0ICogYXMgaG9va3NBUEkgZnJvbSAnLi4vLi4vYXBpL2hvb2tzJztcblxuY29uc3Qge1xuXHRyZWdpc3Rlckhvb2ssXG5cdGludm9rZUhvb2ssXG5cdHJlZ2lzdGVyRmxvd0NoZWNrZXIsXG59ID0gaG9va3NBUEk7XG5cbmNvbnN0IHR5cGVzQ29sbGVjdGlvbnMgPSBuZXcgTWFwKCk7XG5cbmNvbnN0IFR5cGVzQ29sbGVjdGlvbiA9IGZ1bmN0aW9uICggX2NvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKSB7XG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qgc3VidHlwZXMgPSBuZXcgTWFwKCk7XG5cblx0Ly8gZGVmYXVsdCBjb25maWcgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiB0eXBlcyBjb2xsZWN0aW9uIGNvbmZpZ1xuXHRjb25zdCBjb25maWcgPSBkZWZhdWx0T3B0aW9uc0tleXMucmVkdWNlKFxuXHRcdCggbzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nICkgPT4ge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSBfY29uZmlnWyBrZXkgXTtcblx0XHRcdGNvbnN0IG9wdGlvbiA9IGRlZmF1bHRPcHRpb25zWyBrZXkgXTtcblx0XHRcdGNvbnN0IHRfY29uZiA9IHR5cGVvZiB2YWx1ZTtcblx0XHRcdGNvbnN0IHRfb3B0cyA9IHR5cGVvZiBvcHRpb247XG5cdFx0XHRpZiAoIHRfY29uZiA9PT0gdF9vcHRzICkge1xuXHRcdFx0XHRvWyBrZXkgXSA9IHZhbHVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b1sga2V5IF0gPSBvcHRpb247XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9LFxuXHRcdHt9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbENvbmZpZyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gY29uZmlnO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0b2RwKFxuXHRcdHRoaXMsXG5cdFx0U3ltYm9sLmhhc0luc3RhbmNlLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSA9PT0gTU5FTU9OSUNBO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0b2RwKFxuXHRcdHRoaXMsXG5cdFx0J3N1YnR5cGVzJyxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gc3VidHlwZXM7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHQvLyBGb3IgaW5zdGFuY2VvZiBNTkVNT1NZTkVcblx0b2RwKFxuXHRcdHN1YnR5cGVzLFxuXHRcdE1ORU1PU1lORSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0Ly8gcmV0dXJuaW5nIHByb3h5XG5cdFx0XHRcdHJldHVybiB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Ly8gRm9yIGluc3RhbmNlb2YgTU5FTU9TWU5FXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdE1ORU1PU1lORSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0Ly8gcmV0dXJuaW5nIHByb3h5XG5cdFx0XHRcdHJldHVybiB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKTtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24gKFxuXHRcdFx0XHR0aGlzOiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRcdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnPzogQ2FsbGFibGVGdW5jdGlvbiB8IG9iamVjdCxcblx0XHRcdFx0Y29uZmlnPzogb2JqZWN0XG5cdFx0XHQpIHtcblx0XHRcdC8vIHRoaXMgLSBkZWZpbmUgZnVuY3Rpb24gb2YgbW5lbW9uaWNhIGludGVyZmFjZVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSBkZWZpbmUuY2FsbChcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24sXG5cdFx0XHRcdFx0c3VidHlwZXMgYXMgVHlwZXNNYXAsXG5cdFx0XHRcdFx0VHlwZU9yVHlwZU5hbWUsXG5cdFx0XHRcdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnLFxuXHRcdFx0XHRcdGNvbmZpZ1xuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdHJldHVybiBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IHsgc3VidHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD4gfSxcblx0XHRcdFx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBsb29rdXAuY2FsbChcbiB0aGlzLnN1YnR5cGVzIGFzIHVua25vd24gYXMgVHlwZXNNYXAsXG4gVHlwZU5lc3RlZFBhdGggXG5cdFx0XHRcdCk7XG5cdFx0XHR9LmJpbmQoIHRoaXMgKTtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdyZWdpc3Rlckhvb2snLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHQgXG5cdFx0XHRjb25zdCBzZWxmID0gdGhpcztcblx0XHRcdHJldHVybiBmdW5jdGlvbiAoIGhvb2tOYW1lOiBzdHJpbmcsIGhvb2tDYWxsYmFjazogaG9vayApIHtcblx0XHRcdC8vIHJldHVybiBwcm90by5yZWdpc3Rlckhvb2suY2FsbCggdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKSwgaG9va05hbWUsIGhvb2tDYWxsYmFjayApO1xuXHRcdFx0XHRyZXR1cm4gcmVnaXN0ZXJIb29rLmNhbGwoXG5cdFx0XHRcdFx0c2VsZixcblx0XHRcdFx0XHRob29rTmFtZSxcblx0XHRcdFx0XHRob29rQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHR9LmJpbmQoIHRoaXMgKTtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRyZXR1cm4gKCBob29rTmFtZTogc3RyaW5nLCBvcHRzOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9ICkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gaW52b2tlSG9vay5jYWxsKFxuXHRcdFx0XHRcdHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCB0aGlzICksXG5cdFx0XHRcdFx0aG9va05hbWUsXG5vcHRzIGFzIGhvb2tzT3B0cyBcblx0XHRcdFx0KTtcblx0XHRcdH07XG5cdFx0fVxuXHR9IFxuKTtcblxub2RwKFxuXHRUeXBlc0NvbGxlY3Rpb24ucHJvdG90eXBlLFxuXHQncmVnaXN0ZXJGbG93Q2hlY2tlcicsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdFx0cmV0dXJuICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0cmV0dXJuIHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHR9O1xuXHRcdH1cblx0fSBcbik7XG5cblxuaW50ZXJmYWNlIFR5cGVzQ29sbGVjdGlvblRhcmdldCB7XG5cdHN1YnR5cGVzOiBUeXBlc01hcDtcblx0ZGVmaW5lOiAobmFtZTogc3RyaW5nLCBjdG9yOiBGdW5jdGlvbkNvbnN0cnVjdG9yKSA9PiBvYmplY3Q7XG59XG5cbmNvbnN0IHR5cGVzQ29sbGVjdGlvblByb3h5SGFuZGxlciA9IHtcblx0Z2V0ICggdGFyZ2V0OiBUeXBlc0NvbGxlY3Rpb25UYXJnZXQsIHByb3A6IHN0cmluZyApIHtcblx0XHRpZiAoIHRhcmdldC5zdWJ0eXBlcy5oYXMoIHByb3AgKSApIHtcblx0XHRcdC8vIGFjY2VzcyB0byBzdXB0eXBlXG5cdFx0XHQvLyBmb3IgbmV3IGNhbGwgb3IgZGVmaW5pbmcgbmV3IHR5cGVcblx0XHRcdHJldHVybiB0YXJnZXQuc3VidHlwZXMuZ2V0KCBwcm9wICk7XG5cdFx0fVxuXHRcdGlmICggcHJvcCA9PT0gJ2RlZmluZScgKSB7XG5cdFx0XHQvLyB3aWxsIGhvcGVmdWxseSBkZWZpbmUgbmV3IHR5cGVcblx0XHRcdHJldHVybiB0YXJnZXQuZGVmaW5lO1xuXHRcdH1cblx0XHRyZXR1cm4gUmVmbGVjdC5nZXQoXG5cdFx0XHR0YXJnZXQsXG5cdFx0XHRwcm9wIFxuXHRcdCk7XG5cdH0sXG5cdHNldCAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBUeXBlTmFtZTogc3RyaW5nLCBDb25zdHJ1Y3RvcjogRnVuY3Rpb25Db25zdHJ1Y3RvciApIHtcblx0XHR0YXJnZXQuZGVmaW5lKFxuXHRcdFx0VHlwZU5hbWUsXG5cdFx0XHRDb25zdHJ1Y3RvciBcblx0XHQpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcblx0Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICggdGFyZ2V0OiBUeXBlc0NvbGxlY3Rpb25UYXJnZXQsIHByb3A6IHN0cmluZyApIHtcblx0XHRpZiAoIHRhcmdldC5zdWJ0eXBlcy5oYXMoIHByb3AgKSApIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvbmZpZ3VyYWJsZSA6IHRydWUsXG5cdFx0XHRcdGVudW1lcmFibGUgICA6IHRydWUsXG5cdFx0XHRcdHdyaXRhYmxlICAgICA6IGZhbHNlLFxuXHRcdFx0XHR2YWx1ZSAgICAgICAgOiB0YXJnZXQuc3VidHlwZXMuZ2V0KCBwcm9wIClcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24gKCBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30gKTogVHlwZXNDb2xsZWN0aW9uIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdHJldHVybiBERUZBVUxUX1RZUEVTIGFzIFR5cGVzQ29sbGVjdGlvbjtcblx0fVxuXG59O1xuIl19
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDBEQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxD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RyxDQUFFLFNBQWtDLEVBQUUsRUFBRyxFQUFFO0lBRXhFLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFFLE1BQU0sQ0FBRSxDQUFDO0lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQ3JDLGVBQWUsRUFDZiwyQkFBMkIsQ0FDM0IsQ0FBQztJQUVGLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkIsZUFBZSxFQUNmLG9CQUFvQixDQUNwQixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUU3QixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQzlDLEdBQUcsQ0FDRixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCO0lBQ0MsR0FBRztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQ0QsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ3BCLElBQUkscUJBQXFCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLFVBQVcsU0FBa0MsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFFLE1BQU0sQ0FBcUIsQ0FBQztZQUM1RSxPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksWUFBWTtRQUNmLE1BQU0sTUFBTSxHQUFHLGFBQWdDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0NBRUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbixcblx0VHlwZXNDb2xsZWN0aW9uLFxuXHRob29rc09wdHMsXG5cdGhvb2tcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0U3ltYm9sQ29uZmlnLFxuXHRkZWZhdWx0T3B0aW9ucyxcblx0ZGVmYXVsdE9wdGlvbnNLZXlzLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbi8vIGhlcmUgaXMgVHlwZXNDb2xsZWN0aW9uLmRlZmluZSgpIG1ldGhvZFxuaW1wb3J0IHtcblx0ZGVmaW5lLCBsb29rdXAsIHR5cGUgVHlwZXNNYXAgXG59IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5cbmltcG9ydCAqIGFzIGhvb2tzQVBJIGZyb20gJy4uLy4uL2FwaS9ob29rcyc7XG5cbmNvbnN0IHtcblx0cmVnaXN0ZXJIb29rLFxuXHRpbnZva2VIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufSA9IGhvb2tzQVBJO1xuXG5jb25zdCB0eXBlc0NvbGxlY3Rpb25zID0gbmV3IE1hcCgpO1xuXG5jb25zdCBUeXBlc0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoIF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHN1YnR5cGVzID0gbmV3IE1hcCgpO1xuXG5cdC8vIGRlZmF1bHQgY29uZmlnIGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gdHlwZXMgY29sbGVjdGlvbiBjb25maWdcblx0Y29uc3QgY29uZmlnID0gZGVmYXVsdE9wdGlvbnNLZXlzLnJlZHVjZShcblx0XHQoIG86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyApID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gX2NvbmZpZ1sga2V5IF07XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkZWZhdWx0T3B0aW9uc1sga2V5IF07XG5cdFx0XHRjb25zdCB0X2NvbmYgPSB0eXBlb2YgdmFsdWU7XG5cdFx0XHRjb25zdCB0X29wdHMgPSB0eXBlb2Ygb3B0aW9uO1xuXHRcdFx0aWYgKCB0X2NvbmYgPT09IHRfb3B0cyApIHtcblx0XHRcdFx0b1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9bIGtleSBdID0gb3B0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG87XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRTeW1ib2xDb25maWcsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbmZpZztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2hlY2tSZXN1bHQgPSBpbnN0YW5jZVsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQTtcblx0XHRcdFx0XHRyZXR1cm4gY2hlY2tSZXN1bHQ7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHQnc3VidHlwZXMnLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzdWJ0eXBlcztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0c3VidHlwZXMsXG5cdFx0TU5FTU9TWU5FLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHQvLyByZXR1cm5pbmcgcHJveHlcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRNTkVNT1NZTkUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdC8vIHJldHVybmluZyBwcm94eVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRcdFx0XHRjb25maWc/OiBvYmplY3Rcblx0XHRcdCkge1xuXHRcdFx0Ly8gdGhpcyAtIGRlZmluZSBmdW5jdGlvbiBvZiBtbmVtb25pY2EgaW50ZXJmYWNlXG5cdFx0XHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IGRlZmluZS5jYWxsKFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93bixcblx0XHRcdFx0XHRzdWJ0eXBlcyBhcyBUeXBlc01hcCxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uIChcblx0XHRcdFx0dGhpczogeyBzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0PiB9LFxuXHRcdFx0XHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbG9va3VwUmVzdWx0ID0gbG9va3VwLmNhbGwoXG4gdGhpcy5zdWJ0eXBlcyBhcyB1bmtub3duIGFzIFR5cGVzTWFwLFxuIFR5cGVOZXN0ZWRQYXRoIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbG9va3VwUmVzdWx0O1xuXHRcdFx0fS5iaW5kKCB0aGlzICk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVySG9vaycsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdCBcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZnVuY3Rpb24gKCBob29rTmFtZTogc3RyaW5nLCBob29rQ2FsbGJhY2s6IGhvb2sgKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvdG8ucmVnaXN0ZXJIb29rLmNhbGwoIHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCBzZWxmICksIGhvb2tOYW1lLCBob29rQ2FsbGJhY2sgKTtcblx0XHRcdFx0Y29uc3QgaG9va1Jlc3VsdCA9IHJlZ2lzdGVySG9vay5jYWxsKFxuXHRcdFx0XHRcdHNlbGYsXG5cdFx0XHRcdFx0aG9va05hbWUsXG5cdFx0XHRcdFx0aG9va0NhbGxiYWNrIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH0uYmluZCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSAoIGhvb2tOYW1lOiBzdHJpbmcsIG9wdHM6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0gKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhvb2tSZXN1bHQgPSBpbnZva2VIb29rLmNhbGwoXG5cdFx0XHRcdFx0dHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKSxcblx0XHRcdFx0XHRob29rTmFtZSxcbm9wdHMgYXMgaG9va3NPcHRzIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVyRmxvd0NoZWNrZXInLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9ICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tlclJlc3VsdCA9IHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBjaGVja2VyUmVzdWx0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9IFxuKTtcblxuXG5pbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uVGFyZ2V0IHtcblx0c3VidHlwZXM6IFR5cGVzTWFwO1xuXHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IpID0+IG9iamVjdDtcbn1cblxuY29uc3QgdHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyID0ge1xuXHRnZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgcHJvcDogc3RyaW5nICkge1xuXHRcdGlmICggdGFyZ2V0LnN1YnR5cGVzLmhhcyggcHJvcCApICkge1xuXHRcdFx0Ly8gYWNjZXNzIHRvIHN1cHR5cGVcblx0XHRcdC8vIGZvciBuZXcgY2FsbCBvciBkZWZpbmluZyBuZXcgdHlwZVxuXHRcdFx0Y29uc3Qgc3VidHlwZVJlc3VsdCA9IHRhcmdldC5zdWJ0eXBlcy5nZXQoIHByb3AgKTtcblx0XHRcdHJldHVybiBzdWJ0eXBlUmVzdWx0O1xuXHRcdH1cblx0XHRpZiAoIHByb3AgPT09ICdkZWZpbmUnICkge1xuXHRcdFx0Ly8gd2lsbCBob3BlZnVsbHkgZGVmaW5lIG5ldyB0eXBlXG5cdFx0XHRyZXR1cm4gdGFyZ2V0LmRlZmluZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVmbGVjdFJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0dGFyZ2V0LFxuXHRcdFx0cHJvcCBcblx0XHQpO1xuXHRcdHJldHVybiByZWZsZWN0UmVzdWx0O1xuXHR9LFxuXHRzZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgVHlwZU5hbWU6IHN0cmluZywgQ29uc3RydWN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IgKSB7XG5cdFx0dGFyZ2V0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lLFxuXHRcdFx0Q29uc3RydWN0b3IgXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvciAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBwcm9wOiBzdHJpbmcgKSB7XG5cdFx0aWYgKCB0YXJnZXQuc3VidHlwZXMuaGFzKCBwcm9wICkgKSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yUmVzdWx0ID0ge1xuXHRcdFx0XHRjb25maWd1cmFibGUgOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlICAgOiB0cnVlLFxuXHRcdFx0XHR3cml0YWJsZSAgICAgOiBmYWxzZSxcblx0XHRcdFx0dmFsdWUgICAgICAgIDogdGFyZ2V0LnN1YnR5cGVzLmdldCggcHJvcCApXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGRlc2NyaXB0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IG93blByb3BSZXN1bHQgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdFx0cmV0dXJuIG93blByb3BSZXN1bHQ7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSApOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25SZXN1bHQ7XG5cdFx0fTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERFRkFVTFRfVFlQRVMgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxufTtcbiJdfQ==
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule, TypeConstructor } from './types';
|
|
1
|
+
import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule, TypeConstructor, InstanceResult, Merge } from './types';
|
|
2
2
|
export declare const isClass: (fn: import("./api/types/compileNewModificatorFunctionBody").ConstructHandler) => boolean, findSubTypeFromParent: (instance: import("./api/utils/index").parentSub | object | undefined, subType: string) => import("./api/utils/index").parentSub | null;
|
|
3
3
|
export type { IDEF, TypeConstructor, _Internal_TC_, Proto, ProtoFlat, hooksOpts, hook, hooksTypes, TypesCollection } from './types';
|
|
4
4
|
export { getProps, setProps } from './api/types/Props';
|
|
@@ -9,9 +9,9 @@ export interface TypeRegistry {
|
|
|
9
9
|
[key: string]: TypeConstructor<never>;
|
|
10
10
|
}
|
|
11
11
|
export declare const lookupTyped: <const K extends keyof TypeRegistry>(this: unknown, TypeNestedPath: K) => TypeRegistry[K];
|
|
12
|
-
export declare const apply: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, args?: unknown[]) =>
|
|
13
|
-
export declare const call: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, ...args: unknown[]) =>
|
|
14
|
-
export declare const bind: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>) => (...args: unknown[]) =>
|
|
12
|
+
export declare const apply: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, args?: unknown[]) => InstanceResult<Merge<E, T>>;
|
|
13
|
+
export declare const call: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, ...args: unknown[]) => InstanceResult<Merge<E, T>>;
|
|
14
|
+
export declare const bind: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>) => (...args: unknown[]) => InstanceResult<Merge<E, T>>;
|
|
15
15
|
export declare const decorate: <T extends Constructor<object> | constructorOptions | undefined = undefined>(target?: T, config?: constructorOptions) => <U extends Constructor<object>>(cstr: U) => DecoratedClass<U>;
|
|
16
16
|
export declare const registerHook: <T extends Constructor<T>>(Ctor: DecoratedClass<T>, hookType: hooksTypes, cb: hook) => void;
|
|
17
17
|
export declare const mnemonica: MnemonicaModule;
|
package/build/index.js
CHANGED
|
@@ -1,37 +1,77 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
2
38
|
var _a;
|
|
3
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
40
|
exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports._lookup = exports._define = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.lookupTyped = exports.lookup = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = exports.findSubTypeFromParent = exports.isClass = void 0;
|
|
5
|
-
const index_1 = require("./api/utils/index");
|
|
41
|
+
const index_1 = __importDefault(require("./api/utils/index"));
|
|
6
42
|
exports.isClass = index_1.default.isClass, exports.findSubTypeFromParent = index_1.default.findSubTypeFromParent;
|
|
7
43
|
var Props_1 = require("./api/types/Props");
|
|
8
44
|
Object.defineProperty(exports, "getProps", { enumerable: true, get: function () { return Props_1.getProps; } });
|
|
9
45
|
Object.defineProperty(exports, "setProps", { enumerable: true, get: function () { return Props_1.setProps; } });
|
|
10
46
|
const constants_1 = require("./constants");
|
|
11
47
|
const { odp } = constants_1.constants;
|
|
12
|
-
const errorsApi = require("./api/errors");
|
|
48
|
+
const errorsApi = __importStar(require("./api/errors"));
|
|
13
49
|
const descriptors_1 = require("./descriptors");
|
|
14
50
|
const { WRONG_MODIFICATION_PATTERN } = descriptors_1.descriptors.ErrorsTypes;
|
|
15
|
-
const Mnemosyne_1 = require("./api/types/Mnemosyne");
|
|
51
|
+
const Mnemosyne_1 = __importDefault(require("./api/types/Mnemosyne"));
|
|
16
52
|
const { prepareSubtypeForConstruction } = Mnemosyne_1.default;
|
|
17
53
|
exports.defaultTypes = descriptors_1.descriptors.defaultTypes;
|
|
18
54
|
function checkThis(pointer) {
|
|
19
|
-
|
|
55
|
+
const result = pointer === exports.mnemonica || pointer === exports;
|
|
56
|
+
return result;
|
|
20
57
|
}
|
|
21
58
|
exports.define = function (TypeName, constructHandler, config) {
|
|
22
59
|
const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
|
|
23
|
-
|
|
60
|
+
const defineResult = types
|
|
24
61
|
.define(TypeName, constructHandler, config);
|
|
62
|
+
return defineResult;
|
|
25
63
|
};
|
|
26
64
|
const lookup = function (TypeNestedPath) {
|
|
27
65
|
const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
|
|
28
|
-
|
|
66
|
+
const lookupResult = types.lookup(TypeNestedPath);
|
|
67
|
+
return lookupResult;
|
|
29
68
|
};
|
|
30
69
|
exports.lookup = lookup;
|
|
31
70
|
const lookupTyped = function (TypeNestedPath) {
|
|
32
71
|
const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
|
|
33
|
-
|
|
72
|
+
const lookupResult = types
|
|
34
73
|
.lookup(TypeNestedPath);
|
|
74
|
+
return lookupResult;
|
|
35
75
|
};
|
|
36
76
|
exports.lookupTyped = lookupTyped;
|
|
37
77
|
const $run = function (entity, Ctor, args) {
|
|
@@ -41,21 +81,28 @@ const $run = function (entity, Ctor, args) {
|
|
|
41
81
|
const ErrorCtor = WRONG_MODIFICATION_PATTERN;
|
|
42
82
|
throw new ErrorCtor(`[ ${TypeName} ] is not defined as a Type Constructor on used instance`);
|
|
43
83
|
}
|
|
44
|
-
const
|
|
45
|
-
return
|
|
84
|
+
const runResult = new Cstr(...args);
|
|
85
|
+
return runResult;
|
|
46
86
|
};
|
|
47
87
|
const apply = function (entity, Ctor, args = []) {
|
|
48
|
-
|
|
88
|
+
const runResult = $run(entity, Ctor, args);
|
|
89
|
+
const result = runResult;
|
|
90
|
+
return result;
|
|
49
91
|
};
|
|
50
92
|
exports.apply = apply;
|
|
51
93
|
const call = function (entity, Ctor, ...args) {
|
|
52
|
-
|
|
94
|
+
const runResult = $run(entity, Ctor, args);
|
|
95
|
+
const result = runResult;
|
|
96
|
+
return result;
|
|
53
97
|
};
|
|
54
98
|
exports.call = call;
|
|
55
99
|
const bind = function (entity, Ctor) {
|
|
56
|
-
|
|
57
|
-
|
|
100
|
+
const result = (...args) => {
|
|
101
|
+
const runResult = $run(entity, Ctor, args);
|
|
102
|
+
const typedResult = runResult;
|
|
103
|
+
return typedResult;
|
|
58
104
|
};
|
|
105
|
+
return result;
|
|
59
106
|
};
|
|
60
107
|
exports.bind = bind;
|
|
61
108
|
const decorate = function (target, config) {
|
|
@@ -98,7 +145,7 @@ exports.mnemonica = Object.entries(Object.assign(Object.assign(Object.assign({ d
|
|
|
98
145
|
});
|
|
99
146
|
return acc;
|
|
100
147
|
}, {});
|
|
101
|
-
const api = require("./api");
|
|
148
|
+
const api = __importStar(require("./api"));
|
|
102
149
|
_a = api.types, exports._define = _a.define, exports._lookup = _a.lookup;
|
|
103
150
|
exports.SymbolParentType = exports.mnemonica.SymbolParentType, exports.SymbolConstructorName = exports.mnemonica.SymbolConstructorName, exports.SymbolDefaultTypesCollection = exports.mnemonica.SymbolDefaultTypesCollection, exports.SymbolConfig = exports.mnemonica.SymbolConfig, exports.MNEMONICA = exports.mnemonica.MNEMONICA, exports.MNEMOSYNE = exports.mnemonica.MNEMOSYNE, exports.TYPE_TITLE_PREFIX = exports.mnemonica.TYPE_TITLE_PREFIX, exports.ErrorMessages = exports.mnemonica.ErrorMessages;
|
|
104
151
|
exports.createTypesCollection = exports.mnemonica.createTypesCollection;
|
|
@@ -108,4 +155,4 @@ var utils_1 = require("./utils");
|
|
|
108
155
|
Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return utils_1.utils; } });
|
|
109
156
|
var utils_2 = require("./utils");
|
|
110
157
|
Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return utils_2.defineStackCleaner; } });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7O0FBa0JiLDZDQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBTWYsMkNBRTJCO0FBRDFCLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUduQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsMENBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxxREFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUV0QyxvQkFBWSxHQUFNLHlCQUFXLGNBQUM7QUFFN0MsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsT0FBTyxPQUFPLEtBQUssaUJBQVMsSUFBSSxPQUFPLEtBQUssT0FBTyxDQUFDO0FBQ3JELENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxPQUFRLEtBQWtDO1NBQ3hDLE1BQU0sQ0FDTixRQUFrQixFQUNsQixnQkFBMkIsRUFDM0IsTUFBTSxDQUNVLENBQUM7QUFDcEIsQ0FBaUIsQ0FBQztBQUVYLE1BQU0sTUFBTSxHQUFHLFVBRXJCLGNBQXNCO0lBRXRCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQVksQ0FBQyxDQUFDLENBQUMs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TixpQkFBUyxZQUhaLHlCQUFpQixHQUdkLGlCQUFTLG9CQUZaLHFCQUFhLEdBRVYsaUJBQVMsZUFBQztBQUdELFFBQUEscUJBQXFCLEdBQ2pDLGlCQUFTLENBQUMscUJBQXNELENBQUM7QUFHckQsUUFBQSxpQkFBaUIsR0FBSSxvQkFBa0QsQ0FBQyxRQUFRLENBQUM7QUFDakYsUUFBQSxNQUFNLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFOUMsaUNBQWdDO0FBQXZCLDhGQUFBLEtBQUssT0FBQTtBQUNkLGlDQUE2QztBQUFwQywyR0FBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG5cdENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uLFxuXHRJREVGLFxuXHRob29rLFxuXHRob29rc1R5cGVzLFxuXHRjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdFByb3RvLFxuXHRJRGVmaW5pdG9ySW5zdGFuY2UsXG5cdENvbnN0cnVjdG9yLFxuXHREZWNvcmF0ZWRDbGFzcyxcblx0VHlwZUNsYXNzLFxuXHRUeXBlQWJzb3JiZXIsXG5cdE1uZW1vbmljYU1vZHVsZSxcblx0VHlwZUNvbnN0cnVjdG9yXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuL2FwaS91dGlscy9pbmRleCc7XG5leHBvcnQgY29uc3Qge1xuXHRpc0NsYXNzLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG59ID0gVHlwZXNVdGlscztcblxuZXhwb3J0IHR5cGUge1xuXHRJREVGLCBUeXBlQ29uc3RydWN0b3IsIF9JbnRlcm5hbF9UQ18sIFByb3RvLCBQcm90b0ZsYXQsXG5cdGhvb2tzT3B0cywgaG9vaywgaG9va3NUeXBlcywgVHlwZXNDb2xsZWN0aW9uXG59IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHtcblx0Z2V0UHJvcHMsIHNldFByb3BzIFxufSBmcm9tICcuL2FwaS90eXBlcy9Qcm9wcyc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IHsgb2RwIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCAqIGFzIGVycm9yc0FwaSBmcm9tICcuL2FwaS9lcnJvcnMnO1xuaW1wb3J0IHsgZGVzY3JpcHRvcnMgfSBmcm9tICcuL2Rlc2NyaXB0b3JzJztcblxuY29uc3QgeyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiB9ID0gZGVzY3JpcHRvcnMuRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vYXBpL3R5cGVzL01uZW1vc3luZSc7XG5jb25zdCB7IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uIH0gPSBtbmVtb3N5bmVzO1xuXG5leHBvcnQgY29uc3QgeyBkZWZhdWx0VHlwZXMsIH0gPSBkZXNjcmlwdG9ycztcblxuZnVuY3Rpb24gY2hlY2tUaGlzKHBvaW50ZXI6IHR5cGVvZiBtbmVtb25pY2EgfCB0eXBlb2YgZXhwb3J0cyB8IHVua25vd24pOiBib29sZWFuIHtcblx0cmV0dXJuIHBvaW50ZXIgPT09IG1uZW1vbmljYSB8fCBwb2ludGVyID09PSBleHBvcnRzO1xufVxuXG5cbi8vIERlZmluZSBmdW5jdGlvbiB1c2luZyBUeXBlQWJzb3JiZXIgaW50ZXJmYWNlIHdpdGggcHJvcGVyIHR5cGUgY2FzdGluZ1xuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0UCBleHRlbmRzIG9iamVjdCA9IG9iamVjdCxcblx0TiBleHRlbmRzIFByb3RvPFAsIFQ+ID0gUHJvdG88UCwgVD4sXG5cblx0Ly8gaGVyZSBJRGVmaW5pdG9ySW5zdGFuY2UgaXMgYSBDT05TVFJVQ1RPUiAhISFcblx0UiBleHRlbmRzIElEZWZpbml0b3JJbnN0YW5jZTxOPiA9IElEZWZpbml0b3JJbnN0YW5jZTxOPlxuPihcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5hbWU/OiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uLFxuXHQvLyBBbGxvdyBib3RoIHN0cmljdCBJREVGIGFuZCBtb3JlIGZsZXhpYmxlIGZ1bmN0aW9uIHNpZ25hdHVyZXNcblx0Y29uc3RydWN0SGFuZGxlcj86IElERUY8VD4gfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uIHwgb2JqZWN0IHwgYm9vbGVhbixcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zLFxuKTogUiB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIFR5cGVzQ29sbGVjdGlvblByb3h5IGlzIGEgUHJveHlcblx0cmV0dXJuICh0eXBlcyBhcyB7IGRlZmluZTogVHlwZUFic29yYmVyIH0pXG5cdFx0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lIGFzIHN0cmluZyxcblx0XHRcdGNvbnN0cnVjdEhhbmRsZXIgYXMgSURFRjxUPixcblx0XHRcdGNvbmZpZ1xuXHRcdCkgYXMgdW5rbm93biBhcyBSO1xufSBhcyBUeXBlQWJzb3JiZXI7XG5cbmV4cG9ydCBjb25zdCBsb29rdXAgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmdcbik6IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIFR5cGVzQ29sbGVjdGlvblByb3h5IGlzIGEgUHJveHlcblx0cmV0dXJuICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gVHlwZUNsYXNzIHwgdW5kZWZpbmVkIH0pLmxvb2t1cChUeXBlTmVzdGVkUGF0aCk7XG59O1xuXG4vKipcbiAqIERlZmF1bHQgVHlwZVJlZ2lzdHJ5IGludGVyZmFjZSAtIGF1Z21lbnQgdGhpcyBpbiB5b3VyIHByb2plY3QgdmlhXG4gKiBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIG1lcmdpbmcuIFRoZSBhdWdtZW50YXRpb24gY2FuIGJlIGhhbmQtd3JpdHRlblxuICogaW4gYSAuZC50cyBmaWxlIChzbWFsbCBwcm9qZWN0cykgb3IgZ2VuZXJhdGVkIGJ5IEBtbmVtb25pY2EvdGFjdGljYS5cbiAqXG4gKiBVc2VzIGBUeXBlQ29uc3RydWN0b3I8bmV2ZXI+YCBhcyB0aGUgaW5kZXggdmFsdWUgdHlwZSB0byBlbmZvcmNlXG4gKiBhdWdtZW50YXRpb246IHdpdGhvdXQgaXQsIGFueSBrZXkgbG9va3VwIHJlc29sdmVzIHRvIGEgdXNlbGVzcyB0eXBlXG4gKiBiZWNhdXNlIGBUeXBlQ29uc3RydWN0b3I8bmV2ZXI+YCBpcyBub3QgYXNzaWduYWJsZSB0byBjb25jcmV0ZSB0eXBlcy5cbiAqXG4gKiBFeGFtcGxlIChpbiBhIGhhbmQtd3JpdHRlbiAuZC50cywgb3IgZ2VuZXJhdGVkIGJ5IHRhY3RpY2EgaW5cbiAqIC50YWN0aWNhL3JlZ2lzdHJ5LnRzKTpcbiAqICAgZGVjbGFyZSBtb2R1bGUgJ21uZW1vbmljYScge1xuICogICAgIGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuICogICAgICAgJ015VHlwZSc6IG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiBNeVR5cGVJbnN0YW5jZTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiBTZWUgZG9jcy90eXBlZC1sb29rdXAubWQgZm9yIGJvdGggcGF0aHMgc2lkZSBieSBzaWRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVSZWdpc3RyeSB7XG5cdFtrZXk6IHN0cmluZ106IFR5cGVDb25zdHJ1Y3RvcjxuZXZlcj47XG59XG5cbi8qKlxuICogVHlwZS1zYWZlIGxvb2t1cCBmdW5jdGlvbi4gUmVxdWlyZXMgYSBUeXBlUmVnaXN0cnkgYXVnbWVudGF0aW9uIOKAlFxuICogaGFuZC13cml0dGVuIGluIGEgLmQudHMgKHNtYWxsIHByb2plY3RzKSBvciBnZW5lcmF0ZWQgYnlcbiAqIEBtbmVtb25pY2EvdGFjdGljYSAoYXV0by1zeW5jZWQgZnJvbSB5b3VyIGRlZmluZSgpIGNhbGxzKS5cbiAqXG4gKiBBdCBydW50aW1lIHRoaXMgZGVsZWdhdGVzIHRvIGxvb2t1cCgpLiBUaGUgdHlwZSBzYWZldHkgaXNcbiAqIGNvbXBpbGUtdGltZSBvbmx5OiBUeXBlU2NyaXB0IHJlc29sdmVzIHRoZSBrZXkgYWdhaW5zdCB0aGUgYXVnbWVudGVkXG4gKiBUeXBlUmVnaXN0cnkgYW5kIHJldHVybnMgdGhlIGNvbnN0cnVjdG9yJ3MgdHlwZSBzaWduYXR1cmUuXG4gKlxuICogVXNhZ2UgKG9uY2UgVHlwZVJlZ2lzdHJ5IGlzIGF1Z21lbnRlZCk6XG4gKiAgIGNvbnN0IFNvbWVUeXBlID0gbG9va3VwVHlwZWQoJ1NvbWVUeXBlJyk7XG4gKiAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNvbWVUeXBlKHsgLi4uIH0pOyAvLyBGdWxsIHR5cGUgc2FmZXR5IVxuICpcbiAqIFNlZSBkb2NzL3R5cGVkLWxvb2t1cC5tZCBmb3IgYm90aCBhdWdtZW50YXRpb24gcGF0aHMgc2lkZSBieSBzaWRlLlxuICovXG5leHBvcnQgY29uc3QgbG9va3VwVHlwZWQgPSBmdW5jdGlvbiA8XG5cdGNvbnN0IEsgZXh0ZW5kcyBrZXlvZiBUeXBlUmVnaXN0cnlcbj4oXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOZXN0ZWRQYXRoOiBLXG4pOiBUeXBlUmVnaXN0cnlbS10gIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0cmV0dXJuICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHsgbmV3KC4uLmFyczogdW5rbm93bltdKTogdW5rbm93biB9O1xuXHQvLyBUT0RPOiBjaGVjayBsaW5lcyBiZWxvdyBhbmQgaWYgQ29uc3RydWN0b3IgaXMgbm90IG1uZW1vbml6ZWQgLi4uXG5cdGlmIChDc3RyID09PSB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBFcnJvckN0b3IgPSBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiBhcyB1bmtub3duIGFzIG5ldyAobXNnOiBzdHJpbmcpID0+IEVycm9yO1xuXHRcdHRocm93IG5ldyBFcnJvckN0b3IoYFsgJHtUeXBlTmFtZX0gXSBpcyBub3QgZGVmaW5lZCBhcyBhIFR5cGUgQ29uc3RydWN0b3Igb24gdXNlZCBpbnN0YW5jZWApO1xuXHR9XG5cdGNvbnN0IHJlc3VsdCA9IG5ldyBDc3RyKC4uLmFyZ3MpO1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gcmV0dXJuaW5nIHJlc3VsdCBhcyBtZXJnZWQgcHJvdG8gdHlwZVxuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYXBwbHkgaW5zdGFuY2UgLnRvIHR5cGUgLndpdGggYXJndW1lbnRzXG5leHBvcnQgY29uc3QgYXBwbHkgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW10gPSBbXVxuKToge1xuXHRcdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxuXHR9IHtcblx0cmV0dXJuICRydW48RSwgVCwgUz4oXG5cdFx0ZW50aXR5LFxuXHRcdEN0b3IsXG5cdFx0YXJnc1xuXHQpO1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiB7XG5cdFx0W2tleSBpbiBrZXlvZiBTXTogU1trZXldXG5cdH0ge1xuXHRyZXR1cm4gJHJ1bjxFLCBULCBTPihcblx0XHRlbnRpdHksXG5cdFx0Q3Rvcixcblx0XHRhcmdzXG5cdCk7XG59O1xuXG4vLyBUT0RPOiBiaW5kIHR5cGUgLndpdGggaW5zdGFuY2Ug4oaSICguLi5hcmdzKVxuZXhwb3J0IGNvbnN0IGJpbmQgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+XG4pOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxufSB7XG5cdHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0cmV0dXJuICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVjb3JhdGUgPSBmdW5jdGlvbiA8XG5cdFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+IHwgY29uc3RydWN0b3JPcHRpb25zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4+KFxuXHR0YXJnZXQ/OiBULFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnNcbik6IDxVIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0Pj4oY3N0cjogVSkgPT4gRGVjb3JhdGVkQ2xhc3M8VT4ge1xuXHRjb25zdCBvcHRzID0gKGNvbmZpZyA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmICEodGFyZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24pKVxuXHRcdD8gdGFyZ2V0IGFzIGNvbnN0cnVjdG9yT3B0aW9uc1xuXHRcdDogY29uZmlnO1xuXG5cdGNvbnN0IHBhcmVudFR5cGUgPSAodGFyZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24pXG5cdFx0PyB0YXJnZXQgYXMgQ29uc3RydWN0b3I8b2JqZWN0PlxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IGRlY29yYXRvciA9IGZ1bmN0aW9uIDxVIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0Pj4oY3N0cjogVSk6IERlY29yYXRlZENsYXNzPFU+IHtcblx0XHRjb25zdCB7IG5hbWUgfSA9IGNzdHI7XG5cdFx0aWYgKHBhcmVudFR5cGUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3QgZGVjb3JhdG9yUmVzdWx0ID0gZGVmaW5lKFxuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRjc3RyIGFzIElERUY8b2JqZWN0Pixcblx0XHRcdFx0b3B0c1xuXHRcdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdFx0cmV0dXJuIGRlY29yYXRvclJlc3VsdDtcblx0XHR9XG5cdFx0Y29uc3QgcGFyZW50ID0gcGFyZW50VHlwZSBhcyB1bmtub3duIGFzIHtcblx0XHRcdGRlZmluZTogVHlwZUFic29yYmVyO1xuXHRcdH07XG5cdFx0Y29uc3QgZGVmaW5lUmVzdWx0ID0gcGFyZW50LmRlZmluZShcblx0XHRcdG5hbWUsXG5cdFx0XHRjc3RyIGFzIElERUY8b2JqZWN0Pixcblx0XHRcdG9wdHNcblx0XHQpIGFzIHVua25vd24gYXMgRGVjb3JhdGVkQ2xhc3M8VT47XG5cdFx0cmV0dXJuIGRlZmluZVJlc3VsdDtcblx0fTtcblx0cmV0dXJuIGRlY29yYXRvcjtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVySG9vayA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8VD4+KFxuXHRDdG9yOiBEZWNvcmF0ZWRDbGFzczxUPixcblx0aG9va1R5cGU6IGhvb2tzVHlwZXMsXG5cdGNiOiBob29rXG4pOiB2b2lkIHtcblx0Q3Rvci5yZWdpc3Rlckhvb2soXG5cdFx0aG9va1R5cGUsXG5cdFx0Y2Jcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBtbmVtb25pY2EgPSBPYmplY3QuZW50cmllcyh7XG5cblx0ZGVmaW5lLFxuXHRsb29rdXAsXG5cdGFwcGx5LFxuXHRjYWxsLFxuXHRiaW5kLFxuXHRkZWNvcmF0ZSxcblx0cmVnaXN0ZXJIb29rLFxuXG5cdC4uLmRlc2NyaXB0b3JzLFxuXG5cdC4uLmVycm9yc0FwaSxcblx0Li4uY29uc3RhbnRzLFxuXG59KS5yZWR1Y2UoXG5cdChhY2M6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0sIGVudHJ5OiBbc3RyaW5nLCB1bmtub3duXSkgPT4ge1xuXHRcdGNvbnN0IFsgbmFtZSwgY29kZSBdID0gZW50cnk7XG5cdFx0b2RwKFxuXHRcdFx0YWNjLFxuXHRcdFx0bmFtZSxcblx0XHRcdHtcblx0XHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRcdHJldHVybiBjb2RlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHRcdFx0fVxuXHRcdCk7XG5cdFx0cmV0dXJuIGFjYztcblx0fSxcblx0e31cbikgYXMgTW5lbW9uaWNhTW9kdWxlO1xuXG5pbXBvcnQgKiBhcyBhcGkgZnJvbSAnLi9hcGknO1xuXG5leHBvcnQgY29uc3Qge1xuXHRkZWZpbmU6IF9kZWZpbmUsXG5cdGxvb2t1cDogX2xvb2t1cFxufSA9IGFwaS50eXBlcztcblxuZXhwb3J0IGNvbnN0IHtcblxuXHRTeW1ib2xQYXJlbnRUeXBlLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWUsXG5cdFN5bWJvbERlZmF1bHRUeXBlc0NvbGxlY3Rpb24sXG5cdFN5bWJvbENvbmZpZyxcblx0TU5FTU9OSUNBLFxuXHRNTkVNT1NZTkUsXG5cdFRZUEVfVElUTEVfUFJFRklYLFxuXHRFcnJvck1lc3NhZ2VzLFxuXG59ID0gbW5lbW9uaWNhO1xuXG4vLyBFeHBvcnQgY3JlYXRlVHlwZXNDb2xsZWN0aW9uIHdpdGggcHJvcGVyIHR5cGVcbmV4cG9ydCBjb25zdCBjcmVhdGVUeXBlc0NvbGxlY3Rpb246IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uID1cblx0bW5lbW9uaWNhLmNyZWF0ZVR5cGVzQ29sbGVjdGlvbiBhcyBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbjtcblxuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbGxlY3Rpb24gPSAoZGVmYXVsdFR5cGVzIGFzIHsgc3VidHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD4gfSkuc3VidHlwZXM7XG5leHBvcnQgY29uc3QgZXJyb3JzID0gZGVzY3JpcHRvcnMuRXJyb3JzVHlwZXM7XG5cbmV4cG9ydCB7IHV0aWxzIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgeyBkZWZpbmVTdGFja0NsZWFuZXIgfSBmcm9tICcuL3V0aWxzJztcbi8qIGVzbGludC1lbmFibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JiLDhEQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBTWYsMkNBRTJCO0FBRDFCLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUduQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsd0RBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxzRUFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUV0QyxvQkFBWSxHQUFNLHlCQUFXLGNBQUM7QUFFN0MsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLGlCQUFTLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQztJQUM1RCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxNQUFNLFlBQVksR0FBSSxLQUFrQztTQUN0RCxNQUFNLENBQ04sUUFBa0IsRUFDbEIsZ0JBQTJCLEVBQzNCLE1BQU0sQ0FDVSxDQUFDO0lBQ25CLE9BQU8sWUFBWSxDQUFDO0FBQ3JCLENBQWlCLENBQUM7QUFFWCxNQUFNLE1B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LENBQUUsR0FBRyxLQUFLLENBQUM7SUFDN0IsR0FBRyxDQUNGLEdBQUcsRUFDSCxJQUFJLEVBQ0o7UUFDQyxHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBQ0QsVUFBVSxFQUFHLElBQUk7S0FDakIsQ0FDRCxDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLEVBQ0QsRUFBRSxDQUNpQixDQUFDO0FBRXJCLDJDQUE2QjtBQUVoQixLQUdULEdBQUcsQ0FBQyxLQUFLLEVBRkosZUFBTyxjQUNQLGVBQU8sYUFDRjtBQUliLHdCQUFnQixHQVNiLGlCQUFTLG1CQVJaLDZCQUFxQixHQVFsQixpQkFBUyx3QkFQWixvQ0FBNEIsR0FPekIsaUJBQVMsK0JBTlosb0JBQVksR0FNVCxpQkFBUyxlQUxaLGlCQUFTLEdBS04saUJBQVMsWUFKWixpQkFBUyxHQUlOLGlCQUFTLFlBSFoseUJBQWlCLEdBR2QsaUJBQVMsb0JBRloscUJBQWEsR0FFVixpQkFBUyxlQUFDO0FBR0QsUUFBQSxxQkFBcUIsR0FDakMsaUJBQVMsQ0FBQyxxQkFBc0QsQ0FBQztBQUdyRCxRQUFBLGlCQUFpQixHQUFJLG9CQUFrRCxDQUFDLFFBQVEsQ0FBQztBQUNqRixRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcblx0Q3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24sXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdElEZWZpbml0b3JJbnN0YW5jZSxcblx0Q29uc3RydWN0b3IsXG5cdERlY29yYXRlZENsYXNzLFxuXHRUeXBlQ2xhc3MsXG5cdFR5cGVBYnNvcmJlcixcblx0TW5lbW9uaWNhTW9kdWxlLFxuXHRUeXBlQ29uc3RydWN0b3IsXG5cdEluc3RhbmNlUmVzdWx0LFxuXHRNZXJnZVxufSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi9hcGkvdXRpbHMvaW5kZXgnO1xuZXhwb3J0IGNvbnN0IHtcblx0aXNDbGFzcyxcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50LFxufSA9IFR5cGVzVXRpbHM7XG5cbmV4cG9ydCB0eXBlIHtcblx0SURFRiwgVHlwZUNvbnN0cnVjdG9yLCBfSW50ZXJuYWxfVENfLCBQcm90bywgUHJvdG9GbGF0LFxuXHRob29rc09wdHMsIGhvb2ssIGhvb2tzVHlwZXMsIFR5cGVzQ29sbGVjdGlvblxufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7XG5cdGdldFByb3BzLCBzZXRQcm9wcyBcbn0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gfSA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL2FwaS90eXBlcy9NbmVtb3N5bmUnO1xuY29uc3QgeyBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiB9ID0gbW5lbW9zeW5lcztcblxuZXhwb3J0IGNvbnN0IHsgZGVmYXVsdFR5cGVzLCB9ID0gZGVzY3JpcHRvcnM7XG5cbmZ1bmN0aW9uIGNoZWNrVGhpcyhwb2ludGVyOiB0eXBlb2YgbW5lbW9uaWNhIHwgdHlwZW9mIGV4cG9ydHMgfCB1bmtub3duKTogYm9vbGVhbiB7XG5cdGNvbnN0IHJlc3VsdCA9IHBvaW50ZXIgPT09IG1uZW1vbmljYSB8fCBwb2ludGVyID09PSBleHBvcnRzO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8vIERlZmluZSBmdW5jdGlvbiB1c2luZyBUeXBlQWJzb3JiZXIgaW50ZXJmYWNlIHdpdGggcHJvcGVyIHR5cGUgY2FzdGluZ1xuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0UCBleHRlbmRzIG9iamVjdCA9IG9iamVjdCxcblx0TiBleHRlbmRzIFByb3RvPFAsIFQ+ID0gUHJvdG88UCwgVD4sXG5cblx0Ly8gaGVyZSBJRGVmaW5pdG9ySW5zdGFuY2UgaXMgYSBDT05TVFJVQ1RPUiAhISFcblx0UiBleHRlbmRzIElEZWZpbml0b3JJbnN0YW5jZTxOPiA9IElEZWZpbml0b3JJbnN0YW5jZTxOPlxuPihcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5hbWU/OiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uLFxuXHQvLyBBbGxvdyBib3RoIHN0cmljdCBJREVGIGFuZCBtb3JlIGZsZXhpYmxlIGZ1bmN0aW9uIHNpZ25hdHVyZXNcblx0Y29uc3RydWN0SGFuZGxlcj86IElERUY8VD4gfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uIHwgb2JqZWN0IHwgYm9vbGVhbixcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zLFxuKTogUiB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIFR5cGVzQ29sbGVjdGlvblByb3h5IGlzIGEgUHJveHlcblx0Y29uc3QgZGVmaW5lUmVzdWx0ID0gKHR5cGVzIGFzIHsgZGVmaW5lOiBUeXBlQWJzb3JiZXIgfSlcblx0XHQuZGVmaW5lKFxuXHRcdFx0VHlwZU5hbWUgYXMgc3RyaW5nLFxuXHRcdFx0Y29uc3RydWN0SGFuZGxlciBhcyBJREVGPFQ+LFxuXHRcdFx0Y29uZmlnXG5cdFx0KSBhcyB1bmtub3duIGFzIFI7XG5cdHJldHVybiBkZWZpbmVSZXN1bHQ7XG59IGFzIFR5cGVBYnNvcmJlcjtcblxuZXhwb3J0IGNvbnN0IGxvb2t1cCA9IGZ1bmN0aW9uIChcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBsb29rdXBSZXN1bHQgPSAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xuXHRyZXR1cm4gbG9va3VwUmVzdWx0O1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVSZWdpc3RyeSBpbnRlcmZhY2UgLSBhdWdtZW50IHRoaXMgaW4geW91ciBwcm9qZWN0IHZpYVxuICogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBtZXJnaW5nLiBUaGUgYXVnbWVudGF0aW9uIGNhbiBiZSBoYW5kLXdyaXR0ZW5cbiAqIGluIGEgLmQudHMgZmlsZSAoc21hbGwgcHJvamVjdHMpIG9yIGdlbmVyYXRlZCBieSBAbW5lbW9uaWNhL3RhY3RpY2EuXG4gKlxuICogVXNlcyBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgYXMgdGhlIGluZGV4IHZhbHVlIHR5cGUgdG8gZW5mb3JjZVxuICogYXVnbWVudGF0aW9uOiB3aXRob3V0IGl0LCBhbnkga2V5IGxvb2t1cCByZXNvbHZlcyB0byBhIHVzZWxlc3MgdHlwZVxuICogYmVjYXVzZSBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgaXMgbm90IGFzc2lnbmFibGUgdG8gY29uY3JldGUgdHlwZXMuXG4gKlxuICogRXhhbXBsZSAoaW4gYSBoYW5kLXdyaXR0ZW4gLmQudHMsIG9yIGdlbmVyYXRlZCBieSB0YWN0aWNhIGluXG4gKiAudGFjdGljYS9yZWdpc3RyeS50cyk6XG4gKiAgIGRlY2xhcmUgbW9kdWxlICdtbmVtb25pY2EnIHtcbiAqICAgICBpbnRlcmZhY2UgVHlwZVJlZ2lzdHJ5IHtcbiAqICAgICAgICdNeVR5cGUnOiBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gTXlUeXBlSW5zdGFuY2U7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogU2VlIGRvY3MvdHlwZWQtbG9va3VwLm1kIGZvciBib3RoIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ29uc3RydWN0b3I8bmV2ZXI+O1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBsb29rdXAgZnVuY3Rpb24uIFJlcXVpcmVzIGEgVHlwZVJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiDigJRcbiAqIGhhbmQtd3JpdHRlbiBpbiBhIC5kLnRzIChzbWFsbCBwcm9qZWN0cykgb3IgZ2VuZXJhdGVkIGJ5XG4gKiBAbW5lbW9uaWNhL3RhY3RpY2EgKGF1dG8tc3luY2VkIGZyb20geW91ciBkZWZpbmUoKSBjYWxscykuXG4gKlxuICogQXQgcnVudGltZSB0aGlzIGRlbGVnYXRlcyB0byBsb29rdXAoKS4gVGhlIHR5cGUgc2FmZXR5IGlzXG4gKiBjb21waWxlLXRpbWUgb25seTogVHlwZVNjcmlwdCByZXNvbHZlcyB0aGUga2V5IGFnYWluc3QgdGhlIGF1Z21lbnRlZFxuICogVHlwZVJlZ2lzdHJ5IGFuZCByZXR1cm5zIHRoZSBjb25zdHJ1Y3RvcidzIHR5cGUgc2lnbmF0dXJlLlxuICpcbiAqIFVzYWdlIChvbmNlIFR5cGVSZWdpc3RyeSBpcyBhdWdtZW50ZWQpOlxuICogICBjb25zdCBTb21lVHlwZSA9IGxvb2t1cFR5cGVkKCdTb21lVHlwZScpO1xuICogICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTb21lVHlwZSh7IC4uLiB9KTsgLy8gRnVsbCB0eXBlIHNhZmV0eSFcbiAqXG4gKiBTZWUgZG9jcy90eXBlZC1sb29rdXAubWQgZm9yIGJvdGggYXVnbWVudGF0aW9uIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvb2t1cFR5cGVkID0gZnVuY3Rpb24gPFxuXHRjb25zdCBLIGV4dGVuZHMga2V5b2YgVHlwZVJlZ2lzdHJ5XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogS1xuKTogVHlwZVJlZ2lzdHJ5W0tdICB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdGNvbnN0IGxvb2t1cFJlc3VsdCA9ICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG5cdHJldHVybiBsb29rdXBSZXN1bHQ7XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHVua25vd24gYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IEVycm9yQ3RvciA9IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3I7XG5cdFx0dGhyb3cgbmV3IEVycm9yQ3RvcihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcnVuUmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXR1cm5pbmcgcmVzdWx0IGFzIG1lcmdlZCBwcm90byB0eXBlXG5cdHJldHVybiBydW5SZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+IHtcblx0Y29uc3QgcmVzdWx0ID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuXHRcdGNvbnN0IHJ1blJlc3VsdCA9ICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdFx0Y29uc3QgdHlwZWRSZXN1bHQgPSBydW5SZXN1bHQgYXMgdW5rbm93biBhcyBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj47XG5cdFx0cmV0dXJuIHR5cGVkUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0PiB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPihcblx0dGFyZ2V0PzogVCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpID0+IERlY29yYXRlZENsYXNzPFU+IHtcblx0Y29uc3Qgb3B0cyA9IChjb25maWcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSlcblx0XHQ/IHRhcmdldCBhcyBjb25zdHJ1Y3Rvck9wdGlvbnNcblx0XHQ6IGNvbmZpZztcblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKVxuXHRcdD8gdGFyZ2V0IGFzIENvbnN0cnVjdG9yPG9iamVjdD5cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpOiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdFx0Y29uc3QgeyBuYW1lIH0gPSBjc3RyO1xuXHRcdGlmIChwYXJlbnRUeXBlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRlY29yYXRvclJlc3VsdCA9IGRlZmluZShcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRcdG9wdHNcblx0XHRcdCkgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0XHRcdHJldHVybiBkZWNvcmF0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHR9O1xuXHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IHBhcmVudC5kZWZpbmUoXG5cdFx0XHRuYW1lLFxuXHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRvcHRzXG5cdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFQ+Pihcblx0Q3RvcjogRGVjb3JhdGVkQ2xhc3M8VD4sXG5cdGhvb2tUeXBlOiBob29rc1R5cGVzLFxuXHRjYjogaG9va1xuKTogdm9pZCB7XG5cdEN0b3IucmVnaXN0ZXJIb29rKFxuXHRcdGhvb2tUeXBlLFxuXHRcdGNiXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgbW5lbW9uaWNhID0gT2JqZWN0LmVudHJpZXMoe1xuXG5cdGRlZmluZSxcblx0bG9va3VwLFxuXHRhcHBseSxcblx0Y2FsbCxcblx0YmluZCxcblx0ZGVjb3JhdGUsXG5cdHJlZ2lzdGVySG9vayxcblxuXHQuLi5kZXNjcmlwdG9ycyxcblxuXHQuLi5lcnJvcnNBcGksXG5cdC4uLmNvbnN0YW50cyxcblxufSkucmVkdWNlKFxuXHQoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0XHRjb25zdCBbIG5hbWUsIGNvZGUgXSA9IGVudHJ5O1xuXHRcdG9kcChcblx0XHRcdGFjYyxcblx0XHRcdG5hbWUsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29kZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sXG5cdHt9XG4pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9XG5cdG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
|