mnemonica 0.9.99785 → 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
@@ -209,4 +209,4 @@ exports.InstanceCreator = function (type, existentInstance, args, chained) {
209
209
  return self.inheritedInstance;
210
210
  };
211
211
  Object.assign(exports.InstanceCreator.prototype, InstanceCreatorPrototype);
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFJYiwrQ0FFeUI7QUFFekIsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCwwQkFBMEIsR0FDMUIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUsbUNBQXFEO0FBRXJELCtEQUFnRTtBQUNoRSwrQ0FBNEM7QUFJNUMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsTUFBTSxFQUNMLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFDTCxVQUFVLEdBQ1YsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLFFBQVEsR0FBRztRQUNoQixJQUFJO1FBQ0osZ0JBQWdCO1FBQ2hCLElBQUk7UUFDSixtQkFBbUI7S0FDbkIsQ0FBQztJQUVGLFVBQVUsQ0FBQyxVQUFVLENBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBRSxDQUFDO0lBRWpELElBQUksQ0FBQyxVQUFVLENBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBRSxDQUFDO0FBRTVDLENBQUMsQ0FBQztBQUlGLE1BQU0sZUFBZSxHQUFHO0lBR3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztJQUNyQixNQUFNLEVBQ0wsaUJBQWlCLEdBQ2pCLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBUyxFQUFDLGlCQUFpQixDQUFVLENBQUM7SUFFcEQsTUFB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QWlCLEdBQUcsTUFBTSxDQUFDO1FBRWpDLENBQUM7UUFBQyxPQUFRLEtBQUssRUFBRyxDQUFDO1lBRWxCLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV0QyxDQUFDO0lBRUYsQ0FBQztTQUFNLENBQUM7UUFHUCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBRSxHQUFHLElBQUksQ0FBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7SUFFakMsQ0FBQztJQUdELElBQUssSUFBSSxDQUFDLGlCQUFpQixZQUFZLE9BQU8sRUFBRyxDQUFDO1FBRWpELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFFLENBQUM7UUFFeEMsR0FBRyxDQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRTtZQUNuQyxHQUFHO2dCQUNGLE9BQU8sUUFBUSxDQUFDO1lBQ2pCLENBQUM7U0FDRCxDQUFFLENBQUM7UUFFSixPQUFPLE1BQU0sQ0FBQztJQUVmLENBQUM7SUFFRCxJQUFJLENBQUMsY0FBYyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBRTVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBRS9CLENBQW1ELENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sQ0FBRSx1QkFBZSxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsQ0FBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiICBcbid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgX0ludGVybmFsX1RDXyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHtcblx0Y29uc3RhbnRzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbn0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRtYWtlRXJyb3JNb2RpZmljYXRvclR5cGUsXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90aHJvd01vZGlmaWNhdGlvbkVycm9yJztcblxuaW1wb3J0IHsgX2dldFByb3BzLCBfc2V0U2VsZiwgUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuaW1wb3J0IHsgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgfSBmcm9tICcuL0luc3RhbmNlTW9kaWZpY2F0b3InO1xuaW1wb3J0IHsgcGFyZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyZW50JztcblxuLy8gaW1wb3J0IHsgTW5lbW9zeW5lIH0gZnJvbSAnLi9NbmVtb3N5bmUnO1xuICBcbmNvbnN0IGludm9rZVByZUhvb2tzID0gZnVuY3Rpb24gKCB0aGlzOiBhbnkgKSB7XG5cblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fSA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdGNvbGxlY3Rpb24sXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fTtcblxuXHRjb2xsZWN0aW9uLmludm9rZUhvb2soICdwcmVDcmVhdGlvbicsIGhvb2tEYXRhICk7XG5cblx0dHlwZS5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG59O1xuXG5cbiAgXG5jb25zdCBpbnZva2VQb3N0SG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSApIHtcblxuXHQgXG5cdGNvbnN0IGNyZWF0b3IgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdH0gPSBjcmVhdG9yO1xuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRjb25zdCB7XG5cdFx0X190eXBlX186IHR5cGUsXG5cdFx0X19wYXJlbnRfXzogZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRfX2FyZ3NfXzogYXJncyxcblx0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rVHlwZSA9IGluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgP1xuXHRcdCdjcmVhdGlvbkVycm9yJyA6ICdwb3N0Q3JlYXRpb24nO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRpbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNyZWF0b3Jcblx0fTtcblxuXHRyZXR1cm4ge1xuXG5cdFx0dHlwZSA6IHR5cGUuaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0XHRjb2xsZWN0aW9uIDogY29sbGVjdGlvbi5pbnZva2VIb29rKCBob29rVHlwZSwgaG9va0RhdGEgKSxcblxuXHR9O1xuXG59O1xuXG5cbiAgXG5jb25zdCBwb3N0UHJvY2Vzc2luZyA9IGZ1bmN0aW9uICggdGhpczogYW55LCBjb250aW51YXRpb25PZjogYW55ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0c3RhY2ssXG5cdFx0dHlwZToge1xuXHRcdFx0aXNTdWJUeXBlLFxuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdHN0cmljdENoYWluLFxuXHRcdFx0XHRibG9ja0Vycm9yc1xuXHRcdFx0fVxuXHRcdH1cblx0fSA9IHNlbGY7XG5cblx0aWYgKCAhc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3JbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICkge1xuXHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIG1uZW1vbmljYSBpbnN0YW5jZSc7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHR9XG5cblx0aWYgKCBjb250aW51YXRpb25PZiAmJiAhKCBzZWxmLmluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgY29udGludWF0aW9uT2YgKSApIHtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRjb25zdCBpY24gPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtjb250aW51YXRpb25PZi5UeXBlTmFtZX0gYnV0IGdvdCAke2ljbn1gO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHQvLyB0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4obXNnLCBzZWxmLnN0YWNrKTtcblx0fVxuXG5cdGlmIChpc1N1YlR5cGUgJiYgc3RyaWN0Q2hhaW4pIHtcblx0XHRcblx0XHRpZiAoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICYmICFibG9ja0Vycm9ycykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByZXYgPSBwYXJlbnQoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgYW55O1xuXHRcdGlmICghcHJldiB8fCAocHJldiAmJiAhcHJldi5jb25zdHJ1Y3RvcikpIHtcblx0XHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIHNvbWUgaW5zdGFuY2UnO1xuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnROYW1lID0gcHJldi5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IHBhcmVudFR5cGVOYW1lID0gc2VsZi50eXBlLnBhcmVudFR5cGUuVHlwZU5hbWU7XG5cdFx0aWYgKHBhcmVudE5hbWUgIT09IHBhcmVudFR5cGVOYW1lKSB7XG5cdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3BhcmVudFR5cGVOYW1lfSBidXQgbWFkZSBvbiAke3BhcmVudE5hbWV9YDtcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHR9XG5cblx0fVxuXG5cdF9zZXRTZWxmKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UpO1xuXG5cdHNlbGYuaW52b2tlUG9zdEhvb2tzKCk7XG5cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlblNwZWMge1xuXHRzdWJ0eXBlOiBvYmplY3Q7XG5cdGFyZ3M6IHVua25vd25bXTtcblx0bmFtZT86IHN0cmluZztcbn1cblxuICBcbmNvbnN0IGFkZFRoZW4gPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgdGhlbjogVGhlblNwZWMgKSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZVxuXHRcdC50aGVuKCAoKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID1cblx0XHRcdFx0bmV3IEluc3RhbmNlQ3JlYXRvcihcblx0XHRcdFx0XHR0aGVuLnN1YnR5cGUsXG5cdFx0XHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRcdFx0XHR0aGVuLmFyZ3MsXG5cdFx0XHRcdFx0Ly8gd2FzIGNoYWluZWQgOlxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQvLyBzZWxmLmV4aXN0ZW50SW5zdGFuY2Vcblx0XHRcdFx0KSBhcyB1bmtub3duIGFzIFByb21pc2U8dW5rbm93bj47XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9ICk7XG5cbn07XG5cbmNvbnN0IG1ha2VBd2FpdGVyID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHR5cGU6IGFueSwgdGhlbj86IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCBpbnN0YW5jZTogdW5rbm93biApID0+IHtcblxuXHRcdFx0aWYgKCB0eXBlb2YgaW5zdGFuY2UgIT09ICdvYmplY3QnICkge1xuXHRcdFx0XHRpZiAoIHNlbGYuY29uZmlnLmF3YWl0UmV0dXJuICkge1xuXHRcdFx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7dHlwZS5UeXBlTmFtZX06IHNlZW1zIGFzeW5jICR7dHlwZS5UeXBlTmFtZX0gaGFzIG5vIHJldHVybiBzdGF0ZW1lbnRgO1xuXHRcdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzZWxmLnN0YWNrICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggISggaW5zdGFuY2UgaW5zdGFuY2VvZiBzZWxmLnR5cGUgKSApIHtcblx0XHRcdFx0IFxuXHRcdFx0XHRjb25zdCBpY24gPSAoaW5zdGFuY2UgYXMgYW55KS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHNlbGYuc3RhY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXG5cdFx0XHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhzZWxmLmluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRcdFx0IFxuXHRcdFx0aWYgKCBwcm9wcy5fX3NlbGZfXyAhPT0gKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgdW5rbm93bikgKSB7XG5cdFx0XHRcdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cblx0XHR9IClcblx0XHQuY2F0Y2goICggZXJyb3I6IEVycm9yICkgPT4ge1xuXHRcdFx0aWYgKCBzZWxmLmNvbmZpZy5ibG9ja0Vycm9ycyApIHtcblx0XHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdGlmICggdGhlbiApIHtcblx0XHRzZWxmLmFkZFRoZW4oIHRoZW4gKTtcblx0fVxuXG5cdHR5cGUuc3VidHlwZXMuZm9yRWFjaCggKCBzdWJ0eXBlOiBvYmplY3QsIG5hbWU6IHN0cmluZyApID0+IHtcblx0XHQgXG5cdFx0KHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgYW55KVsgbmFtZSBdID0gKCAuLi5hcmdzOiB1bmtub3duW10gKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5tYWtlQXdhaXRlciggc3VidHlwZSwge1xuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRzdWJ0eXBlLFxuXHRcdFx0XHRhcmdzLFxuXHRcdFx0fSApO1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fTtcblx0fSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59O1xuXG5jb25zdCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgPSB7XG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0cG9zdFByb2Nlc3NpbmcsXG5cdG1ha2VBd2FpdGVyLFxuXHRhZGRUaGVuLFxuXHRpbnZva2VQcmVIb29rcyxcblx0aW52b2tlUG9zdEhvb2tzLFxuXHR0aHJvd01vZGlmaWNhdGlvbkVycm9yXG59O1xuXG4gIFxuZXhwb3J0IGNvbnN0IEluc3RhbmNlQ3JlYXRvciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIGV4aXN0ZW50SW5zdGFuY2U6IHVua25vd24sIGFyZ3M6IHVua25vd25bXSwgY2hhaW5lZDogYm9vbGVhbiApIHtcblxuXHRjb25zdCB7XG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRwcm90byxcblx0XHRjb25maWcsXG5cdFx0VHlwZU5hbWVcblx0fSA9IHR5cGU7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGJsb2NrRXJyb3JzLFxuXHRcdHN1Ym1pdFN0YWNrXG5cdH0gPSBjb25maWc7XG5cblx0IFxuXHRjb25zdCBtYyA9IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yKCk7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCBNb2RpZmljYXRvclR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyKCk7XG5cblx0T2JqZWN0LmFzc2lnbiggc2VsZiwge1xuXG5cdFx0dHlwZSxcblx0XHRUeXBlTmFtZSxcblxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cblx0XHRnZXQgYXJncyAoKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9LFxuXG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgOiBtYyxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cblx0XHRjb25maWcsXG5cblx0XHRwcm90b1xuXG5cdH0gKTtcblxuXHRpZiAoIHN1Ym1pdFN0YWNrIHx8IGNoYWluZWQgKSB7XG5cdFx0Y29uc3Qgc3RhY2tBZGRpdGlvbjogc3RyaW5nW10gPSBjaGFpbmVkID8gc2VsZi5nZXRFeGlzdGVudEFzeW5jU3RhY2soIGV4aXN0ZW50SW5zdGFuY2UgKSA6IFtdO1xuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cdFx0aWYgKCBzdWJtaXRTdGFjayApIHtcblx0XHRcdGdldFN0YWNrLmNhbGwoIHNlbGYsIHRpdGxlLCBzdGFja0FkZGl0aW9uICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlbGYuc3RhY2sgPSB0aXRsZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0aWYgKCBleGlzdGVudEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgKSB7XG5cblx0XHRcdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdFx0XHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdFx0XHRjb25zdCBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2UgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cblx0XHRcdHRocm93IGJsb2NrRXJyb3JzRXJyb3JJbnN0YW5jZTtcblxuXHRcdH1cblx0fVxuXG5cdHNlbGYuaW52b2tlUHJlSG9va3MoKTtcblxuXHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdGlmICggYmxvY2tFcnJvcnMgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHRcdH0gY2F0Y2ggKCBlcnJvciApIHtcblxuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBDb25zdHJ1Y3RvciBJbnZvY2F0aW9uIEl0c2VsZlxuXHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gYW5zd2VyO1xuXG5cdH1cblxuXG5cdGlmICggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIFByb21pc2UgKSB7XG5cblx0XHRjb25zdCB3YWl0ZXIgPSBzZWxmLm1ha2VBd2FpdGVyKCB0eXBlICk7XG5cblx0XHRvZHAoIHdhaXRlciwgU3ltYm9sQ29uc3RydWN0b3JOYW1lLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gVHlwZU5hbWU7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHdhaXRlcjtcblxuXHR9XG5cblx0c2VsZi5wb3N0UHJvY2Vzc2luZyggdHlwZSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59IGFzIF9JbnRlcm5hbF9UQ188dHlwZW9mIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZT47XG5cbk9iamVjdC5hc3NpZ24oIEluc3RhbmNlQ3JlYXRvci5wcm90b3R5cGUsIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSApO1xuIl19
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==
@@ -151,4 +151,4 @@ module.exports = {
151
151
  getProps: exports.getProps,
152
152
  setProps: exports.setProps
153
153
  };
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsK0NBQTRDO0FBRzVDLE1BQU0sRUFDTCxHQUFHLEdBQ0gsR0FBRyxxQkFBUyxDQUFDO0FBRWQsTUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUVoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUMzQixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsVUFBVTtJQUNWLFlBQVk7SUFDWixXQUFXO0lBQ1gsYUFBYTtJQUNiLGVBQWU7SUFDZixVQUFVO0NBQ1YsQ0FBQyxDQUFDO0FBRUksTUFBTSxTQUFTLEdBQUc7SUFHeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWxCLE1BQU0sRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixNQUFNLEVBQUUsRUFDUCxXQUFXLEVBQ1gsRUFDRCxlQUFlLEVBQUUsS0FBSyxFQUN0QixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFDTCxVQUFVLEVBQ1YsUUFBUSxHQUNSLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxHQUFHLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzdCLEdBQUc7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7S0FDRCxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtRQUN0QixHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtRQUM1QixHQUFHO1lBQ0YsT0FBTyxV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LENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFFLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsUUFBUSxZQWdCbkI7QUFLRixNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2hCLFNBQVMsRUFBVCxpQkFBUztJQUNULFNBQVMsRUFBVCxpQkFBUztJQUNULFFBQVEsRUFBUixnQkFBUTtJQUNSLFFBQVEsRUFBUixnQkFBUTtJQUNSLFFBQVEsRUFBUixnQkFBUTtDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25EZWYsIFR5cGVEZWYsIFByb3BzIGFzIFByb3BzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuY29uc3Qge1xuXHRvZHAsXG59ID0gY29uc3RhbnRzO1xuXG5jb25zdCBfX3Byb3BzX18gPSBuZXcgV2Vha01hcCgpO1xuXG5jb25zdCBuYXRpdmVQcm9wcyA9IG5ldyBTZXQoW1xuXHQnX19wcm90b19wcm90b19fJyxcblx0J19fYXJnc19fJyxcblx0J19fY29sbGVjdGlvbl9fJyxcblx0J19fc3VidHlwZXNfXycsXG5cdCdfX3R5cGVfXycsXG5cdCdfX3BhcmVudF9fJyxcblx0J19fc3RhY2tfXycsXG5cdCdfX2NyZWF0b3JfXycsXG5cdCdfX3RpbWVzdGFtcF9fJyxcblx0J19fc2VsZl9fJyxcbl0pO1xuXG5leHBvcnQgY29uc3QgX2FkZFByb3BzID0gZnVuY3Rpb24gKHRoaXM6IGFueSk6IGFueSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCB7XG5cdFx0dHlwZSxcblx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdGFyZ3MsXG5cdFx0Y29uZmlnOiB7XG5cdFx0XHRzdWJtaXRTdGFja1xuXHRcdH0sXG5cdFx0X19wcm90b19wcm90b19fOiBwcm90b1xuXHR9ID0gc2VsZjtcblxuXHRjb25zdCB7XG5cdFx0Y29sbGVjdGlvbixcblx0XHRzdWJ0eXBlcyxcblx0fSA9IHR5cGU7XG5cblx0Y29uc3QgdmFsdWUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5cdG9kcCh2YWx1ZSwgJ19fcHJvdG9fcHJvdG9fXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHByb3RvO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19hcmdzX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBhcmdzO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19jb2xsZWN0aW9uX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19zdWJ0eXBlc19fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gc3VidHlwZXM7XG5cdFx0fVxuXHR9KTtcblxuXHRvZHAodmFsdWUsICdfX3R5cGVfXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHR5cGU7XG5cdFx0fVxuXHR9KTtcblxuXHRvZHAodmFsdWUsICdfX3BhcmVudF9fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gZXhpc3RlbnRJbnN0YW5jZTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChzdWJtaXRTdGFjaykge1xuXHRcdGNvbnN0IHsgc3RhY2sgfSA9IHRoaXM7XG5cdFx0b2RwKHZhbHVlLCAnX19zdGFja19fJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIHN0YWNrLmpvaW4oJ1xcbicpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0b2RwKHZhbHVlLCAnX19jcmVhdG9yX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzZWxmO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0b2RwKHZhbHVlLCAnX190aW1lc3RhbXBfXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHRpbWVzdGFtcDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIF9fcHJvcHNfXy5zZXQoc2VsZiwgdmFsdWUpO1xuXHRfX3Byb3BzX18uc2V0KHByb3RvLCB2YWx1ZSk7XG5cbn07XG5cbmNvbnN0IGlzT2JqZWN0TmF0dXJlID0gKGluc3RhbmNlOiB1bmtub3duKSA9PiB7XG5cdGlmIChpbnN0YW5jZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIHRydWU7XG5cdGlmICh0eXBlb2YgaW5zdGFuY2UgPT09ICdvYmplY3QnICYmIGluc3RhbmNlICE9IG51bGwpIHJldHVybiB0cnVlO1xuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgX2dldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIGJhc2U/OiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAoIWlzT2JqZWN0TmF0dXJlKGluc3RhbmNlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBvYmplY3Q7XG5cdGlmIChiYXNlICE9PSB1bmRlZmluZWQgJiYgaXNPYmplY3ROYXR1cmUoYmFzZSkgJiYgaXNPYmplY3ROYXR1cmUocHJvdG8pICYmIChiYXNlLmNvbnN0cnVjdG9yICE9PSBwcm90by5jb25zdHJ1Y3RvcikpIHtcblx0XHQvLyBoZXJlIHdlIGdvdCByaWQgb2YgdW5uZWNlc3NhcnkgY2hhaW4gZGl2ZVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Y29uc3QgcmVzdWx0ID0gX19wcm9wc19fLmdldChwcm90byk7XG5cdGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIHNvIHdlIGp1bXBpbmcgZGVlcGVyIGhlcmVcblx0XHRpZiAoYmFzZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRiYXNlID0gaW5zdGFuY2U7XG5cdFx0fVxuXHRcdHJldHVybiBfZ2V0UHJvcHMocHJvdG8sIGJhc2UpO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgX3NldFNlbGYgPSAoaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQgPT4ge1xuXHQvLyBjb25zdCBwcm9wcyA9IF9fcHJvcHNfXy5nZXQoaW5zdGFuY2UpO1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ19fc2VsZl9fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0fVxuXHR9KTtcblx0X19wcm9wc19fLnNldChpbnN0YW5jZSwgcHJvcHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IF9hZGRpdGlvbnMgPSBfX3Byb3BzX18uZ2V0KHByb3BzKTtcblx0XHRpZiAoX2FkZGl0aW9ucyBpbnN0YW5jZW9mIE9iamVjdCkge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm9wcyk7XG5cdFx0XHRjb25zdCBhZGRpdGlvbnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhfYWRkaXRpb25zKTtcblx0XHRcdGNvbnN0IGFuc3dlciA9IHt9O1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYW5zd2VyLCBhZGRpdGlvbnMpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYW5zd2VyLCBkZXNjcmlwdG9ycyk7XG5cdFx0XHRyZXR1cm4gYW5zd2VyIGFzIFByb3BzVHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHByb3BzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIF92YWx1ZXM6IG9iamVjdCk6IHN0cmluZ1tdIHwgZmFsc2UgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IHZhbHVlcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKF92YWx1ZXMpO1xuXHRcdGNvbnN0IHdyaXR0ZW46IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgYWxsb3dlZCA9IHt9O1xuXHRcdE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZm9yRWFjaCgoWyBuYW1lLCB2YWx1ZSBdKSA9PiB7XG5cdFx0XHRpZiAoIW5hdGl2ZVByb3BzLmhhcyhuYW1lKSkge1xuXHRcdFx0XHR3cml0dGVuLnB1c2gobmFtZSk7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhbGxvd2VkLCBuYW1lLCB2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0X19wcm9wc19fLnNldChwcm9wcywgYWxsb3dlZCk7XG5cdFx0cmV0dXJuIHdyaXR0ZW47XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuLy8gUmUtZXhwb3J0IHR5cGVzIGZyb20gY2VudHJhbGl6ZWQgdHlwZXNcbmV4cG9ydCB0eXBlIHsgQ29sbGVjdGlvbkRlZiwgVHlwZURlZiwgUHJvcHNUeXBlIGFzIFByb3BzIH07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRfYWRkUHJvcHMsXG5cdF9nZXRQcm9wcyxcblx0X3NldFNlbGYsXG5cdGdldFByb3BzLFxuXHRzZXRQcm9wc1xufTtcbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsK0NBQTRDO0FBRzVDLE1BQU0sRUFDTCxHQUFHLEdBQ0gsR0FBRyxxQkFBUyxDQUFDO0FBTWQsTUFBTSxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUVoQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUMzQixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsVUFBVTtJQUNWLFlBQVk7SUFDWixXQUFXO0lBQ1gsYUFBYTtJQUNiLGVBQWU7SUFDZixVQUFVO0NBQ1YsQ0FBQyxDQUFDO0FBRUksTUFBTSxTQUFTLEdBQUc7SUFHeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBRWxCLE1BQU0sRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixNQUFNLEVBQUUsRUFDUCxXQUFXLEVBQ1gsRUFDRCxlQUFlLEVBQUUsS0FBSyxFQUN0QixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFDTCxVQUFVLEVBQ1YsUUFBUSxHQUNSLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxHQUFHLENBQUMsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzdCLEdBQUc7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7S0FDRCxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtRQUN0QixHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtRQUM1QixHQUFHO1lBQ0YsT0FBTyxVQUFVLENBQUM7UUFDbkIsQ0FBQztLQUNELENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO1FBQzFCLEdBQUc7WUFDRixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7UUFDdEIsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUNELENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO1FBQ3hCLEdBQUc7WUFDRixPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUM7S0FDRCxDQUFDLENBQUM7SUFFSCxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDdkIsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDdkIsR0FBRztnQkFDRixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtRQUN6QixHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBRUgsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO1FBQzNCLEdBQUc7WUFDRixPQUFPLFNBQVMsQ0FBQztRQUNsQixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBR0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFN0IsQ0FBQyxDQUFDO0FBbkZXLFFBQUEsU0FBUyxhQW1GcEI7QUFFRixNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlCLEVBQUUsRUFBRTtJQUM1QyxJQUFJLFFBQVEsWUFBWSxNQUFNO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUMsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRSxPQUFPLEtBQUssQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVLLE1BQU0sU0FBUyxHQUFHLENBQUMsUUFBZ0IsRUFBRSxJQUFhLEVBQXlCLEVBQUU7SUFDbkYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBVyxDQUFDO0lBQ3pELElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUVySCxPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUUxQixJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLElBQUEsaUJBQVMsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsU0FBUyxhQWdCcEI7QUFFSyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQVEsRUFBRTtJQUVsRCxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQ3hDLEdBQUc7WUFDRixPQUFPLFFBQVEsQ0FBQztRQUNqQixDQUFDO0tBQ0QsQ0FBQyxDQUFDO0lBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBVFcsUUFBQSxRQUFRLFlBU25CO0FBRUssTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFnQixFQUF5QixFQUFFO0lBQ25FLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLFVBQVUsWUFBWSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDN0MsT0FBTyxNQUFtQixDQUFDO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0YsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQWhCVyxRQUFBLFFBQVEsWUFnQm5CO0FBRUssTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE9BQWUsRUFBb0IsRUFBRTtJQUMvRSxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxJQUFJLEVBQUUsS0FBSyxDQUFFLEVBQUUsRUFBRTtZQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsUUFBUSxZQWdCbkI7QUFLRixNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2hCLFNBQVMsRUFBVCxpQkFBUztJQUNULFNBQVMsRUFBVCxpQkFBUztJQUNULFFBQVEsRUFBUixnQkFBUTtJQUNSLFFBQVEsRUFBUixnQkFBUTtJQUNSLFFBQVEsRUFBUixnQkFBUTtDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25EZWYsIFR5cGVEZWYsIFByb3BzIGFzIFByb3BzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuY29uc3Qge1xuXHRvZHAsXG59ID0gY29uc3RhbnRzO1xuXG4vLyBFeHRlcm5hbCBwcm9wcyBzdG9yYWdlIHZpYSBXZWFrTWFwIGtlZXBzIGluc3RhbmNlIGVudW1lcmF0aW9uIGNsZWFuLlxuLy8gSW5zdGFuY2UgbWV0YWRhdGEgKF9fdHlwZV9fLCBfX3BhcmVudF9fLCBfX2FyZ3NfXywgZXRjLikgaXMgc3RvcmVkXG4vLyBhZ2FpbnN0IHRoZSBwcm90b3R5cGUgb2JqZWN0LCBub3QgdGhlIGluc3RhbmNlIGl0c2VsZiwgc28gaXQgbmV2ZXJcbi8vIHNob3dzIHVwIGluIGZvci4uLmluLCBPYmplY3Qua2V5cywgb3IgSlNPTi5zdHJpbmdpZnkuXG5jb25zdCBfX3Byb3BzX18gPSBuZXcgV2Vha01hcCgpO1xuXG5jb25zdCBuYXRpdmVQcm9wcyA9IG5ldyBTZXQoW1xuXHQnX19wcm90b19wcm90b19fJyxcblx0J19fYXJnc19fJyxcblx0J19fY29sbGVjdGlvbl9fJyxcblx0J19fc3VidHlwZXNfXycsXG5cdCdfX3R5cGVfXycsXG5cdCdfX3BhcmVudF9fJyxcblx0J19fc3RhY2tfXycsXG5cdCdfX2NyZWF0b3JfXycsXG5cdCdfX3RpbWVzdGFtcF9fJyxcblx0J19fc2VsZl9fJyxcbl0pO1xuXG5leHBvcnQgY29uc3QgX2FkZFByb3BzID0gZnVuY3Rpb24gKHRoaXM6IGFueSk6IGFueSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCB7XG5cdFx0dHlwZSxcblx0XHRleGlzdGVudEluc3RhbmNlLFxuXHRcdGFyZ3MsXG5cdFx0Y29uZmlnOiB7XG5cdFx0XHRzdWJtaXRTdGFja1xuXHRcdH0sXG5cdFx0X19wcm90b19wcm90b19fOiBwcm90b1xuXHR9ID0gc2VsZjtcblxuXHRjb25zdCB7XG5cdFx0Y29sbGVjdGlvbixcblx0XHRzdWJ0eXBlcyxcblx0fSA9IHR5cGU7XG5cblx0Y29uc3QgdmFsdWUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5cdG9kcCh2YWx1ZSwgJ19fcHJvdG9fcHJvdG9fXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHByb3RvO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19hcmdzX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBhcmdzO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19jb2xsZWN0aW9uX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBjb2xsZWN0aW9uO1xuXHRcdH1cblx0fSk7XG5cblx0b2RwKHZhbHVlLCAnX19zdWJ0eXBlc19fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gc3VidHlwZXM7XG5cdFx0fVxuXHR9KTtcblxuXHRvZHAodmFsdWUsICdfX3R5cGVfXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHR5cGU7XG5cdFx0fVxuXHR9KTtcblxuXHRvZHAodmFsdWUsICdfX3BhcmVudF9fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gZXhpc3RlbnRJbnN0YW5jZTtcblx0XHR9XG5cdH0pO1xuXG5cdGlmIChzdWJtaXRTdGFjaykge1xuXHRcdGNvbnN0IHsgc3RhY2sgfSA9IHRoaXM7XG5cdFx0b2RwKHZhbHVlLCAnX19zdGFja19fJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIHN0YWNrLmpvaW4oJ1xcbicpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0b2RwKHZhbHVlLCAnX19jcmVhdG9yX18nLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzZWxmO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblx0b2RwKHZhbHVlLCAnX190aW1lc3RhbXBfXycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHRpbWVzdGFtcDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIF9fcHJvcHNfXy5zZXQoc2VsZiwgdmFsdWUpO1xuXHRfX3Byb3BzX18uc2V0KHByb3RvLCB2YWx1ZSk7XG5cbn07XG5cbmNvbnN0IGlzT2JqZWN0TmF0dXJlID0gKGluc3RhbmNlOiB1bmtub3duKSA9PiB7XG5cdGlmIChpbnN0YW5jZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIHRydWU7XG5cdGlmICh0eXBlb2YgaW5zdGFuY2UgPT09ICdvYmplY3QnICYmIGluc3RhbmNlICE9IG51bGwpIHJldHVybiB0cnVlO1xuXHRyZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgX2dldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIGJhc2U/OiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRpZiAoIWlzT2JqZWN0TmF0dXJlKGluc3RhbmNlKSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKSBhcyBvYmplY3Q7XG5cdGlmIChiYXNlICE9PSB1bmRlZmluZWQgJiYgaXNPYmplY3ROYXR1cmUoYmFzZSkgJiYgaXNPYmplY3ROYXR1cmUocHJvdG8pICYmIChiYXNlLmNvbnN0cnVjdG9yICE9PSBwcm90by5jb25zdHJ1Y3RvcikpIHtcblx0XHQvLyBoZXJlIHdlIGdvdCByaWQgb2YgdW5uZWNlc3NhcnkgY2hhaW4gZGl2ZVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Y29uc3QgcmVzdWx0ID0gX19wcm9wc19fLmdldChwcm90byk7XG5cdGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIHNvIHdlIGp1bXBpbmcgZGVlcGVyIGhlcmVcblx0XHRpZiAoYmFzZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRiYXNlID0gaW5zdGFuY2U7XG5cdFx0fVxuXHRcdHJldHVybiBfZ2V0UHJvcHMocHJvdG8sIGJhc2UpO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgX3NldFNlbGYgPSAoaW5zdGFuY2U6IG9iamVjdCk6IHZvaWQgPT4ge1xuXHQvLyBjb25zdCBwcm9wcyA9IF9fcHJvcHNfXy5nZXQoaW5zdGFuY2UpO1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ19fc2VsZl9fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0fVxuXHR9KTtcblx0X19wcm9wc19fLnNldChpbnN0YW5jZSwgcHJvcHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QpOiBQcm9wc1R5cGUgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IF9hZGRpdGlvbnMgPSBfX3Byb3BzX18uZ2V0KHByb3BzKTtcblx0XHRpZiAoX2FkZGl0aW9ucyBpbnN0YW5jZW9mIE9iamVjdCkge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvcnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm9wcyk7XG5cdFx0XHRjb25zdCBhZGRpdGlvbnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhfYWRkaXRpb25zKTtcblx0XHRcdGNvbnN0IGFuc3dlciA9IHt9O1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYW5zd2VyLCBhZGRpdGlvbnMpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYW5zd2VyLCBkZXNjcmlwdG9ycyk7XG5cdFx0XHRyZXR1cm4gYW5zd2VyIGFzIFByb3BzVHlwZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHByb3BzO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFByb3BzID0gKGluc3RhbmNlOiBvYmplY3QsIF92YWx1ZXM6IG9iamVjdCk6IHN0cmluZ1tdIHwgZmFsc2UgPT4ge1xuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbnN0YW5jZSk7XG5cdGlmIChwcm9wcykge1xuXHRcdGNvbnN0IHZhbHVlcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKF92YWx1ZXMpO1xuXHRcdGNvbnN0IHdyaXR0ZW46IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgYWxsb3dlZCA9IHt9O1xuXHRcdE9iamVjdC5lbnRyaWVzKHZhbHVlcykuZm9yRWFjaCgoWyBuYW1lLCB2YWx1ZSBdKSA9PiB7XG5cdFx0XHRpZiAoIW5hdGl2ZVByb3BzLmhhcyhuYW1lKSkge1xuXHRcdFx0XHR3cml0dGVuLnB1c2gobmFtZSk7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhbGxvd2VkLCBuYW1lLCB2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0X19wcm9wc19fLnNldChwcm9wcywgYWxsb3dlZCk7XG5cdFx0cmV0dXJuIHdyaXR0ZW47XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuLy8gUmUtZXhwb3J0IHR5cGVzIGZyb20gY2VudHJhbGl6ZWQgdHlwZXNcbmV4cG9ydCB0eXBlIHsgQ29sbGVjdGlvbkRlZiwgVHlwZURlZiwgUHJvcHNUeXBlIGFzIFByb3BzIH07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuXHRfYWRkUHJvcHMsXG5cdF9nZXRQcm9wcyxcblx0X3NldFNlbGYsXG5cdGdldFByb3BzLFxuXHRzZXRQcm9wc1xufTtcbiJdfQ==
@@ -23,4 +23,4 @@ function default_1() {
23
23
  };
