mnemonica 0.9.99782 → 0.9.99787

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/README.md CHANGED
@@ -1,28 +1,49 @@
1
1
  # mnemonica
2
2
 
3
- **Abstract technique that aids information retention: Instance Inheritance System**
3
+ **Instance Inheritance System for JavaScript / TypeScript.**
4
4
 
5
- ... allows us to make inherited descriptions of mappings of transformations from predecessor structured data types to the successors, as if it was math `f(x)=>y` ... and we will use `this` keyword as a persistent data structure where we will apply that transformations
5
+ > **Using this library?** You're in the right place.  | 
6
+ > **Contributing / modifying code?** Start with [`AGENTS.md`](./AGENTS.md).
7
+ > [`SKILL.md`](./SKILL.md) is a usage quick reference only (not for contributors).
6
8
 
7
- ![concept](https://raw.githubusercontent.com/mythographica/stash/master/img/LifeCycle/LifeCycle.png)
9
+ Mnemonica builds typed prototype chains *between instances* (not just classes).
10
+ You declare a type with `define(name, ctor)`; new instances inherit through
11
+ the prototype chain from the instance they were created from. Mnemonica makes
12
+ the inheritance graph explicit — eliminating a class of `Object.setPrototypeOf`
13
+ and constructor-reuse bugs by design.
8
14
 
15
+ ```
16
+ define(name, ctor) → TypeProxy → new instance.SubType()
17
+ │ │
18
+ ▼ ▼
19
+ subtype registry InstanceCreator
20
+ │ │
21
+ ▼ ▼
22
+ preCreation hook Mnemosyne
23
+
24
+
25
+ instance with
26
+ prototype chain →
27
+ parent instance
28
+
29
+
30
+ postCreation hook
31
+ ```
9
32
 
10
- ---
11
-
12
- # shortcuts
13
-
14
- * ?. : state : **mad science**
15
- * ?. : type : **asynchronous monad descriptor** => this
16
- * ?. : prod ready : **we wonder about**
17
- * ?. : example : **git clone && npm run example**
33
+ Think `f(x) ⇒ y` where `this` is a persistent data structure carrying the
34
+ transformation history. Stored constructor arguments stay introspectable via
35
+ `getProps()`, so an instance is also a record of how it was built.
18
36
 
19
- ---
20
37
  [![Coverage Status](https://coveralls.io/repos/github/wentout/mnemonica/badge.svg?branch=master)](https://coveralls.io/github/wentout/mnemonica?branch=master)
21
38
  ![NPM](https://img.shields.io/npm/l/mnemonica)
22
39
  ![GitHub package.json version](https://img.shields.io/github/package-json/v/wentout/mnemonica)
23
40
  ![GitHub last commit](https://img.shields.io/github/last-commit/wentout/mnemonica)
24
41
  [![NPM](https://nodei.co/npm/mnemonica.png?mini=true)](https://www.npmjs.com/package/mnemonica)
25
42
 
43
+ > Status: experimental. API is stable for the documented surface; advanced
44
+ > internals (`_define`, `_lookup`, `defaultCollection`) are not part of the
45
+ > stability contract.
46
+
26
47
  ---
27
48
 
28
49
  ## Table of Contents
@@ -42,9 +63,15 @@
42
63
  - [Error Handling](#error-handling)
43
64
  - [Symbols & Constants](#symbols--constants)
44
65
  - [Configuration Options](#configuration-options)
45
- - [AI Agent Usage Guide](#ai-agent-usage-guide)
46
- - [Usage with TypeØmatica](#usage-with-typeomatica)
47
66
  - [Examples](#examples)
67
+ - [Usage with TypeØmatica](#usage-with-typeomatica)
68
+ - [Roadmap](#roadmap)
69
+ - [Contributing](#contributing)
70
+ - [License](#license)
71
+
72
+ > AI agent integration guidance (introspection patterns, type discovery,
73
+ > safe construction) lives in [AGENTS.md](AGENTS.md). It is kept separate
74
+ > from the user-facing API reference.
48
75
 
49
76
  ---
50
77
 
@@ -78,7 +105,21 @@ Think of it as a mathematical function `f(x) => y` where `this` is your persiste
78
105
  npm install mnemonica
79
106
  ```
80
107
 
81
- **Requirements:** Node.js >=18 <24
108
+ **Requirements:** Node.js `>=18 <26` (tested on 20.x, 22.x, 24.x in CI).
109
+
110
+ ### From a Git checkout
111
+
112
+ ```bash
113
+ git clone https://github.com/wentout/mnemonica.git
114
+ cd mnemonica
115
+ npm ci
116
+ npm run build # compiles src/ → build/
117
+ npm run test:cov # mocha + coverage
118
+ ```
119
+
120
+ The ESM entry point (`mnemonica/module`) re-exports the CommonJS build, so
121
+ `npm run build` must succeed before `import 'mnemonica/module'` works from
122
+ a fresh checkout.
82
123
 
83
124
  ---
84
125
 
@@ -973,116 +1014,29 @@ user.age = 25; // ✓ Works - number to number
973
1014
  user.age = '25'; // ✗ TypeError: Type Mismatch at runtime!
974
1015
  ```
975
1016
 
976
- For complete documentation including integration patterns, error handling, and advanced usage, see [TypeØmatica.md](TypeØmatica.md).
1017
+ For complete documentation including integration patterns, error handling, and advanced usage, see [docs/typeomatica.md](docs/typeomatica.md).
977
1018
 
978
1019
  ---
979
1020
 
980
- ## AI Agent Usage Guide
981
-
982
- This section helps AI agents understand and work with mnemonica programmatically.
983
-
984
- ### 1. Type Introspection
985
-
986
- Use `utils.parse(instance)` to understand instance structure:
987
-
988
- ```js
989
- const { utils: { parse } } = require('mnemonica');
990
-
991
- const parsed = parse(instance);
992
- // Returns: { name, props, self, proto, joint, parent, constructor }
993
- ```
994
-
995
- ### 2. Safe Property Access
996
-
997
- Always use `getProps()` instead of direct property access:
998
-
999
- ```js
1000
- const { getProps } = require('mnemonica');
1001
-
1002
- const props = getProps(instance);
1003
- // props.__type__, props.__args__, props.__parent__, props.__subtypes__, etc.
1004
- ```
1005
-
1006
- ### 3. Type Discovery
1007
-
1008
- ```js
1009
- const { defaultTypes } = require('mnemonica');
1010
-
1011
- // List all types in default collection
1012
- const typeNames = [...defaultTypes.subtypes.keys()];
1013
-
1014
- // List subtypes of a specific type
1015
- const myType = defaultTypes.MyType;
1016
- const subTypeNames = [...myType.subtypes.keys()];
1017
-
1018
- // Check if a type exists
1019
- const hasType = defaultTypes.lookup('MyType') !== undefined;
1020
- ```
1021
-
1022
- ### 4. Instance Traversal
1023
-
1024
- ```js
1025
- const { getProps } = require('mnemonica');
1021
+ > **AI agent guidance.** Patterns for type introspection, safe property
1022
+ > access, type discovery, instance traversal, and safe construction live
1023
+ > in [AGENTS.md](AGENTS.md). They are not duplicated here.
1026
1024
 
1027
- // Walk up the inheritance chain
1028
- function traverseChain(instance) {
1029
- const chain = [];
1030
- let current = instance;
1031
-
1032
- while (current) {
1033
- const props = getProps(current);
1034
- if (!props) break;
1035
-
1036
- chain.push({
1037
- typeName: props.__type__.TypeName,
1038
- timestamp: props.__timestamp__,
1039
- args: props.__args__
1040
- });
1041
-
1042
- current = props.__parent__;
1043
- }
1044
-
1045
- return chain;
1046
- }
1047
- ```
1048
-
1049
- ### 5. Safe Construction Patterns
1050
-
1051
- ```js
1052
- const { lookup } = require('mnemonica');
1053
-
1054
- // Always check if type exists before construction
1055
- const MyType = lookup('MyType');
1056
- if (MyType) {
1057
- const instance = new MyType(data);
1058
- }
1025
+ ---
1059
1026
 
1060
- // For nested construction with proper error handling
1061
- try {
1062
- const subInstance = new instance.SubType(data);
1063
- } catch (error) {
1064
- // Handle WRONG_MODIFICATION_PATTERN if SubType not defined
1065
- console.error('Subtype not available:', error.message);
1066
- }
1067
- ```
1027
+ ## Examples
1068
1028
 
1069
- ### 6. Analyzing Type Structure
1029
+ Runnable scripts in [`examples/`](examples/) demonstrate edge cases and
1030
+ integration patterns. See [examples/README.md](examples/README.md). Quick
1031
+ runners are wired up in `package.json`:
1070
1032
 
1071
- ```js
1072
- const { getProps } = require('mnemonica');
1073
-
1074
- function analyzeType(typeConstructor) {
1075
- return {
1076
- name: typeConstructor.TypeName,
1077
- isSubType: typeConstructor.isSubType,
1078
- subTypesCount: typeConstructor.subtypes?.size || 0,
1079
- hasHooks: Object.keys(typeConstructor.hooks || {}).length > 0,
1080
- config: typeConstructor.config
1081
- };
1082
- }
1033
+ ```bash
1034
+ npm run example:async # async constructor edge case
1035
+ npm run example:rename # constructor renaming via Object.defineProperty
1036
+ npm run example:v8bug # documents a Node 22 .stack/.hasOwn divergence
1083
1037
  ```
1084
1038
 
1085
- ### 7. Working with Collections
1039
+ ### Working with Collections
1086
1040
 
1087
1041
  ```js
1088
1042
  const { createTypesCollection, defaultTypes } = require('mnemonica');
@@ -1102,10 +1056,6 @@ testCollection.registerHook('preCreation', (data) => {
1102
1056
  });
1103
1057
  ```
1104
1058
 
1105
- ---
1106
-
1107
- ## Examples
1108
-
1109
1059
  ### Asynchronous Constructors
1110
1060
 
1111
1061
  ```js
@@ -1169,22 +1119,51 @@ const merged = merge(instanceA, instanceB, 'args');
1169
1119
 
1170
1120
  ---
1171
1121
 
1172
- ## Epilogue
1122
+ ## Roadmap
1123
+
1124
+ Items below are designed but **not yet shipped**. They are documented here
1125
+ so consumers can avoid relying on them prematurely.
1126
+
1127
+ ### Nested `lookupTyped()`
1128
+
1129
+ **Problem.** Global `lookupTyped('Parent.Child')` returns a constructor
1130
+ *without* the parent in the prototype chain — that breaks instance
1131
+ inheritance.
1132
+
1133
+ **Planned.** A type-safe `.lookupTyped()` method on constructors for
1134
+ relative lookups that preserve the chain:
1135
+
1136
+ ```typescript
1137
+ const GraphNode2D = Scene2D.lookupTyped('GraphNode2D');
1138
+ const node = new GraphNode2D({ x: 10, y: 20 });
1139
+ // node has Scene2D in its prototype chain
1140
+ ```
1141
+
1142
+ This requires a `NestedTypeRegistry` interface augmentation alongside
1143
+ `TypeRegistry` and is generated by [tactica](https://www.npmjs.com/package/typeomatica).
1173
1144
 
1174
- So, now you can craft as many types as you wish, combine them, re-define them and spend much more time playing with them:
1145
+ ---
1146
+
1147
+ ## Contributing
1175
1148
 
1176
- * test : instances & arguments
1177
- * track : moments of creation
1178
- * check : if the order of creation is OK
1179
- * validate : everything, 4 example use sort of TS in runtime
1180
- * and even `.parse` them using `mnemonica.utils.parse`
1149
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for branch model, commit style, and
1150
+ the local build/test loop. Repository conventions, code style, and agent
1151
+ rules live in [AGENTS.md](AGENTS.md). Release notes live in
1152
+ [CHANGELOG.md](CHANGELOG.md).
1181
1153
 
1182
- Good Luck!
1154
+ **Related reading:**
1155
+ - [Inheritance in JavaScript: Factory of Constructors with Prototype Chain](https://github.com/mythographica/stash/blob/master/inheritance.md)
1156
+ - [Architecture of Prototype Inheritance in JavaScript](https://dev.to/wentout/architecture-of-prototype-inheritance-in-javascript-ce6)
1157
+ - [Dead Simple type checker for JavaScript](https://dev.to/wentout/dead-simple-type-checker-for-javascript-4l40)
1183
1158
 
1184
1159
  ---
1185
1160
 
1186
1161
  ## License
1187
1162
 
1188
- MIT
1163
+ MIT — Copyright (c) 2019 https://github.com/wentout
1189
1164
 
1190
- Copyright (c) 2019 https://github.com/wentout
1165
+ ---
1166
+
1167
+ > *"O Great Mnemosyne! Please! Save us from Oblivion..."*
1168
+ >
1169
+ > — from the source, where memory persists
@@ -47,8 +47,12 @@ const throwModificationError = function (error) {
47
47
  let isMnemonicaInstance = false;
48
48
  while (errorProto) {
49
49
  const testToProto = Reflect.getPrototypeOf(errorProto);
50
- if (testToProto !== null && testToProto.constructor.name === MNEMONICA &&
51
- Object.hasOwnProperty.call(testToProto, 'constructor')) {
50
+ if (testToProto === null) {
51
+ break;
52
+ }
53
+ if (testToProto !== null &&
54
+ Object.hasOwnProperty.call(testToProto, 'constructor') &&
55
+ testToProto.constructor.name === MNEMONICA) {
52
56
  isMnemonicaInstance = true;
53
57
  break;
54
58
  }
@@ -122,4 +126,4 @@ const throwModificationError = function (error) {
122
126
  throw erroredInstance;
123
127
  };
124
128
  exports.throwModificationError = throwModificationError;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dNb2RpZmljYXRpb25FcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLHlCQUE0QztBQUU1QyxvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHdCQUF3QixFQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxhQUFLLENBQUM7QUFFVixzRUFBdUU7QUFjaEUsTUFBTSxzQkFBc0IsR0FBRyxVQUF5QyxLQUFxQjtJQUluRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQUUsRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUNoQixFQUNELElBQUksRUFDSixHQUFHLElBQUksQ0FBQztJQU1ULE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO0lBRXZELElBQUssS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUcsQ0FBQztRQUUxQyxLQUFLLENBQUMsT0FBbUIsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBRSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxPQUFtQixDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV6QyxNQUFNLEtBQUssQ0FBQztJQUViLENBQUM7SUFFRCxHQUFHLENBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzlCLEdBQUc7WUFDRixPQUFP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SyxDQUFFLGVBQWUsQ0FBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUM7WUFDSCxDQUFDO1NBQ0QsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sZUFBZSxDQUFDO0FBRXZCLENBQUMsQ0FBQztBQTdMVyxRQUFBLHNCQUFzQiwwQkE2TGpDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IE1uZW1vbmljYUVycm9yIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdE1ORU1PTklDQSxcbn0gPSBjb25zdGFudHM7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUlxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgeyBjbGVhbnVwU3RhY2ssIGdldFN0YWNrIH0gZnJvbSAnLi8nO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZVxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRwYXJzZSxcblx0cGFyZW50LFxuXHRleHRyYWN0XG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvcic7XG5cbi8vIEluc3RhbmNlIGNyZWF0b3IgY29udGV4dCB0eXBlXG50eXBlIEluc3RhbmNlQ3JlYXRvckNvbnRleHQgPSB7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHsgc3RhY2s6IHN0cmluZyB9O1xuXHRhcmdzOiB1bmtub3duW107XG5cdE1vZGlmaWNhdG9yVHlwZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0SW5zdGFuY2VNb2RpZmljYXRvcjogbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IHsgc3RhY2s6IHN0cmluZ1tdIH07XG5cdGluaGVyaXRlZEluc3RhbmNlPzogdW5rbm93bjtcblx0aW52b2tlUG9zdEhvb2tzKCk6IHsgdHlwZTogU2V0PHVua25vd24+OyBjb2xsZWN0aW9uOiBTZXQ8dW5rbm93bj4gfTtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvd01vZGlmaWNhdGlvbkVycm9yID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBlcnJvcjogTW5lbW9uaWNhRXJyb3IgKSB7XG5cblx0Ly8gSW5zdGFuY2VDcmVhdG9yXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdFR5cGVOYW1lLFxuXHRcdHR5cGU6IHtcblx0XHRcdHN0YWNrOiB0eXBlU3RhY2tcblx0XHR9LFxuXHRcdGFyZ3Ncblx0fSA9IHNlbGY7XG5cblx0Ly8gaWYgKCBlcnJvclsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gKSB7XG5cdC8vIFx0ZGVidWdnZXI7XG5cdC8vIH1cblxuXHRjb25zdCBleGNlcHRpb25SZWFzb24gPSBlcnJvci5leGNlcHRpb25SZWFzb24gfHwgZXJyb3I7XG5cblx0aWYgKCBlcnJvci5leGNlcHRpb25SZWFzb24gIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdChlcnJvci5yZWFzb25zIGFzIEVycm9yW10pLnB1c2goIGVycm9yLmV4Y2VwdGlvblJlYXNvbiApO1xuXHRcdChlcnJvci5zdXJwbHVzIGFzIEVycm9yW10pLnB1c2goIGVycm9yICk7XG5cblx0XHR0aHJvdyBlcnJvcjtcblxuXHR9XG5cblx0b2RwKCBlcnJvciwgJ2V4Y2VwdGlvblJlYXNvbicsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblJlYXNvbjtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gKTtcblxuXHRjb25zdCByZWFzb25zOiBFcnJvcltdID0gWyBleGNlcHRpb25SZWFzb24gXTtcblxuXHRvZHAoIGVycm9yLCAncmVhc29ucycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHJlYXNvbnM7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHR9ICk7XG5cdGNvbnN0IHN1cnBsdXM6IEVycm9yW10gPSBbXTtcblx0b2RwKCBlcnJvciwgJ3N1cnBsdXMnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzdXJwbHVzO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSApO1xuXG5cdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBzZWxmIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKSBhcyBJbnN0YW5jZUNyZWF0b3JDb250ZXh0WydJbnN0YW5jZU1vZGlmaWNhdG9yJ107XG5cblx0Ly8gbGV0IGVycm9yZWRJbnN0YW5jZSA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvcigpO1xuXG5cdGxldCBlcnJvclByb3RvOiBvYmplY3QgfCBudWxsID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggZXJyb3JlZEluc3RhbmNlICk7XG5cdGxldCBpc01uZW1vbmljYUluc3RhbmNlID0gZmFsc2U7XG5cdHdoaWxlICggZXJyb3JQcm90byApIHtcblx0XHRjb25zdCB0ZXN0VG9Qcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8gKTtcblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IG51bGwpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHRpZiAoXG5cdFx0XHR0ZXN0VG9Qcm90byAhPT0gbnVsbCAmJiB0ZXN0VG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBNTkVNT05JQ0EgJiZcblx0XHRcdE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlc3RUb1Byb3RvLCAnY29uc3RydWN0b3InKVxuXHRcdCkge1xuXHRcdFx0aXNNbmVtb25pY2FJbnN0YW5jZSA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0ZXJyb3JQcm90byA9IHRlc3RUb1Byb3RvO1xuXHR9XG5cblx0Ly8gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90bywgZXJyb3IpO1xuXHRjb25zdCByZXN1bHQgPSBSZWZsZWN0LnNldFByb3RvdHlwZU9mKCBlcnJvclByb3RvIGFzIG9iamVjdCwgZXJyb3IpO1xuXHQvLyBsZXQgcmVzdWx0ID0gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90bywgZXJyb3IpO1xuXHQvLyBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuXHQvLyBcdE9iamVjdC5zZXRQcm90b3R5cGVPZihlcnJvclByb3RvLCBlcnJvcik7XG5cdC8vIFx0Ly8gdW5yZWFjaGFibGVcblx0Ly8gXHRyZXN1bHQgPSB0cnVlO1xuXHQvLyB9XG5cdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cblx0Y29uc3Qgc3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0aWYgKCBlcnJvciBpbnN0YW5jZW9mIEJBU0VfTU5FTU9OSUNBX0VSUk9SICkge1xuXG5cdFx0c3RhY2sucHVzaCggZXJyb3Iuc3RhY2sgYXMgc3RyaW5nICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cblx0XHRnZXRTdGFjay5jYWxsKCBlcnJvcmVkSW5zdGFuY2UsIHRpdGxlLCBbXSwgdGhyb3dNb2RpZmljYXRpb25FcnJvciApO1xuXG5cdFx0c3RhY2sucHVzaCggLi4uZXJyb3JlZEluc3RhbmNlLnN0YWNrICk7XG5cblx0XHRjb25zdCBlcnJvclN0YWNrID0gKGVycm9yLnN0YWNrIGFzIHN0cmluZyApLnNwbGl0KCAnXFxuJyApO1xuXG5cdFx0c3RhY2sucHVzaCggJzwtLSB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgLS0+JyApO1xuXG5cdFx0ZXJyb3JTdGFjay5mb3JFYWNoKCAoIGxpbmU6IHN0cmluZyApID0+IHtcblx0XHRcdGlmICggIXN0YWNrLmluY2x1ZGVzKCBsaW5lICkgKSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goIGxpbmUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRzdGFjay5wdXNoKCAnXFxuPC0tIG9mIGNvbnN0cnVjdG9yIGRlZmluaXRpb25zIHN0YWNrIC0tPicgKTtcblx0XHRzdGFjay5wdXNoKCAuLi50eXBlU3RhY2sgKTtcblxuXHR9XG5cblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlU3RhY2sgPSBjbGVhbnVwU3RhY2soIHN0YWNrICkuam9pbiggJ1xcbicgKTtcblxuXHQvLyBzdGFydGluZyBmcm9tIE5vZGUuanMgdjIyIHdlIHNob3VsZCBkZWZpbmUgdGhpcyBwcm9wZXJ0eSB0aHJvdWdoIG9kcFxuXHQvLyB0aGF0IHdhcyB1bm5lY2Vzc2FyeSBmb3IgdjIwLCB0aG91Z2ggc2VlbXMgbmV3IHY4IG9wdGltaXplZCBjb21waWxlclxuXHQvLyBpcyBnYXRoZXJpbmcgdmFsdWUgZnJvbSBkZWVwIGNoYWluIGFuZCB3aGlsZSBjb21wYXJpbmcgaXQgd2l0aCBcblx0Ly8gYXNzaWdubWVudCBvcGVyYXRvciwgdGhlbiBpdCB3aWxsIG5vdCBjcmVhdGUgdGhpcyBwcm9wZXJ0eSBcblx0Ly8gc28gd2UgbmVlZCBkaXJlY3QgcHJvcGVydHkgZGVjbGFyYXRpb24gaGVyZSAuLi5cblx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdzdGFjaycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZVN0YWNrO1xuXHRcdH1cblx0fSApO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBlcnJvcmVkSW5zdGFuY2U7XG5cblx0aWYgKHJlc3VsdCkge1xuXHRcdGlmIChpc01uZW1vbmljYUluc3RhbmNlKSB7XG5cblx0XHRcdC8vIGlmIGhvb2tzIGhhZCBzb21lIGludGVyY2VwdGlvbjogc3RhcnRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXHRcdFx0Y29uc3Qge1xuXHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRjb2xsZWN0aW9uLFxuXHRcdFx0fSA9IHJlc3VsdHM7XG5cdFx0XHRpZiAoIHR5cGUuaGFzKCB0cnVlICkgfHwgY29sbGVjdGlvbi5oYXMoIHRydWUgKSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIH1cblxuXHRcdC8vIGlmIGhvb2tzIGhhZCBzb21lIGludGVyY2VwdGlvbjogc3RvcFxuXG5cdFx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdhcmdzJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdvcmlnaW5hbEVycm9yJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnaW5zdGFuY2UnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gZXJyb3JlZEluc3RhbmNlO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnZXh0cmFjdCcsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgX3BhcmVudCA9IHBhcmVudChlcnJvcmVkSW5zdGFuY2UpO1xuXHRcdFx0XHRcdHJldHVybiBleHRyYWN0KF9wYXJlbnQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAncGFyc2UnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZSggZXJyb3JlZEluc3RhbmNlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0dGhyb3cgZXJyb3JlZEluc3RhbmNlO1xuXG59O1xuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dNb2RpZmljYXRpb25FcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLHlCQUE0QztBQUU1QyxvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHdCQUF3QixFQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxhQUFLLENBQUM7QUFFVixzRUFBdUU7QUFjaEUsTUFBTSxzQkFBc0IsR0FBRyxVQUF5QyxLQUFxQjtJQUluRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQUUsRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUNoQixFQUNELElBQUksRUFDSixHQUFHLElBQUksQ0FBQztJQU1ULE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO0lBRXZELElBQUssS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUcsQ0FBQztRQUUxQyxLQUFLLENBQUMsT0FBbUIsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBRSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxPQUFtQixDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV6QyxNQUFNLEtBQUssQ0FBQztJQUViLENBQUM7SUFFRCxHQUFHLENBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzlCLEdBQUc7WUFDRixPQUFP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LE9BQU8sRUFBRTtZQUM5QixHQUFHO2dCQUNGLE9BQU8sR0FBRyxFQUFFO29CQUNYLE9BQU8sS0FBSyxDQUFFLGVBQWUsQ0FBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUM7WUFDSCxDQUFDO1NBQ0QsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sZUFBZSxDQUFDO0FBRXZCLENBQUMsQ0FBQztBQTlMVyxRQUFBLHNCQUFzQiwwQkE4TGpDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IE1uZW1vbmljYUVycm9yIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdE1ORU1PTklDQSxcbn0gPSBjb25zdGFudHM7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUlxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgeyBjbGVhbnVwU3RhY2ssIGdldFN0YWNrIH0gZnJvbSAnLi8nO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZVxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRwYXJzZSxcblx0cGFyZW50LFxuXHRleHRyYWN0XG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvcic7XG5cbi8vIEluc3RhbmNlIGNyZWF0b3IgY29udGV4dCB0eXBlXG50eXBlIEluc3RhbmNlQ3JlYXRvckNvbnRleHQgPSB7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHsgc3RhY2s6IHN0cmluZyB9O1xuXHRhcmdzOiB1bmtub3duW107XG5cdE1vZGlmaWNhdG9yVHlwZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0SW5zdGFuY2VNb2RpZmljYXRvcjogbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IHsgc3RhY2s6IHN0cmluZ1tdIH07XG5cdGluaGVyaXRlZEluc3RhbmNlPzogdW5rbm93bjtcblx0aW52b2tlUG9zdEhvb2tzKCk6IHsgdHlwZTogU2V0PHVua25vd24+OyBjb2xsZWN0aW9uOiBTZXQ8dW5rbm93bj4gfTtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvd01vZGlmaWNhdGlvbkVycm9yID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBlcnJvcjogTW5lbW9uaWNhRXJyb3IgKSB7XG5cblx0Ly8gSW5zdGFuY2VDcmVhdG9yXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdFR5cGVOYW1lLFxuXHRcdHR5cGU6IHtcblx0XHRcdHN0YWNrOiB0eXBlU3RhY2tcblx0XHR9LFxuXHRcdGFyZ3Ncblx0fSA9IHNlbGY7XG5cblx0Ly8gaWYgKCBlcnJvclsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gKSB7XG5cdC8vIFx0ZGVidWdnZXI7XG5cdC8vIH1cblxuXHRjb25zdCBleGNlcHRpb25SZWFzb24gPSBlcnJvci5leGNlcHRpb25SZWFzb24gfHwgZXJyb3I7XG5cblx0aWYgKCBlcnJvci5leGNlcHRpb25SZWFzb24gIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdChlcnJvci5yZWFzb25zIGFzIEVycm9yW10pLnB1c2goIGVycm9yLmV4Y2VwdGlvblJlYXNvbiApO1xuXHRcdChlcnJvci5zdXJwbHVzIGFzIEVycm9yW10pLnB1c2goIGVycm9yICk7XG5cblx0XHR0aHJvdyBlcnJvcjtcblxuXHR9XG5cblx0b2RwKCBlcnJvciwgJ2V4Y2VwdGlvblJlYXNvbicsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblJlYXNvbjtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gKTtcblxuXHRjb25zdCByZWFzb25zOiBFcnJvcltdID0gWyBleGNlcHRpb25SZWFzb24gXTtcblxuXHRvZHAoIGVycm9yLCAncmVhc29ucycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHJlYXNvbnM7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHR9ICk7XG5cdGNvbnN0IHN1cnBsdXM6IEVycm9yW10gPSBbXTtcblx0b2RwKCBlcnJvciwgJ3N1cnBsdXMnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzdXJwbHVzO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSApO1xuXG5cdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBzZWxmIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKSBhcyBJbnN0YW5jZUNyZWF0b3JDb250ZXh0WydJbnN0YW5jZU1vZGlmaWNhdG9yJ107XG5cblx0Ly8gbGV0IGVycm9yZWRJbnN0YW5jZSA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvcigpO1xuXG5cdGxldCBlcnJvclByb3RvOiBvYmplY3QgfCBudWxsID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggZXJyb3JlZEluc3RhbmNlICk7XG5cdGxldCBpc01uZW1vbmljYUluc3RhbmNlID0gZmFsc2U7XG5cdHdoaWxlICggZXJyb3JQcm90byApIHtcblx0XHRjb25zdCB0ZXN0VG9Qcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8gKTtcblx0XHRpZiAodGVzdFRvUHJvdG8gPT09IG51bGwpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHRpZiAoXG5cdFx0XHR0ZXN0VG9Qcm90byAhPT0gbnVsbCAmJlxuXHRcdFx0T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGVzdFRvUHJvdG8sICdjb25zdHJ1Y3RvcicpICYmXG5cdFx0XHR0ZXN0VG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBNTkVNT05JQ0Fcblx0XHQpIHtcblx0XHRcdGlzTW5lbW9uaWNhSW5zdGFuY2UgPSB0cnVlO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGVycm9yUHJvdG8gPSB0ZXN0VG9Qcm90bztcblx0fVxuXG5cdC8vIFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8sIGVycm9yKTtcblx0Y29uc3QgcmVzdWx0ID0gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90byBhcyBvYmplY3QsIGVycm9yKTtcblx0Ly8gbGV0IHJlc3VsdCA9IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8sIGVycm9yKTtcblx0Ly8gaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcblx0Ly8gXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoZXJyb3JQcm90bywgZXJyb3IpO1xuXHQvLyBcdC8vIHVucmVhY2hhYmxlXG5cdC8vIFx0cmVzdWx0ID0gdHJ1ZTtcblx0Ly8gfVxuXHQvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xuXG5cdGNvbnN0IHN0YWNrOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGlmICggZXJyb3IgaW5zdGFuY2VvZiBCQVNFX01ORU1PTklDQV9FUlJPUiApIHtcblxuXHRcdHN0YWNrLnB1c2goIGVycm9yLnN0YWNrIGFzIHN0cmluZyApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXG5cdFx0Z2V0U3RhY2suY2FsbCggZXJyb3JlZEluc3RhbmNlLCB0aXRsZSwgW10sIHRocm93TW9kaWZpY2F0aW9uRXJyb3IgKTtcblxuXHRcdHN0YWNrLnB1c2goIC4uLmVycm9yZWRJbnN0YW5jZS5zdGFjayApO1xuXG5cdFx0Y29uc3QgZXJyb3JTdGFjayA9IChlcnJvci5zdGFjayBhcyBzdHJpbmcgKS5zcGxpdCggJ1xcbicgKTtcblxuXHRcdHN0YWNrLnB1c2goICc8LS0gd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yIC0tPicgKTtcblxuXHRcdGVycm9yU3RhY2suZm9yRWFjaCggKCBsaW5lOiBzdHJpbmcgKSA9PiB7XG5cdFx0XHRpZiAoICFzdGFjay5pbmNsdWRlcyggbGluZSApICkge1xuXHRcdFx0XHRzdGFjay5wdXNoKCBsaW5lICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0c3RhY2sucHVzaCggJ1xcbjwtLSBvZiBjb25zdHJ1Y3RvciBkZWZpbml0aW9ucyBzdGFjayAtLT4nICk7XG5cdFx0c3RhY2sucHVzaCggLi4udHlwZVN0YWNrICk7XG5cblx0fVxuXG5cdGNvbnN0IGVycm9yZWRJbnN0YW5jZVN0YWNrID0gY2xlYW51cFN0YWNrKCBzdGFjayApLmpvaW4oICdcXG4nICk7XG5cblx0Ly8gc3RhcnRpbmcgZnJvbSBOb2RlLmpzIHYyMiB3ZSBzaG91bGQgZGVmaW5lIHRoaXMgcHJvcGVydHkgdGhyb3VnaCBvZHBcblx0Ly8gdGhhdCB3YXMgdW5uZWNlc3NhcnkgZm9yIHYyMCwgdGhvdWdoIHNlZW1zIG5ldyB2OCBvcHRpbWl6ZWQgY29tcGlsZXJcblx0Ly8gaXMgZ2F0aGVyaW5nIHZhbHVlIGZyb20gZGVlcCBjaGFpbiBhbmQgd2hpbGUgY29tcGFyaW5nIGl0IHdpdGggXG5cdC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZW4gaXQgd2lsbCBub3QgY3JlYXRlIHRoaXMgcHJvcGVydHkgXG5cdC8vIHNvIHdlIG5lZWQgZGlyZWN0IHByb3BlcnR5IGRlY2xhcmF0aW9uIGhlcmUgLi4uXG5cdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnc3RhY2snLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBlcnJvcmVkSW5zdGFuY2VTdGFjaztcblx0XHR9XG5cdH0gKTtcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gZXJyb3JlZEluc3RhbmNlO1xuXG5cdGlmIChyZXN1bHQpIHtcblx0XHRpZiAoaXNNbmVtb25pY2FJbnN0YW5jZSkge1xuXG5cdFx0XHQvLyBpZiBob29rcyBoYWQgc29tZSBpbnRlcmNlcHRpb246IHN0YXJ0XG5cdFx0XHRjb25zdCByZXN1bHRzID0gc2VsZi5pbnZva2VQb3N0SG9va3MoKTtcblx0XHRcdGNvbnN0IHtcblx0XHRcdFx0dHlwZSxcblx0XHRcdFx0Y29sbGVjdGlvbixcblx0XHRcdH0gPSByZXN1bHRzO1xuXHRcdFx0aWYgKCB0eXBlLmhhcyggdHJ1ZSApIHx8IGNvbGxlY3Rpb24uaGFzKCB0cnVlICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyB9XG5cblx0XHQvLyBpZiBob29rcyBoYWQgc29tZSBpbnRlcmNlcHRpb246IHN0b3BcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnYXJncycsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBhcmdzO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnb3JpZ2luYWxFcnJvcicsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBlcnJvcjtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ2luc3RhbmNlJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ2V4dHJhY3QnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IF9wYXJlbnQgPSBwYXJlbnQoZXJyb3JlZEluc3RhbmNlKTtcblx0XHRcdFx0XHRyZXR1cm4gZXh0cmFjdChfcGFyZW50KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ3BhcnNlJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2UoIGVycm9yZWRJbnN0YW5jZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdHRocm93IGVycm9yZWRJbnN0YW5jZTtcblxufTtcbiJdfQ==
@@ -2,16 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerFlowChecker = exports.flowCheckers = void 0;
4
4
  const errors_1 = require("../../descriptors/errors");
5
- const { MISSING_CALLBACK_ARGUMENT, FLOW_CHECKER_REDEFINITION, } = errors_1.ErrorsTypes;
5
+ const { MISSING_CALLBACK_ARGUMENT, } = errors_1.ErrorsTypes;
6
6
  exports.flowCheckers = new WeakMap();
7
7
  const registerFlowChecker = function (cb) {
8
8
  if (typeof cb !== 'function') {
9
9
  throw new MISSING_CALLBACK_ARGUMENT;
10
10
  }
11
- if (exports.flowCheckers.has(this)) {
12
- throw new FLOW_CHECKER_REDEFINITION;
13
- }
14
11
  exports.flowCheckers.set(this, cb);
15
12
  };
16
13
  exports.registerFlowChecker = registerFlowChecker;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd0NoZWNrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9ob29rcy9mbG93Q2hlY2tlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDekIsR0FBRyxvQkFBVyxDQUFDO0FBRUgsUUFBQSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLG1CQUFtQixHQUFHLFVBQXFCLEVBQWlCO0lBRXhFLElBQUssT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFHLENBQUM7UUFDaEMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFLLG9CQUFZLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBRSxFQUFHLENBQUM7UUFDaEMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQkFBWSxDQUFDLEdBQUcsQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLENBQUM7QUFFOUIsQ0FBQyxDQUFDO0FBWlcsUUFBQSxtQkFBbUIsdUJBWTlCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdE1JU1NJTkdfQ0FMTEJBQ0tfQVJHVU1FTlQsXG5cdEZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT04sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmV4cG9ydCBjb25zdCBmbG93Q2hlY2tlcnMgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyRmxvd0NoZWNrZXIgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYjogKCkgPT4gdW5rbm93biApIHtcblxuXHRpZiAoIHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgTUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVDtcblx0fVxuXG5cdGlmICggZmxvd0NoZWNrZXJzLmhhcyggdGhpcyApICkge1xuXHRcdHRocm93IG5ldyBGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OO1xuXHR9XG5cblx0Zmxvd0NoZWNrZXJzLnNldCggdGhpcywgY2IgKTtcblxufTtcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd0NoZWNrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9ob29rcy9mbG93Q2hlY2tlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHlCQUF5QixHQUV6QixHQUFHLG9CQUFXLENBQUM7QUFFSCxRQUFBLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ25DLE1BQU0sbUJBQW1CLEdBQUcsVUFBcUIsRUFBaUI7SUFFeEUsSUFBSyxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUcsQ0FBQztRQUNoQyxNQUFNLElBQUkseUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQU1ELG9CQUFZLENBQUMsR0FBRyxDQUFFLElBQUksRUFBRSxFQUFFLENBQUUsQ0FBQztBQUU5QixDQUFDLENBQUM7QUFaVyxRQUFBLG1CQUFtQix1QkFZOUIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0TUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVCxcblx0Ly8gRkxPV19DSEVDS0VSX1JFREVGSU5JVElPTixcbn0gPSBFcnJvcnNUeXBlcztcblxuZXhwb3J0IGNvbnN0IGZsb3dDaGVja2VycyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgY29uc3QgcmVnaXN0ZXJGbG93Q2hlY2tlciA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGNiOiAoKSA9PiB1bmtub3duICkge1xuXG5cdGlmICggdHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdHRocm93IG5ldyBNSVNTSU5HX0NBTExCQUNLX0FSR1VNRU5UO1xuXHR9XG5cblx0Ly8gaWYgKCBmbG93Q2hlY2tlcnMuaGFzKCB0aGlzICkgKSB7XG5cdC8vIFx0dGhyb3cgbmV3IEZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT047XG5cdC8vIH1cblxuXHRmbG93Q2hlY2tlcnMuc2V0KCB0aGlzLCBjYiApO1xuXG59O1xuIl19
@@ -1,4 +1,4 @@
1
- import { ConstructorFunction } from '../../types';
1
+ import { _Internal_TC_ } from '../../types';
2
2
  export interface ThenSpec {
3
3
  subtype: object;
4
4
  args: unknown[];
@@ -32,5 +32,5 @@ declare const InstanceCreatorPrototype: {
32
32
  };
33
33
  }, error: import("../../types").MnemonicaError) => void;
34
34
  };
35
- export declare const InstanceCreator: ConstructorFunction<typeof InstanceCreatorPrototype>;
35
+ export declare const InstanceCreator: _Internal_TC_<typeof InstanceCreatorPrototype>;
36
36
  export {};
@@ -11,6 +11,7 @@ const errors_2 = require("../errors");
11
11
  const throwModificationError_1 = require("../errors/throwModificationError");
12
12
  const Props_1 = require("./Props");
13
13
  const InstanceModificator_1 = require("./InstanceModificator");
14
+ const parent_1 = require("../../utils/parent");
14
15
  const invokePreHooks = function () {
15
16
  const { type, existentInstance, args, InstanceModificator } = this;
16
17
  const { collection, } = type;
@@ -63,8 +64,12 @@ const postProcessing = function (continuationOf) {
63
64
  if (self.inheritedInstance instanceof Error && !blockErrors) {
64
65
  return;
65
66
  }
66
- const parent = self.inheritedInstance.parent();
67
- const parentName = parent.constructor.name;
67
+ const prev = (0, parent_1.parent)(self.inheritedInstance);
68
+ if (!prev || (prev && !prev.constructor)) {
69
+ const msg = 'should inherit from some instance';
70
+ self.throwModificationError(new WRONG_MODIFICATION_PATTERN(msg, stack));
71
+ }
72
+ const parentName = prev.constructor.name;
68
73
  const parentTypeName = self.type.parentType.TypeName;
69
74
  if (parentName !== parentTypeName) {
70
75
  const msg = `should inherit from ${parentTypeName} but made on ${parentName}`;
@@ -204,4 +209,4 @@ exports.InstanceCreator = function (type, existentInstance, args, chained) {
204
209
  return self.inheritedInstance;
205
210
  };
206
211
  Object.assign(exports.InstanceCreator.prototype, InstanceCreatorPrototype);
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFJYiwrQ0FFeUI7QUFFekIsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCwwQkFBMEIsR0FDMUIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUsbUNBQXFEO0FBRXJELCtEQUFnRTtBQUVoRSxNQUFNLGNBQWMsR0FBRztJQUV0QixNQUFNLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxFQUNMLFVBQVUsR0FDVixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sUUFBUSxHQUFHO1FBQ2hCLElBQUk7UUFDSixnQkFBZ0I7UUFDaEIsSUFBSTtRQUNKLG1CQUFtQjtLQUNuQixDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsQ0FBRSxhQUFhLEVBQUUsUUFBUSxDQUFFLENBQUM7SUFFakQsSUFBSSxDQUFDLFVBQVUsQ0FBRSxhQUFhLEVBQUUsUUFBUSxDQUFFLENBQUM7QUFFNUMsQ0FBQyxDQUFDO0FBSUYsTUFBTSxlQUFlLEdBQUc7SUFHdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE1BQU0sRUFDTCxpQkFBaUIsR0FDakIsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsaUJBQWlCLENBQVUsQ0FBQztJQUVwRCxNQUFNLEVBQ0wsUUFBUSxF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aUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBRWpDLENBQUM7SUFHRCxJQUFLLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxPQUFPLEVBQUcsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBRXhDLEdBQUcsQ0FBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUU7WUFDbkMsR0FBRztnQkFDRixPQUFPLFFBQVEsQ0FBQztZQUNqQixDQUFDO1NBQ0QsQ0FBRSxDQUFDO1FBRUosT0FBTyxNQUFNLENBQUM7SUFFZixDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBRSxJQUFJLENBQUUsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUUvQixDQUF5RCxDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLENBQUUsdUJBQWUsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiAgXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IENvbnN0cnVjdG9yRnVuY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7XG5cdGNvbnN0YW50c1xufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdFdST05HX01PRElGSUNBVElPTl9QQVRURVJOLFxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0bWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlLFxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGdldFN0YWNrIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHRocm93TW9kaWZpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGhyb3dNb2RpZmljYXRpb25FcnJvcic7XG5cbmltcG9ydCB7IF9nZXRQcm9wcywgX3NldFNlbGYsIFByb3BzIH0gZnJvbSAnLi9Qcm9wcyc7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi9JbnN0YW5jZU1vZGlmaWNhdG9yJztcbiAgXG5jb25zdCBpbnZva2VQcmVIb29rcyA9IGZ1bmN0aW9uICggdGhpczogYW55ICkge1xuXG5cdGNvbnN0IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH0gPSB0aGlzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH07XG5cblx0Y29sbGVjdGlvbi5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG5cdHR5cGUuaW52b2tlSG9vayggJ3ByZUNyZWF0aW9uJywgaG9va0RhdGEgKTtcblxufTtcblxuXG4gIFxuY29uc3QgaW52b2tlUG9zdEhvb2tzID0gZnVuY3Rpb24gKCB0aGlzOiBhbnkgKSB7XG5cblx0IFxuXHRjb25zdCBjcmVhdG9yID0gdGhpcztcblx0Y29uc3Qge1xuXHRcdGluaGVyaXRlZEluc3RhbmNlLFxuXHR9ID0gY3JlYXRvcjtcblxuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX186IGFyZ3MsXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7XG5cdFx0Y29sbGVjdGlvbixcblx0fSA9IHR5cGU7XG5cblx0Y29uc3QgaG9va1R5cGUgPSBpbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yID9cblx0XHQnY3JlYXRpb25FcnJvcicgOiAncG9zdENyZWF0aW9uJztcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjcmVhdG9yXG5cdH07XG5cblx0cmV0dXJuIHtcblxuXHRcdHR5cGUgOiB0eXBlLmludm9rZUhvb2soIGhvb2tUeXBlLCBob29rRGF0YSApLFxuXG5cdFx0Y29sbGVjdGlvbiA6IGNvbGxlY3Rpb24uaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0fTtcblxufTtcblxuXG4gIFxuY29uc3QgcG9zdFByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgY29udGludWF0aW9uT2Y6IGFueSApIHtcblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblx0Y29uc3Qge1xuXHRcdHN0YWNrLFxuXHRcdHR5cGU6IHtcblx0XHRcdGlzU3ViVHlwZSxcblx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRzdHJpY3RDaGFpbixcblx0XHRcdFx0YmxvY2tFcnJvcnNcblx0XHRcdH1cblx0XHR9XG5cdH0gPSBzZWxmO1xuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3IgKSB7XG5cdFx0Y29uc3QgbXNnID0gJ3Nob3VsZCBpbmhlcml0IGZyb20gbW5lbW9uaWNhIGluc3RhbmNlJztcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdH1cblxuXHRpZiAoICFzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggY29udGludWF0aW9uT2YgJiYgISggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIGNvbnRpbnVhdGlvbk9mICkgKSB7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0Y29uc3QgaWNuID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7Y29udGludWF0aW9uT2YuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdFx0Ly8gdGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKG1zZywgc2VsZi5zdGFjayk7XG5cdH1cblxuXHRpZiAoaXNTdWJUeXBlICYmIHN0cmljdENoYWluKSB7XG5cdFx0XG5cdFx0aWYgKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBFcnJvciAmJiAhYmxvY2tFcnJvcnMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJlbnQgPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLnBhcmVudCgpO1xuXHRcdGNvbnN0IHBhcmVudE5hbWUgPSBwYXJlbnQuY29uc3RydWN0b3IubmFtZTtcblx0XHRjb25zdCBwYXJlbnRUeXBlTmFtZSA9IHNlbGYudHlwZS5wYXJlbnRUeXBlLlR5cGVOYW1lO1xuXHRcdGlmIChwYXJlbnROYW1lICE9PSBwYXJlbnRUeXBlTmFtZSkge1xuXHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtwYXJlbnRUeXBlTmFtZX0gYnV0IG1hZGUgb24gJHtwYXJlbnROYW1lfWA7XG5cdFx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdFx0fVxuXG5cdH1cblxuXHRfc2V0U2VsZihzZWxmLmluaGVyaXRlZEluc3RhbmNlKTtcblxuXHRzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW5TcGVjIHtcblx0c3VidHlwZTogb2JqZWN0O1xuXHRhcmdzOiB1bmtub3duW107XG5cdG5hbWU/OiBzdHJpbmc7XG59XG5cbiAgXG5jb25zdCBhZGRUaGVuID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHRoZW46IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCkgPT4ge1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9XG5cdFx0XHRcdG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdFx0dGhlbi5zdWJ0eXBlLFxuXHRcdFx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0XHRcdFx0dGhlbi5hcmdzLFxuXHRcdFx0XHRcdC8vIHdhcyBjaGFpbmVkIDpcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0Ly8gc2VsZi5leGlzdGVudEluc3RhbmNlXG5cdFx0XHRcdCkgYXMgdW5rbm93biBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fSApO1xuXG59O1xuXG5jb25zdCBtYWtlQXdhaXRlciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIHRoZW4/OiBUaGVuU3BlYyApIHtcblxuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlXG5cdFx0LnRoZW4oICggaW5zdGFuY2U6IHVua25vd24gKSA9PiB7XG5cblx0XHRcdGlmICggdHlwZW9mIGluc3RhbmNlICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdFx0aWYgKCBzZWxmLmNvbmZpZy5hd2FpdFJldHVybiApIHtcblx0XHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9OiBzZWVtcyBhc3luYyAke3R5cGUuVHlwZU5hbWV9IGhhcyBubyByZXR1cm4gc3RhdGVtZW50YDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc2VsZi5zdGFjayApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoICEoIGluc3RhbmNlIGluc3RhbmNlb2Ygc2VsZi50eXBlICkgKSB7XG5cdFx0XHRcdCBcblx0XHRcdFx0Y29uc3QgaWNuID0gKGluc3RhbmNlIGFzIGFueSkuY29uc3RydWN0b3IubmFtZTtcblx0XHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHt0eXBlLlR5cGVOYW1lfSBidXQgZ290ICR7aWNufWA7XG5cdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzZWxmLnN0YWNrICk7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuXHRcdFx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0XHRcdCBcblx0XHRcdGlmICggcHJvcHMuX19zZWxmX18gIT09IChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIHVua25vd24pICkge1xuXHRcdFx0XHRzZWxmLnBvc3RQcm9jZXNzaW5nKCB0eXBlICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG5cdFx0fSApXG5cdFx0LmNhdGNoKCAoIGVycm9yOiBFcnJvciApID0+IHtcblx0XHRcdGlmICggc2VsZi5jb25maWcuYmxvY2tFcnJvcnMgKSB7XG5cdFx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRpZiAoIHRoZW4gKSB7XG5cdFx0c2VsZi5hZGRUaGVuKCB0aGVuICk7XG5cdH1cblxuXHR0eXBlLnN1YnR5cGVzLmZvckVhY2goICggc3VidHlwZTogb2JqZWN0LCBuYW1lOiBzdHJpbmcgKSA9PiB7XG5cdFx0IFxuXHRcdChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIGFueSlbIG5hbWUgXSA9ICggLi4uYXJnczogdW5rbm93bltdICkgPT4ge1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYubWFrZUF3YWl0ZXIoIHN1YnR5cGUsIHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0c3VidHlwZSxcblx0XHRcdFx0YXJncyxcblx0XHRcdH0gKTtcblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXHRcdH07XG5cdH0gKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufTtcblxuY29uc3QgSW5zdGFuY2VDcmVhdG9yUHJvdG90eXBlID0ge1xuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2ssXG5cdHBvc3RQcm9jZXNzaW5nLFxuXHRtYWtlQXdhaXRlcixcblx0YWRkVGhlbixcblx0aW52b2tlUHJlSG9va3MsXG5cdGludm9rZVBvc3RIb29rcyxcblx0dGhyb3dNb2RpZmljYXRpb25FcnJvclxufTtcblxuICBcbmV4cG9ydCBjb25zdCBJbnN0YW5jZUNyZWF0b3IgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgdHlwZTogYW55LCBleGlzdGVudEluc3RhbmNlOiB1bmtub3duLCBhcmdzOiB1bmtub3duW10sIGNoYWluZWQ6IGJvb2xlYW4gKSB7XG5cblx0Y29uc3Qge1xuXHRcdGNvbnN0cnVjdEhhbmRsZXIsXG5cdFx0cHJvdG8sXG5cdFx0Y29uZmlnLFxuXHRcdFR5cGVOYW1lXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IHtcblx0XHRNb2RpZmljYXRpb25Db25zdHJ1Y3Rvcixcblx0XHRibG9ja0Vycm9ycyxcblx0XHRzdWJtaXRTdGFja1xuXHR9ID0gY29uZmlnO1xuXG5cdCBcblx0Y29uc3QgbWMgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvcigpO1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3QgTW9kaWZpY2F0b3JUeXBlID0gY29uc3RydWN0SGFuZGxlcigpO1xuXG5cdE9iamVjdC5hc3NpZ24oIHNlbGYsIHtcblxuXHRcdHR5cGUsXG5cdFx0VHlwZU5hbWUsXG5cblx0XHRleGlzdGVudEluc3RhbmNlLFxuXG5cdFx0Z2V0IGFyZ3MgKCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fSxcblxuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yIDogbWMsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXG5cdFx0Y29uZmlnLFxuXG5cdFx0cHJvdG9cblxuXHR9ICk7XG5cblx0aWYgKCBzdWJtaXRTdGFjayB8fCBjaGFpbmVkICkge1xuXHRcdGNvbnN0IHN0YWNrQWRkaXRpb246IHN0cmluZ1tdID0gY2hhaW5lZCA/IHNlbGYuZ2V0RXhpc3RlbnRBc3luY1N0YWNrKCBleGlzdGVudEluc3RhbmNlICkgOiBbXTtcblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXHRcdGlmICggc3VibWl0U3RhY2sgKSB7XG5cdFx0XHRnZXRTdGFjay5jYWxsKCBzZWxmLCB0aXRsZSwgc3RhY2tBZGRpdGlvbiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZWxmLnN0YWNrID0gdGl0bGU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBibG9ja0Vycm9ycyApIHtcblxuXHRcdGlmICggZXhpc3RlbnRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICkge1xuXG5cdFx0XHRzZWxmLk1vZGlmaWNhdG9yVHlwZSA9IG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZSggVHlwZU5hbWUgKTtcblxuXHRcdFx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRcdFx0Y29uc3QgYmxvY2tFcnJvcnNFcnJvckluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciggLi4uYXJncyApO1xuXG5cdFx0XHR0aHJvdyBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2U7XG5cblx0XHR9XG5cdH1cblxuXHRzZWxmLmludm9rZVByZUhvb2tzKCk7XG5cblx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIENvbnN0cnVjdG9yIEludm9jYXRpb24gSXRzZWxmXG5cdFx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBhbnN3ZXI7XG5cblx0XHR9IGNhdGNoICggZXJyb3IgKSB7XG5cblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblxuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHR9XG5cblxuXHRpZiAoIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBQcm9taXNlICkge1xuXG5cdFx0Y29uc3Qgd2FpdGVyID0gc2VsZi5tYWtlQXdhaXRlciggdHlwZSApO1xuXG5cdFx0b2RwKCB3YWl0ZXIsIFN5bWJvbENvbnN0cnVjdG9yTmFtZSwge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIFR5cGVOYW1lO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdHJldHVybiB3YWl0ZXI7XG5cblx0fVxuXG5cdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufSBhcyBDb25zdHJ1Y3RvckZ1bmN0aW9uPHR5cGVvZiBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGU+O1xuXG5PYmplY3QuYXNzaWduKCBJbnN0YW5jZUNyZWF0b3IucHJvdG90eXBlLCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgKTtcbiJdfQ==
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFrQmIsK0NBRXlCO0FBRXpCLE1BQU0sRUFDTCxHQUFHLEVBQ0gscUJBQXFCLEVBQ3JCLEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUF1RDtBQUN2RCxNQUFNLEVBQ0wsMEJBQTBCLEdBQzFCLEdBQUcsb0JBQVcsQ0FBQztBQUVoQixvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHFCQUFxQixFQUNyQix3QkFBd0IsR0FDeEIsR0FBRyxlQUFVLENBQUM7QUFFZixzQ0FBcUM7QUFDckMsNkVBQTBFO0FBRTFFLG1DQUFxRDtBQUVyRCwrREFBZ0U7QUFDaEUsK0NBQTRDO0FBSTVDLE1BQU0sY0FBYyxHQUFHO0lBRXRCLE1BQU0sRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixtQkFBbUIsRUFDbkIsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLEVBQ0wsVUFBVSxHQUNWLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLGdCQUFnQjtRQUNoQixJQUFJO1FBQ0osbUJBQW1CO0tBQ25CLENBQUM7SUFFRixVQUFVLENBQUMsVUFBVSxDQUFFLGFBQWEsRUFBRSxRQUFRLENBQUUsQ0FBQztJQUVqRCxJQUFJLENBQUMsVUFBVSxDQUFFLGFBQWEsRUFBRSxRQUFRLENBQUUsQ0FBQztBQUU1QyxDQUFDLENBQUM7QUFJRixNQUFNLGVBQWUsR0FBRztJQUd2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxFQUNMLGlCQUFpQixHQUNqQixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxpQkFBaUIsQ0FBVSxDQUFDO0lBRXBELE1B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QUFpQixHQUFHLE1BQU0sQ0FBQztRQUVqQyxDQUFDO1FBQUMsT0FBUSxLQUFLLEVBQUcsQ0FBQztZQUVsQixJQUFJLENBQUMsc0JBQXNCLENBQUUsS0FBSyxDQUFFLENBQUM7UUFFdEMsQ0FBQztJQUVGLENBQUM7U0FBTSxDQUFDO1FBR1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBRWpDLENBQUM7SUFHRCxJQUFLLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxPQUFPLEVBQUcsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBRXhDLEdBQUcsQ0FBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUU7WUFDbkMsR0FBRztnQkFDRixPQUFPLFFBQVEsQ0FBQztZQUNqQixDQUFDO1NBQ0QsQ0FBRSxDQUFDO1FBRUosT0FBTyxNQUFNLENBQUM7SUFFZixDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBRSxJQUFJLENBQUUsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUUvQixDQUFtRCxDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLENBQUUsdUJBQWUsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiAgXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogSW5zdGFuY2VDcmVhdG9yIG9yY2hlc3RyYXRlcyB0aGUgZnVsbCBpbnN0YW5jZSBjb25zdHJ1Y3Rpb24gbGlmZWN5Y2xlLlxuICpcbiAqIFBpcGVsaW5lIHN0YWdlcyAoc2VlIGFsc28gY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyBhbmQgSW5zdGFuY2VNb2RpZmljYXRvci50cyk6XG4gKiAgIDEuIFNldHVwICAgICAgLSBleHRyYWN0IHR5cGUsIGNvbmZpZywgcHJlcGFyZSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvclxuICogICAyLiBTdGFjayAgICAgIC0gY29sbGVjdCBjcmVhdGlvbiBzdGFjayBpZiBzdWJtaXRTdGFjayBvciBjaGFpbmVkXG4gKiAgIDMuIGJsb2NrRXJyb3JzLSBpZiBwYXJlbnQgaXMgRXJyb3IsIG9wdGlvbmFsbHkgYmxvY2sgZnVydGhlciBjb25zdHJ1Y3Rpb25cbiAqICAgNC4gUHJlLWhvb2tzICAtIGludm9rZSBwcmVDcmVhdGlvbiBob29rcyBvbiBjb2xsZWN0aW9uIGFuZCB0eXBlXG4gKiAgIDUuIEJ1aWxkICAgICAgLSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvcigpIHdpcmVzIHByb3RvdHlwZSBjaGFpblxuICogICA2LiBDb25zdHJ1Y3QgIC0gbmV3IEluc3RhbmNlTW9kaWZpY2F0b3IoLi4uYXJncykgcnVucyB1c2VyIGNvbnN0cnVjdG9yXG4gKiAgIDcuIEFzeW5jICAgICAgLSBpZiByZXN1bHQgaXMgUHJvbWlzZSwgYXR0YWNoIGF3YWl0ZXIgYW5kIHN1YnR5cGUgZmFjdG9yaWVzXG4gKiAgIDguIFBvc3QtcHJvYyAgLSB2YWxpZGF0ZSBpbmhlcml0YW5jZSwgc2V0IF9fc2VsZl9fLCBpbnZva2UgcG9zdENyZWF0aW9uIGhvb2tzXG4gKi9cblxuaW1wb3J0IHsgX0ludGVybmFsX1RDXyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHtcblx0Y29uc3RhbnRzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbn0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRtYWtlRXJyb3JNb2RpZmljYXRvclR5cGUsXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90aHJvd01vZGlmaWNhdGlvbkVycm9yJztcblxuaW1wb3J0IHsgX2dldFByb3BzLCBfc2V0U2VsZiwgUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuaW1wb3J0IHsgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgfSBmcm9tICcuL0luc3RhbmNlTW9kaWZpY2F0b3InO1xuaW1wb3J0IHsgcGFyZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyZW50JztcblxuLy8gaW1wb3J0IHsgTW5lbW9zeW5lIH0gZnJvbSAnLi9NbmVtb3N5bmUnO1xuICBcbmNvbnN0IGludm9rZVByZUhvb2tzID0gZnVuY3Rpb24gKCB0aGlzOiBhbnkgKSB7XG5cblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fSA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdGNvbGxlY3Rpb24sXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fTtcblxuXHRjb2xsZWN0aW9uLmludm9rZUhvb2soICdwcmVDcmVhdGlvbicsIGhvb2tEYXRhICk7XG5cblx0dHlwZS5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG59O1xuXG5cbiAgXG5jb25zdCBpbnZva2VQb3N0SG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSApIHtcblxuXHQgXG5cdGNvbnN0IGNyZWF0b3IgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdH0gPSBjcmVhdG9yO1xuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRjb25zdCB7XG5cdFx0X190eXBlX186IHR5cGUsXG5cdFx0X19wYXJlbnRfXzogZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRfX2FyZ3NfXzogYXJncyxcblx0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rVHlwZSA9IGluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgP1xuXHRcdCdjcmVhdGlvbkVycm9yJyA6ICdwb3N0Q3JlYXRpb24nO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRpbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNyZWF0b3Jcblx0fTtcblxuXHRyZXR1cm4ge1xuXG5cdFx0dHlwZSA6IHR5cGUuaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0XHRjb2xsZWN0aW9uIDogY29sbGVjdGlvbi5pbnZva2VIb29rKCBob29rVHlwZSwgaG9va0RhdGEgKSxcblxuXHR9O1xuXG59O1xuXG5cbiAgXG5jb25zdCBwb3N0UHJvY2Vzc2luZyA9IGZ1bmN0aW9uICggdGhpczogYW55LCBjb250aW51YXRpb25PZjogYW55ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0c3RhY2ssXG5cdFx0dHlwZToge1xuXHRcdFx0aXNTdWJUeXBlLFxuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdHN0cmljdENoYWluLFxuXHRcdFx0XHRibG9ja0Vycm9yc1xuXHRcdFx0fVxuXHRcdH1cblx0fSA9IHNlbGY7XG5cblx0aWYgKCAhc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3JbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICkge1xuXHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIG1uZW1vbmljYSBpbnN0YW5jZSc7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHR9XG5cblx0aWYgKCBjb250aW51YXRpb25PZiAmJiAhKCBzZWxmLmluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgY29udGludWF0aW9uT2YgKSApIHtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRjb25zdCBpY24gPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtjb250aW51YXRpb25PZi5UeXBlTmFtZX0gYnV0IGdvdCAke2ljbn1gO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHQvLyB0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4obXNnLCBzZWxmLnN0YWNrKTtcblx0fVxuXG5cdGlmIChpc1N1YlR5cGUgJiYgc3RyaWN0Q2hhaW4pIHtcblx0XHRcblx0XHRpZiAoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICYmICFibG9ja0Vycm9ycykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByZXYgPSBwYXJlbnQoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgYW55O1xuXHRcdGlmICghcHJldiB8fCAocHJldiAmJiAhcHJldi5jb25zdHJ1Y3RvcikpIHtcblx0XHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIHNvbWUgaW5zdGFuY2UnO1xuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnROYW1lID0gcHJldi5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IHBhcmVudFR5cGVOYW1lID0gc2VsZi50eXBlLnBhcmVudFR5cGUuVHlwZU5hbWU7XG5cdFx0aWYgKHBhcmVudE5hbWUgIT09IHBhcmVudFR5cGVOYW1lKSB7XG5cdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3BhcmVudFR5cGVOYW1lfSBidXQgbWFkZSBvbiAke3BhcmVudE5hbWV9YDtcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHR9XG5cblx0fVxuXG5cdF9zZXRTZWxmKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UpO1xuXG5cdHNlbGYuaW52b2tlUG9zdEhvb2tzKCk7XG5cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlblNwZWMge1xuXHRzdWJ0eXBlOiBvYmplY3Q7XG5cdGFyZ3M6IHVua25vd25bXTtcblx0bmFtZT86IHN0cmluZztcbn1cblxuICBcbmNvbnN0IGFkZFRoZW4gPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgdGhlbjogVGhlblNwZWMgKSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZVxuXHRcdC50aGVuKCAoKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID1cblx0XHRcdFx0bmV3IEluc3RhbmNlQ3JlYXRvcihcblx0XHRcdFx0XHR0aGVuLnN1YnR5cGUsXG5cdFx0XHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRcdFx0XHR0aGVuLmFyZ3MsXG5cdFx0XHRcdFx0Ly8gd2FzIGNoYWluZWQgOlxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQvLyBzZWxmLmV4aXN0ZW50SW5zdGFuY2Vcblx0XHRcdFx0KSBhcyB1bmtub3duIGFzIFByb21pc2U8dW5rbm93bj47XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9ICk7XG5cbn07XG5cbmNvbnN0IG1ha2VBd2FpdGVyID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHR5cGU6IGFueSwgdGhlbj86IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCBpbnN0YW5jZTogdW5rbm93biApID0+IHtcblxuXHRcdFx0aWYgKCB0eXBlb2YgaW5zdGFuY2UgIT09ICdvYmplY3QnICkge1xuXHRcdFx0XHRpZiAoIHNlbGYuY29uZmlnLmF3YWl0UmV0dXJuICkge1xuXHRcdFx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7dHlwZS5UeXBlTmFtZX06IHNlZW1zIGFzeW5jICR7dHlwZS5UeXBlTmFtZX0gaGFzIG5vIHJldHVybiBzdGF0ZW1lbnRgO1xuXHRcdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzZWxmLnN0YWNrICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggISggaW5zdGFuY2UgaW5zdGFuY2VvZiBzZWxmLnR5cGUgKSApIHtcblx0XHRcdFx0IFxuXHRcdFx0XHRjb25zdCBpY24gPSAoaW5zdGFuY2UgYXMgYW55KS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHNlbGYuc3RhY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXG5cdFx0XHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhzZWxmLmluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRcdFx0IFxuXHRcdFx0aWYgKCBwcm9wcy5fX3NlbGZfXyAhPT0gKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgdW5rbm93bikgKSB7XG5cdFx0XHRcdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cblx0XHR9IClcblx0XHQuY2F0Y2goICggZXJyb3I6IEVycm9yICkgPT4ge1xuXHRcdFx0aWYgKCBzZWxmLmNvbmZpZy5ibG9ja0Vycm9ycyApIHtcblx0XHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdGlmICggdGhlbiApIHtcblx0XHRzZWxmLmFkZFRoZW4oIHRoZW4gKTtcblx0fVxuXG5cdHR5cGUuc3VidHlwZXMuZm9yRWFjaCggKCBzdWJ0eXBlOiBvYmplY3QsIG5hbWU6IHN0cmluZyApID0+IHtcblx0XHQgXG5cdFx0KHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgYW55KVsgbmFtZSBdID0gKCAuLi5hcmdzOiB1bmtub3duW10gKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5tYWtlQXdhaXRlciggc3VidHlwZSwge1xuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRzdWJ0eXBlLFxuXHRcdFx0XHRhcmdzLFxuXHRcdFx0fSApO1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fTtcblx0fSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59O1xuXG5jb25zdCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgPSB7XG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0cG9zdFByb2Nlc3NpbmcsXG5cdG1ha2VBd2FpdGVyLFxuXHRhZGRUaGVuLFxuXHRpbnZva2VQcmVIb29rcyxcblx0aW52b2tlUG9zdEhvb2tzLFxuXHR0aHJvd01vZGlmaWNhdGlvbkVycm9yXG59O1xuXG4gIFxuZXhwb3J0IGNvbnN0IEluc3RhbmNlQ3JlYXRvciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIGV4aXN0ZW50SW5zdGFuY2U6IHVua25vd24sIGFyZ3M6IHVua25vd25bXSwgY2hhaW5lZDogYm9vbGVhbiApIHtcblxuXHRjb25zdCB7XG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRwcm90byxcblx0XHRjb25maWcsXG5cdFx0VHlwZU5hbWVcblx0fSA9IHR5cGU7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGJsb2NrRXJyb3JzLFxuXHRcdHN1Ym1pdFN0YWNrXG5cdH0gPSBjb25maWc7XG5cblx0IFxuXHRjb25zdCBtYyA9IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yKCk7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCBNb2RpZmljYXRvclR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyKCk7XG5cblx0T2JqZWN0LmFzc2lnbiggc2VsZiwge1xuXG5cdFx0dHlwZSxcblx0XHRUeXBlTmFtZSxcblxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cblx0XHRnZXQgYXJncyAoKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9LFxuXG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgOiBtYyxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cblx0XHRjb25maWcsXG5cblx0XHRwcm90b1xuXG5cdH0gKTtcblxuXHRpZiAoIHN1Ym1pdFN0YWNrIHx8IGNoYWluZWQgKSB7XG5cdFx0Y29uc3Qgc3RhY2tBZGRpdGlvbjogc3RyaW5nW10gPSBjaGFpbmVkID8gc2VsZi5nZXRFeGlzdGVudEFzeW5jU3RhY2soIGV4aXN0ZW50SW5zdGFuY2UgKSA6IFtdO1xuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cdFx0aWYgKCBzdWJtaXRTdGFjayApIHtcblx0XHRcdGdldFN0YWNrLmNhbGwoIHNlbGYsIHRpdGxlLCBzdGFja0FkZGl0aW9uICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlbGYuc3RhY2sgPSB0aXRsZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0aWYgKCBleGlzdGVudEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgKSB7XG5cblx0XHRcdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdFx0XHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdFx0XHRjb25zdCBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2UgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cblx0XHRcdHRocm93IGJsb2NrRXJyb3JzRXJyb3JJbnN0YW5jZTtcblxuXHRcdH1cblx0fVxuXG5cdHNlbGYuaW52b2tlUHJlSG9va3MoKTtcblxuXHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdGlmICggYmxvY2tFcnJvcnMgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHRcdH0gY2F0Y2ggKCBlcnJvciApIHtcblxuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBDb25zdHJ1Y3RvciBJbnZvY2F0aW9uIEl0c2VsZlxuXHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gYW5zd2VyO1xuXG5cdH1cblxuXG5cdGlmICggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIFByb21pc2UgKSB7XG5cblx0XHRjb25zdCB3YWl0ZXIgPSBzZWxmLm1ha2VBd2FpdGVyKCB0eXBlICk7XG5cblx0XHRvZHAoIHdhaXRlciwgU3ltYm9sQ29uc3RydWN0b3JOYW1lLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gVHlwZU5hbWU7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHdhaXRlcjtcblxuXHR9XG5cblx0c2VsZi5wb3N0UHJvY2Vzc2luZyggdHlwZSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59IGFzIF9JbnRlcm5hbF9UQ188dHlwZW9mIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZT47XG5cbk9iamVjdC5hc3NpZ24oIEluc3RhbmNlQ3JlYXRvci5wcm90b3R5cGUsIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSApO1xuIl19
@@ -11,4 +11,4 @@ const makeInstanceModificator = (self) => {
11
11
  return result;
12
12
  };
13
13
  exports.makeInstanceModificator = makeInstanceModificator;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLG1DQUFvQztBQUU3QixNQUFNLHVCQUF1QixHQUFHLENBQUUsSUFBUyxFQUFHLEVBQUU7SUFFdEQsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLEtBQUssR0FDTCxHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FDMUMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxLQUFLLENBQUUsRUFDMUIsQ0FBRSxlQUF3QixFQUFHLEVBQUU7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsaUJBQVMsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUNELENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQXBCVyxRQUFBLHVCQUF1QiwyQkFvQmxDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBfYWRkUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuZXhwb3J0IGNvbnN0IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yID0gKCBzZWxmOiBhbnkgKSA9PiB7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdHByb3RvLFxuXHR9ID0gc2VsZjtcblxuXHRjb25zdCByZXN1bHQgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5jYWxsKFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdE9iamVjdC5hc3NpZ24oIHt9LCBwcm90byApLFxuXHRcdCggX19wcm90b19wcm90b19fOiB1bmtub3duICkgPT4ge1xuXHRcdFx0c2VsZi5fX3Byb3RvX3Byb3RvX18gPSBfX3Byb3RvX3Byb3RvX187XG5cdFx0XHRfYWRkUHJvcHMuY2FsbCggc2VsZiApO1xuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQU1iLG1DQUFvQztBQUU3QixNQUFNLHVCQUF1QixHQUFHLENBQUUsSUFBUyxFQUFHLEVBQUU7SUFFdEQsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLEtBQUssR0FDTCxHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FDMUMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxLQUFLLENBQUUsRUFDMUIsQ0FBRSxlQUF3QixFQUFHLEVBQUU7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsaUJBQVMsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUNELENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQXBCVyxRQUFBLHVCQUF1QiwyQkFvQmxDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vLyBTdGVwIDQgb2YgY29uc3RydWN0aW9uIHBpcGVsaW5lOiBicmlkZ2UgYmV0d2VlbiBJbnN0YW5jZUNyZWF0b3IgYW5kIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLlxuLy8gQ2FsbGVkIGZyb20gSW5zdGFuY2VDcmVhdG9yIGFmdGVyIHByZS1ob29rcy4gRGVsZWdhdGVzIHRvIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yXG4vLyAoc2VlIGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IudHMpIHRvIHdpcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBhbmQgYXR0YWNoIHByb3BzLlxuXG5pbXBvcnQgeyBfYWRkUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuZXhwb3J0IGNvbnN0IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yID0gKCBzZWxmOiBhbnkgKSA9PiB7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdHByb3RvLFxuXHR9ID0gc2VsZjtcblxuXHRjb25zdCByZXN1bHQgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5jYWxsKFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdE9iamVjdC5hc3NpZ24oIHt9LCBwcm90byApLFxuXHRcdCggX19wcm90b19wcm90b19fOiB1bmtub3duICkgPT4ge1xuXHRcdFx0c2VsZi5fX3Byb3RvX3Byb3RvX18gPSBfX3Byb3RvX3Byb3RvX187XG5cdFx0XHRfYWRkUHJvcHMuY2FsbCggc2VsZiApO1xuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
@@ -1,7 +1,8 @@
1
- import { ConstructorFunction } from '../../types';
1
+ import { _Internal_TC_ } from '../../types';
2
+ export declare const Mnemosyne: _Internal_TC_<object>;
2
3
  declare const _default: {
3
4
  readonly createMnemosyne: (Uranus: unknown, exposeInstanceMethods: boolean) => object;
4
- readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) => ConstructorFunction<{
5
+ readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) => _Internal_TC_<{
5
6
  getExistentAsyncStack: (existentInstance: import("../utils").asyncStack) => unknown;
6
7
  postProcessing: (this: any, continuationOf: any) => void;
7
8
  makeAwaiter: (this: any, type: any, then?: import("./InstanceCreator").ThenSpec) => any;