react-elmish 6.4.1 → 6.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cmd.d.ts +28 -6
- package/dist/cmd.js +88 -13
- package/package.json +1 -1
package/dist/cmd.d.ts
CHANGED
|
@@ -15,6 +15,28 @@ declare const cmd: {
|
|
|
15
15
|
* @param {Sub<TMessage>} sub The subscriber function.
|
|
16
16
|
*/
|
|
17
17
|
ofSub<TMessage_2 extends Message>(sub: Sub<TMessage_2>): Cmd<TMessage_2>;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a command out of a function and maps the result. This can also be an async function.
|
|
20
|
+
* @param task The function to call.
|
|
21
|
+
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
22
|
+
* @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
|
|
23
|
+
* @param args The parameters of the task.
|
|
24
|
+
*/
|
|
25
|
+
either<TMessage_3 extends Message, TArgs extends unknown[], TReturn>(task: (...args: TArgs) => TReturn, ofSuccess: (result: Awaited<TReturn>) => TMessage_3, ofError: (error: Error) => TMessage_3, ...args: TArgs): Cmd<TMessage_3>;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a command out of a function and ignores the error case. This can also be an async function.
|
|
28
|
+
* @param task The async function to call.
|
|
29
|
+
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
30
|
+
* @param args The parameters of the task.
|
|
31
|
+
*/
|
|
32
|
+
perform<TMessage_4 extends Message, TArgs_1 extends unknown[], TReturn_1>(task: (...args: TArgs_1) => TReturn_1, ofSuccess: (result: Awaited<TReturn_1>) => TMessage_4, ...args: TArgs_1): Cmd<TMessage_4>;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a command out of a function and ignores the success case. This can also be an async function.
|
|
35
|
+
* @param task The function to call.
|
|
36
|
+
* @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
|
|
37
|
+
* @param args The parameters of the task.
|
|
38
|
+
*/
|
|
39
|
+
attempt<TMessage_5 extends Message, TArgs_2 extends unknown[], TReturn_2>(task: (...args: TArgs_2) => TReturn_2, ofError: (error: Error) => TMessage_5, ...args: TArgs_2): Cmd<TMessage_5>;
|
|
18
40
|
/**
|
|
19
41
|
* Provides functionalities to create commands from simple functions.
|
|
20
42
|
*/
|
|
@@ -26,21 +48,21 @@ declare const cmd: {
|
|
|
26
48
|
* @param ofError Creates the message to dispatch when an error occurred.
|
|
27
49
|
* @param args The parameters of the task.
|
|
28
50
|
*/
|
|
29
|
-
either<
|
|
51
|
+
either<TMessage_6 extends Message, TArgs_3 extends unknown[], TReturn_3>(task: (...args: TArgs_3) => TReturn_3, ofSuccess: (result: TReturn_3) => TMessage_6, ofError: (error: Error) => TMessage_6, ...args: TArgs_3): Cmd<TMessage_6>;
|
|
30
52
|
/**
|
|
31
53
|
* Creates a command out of a simple function and ignores the error case.
|
|
32
54
|
* @param task The function to call.
|
|
33
55
|
* @param ofSuccess Creates the message to dispatch after a successful call of the task.
|
|
34
56
|
* @param args The parameters of the task.
|
|
35
57
|
*/
|
|
36
|
-
perform<
|
|
58
|
+
perform<TMessage_7 extends Message, TArgs_4 extends unknown[], TReturn_4>(task: (...args: TArgs_4) => TReturn_4, ofSuccess: (result: TReturn_4) => TMessage_7, ...args: TArgs_4): Cmd<TMessage_7>;
|
|
37
59
|
/**
|
|
38
60
|
* Creates a command out of a simple function and ignores the success case.
|
|
39
61
|
* @param task The function to call.
|
|
40
62
|
* @param ofError Creates the message to dispatch when an error occurred.
|
|
41
63
|
* @param args The parameters of the task.
|
|
42
64
|
*/
|
|
43
|
-
attempt<
|
|
65
|
+
attempt<TMessage_8 extends Message, TArgs_5 extends unknown[], TReturn_5>(task: (...args: TArgs_5) => TReturn_5, ofError: (error: Error) => TMessage_8, ...args: TArgs_5): Cmd<TMessage_8>;
|
|
44
66
|
};
|
|
45
67
|
/**
|
|
46
68
|
* Provides functionalities to create commands from async functions.
|
|
@@ -53,21 +75,21 @@ declare const cmd: {
|
|
|
53
75
|
* @param ofError Creates the message to dispatch when the promise is rejected.
|
|
54
76
|
* @param args The parameters of the task.
|
|
55
77
|
*/
|
|
56
|
-
either<
|
|
78
|
+
either<TMessage_9 extends Message, TArgs_6 extends unknown[], TReturn_6>(task: (...args: TArgs_6) => Promise<TReturn_6>, ofSuccess: (result: TReturn_6) => TMessage_9, ofError: (error: Error) => TMessage_9, ...args: TArgs_6): Cmd<TMessage_9>;
|
|
57
79
|
/**
|
|
58
80
|
* Creates a command out of an async function and ignores the error case.
|
|
59
81
|
* @param task The async function to call.
|
|
60
82
|
* @param ofSuccess Creates the message to dispatch when the promise is resolved.
|
|
61
83
|
* @param args The parameters of the task.
|
|
62
84
|
*/
|
|
63
|
-
perform<
|
|
85
|
+
perform<TMessage_10 extends Message, TArgs_7 extends unknown[], TReturn_7>(task: (...args: TArgs_7) => Promise<TReturn_7>, ofSuccess: (result: TReturn_7) => TMessage_10, ...args: TArgs_7): Cmd<TMessage_10>;
|
|
64
86
|
/**
|
|
65
87
|
* Creates a command out of an async function and ignores the success case.
|
|
66
88
|
* @param task The async function to call.
|
|
67
89
|
* @param ofError Creates the message to dispatch when the promise is rejected.
|
|
68
90
|
* @param args The parameters of the task.
|
|
69
91
|
*/
|
|
70
|
-
attempt<
|
|
92
|
+
attempt<TMessage_11 extends Message, TArgs_8 extends unknown[], TReturn_8>(task: (...args: TArgs_8) => Promise<TReturn_8>, ofError: (error: Error) => TMessage_11, ...args: TArgs_8): Cmd<TMessage_11>;
|
|
71
93
|
};
|
|
72
94
|
};
|
|
73
95
|
export { cmd, };
|
package/dist/cmd.js
CHANGED
|
@@ -31,6 +31,81 @@ var cmd = {
|
|
|
31
31
|
ofSub: function ofSub(sub) {
|
|
32
32
|
return [sub];
|
|
33
33
|
},
|
|
34
|
+
/**
|
|
35
|
+
* Creates a command out of a function and maps the result. This can also be an async function.
|
|
36
|
+
* @param task The function to call.
|
|
37
|
+
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
38
|
+
* @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
|
|
39
|
+
* @param args The parameters of the task.
|
|
40
|
+
*/
|
|
41
|
+
either: function either(task, ofSuccess, ofError) {
|
|
42
|
+
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
|
|
43
|
+
args[_key2 - 3] = arguments[_key2];
|
|
44
|
+
}
|
|
45
|
+
var bind = function bind(dispatch) {
|
|
46
|
+
try {
|
|
47
|
+
var taskResult = task.apply(void 0, args);
|
|
48
|
+
Promise.resolve(taskResult).then(function (result) {
|
|
49
|
+
return dispatch(ofSuccess(result));
|
|
50
|
+
})["catch"](function (ex) {
|
|
51
|
+
return dispatch(ofError(ex));
|
|
52
|
+
});
|
|
53
|
+
} catch (ex) {
|
|
54
|
+
dispatch(ofError(ex));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
return [bind];
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Creates a command out of a function and ignores the error case. This can also be an async function.
|
|
61
|
+
* @param task The async function to call.
|
|
62
|
+
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
63
|
+
* @param args The parameters of the task.
|
|
64
|
+
*/
|
|
65
|
+
perform: function perform(task, ofSuccess) {
|
|
66
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
|
|
67
|
+
args[_key3 - 2] = arguments[_key3];
|
|
68
|
+
}
|
|
69
|
+
var defaultFallbackHandler = function defaultFallbackHandler() {
|
|
70
|
+
// blank
|
|
71
|
+
};
|
|
72
|
+
var bind = function bind(dispatch) {
|
|
73
|
+
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
|
|
74
|
+
try {
|
|
75
|
+
var taskResult = task.apply(void 0, args);
|
|
76
|
+
Promise.resolve(taskResult).then(function (result) {
|
|
77
|
+
return dispatch(ofSuccess(result));
|
|
78
|
+
})["catch"](fallback);
|
|
79
|
+
} catch (ex) {
|
|
80
|
+
fallback(ex);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
return [bind];
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* Creates a command out of a function and ignores the success case. This can also be an async function.
|
|
87
|
+
* @param task The function to call.
|
|
88
|
+
* @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
|
|
89
|
+
* @param args The parameters of the task.
|
|
90
|
+
*/
|
|
91
|
+
attempt: function attempt(task, ofError) {
|
|
92
|
+
for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
93
|
+
args[_key4 - 2] = arguments[_key4];
|
|
94
|
+
}
|
|
95
|
+
var bind = function bind(dispatch, fallback) {
|
|
96
|
+
try {
|
|
97
|
+
var taskResult = task.apply(void 0, args);
|
|
98
|
+
Promise.resolve(taskResult).then(function () {
|
|
99
|
+
return fallback === null || fallback === void 0 ? void 0 : fallback();
|
|
100
|
+
})["catch"](function (ex) {
|
|
101
|
+
return dispatch(ofError(ex));
|
|
102
|
+
});
|
|
103
|
+
} catch (ex) {
|
|
104
|
+
dispatch(ofError(ex));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return [bind];
|
|
108
|
+
},
|
|
34
109
|
/**
|
|
35
110
|
* Provides functionalities to create commands from simple functions.
|
|
36
111
|
*/
|
|
@@ -43,8 +118,8 @@ var cmd = {
|
|
|
43
118
|
* @param args The parameters of the task.
|
|
44
119
|
*/
|
|
45
120
|
either: function either(task, ofSuccess, ofError) {
|
|
46
|
-
for (var
|
|
47
|
-
args[
|
|
121
|
+
for (var _len5 = arguments.length, args = new Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
|
|
122
|
+
args[_key5 - 3] = arguments[_key5];
|
|
48
123
|
}
|
|
49
124
|
var bind = function bind(dispatch) {
|
|
50
125
|
try {
|
|
@@ -63,8 +138,8 @@ var cmd = {
|
|
|
63
138
|
* @param args The parameters of the task.
|
|
64
139
|
*/
|
|
65
140
|
perform: function perform(task, ofSuccess) {
|
|
66
|
-
for (var
|
|
67
|
-
args[
|
|
141
|
+
for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
|
|
142
|
+
args[_key6 - 2] = arguments[_key6];
|
|
68
143
|
}
|
|
69
144
|
var bind = function bind(dispatch, fallback) {
|
|
70
145
|
try {
|
|
@@ -85,8 +160,8 @@ var cmd = {
|
|
|
85
160
|
* @param args The parameters of the task.
|
|
86
161
|
*/
|
|
87
162
|
attempt: function attempt(task, ofError) {
|
|
88
|
-
for (var
|
|
89
|
-
args[
|
|
163
|
+
for (var _len7 = arguments.length, args = new Array(_len7 > 2 ? _len7 - 2 : 0), _key7 = 2; _key7 < _len7; _key7++) {
|
|
164
|
+
args[_key7 - 2] = arguments[_key7];
|
|
90
165
|
}
|
|
91
166
|
var bind = function bind(dispatch, fallback) {
|
|
92
167
|
try {
|
|
@@ -113,8 +188,8 @@ var cmd = {
|
|
|
113
188
|
* @param args The parameters of the task.
|
|
114
189
|
*/
|
|
115
190
|
either: function either(task, ofSuccess, ofError) {
|
|
116
|
-
for (var
|
|
117
|
-
args[
|
|
191
|
+
for (var _len8 = arguments.length, args = new Array(_len8 > 3 ? _len8 - 3 : 0), _key8 = 3; _key8 < _len8; _key8++) {
|
|
192
|
+
args[_key8 - 3] = arguments[_key8];
|
|
118
193
|
}
|
|
119
194
|
var bind = function bind(dispatch) {
|
|
120
195
|
task.apply(void 0, args).then(function (result) {
|
|
@@ -132,8 +207,8 @@ var cmd = {
|
|
|
132
207
|
* @param args The parameters of the task.
|
|
133
208
|
*/
|
|
134
209
|
perform: function perform(task, ofSuccess) {
|
|
135
|
-
for (var
|
|
136
|
-
args[
|
|
210
|
+
for (var _len9 = arguments.length, args = new Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
|
|
211
|
+
args[_key9 - 2] = arguments[_key9];
|
|
137
212
|
}
|
|
138
213
|
var defaultFallbackHandler = function defaultFallbackHandler() {
|
|
139
214
|
// blank
|
|
@@ -153,8 +228,8 @@ var cmd = {
|
|
|
153
228
|
* @param args The parameters of the task.
|
|
154
229
|
*/
|
|
155
230
|
attempt: function attempt(task, ofError) {
|
|
156
|
-
for (var
|
|
157
|
-
args[
|
|
231
|
+
for (var _len10 = arguments.length, args = new Array(_len10 > 2 ? _len10 - 2 : 0), _key10 = 2; _key10 < _len10; _key10++) {
|
|
232
|
+
args[_key10 - 2] = arguments[_key10];
|
|
158
233
|
}
|
|
159
234
|
var bind = function bind(dispatch, fallback) {
|
|
160
235
|
task.apply(void 0, args).then(function () {
|
|
@@ -170,4 +245,4 @@ var cmd = {
|
|
|
170
245
|
}
|
|
171
246
|
};
|
|
172
247
|
exports.cmd = cmd;
|
|
173
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZGdW5jIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJfbGVuMiIsImFyZ3MiLCJfa2V5MiIsImJpbmQiLCJyZXN1bHQiLCJhcHBseSIsImV4IiwicGVyZm9ybSIsIl9sZW4zIiwiX2tleTMiLCJmYWxsYmFjayIsImF0dGVtcHQiLCJfbGVuNCIsIl9rZXk0Iiwib2ZQcm9taXNlIiwiX2xlbjUiLCJfa2V5NSIsInRoZW4iLCJfbGVuNiIsIl9rZXk2IiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsInVuZGVmaW5lZCIsIl9sZW43IiwiX2tleTciLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2NtZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbWQsIERpc3BhdGNoLCBGYWxsYmFja0hhbmRsZXIsIE1lc3NhZ2UsIFN1YiB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbmNvbnN0IGNtZCA9IHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgc3BlY2lmaWMgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBvZk1zZzxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+IChtc2c6IFRNZXNzYWdlKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbZGlzcGF0Y2ggPT4gZGlzcGF0Y2gobXNnKV07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoLi4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCkgW10pOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogQ29tbWFuZCB0byBjYWxsIHRoZSBzdWJzY3JpYmVyLlxuICAgICAqIEBwYXJhbSB7U3ViPFRNZXNzYWdlPn0gc3ViIFRoZSBzdWJzY3JpYmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIG9mU3ViPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gKHN1YjogU3ViPFRNZXNzYWdlPik6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gW3N1Yl07XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gc2ltcGxlIGZ1bmN0aW9ucy5cbiAgICAgKi9cbiAgICBvZkZ1bmM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBtYXBzIHRoZSByZXN1bHQuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSB0YXNrLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgZWl0aGVyPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChvZlN1Y2Nlc3MocmVzdWx0KSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIGFzeW5jIGZ1bmN0aW9ucy5cbiAgICAgKi9cbiAgICBvZlByb21pc2U6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBtYXBzIHRoZSByZXN1bHQuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBlaXRoZXI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gYmxhbmtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgc3VjY2VzcyBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgYXR0ZW1wdDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrKC4uLmFyZ3MpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbmV4cG9ydCB7XG4gICAgY21kLFxufTsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRztFQUNSO0FBQ0o7QUFDQTtBQUNBO0VBQ0lDLEtBQUssV0FBQUEsTUFBNEJDLEdBQWEsRUFBaUI7SUFDM0QsT0FBTyxDQUFDLFVBQUFDLFFBQVE7TUFBQSxPQUFJQSxRQUFRLENBQUNELEdBQUcsQ0FBQztJQUFBLEVBQUM7RUFDdEMsQ0FBQztFQUNEO0FBQ0o7QUFDQTtBQUNBO0VBQ0lFLEtBQUssV0FBQUEsTUFBQSxFQUErRjtJQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQWhFQyxRQUFRLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxHQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO01BQVJGLFFBQVEsQ0FBQUUsSUFBQSxJQUFBSixTQUFBLENBQUFJLElBQUE7SUFBQTtJQUN4QyxPQUFRRixRQUFRLENBQUNHLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLENBQXNCQyxJQUFJLEVBQUU7RUFDaEUsQ0FBQztFQUNEO0FBQ0o7QUFDQTtBQUNBO0VBQ0lDLEtBQUssV0FBQUEsTUFBNEJDLEdBQWtCLEVBQWlCO0lBQ2hFLE9BQU8sQ0FBQ0EsR0FBRyxDQUFDO0VBQ2hCLENBQUM7RUFDRDtBQUNKO0FBQ0E7RUFDSUMsTUFBTSxFQUFFO0lBQ0o7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUUMsTUFBTSxXQUFBQSxPQUE4REMsSUFBaUMsRUFBRUMsU0FBd0MsRUFBRUMsT0FBbUMsRUFBaUM7TUFBQSxTQUFBQyxLQUFBLEdBQUFmLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmUsSUFBSSxPQUFBYixLQUFBLENBQUFZLEtBQUEsT0FBQUEsS0FBQSxXQUFBRSxLQUFBLE1BQUFBLEtBQUEsR0FBQUYsS0FBQSxFQUFBRSxLQUFBO1FBQUpELElBQUksQ0FBQUMsS0FBQSxRQUFBakIsU0FBQSxDQUFBaUIsS0FBQTtNQUFBO01BQ3pMLElBQU1DLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJckIsUUFBNEIsRUFBVztRQUNqRCxJQUFJO1VBQ0EsSUFBTXNCLE9BQU0sR0FBR1AsSUFBSSxDQUFBUSxLQUFBLFNBQUlKLElBQUksQ0FBQztVQUU1Qm5CLFFBQVEsQ0FBQ2dCLFNBQVMsQ0FBQ00sT0FBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLE9BQU9FLEVBQVcsRUFBRTtVQUNsQnhCLFFBQVEsQ0FBQ2lCLE9BQU8sQ0FBQ08sRUFBRSxDQUFVLENBQUM7UUFDbEM7TUFDSixDQUFDO01BRUQsT0FBTyxDQUFDSCxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUNEO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNRSSxPQUFPLFdBQUFBLFFBQThEVixJQUFpQyxFQUFFQyxTQUF3QyxFQUFpQztNQUFBLFNBQUFVLEtBQUEsR0FBQXZCLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmUsSUFBSSxPQUFBYixLQUFBLENBQUFvQixLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKUixJQUFJLENBQUFRLEtBQUEsUUFBQXhCLFNBQUEsQ0FBQXdCLEtBQUE7TUFBQTtNQUNySixJQUFNTixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXJCLFFBQTRCLEVBQUU0QixRQUEwQixFQUFXO1FBQzdFLElBQUk7VUFDQSxJQUFNTixRQUFNLEdBQUdQLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUM7VUFFNUJuQixRQUFRLENBQUNnQixTQUFTLENBQUNNLFFBQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxPQUFPRSxFQUFXLEVBQUU7VUFDbEIsSUFBSUksUUFBUSxFQUFFO1lBQ1ZBLFFBQVEsQ0FBQ0osRUFBRSxDQUFVO1VBQ3pCO1FBQ0o7TUFDSixDQUFDO01BRUQsT0FBTyxDQUFDSCxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUNEO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNRUSxPQUFPLFdBQUFBLFFBQThEZCxJQUFpQyxFQUFFRSxPQUFtQyxFQUFpQztNQUFBLFNBQUFhLEtBQUEsR0FBQTNCLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmUsSUFBSSxPQUFBYixLQUFBLENBQUF3QixLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKWixJQUFJLENBQUFZLEtBQUEsUUFBQTVCLFNBQUEsQ0FBQTRCLEtBQUE7TUFBQTtNQUNoSixJQUFNVixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXJCLFFBQTRCLEVBQUU0QixRQUEwQixFQUFXO1FBQzdFLElBQUk7VUFDQWIsSUFBSSxDQUFBUSxLQUFBLFNBQUlKLElBQUksQ0FBQztVQUViLElBQUlTLFFBQVEsRUFBRTtZQUNWQSxRQUFRLEVBQUU7VUFDZDtRQUNKLENBQUMsQ0FBQyxPQUFPSixFQUFXLEVBQUU7VUFDbEJ4QixRQUFRLENBQUNpQixPQUFPLENBQUNPLEVBQUUsQ0FBVSxDQUFDO1FBQ2xDO01BQ0osQ0FBQztNQUVELE9BQU8sQ0FBQ0gsSUFBSSxDQUFDO0lBQ2pCO0VBQ0osQ0FBQztFQUNEO0FBQ0o7QUFDQTtFQUNJVyxTQUFTLEVBQUU7SUFDUDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNRbEIsTUFBTSxXQUFBQSxPQUE4REMsSUFBMEMsRUFBRUMsU0FBd0MsRUFBRUMsT0FBbUMsRUFBaUM7TUFBQSxTQUFBZ0IsS0FBQSxHQUFBOUIsU0FBQSxDQUFBQyxNQUFBLEVBQTVCZSxJQUFJLE9BQUFiLEtBQUEsQ0FBQTJCLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUpmLElBQUksQ0FBQWUsS0FBQSxRQUFBL0IsU0FBQSxDQUFBK0IsS0FBQTtNQUFBO01BQ2xNLElBQU1iLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJckIsUUFBNEIsRUFBVztRQUNqRGUsSUFBSSxDQUFBUSxLQUFBLFNBQUlKLElBQUksQ0FBQyxDQUFDZ0IsSUFBSSxDQUFDLFVBQUFiLE1BQU07VUFBQSxPQUFJdEIsUUFBUSxDQUFDZ0IsU0FBUyxDQUFDTSxNQUFNLENBQUMsQ0FBQztRQUFBLEVBQUMsU0FDL0MsQ0FBQyxVQUFDRSxFQUFTO1VBQUEsT0FBS3hCLFFBQVEsQ0FBQ2lCLE9BQU8sQ0FBQ08sRUFBRSxDQUFDLENBQUM7UUFBQSxFQUFDO01BQ3BELENBQUM7TUFFRCxPQUFPLENBQUNILElBQUksQ0FBQztJQUNqQixDQUFDO0lBQ0Q7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ1FJLE9BQU8sV0FBQUEsUUFBOERWLElBQTBDLEVBQUVDLFNBQXdDLEVBQWlDO01BQUEsU0FBQW9CLEtBQUEsR0FBQWpDLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmUsSUFBSSxPQUFBYixLQUFBLENBQUE4QixLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKbEIsSUFBSSxDQUFBa0IsS0FBQSxRQUFBbEMsU0FBQSxDQUFBa0MsS0FBQTtNQUFBO01BQzlKLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBZTtRQUN2QztNQUFBLENBQ0g7TUFFRCxJQUFNakIsSUFBSSxHQUFHLFNBQVBBLElBQUlBLENBQUlyQixRQUE0QixFQUErRDtRQUFBLElBQTdENEIsUUFBeUIsR0FBQXpCLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFvQyxTQUFBLEdBQUFwQyxTQUFBLE1BQUdtQyxzQkFBc0I7UUFDMUZ2QixJQUFJLENBQUFRLEtBQUEsU0FBSUosSUFBSSxDQUFDLENBQUNnQixJQUFJLENBQUMsVUFBQWIsTUFBTTtVQUFBLE9BQUl0QixRQUFRLENBQUNnQixTQUFTLENBQUNNLE1BQU0sQ0FBQyxDQUFDO1FBQUEsRUFBQyxTQUMvQyxDQUFDTSxRQUFRLENBQUM7TUFDeEIsQ0FBQztNQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0lBQ2pCLENBQUM7SUFDRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUVEsT0FBTyxXQUFBQSxRQUE4RGQsSUFBMEMsRUFBRUUsT0FBbUMsRUFBaUM7TUFBQSxTQUFBdUIsS0FBQSxHQUFBckMsU0FBQSxDQUFBQyxNQUFBLEVBQTVCZSxJQUFJLE9BQUFiLEtBQUEsQ0FBQWtDLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUp0QixJQUFJLENBQUFzQixLQUFBLFFBQUF0QyxTQUFBLENBQUFzQyxLQUFBO01BQUE7TUFDekosSUFBTXBCLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJckIsUUFBNEIsRUFBRTRCLFFBQTBCLEVBQVc7UUFDN0ViLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUMsQ0FBQ2dCLElBQUksQ0FBQyxZQUFNO1VBQ3JCLElBQUlQLFFBQVEsRUFBRTtZQUNWQSxRQUFRLEVBQUU7VUFDZDtRQUNKLENBQUMsQ0FBQyxTQUNRLENBQUMsVUFBQ0osRUFBUztVQUFBLE9BQUt4QixRQUFRLENBQUNpQixPQUFPLENBQUNPLEVBQUUsQ0FBQyxDQUFDO1FBQUEsRUFBQztNQUNwRCxDQUFDO01BRUQsT0FBTyxDQUFDSCxJQUFJLENBQUM7SUFDakI7RUFDSjtBQUNKLENBQUM7QUFBQ3FCLE9BQUEsQ0FBQTdDLEdBQUEsR0FBQUEsR0FBQSJ9
|
|
248
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwiZWl0aGVyIiwidGFzayIsIm9mU3VjY2VzcyIsIm9mRXJyb3IiLCJfbGVuMiIsImFyZ3MiLCJfa2V5MiIsImJpbmQiLCJ0YXNrUmVzdWx0IiwiYXBwbHkiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJyZXN1bHQiLCJleCIsInBlcmZvcm0iLCJfbGVuMyIsIl9rZXkzIiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsImZhbGxiYWNrIiwidW5kZWZpbmVkIiwiYXR0ZW1wdCIsIl9sZW40IiwiX2tleTQiLCJvZkZ1bmMiLCJfbGVuNSIsIl9rZXk1IiwiX2xlbjYiLCJfa2V5NiIsIl9sZW43IiwiX2tleTciLCJvZlByb21pc2UiLCJfbGVuOCIsIl9rZXk4IiwiX2xlbjkiLCJfa2V5OSIsIl9sZW4xMCIsIl9rZXkxMCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvY21kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENtZCwgRGlzcGF0Y2gsIEZhbGxiYWNrSGFuZGxlciwgTWVzc2FnZSwgU3ViIH0gZnJvbSBcIi4vVHlwZXNcIjtcblxuY29uc3QgY21kID0ge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIHtUTWVzc2FnZX0gbXNnIFRoZSBzcGVjaWZpYyBtZXNzYWdlLlxuICAgICAqL1xuICAgIG9mTXNnPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gKG1zZzogVE1lc3NhZ2UpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIFtkaXNwYXRjaCA9PiBkaXNwYXRjaChtc2cpXTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0ZXMgbXVsdGlwbGUgY29tbWFuZHMuXG4gICAgICogQHBhcmFtIHtDbWQ8VE1lc3NhZ2U+IFtdfSBjb21tYW5kcyBBcnJheSBvZiBjb21tYW5kcy5cbiAgICAgKi9cbiAgICBiYXRjaDxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+ICguLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQgfCBudWxsKSBbXSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gKGNvbW1hbmRzLmZpbHRlcihCb29sZWFuKSBhcyBDbWQ8VE1lc3NhZ2U+IFtdKS5mbGF0KCk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbc3ViXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LiBUaGlzIGNhbiBhbHNvIGJlIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgZWl0aGVyPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogQXdhaXRlZDxUUmV0dXJuPikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza1Jlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgIH0sXG4gICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS4gVGhpcyBjYW4gYWxzbyBiZSBhbiBhc3luYyBmdW5jdGlvbi5cbiAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICogQHBhcmFtIG9mU3VjY2VzcyBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHJ1bnMgc3VjY2Vzc2Z1bGx5IG9yLCBmb3IgYW4gYXN5bmMgZnVuY3Rpb24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgKi9cbiAgICBwZXJmb3JtPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogQXdhaXRlZDxUUmV0dXJuPikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBibGFua1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza1Jlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcbiAgICAvKipcbiAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG4gICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAqL1xuICAgIGF0dGVtcHQ8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza1Jlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gZmFsbGJhY2s/LigpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBzaW1wbGUgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mRnVuYzoge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBzaW1wbGUgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBlaXRoZXI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBlcnJvciBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0PFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBmdW5jdGlvbmFsaXRpZXMgdG8gY3JlYXRlIGNvbW1hbmRzIGZyb20gYXN5bmMgZnVuY3Rpb25zLlxuICAgICAqL1xuICAgIG9mUHJvbWlzZToge1xuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3VsdC5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncykudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgcGVyZm9ybTxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBQcm9taXNlPFRSZXR1cm4+LCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEZhbGxiYWNrSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBibGFua1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjazogRmFsbGJhY2tIYW5kbGVyID0gZGVmYXVsdEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncykudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZmFsbGJhY2spO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0PFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZXhwb3J0IHtcbiAgICBjbWQsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHO0VBQ1I7QUFDSjtBQUNBO0FBQ0E7RUFDSUMsS0FBSyxXQUFBQSxNQUE0QkMsR0FBYSxFQUFpQjtJQUMzRCxPQUFPLENBQUMsVUFBQUMsUUFBUTtNQUFBLE9BQUlBLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDO0lBQUEsRUFBQztFQUN0QyxDQUFDO0VBQ0Q7QUFDSjtBQUNBO0FBQ0E7RUFDSUUsS0FBSyxXQUFBQSxNQUFBLEVBQStGO0lBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBaEVDLFFBQVEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7TUFBUkYsUUFBUSxDQUFBRSxJQUFB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
|