24
24
  return CreateInstanceModificator;
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsNEJBNkNDO0FBN0NEO0lBRUMsTUFBTSx5QkFBeUIsR0FBRyxVQUVqQyxlQUFpQyxFQUNqQyx3QkFBc0QsRUFDdEQsU0FBMkI7UUFJM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFHOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBSXJCLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtZQUMvQyxHQUFHO2dCQUNGLE9BQU8sZUFBZSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxVQUFVLEVBQUcsS0FBSztTQUNsQixDQUFDLENBQUM7UUFJSCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsV0FBVyxHQUFHO1lBRW5CLEtBQUssRUFBRyxlQUFlO1NBQ3ZCLENBQUM7UUFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUkxRCxPQUFPLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFN0QsT0FBTyxlQUFlLENBQUM7SUFFeEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyx5QkFBeUIsQ0FBQztBQUVsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG5cblx0Y29uc3QgQ3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvciA9IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBvYmplY3QsXG5cdFx0TW9kaWZpY2F0b3JUeXBlOiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZTogeyBbaW5kZXg6IHN0cmluZ106IHVua25vd24gfSxcblx0XHRfYWRkUHJvcHM6IENhbGxhYmxlRnVuY3Rpb25cblx0KSB7XG5cblx0XHQgXG5cdFx0Y29uc3QgZXhpc3RlbnRJbnN0YW5jZSA9IHRoaXM7XG5cblx0XHQvLyBpbmhlcml0ZWRcblx0XHRjb25zdCBNbmVtb3N5bmUgPSB7fTtcblx0XHRSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1uZW1vc3luZSwgZXhpc3RlbnRJbnN0YW5jZSk7XG5cdFx0X2FkZFByb3BzKE1uZW1vc3luZSk7XG5cblx0XHQvLyBhYm91dCB0byBzZXR1cCBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBmb3IgbmV3IGluc3RhbmNlXG5cdFx0Ly8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGluaGVyaXRlZCwgJ2NvbnN0cnVjdG9yJywge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNbmVtb3N5bmUsICdjb25zdHJ1Y3RvcicsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBNb2RpZmljYXRvclR5cGU7XG5cdFx0XHR9LFxuXHRcdFx0ZW51bWVyYWJsZSA6IGZhbHNlXG5cdFx0fSk7XG5cblx0XHQvLyBtb2RpZmljYXRpb24gaXRzZWxmXG5cdFx0Ly8gc28gbm93IHdlIGhhdmUgdG8gY29weSBhbGwgY29uc3RydWN0b3IgcHJvcHNcblx0XHRjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSk7XG5cdFx0cHJvcHMuY29uc3RydWN0b3IgPSB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIEknbSB0b28gbGF6eSBmb3IgdGhhdFxuXHRcdFx0dmFsdWUgOiBNb2RpZmljYXRvclR5cGVcblx0XHR9O1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIHByb3BzKTtcblxuXHRcdC8vIGFuZCBzZXQgdGhlIHByb3RvdHlwZSBpbmhlcml0ZWRcblx0XHQvLyBSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIGluaGVyaXRlZCk7XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihNb2RpZmljYXRvclR5cGUucHJvdG90eXBlLCBNbmVtb3N5bmUpO1xuXG5cdFx0cmV0dXJuIE1vZGlmaWNhdG9yVHlwZTtcblxuXHR9O1xuXG5cdHJldHVybiBDcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yO1xuXG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBT2IsNEJBNkNDO0FBN0NEO0lBRUMsTUFBTSx5QkFBeUIsR0FBRyxVQUVqQyxlQUFpQyxFQUNqQyx3QkFBc0QsRUFDdEQsU0FBMkI7UUFJM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFHOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBSXJCLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtZQUMvQyxHQUFHO2dCQUNGLE9BQU8sZUFBZSxDQUFDO1lBQ3hCLENBQUM7WUFDRCxVQUFVLEVBQUcsS0FBSztTQUNsQixDQUFDLENBQUM7UUFJSCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsV0FBVyxHQUFHO1lBRW5CLEtBQUssRUFBRyxlQUFlO1NBQ3ZCLENBQUM7UUFDRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUkxRCxPQUFPLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFN0QsT0FBTyxlQUFlLENBQUM7SUFFeEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyx5QkFBeUIsQ0FBQztBQUVsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vLyBTdGVwIDUgb2YgY29uc3RydWN0aW9uIHBpcGVsaW5lOiB0aGUgZGVmYXVsdCBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5cbi8vIFdpcmVzIHRoZSBwcm90b3R5cGUgY2hhaW4gYnkgY3JlYXRpbmcgYSBNbmVtb3N5bmUgb2JqZWN0IGluaGVyaXRpbmdcbi8vIGZyb20gdGhlIHBhcmVudCBpbnN0YW5jZSwgYXR0YWNoaW5nIGludGVybmFsIHByb3BzLCBhbmQgbGlua2luZ1xuLy8gTW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSB0byBpdC4gVGhpcyBpcyB3aGF0IG1ha2VzIGluc3RhbmNlb2Ygd29yay5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuXG5cdGNvbnN0IENyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IgPSBmdW5jdGlvbiAoXG5cdFx0dGhpczogb2JqZWN0LFxuXHRcdE1vZGlmaWNhdG9yVHlwZTogQ2FsbGFibGVGdW5jdGlvbixcblx0XHRNb2RpZmljYXRvclR5cGVQcm90b3R5cGU6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0sXG5cdFx0X2FkZFByb3BzOiBDYWxsYWJsZUZ1bmN0aW9uXG5cdCkge1xuXG5cdFx0IFxuXHRcdGNvbnN0IGV4aXN0ZW50SW5zdGFuY2UgPSB0aGlzO1xuXG5cdFx0Ly8gaW5oZXJpdGVkXG5cdFx0Y29uc3QgTW5lbW9zeW5lID0ge307XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihNbmVtb3N5bmUsIGV4aXN0ZW50SW5zdGFuY2UpO1xuXHRcdF9hZGRQcm9wcyhNbmVtb3N5bmUpO1xuXG5cdFx0Ly8gYWJvdXQgdG8gc2V0dXAgY29uc3RydWN0b3IgcHJvcGVydHkgZm9yIG5ldyBpbnN0YW5jZVxuXHRcdC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbmhlcml0ZWQsICdjb25zdHJ1Y3RvcicsIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoTW5lbW9zeW5lLCAnY29uc3RydWN0b3InLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gTW9kaWZpY2F0b3JUeXBlO1xuXHRcdFx0fSxcblx0XHRcdGVudW1lcmFibGUgOiBmYWxzZVxuXHRcdH0pO1xuXG5cdFx0Ly8gbW9kaWZpY2F0aW9uIGl0c2VsZlxuXHRcdC8vIHNvIG5vdyB3ZSBoYXZlIHRvIGNvcHkgYWxsIGNvbnN0cnVjdG9yIHByb3BzXG5cdFx0Y29uc3QgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhNb2RpZmljYXRvclR5cGVQcm90b3R5cGUpO1xuXHRcdHByb3BzLmNvbnN0cnVjdG9yID0ge1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciBJJ20gdG9vIGxhenkgZm9yIHRoYXRcblx0XHRcdHZhbHVlIDogTW9kaWZpY2F0b3JUeXBlXG5cdFx0fTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydGllcyhNb2RpZmljYXRvclR5cGUucHJvdG90eXBlLCBwcm9wcyk7XG5cblx0XHQvLyBhbmQgc2V0IHRoZSBwcm90b3R5cGUgaW5oZXJpdGVkXG5cdFx0Ly8gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihNb2RpZmljYXRvclR5cGUucHJvdG90eXBlLCBpbmhlcml0ZWQpO1xuXHRcdFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoTW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSwgTW5lbW9zeW5lKTtcblxuXHRcdHJldHVybiBNb2RpZmljYXRvclR5cGU7XG5cblx0fTtcblxuXHRyZXR1cm4gQ3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvcjtcblxufVxuIl19
@@ -183,4 +183,4 @@ const lookup = function (TypeNestedPath) {
183
183
  return exports.lookup.call(type.subtypes, NextNestedPath);
184
184
  };
185
185
  exports.lookup = lookup;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBU2IseUNBQXNDO0FBRXRDLCtDQUE0QztBQUM1QyxNQUFNLEVBQ0wsR0FBRyxFQUNILGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUVaLGlCQUFpQixFQUNqQixTQUFTLEdBRVQsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBR3ZELDJDQUFxQztBQUNyQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxtQkFBVSxDQUFDO0FBRTNDLE1BQU0sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QiwwQkFBMEIsR0FDMUIsR0FBRyxvQkFBVyxDQUFDO0FBS2hCLHFDQUFxQztBQUNyQywyQ0FBd0M7QUFFeEMsMkZBQW9GO0FBRXBGLG9DQUF1RDtBQUN2RCxNQUFNLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsT0FBTyxHQUNQLEdBQUcsZUFBVSxDQUFDO0FBRWYsc0NBQXFDO0FBRXJDLE1BQU0sY0FBYyxHQUFHLFVBRXRCLFlBQThCLEVBQzlCLEtBQTBCLEVBQzFCLFFBQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxLQUFxQyxFQUNyQyxNQUFzQztJQUt0QyxNQUFNLFVBQVUsR0FBSSxLQUEyQyxDQUFFLGdCQUFnQixDQUFFLElBQUksSUFBSSxDQUFDO0lBRTVGLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFNUMsTUFBTSxVQUFVLEdBQUcsU0FBUztRQUMzQixDQUFDLENBQUUsVUFBc0MsQ0FBQyxVQUFvQjtRQUM5RCxDQUFDLENBQUUsS0FBb0QsQ0FBRSxTQUFTLENBQUUsQ0FBQztJQUV0RSxJQUFLLEtBQUssQ0FBQyxHQUFH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LEVBQUcsQ0FBQztRQUM5QixNQUFNLElBQUkscUJBQXFCLENBQUUsb0NBQW9DLENBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUUsY0FBYyxDQUFFLENBQUM7SUFFakQsTUFBTSxDQUFFLElBQUksQ0FBRSxHQUFHLEtBQUssQ0FBQztJQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBMkIsQ0FBQztJQUN2RCxJQUFLLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFHLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUUsR0FBRyxDQUFFLENBQUM7SUFDcEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsT0FBTyxTQUFTLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sY0FBTSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsUUFBK0IsRUFBRSxjQUFjLENBQUUsQ0FBQztBQUU1RSxDQUFDLENBQUM7QUEzQlcsUUFBQSxNQUFNLFVBMkJqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHtcblx0X0ludGVybmFsX1RDXyxcblx0VHlwZURlc2NyaXB0b3JJbnN0YW5jZSxcblx0VHlwZUNsYXNzLFxuXHRjb25zdHJ1Y3Rvck9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBob3AgfSBmcm9tICcuLi8uLi91dGlscy9ob3AnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbFBhcmVudFR5cGUsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sQ29uZmlnLFxuXG5cdFRZUEVfVElUTEVfUFJFRklYLFxuXHRNTkVNT1NZTkUsXG5cbn0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbi8vIGltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMnO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL01uZW1vc3luZSc7XG5jb25zdCB7IGdldERlZmF1bHRQcm90b3R5cGUgfSA9IG1uZW1vc3luZXM7XG5cbmNvbnN0IHtcblx0QUxSRUFEWV9ERUNMQVJFRCxcblx0V1JPTkdfVFlQRV9ERUZJTklUSU9OLFxuXHRUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HLFxuXHRIQU5ETEVSX01VU1RfQkVfQV9GVU5DVElPTixcbn0gPSBFcnJvcnNUeXBlcztcblxuLy8gaW52b2tlSG9va1xuLy8gcmVnaXN0ZXJIb29rXG4vLyByZWdpc3RlckZsb3dDaGVja2VyXG5pbXBvcnQgKiBhcyBob29rc0FwaSBmcm9tICcuLi9ob29rcyc7XG5pbXBvcnQgeyBUeXBlUHJveHkgfSBmcm9tICcuL1R5cGVQcm94eSc7XG5cbmltcG9ydCBjb21waWxlTmV3TW9kaWZpY2F0b3JGdW5jdGlvbkJvZHkgZnJvbSAnLi9jb21waWxlTmV3TW9kaWZpY2F0b3JGdW5jdGlvbkJvZHknO1xuXG5pbXBvcnQgVHlwZXNVdGlscywgeyBDcmVhdGlvbkhhbmRsZXIgfSBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGdldFR5cGVDaGVja2VyLFxuXHRnZXRUeXBlU3BsaXRQYXRoLFxuXHRjaGVja1R5cGVOYW1lLFxuXHRpc0NsYXNzLFxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGdldFN0YWNrIH0gZnJvbSAnLi4vZXJyb3JzJztcblxuY29uc3QgVHlwZURlc2NyaXB0b3IgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IFR5cGVEZXNjcmlwdG9ySW5zdGFuY2UsXG5cdGRlZmluZU9yaWdpbjogQ2FsbGFibGVGdW5jdGlvbixcblx0dHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD4sXG5cdFR5cGVOYW1lOiBzdHJpbmcsXG5cdGNvbnN0cnVjdEhhbmRsZXI6IENhbGxhYmxlRnVuY3Rpb24sXG5cdHByb3RvOiB7IFsgaW5kZXg6IHN0cmluZyBdOiB1bmtub3duIH0sXG5cdGNvbmZpZzogeyBbIGluZGV4OiBzdHJpbmcgXTogdW5rbm93biB9LFxuKSB7XG5cblx0Ly8gaGVyZSBcInR5cGVzXCIgcmVmZXJzIHRvIHN1YnR5cGVzIG9mIHR5cGUgb3IgY29sbGVjdGlvbiBvYmplY3Qge31cblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHR5cGVzIGFzIHVua25vd24gYXMgUmVjb3JkPHN5bWJvbCwgb2JqZWN0PilbIFN5bWJvbFBhcmVudFR5cGUgXSB8fCBudWxsO1xuXG5cdGNvbnN0IGlzU3ViVHlwZSA9IHBhcmVudFR5cGUgPyB0cnVlIDogZmFsc2U7XG5cblx0Y29uc3QgY29sbGVjdGlvbiA9IGlzU3ViVHlwZVxuXHRcdD8gKHBhcmVudFR5cGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmNvbGxlY3Rpb24gYXMgb2JqZWN0XG5cdFx0OiAodHlwZXMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCBvYmplY3Q+KVsgTU5FTU9TWU5FIF07XG5cblx0aWYgKCB0eXBlcy5oYXMoIFR5cGVOYW1lICkgKSB7XG5cdFx0dGhyb3cgbmV3IEFMUkVBRFlfREVDTEFSRUQgKCBUeXBlTmFtZSApO1xuXHR9XG5cblx0Ly8gY29uc3Qgc3VidHlwZXMgPSBkZXNjcmlwdG9ycy5jcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcblx0Y29uc3Qgc3VidHlwZXMgPSBuZXcgTWFwPHN0cmluZywgb2JqZWN0PigpO1xuXG5cdGNvbnN0IHRpdGxlID0gYCR7VFlQRV9USVRMRV9QUkVGSVh9JHtUeXBlTmFtZX1gO1xuXG5cdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oIHt9LCAoY29sbGVjdGlvbiBhcyBSZWNvcmQ8c3ltYm9sLCB1bmtub3duPilbIFN5bWJvbENvbmZpZyBdLCBjb25maWcgKTtcblxuXHRjb25zdCB0eXBlID0gT2JqZWN0LmFzc2lnbiggdGhpcywge1xuXG5cdFx0Z2V0IGNvbnN0cnVjdEhhbmRsZXIgKCkge1xuXHRcdFx0cmV0dXJuIGNvbnN0cnVjdEhhbmRsZXI7XG5cdFx0fSxcblxuXG5cdFx0VHlwZU5hbWUsXG5cdFx0cHJvdG8sXG5cblx0XHRpc1N1YlR5cGUsXG5cdFx0c3VidHlwZXMsXG5cdFx0cGFyZW50VHlwZSxcblxuXHRcdGNvbGxlY3Rpb24sXG5cblx0XHR0aXRsZSxcblxuXHRcdGNvbmZpZyxcblxuXHRcdGhvb2tzIDogT2JqZWN0LmNyZWF0ZSggbnVsbCApXG5cblx0fSApO1xuXG5cdGdldFN0YWNrLmNhbGwoIHRoaXMsIGBEZWZpbml0aW9uIG9mIFsgJHtUeXBlTmFtZX0gXSBtYWRlIGF0OmAsIFtdLCBkZWZpbmVPcmlnaW4gKTtcblxuXHRvZHAoIHN1YnR5cGVzLCBTeW1ib2xQYXJlbnRUeXBlLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiB0eXBlO1xuXHRcdH1cblx0fSApO1xuXG5cdC8vIGNvbnN0IFVyYW51cyA9IGlzU3ViVHlwZSA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiBwcm90bztcblx0Y29uc3QgVXJhbnVzID0gaXNTdWJUeXBlID8gdW5kZWZpbmVkIDogcHJvdG87XG5cdHR5cGVzLnNldCggVHlwZU5hbWUsIG5ldyBUeXBlUHJveHkoIHR5cGUsIFVyYW51cyApICk7XG5cdFxuXHQvLyB0eXBlcy5zZXQoIFR5cGVOYW1lLCBuZXcgVHlwZVByb3h5KCB0eXBlICkgKTtcblxuXHRyZXR1cm4gdHlwZXMuZ2V0KCBUeXBlTmFtZSApO1xuXG59IGFzIHVua25vd24gYXMgX0ludGVybmFsX1RDXzxUeXBlRGVzY3JpcHRvckluc3RhbmNlPjtcblxuT2JqZWN0LmFzc2lnbiggVHlwZURlc2NyaXB0b3IucHJvdG90eXBlLCBob29rc0FwaSApO1xuXG5UeXBlRGVzY3JpcHRvci5wcm90b3R5cGUuZGVmaW5lID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBUeXBlRGVzY3JpcHRvckluc3RhbmNlLFxuXHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnPzogQ2FsbGFibGVGdW5jdGlvbiB8IG9iamVjdCxcblx0Y29uZmlnPzogb2JqZWN0XG4pIHtcblx0cmV0dXJuIGRlZmluZS5jYWxsKCBkZWZpbmUsIHRoaXMuc3VidHlwZXMgYXMgTWFwPHN0cmluZywgb2JqZWN0PiwgVHlwZU9yVHlwZU5hbWUsIGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZywgY29uZmlnICk7XG59O1xuXG5UeXBlRGVzY3JpcHRvci5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBUeXBlRGVzY3JpcHRvckluc3RhbmNlLFxuXHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG4pIHtcblx0cmV0dXJuIGxvb2t1cC5jYWxsKCB0aGlzLnN1YnR5cGVzIGFzIE1hcDxzdHJpbmcsIG9iamVjdD4sIFR5cGVOZXN0ZWRQYXRoICk7XG59O1xuXG5vZHAoIFR5cGVEZXNjcmlwdG9yLnByb3RvdHlwZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG5cdGdldCAodGhpczogVHlwZURlc2NyaXB0b3JJbnN0YW5jZSkge1xuXHRcdHJldHVybiBnZXRUeXBlQ2hlY2tlciggdGhpcy5UeXBlTmFtZSApO1xuXHR9XG59ICk7XG5cbi8qXG5oZXJlIHdlIHVzZSBmdW5jdGlvbiB0byByZXRyZWl2ZSBhIGNvbnRydWN0b3JcbmFuZCBjb25zdHJ1Y3RIYW5kbGVyR2V0dGVyIGlzIHRoYXQgZnVuY3Rpb25cbiovXG5jb25zdCBkZWZpbmVVc2luZ1R5cGUgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+LFxuXHRjb25zdHJ1Y3RIYW5kbGVyR2V0dGVyOiAoKSA9PiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRjb25maWc6IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZFxuKSB7XG5cdC8vIHdlIG5lZWQgdGhpcyB0byBleHRyYWN0IFR5cGVOYW1lXG5cdGNvbnN0IHR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyR2V0dGVyKCk7XG5cblx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgSEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT047XG5cdH1cblxuXHRjb25zdCBUeXBlTmFtZSA9IHR5cGUubmFtZTtcblxuXHRpZiAoICFUeXBlTmFtZSApIHtcblx0XHR0aHJvdyBuZXcgVFlQRU5BTUVfTVVTVF9CRV9BX1NUUklORztcblx0fVxuXG5cdGNvbnN0IGFzQ2xhc3MgPSBpc0NsYXNzKCB0eXBlICk7XG5cblx0Y29uc3QgbWFrZUNvbnN0cnVjdEhhbmRsZXIgPSAoKSA9PiB7XG5cdFx0Y29uc3QgY29uc3RydWN0SGFuZGxlciA9IGNvbnN0cnVjdEhhbmRsZXJHZXR0ZXIoKTtcblx0XHQvLyBjb25zdHJ1Y3RIYW5kbGVyW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0gPSBUeXBlTmFtZTtcblx0XHRvZHAoIGNvbnN0cnVjdEhhbmRsZXIsIFN5bWJvbENvbnN0cnVjdG9yTmFtZSwge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIFR5cGVOYW1lO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0XHRcblx0XHQvLyB0aGlzIHdhcyBjaGVja2luZyBmb3IgY2xhc3MgLyBmdW5jdGlvblxuXHRcdC8vIGZ1bmN0aW9ucyBoYXMgLndyaXRhYmxlIHByb3RvdHlwZVxuXHRcdC8vIGFuZCBjbGFzc2VzIGFyZSBoYXMgbm90XG5cdFx0Y29uc3QgcHJvdG9EZXNjID0gT2JqZWN0XG5cdFx0XHQuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCBjb25zdHJ1Y3RIYW5kbGVyLCAncHJvdG90eXBlJyApIGFzIFByb3BlcnR5RGVzY3JpcHRvciB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIHByb3RvRGVzYyAmJiBwcm90b0Rlc2Mud3JpdGFibGUgKSB7XG5cdFx0XHQvLyBjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSA9IHt9O1xuXHRcdFx0Y29uc3RydWN0SGFuZGxlci5wcm90b3R5cGUgPSBnZXREZWZhdWx0UHJvdG90eXBlKCk7XG5cdFx0fVxuXHRcdFxuXHRcdC8vIFRPRE86XG5cdFx0Ly8gc2lkZS13YXksIG5vbiBjb3JyZWN0bHkgd29ya2luZ1xuXHRcdC8vIHdpdGggY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvciBmb3IgbGluZVxuXHRcdC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIHByb3BzKTtcblx0XHQvLyBmb3IgcmVwZWF0YWJsZSBpbnN0YW5jZSBjcmVhdGlvbnNcblx0XHQvLyDihpPihpPihpMg4oaT4oaT4oaTIOKGk+KGk+KGk1xuXHRcdC8vIGVsc2Uge1xuXHRcdC8vIFx0Ly8gc28gbGV0IHVzZSBPYmplY3Quc2V0UHJvdG90eXBlT2YgaW5zdGVhZFxuXHRcdC8vIFx0Ly8gT2JqZWN0LnNldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSksIGdldERlZmF1bHRQcm90b3R5cGUoKSk7XG5cdFx0Ly8gXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoY29uc3RydWN0SGFuZGxlci5wcm90b3R5cGUsIGdldERlZmF1bHRQcm90b3R5cGUoKSk7XG5cdFx0Ly8gfVxuXG5cdFx0cmV0dXJuIGNvbnN0cnVjdEhhbmRsZXI7XG5cdH07XG5cblx0aWYgKCB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyApIHtcblx0XHRjb25maWcgPSBPYmplY3QuYXNzaWduKCB7fSwgY29uZmlnICk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uZmlnID0ge307XG5cdH1cblxuXHRjb25maWcuYXNDbGFzcyA9IGFzQ2xhc3M7XG5cblx0cmV0dXJuIG5ldyBUeXBlRGVzY3JpcHRvcihcblx0XHR0aGlzLFxuXHRcdHN1YnR5cGVzLFxuXHRcdFR5cGVOYW1lLFxuXHRcdG1ha2VDb25zdHJ1Y3RIYW5kbGVyLFxuXHRcdHR5cGUucHJvdG90eXBlLFxuXHRcdGNvbmZpZ1xuXHQpO1xufTtcblxuXG4vKlxuaGVyZSB3ZSBkaXJlY3RseSBwYXNzaW5nIGNvbnN0cnVjdEhhbmRsZXJcbmFzIGEgY29uc3RydWN0b3IgZm9yIGluc3RhbmNlcyBjcmVhdGlvbnNcbiovXG5jb25zdCBkZWZpbmVVc2luZ0Z1bmN0aW9uID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0Pixcblx0VHlwZU5hbWU6IHN0cmluZyxcblx0Y29uc3RydWN0SGFuZGxlcjogQ2FsbGFibGVGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgfSxcblx0Y29uZmlnOiBjb25zdHJ1Y3Rvck9wdGlvbnMgPSB7fVxuKSB7XG5cblx0aWYgKCB0eXBlb2YgY29uc3RydWN0SGFuZGxlciAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgSEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT047XG5cdH1cblxuXHRjb25zdCBhc0NsYXNzID0gaXNDbGFzcyggY29uc3RydWN0SGFuZGxlciApO1xuXHRjb25zdCBtb2RpZmljYXRvckJvZHkgPSBjb21waWxlTmV3TW9kaWZpY2F0b3JGdW5jdGlvbkJvZHkoIFR5cGVOYW1lLCBhc0NsYXNzICk7XG5cblx0Y29uc3QgbWFrZUNvbnN0cnVjdEhhbmRsZXIgPSBtb2RpZmljYXRvckJvZHkoXG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRDcmVhdGlvbkhhbmRsZXIsXG5cdFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG5cdCk7XG5cblx0aWYgKCBjb25maWcgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHtcblx0XHRjb25maWcgPSB7XG5cdFx0XHRNb2RpZmljYXRpb25Db25zdHJ1Y3RvciA6IGNvbmZpZ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoIHR5cGVvZiBjb25maWcgIT09ICdvYmplY3QnICkge1xuXHRcdGNvbmZpZyA9IHt9O1xuXHR9XG5cblxuXHRjb25maWcuYXNDbGFzcyA9IGFzQ2xhc3M7XG5cblx0Y29uc3QgcHJvdG8gPSAoXG5cdFx0aG9wKCBjb25zdHJ1Y3RIYW5kbGVyLCAncHJvdG90eXBlJyApICYmXG5cdFx0Ly8gdXNpbmcg4oaT4oaT4oaTIGNhdXNlIGZvciBwcm94eSBpbiBjaGFpbiBpcyBpbnN0YW5jZW9mIGZhaWxzXG5cdFx0Ly8gYW5kIGFsc28gZmFpbHMgZm9yIGp1c3QgT2JqZWN0LmNyZWF0ZShudWxsKVxuXHRcdCggdHlwZW9mIGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlID09PSAnb2JqZWN0JyApXG5cdC8vICkgPyBjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSA6IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cdCkgPyBjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSA6IGdldERlZmF1bHRQcm90b3R5cGUoKTtcblx0XG5cdC8vIGxldCBwcm90byA9IHt9O1xuXHQvLyBpZiAoIGhvcCggY29uc3RydWN0SGFuZGxlciwgJ3Byb3RvdHlwZScgKSAmJiAoIGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlIGluc3RhbmNlb2YgT2JqZWN0ICkgKSB7XG5cdC8vIFx0cHJvdG8gPSBPYmplY3QuYXNzaWduKCB7fSwgY29uc3RydWN0SGFuZGxlci5wcm90b3R5cGUgKTtcblx0Ly8gXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoIHByb3RvLCBjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSApO1xuXHQvLyB9XG5cblx0cmV0dXJuIG5ldyBUeXBlRGVzY3JpcHRvcihcblx0XHR0aGlzLFxuXHRcdHN1YnR5cGVzLFxuXHRcdFR5cGVOYW1lLFxuXHRcdG1ha2VDb25zdHJ1Y3RIYW5kbGVyLFxuXHRcdC8vIHByb3RvIHByb3AgZm9yIFR5cGVEZXNjcmlwdG9yXG5cdFx0cHJvdG8sXG5cdFx0Y29uZmlnXG5cdCk7XG5cbn07XG5cblxuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIChcblx0dGhpczogQ2FsbGFibGVGdW5jdGlvbixcblx0c3VidHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD4sXG5cdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRjb25maWc/OiBvYmplY3Rcbik6IFR5cGVDbGFzcyB7XG5cblx0aWYgKCB0eXBlb2YgVHlwZU9yVHlwZU5hbWUgPT09ICdmdW5jdGlvbicgKSB7XG5cdFx0Ly8gVE9ETzogaWYgKCBob3AoIFR5cGVPclR5cGVOYW1lLCAnbmFtZScgKSApIHtcblx0XHQvLyBUT0RPOiBpZiAoIGhvcCggVHlwZU9yVHlwZU5hbWUuY29uc3RydWN0b3IsICduYW1lJyApICkge1xuXHRcdGlmICggVHlwZU9yVHlwZU5hbWUubmFtZSApIHtcblx0XHRcdFxuXHRcdFx0Y29uc3QgVHlwZSA9IGxvb2t1cC5jYWxsKCBzdWJ0eXBlcywgVHlwZU9yVHlwZU5hbWUubmFtZSApO1xuXG5cdFx0XHRpZiAoIFR5cGUgKSB7XG5cdFx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0XHR0aHJvdyBuZXcgQUxSRUFEWV9ERUNMQVJFRCggVHlwZU9yVHlwZU5hbWUubmFtZSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGVmaW5lLmNhbGwoIHRoaXMsIHN1YnR5cGVzLCBUeXBlT3JUeXBlTmFtZS5uYW1lLCBUeXBlT3JUeXBlTmFtZSwgY29uZmlnICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0IFxuXHRcdFx0cmV0dXJuIChkZWZpbmVVc2luZ1R5cGUgYXMgYW55KS5jYWxsKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRzdWJ0eXBlcyxcblx0XHRcdFx0VHlwZU9yVHlwZU5hbWUsXG5cdFx0XHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyA/IGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyA6IFR5cGVPclR5cGVOYW1lXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdGlmICggdHlwZW9mIFR5cGVPclR5cGVOYW1lID09PSAnc3RyaW5nJyApIHtcblxuXHRcdGNoZWNrVHlwZU5hbWUoIFR5cGVPclR5cGVOYW1lICk7XG5cblx0XHRjb25zdCBzcGxpdCA9IGdldFR5cGVTcGxpdFBhdGgoIFR5cGVPclR5cGVOYW1lICk7XG5cblx0XHRjb25zdCBUeXBlID0gbG9va3VwLmNhbGwoIHN1YnR5cGVzLCBzcGxpdFsgMCBdICk7XG5cdFx0XG5cdFx0aWYgKCFUeXBlKSB7XG5cblx0XHRcdGlmICggc3BsaXQubGVuZ3RoID09PSAxICkge1xuXHRcdFx0XHQgXG5cdFx0XHRcdHJldHVybiAoZGVmaW5lVXNpbmdGdW5jdGlvbiBhcyBhbnkpLmNhbGwoXG5cdFx0XHRcdFx0dGhpcyxcblx0XHRcdFx0XHRzdWJ0eXBlcyxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEV4aXN0ZW50LmRlZmluZSgnTWlzc2luZy5XYW50ZWQnKVxuXHRcdFx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTiggYHBhcmVudCAke3NwbGl0WyAwIF19IGRlZmluaXRpb24gaXMgbm90IHlldCBleGlzdHMhYCApO1xuXHRcdH1cblxuXHRcdGNvbnN0IFR5cGVOYW1lID0gc3BsaXQuc2xpY2UoIDEgKS5qb2luKCAnLicgKTtcblxuXHRcdGlmICggc3BsaXQubGVuZ3RoID4gMSApIHtcblx0XHRcdHJldHVybiBkZWZpbmUuY2FsbCggdGhpcywgVHlwZS5zdWJ0eXBlcyBhcyBNYXA8c3RyaW5nLCBvYmplY3Q+LCBUeXBlTmFtZSwgY29uc3RydWN0SGFuZGxlck9yQ29uZmlnLCBjb25maWcgKTtcblx0XHR9XG5cblxuXHRcdGlmIChzcGxpdC5sZW5ndGggPT09IDEpIHtcblxuXHRcdFx0aWYgKGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG5cblx0XHRcdFx0Ly8gZGVidWdnZXI7XG5cblx0XHRcdFx0Ly8gaWYgKGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZy5uYW1lID09PSBUeXBlLlR5cGVOYW1lKSB7XG5cdFx0XHRcdC8vIFx0dGhyb3cgbmV3IEFMUkVBRFlfREVDTEFSRUQoIFR5cGVPclR5cGVOYW1lICk7XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8gZGVidWdnZXI7XG5cdFx0XHRcdFx0Ly8gd2UgbmVlZCB0aGlzIHRvIGV4dHJhY3QgVHlwZU5hbWVcblx0XHRcdFx0XHRjb25zdCB0eXBlID0gY29uc3RydWN0SGFuZGxlck9yQ29uZmlnKCk7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aWYgKCAhKHR5cGUgaW5zdGFuY2VvZiBGdW5jdGlvbikgKSB7XG5cdFx0XHRcdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBBTFJFQURZX0RFQ0xBUkVEKCBUeXBlT3JUeXBlTmFtZSApO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICggdHlwZS5uYW1lLmxlbmd0aCA9PT0gMCApIHtcblx0XHRcdFx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEFMUkVBRFlfREVDTEFSRUQoIFR5cGVPclR5cGVOYW1lICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gaWYgKHR5cGUubmFtZS5sZW5ndGggPiAwICYmIHR5cGUubmFtZSA9PT0gVHlwZS5UeXBlTmFtZSkge1xuXHRcdFx0XHRcdC8vIFx0ZGVidWdnZXI7XG5cdFx0XHRcdFx0Ly8gXHR0aHJvdyBuZXcgQUxSRUFEWV9ERUNMQVJFRCggVHlwZU9yVHlwZU5hbWUgKTtcblx0XHRcdFx0XHQvLyB9XG5cdFxuXHRcdFx0XHR9IGNhdGNoIHtcblxuXHRcdFx0XHRcdHJldHVybiAoZGVmaW5lVXNpbmdGdW5jdGlvbiBhcyBhbnkpLmNhbGwoXG5cdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0c3VidHlwZXMsXG5cdFx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyxcblx0XHRcdFx0XHRcdGNvbmZpZ1xuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQvLyBzbywgaGVyZSB3ZSBnbyB3aXRoXG5cdFx0Ly8gZGVmaW5lVXNpbmdUeXBlLmNhbGxcblx0XHQvLyBmcm9tIHRoZSBuZXh0IHN0ZXBcblx0XHRyZXR1cm4gZGVmaW5lLmNhbGwoXG5cdFx0XHR0aGlzIGFzIHVua25vd24gYXMgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRcdFR5cGUuc3VidHlwZXMgYXMgTWFwPHN0cmluZywgb2JqZWN0Pixcblx0XHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyBhcyBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0Y29uZmlnXG5cdFx0KTtcblxuXHR9XG5cblx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTiggJ2RlZmluaXRpb24gaXMgbm90IHByb3ZpZGVkJyApO1xuXG59O1xuXG5leHBvcnQgY29uc3QgbG9va3VwID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBNYXA8c3RyaW5nLCBvYmplY3Q+LFxuXHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG4pOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQge1xuXG5cdGlmICggdHlwZW9mIFR5cGVOZXN0ZWRQYXRoICE9PSAnc3RyaW5nJyApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfVFlQRV9ERUZJTklUSU9OKCAnYXJnIDogdHlwZSBuZXN0ZWQgcGF0aCBtdXN0IGJlIGEgc3RyaW5nJyApO1xuXHR9XG5cblx0aWYgKCAhVHlwZU5lc3RlZFBhdGgubGVuZ3RoICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oICdhcmcgOiB0eXBlIG5lc3RlZCBwYXRoIGhhcyBubyBwYXRoJyApO1xuXHR9XG5cblx0Y29uc3Qgc3BsaXQgPSBnZXRUeXBlU3BsaXRQYXRoKCBUeXBlTmVzdGVkUGF0aCApO1xuXG5cdGNvbnN0IFsgbmFtZSBdID0gc3BsaXQ7XG5cdGNvbnN0IHR5cGUgPSB0aGlzLmdldCggbmFtZSApIGFzIFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblx0aWYgKCBzcGxpdC5sZW5ndGggPT09IDEgKSB7XG5cdFx0cmV0dXJuIHR5cGU7XG5cdH1cblxuXHRjb25zdCBOZXh0TmVzdGVkUGF0aCA9IHNwbGl0LnNsaWNlKCAxICkuam9pbiggJy4nICk7XG5cdGlmICghdHlwZSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIGxvb2t1cC5jYWxsKCB0eXBlLnN1YnR5cGVzIGFzIE1hcDxzdHJpbmcsIG9iamVjdD4sIE5leHROZXN0ZWRQYXRoICk7XG5cbn07XG5cblxuXG4iXX0=
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBOEJiLHlDQUFzQztBQUV0QywrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFlBQVksRUFFWixpQkFBaUIsRUFDakIsU0FBUyxHQUVULEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUF1RDtBQUd2RCwyQ0FBcUM7QUFDckMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUUzQyxNQUFNLEVBQ0wsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzFCLEdBQUcsb0JBQVcsQ0FBQztBQUtoQixxQ0FBcUM7QUFDckMsMkNBQXdDO0FBRXhDLDJGQUFvRjtBQUVwRixvQ0FBdUQ7QUFDdkQsTUFBTSxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLE9BQU8sR0FDUCxHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUVyQyxNQUFNLGNBQWMsR0FBRyxVQUV0QixZQUE4QixFQUM5QixLQUEwQixFQUMxQixRQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsS0FBcUMsRUFDckMsTUFBc0M7SUFLdEMsTUFBTSxVQUFVLEdBQUksS0FBMkMsQ0FBRSxnQkFBZ0IsQ0FBRSxJQUFJLElBQUksQ0FBQztJQUU1RixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRTVDLE1BQU0sVUFBVSxHQUFHLFNBQVM7UUFDM0IsQ0FBQyxDQUFFLFVBQXNDLENBQUMsVUFBb0I7UUFDOUQsQ0FBQyxDQUFFLEtBQW9ELENBQUUsU0FBUyxDQUFFLENBQUM7SUFFdEUsSUFBSyxLQUFLLENBQUMsR0FB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TSxFQUFHLENBQUM7UUFDOUIsTUFBTSxJQUFJLHFCQUFxQixDQUFFLG9DQUFvQyxDQUFFLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFFLGNBQWMsQ0FBRSxDQUFDO0lBRWpELE1BQU0sQ0FBRSxJQUFJLENBQUUsR0FBRyxLQUFLLENBQUM7SUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBRSxJQUFJLENBQTJCLENBQUM7SUFDdkQsSUFBSyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUUsQ0FBQyxDQUFFLENBQUMsSUFBSSxDQUFFLEdBQUcsQ0FBRSxDQUFDO0lBQ3BELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNYLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLGNBQU0sQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLFFBQStCLEVBQUUsY0FBYyxDQUFFLENBQUM7QUFFNUUsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsTUFBTSxVQTJCakIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29uc3RydWN0aW9uIFBpcGVsaW5lIChoaWdoLWxldmVsIGZsb3cpOlxuICpcbiAqICAgZGVmaW5lKFR5cGVOYW1lLCBjdG9yKSAg4oaSICBuZXcgVHlwZURlc2NyaXB0b3IoKSAg4oaSICBuZXcgVHlwZVByb3h5KClcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa8XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEluc3RhbmNlQ3JlYXRvcih0eXBlLCBwYXJlbnQsIGFyZ3MpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKWvFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKHNlbGYpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKWvFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLmNhbGwocGFyZW50LCBNb2RpZmljYXRvclR5cGUsIHByb3RvLCBfYWRkUHJvcHMpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKWvFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgY29uc3RydWN0b3IgcnVucyAobmV3IE1vZGlmaWNhdG9yVHlwZSguLi5hcmdzKSlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUglxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pa8XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFByb2Nlc3NpbmcoKSDihpIgaW52b2tlUG9zdEhvb2tzKClcbiAqL1xuXG5pbXBvcnQge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRUeXBlRGVzY3JpcHRvckluc3RhbmNlLFxuXHRUeXBlQ2xhc3MsXG5cdGNvbnN0cnVjdG9yT3B0aW9uc1xufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IGhvcCB9IGZyb20gJy4uLy4uL3V0aWxzL2hvcCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xDb25maWcsXG5cblx0VFlQRV9USVRMRV9QUkVGSVgsXG5cdE1ORU1PU1lORSxcblxufSA9IGNvbnN0YW50cztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuLy8gaW1wb3J0IHsgZGVzY3JpcHRvcnMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycyc7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vTW5lbW9zeW5lJztcbmNvbnN0IHsgZ2V0RGVmYXVsdFByb3RvdHlwZSB9ID0gbW5lbW9zeW5lcztcblxuY29uc3Qge1xuXHRBTFJFQURZX0RFQ0xBUkVELFxuXHRXUk9OR19UWVBFX0RFRklOSVRJT04sXG5cdFRZUEVOQU1FX01VU1RfQkVfQV9TVFJJTkcsXG5cdEhBTkRMRVJfTVVTVF9CRV9BX0ZVTkNUSU9OLFxufSA9IEVycm9yc1R5cGVzO1xuXG4vLyBpbnZva2VIb29rXG4vLyByZWdpc3Rlckhvb2tcbi8vIHJlZ2lzdGVyRmxvd0NoZWNrZXJcbmltcG9ydCAqIGFzIGhvb2tzQXBpIGZyb20gJy4uL2hvb2tzJztcbmltcG9ydCB7IFR5cGVQcm94eSB9IGZyb20gJy4vVHlwZVByb3h5JztcblxuaW1wb3J0IGNvbXBpbGVOZXdNb2RpZmljYXRvckZ1bmN0aW9uQm9keSBmcm9tICcuL2NvbXBpbGVOZXdNb2RpZmljYXRvckZ1bmN0aW9uQm9keSc7XG5cbmltcG9ydCBUeXBlc1V0aWxzLCB7IENyZWF0aW9uSGFuZGxlciB9IGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IHtcblx0Z2V0VHlwZUNoZWNrZXIsXG5cdGdldFR5cGVTcGxpdFBhdGgsXG5cdGNoZWNrVHlwZU5hbWUsXG5cdGlzQ2xhc3MsXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG5jb25zdCBUeXBlRGVzY3JpcHRvciA9IGZ1bmN0aW9uIChcblx0dGhpczogVHlwZURlc2NyaXB0b3JJbnN0YW5jZSxcblx0ZGVmaW5lT3JpZ2luOiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHR0eXBlczogTWFwPHN0cmluZywgb2JqZWN0Pixcblx0VHlwZU5hbWU6IHN0cmluZyxcblx0Y29uc3RydWN0SGFuZGxlcjogQ2FsbGFibGVGdW5jdGlvbixcblx0cHJvdG86IHsgWyBpbmRleDogc3RyaW5nIF06IHVua25vd24gfSxcblx0Y29uZmlnOiB7IFsgaW5kZXg6IHN0cmluZyBdOiB1bmtub3duIH0sXG4pIHtcblxuXHQvLyBoZXJlIFwidHlwZXNcIiByZWZlcnMgdG8gc3VidHlwZXMgb2YgdHlwZSBvciBjb2xsZWN0aW9uIG9iamVjdCB7fVxuXG5cdGNvbnN0IHBhcmVudFR5cGUgPSAodHlwZXMgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3ltYm9sLCBvYmplY3Q+KVsgU3ltYm9sUGFyZW50VHlwZSBdIHx8IG51bGw7XG5cblx0Y29uc3QgaXNTdWJUeXBlID0gcGFyZW50VHlwZSA/IHRydWUgOiBmYWxzZTtcblxuXHRjb25zdCBjb2xsZWN0aW9uID0gaXNTdWJUeXBlXG5cdFx0PyAocGFyZW50VHlwZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuY29sbGVjdGlvbiBhcyBvYmplY3Rcblx0XHQ6ICh0eXBlcyBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIG9iamVjdD4pWyBNTkVNT1NZTkUgXTtcblxuXHRpZiAoIHR5cGVzLmhhcyggVHlwZU5hbWUgKSApIHtcblx0XHR0aHJvdyBuZXcgQUxSRUFEWV9ERUNMQVJFRCAoIFR5cGVOYW1lICk7XG5cdH1cblxuXHQvLyBjb25zdCBzdWJ0eXBlcyA9IGRlc2NyaXB0b3JzLmNyZWF0ZVR5cGVzQ29sbGVjdGlvbigpO1xuXHRjb25zdCBzdWJ0eXBlcyA9IG5ldyBNYXA8c3RyaW5nLCBvYmplY3Q+KCk7XG5cblx0Y29uc3QgdGl0bGUgPSBgJHtUWVBFX1RJVExFX1BSRUZJWH0ke1R5cGVOYW1lfWA7XG5cblx0Y29uZmlnID0gT2JqZWN0LmFzc2lnbigge30sIChjb2xsZWN0aW9uIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVsgU3ltYm9sQ29uZmlnIF0sIGNvbmZpZyApO1xuXG5cdGNvbnN0IHR5cGUgPSBPYmplY3QuYXNzaWduKCB0aGlzLCB7XG5cblx0XHRnZXQgY29uc3RydWN0SGFuZGxlciAoKSB7XG5cdFx0XHRyZXR1cm4gY29uc3RydWN0SGFuZGxlcjtcblx0XHR9LFxuXG5cblx0XHRUeXBlTmFtZSxcblx0XHRwcm90byxcblxuXHRcdGlzU3ViVHlwZSxcblx0XHRzdWJ0eXBlcyxcblx0XHRwYXJlbnRUeXBlLFxuXG5cdFx0Y29sbGVjdGlvbixcblxuXHRcdHRpdGxlLFxuXG5cdFx0Y29uZmlnLFxuXG5cdFx0aG9va3MgOiBPYmplY3QuY3JlYXRlKCBudWxsIClcblxuXHR9ICk7XG5cblx0Z2V0U3RhY2suY2FsbCggdGhpcywgYERlZmluaXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIG1hZGUgYXQ6YCwgW10sIGRlZmluZU9yaWdpbiApO1xuXG5cdG9kcCggc3VidHlwZXMsIFN5bWJvbFBhcmVudFR5cGUsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHR5cGU7XG5cdFx0fVxuXHR9ICk7XG5cblx0Ly8gY29uc3QgVXJhbnVzID0gaXNTdWJUeXBlID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHByb3RvO1xuXHRjb25zdCBVcmFudXMgPSBpc1N1YlR5cGUgPyB1bmRlZmluZWQgOiBwcm90bztcblx0dHlwZXMuc2V0KCBUeXBlTmFtZSwgbmV3IFR5cGVQcm94eSggdHlwZSwgVXJhbnVzICkgKTtcblx0XG5cdC8vIHR5cGVzLnNldCggVHlwZU5hbWUsIG5ldyBUeXBlUHJveHkoIHR5cGUgKSApO1xuXG5cdHJldHVybiB0eXBlcy5nZXQoIFR5cGVOYW1lICk7XG5cbn0gYXMgdW5rbm93biBhcyBfSW50ZXJuYWxfVENfPFR5cGVEZXNjcmlwdG9ySW5zdGFuY2U+O1xuXG5PYmplY3QuYXNzaWduKCBUeXBlRGVzY3JpcHRvci5wcm90b3R5cGUsIGhvb2tzQXBpICk7XG5cblR5cGVEZXNjcmlwdG9yLnByb3RvdHlwZS5kZWZpbmUgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IFR5cGVEZXNjcmlwdG9ySW5zdGFuY2UsXG5cdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRjb25maWc/OiBvYmplY3Rcbikge1xuXHRyZXR1cm4gZGVmaW5lLmNhbGwoIGRlZmluZSwgdGhpcy5zdWJ0eXBlcyBhcyBNYXA8c3RyaW5nLCBvYmplY3Q+LCBUeXBlT3JUeXBlTmFtZSwgY29uc3RydWN0SGFuZGxlck9yQ29uZmlnLCBjb25maWcgKTtcbn07XG5cblR5cGVEZXNjcmlwdG9yLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IFR5cGVEZXNjcmlwdG9ySW5zdGFuY2UsXG5cdFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmdcbikge1xuXHRyZXR1cm4gbG9va3VwLmNhbGwoIHRoaXMuc3VidHlwZXMgYXMgTWFwPHN0cmluZywgb2JqZWN0PiwgVHlwZU5lc3RlZFBhdGggKTtcbn07XG5cbm9kcCggVHlwZURlc2NyaXB0b3IucHJvdG90eXBlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcblx0Z2V0ICh0aGlzOiBUeXBlRGVzY3JpcHRvckluc3RhbmNlKSB7XG5cdFx0cmV0dXJuIGdldFR5cGVDaGVja2VyKCB0aGlzLlR5cGVOYW1lICk7XG5cdH1cbn0gKTtcblxuLypcbmhlcmUgd2UgdXNlIGZ1bmN0aW9uIHRvIHJldHJlaXZlIGEgY29udHJ1Y3RvclxuYW5kIGNvbnN0cnVjdEhhbmRsZXJHZXR0ZXIgaXMgdGhhdCBmdW5jdGlvblxuKi9cbmNvbnN0IGRlZmluZVVzaW5nVHlwZSA9IGZ1bmN0aW9uIChcblx0dGhpczogQ2FsbGFibGVGdW5jdGlvbixcblx0c3VidHlwZXM6IE1hcDxzdHJpbmcsIG9iamVjdD4sXG5cdGNvbnN0cnVjdEhhbmRsZXJHZXR0ZXI6ICgpID0+IENhbGxhYmxlRnVuY3Rpb24sXG5cdGNvbmZpZzogY29uc3RydWN0b3JPcHRpb25zIHwgdW5kZWZpbmVkXG4pIHtcblx0Ly8gd2UgbmVlZCB0aGlzIHRvIGV4dHJhY3QgVHlwZU5hbWVcblx0Y29uc3QgdHlwZSA9IGNvbnN0cnVjdEhhbmRsZXJHZXR0ZXIoKTtcblxuXHRpZiAoIHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdHRocm93IG5ldyBIQU5ETEVSX01VU1RfQkVfQV9GVU5DVElPTjtcblx0fVxuXG5cdGNvbnN0IFR5cGVOYW1lID0gdHlwZS5uYW1lO1xuXG5cdGlmICggIVR5cGVOYW1lICkge1xuXHRcdHRocm93IG5ldyBUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HO1xuXHR9XG5cblx0Y29uc3QgYXNDbGFzcyA9IGlzQ2xhc3MoIHR5cGUgKTtcblxuXHRjb25zdCBtYWtlQ29uc3RydWN0SGFuZGxlciA9ICgpID0+IHtcblx0XHRjb25zdCBjb25zdHJ1Y3RIYW5kbGVyID0gY29uc3RydWN0SGFuZGxlckdldHRlcigpO1xuXHRcdC8vIGNvbnN0cnVjdEhhbmRsZXJbU3ltYm9sQ29uc3RydWN0b3JOYW1lXSA9IFR5cGVOYW1lO1xuXHRcdG9kcCggY29uc3RydWN0SGFuZGxlciwgU3ltYm9sQ29uc3RydWN0b3JOYW1lLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gVHlwZU5hbWU7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdFxuXHRcdC8vIHRoaXMgd2FzIGNoZWNraW5nIGZvciBjbGFzcyAvIGZ1bmN0aW9uXG5cdFx0Ly8gZnVuY3Rpb25zIGhhcyAud3JpdGFibGUgcHJvdG90eXBlXG5cdFx0Ly8gYW5kIGNsYXNzZXMgYXJlIGhhcyBub3Rcblx0XHRjb25zdCBwcm90b0Rlc2MgPSBPYmplY3Rcblx0XHRcdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoIGNvbnN0cnVjdEhhbmRsZXIsICdwcm90b3R5cGUnICkgYXMgUHJvcGVydHlEZXNjcmlwdG9yIHwgdW5kZWZpbmVkO1xuXHRcdGlmICggcHJvdG9EZXNjICYmIHByb3RvRGVzYy53cml0YWJsZSApIHtcblx0XHRcdC8vIGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlID0ge307XG5cdFx0XHRjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSA9IGdldERlZmF1bHRQcm90b3R5cGUoKTtcblx0XHR9XG5cdFx0XG5cdFx0Ly8gVE9ETzpcblx0XHQvLyBzaWRlLXdheSwgbm9uIGNvcnJlY3RseSB3b3JraW5nXG5cdFx0Ly8gd2l0aCBjcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yIGZvciBsaW5lXG5cdFx0Ly8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSwgcHJvcHMpO1xuXHRcdC8vIGZvciByZXBlYXRhYmxlIGluc3RhbmNlIGNyZWF0aW9uc1xuXHRcdC8vIOKGk+KGk+KGkyDihpPihpPihpMg4oaT4oaT4oaTXG5cdFx0Ly8gZWxzZSB7XG5cdFx0Ly8gXHQvLyBzbyBsZXQgdXNlIE9iamVjdC5zZXRQcm90b3R5cGVPZiBpbnN0ZWFkXG5cdFx0Ly8gXHQvLyBPYmplY3Quc2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlKSwgZ2V0RGVmYXVsdFByb3RvdHlwZSgpKTtcblx0XHQvLyBcdE9iamVjdC5zZXRQcm90b3R5cGVPZihjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSwgZ2V0RGVmYXVsdFByb3RvdHlwZSgpKTtcblx0XHQvLyB9XG5cblx0XHRyZXR1cm4gY29uc3RydWN0SGFuZGxlcjtcblx0fTtcblxuXHRpZiAoIHR5cGVvZiBjb25maWcgPT09ICdvYmplY3QnICkge1xuXHRcdGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oIHt9LCBjb25maWcgKTtcblx0fSBlbHNlIHtcblx0XHRjb25maWcgPSB7fTtcblx0fVxuXG5cdGNvbmZpZy5hc0NsYXNzID0gYXNDbGFzcztcblxuXHRyZXR1cm4gbmV3IFR5cGVEZXNjcmlwdG9yKFxuXHRcdHRoaXMsXG5cdFx0c3VidHlwZXMsXG5cdFx0VHlwZU5hbWUsXG5cdFx0bWFrZUNvbnN0cnVjdEhhbmRsZXIsXG5cdFx0dHlwZS5wcm90b3R5cGUsXG5cdFx0Y29uZmlnXG5cdCk7XG59O1xuXG5cbi8qXG5oZXJlIHdlIGRpcmVjdGx5IHBhc3NpbmcgY29uc3RydWN0SGFuZGxlclxuYXMgYSBjb25zdHJ1Y3RvciBmb3IgaW5zdGFuY2VzIGNyZWF0aW9uc1xuKi9cbmNvbnN0IGRlZmluZVVzaW5nRnVuY3Rpb24gPSBmdW5jdGlvbiAoXG5cdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+LFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHRjb25zdHJ1Y3RIYW5kbGVyOiBDYWxsYWJsZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkgeyB9LFxuXHRjb25maWc6IGNvbnN0cnVjdG9yT3B0aW9ucyA9IHt9XG4pIHtcblxuXHRpZiAoIHR5cGVvZiBjb25zdHJ1Y3RIYW5kbGVyICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdHRocm93IG5ldyBIQU5ETEVSX01VU1RfQkVfQV9GVU5DVElPTjtcblx0fVxuXG5cdGNvbnN0IGFzQ2xhc3MgPSBpc0NsYXNzKCBjb25zdHJ1Y3RIYW5kbGVyICk7XG5cdGNvbnN0IG1vZGlmaWNhdG9yQm9keSA9IGNvbXBpbGVOZXdNb2RpZmljYXRvckZ1bmN0aW9uQm9keSggVHlwZU5hbWUsIGFzQ2xhc3MgKTtcblxuXHRjb25zdCBtYWtlQ29uc3RydWN0SGFuZGxlciA9IG1vZGlmaWNhdG9yQm9keShcblx0XHRjb25zdHJ1Y3RIYW5kbGVyLFxuXHRcdENyZWF0aW9uSGFuZGxlcixcblx0XHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcblx0KTtcblxuXHRpZiAoIGNvbmZpZyBpbnN0YW5jZW9mIEZ1bmN0aW9uICkge1xuXHRcdGNvbmZpZyA9IHtcblx0XHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yIDogY29uZmlnXG5cdFx0fTtcblx0fVxuXG5cdGlmICggdHlwZW9mIGNvbmZpZyAhPT0gJ29iamVjdCcgKSB7XG5cdFx0Y29uZmlnID0ge307XG5cdH1cblxuXG5cdGNvbmZpZy5hc0NsYXNzID0gYXNDbGFzcztcblxuXHRjb25zdCBwcm90byA9IChcblx0XHRob3AoIGNvbnN0cnVjdEhhbmRsZXIsICdwcm90b3R5cGUnICkgJiZcblx0XHQvLyB1c2luZyDihpPihpPihpMgY2F1c2UgZm9yIHByb3h5IGluIGNoYWluIGlzIGluc3RhbmNlb2YgZmFpbHNcblx0XHQvLyBhbmQgYWxzbyBmYWlscyBmb3IganVzdCBPYmplY3QuY3JlYXRlKG51bGwpXG5cdFx0KCB0eXBlb2YgY29uc3RydWN0SGFuZGxlci5wcm90b3R5cGUgPT09ICdvYmplY3QnIClcblx0Ly8gKSA/IGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0KSA/IGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlIDogZ2V0RGVmYXVsdFByb3RvdHlwZSgpO1xuXHRcblx0Ly8gbGV0IHByb3RvID0ge307XG5cdC8vIGlmICggaG9wKCBjb25zdHJ1Y3RIYW5kbGVyLCAncHJvdG90eXBlJyApICYmICggY29uc3RydWN0SGFuZGxlci5wcm90b3R5cGUgaW5zdGFuY2VvZiBPYmplY3QgKSApIHtcblx0Ly8gXHRwcm90byA9IE9iamVjdC5hc3NpZ24oIHt9LCBjb25zdHJ1Y3RIYW5kbGVyLnByb3RvdHlwZSApO1xuXHQvLyBcdE9iamVjdC5zZXRQcm90b3R5cGVPZiggcHJvdG8sIGNvbnN0cnVjdEhhbmRsZXIucHJvdG90eXBlICk7XG5cdC8vIH1cblxuXHRyZXR1cm4gbmV3IFR5cGVEZXNjcmlwdG9yKFxuXHRcdHRoaXMsXG5cdFx0c3VidHlwZXMsXG5cdFx0VHlwZU5hbWUsXG5cdFx0bWFrZUNvbnN0cnVjdEhhbmRsZXIsXG5cdFx0Ly8gcHJvdG8gcHJvcCBmb3IgVHlwZURlc2NyaXB0b3Jcblx0XHRwcm90byxcblx0XHRjb25maWdcblx0KTtcblxufTtcblxuXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0Pixcblx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZz86IENhbGxhYmxlRnVuY3Rpb24gfCBvYmplY3QsXG5cdGNvbmZpZz86IG9iamVjdFxuKTogVHlwZUNsYXNzIHtcblxuXHRpZiAoIHR5cGVvZiBUeXBlT3JUeXBlTmFtZSA9PT0gJ2Z1bmN0aW9uJyApIHtcblx0XHQvLyBUT0RPOiBpZiAoIGhvcCggVHlwZU9yVHlwZU5hbWUsICduYW1lJyApICkge1xuXHRcdC8vIFRPRE86IGlmICggaG9wKCBUeXBlT3JUeXBlTmFtZS5jb25zdHJ1Y3RvciwgJ25hbWUnICkgKSB7XG5cdFx0aWYgKCBUeXBlT3JUeXBlTmFtZS5uYW1lICkge1xuXHRcdFx0XG5cdFx0XHRjb25zdCBUeXBlID0gbG9va3VwLmNhbGwoIHN1YnR5cGVzLCBUeXBlT3JUeXBlTmFtZS5uYW1lICk7XG5cblx0XHRcdGlmICggVHlwZSApIHtcblx0XHRcdFx0Ly8gZGVidWdnZXI7XG5cdFx0XHRcdHRocm93IG5ldyBBTFJFQURZX0RFQ0xBUkVEKCBUeXBlT3JUeXBlTmFtZS5uYW1lICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkZWZpbmUuY2FsbCggdGhpcywgc3VidHlwZXMsIFR5cGVPclR5cGVOYW1lLm5hbWUsIFR5cGVPclR5cGVOYW1lLCBjb25maWcgKTtcblxuXHRcdH0gZWxzZSB7XG5cdFx0XHQgXG5cdFx0XHRyZXR1cm4gKGRlZmluZVVzaW5nVHlwZSBhcyBhbnkpLmNhbGwoXG5cdFx0XHRcdHRoaXMsXG5cdFx0XHRcdHN1YnR5cGVzLFxuXHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnID8gY29uc3RydWN0SGFuZGxlck9yQ29uZmlnIDogVHlwZU9yVHlwZU5hbWVcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCB0eXBlb2YgVHlwZU9yVHlwZU5hbWUgPT09ICdzdHJpbmcnICkge1xuXG5cdFx0Y2hlY2tUeXBlTmFtZSggVHlwZU9yVHlwZU5hbWUgKTtcblxuXHRcdGNvbnN0IHNwbGl0ID0gZ2V0VHlwZVNwbGl0UGF0aCggVHlwZU9yVHlwZU5hbWUgKTtcblxuXHRcdGNvbnN0IFR5cGUgPSBsb29rdXAuY2FsbCggc3VidHlwZXMsIHNwbGl0WyAwIF0gKTtcblx0XHRcblx0XHRpZiAoIVR5cGUpIHtcblxuXHRcdFx0aWYgKCBzcGxpdC5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRcdCBcblx0XHRcdFx0cmV0dXJuIChkZWZpbmVVc2luZ0Z1bmN0aW9uIGFzIGFueSkuY2FsbChcblx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdHN1YnR5cGVzLFxuXHRcdFx0XHRcdFR5cGVPclR5cGVOYW1lLFxuXHRcdFx0XHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZyxcblx0XHRcdFx0XHRjb25maWdcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRXhpc3RlbnQuZGVmaW5lKCdNaXNzaW5nLldhbnRlZCcpXG5cdFx0XHR0aHJvdyBuZXcgV1JPTkdfVFlQRV9ERUZJTklUSU9OKCBgcGFyZW50ICR7c3BsaXRbIDAgXX0gZGVmaW5pdGlvbiBpcyBub3QgeWV0IGV4aXN0cyFgICk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgVHlwZU5hbWUgPSBzcGxpdC5zbGljZSggMSApLmpvaW4oICcuJyApO1xuXG5cdFx0aWYgKCBzcGxpdC5sZW5ndGggPiAxICkge1xuXHRcdFx0cmV0dXJuIGRlZmluZS5jYWxsKCB0aGlzLCBUeXBlLnN1YnR5cGVzIGFzIE1hcDxzdHJpbmcsIG9iamVjdD4sIFR5cGVOYW1lLCBjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsIGNvbmZpZyApO1xuXHRcdH1cblxuXG5cdFx0aWYgKHNwbGl0Lmxlbmd0aCA9PT0gMSkge1xuXG5cdFx0XHRpZiAoY29uc3RydWN0SGFuZGxlck9yQ29uZmlnIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblxuXHRcdFx0XHQvLyBkZWJ1Z2dlcjtcblxuXHRcdFx0XHQvLyBpZiAoY29uc3RydWN0SGFuZGxlck9yQ29uZmlnLm5hbWUgPT09IFR5cGUuVHlwZU5hbWUpIHtcblx0XHRcdFx0Ly8gXHR0aHJvdyBuZXcgQUxSRUFEWV9ERUNMQVJFRCggVHlwZU9yVHlwZU5hbWUgKTtcblx0XHRcdFx0Ly8gfVxuXHRcdFx0XHRcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdFx0XHQvLyB3ZSBuZWVkIHRoaXMgdG8gZXh0cmFjdCBUeXBlTmFtZVxuXHRcdFx0XHRcdGNvbnN0IHR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcoKTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRpZiAoICEodHlwZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSApIHtcblx0XHRcdFx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEFMUkVBRFlfREVDTEFSRUQoIFR5cGVPclR5cGVOYW1lICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCB0eXBlLm5hbWUubGVuZ3RoID09PSAwICkge1xuXHRcdFx0XHRcdFx0Ly8gZGVidWdnZXI7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgQUxSRUFEWV9ERUNMQVJFRCggVHlwZU9yVHlwZU5hbWUgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBpZiAodHlwZS5uYW1lLmxlbmd0aCA+IDAgJiYgdHlwZS5uYW1lID09PSBUeXBlLlR5cGVOYW1lKSB7XG5cdFx0XHRcdFx0Ly8gXHRkZWJ1Z2dlcjtcblx0XHRcdFx0XHQvLyBcdHRocm93IG5ldyBBTFJFQURZX0RFQ0xBUkVEKCBUeXBlT3JUeXBlTmFtZSApO1xuXHRcdFx0XHRcdC8vIH1cblx0XG5cdFx0XHRcdH0gY2F0Y2gge1xuXG5cdFx0XHRcdFx0cmV0dXJuIChkZWZpbmVVc2luZ0Z1bmN0aW9uIGFzIGFueSkuY2FsbChcblx0XHRcdFx0XHRcdHRoaXMsXG5cdFx0XHRcdFx0XHRzdWJ0eXBlcyxcblx0XHRcdFx0XHRcdFR5cGVPclR5cGVOYW1lLFxuXHRcdFx0XHRcdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnLFxuXHRcdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdC8vIHNvLCBoZXJlIHdlIGdvIHdpdGhcblx0XHQvLyBkZWZpbmVVc2luZ1R5cGUuY2FsbFxuXHRcdC8vIGZyb20gdGhlIG5leHQgc3RlcFxuXHRcdHJldHVybiBkZWZpbmUuY2FsbChcblx0XHRcdHRoaXMgYXMgdW5rbm93biBhcyBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0VHlwZS5zdWJ0eXBlcyBhcyBNYXA8c3RyaW5nLCBvYmplY3Q+LFxuXHRcdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnIGFzIENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRjb25maWdcblx0XHQpO1xuXG5cdH1cblxuXHR0aHJvdyBuZXcgV1JPTkdfVFlQRV9ERUZJTklUSU9OKCAnZGVmaW5pdGlvbiBpcyBub3QgcHJvdmlkZWQnICk7XG5cbn07XG5cbmV4cG9ydCBjb25zdCBsb29rdXAgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IE1hcDxzdHJpbmcsIG9iamVjdD4sXG5cdFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmdcbik6IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB7XG5cblx0aWYgKCB0eXBlb2YgVHlwZU5lc3RlZFBhdGggIT09ICdzdHJpbmcnICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19UWVBFX0RFRklOSVRJT04oICdhcmcgOiB0eXBlIG5lc3RlZCBwYXRoIG11c3QgYmUgYSBzdHJpbmcnICk7XG5cdH1cblxuXHRpZiAoICFUeXBlTmVzdGVkUGF0aC5sZW5ndGggKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX1RZUEVfREVGSU5JVElPTiggJ2FyZyA6IHR5cGUgbmVzdGVkIHBhdGggaGFzIG5vIHBhdGgnICk7XG5cdH1cblxuXHRjb25zdCBzcGxpdCA9IGdldFR5cGVTcGxpdFBhdGgoIFR5cGVOZXN0ZWRQYXRoICk7XG5cblx0Y29uc3QgWyBuYW1lIF0gPSBzcGxpdDtcblx0Y29uc3QgdHlwZSA9IHRoaXMuZ2V0KCBuYW1lICkgYXMgVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuXHRpZiAoIHNwbGl0Lmxlbmd0aCA9PT0gMSApIHtcblx0XHRyZXR1cm4gdHlwZTtcblx0fVxuXG5cdGNvbnN0IE5leHROZXN0ZWRQYXRoID0gc3BsaXQuc2xpY2UoIDEgKS5qb2luKCAnLicgKTtcblx0aWYgKCF0eXBlKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gbG9va3VwLmNhbGwoIHR5cGUuc3VidHlwZXMgYXMgTWFwPHN0cmluZywgb2JqZWN0PiwgTmV4dE5lc3RlZFBhdGggKTtcblxufTtcblxuXG5cbiJdfQ==
package/build/index.js CHANGED
@@ -105,4 +105,4 @@ var utils_1 = require("./utils");
105
105
  Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return utils_1.utils; } });
106
106
  var utils_2 = require("./utils");
107
107
  Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return utils_2.defineStackCleaner; } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7O0FBa0JiLDZDQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBR2YsMkNBQXVEO0FBQTlDLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUUzQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsMENBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxxREFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUdwRCxvQkFBWSxHQUNULHlCQUFXLGNBQUM7QUFFaEIsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsT0FBTyxPQUFPLEtBQUssaUJBQVMsSUFBSSxPQUFPLEtBQUssT0FBTyxDQUFDO0FBQ3JELENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxPQUFRLEtBQWtDO1NBQ3hDLE1BQU0sQ0FBQyxRQUFrQixFQUFFLGdCQUEyQixFQUFFLE1BQU0sQ0FBaUIsQ0FBQztBQUNuRixDQUFpQixDQUFDO0FBRVgsTUFBTSxNQUFNLEdBQUcsVUFFckIsY0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJ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c0QsQ0FBQztBQUd4SCxRQUFBLGlCQUFpQixHQUFJLG9CQUFrRCxDQUFDLFFBQVEsQ0FBQztBQUNqRixRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcblx0Q3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24sXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdElEZWZpbml0b3JJbnN0YW5jZSxcblx0Q29uc3RydWN0b3IsXG5cdERlY29yYXRlZENsYXNzLFxuXHRUeXBlQ2xhc3MsXG5cdFR5cGVBYnNvcmJlcixcblx0TW5lbW9uaWNhTW9kdWxlLFxuXHRUeXBlQ29uc3RydWN0b3Jcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4vYXBpL3V0aWxzL2luZGV4JztcbmV4cG9ydCBjb25zdCB7XG5cdGlzQ2xhc3MsXG5cdGZpbmRTdWJUeXBlRnJvbVBhcmVudCxcbn0gPSBUeXBlc1V0aWxzO1xuXG5leHBvcnQgdHlwZSB7IElERUYsIFR5cGVDb25zdHJ1Y3RvciwgX0ludGVybmFsX1RDXywgUHJvdG8sIFByb3RvRmxhdCB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgZ2V0UHJvcHMsIHNldFByb3BzIH0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gfSA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL2FwaS90eXBlcy9NbmVtb3N5bmUnO1xuY29uc3QgeyBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiB9ID0gbW5lbW9zeW5lcztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmYXVsdFR5cGVzLFxufSA9IGRlc2NyaXB0b3JzO1xuXG5mdW5jdGlvbiBjaGVja1RoaXMocG9pbnRlcjogdHlwZW9mIG1uZW1vbmljYSB8IHR5cGVvZiBleHBvcnRzIHwgdW5rbm93bik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gcG9pbnRlciA9PT0gbW5lbW9uaWNhIHx8IHBvaW50ZXIgPT09IGV4cG9ydHM7XG59XG5cblxuLy8gRGVmaW5lIGZ1bmN0aW9uIHVzaW5nIFR5cGVBYnNvcmJlciBpbnRlcmZhY2Ugd2l0aCBwcm9wZXIgdHlwZSBjYXN0aW5nXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgb2JqZWN0LFxuXHRQIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuXHROIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPixcblxuXHQvLyBoZXJlIElEZWZpbml0b3JJbnN0YW5jZSBpcyBhIENPTlNUUlVDVE9SICEhIVxuXHRSIGV4dGVuZHMgSURlZmluaXRvckluc3RhbmNlPE4+ID0gSURlZmluaXRvckluc3RhbmNlPE4+XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZT86IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24sXG5cdC8vIEFsbG93IGJvdGggc3RyaWN0IElERUYgYW5kIG1vcmUgZmxleGlibGUgZnVuY3Rpb24gc2lnbmF0dXJlc1xuXHRjb25zdHJ1Y3RIYW5kbGVyPzogSURFRjxUPiB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24gfCBvYmplY3QgfCBib29sZWFuLFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMsXG4pOiBSIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRyZXR1cm4gKHR5cGVzIGFzIHsgZGVmaW5lOiBUeXBlQWJzb3JiZXIgfSlcblx0XHQuZGVmaW5lKFR5cGVOYW1lIGFzIHN0cmluZywgY29uc3RydWN0SGFuZGxlciBhcyBJREVGPFQ+LCBjb25maWcpIGFzIHVua25vd24gYXMgUjtcbn0gYXMgVHlwZUFic29yYmVyO1xuXG5leHBvcnQgY29uc3QgbG9va3VwID0gZnVuY3Rpb24gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG4pOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQge1xuXHRjb25zdCB0eXBlcyA9IGNoZWNrVGhpcyh0aGlzKSA/IGRlZmF1bHRUeXBlcyA6IHRoaXMgfHwgZGVmYXVsdFR5cGVzO1xuXHQvLyBUeXBlIGFzc2VydGlvbiBuZWVkZWQgYmVjYXVzZSBUeXBlc0NvbGxlY3Rpb25Qcm94eSBpcyBhIFByb3h5XG5cdHJldHVybiAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVSZWdpc3RyeSBpbnRlcmZhY2UgLSBhdWdtZW50IHRoaXMgaW4geW91ciBwcm9qZWN0XG4gKiB2aWEgZGVjbGFyYXRpb24gbWVyZ2luZyB3aGVuIHVzaW5nIHRhY3RpY2FcbiAqXG4gKiBFeGFtcGxlIChnZW5lcmF0ZWQgYnkgdGFjdGljYSBpbiAudGFjdGljYS9yZWdpc3RyeS50cyk6XG4gKiAgIGRlY2xhcmUgbW9kdWxlICdtbmVtb25pY2EnIHtcbiAqICAgICBpbnRlcmZhY2UgVHlwZVJlZ2lzdHJ5IHtcbiAqICAgICAgICdNeVR5cGUnOiBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gTXlUeXBlSW5zdGFuY2U7XG4gKiAgICAgfVxuICogICB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZVJlZ2lzdHJ5IHtcblx0W2tleTogc3RyaW5nXTogVHlwZUNvbnN0cnVjdG9yPG5ldmVyPjtcbn1cblxuLyoqXG4gKiBUeXBlLXNhZmUgbG9va3VwIGZ1bmN0aW9uIC0gcmVxdWlyZXMgVHlwZVJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiBmcm9tIHRhY3RpY2FcbiAqIEdlbmVyYXRlIHR5cGVzIHdpdGggdGFjdGljYSwgdGhlbiB1c2U6XG4gKiAgIGNvbnN0IFNvbWVUeXBlID0gbG9va3VwVHlwZWQoJ1NvbWVUeXBlJyk7XG4gKiAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNvbWVUeXBlKHsgLi4uIH0pOyAvLyBGdWxsIHR5cGUgc2FmZXR5IVxuICovXG5leHBvcnQgY29uc3QgbG9va3VwVHlwZWQgPSBmdW5jdGlvbiA8XG5cdGNvbnN0IEsgZXh0ZW5kcyBrZXlvZiBUeXBlUmVnaXN0cnlcbj4oXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOZXN0ZWRQYXRoOiBLXG4pOiBUeXBlUmVnaXN0cnlbS10gIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0cmV0dXJuICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFR5cGVOYW1lLCBlbnRpdHkpIGFzIHsgbmV3KC4uLmFyczogdW5rbm93bltdKTogdW5rbm93biB9O1xuXHQvLyBUT0RPOiBjaGVjayBsaW5lcyBiZWxvdyBhbmQgaWYgQ29uc3RydWN0b3IgaXMgbm90IG1uZW1vbml6ZWQgLi4uXG5cdGlmIChDc3RyID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgKFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3IpKGBbICR7VHlwZU5hbWV9IF0gaXMgbm90IGRlZmluZWQgYXMgYSBUeXBlIENvbnN0cnVjdG9yIG9uIHVzZWQgaW5zdGFuY2VgKTtcblx0fVxuXHRjb25zdCByZXN1bHQgPSBuZXcgQ3N0ciguLi5hcmdzKTtcblx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHJldHVybmluZyByZXN1bHQgYXMgbWVyZ2VkIHByb3RvIHR5cGVcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFRPRE86IGFwcGx5IGluc3RhbmNlIC50byB0eXBlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGFwcGx5ID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0YXJnczogdW5rbm93bltdID0gW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ3RvciwgYXJncyk7XG59O1xuXG4vLyBUT0RPOiBjYWxsIHR5cGUgLmJ5IGluc3RhbmNlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGNhbGwgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHQuLi5hcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ3RvciwgYXJncyk7XG59O1xuXG4vLyBUT0RPOiBiaW5kIHR5cGUgLndpdGggaW5zdGFuY2Ug4oaSICguLi5hcmdzKVxuZXhwb3J0IGNvbnN0IGJpbmQgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+XG4pOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxufSB7XG5cdHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0cmV0dXJuICRydW48RSwgVCwgUz4oZW50aXR5LCBDdG9yLCBhcmdzKTtcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvcmF0ZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4gfCBjb25zdHJ1Y3Rvck9wdGlvbnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbj4oXG5cdHRhcmdldD86IFQsXG5cdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9uc1xuKTogPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKSA9PiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdGNvbnN0IG9wdHMgPSAoY29uZmlnID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgISh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbikpXG5cdFx0PyB0YXJnZXQgYXMgY29uc3RydWN0b3JPcHRpb25zXG5cdFx0OiBjb25maWc7XG5cblx0Y29uc3QgcGFyZW50VHlwZSA9ICh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbilcblx0XHQ/IHRhcmdldCBhcyBDb25zdHJ1Y3RvcjxvYmplY3Q+XG5cdFx0OiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgZGVjb3JhdG9yID0gZnVuY3Rpb24gPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKTogRGVjb3JhdGVkQ2xhc3M8VT4ge1xuXHRcdGNvbnN0IHsgbmFtZSB9ID0gY3N0cjtcblx0XHRpZiAocGFyZW50VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmaW5lKG5hbWUsIGNzdHIgYXMgSURFRjxvYmplY3Q+LCBvcHRzKSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnQgPSBwYXJlbnRUeXBlIGFzIHVua25vd24gYXMge1xuXHRcdFx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdFx0fTtcblx0XHRyZXR1cm4gcGFyZW50LmRlZmluZShuYW1lLCBjc3RyIGFzIElERUY8b2JqZWN0Piwgb3B0cykgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0fTtcblx0cmV0dXJuIGRlY29yYXRvcjtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVySG9vayA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8VD4+KEN0b3I6IERlY29yYXRlZENsYXNzPFQ+LCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkIHtcblx0Q3Rvci5yZWdpc3Rlckhvb2soaG9va1R5cGUsIGNiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtbmVtb25pY2EgPSBPYmplY3QuZW50cmllcyh7XG5cblx0ZGVmaW5lLFxuXHRsb29rdXAsXG5cdGFwcGx5LFxuXHRjYWxsLFxuXHRiaW5kLFxuXHRkZWNvcmF0ZSxcblx0cmVnaXN0ZXJIb29rLFxuXG5cdC4uLmRlc2NyaXB0b3JzLFxuXG5cdC4uLmVycm9yc0FwaSxcblx0Li4uY29uc3RhbnRzLFxuXG59KS5yZWR1Y2UoKGFjYzogeyBbaW5kZXg6IHN0cmluZ106IHVua25vd24gfSwgZW50cnk6IFtzdHJpbmcsIHVua25vd25dKSA9PiB7XG5cdGNvbnN0IFsgbmFtZSwgY29kZSBdID0gZW50cnk7XG5cdG9kcChhY2MsIG5hbWUsIHtcblx0XHRnZXQoKSB7XG5cdFx0XHRyZXR1cm4gY29kZTtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0pO1xuXHRyZXR1cm4gYWNjO1xufSwge30pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9IG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7O0FBa0JiLDZDQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBR2YsMkNBQXVEO0FBQTlDLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUUzQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsMENBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxxREFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUdwRCxvQkFBWSxHQUNULHlCQUFXLGNBQUM7QUFFaEIsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsT0FBTyxPQUFPLEtBQUssaUJBQVMsSUFBSSxPQUFPLEtBQUssT0FBTyxDQUFDO0FBQ3JELENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxPQUFRLEtBQWtDO1NBQ3hDLE1BQU0sQ0FBQyxRQUFrQixFQUFFLGdCQUEyQixFQUFFLE1BQU0sQ0FBaUIsQ0FBQztBQUNuRixDQUFpQixDQUFDO0FBRVgsTUFBTSxNQUFNLEdBQUcsVUFFckIsY0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJ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c0QsQ0FBQztBQUd4SCxRQUFBLGlCQUFpQixHQUFJLG9CQUFrRCxDQUFDLFFBQVEsQ0FBQztBQUNqRixRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcblx0Q3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24sXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdElEZWZpbml0b3JJbnN0YW5jZSxcblx0Q29uc3RydWN0b3IsXG5cdERlY29yYXRlZENsYXNzLFxuXHRUeXBlQ2xhc3MsXG5cdFR5cGVBYnNvcmJlcixcblx0TW5lbW9uaWNhTW9kdWxlLFxuXHRUeXBlQ29uc3RydWN0b3Jcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4vYXBpL3V0aWxzL2luZGV4JztcbmV4cG9ydCBjb25zdCB7XG5cdGlzQ2xhc3MsXG5cdGZpbmRTdWJUeXBlRnJvbVBhcmVudCxcbn0gPSBUeXBlc1V0aWxzO1xuXG5leHBvcnQgdHlwZSB7IElERUYsIFR5cGVDb25zdHJ1Y3RvciwgX0ludGVybmFsX1RDXywgUHJvdG8sIFByb3RvRmxhdCB9IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgZ2V0UHJvcHMsIHNldFByb3BzIH0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gfSA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL2FwaS90eXBlcy9NbmVtb3N5bmUnO1xuY29uc3QgeyBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiB9ID0gbW5lbW9zeW5lcztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmYXVsdFR5cGVzLFxufSA9IGRlc2NyaXB0b3JzO1xuXG5mdW5jdGlvbiBjaGVja1RoaXMocG9pbnRlcjogdHlwZW9mIG1uZW1vbmljYSB8IHR5cGVvZiBleHBvcnRzIHwgdW5rbm93bik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gcG9pbnRlciA9PT0gbW5lbW9uaWNhIHx8IHBvaW50ZXIgPT09IGV4cG9ydHM7XG59XG5cblxuLy8gRGVmaW5lIGZ1bmN0aW9uIHVzaW5nIFR5cGVBYnNvcmJlciBpbnRlcmZhY2Ugd2l0aCBwcm9wZXIgdHlwZSBjYXN0aW5nXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgb2JqZWN0LFxuXHRQIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuXHROIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPixcblxuXHQvLyBoZXJlIElEZWZpbml0b3JJbnN0YW5jZSBpcyBhIENPTlNUUlVDVE9SICEhIVxuXHRSIGV4dGVuZHMgSURlZmluaXRvckluc3RhbmNlPE4+ID0gSURlZmluaXRvckluc3RhbmNlPE4+XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZT86IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24sXG5cdC8vIEFsbG93IGJvdGggc3RyaWN0IElERUYgYW5kIG1vcmUgZmxleGlibGUgZnVuY3Rpb24gc2lnbmF0dXJlc1xuXHRjb25zdHJ1Y3RIYW5kbGVyPzogSURFRjxUPiB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24gfCBvYmplY3QgfCBib29sZWFuLFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMsXG4pOiBSIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRyZXR1cm4gKHR5cGVzIGFzIHsgZGVmaW5lOiBUeXBlQWJzb3JiZXIgfSlcblx0XHQuZGVmaW5lKFR5cGVOYW1lIGFzIHN0cmluZywgY29uc3RydWN0SGFuZGxlciBhcyBJREVGPFQ+LCBjb25maWcpIGFzIHVua25vd24gYXMgUjtcbn0gYXMgVHlwZUFic29yYmVyO1xuXG5leHBvcnQgY29uc3QgbG9va3VwID0gZnVuY3Rpb24gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG4pOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQge1xuXHRjb25zdCB0eXBlcyA9IGNoZWNrVGhpcyh0aGlzKSA/IGRlZmF1bHRUeXBlcyA6IHRoaXMgfHwgZGVmYXVsdFR5cGVzO1xuXHQvLyBUeXBlIGFzc2VydGlvbiBuZWVkZWQgYmVjYXVzZSBUeXBlc0NvbGxlY3Rpb25Qcm94eSBpcyBhIFByb3h5XG5cdHJldHVybiAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVSZWdpc3RyeSBpbnRlcmZhY2UgLSBhdWdtZW50IHRoaXMgaW4geW91ciBwcm9qZWN0XG4gKiB2aWEgZGVjbGFyYXRpb24gbWVyZ2luZyB3aGVuIHVzaW5nIHRhY3RpY2EuXG4gKlxuICogVXNlcyBgbmV2ZXJgIGFzIHRoZSB2YWx1ZSB0eXBlIHRvIGVuZm9yY2UgYXVnbWVudGF0aW9uIHZpYSBkZWNsYXJhdGlvblxuICogbWVyZ2luZy4gV2l0aG91dCBhdWdtZW50YXRpb24sIGFueSBrZXkgbG9va3VwIHdpbGwgcHJvZHVjZSBhIGNvbXBpbGUtdGltZVxuICogZXJyb3IgYmVjYXVzZSBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgaXMgbm90IGFzc2lnbmFibGUgdG8gY29uY3JldGUgdHlwZXMuXG4gKlxuICogRXhhbXBsZSAoZ2VuZXJhdGVkIGJ5IHRhY3RpY2EgaW4gLnRhY3RpY2EvcmVnaXN0cnkudHMpOlxuICogICBkZWNsYXJlIG1vZHVsZSAnbW5lbW9uaWNhJyB7XG4gKiAgICAgaW50ZXJmYWNlIFR5cGVSZWdpc3RyeSB7XG4gKiAgICAgICAnTXlUeXBlJzogbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IE15VHlwZUluc3RhbmNlO1xuICogICAgIH1cbiAqICAgfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVSZWdpc3RyeSB7XG5cdFtrZXk6IHN0cmluZ106IFR5cGVDb25zdHJ1Y3RvcjxuZXZlcj47XG59XG5cbi8qKlxuICogVHlwZS1zYWZlIGxvb2t1cCBmdW5jdGlvbiAtIHJlcXVpcmVzIFR5cGVSZWdpc3RyeSBhdWdtZW50YXRpb24gZnJvbSB0YWN0aWNhLlxuICogQXQgcnVudGltZSB0aGlzIGRlbGVnYXRlcyB0byBsb29rdXAoKS4gVGhlIHR5cGUgc2FmZXR5IGlzIGNvbXBpbGUtdGltZSBvbmx5OlxuICogVHlwZVNjcmlwdCByZXNvbHZlcyB0aGUga2V5IGFnYWluc3QgdGhlIGF1Z21lbnRlZCBUeXBlUmVnaXN0cnkgYW5kIHJldHVybnNcbiAqIHRoZSBjb25zdHJ1Y3RvcidzIHR5cGUgc2lnbmF0dXJlLlxuICpcbiAqIEdlbmVyYXRlIHR5cGVzIHdpdGggdGFjdGljYSwgdGhlbiB1c2U6XG4gKiAgIGNvbnN0IFNvbWVUeXBlID0gbG9va3VwVHlwZWQoJ1NvbWVUeXBlJyk7XG4gKiAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFNvbWVUeXBlKHsgLi4uIH0pOyAvLyBGdWxsIHR5cGUgc2FmZXR5IVxuICovXG5leHBvcnQgY29uc3QgbG9va3VwVHlwZWQgPSBmdW5jdGlvbiA8XG5cdGNvbnN0IEsgZXh0ZW5kcyBrZXlvZiBUeXBlUmVnaXN0cnlcbj4oXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOZXN0ZWRQYXRoOiBLXG4pOiBUeXBlUmVnaXN0cnlbS10gIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0cmV0dXJuICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFR5cGVOYW1lLCBlbnRpdHkpIGFzIHsgbmV3KC4uLmFyczogdW5rbm93bltdKTogdW5rbm93biB9O1xuXHQvLyBUT0RPOiBjaGVjayBsaW5lcyBiZWxvdyBhbmQgaWYgQ29uc3RydWN0b3IgaXMgbm90IG1uZW1vbml6ZWQgLi4uXG5cdGlmIChDc3RyID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgKFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3IpKGBbICR7VHlwZU5hbWV9IF0gaXMgbm90IGRlZmluZWQgYXMgYSBUeXBlIENvbnN0cnVjdG9yIG9uIHVzZWQgaW5zdGFuY2VgKTtcblx0fVxuXHRjb25zdCByZXN1bHQgPSBuZXcgQ3N0ciguLi5hcmdzKTtcblx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHJldHVybmluZyByZXN1bHQgYXMgbWVyZ2VkIHByb3RvIHR5cGVcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFRPRE86IGFwcGx5IGluc3RhbmNlIC50byB0eXBlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGFwcGx5ID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0YXJnczogdW5rbm93bltdID0gW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ3RvciwgYXJncyk7XG59O1xuXG4vLyBUT0RPOiBjYWxsIHR5cGUgLmJ5IGluc3RhbmNlIC53aXRoIGFyZ3VtZW50c1xuZXhwb3J0IGNvbnN0IGNhbGwgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHQuLi5hcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cdHJldHVybiAkcnVuPEUsIFQsIFM+KGVudGl0eSwgQ3RvciwgYXJncyk7XG59O1xuXG4vLyBUT0RPOiBiaW5kIHR5cGUgLndpdGggaW5zdGFuY2Ug4oaSICguLi5hcmdzKVxuZXhwb3J0IGNvbnN0IGJpbmQgPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+XG4pOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFtrZXkgaW4ga2V5b2YgU106IFNba2V5XVxufSB7XG5cdHJldHVybiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG5cdFx0cmV0dXJuICRydW48RSwgVCwgUz4oZW50aXR5LCBDdG9yLCBhcmdzKTtcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWNvcmF0ZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4gfCBjb25zdHJ1Y3Rvck9wdGlvbnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbj4oXG5cdHRhcmdldD86IFQsXG5cdGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9uc1xuKTogPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKSA9PiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdGNvbnN0IG9wdHMgPSAoY29uZmlnID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgISh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbikpXG5cdFx0PyB0YXJnZXQgYXMgY29uc3RydWN0b3JPcHRpb25zXG5cdFx0OiBjb25maWc7XG5cblx0Y29uc3QgcGFyZW50VHlwZSA9ICh0YXJnZXQgaW5zdGFuY2VvZiBGdW5jdGlvbilcblx0XHQ/IHRhcmdldCBhcyBDb25zdHJ1Y3RvcjxvYmplY3Q+XG5cdFx0OiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgZGVjb3JhdG9yID0gZnVuY3Rpb24gPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pihjc3RyOiBVKTogRGVjb3JhdGVkQ2xhc3M8VT4ge1xuXHRcdGNvbnN0IHsgbmFtZSB9ID0gY3N0cjtcblx0XHRpZiAocGFyZW50VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmaW5lKG5hbWUsIGNzdHIgYXMgSURFRjxvYmplY3Q+LCBvcHRzKSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnQgPSBwYXJlbnRUeXBlIGFzIHVua25vd24gYXMge1xuXHRcdFx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdFx0fTtcblx0XHRyZXR1cm4gcGFyZW50LmRlZmluZShuYW1lLCBjc3RyIGFzIElERUY8b2JqZWN0Piwgb3B0cykgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0fTtcblx0cmV0dXJuIGRlY29yYXRvcjtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVySG9vayA9IGZ1bmN0aW9uIDxUIGV4dGVuZHMgQ29uc3RydWN0b3I8VD4+KEN0b3I6IERlY29yYXRlZENsYXNzPFQ+LCBob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkIHtcblx0Q3Rvci5yZWdpc3Rlckhvb2soaG9va1R5cGUsIGNiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtbmVtb25pY2EgPSBPYmplY3QuZW50cmllcyh7XG5cblx0ZGVmaW5lLFxuXHRsb29rdXAsXG5cdGFwcGx5LFxuXHRjYWxsLFxuXHRiaW5kLFxuXHRkZWNvcmF0ZSxcblx0cmVnaXN0ZXJIb29rLFxuXG5cdC4uLmRlc2NyaXB0b3JzLFxuXG5cdC4uLmVycm9yc0FwaSxcblx0Li4uY29uc3RhbnRzLFxuXG59KS5yZWR1Y2UoKGFjYzogeyBbaW5kZXg6IHN0cmluZ106IHVua25vd24gfSwgZW50cnk6IFtzdHJpbmcsIHVua25vd25dKSA9PiB7XG5cdGNvbnN0IFsgbmFtZSwgY29kZSBdID0gZW50cnk7XG5cdG9kcChhY2MsIG5hbWUsIHtcblx0XHRnZXQoKSB7XG5cdFx0XHRyZXR1cm4gY29kZTtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0pO1xuXHRyZXR1cm4gYWNjO1xufSwge30pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9IG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
@@ -1,3 +1,3 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIFByb3BzIHR5cGUgZm9yIGdldFByb3BzL3NldFByb3BzXG5leHBvcnQgdHlwZSBQcm9wc1R5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLy8gQ29yZSB0eXBlIGRlZmluaXRpb25zIGZvciBtbmVtb25pY2FcblxuLy8gQmFzZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0eXBlIC0gY2FuIGJlIGEgY2xhc3MgY29uc3RydWN0b3Igb3IgYSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgSURFRjxUPiA9IHsgbmV3KCk6IFQgfSB8IHsgKHRoaXM6IFQsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQgfTtcbi8vIE1vcmUgZmxleGlibGUgdmVyc2lvbiB0aGF0IGFjY2VwdHMgdHlwZWQgYXJndW1lbnRzIGZvciBjb21tb24gcGF0dGVybnNcbmV4cG9ydCB0eXBlIElERUZXaXRoQXJnczxULCBBcmdzIGV4dGVuZHMgdW5rbm93bltdID0gdW5rbm93bltdPiA9IHsgbmV3KCk6IFQgfSB8IHsgKHRoaXM6IFQsIC4uLmFyZ3M6IEFyZ3MpOiB2b2lkIH07XG5cbi8vIEVycm9yIG1lc3NhZ2UgdHlwZXMgLSBhbGwgZXJyb3IgbWVzc2FnZXMgYXJlIHN0cmluZ3NcbmV4cG9ydCB0eXBlIEVycm9yTWVzc2FnZUtleSA9XG5cdHwgJ0JBU0VfRVJST1JfTUVTU0FHRSdcblx0fCAnSEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT04nXG5cdHwgJ1dST05HX1RZUEVfREVGSU5JVElPTidcblx0fCAnV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTidcblx0fCAnV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4nXG5cdHwgJ0FMUkVBRFlfREVDTEFSRUQnXG5cdHwgJ1dST05HX0FSR1VNRU5UU19VU0VEJ1xuXHR8ICdXUk9OR19IT09LX1RZUEUnXG5cdHwgJ01JU1NJTkdfSE9PS19DQUxMQkFDSydcblx0fCAnTUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVCdcblx0fCAnT1BUSU9OU19FUlJPUidcblx0fCAnV1JPTkdfU1RBQ0tfQ0xFQU5FUic7XG5cdC8vIHwgJ1RZUEVOQU1FX01VU1RfQkVfQV9TVFJJTkcnXG5cdC8vIHwgJ0ZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT04nXG5cbi8vIEVycm9yIG1lc3NhZ2VzIG9iamVjdCB0eXBlXG5leHBvcnQgdHlwZSBFcnJvck1lc3NhZ2VzID0gUmVjb3JkPEVycm9yTWVzc2FnZUtleSwgc3RyaW5nPjtcblxuLy8gRXJyb3IgY29uc3RydWN0b3IgZnJvbSBjb25zdHJ1Y3RFcnJvciAtIGNvbnN0cnVjdGFibGUgZnVuY3Rpb24gd2l0aCBwcm90b3R5cGVcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3RvciB7XG5cdG5ldyhhZGRpdGlvbj86IHN0cmluZywgc3RhY2s/OiBzdHJpbmdbXSk6IEVycm9yO1xuXHQobmFtZTogc3RyaW5nKTogRXJyb3I7XG5cdHByb3RvdHlwZToge1xuXHRcdGNvbnN0cnVjdG9yOiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHR9O1xufVxuXG4vLyBFcnJvcnMgdHlwZXMgbWFwIC0gaW5kZXhhYmxlIHJlY29yZCBvZiBlcnJvciBjb25zdHJ1Y3RvcnNcbmV4cG9ydCB0eXBlIEVycm9yc1R5cGVzTWFwID0gUmVjb3JkPHN0cmluZywgTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcj47XG5cbi8vIE1uZW1vbmljYSBlcnJvciBpbnRlcmZhY2UgZm9yIGV4dGVuZGVkIEVycm9yIG9iamVjdHNcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGV4Y2VwdGlvblJlYXNvbj86IEVycm9yO1xuXHRyZWFzb25zPzogRXJyb3JbXTtcblx0c3VycGx1cz86IEVycm9yW107XG59XG5cbi8vIENvbnN0cnVjdG9yIGZ1bmN0aW9uIHdpdGggcHJvdG90eXBlXG5leHBvcnQgaW50ZXJmYWNlIF9JbnRlcm5hbF9UQ188Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0KHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG5cdHJlYWRvbmx5IHByb3RvdHlwZTogQ29uc3RydWN0b3JJbnN0YW5jZSAmIHtcblx0XHRyZWFkb25seSBjb25zdHJ1Y3RvcjogX0ludGVybmFsX1RDXzxDb25zdHJ1Y3Rvckluc3RhbmNlPlxuXHR9O1xufVxuXG4vLyBDb25zdHJ1Y3RvciBmdW5jdGlvbiB3aXRoIHByb3RvdHlwZVxuZXhwb3J0IGludGVyZmFjZSBUeXBlQ29uc3RydWN0b3I8Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0KHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG5cdHJlYWRvbmx5IHByb3RvdHlwZTogQ29uc3RydWN0b3JJbnN0YW5jZSAmIHtcblx0XHRyZWFkb25seSBjb25zdHJ1Y3RvcjogVHlwZUNvbnN0cnVjdG9yPENvbnN0cnVjdG9ySW5zdGFuY2U+XG5cdH07XG59XG5cbi8vIEhvb2sgdHlwZXNcbmV4cG9ydCB0eXBlIGhvb2tzVHlwZXMgPSAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcic7XG5cbi8vIEhvb2sgb3B0aW9ucyBwYXNzZWQgdG8gaG9vayBjYWxsYmFja3NcbmV4cG9ydCB0eXBlIGhvb2tzT3B0cyA9IHtcblx0VHlwZU5hbWU/OiBzdHJpbmc7XG5cdHR5cGU/OiBUeXBlRGVmO1xuXHRhcmdzOiB1bmtub3duW107XG5cdGV4aXN0ZW50SW5zdGFuY2U6IG9iamVjdDtcblx0aW5oZXJpdGVkSW5zdGFuY2U6IG9iamVjdDtcblx0Y3JlYXRvcj86IG9iamVjdDtcbn07XG5cbi8vIEhvb2sgY2FsbGJhY2sgdHlwZVxuZXhwb3J0IHR5cGUgaG9vayA9IChvcHRzOiBob29rc09wdHMpID0+IHZvaWQ7XG5cbi8vIENvbnN0cnVjdG9yIG9wdGlvbnMgZm9yIGRlZmluZSAtIGRlZmF1bHQgKGV4cG9zZUluc3RhbmNlTWV0aG9kcyBkZWZhdWx0cyB0byB0cnVlIGJlaGF2aW9yKVxuZXhwb3J0IHR5cGUgY29uc3RydWN0b3JPcHRpb25zID0ge1xuXHQvLyBleHBsaWNpdCBkZWNsYXJhdGlvbiB3ZSB3aXNoIHVzZVxuXHQvLyBhbiBvbGQgc3R5bGUgYmFzZWQgY29uc3RydWN0b3JzXG5cdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yPzogQ2FsbGFibGVGdW5jdGlvbixcblx0Ly8gc2hhbGwgb3Igbm90IHdlIHVzZSBzdHJpY3QgY2hlY2tpbmdcblx0Ly8gZm9yIGNyZWF0aW9uIHN1Yi1pbnN0YW5jZXMgT25seSBmcm9tIGN1cnJlbnQgdHlwZVxuXHQvLyBvciB3ZSBtaWdodCB1c2UgdXAtbmVzdGVkIHN1Yi1pbnN0YW5jZXMgZnJvbSBjaGFpblxuXHRzdHJpY3RDaGFpbj86IGJvb2xlYW4sXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0YmxvY2tFcnJvcnM/OiBib29sZWFuLFxuXHQvLyBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBzdGFja1xuXHQvLyBhcyBhIF9fc3RhY2tfXyBwcm90b3R5cGUgcHJvcGVydHlcblx0Ly8gZHVyaW5nIHRoZSBwcm9jZXNzIG9mIGluc3RhbmNlIGNyZWF0aW9uXG5cdHN1Ym1pdFN0YWNrPzogYm9vbGVhbixcblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0YXdhaXRSZXR1cm4/OiBib29sZWFuLFxuXHQvLyBGb3JjZSBjbGFzcyBtb2RlIChhdXRvLWRldGVjdGVkIGJ5IGRlZmF1bHQpXG5cdGFzQ2xhc3M/OiBib29sZWFuLFxuXHQvLyBFeHBvc2UgaW5zdGFuY2UgbWV0aG9kcyAoZXh0cmFjdCwgcGljaywgcGFyZW50LCBjbG9uZSwgZm9yaywgZXhjZXB0aW9uLCBzaWJsaW5nKVxuXHQvLyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gV2hlbiBmYWxzZSwgdGhlc2UgbWV0aG9kcyBhcmUgc3RpbGwgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGVcblx0Ly8gYnV0IGhpZGRlbiBmcm9tIHRoZSB0eXBlIGRlZmluaXRpb24gdW5sZXNzIGV4cGxpY2l0bHkgZXhwb3NlZC5cblx0ZXhwb3NlSW5zdGFuY2VNZXRob2RzPzogYm9vbGVhbixcbn07XG5cbi8vIENvbnN0cnVjdG9yIG9wdGlvbnMgdGhhdCBleHBsaWNpdGx5IGhpZGUgaW5zdGFuY2UgbWV0aG9kc1xuZXhwb3J0IHR5cGUgSGlkZUluc3RhbmNlTWV0aG9kc09wdGlvbnMgPSBjb25zdHJ1Y3Rvck9wdGlvbnMgJiB7XG5cdGV4cG9zZUluc3RhbmNlTWV0aG9kczogdHJ1ZTtcbn07XG5cbi8vIFN1YnR5cGVzIG1hcCAtIHJlcHJlc2VudHMgdGhlIHN1YnR5cGVzIHByb3BlcnR5XG5leHBvcnQgdHlwZSBTdWJ0eXBlc01hcCA9IE1hcDxzdHJpbmcsIFR5cGVDbGFzcz47XG5cbi8vIFR5cGUgZGVmaW5pdGlvbiBvYmplY3QgKGludGVybmFsIHByb3BlcnRpZXMpXG5leHBvcnQgdHlwZSBUeXBlRGVmID0ge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHRwcm90bzogb2JqZWN0O1xuXHRpc1N1YlR5cGU6IGJvb2xlYW47XG5cdHN1YnR5cGVzOiBTdWJ0eXBlc01hcDtcblx0Y29sbGVjdGlvbjogQ29sbGVjdGlvbkRlZjtcblx0Y29uZmlnOiBjb25zdHJ1Y3Rvck9wdGlvbnM7XG5cdHBhcmVudFR5cGU/OiBUeXBlRGVmO1xuXHRjb25zdHJ1Y3RIYW5kbGVyOiAoKSA9PiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHR0aXRsZTogc3RyaW5nO1xuXHRob29rczogUmVjb3JkPHN0cmluZywgaG9va1tdPjtcblx0aW52b2tlSG9vazogKGhvb2tUeXBlOiBob29rc1R5cGVzLCBvcHRzOiBob29rc09wdHMpID0+IHZvaWQ7XG5cdHByb3RvdHlwZTogdW5rbm93bjtcblx0c3RhY2s/OiBzdHJpbmc7XG59O1xuXG4vLyBDb2xsZWN0aW9uIGRlZmluaXRpb25cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25EZWYgPSB7XG5cdGRlZmluZTogVHlwZUFic29yYmVyO1xuXHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdGludm9rZUhvb2s6IChob29rVHlwZTogaG9va3NUeXBlcywgb3B0czogaG9va3NPcHRzKSA9PiB2b2lkO1xuXHRyZWdpc3Rlckhvb2s6IChob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spID0+IHZvaWQ7XG5cdHJlZ2lzdGVyRmxvd0NoZWNrZXI6IChjYjogKCkgPT4gdW5rbm93bikgPT4gdm9pZDtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRob29rczogUmVjb3JkPHN0cmluZywgaG9va1tdPjtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbi8vIFR5cGUgbG9va3VwIGZ1bmN0aW9uIHR5cGU6IG1heSBoYXZlIGF1Z21lbnRhdGlvbiBieSBUYWN0aWNhIHJlLWRlZmluaXRpb25cbmV4cG9ydCB0eXBlIFR5cGVMb29rdXAgPSAodGhpczogTWFwPHN0cmluZywgdW5rbm93bj4sIFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblxuLy8gUHJvdG8gbWVyZ2UgdHlwZSAtIGNvbWJpbmVzIHBhcmVudCBhbmQgY2hpbGQgdHlwZXNcbmV4cG9ydCB0eXBlIFByb3RvPFAgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3Q+ID0gVCAmIFBpY2s8UCwgRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPj47XG5cblxuLy8gZXhwb3J0IHR5cGUgUHJvdG9GbGF0PFxuLy8gXHRQIGV4dGVuZHMgb2JqZWN0LFxuLy8gXHRUIGV4dGVuZHMgb2JqZWN0LFxuLy8gXHRGIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPlxuLy8gPiA9IHsgW2tleSBpbiBrZXlvZiBGXTogRltrZXldfSA7XG5cbmV4cG9ydCB0eXBlIFByb3RvRmxhdDxcblx0UCBleHRlbmRzIG9iamVjdCxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0TCBleHRlbmRzIEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgVD4gPSBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+LFxuPiA9IHtcbiAgICBba2V5IGluIGtleW9mIFRdOiBUW2tleV07XG59ICYge1xuXHRba2V5IGluIExdOiBQW2tleV07XG59O1xuXG5leHBvcnQgdHlwZSBGbGF0dGVuPEY+ID0geyBba2V5IGluIGtleW9mIEZdOiBGW2tleV0gfVxuXG4vLyBTaWJsaW5nIHR5cGUgYWNjZXNzb3JcbmV4cG9ydCBpbnRlcmZhY2UgU2libGluZ0FjY2Vzc29yIHtcblx0KFNpYmxpbmdUeXBlTmFtZTogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ2xhc3MgfCB1bmRlZmluZWQ7XG59XG5cbi8vIE1uZW1vbmljYSBpbnN0YW5jZSBtZXRob2RzIGludGVyZmFjZVxuLy8gVGhlc2UgbWV0aG9kcyBhcmUgYWx3YXlzIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlIGNoYWluXG4vLyBidXQgY2FuIGJlIGhpZGRlbiBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgdmlhIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBvcHRpb25cbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhSW5zdGFuY2Uge1xuXHRleHRyYWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRwaWNrKC4uLmtleXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBpY2soa2V5czogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0cGFyZW50KCk6IG9iamVjdCB8IHVuZGVmaW5lZDtcblx0cGFyZW50KGNvbnN0cnVjdG9yTG9va3VwUGF0aDogc3RyaW5nKTogb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRyZWFkb25seSBjbG9uZTogb2JqZWN0O1xuXHRmb3JrKC4uLmZvcmtBcmdzOiB1bmtub3duW10pOiBvYmplY3Q7XG5cdGV4Y2VwdGlvbihlcnJvcjogRXJyb3IsIC4uLmFyZ3M6IHVua25vd25bXSk6IEVycm9yO1xuXHRyZWFkb25seSBzaWJsaW5nOiBTaWJsaW5nQWNjZXNzb3I7XG59XG5cbi8vIEluc3RhbmNlIHByb3BlcnRpZXMgZm9yIF9fc2VsZl9fIHJlZmVyZW5jZVxuLy8gVGhpcyBtZXJnZXMgaW50ZXJuYWwgcHJvcHMgd2l0aCB0aGUgaW5zdGFuY2UgbWV0aG9kc1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VTZWxmUHJvcHMgPSBJbnN0YW5jZUludGVybmFsUHJvcHMgJiB7XG5cdF9fc2VsZl9fOiBJbnN0YW5jZUludGVybmFsUHJvcHMgJiBNbmVtb25pY2FJbnN0YW5jZTtcbn07XG5cbi8vIENvbWJpbmVkIFByb3BzIHR5cGUgZm9yIGludGVybmFsIHVzZWQgaW5zaWRlIG9mIC4vc3JjXG5leHBvcnQgdHlwZSBQcm9wcyA9IEluc3RhbmNlU2VsZlByb3BzICYge1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuXG4vLyBJbnRlcm5hbCBpbnN0YW5jZSBwcm9wZXJ0aWVzIChub24tZW51bWVyYWJsZSlcbi8vIFRoZXNlIGFyZSBhbHdheXMgcHJlc2VudCBvbiBpbnN0YW5jZXMgYnV0IGFjY2Vzc2VkIHZpYSBnZXRQcm9wcy9zZXRQcm9wc1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VJbnRlcm5hbFByb3BzID0ge1xuXHRfX3Byb3RvX3Byb3RvX186IG9iamVjdDtcblx0X19hcmdzX186IHVua25vd25bXTtcblx0X19jb2xsZWN0aW9uX186IENvbGxlY3Rpb25EZWY7XG5cdF9fc3VidHlwZXNfXzogTWFwPHN0cmluZywgb2JqZWN0Pjtcblx0X190eXBlX186IFR5cGVEZWY7XG5cdF9fcGFyZW50X186IG9iamVjdDtcblx0X19zdGFja19fPzogc3RyaW5nO1xuXHRfX2NyZWF0b3JfXzogVHlwZURlZjtcblx0X190aW1lc3RhbXBfXzogbnVtYmVyO1xuXHQvLyBfX3NlbGZfXzogSW5zdGFuY2VJbnRlcm5hbFByb3BzICYgTW5lbW9uaWNhSW5zdGFuY2U7MzMzM1xufTtcblxuXG4vLyBIZWxwZXIgdHlwZSB0byBkZXRlY3QgaWYgZXhwb3NlSW5zdGFuY2VNZXRob2RzIGlzIGV4cGxpY2l0bHkgZmFsc2VcbmV4cG9ydCB0eXBlIElzSGlkaW5nTWV0aG9kczxDb25maWcgZXh0ZW5kcyBjb25zdHJ1Y3Rvck9wdGlvbnM+ID1cbiAgQ29uZmlnIGV4dGVuZHMgeyBleHBvc2VJbnN0YW5jZU1ldGhvZHM6IGZhbHNlIH0gPyB0cnVlIDogZmFsc2U7XG5cbi8vIENvbWJpbmVkIGluc3RhbmNlIHR5cGUgYmFzZWQgb24gY29uZmlnXG5leHBvcnQgdHlwZSBJbnN0YW5jZVJlc3VsdDxcbiAgTiBleHRlbmRzIG9iamVjdCxcbiAgQ29uZmlnIGV4dGVuZHMgY29uc3RydWN0b3JPcHRpb25zLFxuICBSIGV4dGVuZHMgRmxhdHRlbjxOPiA9IEZsYXR0ZW48Tj4sXG4gIEkgZXh0ZW5kcyB7IFtrZXkgaW4ga2V5b2YgUl06IFJba2V5XSB9ID0geyBba2V5IGluIGtleW9mIFJdOiBSW2tleV0gfSxcbiAgTSBleHRlbmRzIEkgJiBNbmVtb25pY2FJbnN0YW5jZSA9IEkgJiBNbmVtb25pY2FJbnN0YW5jZVxuPiA9IElzSGlkaW5nTWV0aG9kczxDb25maWc+IGV4dGVuZHMgdHJ1ZVxuXHQvLyBPbmx5IHVzZXItZGVmaW5lZCBwcm9wZXJ0aWVzIChoaWRpbmcgTW5lbW9uaWNhSW5zdGFuY2UgJiBzdWJ0eXBlcylcbiAgPyBSXG5cdC8vIFVzZXIgcHJvcHMgKyBpbnN0YW5jZSBtZXRob2RzICsgc3VidHlwZXNcbiAgOiBNO1xuXG4vLyBEZWZpbml0b3IgaW5zdGFuY2UgLSB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gcmV0dXJuZWQgYnkgZGVmaW5lXG4vLyBOID0gaW5zdGFuY2UgdHlwZSAocHJvcGVydGllcyBhdmFpbGFibGUgb24gaW5zdGFuY2VzKVxuLy8gUyA9IHN1YnR5cGVzIG1hcFxuLy8gQ29uZmlnID0gY29uc3RydWN0b3Igb3B0aW9ucyBjb250cm9sbGluZyB0eXBlIHZpc2liaWxpdHlcbmV4cG9ydCBpbnRlcmZhY2UgSURlZmluaXRvckluc3RhbmNlPFxuXHROIGV4dGVuZHMgb2JqZWN0LFxuXHRDb25maWcgZXh0ZW5kcyBjb25zdHJ1Y3Rvck9wdGlvbnMgPSBjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdFIgZXh0ZW5kcyBJbnN0YW5jZVJlc3VsdDxOLCBDb25maWc+ID0gSW5zdGFuY2VSZXN1bHQ8TiwgQ29uZmlnPlxuPiB7XG5cblx0VHlwZU5hbWU6IHN0cmluZztcblx0cHJvdG90eXBlOiBOO1xuXG5cdFxuXHQvLyB0aGUgbGluZSBiZWxvdyBkZWNsYXJlcyBhIGBuZXcgLi4uYCBpbnZvY2F0aW9uLFxuXHQvLyBzbyBtYWtlcyBpbnRlcmZhY2UgY29uc3RydWN0aWJsZVxuXHQvLyBuZXcoLi4uYXJnczogdW5rbm93bltdKTogeyBba2V5IGluIGtleW9mIFJdOiBSW2tleV0gfTtcblx0bmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IFI7XG5cblx0XG5cdC8vIFRPRE86IG5lZWQgY2hlY2sgaWYgbGluZSBiZWxvdyB3b3Jrc1xuXHQvLyBhbHNvIFRTIGhpbnRpbmcgY2hlY2sgYXMgd2VsbFxuXHQvLyB0aGUgbGluZSBiZWxvdyBzaG91bGQgbWFrZSBpcyBhIEBkZWNvcmF0ZSBkZWNvcmF0b3Igd29ya2luZ1xuXHQoLi4uYXJnczogdW5rbm93bltdKTogSURlZmluaXRvckluc3RhbmNlPFIsIENvbmZpZz47XG5cblxuXHQvLyBEZWZpbmUgbWV0aG9kIHRoYXQgY29tYmluZXMgcGFyZW50IE4gd2l0aCBuZXcgdHlwZSBUIHVzaW5nIFByb3RvXG5cdGRlZmluZTxcblx0XHRUIGV4dGVuZHMgb2JqZWN0LFxuXG5cdFx0Ly8gdGhpcyB3aWxsIGJlIGluc3RhbmNlIHR5cGUgZm9yIHN1Yi10eXBlICEhIVxuXHRcdC8vIEYgZXh0ZW5kcyBGbGF0dGVuPFByb3RvPE4sIFQ+PlxuXHRcdEYgZXh0ZW5kcyBQcm90bzxOLCBUPlxuXHQ+KFxuXHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbnN0cnVjdEhhbmRsZXJPckNvbmZpZz86IElERUY8VD4gfCBvYmplY3QgfCBib29sZWFuIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25maWdPclVuZGVmaW5lZD86IGNvbnN0cnVjdG9yT3B0aW9ucyB8IENhbGxhYmxlRnVuY3Rpb24gfCBib29sZWFuXG5cdCk6IElEZWZpbml0b3JJbnN0YW5jZTxGLCBDb25maWc+O1xuXHRcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRcblx0cmVnaXN0ZXJIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQ7XG5cdFxuXHRcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRcblx0Ly8gSW50ZXJuYWwgcHJvcGVydGllcyBhY2Nlc3NlZCBieSB0ZXN0c1xuXHRfX3R5cGVfXz86IFR5cGVEZWY7XG5cdGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uRGVmO1xuXG5cdC8qXG5cdC8vIEFsbG93IGR5bmFtaWMgcHJvcGVydHkgYWNjZXNzIGZvciBzdWJ0eXBlc1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xuXHQqL1xufVxuXG4vLyBUeXBlIGFic29yYmVyIGZ1bmN0aW9uIHR5cGUgLSB1c2VkIGZvciBkZWZpbmluZyBzdWJ0eXBlc1xuLy8gU3VwcG9ydHMgbXVsdGlwbGUgY2FsbGluZyBjb252ZW50aW9uczpcbi8vIDEuIE1vZGVybjogZGVmaW5lKFR5cGVOYW1lLCBjb25zdHJ1Y3RIYW5kbGVyLCBjb25maWc/KVxuLy8gMi4gTGVnYWN5OiBkZWZpbmUoY29uc3RydWN0SGFuZGxlciwgY29uZmlnPykgLSBUeXBlTmFtZSBmcm9tIGNvbnN0cnVjdG9yIG5hbWVcbi8vIDMuIE5lc3RlZDogcGFyZW50VHlwZS5kZWZpbmUoVHlwZU5hbWUsIGNvbnN0cnVjdEhhbmRsZXIsIGNvbmZpZz8pXG4vLyBVc2luZyBpbnRlcmZhY2Ugd2l0aCBvdmVybG9hZHMgdG8gcHJvcGVybHkgaGFuZGxlIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBvcHRpb25cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUFic29yYmVyIHtcblx0Ly8gT3ZlcmxvYWQ6IHdpdGggZXhwb3NlSW5zdGFuY2VNZXRob2RzOiBmYWxzZSAtIGhpZGUgaW5zdGFuY2UgbWV0aG9kc1xuXHQ8VCBleHRlbmRzIG9iamVjdD4oXG5cdFx0dGhpczogdW5rbm93bixcblx0XHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc6IElERUY8VD4gfCBvYmplY3QgfCBib29sZWFuIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25maWdPclVuZGVmaW5lZDogSGlkZUluc3RhbmNlTWV0aG9kc09wdGlvbnNcblx0KTogSURlZmluaXRvckluc3RhbmNlPFQsIEhpZGVJbnN0YW5jZU1ldGhvZHNPcHRpb25zPjtcblx0XG5cdC8vIE92ZXJsb2FkOiB3aXRob3V0IGNvbmZpZyBvciB3aXRoIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBub3QgZmFsc2UgLSBzaG93IGFsbFxuXHQ8VCBleHRlbmRzIG9iamVjdD4oXG5cdFx0dGhpczogdW5rbm93bixcblx0XHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBJREVGPFQ+IHwgb2JqZWN0IHwgYm9vbGVhbiB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uZmlnT3JVbmRlZmluZWQ/OiBjb25zdHJ1Y3Rvck9wdGlvbnMgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgYm9vbGVhblxuXHQpOiBJRGVmaW5pdG9ySW5zdGFuY2U8VCwgY29uc3RydWN0b3JPcHRpb25zPjtcbn1cblxuLy8gVHlwZXNDb2xsZWN0aW9uIGludGVyZmFjZSBmb3IgY3JlYXRlVHlwZXNDb2xsZWN0aW9uXG4vLyBUaGlzIHJlcHJlc2VudHMgdGhlIGFjdHVhbCByZXR1cm4gdHlwZSBvZiBjcmVhdGVUeXBlc0NvbGxlY3Rpb25cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uIHtcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogVHlwZUxvb2t1cDtcblx0cmVnaXN0ZXJIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQ7XG5cdGludm9rZUhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIG9wdHM6IGhvb2tzT3B0cyk6IHZvaWQ7XG5cdHJlZ2lzdGVyRmxvd0NoZWNrZXIoY2I6ICgpID0+IHVua25vd24pOiB2b2lkO1xuXHRzdWJ0eXBlczogU3VidHlwZXNNYXA7XG5cdGhvb2tzOiBSZWNvcmQ8c3RyaW5nLCBob29rW10+O1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vLyBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gZnVuY3Rpb24gdHlwZVxuZXhwb3J0IHR5cGUgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24gPSAoY29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zKSA9PiBUeXBlc0NvbGxlY3Rpb247XG5cbi8vIFR5cGUgY2xhc3MgLSBiYXNlIHR5cGUgY29uc3RydWN0b3JcbmV4cG9ydCB0eXBlIFR5cGVDbGFzcyA9IElEZWZpbml0b3JJbnN0YW5jZTxvYmplY3Q+O1xuXG4vLyBHZW5lcmljIHR5cGUgY2xhc3NcbmV4cG9ydCBpbnRlcmZhY2UgSVR5cGVDbGFzczxUPiB7XG5cdG5ldyguLi5hcmdzOiB1bmtub3duW10pOiBUO1xuXHQodGhpczogVCwgLi4uYXJnczogdW5rbm93bltdKTogVDtcblx0ZGVmaW5lOiBJVHlwZUFic29yYmVyPFQ+O1xuXHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdHJlZ2lzdGVySG9vayhob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkO1xufVxuXG4vLyBHZW5lcmljIHR5cGUgYWJzb3JiZXJcbmV4cG9ydCB0eXBlIElUeXBlQWJzb3JiZXI8VD4gPSAoXG5cdHRoaXM6IHVua25vd24sXG5cdFR5cGVOYW1lOiBzdHJpbmcsXG5cdGNvbnN0cnVjdEhhbmRsZXI6IElERUY8VD4sXG5cdHByb3RvPzogb2JqZWN0LFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnNcbikgPT4gSVR5cGVDbGFzczxUPjtcblxuLy8gVHlwZSBkZXNjcmlwdG9yIGluc3RhbmNlXG5leHBvcnQgdHlwZSBUeXBlRGVzY3JpcHRvckluc3RhbmNlID0ge1xuXHRkZWZpbmU6IENhbGxhYmxlRnVuY3Rpb247XG5cdGxvb2t1cDogQ2FsbGFibGVGdW5jdGlvbjtcblx0c3VidHlwZXM6IG9iamVjdDtcblx0VHlwZU5hbWU6IHN0cmluZztcbn07XG5cbi8vIFR5cGVEZXNjcmlwdG9yIGNvbnN0cnVjdG9yIHR5cGVcbmV4cG9ydCB0eXBlIFR5cGVEZXNjcmlwdG9yQ29uc3RydWN0b3IgPSBUeXBlQ29uc3RydWN0b3I8VHlwZURlc2NyaXB0b3JJbnN0YW5jZT47XG5cbi8vIFR5cGVzQ29sbGVjdGlvbiBjb25zdHJ1Y3RvciB0eXBlXG5leHBvcnQgdHlwZSBUeXBlc0NvbGxlY3Rpb25Db25zdHJ1Y3RvciA9IFR5cGVDb25zdHJ1Y3RvcjxvYmplY3Q+O1xuXG4vLyBDb25zdHJ1Y3RvciB0eXBlIGZvciBkZWNvcmF0ZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VCA9IG9iamVjdD4gPSBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gVDtcblxuLy8gRGVjb3JhdGVkIGNsYXNzIHR5cGUgLSBpbmNsdWRlcyBjYWxsIHNpZ25hdHVyZSBmb3IgZGVjb3JhdG9yIHBhdHRlcm5cbmV4cG9ydCB0eXBlIERlY29yYXRlZENsYXNzPFQgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+PiA9XG5cdFQgJlxuXHQoPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pih0YXJnZXQ6IFUpID0+IERlY29yYXRlZENsYXNzPFU+KSAmIHtcblx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHRyZWdpc3Rlckhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKTogdm9pZDtcblx0XHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdFx0VHlwZU5hbWU6IHN0cmluZztcblx0fTtcblxuLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgY29uc3RydWN0b3IgKGZhY3RvcnkgcGF0dGVybilcbmV4cG9ydCB0eXBlIENvbnN0cnVjdG9yRmFjdG9yeTxUPiA9ICgpID0+IENvbnN0cnVjdG9yPFQ+O1xuXG4vLyBBcHBseS9DYWxsL0JpbmQgZnVuY3Rpb24gdHlwZXNcbmV4cG9ydCB0eXBlIEFwcGx5RnVuY3Rpb24gPSA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzPzogdW5rbm93bltdXG4pID0+IFM7XG5cbmV4cG9ydCB0eXBlIENhbGxGdW5jdGlvbiA9IDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKSA9PiBTO1xuXG5leHBvcnQgdHlwZSBCaW5kRnVuY3Rpb24gPSA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+XG4pID0+ICguLi5hcmdzOiB1bmtub3duW10pID0+IFM7XG5cbi8vIFV0aWxzIG9iamVjdCB0eXBlXG5leHBvcnQgaW50ZXJmYWNlIFV0aWxzQ29sbGVjdGlvbiB7XG5cdGV4dHJhY3Q6IChpbnN0YW5jZTogb2JqZWN0KSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0cGljazogKGluc3RhbmNlOiBvYmplY3QsIC4uLmFyZ3M6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdGNvbGxlY3RDb25zdHJ1Y3RvcnM6IChpbnN0YW5jZTogb2JqZWN0LCBmbGF0PzogYm9vbGVhbikgPT4gKENhbGxhYmxlRnVuY3Rpb24gfCBzdHJpbmcpW107XG5cdG1lcmdlOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duO1xuXHRwYXJzZTogKHZhbHVlOiB1bmtub3duKSA9PiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHBhcmVudDogKGluc3RhbmNlOiBvYmplY3QsIHN0cmljdD86IGJvb2xlYW4pID0+IG9iamVjdCB8IHVuZGVmaW5lZDtcblx0dG9KU09OOiAoaW5zdGFuY2U6IG9iamVjdCkgPT4gc3RyaW5nO1xuXHRba2V5OiBzdHJpbmddOiBDYWxsYWJsZUZ1bmN0aW9uO1xufVxuXG4vLyBNYWluIG1uZW1vbmljYSBtb2R1bGUgaW50ZXJmYWNlIC0gcmVwcmVzZW50cyB0aGUgZXhwb3J0ZWQgbW9kdWxlIG9iamVjdFxuZXhwb3J0IGludGVyZmFjZSBNbmVtb25pY2FNb2R1bGUge1xuXHQvLyBDb3JlIGZ1bmN0aW9uc1xuXHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0bG9va3VwOiAoVHlwZU5lc3RlZFBhdGg6IHN0cmluZykgPT4gVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuXHRhcHBseTogQXBwbHlGdW5jdGlvbjtcblx0Y2FsbDogQ2FsbEZ1bmN0aW9uO1xuXHRiaW5kOiBCaW5kRnVuY3Rpb247XG5cdGRlY29yYXRlOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KHRhcmdldD86IG9iamVjdCwgY29uZmlnPzogb2JqZWN0KSA9PiBEZWNvcmF0ZWRDbGFzczxVPjtcblx0cmVnaXN0ZXJIb29rOiA8VCBleHRlbmRzIG9iamVjdD4oQ3RvcjogSURFRjxUPiwgaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKSA9PiB2b2lkO1xuXG5cdC8vIERlc2NyaXB0b3JzXG5cdGRlZmF1bHRUeXBlczogVHlwZXNDb2xsZWN0aW9uO1xuXG5cdC8vIEVycm9yc1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfVFlQRV9ERUZJTklUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0QUxSRUFEWV9ERUNMQVJFRDogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfQVJHVU1FTlRTX1VTRUQ6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX0hPT0tfVFlQRTogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0TUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVDogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0Ly8gRkxPV19DSEVDS0VSX1JFREVGSU5JVElPTjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0TUlTU0lOR19IT09LX0NBTExCQUNLOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRUWVBFTkFNRV9NVVNUX0JFX0FfU1RSSU5HOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRIQU5ETEVSX01VU1RfQkVfQV9GVU5DVElPTjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0T1BUSU9OU19FUlJPUjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfU1RBQ0tfQ0xFQU5FUjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3RvcjtcblxuXHQvLyBDb25zdGFudHNcblx0TU5FTU9OSUNBOiBzdHJpbmc7XG5cdE1ORU1PU1lORTogc3RyaW5nO1xuXHRVUkFOVVM6IHN0cmluZztcblx0U3ltYm9sUGFyZW50VHlwZTogc3ltYm9sO1xuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWU6IHN5bWJvbDtcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbjogc3ltYm9sO1xuXHRTeW1ib2xDb25maWc6IHN5bWJvbDtcblx0U3ltYm9sR2FpYTogc3ltYm9sO1xuXHRUWVBFX1RJVExFX1BSRUZJWDogc3RyaW5nO1xuXHRFcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VzO1xuXG5cdC8vIFV0aWxzXG5cdHV0aWxzOiBVdGlsc0NvbGxlY3Rpb247XG5cdGdldFByb3BzOiAoaW5zdGFuY2U6IG9iamVjdCkgPT4gUHJvcHNUeXBlIHwgdW5kZWZpbmVkO1xuXHRzZXRQcm9wczogKGluc3RhbmNlOiBvYmplY3QsIHZhbHVlczogb2JqZWN0KSA9PiBzdHJpbmdbXSB8IGZhbHNlO1xuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQ6IChpbnN0YW5jZTogb2JqZWN0IHwgdW5kZWZpbmVkLCBzdWJUeXBlOiBzdHJpbmcpID0+IG9iamVjdCB8IG51bGw7XG5cdGlzQ2xhc3M6IChmbjogQ2FsbGFibGVGdW5jdGlvbikgPT4gYm9vbGVhbjtcblxuXHQvLyBjcmVhdGVUeXBlc0NvbGxlY3Rpb25cblx0Y3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbjtcblxuXHQvLyBBbGxvdyBhZGRpdGlvbmFsIHByb3BlcnRpZXNcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5cbi8vIFByb3BzIHR5cGUgZm9yIGdldFByb3BzL3NldFByb3BzXG5leHBvcnQgdHlwZSBQcm9wc1R5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLy8gQ29yZSB0eXBlIGRlZmluaXRpb25zIGZvciBtbmVtb25pY2FcblxuLy8gQmFzZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB0eXBlIC0gY2FuIGJlIGEgY2xhc3MgY29uc3RydWN0b3Igb3IgYSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgSURFRjxUPiA9IHsgbmV3KCk6IFQgfSB8IHsgKHRoaXM6IFQsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQgfTtcbi8vIE1vcmUgZmxleGlibGUgdmVyc2lvbiB0aGF0IGFjY2VwdHMgdHlwZWQgYXJndW1lbnRzIGZvciBjb21tb24gcGF0dGVybnNcbmV4cG9ydCB0eXBlIElERUZXaXRoQXJnczxULCBBcmdzIGV4dGVuZHMgdW5rbm93bltdID0gdW5rbm93bltdPiA9IHsgbmV3KCk6IFQgfSB8IHsgKHRoaXM6IFQsIC4uLmFyZ3M6IEFyZ3MpOiB2b2lkIH07XG5cbi8vIEVycm9yIG1lc3NhZ2UgdHlwZXMgLSBhbGwgZXJyb3IgbWVzc2FnZXMgYXJlIHN0cmluZ3NcbmV4cG9ydCB0eXBlIEVycm9yTWVzc2FnZUtleSA9XG5cdHwgJ0JBU0VfRVJST1JfTUVTU0FHRSdcblx0fCAnSEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT04nXG5cdHwgJ1dST05HX1RZUEVfREVGSU5JVElPTidcblx0fCAnV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTidcblx0fCAnV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4nXG5cdHwgJ0FMUkVBRFlfREVDTEFSRUQnXG5cdHwgJ1dST05HX0FSR1VNRU5UU19VU0VEJ1xuXHR8ICdXUk9OR19IT09LX1RZUEUnXG5cdHwgJ01JU1NJTkdfSE9PS19DQUxMQkFDSydcblx0fCAnTUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVCdcblx0fCAnT1BUSU9OU19FUlJPUidcblx0fCAnV1JPTkdfU1RBQ0tfQ0xFQU5FUic7XG5cdC8vIHwgJ1RZUEVOQU1FX01VU1RfQkVfQV9TVFJJTkcnXG5cdC8vIHwgJ0ZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT04nXG5cbi8vIEVycm9yIG1lc3NhZ2VzIG9iamVjdCB0eXBlXG5leHBvcnQgdHlwZSBFcnJvck1lc3NhZ2VzID0gUmVjb3JkPEVycm9yTWVzc2FnZUtleSwgc3RyaW5nPjtcblxuLy8gRXJyb3IgY29uc3RydWN0b3IgZnJvbSBjb25zdHJ1Y3RFcnJvciAtIGNvbnN0cnVjdGFibGUgZnVuY3Rpb24gd2l0aCBwcm90b3R5cGVcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3RvciB7XG5cdG5ldyhhZGRpdGlvbj86IHN0cmluZywgc3RhY2s/OiBzdHJpbmdbXSk6IEVycm9yO1xuXHQobmFtZTogc3RyaW5nKTogRXJyb3I7XG5cdHByb3RvdHlwZToge1xuXHRcdGNvbnN0cnVjdG9yOiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHR9O1xufVxuXG4vLyBFcnJvcnMgdHlwZXMgbWFwIC0gaW5kZXhhYmxlIHJlY29yZCBvZiBlcnJvciBjb25zdHJ1Y3RvcnNcbmV4cG9ydCB0eXBlIEVycm9yc1R5cGVzTWFwID0gUmVjb3JkPHN0cmluZywgTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcj47XG5cbi8vIE1uZW1vbmljYSBlcnJvciBpbnRlcmZhY2UgZm9yIGV4dGVuZGVkIEVycm9yIG9iamVjdHNcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGV4Y2VwdGlvblJlYXNvbj86IEVycm9yO1xuXHRyZWFzb25zPzogRXJyb3JbXTtcblx0c3VycGx1cz86IEVycm9yW107XG59XG5cbi8qKlxuICogSW50ZXJuYWwgVHlwZSBDb25zdHJ1Y3Rvci5cbiAqIFwiVHlwZVwiIGhlcmUgaXMgdXNlZCBpbiB0aGUgQ29tcHV0ZXIgU2NpZW5jZSBzZW5zZSDigJQgYW4gaW50ZXJmYWNlL2NvbnRyYWN0XG4gKiBkZXNjcmliaW5nIHdoYXQgYSBjb25zdHJ1Y3RvciBtdXN0IHNhdGlzZnkgKGJvdGggYG5ld2AtYWJsZSBhbmQgY2FsbGFibGUpLlxuICogVEMgPSBUeXBlIENvbnN0cnVjdG9yOyBcIkludGVybmFsXCIgbWVhbnMgdGhpcyBpcyB0aGUgbGlicmFyeSdzIG93biBjb25zdHJ1Y3RvclxuICogc2hhcGUsIGRpc3RpbmN0IGZyb20gdXNlci1mYWNpbmcgVHlwZUNvbnN0cnVjdG9yIGJlbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIF9JbnRlcm5hbF9UQ188Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0KHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG5cdHJlYWRvbmx5IHByb3RvdHlwZTogQ29uc3RydWN0b3JJbnN0YW5jZSAmIHtcblx0XHRyZWFkb25seSBjb25zdHJ1Y3RvcjogX0ludGVybmFsX1RDXzxDb25zdHJ1Y3Rvckluc3RhbmNlPlxuXHR9O1xufVxuXG4vKipcbiAqIEV4dGVybmFsIFR5cGUgQ29uc3RydWN0b3Ig4oCUIHRoZSBzaGFwZSBvZiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgYGRlZmluZSgpYC5cbiAqXG4gKiBJbiBTY2FsYSdzIGtpbmQgc3lzdGVtLCBhIFwiVHlwZSBDb25zdHJ1Y3RvclwiIGlzIGEga2luZCAoYSB0eXBlIG9mIHR5cGVzKTpcbiAqIG5vdCBhIHZhbHVlLCBidXQgYSBtb2xkIGRlc2NyaWJpbmcgaG93IGNvbmNyZXRlIHR5cGVzIGFyZSBmb3JtZWQuIEhlcmUsXG4gKiBgVHlwZUNvbnN0cnVjdG9yPEluc3RhbmNlPmAgaXMgdGhlIG1vbGQgYGRlZmluZSgpYCBzdGFtcHMgYXQgaW52b2NhdGlvbiB0aW1lXG4gKiBmcm9tIChwcm90b3R5cGUsIGFyZ3VtZW50cywgY29uZmlnKS4gVGhlIHJlc3VsdGluZyBjb25zdHJ1Y3RvciBpcyBzaW11bHRhbmVvdXNseTpcbiAqICAgLSBhIHJ1bnRpbWUgdmFsdWUgKGNhbGxhYmxlLCBgbmV3YC1hYmxlLCB3aXRoIGAucHJvdG90eXBlYClcbiAqICAgLSBhIG5vZGUgaW4gdGhlIHR5cGUgVHJpZSAoY2FycmllcyBgLnN1YnR5cGVzYCwgcGFydGljaXBhdGVzIGluIGBpbnN0YW5jZW9mYClcbiAqICAgLSBhIGJlaGF2aW9yYWwgY29udHJhY3QgKHRoZSBwcm90b3R5cGUgY2hhaW4gcHJvdmlkZXMgYC5leHRyYWN0KClgLCBgLmZvcmsoKWAsIGV0Yy4pXG4gKlxuICogQXVnbWVudGVkIGJ5IHRhY3RpY2EtZ2VuZXJhdGVkIFR5cGVSZWdpc3RyeSB0byBiZWNvbWUgdXNlci1zcGVjaWZpYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlQ29uc3RydWN0b3I8Q29uc3RydWN0b3JJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4ge1xuXHRuZXcoLi4uYXJnczogdW5rbm93bltdKTogQ29uc3RydWN0b3JJbnN0YW5jZTtcblx0KHRoaXM6IENvbnN0cnVjdG9ySW5zdGFuY2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IENvbnN0cnVjdG9ySW5zdGFuY2U7XG5cdHJlYWRvbmx5IHByb3RvdHlwZTogQ29uc3RydWN0b3JJbnN0YW5jZSAmIHtcblx0XHRyZWFkb25seSBjb25zdHJ1Y3RvcjogVHlwZUNvbnN0cnVjdG9yPENvbnN0cnVjdG9ySW5zdGFuY2U+XG5cdH07XG59XG5cbi8vIEhvb2sgdHlwZXNcbmV4cG9ydCB0eXBlIGhvb2tzVHlwZXMgPSAncHJlQ3JlYXRpb24nIHwgJ3Bvc3RDcmVhdGlvbicgfCAnY3JlYXRpb25FcnJvcic7XG5cbi8vIEhvb2sgb3B0aW9ucyBwYXNzZWQgdG8gaG9vayBjYWxsYmFja3NcbmV4cG9ydCB0eXBlIGhvb2tzT3B0cyA9IHtcblx0VHlwZU5hbWU/OiBzdHJpbmc7XG5cdHR5cGU/OiBUeXBlRGVmO1xuXHRhcmdzOiB1bmtub3duW107XG5cdGV4aXN0ZW50SW5zdGFuY2U6IG9iamVjdDtcblx0aW5oZXJpdGVkSW5zdGFuY2U6IG9iamVjdDtcblx0Y3JlYXRvcj86IG9iamVjdDtcbn07XG5cbi8vIEhvb2sgY2FsbGJhY2sgdHlwZVxuZXhwb3J0IHR5cGUgaG9vayA9IChvcHRzOiBob29rc09wdHMpID0+IHZvaWQ7XG5cbi8vIENvbnN0cnVjdG9yIG9wdGlvbnMgZm9yIGRlZmluZSAtIGRlZmF1bHQgKGV4cG9zZUluc3RhbmNlTWV0aG9kcyBkZWZhdWx0cyB0byB0cnVlIGJlaGF2aW9yKVxuZXhwb3J0IHR5cGUgY29uc3RydWN0b3JPcHRpb25zID0ge1xuXHQvLyBleHBsaWNpdCBkZWNsYXJhdGlvbiB3ZSB3aXNoIHVzZVxuXHQvLyBhbiBvbGQgc3R5bGUgYmFzZWQgY29uc3RydWN0b3JzXG5cdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yPzogQ2FsbGFibGVGdW5jdGlvbixcblx0Ly8gc2hhbGwgb3Igbm90IHdlIHVzZSBzdHJpY3QgY2hlY2tpbmdcblx0Ly8gZm9yIGNyZWF0aW9uIHN1Yi1pbnN0YW5jZXMgT25seSBmcm9tIGN1cnJlbnQgdHlwZVxuXHQvLyBvciB3ZSBtaWdodCB1c2UgdXAtbmVzdGVkIHN1Yi1pbnN0YW5jZXMgZnJvbSBjaGFpblxuXHRzdHJpY3RDaGFpbj86IGJvb2xlYW4sXG5cdC8vIHNob3VsZCB3ZSB1c2UgZm9yY2VkIGVycm9ycyBjaGVja2luZ1xuXHQvLyB0byBtYWtlIGFsbCBpbmhlcml0ZWQgdHlwZXMgZXJyb3JlZFxuXHQvLyBpZiB0aGVyZSBpcyBhbiBlcnJvciBzb21ld2hlcmUgaW4gY2hhaW5cblx0YmxvY2tFcnJvcnM/OiBib29sZWFuLFxuXHQvLyBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gY29sbGVjdCBzdGFja1xuXHQvLyBhcyBhIF9fc3RhY2tfXyBwcm90b3R5cGUgcHJvcGVydHlcblx0Ly8gZHVyaW5nIHRoZSBwcm9jZXNzIG9mIGluc3RhbmNlIGNyZWF0aW9uXG5cdHN1Ym1pdFN0YWNrPzogYm9vbGVhbixcblx0Ly8gYXdhaXQgbmV3IENvbnN0cnVjdG9yKClcblx0Ly8gbXVzdCByZXR1cm4gdmFsdWVcblx0YXdhaXRSZXR1cm4/OiBib29sZWFuLFxuXHQvLyBGb3JjZSBjbGFzcyBtb2RlIChhdXRvLWRldGVjdGVkIGJ5IGRlZmF1bHQpXG5cdGFzQ2xhc3M/OiBib29sZWFuLFxuXHQvLyBFeHBvc2UgaW5zdGFuY2UgbWV0aG9kcyAoZXh0cmFjdCwgcGljaywgcGFyZW50LCBjbG9uZSwgZm9yaywgZXhjZXB0aW9uLCBzaWJsaW5nKVxuXHQvLyBvbiB0aGUgaW5zdGFuY2UgdHlwZS4gV2hlbiBmYWxzZSwgdGhlc2UgbWV0aG9kcyBhcmUgc3RpbGwgYXZhaWxhYmxlIG9uIHRoZSBwcm90b3R5cGVcblx0Ly8gYnV0IGhpZGRlbiBmcm9tIHRoZSB0eXBlIGRlZmluaXRpb24gdW5sZXNzIGV4cGxpY2l0bHkgZXhwb3NlZC5cblx0ZXhwb3NlSW5zdGFuY2VNZXRob2RzPzogYm9vbGVhbixcbn07XG5cbi8vIENvbnN0cnVjdG9yIG9wdGlvbnMgdGhhdCBleHBsaWNpdGx5IGhpZGUgaW5zdGFuY2UgbWV0aG9kc1xuZXhwb3J0IHR5cGUgSGlkZUluc3RhbmNlTWV0aG9kc09wdGlvbnMgPSBjb25zdHJ1Y3Rvck9wdGlvbnMgJiB7XG5cdGV4cG9zZUluc3RhbmNlTWV0aG9kczogdHJ1ZTtcbn07XG5cbi8vIFN1YnR5cGVzIG1hcCAtIHJlcHJlc2VudHMgdGhlIHN1YnR5cGVzIHByb3BlcnR5XG5leHBvcnQgdHlwZSBTdWJ0eXBlc01hcCA9IE1hcDxzdHJpbmcsIFR5cGVDbGFzcz47XG5cbi8vIFR5cGUgZGVmaW5pdGlvbiBvYmplY3QgKGludGVybmFsIHByb3BlcnRpZXMpXG5leHBvcnQgdHlwZSBUeXBlRGVmID0ge1xuXHRUeXBlTmFtZTogc3RyaW5nO1xuXHRwcm90bzogb2JqZWN0O1xuXHRpc1N1YlR5cGU6IGJvb2xlYW47XG5cdHN1YnR5cGVzOiBTdWJ0eXBlc01hcDtcblx0Y29sbGVjdGlvbjogQ29sbGVjdGlvbkRlZjtcblx0Y29uZmlnOiBjb25zdHJ1Y3Rvck9wdGlvbnM7XG5cdHBhcmVudFR5cGU/OiBUeXBlRGVmO1xuXHRjb25zdHJ1Y3RIYW5kbGVyOiAoKSA9PiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHR0aXRsZTogc3RyaW5nO1xuXHRob29rczogUmVjb3JkPHN0cmluZywgaG9va1tdPjtcblx0aW52b2tlSG9vazogKGhvb2tUeXBlOiBob29rc1R5cGVzLCBvcHRzOiBob29rc09wdHMpID0+IHZvaWQ7XG5cdHByb3RvdHlwZTogdW5rbm93bjtcblx0c3RhY2s/OiBzdHJpbmc7XG59O1xuXG4vLyBDb2xsZWN0aW9uIGRlZmluaXRpb25cbmV4cG9ydCB0eXBlIENvbGxlY3Rpb25EZWYgPSB7XG5cdGRlZmluZTogVHlwZUFic29yYmVyO1xuXHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdGludm9rZUhvb2s6IChob29rVHlwZTogaG9va3NUeXBlcywgb3B0czogaG9va3NPcHRzKSA9PiB2b2lkO1xuXHRyZWdpc3Rlckhvb2s6IChob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spID0+IHZvaWQ7XG5cdHJlZ2lzdGVyRmxvd0NoZWNrZXI6IChjYjogKCkgPT4gdW5rbm93bikgPT4gdm9pZDtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRob29rczogUmVjb3JkPHN0cmluZywgaG9va1tdPjtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbi8vIFR5cGUgbG9va3VwIGZ1bmN0aW9uIHR5cGU6IG1heSBoYXZlIGF1Z21lbnRhdGlvbiBieSBUYWN0aWNhIHJlLWRlZmluaXRpb25cbmV4cG9ydCB0eXBlIFR5cGVMb29rdXAgPSAodGhpczogTWFwPHN0cmluZywgdW5rbm93bj4sIFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBQcm90byBtZXJnZSB0eXBlIC0gY29tYmluZXMgcGFyZW50IGFuZCBjaGlsZCB0eXBlcyB3aXRob3V0IHByb3BlcnR5IGNvbmZsaWN0cy5cbiAqXG4gKiBXaGVuIGEgc3VidHlwZSBpcyBkZWZpbmVkIGZyb20gYSBwYXJlbnQgaW5zdGFuY2UsIHdlIHdhbnQgdGhlIGNoaWxkIHByb3BlcnRpZXNcbiAqIHRvIHRha2UgcHJlY2VkZW5jZS4gYEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgVD5gIHJlbW92ZXMgb3ZlcmxhcHBpbmcga2V5cyBmcm9tIFAsXG4gKiBzbyBgUGljazxQLCAuLi4+YCBvbmx5IGJyaW5ncyBpbiBwYXJlbnQgcHJvcGVydGllcyB0aGF0IGRvbid0IGNsYXNoIHdpdGggY2hpbGQuXG4gKlxuICogUmVzdWx0OiBjaGlsZCBUIGdldHMgYWxsIGl0cyBvd24gcHJvcHMsIHBsdXMgcGFyZW50J3Mgbm9uLW92ZXJsYXBwaW5nIHByb3BzLlxuICovXG5leHBvcnQgdHlwZSBQcm90bzxQIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0PiA9IFQgJiBQaWNrPFAsIEV4Y2x1ZGU8a2V5b2YgUCwga2V5b2YgVD4+O1xuXG5cbi8vIGV4cG9ydCB0eXBlIFByb3RvRmxhdDxcbi8vIFx0UCBleHRlbmRzIG9iamVjdCxcbi8vIFx0VCBleHRlbmRzIG9iamVjdCxcbi8vIFx0RiBleHRlbmRzIFByb3RvPFAsIFQ+ID0gUHJvdG88UCwgVD5cbi8vID4gPSB7IFtrZXkgaW4ga2V5b2YgRl06IEZba2V5XX0gO1xuXG5leHBvcnQgdHlwZSBQcm90b0ZsYXQ8XG5cdFAgZXh0ZW5kcyBvYmplY3QsXG5cdFQgZXh0ZW5kcyBvYmplY3QsXG5cdEwgZXh0ZW5kcyBFeGNsdWRlPGtleW9mIFAsIGtleW9mIFQ+ID0gRXhjbHVkZTxrZXlvZiBQLCBrZXlvZiBUPixcbj4gPSB7XG4gICAgW2tleSBpbiBrZXlvZiBUXTogVFtrZXldO1xufSAmIHtcblx0W2tleSBpbiBMXTogUFtrZXldO1xufTtcblxuZXhwb3J0IHR5cGUgRmxhdHRlbjxGPiA9IHsgW2tleSBpbiBrZXlvZiBGXTogRltrZXldIH1cblxuLy8gU2libGluZyB0eXBlIGFjY2Vzc29yXG5leHBvcnQgaW50ZXJmYWNlIFNpYmxpbmdBY2Nlc3NvciB7XG5cdChTaWJsaW5nVHlwZU5hbWU6IHN0cmluZyk6IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblx0W2tleTogc3RyaW5nXTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xufVxuXG4vLyBNbmVtb25pY2EgaW5zdGFuY2UgbWV0aG9kcyBpbnRlcmZhY2Vcbi8vIFRoZXNlIG1ldGhvZHMgYXJlIGFsd2F5cyBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZSBjaGFpblxuLy8gYnV0IGNhbiBiZSBoaWRkZW4gZnJvbSB0eXBlIGRlZmluaXRpb25zIHZpYSBleHBvc2VJbnN0YW5jZU1ldGhvZHMgb3B0aW9uXG5leHBvcnQgaW50ZXJmYWNlIE1uZW1vbmljYUluc3RhbmNlIHtcblx0ZXh0cmFjdCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblx0cGljayguLi5rZXlzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRwaWNrKGtleXM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBhcmVudCgpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHBhcmVudChjb25zdHJ1Y3Rvckxvb2t1cFBhdGg6IHN0cmluZyk6IG9iamVjdCB8IHVuZGVmaW5lZDtcblx0cmVhZG9ubHkgY2xvbmU6IG9iamVjdDtcblx0Zm9yayguLi5mb3JrQXJnczogdW5rbm93bltdKTogb2JqZWN0O1xuXHRleGNlcHRpb24oZXJyb3I6IEVycm9yLCAuLi5hcmdzOiB1bmtub3duW10pOiBFcnJvcjtcblx0cmVhZG9ubHkgc2libGluZzogU2libGluZ0FjY2Vzc29yO1xufVxuXG4vLyBJbnN0YW5jZSBwcm9wZXJ0aWVzIGZvciBfX3NlbGZfXyByZWZlcmVuY2Vcbi8vIFRoaXMgbWVyZ2VzIGludGVybmFsIHByb3BzIHdpdGggdGhlIGluc3RhbmNlIG1ldGhvZHNcbmV4cG9ydCB0eXBlIEluc3RhbmNlU2VsZlByb3BzID0gSW5zdGFuY2VJbnRlcm5hbFByb3BzICYge1xuXHRfX3NlbGZfXzogSW5zdGFuY2VJbnRlcm5hbFByb3BzICYgTW5lbW9uaWNhSW5zdGFuY2U7XG59O1xuXG4vLyBDb21iaW5lZCBQcm9wcyB0eXBlIGZvciBpbnRlcm5hbCB1c2VkIGluc2lkZSBvZiAuL3NyY1xuZXhwb3J0IHR5cGUgUHJvcHMgPSBJbnN0YW5jZVNlbGZQcm9wcyAmIHtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cblxuLy8gSW50ZXJuYWwgaW5zdGFuY2UgcHJvcGVydGllcyAobm9uLWVudW1lcmFibGUpXG4vLyBUaGVzZSBhcmUgYWx3YXlzIHByZXNlbnQgb24gaW5zdGFuY2VzIGJ1dCBhY2Nlc3NlZCB2aWEgZ2V0UHJvcHMvc2V0UHJvcHNcbmV4cG9ydCB0eXBlIEluc3RhbmNlSW50ZXJuYWxQcm9wcyA9IHtcblx0X19wcm90b19wcm90b19fOiBvYmplY3Q7XG5cdF9fYXJnc19fOiB1bmtub3duW107XG5cdF9fY29sbGVjdGlvbl9fOiBDb2xsZWN0aW9uRGVmO1xuXHRfX3N1YnR5cGVzX186IE1hcDxzdHJpbmcsIG9iamVjdD47XG5cdF9fdHlwZV9fOiBUeXBlRGVmO1xuXHRfX3BhcmVudF9fOiBvYmplY3Q7XG5cdF9fc3RhY2tfXz86IHN0cmluZztcblx0X19jcmVhdG9yX186IFR5cGVEZWY7XG5cdF9fdGltZXN0YW1wX186IG51bWJlcjtcblx0Ly8gX19zZWxmX186IEluc3RhbmNlSW50ZXJuYWxQcm9wcyAmIE1uZW1vbmljYUluc3RhbmNlOzMzMzNcbn07XG5cblxuLy8gSGVscGVyIHR5cGUgdG8gZGV0ZWN0IGlmIGV4cG9zZUluc3RhbmNlTWV0aG9kcyBpcyBleHBsaWNpdGx5IGZhbHNlXG5leHBvcnQgdHlwZSBJc0hpZGluZ01ldGhvZHM8Q29uZmlnIGV4dGVuZHMgY29uc3RydWN0b3JPcHRpb25zPiA9XG4gIENvbmZpZyBleHRlbmRzIHsgZXhwb3NlSW5zdGFuY2VNZXRob2RzOiBmYWxzZSB9ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBDb21iaW5lZCBpbnN0YW5jZSB0eXBlIGJhc2VkIG9uIGNvbmZpZ1xuZXhwb3J0IHR5cGUgSW5zdGFuY2VSZXN1bHQ8XG4gIE4gZXh0ZW5kcyBvYmplY3QsXG4gIENvbmZpZyBleHRlbmRzIGNvbnN0cnVjdG9yT3B0aW9ucyxcbiAgUiBleHRlbmRzIEZsYXR0ZW48Tj4gPSBGbGF0dGVuPE4+LFxuICBJIGV4dGVuZHMgeyBba2V5IGluIGtleW9mIFJdOiBSW2tleV0gfSA9IHsgW2tleSBpbiBrZXlvZiBSXTogUltrZXldIH0sXG4gIE0gZXh0ZW5kcyBJICYgTW5lbW9uaWNhSW5zdGFuY2UgPSBJICYgTW5lbW9uaWNhSW5zdGFuY2Vcbj4gPSBJc0hpZGluZ01ldGhvZHM8Q29uZmlnPiBleHRlbmRzIHRydWVcblx0Ly8gT25seSB1c2VyLWRlZmluZWQgcHJvcGVydGllcyAoaGlkaW5nIE1uZW1vbmljYUluc3RhbmNlICYgc3VidHlwZXMpXG4gID8gUlxuXHQvLyBVc2VyIHByb3BzICsgaW5zdGFuY2UgbWV0aG9kcyArIHN1YnR5cGVzXG4gIDogTTtcblxuLy8gRGVmaW5pdG9yIGluc3RhbmNlIC0gdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGRlZmluZVxuLy8gTiA9IGluc3RhbmNlIHR5cGUgKHByb3BlcnRpZXMgYXZhaWxhYmxlIG9uIGluc3RhbmNlcylcbi8vIFMgPSBzdWJ0eXBlcyBtYXBcbi8vIENvbmZpZyA9IGNvbnN0cnVjdG9yIG9wdGlvbnMgY29udHJvbGxpbmcgdHlwZSB2aXNpYmlsaXR5XG5leHBvcnQgaW50ZXJmYWNlIElEZWZpbml0b3JJbnN0YW5jZTxcblx0TiBleHRlbmRzIG9iamVjdCxcblx0Q29uZmlnIGV4dGVuZHMgY29uc3RydWN0b3JPcHRpb25zID0gY29uc3RydWN0b3JPcHRpb25zLFxuXHRSIGV4dGVuZHMgSW5zdGFuY2VSZXN1bHQ8TiwgQ29uZmlnPiA9IEluc3RhbmNlUmVzdWx0PE4sIENvbmZpZz5cbj4ge1xuXG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHByb3RvdHlwZTogTjtcblxuXHRcblx0Ly8gdGhlIGxpbmUgYmVsb3cgZGVjbGFyZXMgYSBgbmV3IC4uLmAgaW52b2NhdGlvbixcblx0Ly8gc28gbWFrZXMgaW50ZXJmYWNlIGNvbnN0cnVjdGlibGVcblx0Ly8gbmV3KC4uLmFyZ3M6IHVua25vd25bXSk6IHsgW2tleSBpbiBrZXlvZiBSXTogUltrZXldIH07XG5cdG5ldyguLi5hcmdzOiB1bmtub3duW10pOiBSO1xuXG5cdFxuXHQvLyBUT0RPOiBuZWVkIGNoZWNrIGlmIGxpbmUgYmVsb3cgd29ya3Ncblx0Ly8gYWxzbyBUUyBoaW50aW5nIGNoZWNrIGFzIHdlbGxcblx0Ly8gdGhlIGxpbmUgYmVsb3cgc2hvdWxkIG1ha2UgaXMgYSBAZGVjb3JhdGUgZGVjb3JhdG9yIHdvcmtpbmdcblx0KC4uLmFyZ3M6IHVua25vd25bXSk6IElEZWZpbml0b3JJbnN0YW5jZTxSLCBDb25maWc+O1xuXG5cblx0Ly8gRGVmaW5lIG1ldGhvZCB0aGF0IGNvbWJpbmVzIHBhcmVudCBOIHdpdGggbmV3IHR5cGUgVCB1c2luZyBQcm90b1xuXHRkZWZpbmU8XG5cdFx0VCBleHRlbmRzIG9iamVjdCxcblxuXHRcdC8vIHRoaXMgd2lsbCBiZSBpbnN0YW5jZSB0eXBlIGZvciBzdWItdHlwZSAhISFcblx0XHQvLyBGIGV4dGVuZHMgRmxhdHRlbjxQcm90bzxOLCBUPj5cblx0XHRGIGV4dGVuZHMgUHJvdG88TiwgVD5cblx0Pihcblx0XHRUeXBlT3JUeXBlTmFtZTogc3RyaW5nIHwgQ2FsbGFibGVGdW5jdGlvbixcblx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBJREVGPFQ+IHwgb2JqZWN0IHwgYm9vbGVhbiB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uZmlnT3JVbmRlZmluZWQ/OiBjb25zdHJ1Y3Rvck9wdGlvbnMgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgYm9vbGVhblxuXHQpOiBJRGVmaW5pdG9ySW5zdGFuY2U8RiwgQ29uZmlnPjtcblx0XG5cdGxvb2t1cDogVHlwZUxvb2t1cDtcblx0XG5cdHJlZ2lzdGVySG9vayhob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkO1xuXHRcblx0XG5cdHN1YnR5cGVzOiBTdWJ0eXBlc01hcDtcblx0XG5cdC8vIEludGVybmFsIHByb3BlcnRpZXMgYWNjZXNzZWQgYnkgdGVzdHNcblx0X190eXBlX18/OiBUeXBlRGVmO1xuXHRjb2xsZWN0aW9uPzogQ29sbGVjdGlvbkRlZjtcblxuXHQvKlxuXHQvLyBBbGxvdyBkeW5hbWljIHByb3BlcnR5IGFjY2VzcyBmb3Igc3VidHlwZXNcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcblx0Ki9cbn1cblxuLy8gVHlwZSBhYnNvcmJlciBmdW5jdGlvbiB0eXBlIC0gdXNlZCBmb3IgZGVmaW5pbmcgc3VidHlwZXNcbi8vIFN1cHBvcnRzIG11bHRpcGxlIGNhbGxpbmcgY29udmVudGlvbnM6XG4vLyAxLiBNb2Rlcm46IGRlZmluZShUeXBlTmFtZSwgY29uc3RydWN0SGFuZGxlciwgY29uZmlnPylcbi8vIDIuIExlZ2FjeTogZGVmaW5lKGNvbnN0cnVjdEhhbmRsZXIsIGNvbmZpZz8pIC0gVHlwZU5hbWUgZnJvbSBjb25zdHJ1Y3RvciBuYW1lXG4vLyAzLiBOZXN0ZWQ6IHBhcmVudFR5cGUuZGVmaW5lKFR5cGVOYW1lLCBjb25zdHJ1Y3RIYW5kbGVyLCBjb25maWc/KVxuLy8gVXNpbmcgaW50ZXJmYWNlIHdpdGggb3ZlcmxvYWRzIHRvIHByb3Blcmx5IGhhbmRsZSBleHBvc2VJbnN0YW5jZU1ldGhvZHMgb3B0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVBYnNvcmJlciB7XG5cdC8vIE92ZXJsb2FkOiB3aXRoIGV4cG9zZUluc3RhbmNlTWV0aG9kczogZmFsc2UgLSBoaWRlIGluc3RhbmNlIG1ldGhvZHNcblx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdHRoaXM6IHVua25vd24sXG5cdFx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnOiBJREVGPFQ+IHwgb2JqZWN0IHwgYm9vbGVhbiB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uZmlnT3JVbmRlZmluZWQ6IEhpZGVJbnN0YW5jZU1ldGhvZHNPcHRpb25zXG5cdCk6IElEZWZpbml0b3JJbnN0YW5jZTxULCBIaWRlSW5zdGFuY2VNZXRob2RzT3B0aW9ucz47XG5cdFxuXHQvLyBPdmVybG9hZDogd2l0aG91dCBjb25maWcgb3Igd2l0aCBleHBvc2VJbnN0YW5jZU1ldGhvZHMgbm90IGZhbHNlIC0gc2hvdyBhbGxcblx0PFQgZXh0ZW5kcyBvYmplY3Q+KFxuXHRcdHRoaXM6IHVua25vd24sXG5cdFx0VHlwZU9yVHlwZU5hbWU6IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0Y29uc3RydWN0SGFuZGxlck9yQ29uZmlnPzogSURFRjxUPiB8IG9iamVjdCB8IGJvb2xlYW4gfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdGNvbmZpZ09yVW5kZWZpbmVkPzogY29uc3RydWN0b3JPcHRpb25zIHwgQ2FsbGFibGVGdW5jdGlvbiB8IGJvb2xlYW5cblx0KTogSURlZmluaXRvckluc3RhbmNlPFQsIGNvbnN0cnVjdG9yT3B0aW9ucz47XG59XG5cbi8vIFR5cGVzQ29sbGVjdGlvbiBpbnRlcmZhY2UgZm9yIGNyZWF0ZVR5cGVzQ29sbGVjdGlvblxuLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhY3R1YWwgcmV0dXJuIHR5cGUgb2YgY3JlYXRlVHlwZXNDb2xsZWN0aW9uXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVzQ29sbGVjdGlvbiB7XG5cdGRlZmluZTogVHlwZUFic29yYmVyO1xuXHRsb29rdXA6IFR5cGVMb29rdXA7XG5cdHJlZ2lzdGVySG9vayhob29rVHlwZTogaG9va3NUeXBlcywgY2I6IGhvb2spOiB2b2lkO1xuXHRpbnZva2VIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBvcHRzOiBob29rc09wdHMpOiB2b2lkO1xuXHRyZWdpc3RlckZsb3dDaGVja2VyKGNiOiAoKSA9PiB1bmtub3duKTogdm9pZDtcblx0c3VidHlwZXM6IFN1YnR5cGVzTWFwO1xuXHRob29rczogUmVjb3JkPHN0cmluZywgaG9va1tdPjtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLy8gY3JlYXRlVHlwZXNDb2xsZWN0aW9uIGZ1bmN0aW9uIHR5cGVcbmV4cG9ydCB0eXBlIENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uID0gKGNvbmZpZz86IGNvbnN0cnVjdG9yT3B0aW9ucykgPT4gVHlwZXNDb2xsZWN0aW9uO1xuXG4vLyBUeXBlIGNsYXNzIC0gYmFzZSB0eXBlIGNvbnN0cnVjdG9yXG5leHBvcnQgdHlwZSBUeXBlQ2xhc3MgPSBJRGVmaW5pdG9ySW5zdGFuY2U8b2JqZWN0PjtcblxuLy8gR2VuZXJpYyB0eXBlIGNsYXNzXG5leHBvcnQgaW50ZXJmYWNlIElUeXBlQ2xhc3M8VD4ge1xuXHRuZXcoLi4uYXJnczogdW5rbm93bltdKTogVDtcblx0KHRoaXM6IFQsIC4uLmFyZ3M6IHVua25vd25bXSk6IFQ7XG5cdGRlZmluZTogSVR5cGVBYnNvcmJlcjxUPjtcblx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRyZWdpc3Rlckhvb2soaG9va1R5cGU6IGhvb2tzVHlwZXMsIGNiOiBob29rKTogdm9pZDtcbn1cblxuLy8gR2VuZXJpYyB0eXBlIGFic29yYmVyXG5leHBvcnQgdHlwZSBJVHlwZUFic29yYmVyPFQ+ID0gKFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZTogc3RyaW5nLFxuXHRjb25zdHJ1Y3RIYW5kbGVyOiBJREVGPFQ+LFxuXHRwcm90bz86IG9iamVjdCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pID0+IElUeXBlQ2xhc3M8VD47XG5cbi8vIFR5cGUgZGVzY3JpcHRvciBpbnN0YW5jZVxuZXhwb3J0IHR5cGUgVHlwZURlc2NyaXB0b3JJbnN0YW5jZSA9IHtcblx0ZGVmaW5lOiBDYWxsYWJsZUZ1bmN0aW9uO1xuXHRsb29rdXA6IENhbGxhYmxlRnVuY3Rpb247XG5cdHN1YnR5cGVzOiBvYmplY3Q7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG59O1xuXG4vLyBUeXBlRGVzY3JpcHRvciBjb25zdHJ1Y3RvciB0eXBlXG5leHBvcnQgdHlwZSBUeXBlRGVzY3JpcHRvckNvbnN0cnVjdG9yID0gVHlwZUNvbnN0cnVjdG9yPFR5cGVEZXNjcmlwdG9ySW5zdGFuY2U+O1xuXG4vLyBUeXBlc0NvbGxlY3Rpb24gY29uc3RydWN0b3IgdHlwZVxuZXhwb3J0IHR5cGUgVHlwZXNDb2xsZWN0aW9uQ29uc3RydWN0b3IgPSBUeXBlQ29uc3RydWN0b3I8b2JqZWN0PjtcblxuLy8gQ29uc3RydWN0b3IgdHlwZSBmb3IgZGVjb3JhdGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENvbnN0cnVjdG9yPFQgPSBvYmplY3Q+ID0gbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IFQ7XG5cbi8vIERlY29yYXRlZCBjbGFzcyB0eXBlIC0gaW5jbHVkZXMgY2FsbCBzaWduYXR1cmUgZm9yIGRlY29yYXRvciBwYXR0ZXJuXG5leHBvcnQgdHlwZSBEZWNvcmF0ZWRDbGFzczxUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0Pj4gPVxuXHRUICZcblx0KDxVIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0Pj4odGFyZ2V0OiBVKSA9PiBEZWNvcmF0ZWRDbGFzczxVPikgJiB7XG5cdFx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdFx0cmVnaXN0ZXJIb29rKGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vayk6IHZvaWQ7XG5cdFx0bG9va3VwOiBUeXBlTG9va3VwO1xuXHRcdFR5cGVOYW1lOiBzdHJpbmc7XG5cdH07XG5cbi8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNvbnN0cnVjdG9yIChmYWN0b3J5IHBhdHRlcm4pXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvckZhY3Rvcnk8VD4gPSAoKSA9PiBDb25zdHJ1Y3RvcjxUPjtcblxuLy8gQXBwbHkvQ2FsbC9CaW5kIGZ1bmN0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSBBcHBseUZ1bmN0aW9uID0gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0YXJncz86IHVua25vd25bXVxuKSA9PiBTO1xuXG5leHBvcnQgdHlwZSBDYWxsRnVuY3Rpb24gPSA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHQuLi5hcmdzOiB1bmtub3duW11cbikgPT4gUztcblxuZXhwb3J0IHR5cGUgQmluZEZ1bmN0aW9uID0gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKSA9PiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBTO1xuXG4vLyBVdGlscyBvYmplY3QgdHlwZVxuZXhwb3J0IGludGVyZmFjZSBVdGlsc0NvbGxlY3Rpb24ge1xuXHRleHRyYWN0OiAoaW5zdGFuY2U6IG9iamVjdCkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdHBpY2s6IChpbnN0YW5jZTogb2JqZWN0LCAuLi5hcmdzOiAoc3RyaW5nIHwgc3RyaW5nW10pW10pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRjb2xsZWN0Q29uc3RydWN0b3JzOiAoaW5zdGFuY2U6IG9iamVjdCwgZmxhdD86IGJvb2xlYW4pID0+IChDYWxsYWJsZUZ1bmN0aW9uIHwgc3RyaW5nKVtdO1xuXHRtZXJnZTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bjtcblx0cGFyc2U6ICh2YWx1ZTogdW5rbm93bikgPT4gb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHRwYXJlbnQ6IChpbnN0YW5jZTogb2JqZWN0LCBzdHJpY3Q/OiBib29sZWFuKSA9PiBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdHRvSlNPTjogKGluc3RhbmNlOiBvYmplY3QpID0+IHN0cmluZztcblx0W2tleTogc3RyaW5nXTogQ2FsbGFibGVGdW5jdGlvbjtcbn1cblxuLy8gTWFpbiBtbmVtb25pY2EgbW9kdWxlIGludGVyZmFjZSAtIHJlcHJlc2VudHMgdGhlIGV4cG9ydGVkIG1vZHVsZSBvYmplY3RcbmV4cG9ydCBpbnRlcmZhY2UgTW5lbW9uaWNhTW9kdWxlIHtcblx0Ly8gQ29yZSBmdW5jdGlvbnNcblx0ZGVmaW5lOiBUeXBlQWJzb3JiZXI7XG5cdGxvb2t1cDogKFR5cGVOZXN0ZWRQYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZDtcblx0YXBwbHk6IEFwcGx5RnVuY3Rpb247XG5cdGNhbGw6IENhbGxGdW5jdGlvbjtcblx0YmluZDogQmluZEZ1bmN0aW9uO1xuXHRkZWNvcmF0ZTogPFUgZXh0ZW5kcyBDb25zdHJ1Y3RvcjxvYmplY3Q+Pih0YXJnZXQ/OiBvYmplY3QsIGNvbmZpZz86IG9iamVjdCkgPT4gRGVjb3JhdGVkQ2xhc3M8VT47XG5cdHJlZ2lzdGVySG9vazogPFQgZXh0ZW5kcyBvYmplY3Q+KEN0b3I6IElERUY8VD4sIGhvb2tUeXBlOiBob29rc1R5cGVzLCBjYjogaG9vaykgPT4gdm9pZDtcblxuXHQvLyBEZXNjcmlwdG9yc1xuXHRkZWZhdWx0VHlwZXM6IFR5cGVzQ29sbGVjdGlvbjtcblxuXHQvLyBFcnJvcnNcblx0QkFTRV9NTkVNT05JQ0FfRVJST1I6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX1RZUEVfREVGSU5JVElPTjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk46IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdEFMUkVBRFlfREVDTEFSRUQ6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX0FSR1VNRU5UU19VU0VEOiBNbmVtb25pY2FFcnJvckNvbnN0cnVjdG9yO1xuXHRXUk9OR19IT09LX1RZUEU6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdE1JU1NJTkdfQ0FMTEJBQ0tfQVJHVU1FTlQ6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdC8vIEZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdE1JU1NJTkdfSE9PS19DQUxMQkFDSzogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0VFlQRU5BTUVfTVVTVF9CRV9BX1NUUklORzogTW5lbW9uaWNhRXJyb3JDb25zdHJ1Y3Rvcjtcblx0SEFORExFUl9NVVNUX0JFX0FfRlVOQ1RJT046IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdE9QVElPTlNfRVJST1I6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cdFdST05HX1NUQUNLX0NMRUFORVI6IE1uZW1vbmljYUVycm9yQ29uc3RydWN0b3I7XG5cblx0Ly8gQ29uc3RhbnRzXG5cdE1ORU1PTklDQTogc3RyaW5nO1xuXHRNTkVNT1NZTkU6IHN0cmluZztcblx0VVJBTlVTOiBzdHJpbmc7XG5cdFN5bWJvbFBhcmVudFR5cGU6IHN5bWJvbDtcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lOiBzeW1ib2w7XG5cdFN5bWJvbERlZmF1bHRUeXBlc0NvbGxlY3Rpb246IHN5bWJvbDtcblx0U3ltYm9sQ29uZmlnOiBzeW1ib2w7XG5cdFN5bWJvbEdhaWE6IHN5bWJvbDtcblx0VFlQRV9USVRMRV9QUkVGSVg6IHN0cmluZztcblx0RXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlcztcblxuXHQvLyBVdGlsc1xuXHR1dGlsczogVXRpbHNDb2xsZWN0aW9uO1xuXHRnZXRQcm9wczogKGluc3RhbmNlOiBvYmplY3QpID0+IFByb3BzVHlwZSB8IHVuZGVmaW5lZDtcblx0c2V0UHJvcHM6IChpbnN0YW5jZTogb2JqZWN0LCB2YWx1ZXM6IG9iamVjdCkgPT4gc3RyaW5nW10gfCBmYWxzZTtcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50OiAoaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgc3ViVHlwZTogc3RyaW5nKSA9PiBvYmplY3QgfCBudWxsO1xuXHRpc0NsYXNzOiAoZm46IENhbGxhYmxlRnVuY3Rpb24pID0+IGJvb2xlYW47XG5cblx0Ly8gY3JlYXRlVHlwZXNDb2xsZWN0aW9uXG5cdGNyZWF0ZVR5cGVzQ29sbGVjdGlvbjogQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblx0Ly8gQWxsb3cgYWRkaXRpb25hbCBwcm9wZXJ0aWVzXG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG4iXX0=
package/module/index.js CHANGED
@@ -1,13 +1,21 @@
1
- // ESM wrapper for mnemonica
2
- // This module re-exports everything from the CommonJS build
1
+ // ESM wrapper for mnemonica.
2
+ // Re-exports the CommonJS build under named ESM exports.
3
3
 
4
- // Use dynamic import to load CommonJS module
5
- const mnemonicaMod = await import('../build/index.js');
4
+ let mnemonicaMod;
5
+ try {
6
+ mnemonicaMod = await import('../build/index.js');
7
+ } catch (err) {
8
+ if (err && err.code === 'ERR_MODULE_NOT_FOUND') {
9
+ throw new Error(
10
+ 'mnemonica: ../build/index.js not found. ' +
11
+ 'If you installed from a Git checkout, run `npm run build` first.'
12
+ );
13
+ }
14
+ throw err;
15
+ }
6
16
 
7
- // Handle both ESM default and CommonJS exports patterns
8
17
  const m = mnemonicaMod.default || mnemonicaMod;
9
18
 
10
- // Re-export all properties as named exports
11
19
  export const define = m.define;
12
20
  export const lookup = m.lookup;
13
21
  export const lookupTyped = m.lookupTyped;
@@ -17,13 +25,11 @@ export const bind = m.bind;
17
25
  export const decorate = m.decorate;
18
26
  export const registerHook = m.registerHook;
19
27
 
20
- // Core objects
21
28
  export const mnemonica = m.mnemonica;
22
29
  export const utils = m.utils;
23
30
  export const defaultCollection = m.defaultCollection;
24
31
  export const defaultTypes = m.defaultTypes;
25
32
 
26
- // Utils
27
33
  export const getProps = m.getProps;
28
34
  export const setProps = m.setProps;
29
35
  export const isClass = m.isClass;
@@ -31,5 +37,4 @@ export const findSubTypeFromParent = m.findSubTypeFromParent;
31
37
  export const errors = m.errors;
32
38
  export const defineStackCleaner = m.defineStackCleaner;
33
39
 
34
- // Default export is the whole module
35
40
  export default m;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnemonica",
3
- "version": "0.9.99785",
3
+ "version": "0.9.99787",
4
4
  "description": "abstract technique that aids information retention : instance inheritance system",
5
5
  "type": "commonjs",
6
6
  "main": "./build/index.js",
@@ -33,15 +33,22 @@
33
33
  "Mobydack <devzetsubou@gmail.com>"
34
34
  ],
35
35
  "scripts": {
36
- "build": "rm -rf ./build && npx tsc --pretty --project tsconfig.json && npm run lint:src && npm run lint:test",
37
- "build:all": "rm -rf ./build && npx tsc --pretty --project tsconfig.json && npm run decorate:ts && npm run lint:src && npm run lint:test",
36
+ "build": "rm -rf ./build && npx tsc --pretty --project tsconfig.json",
37
+ "build:all": "npm run build && npm run decorate:ts",
38
+ "verify": "npm run build && npm run lint:check",
38
39
  "example": "npm run build && node ./test/example.js",
40
+ "example:async": "npm run build && node ./examples/AsyncNewTest.js",
41
+ "example:rename": "npm run build && node ./examples/ClassReName.js",
42
+ "example:v8bug": "npm run build && node ./examples/v8bug.js",
39
43
  "example:ts": "npx tsc ./test-ts/*.ts && npx eslint --fix ./test-ts/*.js && node ./test-ts/test-no-types.js && node ./test-ts/test-with-types.js",
40
44
  "deopt": "node --trace-deopt --trace-opt ./node_modules/mocha/bin/mocha.js ./test/index.js",
41
45
  "decorate:ts": "npx tsc --target ES2021 --moduleResolution NodeNext --module NodeNext --sourceMap ./test/decorate.ts",
42
46
  "lint": "npx eslint",
47
+ "lint:check": "npx eslint ./src ./test",
43
48
  "lint:src": "npx eslint --fix ./src",
44
49
  "lint:test": "npx eslint --fix ./test",
50
+ "lint:fix": "npm run lint:src && npm run lint:test",
51
+ "pretest": "npm run decorate:ts",
45
52
  "test": "mocha --allow-uncaught --enable-source-maps test/index.js",
46
53
  "test:cov": "npm run build:all && nyc --reporter=text-summary --reporter=lcov mocha --allow-uncaught --enable-source-maps --ui bdd --reporter spec ./test/index.js",
47
54
  "debug": "npx tsc --pretty --project tsconfig.json && npx mocha --allow-uncaught --enable-source-maps --reporter spec --inspect-brk test/index",
@@ -72,9 +79,9 @@
72
79
  "@eslint/eslintrc": "^3.3.5",
73
80
  "@eslint/js": "^9.21.0",
74
81
  "@types/jest": "^29.5.14",
75
- "@types/node": "^22.19.15",
76
- "@typescript-eslint/eslint-plugin": "^8.57.1",
77
- "@typescript-eslint/parser": "^8.57.1",
82
+ "@types/node": "^22.19.17",
83
+ "@typescript-eslint/eslint-plugin": "^8.59.1",
84
+ "@typescript-eslint/parser": "^8.59.1",
78
85
  "chai": "^5.3.3",
79
86
  "eslint": "^9.39.4",
80
87
  "eslint-plugin-import": "^2.32.0",
@@ -89,19 +96,15 @@
89
96
  "mocha-lcov-reporter": "^1.3.0",
90
97
  "nyc": "^17.1.0",
91
98
  "oxlint": "^0.16.12",
92
- "ts-jest": "^29.4.6",
99
+ "ts-jest": "^29.4.9",
93
100
  "typeomatica": "^0.3.57",
94
101
  "typescript": "^5.9.3"
95
102
  },
96
103
  "engines": {
97
- "node": ">=18 <24"
98
- },
99
- "husky": {
100
- "hooks": {
101
- "pre-commit": "lint-staged"
102
- }
104
+ "node": ">=18 <26"
103
105
  },
104
106
  "lint-staged": {
105
- "*.js": "eslint --fix"
107
+ "src/**/*.ts": "eslint --fix",
108
+ "test/**/*.js": "eslint --fix"
106
109
  }
107
110
  }