react-elmish 6.5.0-beta.1 → 6.5.0
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 +12 -9
- package/dist/cmd.d.ts +3 -3
- package/dist/cmd.js +10 -13
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -257,12 +257,15 @@ You can call one of the functions of that object:
|
|
|
257
257
|
|---|---|
|
|
258
258
|
| `cmd.ofMsg` | Dispatches a new message. |
|
|
259
259
|
| `cmd.batch` | Aggregates an array of messages. |
|
|
260
|
+
| `cmd.ofEither` | Calls a function (sync or async) and maps the result into a message. |
|
|
261
|
+
| `cmd.ofSuccess` | Same as `ofEither` but ignores the error case. |
|
|
262
|
+
| `cmd.ofError` | Same as `ofEither` but ignores the success case. |
|
|
260
263
|
| `cmd.ofFunc.either` | Calls a synchronous function and maps the result into a message. |
|
|
261
|
-
| `cmd.ofFunc.
|
|
262
|
-
| `cmd.ofFunc.
|
|
264
|
+
| `cmd.ofFunc.perform` | Same as `either` but ignores the error case. |
|
|
265
|
+
| `cmd.ofFunc.attempt` | Same as `either` but ignores the success case. |
|
|
263
266
|
| `cmd.ofPromise.either` | Calls an async function and maps the result into a message. |
|
|
264
|
-
| `cmd.ofPromise.
|
|
265
|
-
| `cmd.ofPromise.
|
|
267
|
+
| `cmd.ofPromise.perform` | Same as `either` but ignores the error case. |
|
|
268
|
+
| `cmd.ofPromise.attempt` | Same as `either` but ignores the success case. |
|
|
266
269
|
| `cmd.ofSub` | Use this function to trigger a command in a subscription. |
|
|
267
270
|
|
|
268
271
|
### Dispatch a message
|
|
@@ -334,7 +337,7 @@ and handle the messages in the **update** function:
|
|
|
334
337
|
// If loadSettings resolves it dispatches "SettingsLoaded"
|
|
335
338
|
// If it fails it dispatches "Error"
|
|
336
339
|
// The return type of loadSettings must fit Msg.settingsLoaded
|
|
337
|
-
return [{}, cmd.
|
|
340
|
+
return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error, "firstArg", 123)];
|
|
338
341
|
},
|
|
339
342
|
|
|
340
343
|
settingsLoaded () {
|
|
@@ -368,7 +371,7 @@ export function init (props: Props): InitResult {
|
|
|
368
371
|
To dispatch more than one command from `init` or `update` you can either use the `cmd.batch` function or simply return multiple commands:
|
|
369
372
|
|
|
370
373
|
```ts
|
|
371
|
-
return [{}, cmd.ofMsg(Msg.loadData()), cmd.
|
|
374
|
+
return [{}, cmd.ofMsg(Msg.loadData()), cmd.ofEither(doStuff, Msg.success, Msg.error)];
|
|
372
375
|
```
|
|
373
376
|
|
|
374
377
|
## Subscriptions
|
|
@@ -601,7 +604,7 @@ export function init (): Model {
|
|
|
601
604
|
|
|
602
605
|
export const update: UpdateMap<Props, Model, Message> = {
|
|
603
606
|
loadSettings () {
|
|
604
|
-
return [{}, cmd.
|
|
607
|
+
return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error)];
|
|
605
608
|
}
|
|
606
609
|
|
|
607
610
|
settingsLoaded ({ settings }) {
|
|
@@ -708,7 +711,7 @@ export function init (): InitResult<Model, Message> {
|
|
|
708
711
|
export function update (_model: Model, msg: Message): UpdateReturnType<Model, Message> {
|
|
709
712
|
switch (msg.name) {
|
|
710
713
|
case "loadSettings":
|
|
711
|
-
return [{}, cmd.
|
|
714
|
+
return [{}, cmd.ofEither(loadSettings, Msg.settingsLoaded, Msg.error)];
|
|
712
715
|
|
|
713
716
|
case "settingsLoaded":
|
|
714
717
|
return [{ settings: msg.settings }];
|
|
@@ -827,7 +830,7 @@ To inform the parent component about some action, let's say to close a dialog fo
|
|
|
827
830
|
{
|
|
828
831
|
// ...
|
|
829
832
|
close () {
|
|
830
|
-
return [{}, cmd.
|
|
833
|
+
return [{}, cmd.ofError(props.onClose, Msg.error)];
|
|
831
834
|
}
|
|
832
835
|
// ...
|
|
833
836
|
};
|
package/dist/cmd.d.ts
CHANGED
|
@@ -22,21 +22,21 @@ declare const cmd: {
|
|
|
22
22
|
* @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
|
|
23
23
|
* @param args The parameters of the task.
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
ofEither<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
26
|
/**
|
|
27
27
|
* Creates a command out of a function and ignores the error case. This can also be an async function.
|
|
28
28
|
* @param task The async function to call.
|
|
29
29
|
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
30
30
|
* @param args The parameters of the task.
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
ofSuccess<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
33
|
/**
|
|
34
34
|
* Creates a command out of a function and ignores the success case. This can also be an async function.
|
|
35
35
|
* @param task The function to call.
|
|
36
36
|
* @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
|
|
37
37
|
* @param args The parameters of the task.
|
|
38
38
|
*/
|
|
39
|
-
|
|
39
|
+
ofError<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>;
|
|
40
40
|
/**
|
|
41
41
|
* Provides functionalities to create commands from simple functions.
|
|
42
42
|
*/
|
package/dist/cmd.js
CHANGED
|
@@ -38,7 +38,7 @@ var cmd = {
|
|
|
38
38
|
* @param ofError Creates the message to dispatch when the function throws an error or, for an async function, the promise is rejected.
|
|
39
39
|
* @param args The parameters of the task.
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
ofEither: function ofEither(task, ofSuccess, ofError) {
|
|
42
42
|
for (var _len2 = arguments.length, args = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
|
|
43
43
|
args[_key2 - 3] = arguments[_key2];
|
|
44
44
|
}
|
|
@@ -62,19 +62,16 @@ var cmd = {
|
|
|
62
62
|
* @param ofSuccess Creates the message to dispatch when the function runs successfully or, for an async function, the promise is resolved.
|
|
63
63
|
* @param args The parameters of the task.
|
|
64
64
|
*/
|
|
65
|
-
|
|
65
|
+
ofSuccess: function ofSuccess(task, _ofSuccess) {
|
|
66
66
|
for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
|
|
67
67
|
args[_key3 - 2] = arguments[_key3];
|
|
68
68
|
}
|
|
69
|
-
var defaultFallbackHandler = function defaultFallbackHandler() {
|
|
70
|
-
// blank
|
|
71
|
-
};
|
|
72
69
|
var bind = function bind(dispatch) {
|
|
73
70
|
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
|
|
74
71
|
try {
|
|
75
72
|
var taskResult = task.apply(void 0, args);
|
|
76
73
|
Promise.resolve(taskResult).then(function (result) {
|
|
77
|
-
return dispatch(
|
|
74
|
+
return dispatch(_ofSuccess(result));
|
|
78
75
|
})["catch"](fallback);
|
|
79
76
|
} catch (ex) {
|
|
80
77
|
fallback(ex);
|
|
@@ -88,7 +85,7 @@ var cmd = {
|
|
|
88
85
|
* @param ofError Creates the message to dispatch when the function runs successfully or, for an async function, the promise is rejected.
|
|
89
86
|
* @param args The parameters of the task.
|
|
90
87
|
*/
|
|
91
|
-
|
|
88
|
+
ofError: function ofError(task, _ofError) {
|
|
92
89
|
for (var _len4 = arguments.length, args = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
93
90
|
args[_key4 - 2] = arguments[_key4];
|
|
94
91
|
}
|
|
@@ -98,10 +95,10 @@ var cmd = {
|
|
|
98
95
|
Promise.resolve(taskResult).then(function () {
|
|
99
96
|
return fallback === null || fallback === void 0 ? void 0 : fallback();
|
|
100
97
|
})["catch"](function (ex) {
|
|
101
|
-
return dispatch(
|
|
98
|
+
return dispatch(_ofError(ex));
|
|
102
99
|
});
|
|
103
100
|
} catch (ex) {
|
|
104
|
-
dispatch(
|
|
101
|
+
dispatch(_ofError(ex));
|
|
105
102
|
}
|
|
106
103
|
};
|
|
107
104
|
return [bind];
|
|
@@ -210,9 +207,6 @@ var cmd = {
|
|
|
210
207
|
for (var _len9 = arguments.length, args = new Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
|
|
211
208
|
args[_key9 - 2] = arguments[_key9];
|
|
212
209
|
}
|
|
213
|
-
var defaultFallbackHandler = function defaultFallbackHandler() {
|
|
214
|
-
// blank
|
|
215
|
-
};
|
|
216
210
|
var bind = function bind(dispatch) {
|
|
217
211
|
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFallbackHandler;
|
|
218
212
|
task.apply(void 0, args).then(function (result) {
|
|
@@ -245,4 +239,7 @@ var cmd = {
|
|
|
245
239
|
}
|
|
246
240
|
};
|
|
247
241
|
exports.cmd = cmd;
|
|
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+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZXhwb3J0IHtcbiAgICBjbWQsXG59OyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHO0VBQ1I7QUFDSjtBQUNBO0FBQ0E7RUFDSUMsS0FBSyxXQUFBQSxNQUE0QkMsR0FBYSxFQUFpQjtJQUMzRCxPQUFPLENBQUMsVUFBQUMsUUFBUTtNQUFBLE9BQUlBLFFBQVEsQ0FBQ0QsR0FBRyxDQUFDO0lBQUEsRUFBQztFQUN0QyxDQUFDO0VBQ0Q7QUFDSjtBQUNBO0FBQ0E7RUFDSUUsS0FBSyxXQUFBQSxNQUFBLEVBQStGO0lBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBaEVDLFFBQVEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7TUFBUkYsUUFBUSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtJQUFBO0lBQ3hDLE9BQVFGLFFBQVEsQ0FBQ0csTUFBTSxDQUFDQyxPQUFPLENBQUMsQ0FBc0JDLElBQUksRUFBRTtFQUNoRSxDQUFDO0VBQ0Q7QUFDSjtBQUNBO0FBQ0E7RUFDSUMsS0FBSyxXQUFBQSxNQUE0QkMsR0FBa0IsRUFBaUI7SUFDaEUsT0FBTyxDQUFDQSxHQUFHLENBQUM7RUFDaEIsQ0FBQztFQUVEO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0lDLE1BQU0sV0FBQUEsT0FBOERDLElBQWlDLEVBQUVDLFNBQWlELEVBQUVDLE9BQW1DLEVBQWlDO0lBQUEsU0FBQUMsS0FBQSxHQUFBZCxTQUFBLENBQUFDLE1BQUEsRUFBNUJjLElBQUksT0FBQVosS0FBQSxDQUFBVyxLQUFBLE9BQUFBLEtBQUEsV0FBQUUsS0FBQSxNQUFBQSxLQUFBLEdBQUFGLEtBQUEsRUFBQUUsS0FBQTtNQUFKRCxJQUFJLENBQUFDLEtBQUEsUUFBQWhCLFNBQUEsQ0FBQWdCLEtBQUE7SUFBQTtJQUNsTSxJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQVc7TUFDakQsSUFBSTtRQUNBLElBQU1xQixVQUFVLEdBQUdQLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUM7UUFFaENLLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDSCxVQUFVLENBQUMsQ0FDdEJJLElBQUksQ0FBQyxVQUFBQyxNQUFNO1VBQUEsT0FBSTFCLFFBQVEsQ0FBQ2UsU0FBUyxDQUFDVyxNQUFNLENBQUMsQ0FBQztRQUFBLEVBQUMsU0FDdEMsQ0FBQyxVQUFDQyxFQUFTO1VBQUEsT0FBSzNCLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQ1csRUFBRSxDQUFDLENBQUM7UUFBQSxFQUFDO01BQ3BELENBQUMsQ0FBQyxPQUFPQSxFQUFXLEVBQUU7UUFDbEIzQixRQUFRLENBQUNnQixPQUFPLENBQUNXLEVBQUUsQ0FBVSxDQUFDO01BQ2xDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0VBQ2pCLENBQUM7RUFDRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSVEsT0FBTyxXQUFBQSxRQUE4RGQsSUFBaUMsRUFBRUMsU0FBaUQsRUFBaUM7SUFBQSxTQUFBYyxLQUFBLEdBQUExQixTQUFBLENBQUFDLE1BQUEsRUFBNUJjLElBQUksT0FBQVosS0FBQSxDQUFBdUIsS0FBQSxPQUFBQSxLQUFBLFdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7TUFBSlosSUFBSSxDQUFBWSxLQUFBLFFBQUEzQixTQUFBLENBQUEyQixLQUFBO0lBQUE7SUFDOUosSUFBTUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFlO01BQ3ZDO0lBQUEsQ0FDSDtJQUVELElBQU1YLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJcEIsUUFBNEIsRUFBK0Q7TUFBQSxJQUE3RGdDLFFBQXlCLEdBQUE3QixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBOEIsU0FBQSxHQUFBOUIsU0FBQSxNQUFHNEIsc0JBQXNCO01BQzFGLElBQUk7UUFDQSxJQUFNVixVQUFVLEdBQUdQLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUM7UUFFaENLLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDSCxVQUFVLENBQUMsQ0FDdEJJLElBQUksQ0FBQyxVQUFBQyxNQUFNO1VBQUEsT0FBSTFCLFFBQVEsQ0FBQ2UsU0FBUyxDQUFDVyxNQUFNLENBQUMsQ0FBQztRQUFBLEVBQUMsU0FDdEMsQ0FBQ00sUUFBUSxDQUFDO01BQ3hCLENBQUMsQ0FBQyxPQUFPTCxFQUFXLEVBQUU7UUFDbEJLLFFBQVEsQ0FBQ0wsRUFBRSxDQUFVO01BQ3pCO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0VBQ2pCLENBQUM7RUFDRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSWMsT0FBTyxXQUFBQSxRQUE4RHBCLElBQWlDLEVBQUVFLE9BQW1DLEVBQWlDO0lBQUEsU0FBQW1CLEtBQUEsR0FBQWhDLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmMsSUFBSSxPQUFBWixLQUFBLENBQUE2QixLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtNQUFKbEIsSUFBSSxDQUFBa0IsS0FBQSxRQUFBakMsU0FBQSxDQUFBaUMsS0FBQTtJQUFBO0lBQ2hKLElBQU1oQixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQUVnQyxRQUEwQixFQUFXO01BQzdFLElBQUk7UUFDQSxJQUFNWCxVQUFVLEdBQUdQLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUM7UUFFaENLLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDSCxVQUFVLENBQUMsQ0FDdEJJLElBQUksQ0FBQztVQUFBLE9BQU1PLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxFQUFJO1FBQUEsRUFBQyxTQUNuQixDQUFDLFVBQUNMLEVBQVM7VUFBQSxPQUFLM0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDVyxFQUFFLENBQUMsQ0FBQztRQUFBLEVBQUM7TUFDcEQsQ0FBQyxDQUFDLE9BQU9BLEVBQVcsRUFBRTtRQUNsQjNCLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQ1csRUFBRSxDQUFVLENBQUM7TUFDbEM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDUCxJQUFJLENBQUM7RUFDakIsQ0FBQztFQUVEO0FBQ0o7QUFDQTtFQUNJaUIsTUFBTSxFQUFFO0lBQ0o7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUXhCLE1BQU0sV0FBQUEsT0FBOERDLElBQWlDLEVBQUVDLFNBQXdDLEVBQUVDLE9BQW1DLEVBQWlDO01BQUEsU0FBQXNCLEtBQUEsR0FBQW5DLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmMsSUFBSSxPQUFBWixLQUFBLENBQUFnQyxLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKckIsSUFBSSxDQUFBcUIsS0FBQSxRQUFBcEMsU0FBQSxDQUFBb0MsS0FBQTtNQUFBO01BQ3pMLElBQU1uQixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQVc7UUFDakQsSUFBSTtVQUNBLElBQU0wQixPQUFNLEdBQUdaLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUM7VUFFNUJsQixRQUFRLENBQUNlLFNBQVMsQ0FBQ1csT0FBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLE9BQU9DLEVBQVcsRUFBRTtVQUNsQjNCLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQ1csRUFBRSxDQUFVLENBQUM7UUFDbEM7TUFDSixDQUFDO01BRUQsT0FBTyxDQUFDUCxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUNEO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNRUSxPQUFPLFdBQUFBLFFBQThEZCxJQUFpQyxFQUFFQyxTQUF3QyxFQUFpQztNQUFBLFNBQUF5QixLQUFBLEdBQUFyQyxTQUFBLENBQUFDLE1BQUEsRUFBNUJjLElBQUksT0FBQVosS0FBQSxDQUFBa0MsS0FBQSxPQUFBQSxLQUFBLFdBQUFDLEtBQUEsTUFBQUEsS0FBQSxHQUFBRCxLQUFBLEVBQUFDLEtBQUE7UUFBSnZCLElBQUksQ0FBQXVCLEtBQUEsUUFBQXRDLFNBQUEsQ0FBQXNDLEtBQUE7TUFBQTtNQUNySixJQUFNckIsSUFBSSxHQUFHLFNBQVBBLElBQUlBLENBQUlwQixRQUE0QixFQUFFZ0MsUUFBMEIsRUFBVztRQUM3RSxJQUFJO1VBQ0EsSUFBTU4sUUFBTSxHQUFHWixJQUFJLENBQUFRLEtBQUEsU0FBSUosSUFBSSxDQUFDO1VBRTVCbEIsUUFBUSxDQUFDZSxTQUFTLENBQUNXLFFBQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxPQUFPQyxFQUFXLEVBQUU7VUFDbEIsSUFBSUssUUFBUSxFQUFFO1lBQ1ZBLFFBQVEsQ0FBQ0wsRUFBRSxDQUFVO1VBQ3pCO1FBQ0o7TUFDSixDQUFDO01BRUQsT0FBTyxDQUFDUCxJQUFJLENBQUM7SUFDakIsQ0FBQztJQUNEO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNRYyxPQUFPLFdBQUFBLFFBQThEcEIsSUFBaUMsRUFBRUUsT0FBbUMsRUFBaUM7TUFBQSxTQUFBMEIsS0FBQSxHQUFBdkMsU0FBQSxDQUFBQyxNQUFBLEVBQTVCYyxJQUFJLE9BQUFaLEtBQUEsQ0FBQW9DLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUp6QixJQUFJLENBQUF5QixLQUFBLFFBQUF4QyxTQUFBLENBQUF3QyxLQUFBO01BQUE7TUFDaEosSUFBTXZCLElBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFJcEIsUUFBNEIsRUFBRWdDLFFBQTBCLEVBQVc7UUFDN0UsSUFBSTtVQUNBbEIsSUFBSSxDQUFBUSxLQUFBLFNBQUlKLElBQUksQ0FBQztVQUViLElBQUljLFFBQVEsRUFBRTtZQUNWQSxRQUFRLEVBQUU7VUFDZDtRQUNKLENBQUMsQ0FBQyxPQUFPTCxFQUFXLEVBQUU7VUFDbEIzQixRQUFRLENBQUNnQixPQUFPLENBQUNXLEVBQUUsQ0FBVSxDQUFDO1FBQ2xDO01BQ0osQ0FBQztNQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0lBQ2pCO0VBQ0osQ0FBQztFQUNEO0FBQ0o7QUFDQTtFQUNJd0IsU0FBUyxFQUFFO0lBQ1A7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUS9CLE1BQU0sV0FBQUEsT0FBOERDLElBQTBDLEVBQUVDLFNBQXdDLEVBQUVDLE9BQW1DLEVBQWlDO01BQUEsU0FBQTZCLEtBQUEsR0FBQTFDLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmMsSUFBSSxPQUFBWixLQUFBLENBQUF1QyxLQUFBLE9BQUFBLEtBQUEsV0FBQUMsS0FBQSxNQUFBQSxLQUFBLEdBQUFELEtBQUEsRUFBQUMsS0FBQTtRQUFKNUIsSUFBSSxDQUFBNEIsS0FBQSxRQUFBM0MsU0FBQSxDQUFBMkMsS0FBQTtNQUFBO01BQ2xNLElBQU0xQixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQVc7UUFDakRjLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUMsQ0FBQ08sSUFBSSxDQUFDLFVBQUFDLE1BQU07VUFBQSxPQUFJMUIsUUFBUSxDQUFDZSxTQUFTLENBQUNXLE1BQU0sQ0FBQyxDQUFDO1FBQUEsRUFBQyxTQUMvQyxDQUFDLFVBQUNDLEVBQVM7VUFBQSxPQUFLM0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDVyxFQUFFLENBQUMsQ0FBQztRQUFBLEVBQUM7TUFDcEQsQ0FBQztNQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0lBQ2pCLENBQUM7SUFDRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUVEsT0FBTyxXQUFBQSxRQUE4RGQsSUFBMEMsRUFBRUMsU0FBd0MsRUFBaUM7TUFBQSxTQUFBZ0MsS0FBQSxHQUFBNUMsU0FBQSxDQUFBQyxNQUFBLEVBQTVCYyxJQUFJLE9BQUFaLEtBQUEsQ0FBQXlDLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO1FBQUo5QixJQUFJLENBQUE4QixLQUFBLFFBQUE3QyxTQUFBLENBQUE2QyxLQUFBO01BQUE7TUFDOUosSUFBTWpCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBZTtRQUN2QztNQUFBLENBQ0g7TUFFRCxJQUFNWCxJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQStEO1FBQUEsSUFBN0RnQyxRQUF5QixHQUFBN0IsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQThCLFNBQUEsR0FBQTlCLFNBQUEsTUFBRzRCLHNCQUFzQjtRQUMxRmpCLElBQUksQ0FBQVEsS0FBQSxTQUFJSixJQUFJLENBQUMsQ0FBQ08sSUFBSSxDQUFDLFVBQUFDLE1BQU07VUFBQSxPQUFJMUIsUUFBUSxDQUFDZSxTQUFTLENBQUNXLE1BQU0sQ0FBQyxDQUFDO1FBQUEsRUFBQyxTQUMvQyxDQUFDTSxRQUFRLENBQUM7TUFDeEIsQ0FBQztNQUVELE9BQU8sQ0FBQ1osSUFBSSxDQUFDO0lBQ2pCLENBQUM7SUFDRDtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDUWMsT0FBTyxXQUFBQSxRQUE4RHBCLElBQTBDLEVBQUVFLE9BQW1DLEVBQWlDO01BQUEsU0FBQWlDLE1BQUEsR0FBQTlDLFNBQUEsQ0FBQUMsTUFBQSxFQUE1QmMsSUFBSSxPQUFBWixLQUFBLENBQUEyQyxNQUFBLE9BQUFBLE1BQUEsV0FBQUMsTUFBQSxNQUFBQSxNQUFBLEdBQUFELE1BQUEsRUFBQUMsTUFBQTtRQUFKaEMsSUFBSSxDQUFBZ0MsTUFBQSxRQUFBL0MsU0FBQSxDQUFBK0MsTUFBQTtNQUFBO01BQ3pKLElBQU05QixJQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXBCLFFBQTRCLEVBQUVnQyxRQUEwQixFQUFXO1FBQzdFbEIsSUFBSSxDQUFBUSxLQUFBLFNBQUlKLElBQUksQ0FBQyxDQUFDTyxJQUFJLENBQUMsWUFBTTtVQUNyQixJQUFJTyxRQUFRLEVBQUU7WUFDVkEsUUFBUSxFQUFFO1VBQ2Q7UUFDSixDQUFDLENBQUMsU0FDUSxDQUFDLFVBQUNMLEVBQVM7VUFBQSxPQUFLM0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDVyxFQUFFLENBQUMsQ0FBQztRQUFBLEVBQUM7TUFDcEQsQ0FBQztNQUVELE9BQU8sQ0FBQ1AsSUFBSSxDQUFDO0lBQ2pCO0VBQ0o7QUFDSixDQUFDO0FBQUMrQixPQUFBLENBQUF0RCxHQUFBLEdBQUFBLEdBQUEifQ==
|
|
242
|
+
function defaultFallbackHandler() {
|
|
243
|
+
// blank
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbWQiLCJvZk1zZyIsIm1zZyIsImRpc3BhdGNoIiwiYmF0Y2giLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiY29tbWFuZHMiLCJBcnJheSIsIl9rZXkiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZmxhdCIsIm9mU3ViIiwic3ViIiwib2ZFaXRoZXIiLCJ0YXNrIiwib2ZTdWNjZXNzIiwib2ZFcnJvciIsIl9sZW4yIiwiYXJncyIsIl9rZXkyIiwiYmluZCIsInRhc2tSZXN1bHQiLCJhcHBseSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInJlc3VsdCIsImV4IiwiX2xlbjMiLCJfa2V5MyIsImZhbGxiYWNrIiwidW5kZWZpbmVkIiwiZGVmYXVsdEZhbGxiYWNrSGFuZGxlciIsIl9sZW40IiwiX2tleTQiLCJvZkZ1bmMiLCJlaXRoZXIiLCJfbGVuNSIsIl9rZXk1IiwicGVyZm9ybSIsIl9sZW42IiwiX2tleTYiLCJhdHRlbXB0IiwiX2xlbjciLCJfa2V5NyIsIm9mUHJvbWlzZSIsIl9sZW44IiwiX2tleTgiLCJfbGVuOSIsIl9rZXk5IiwiX2xlbjEwIiwiX2tleTEwIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jbWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21kLCBEaXNwYXRjaCwgRmFsbGJhY2tIYW5kbGVyLCBNZXNzYWdlLCBTdWIgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5jb25zdCBjbWQgPSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc3BlY2lmaWMgbWVzc2FnZS5cbiAgICAgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIHNwZWNpZmljIG1lc3NhZ2UuXG4gICAgICovXG4gICAgb2ZNc2c8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAobXNnOiBUTWVzc2FnZSk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICByZXR1cm4gW2Rpc3BhdGNoID0+IGRpc3BhdGNoKG1zZyldO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIG11bHRpcGxlIGNvbW1hbmRzLlxuICAgICAqIEBwYXJhbSB7Q21kPFRNZXNzYWdlPiBbXX0gY29tbWFuZHMgQXJyYXkgb2YgY29tbWFuZHMuXG4gICAgICovXG4gICAgYmF0Y2g8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoLi4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkIHwgbnVsbCkgW10pOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgcmV0dXJuIChjb21tYW5kcy5maWx0ZXIoQm9vbGVhbikgYXMgQ21kPFRNZXNzYWdlPiBbXSkuZmxhdCgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDb21tYW5kIHRvIGNhbGwgdGhlIHN1YnNjcmliZXIuXG4gICAgICogQHBhcmFtIHtTdWI8VE1lc3NhZ2U+fSBzdWIgVGhlIHN1YnNjcmliZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgb2ZTdWI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiAoc3ViOiBTdWI8VE1lc3NhZ2U+KTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIHJldHVybiBbc3ViXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LiBUaGlzIGNhbiBhbHNvIGJlIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgZnVuY3Rpb24gcnVucyBzdWNjZXNzZnVsbHkgb3IsIGZvciBhbiBhc3luYyBmdW5jdGlvbiwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuXG4gICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZFaXRoZXI8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBBd2FpdGVkPFRSZXR1cm4+KSA9PiBUTWVzc2FnZSwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIGVycm9yIGNhc2UuIFRoaXMgY2FuIGFsc28gYmUgYW4gYXN5bmMgZnVuY3Rpb24uXG4gICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBmdW5jdGlvbiBydW5zIHN1Y2Nlc3NmdWxseSBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZTdWNjZXNzPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mU3VjY2VzczogKHJlc3VsdDogQXdhaXRlZDxUUmV0dXJuPikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s6IEZhbGxiYWNrSGFuZGxlciA9IGRlZmF1bHRGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFza1Jlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGFza1Jlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGZhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2soZXggYXMgRXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBbYmluZF07XG4gICAgfSxcblxuICAgIC8qKlxuICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIHN1Y2Nlc3MgY2FzZS4gVGhpcyBjYW4gYWxzbyBiZSBhbiBhc3luYyBmdW5jdGlvbi5cbiAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBmdW5jdGlvbiBydW5zIHN1Y2Nlc3NmdWxseSBvciwgZm9yIGFuIGFzeW5jIGZ1bmN0aW9uLCB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICovXG4gICAgb2ZFcnJvcjxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrUmVzdWx0ID0gdGFzayguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh0YXNrUmVzdWx0KVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBmYWxsYmFjaz8uKCkpXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXg6IEVycm9yKSA9PiBkaXNwYXRjaChvZkVycm9yKGV4KSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChvZkVycm9yKGV4IGFzIEVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0aWVzIHRvIGNyZWF0ZSBjb21tYW5kcyBmcm9tIHNpbXBsZSBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZGdW5jOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgdGFzay5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGVpdGhlcjxUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRBcmdzIGV4dGVuZHMgdW5rbm93biBbXSwgVFJldHVybj4odGFzazogKC4uLmFyZ3M6IFRBcmdzKSA9PiBUUmV0dXJuLCBvZlN1Y2Nlc3M6IChyZXN1bHQ6IFRSZXR1cm4pID0+IFRNZXNzYWdlLCBvZkVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mRXJyb3IoZXggYXMgRXJyb3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhIHNpbXBsZSBmdW5jdGlvbiBhbmQgaWdub3JlcyB0aGUgZXJyb3IgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZTdWNjZXNzIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIHRhc2suXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIHBlcmZvcm08VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gVFJldHVybiwgb2ZTdWNjZXNzOiAocmVzdWx0OiBUUmV0dXJuKSA9PiBUTWVzc2FnZSwgLi4uYXJnczogVEFyZ3MpOiBDbWQ8VE1lc3NhZ2U+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmQgPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNZXNzYWdlPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0YXNrKC4uLmFyZ3MpO1xuXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKG9mU3VjY2VzcyhyZXN1bHQpKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrKGV4IGFzIEVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGEgc2ltcGxlIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBzdWNjZXNzIGNhc2UuXG4gICAgICAgICogQHBhcmFtIHRhc2sgVGhlIGZ1bmN0aW9uIHRvIGNhbGwuXG4gICAgICAgICogQHBhcmFtIG9mRXJyb3IgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBhdHRlbXB0PFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXR1cm4sIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2soLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXg6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2gob2ZFcnJvcihleCBhcyBFcnJvcikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdGllcyB0byBjcmVhdGUgY29tbWFuZHMgZnJvbSBhc3luYyBmdW5jdGlvbnMuXG4gICAgICovXG4gICAgb2ZQcm9taXNlOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIENyZWF0ZXMgYSBjb21tYW5kIG91dCBvZiBhbiBhc3luYyBmdW5jdGlvbiBhbmQgbWFwcyB0aGUgcmVzdWx0LlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBvZkVycm9yIENyZWF0ZXMgdGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2ggd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC5cbiAgICAgICAgKiBAcGFyYW0gYXJncyBUaGUgcGFyYW1ldGVycyBvZiB0aGUgdGFzay5cbiAgICAgICAgKi9cbiAgICAgICAgZWl0aGVyPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIG9mRXJyb3I6IChlcnJvcjogRXJyb3IpID0+IFRNZXNzYWdlLCAuLi5hcmdzOiBUQXJncyk6IENtZDxUTWVzc2FnZT4ge1xuICAgICAgICAgICAgY29uc3QgYmluZCA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGV4OiBFcnJvcikgPT4gZGlzcGF0Y2gob2ZFcnJvcihleCkpKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBbYmluZF07XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICogQ3JlYXRlcyBhIGNvbW1hbmQgb3V0IG9mIGFuIGFzeW5jIGZ1bmN0aW9uIGFuZCBpZ25vcmVzIHRoZSBlcnJvciBjYXNlLlxuICAgICAgICAqIEBwYXJhbSB0YXNrIFRoZSBhc3luYyBmdW5jdGlvbiB0byBjYWxsLlxuICAgICAgICAqIEBwYXJhbSBvZlN1Y2Nlc3MgQ3JlYXRlcyB0aGUgbWVzc2FnZSB0byBkaXNwYXRjaCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLlxuICAgICAgICAqIEBwYXJhbSBhcmdzIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSB0YXNrLlxuICAgICAgICAqL1xuICAgICAgICBwZXJmb3JtPFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVEFyZ3MgZXh0ZW5kcyB1bmtub3duIFtdLCBUUmV0dXJuPih0YXNrOiAoLi4uYXJnczogVEFyZ3MpID0+IFByb21pc2U8VFJldHVybj4sIG9mU3VjY2VzczogKHJlc3VsdDogVFJldHVybikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4sIGZhbGxiYWNrOiBGYWxsYmFja0hhbmRsZXIgPSBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4gZGlzcGF0Y2gob2ZTdWNjZXNzKHJlc3VsdCkpKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZmFsbGJhY2spO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFtiaW5kXTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgKiBDcmVhdGVzIGEgY29tbWFuZCBvdXQgb2YgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGlnbm9yZXMgdGhlIHN1Y2Nlc3MgY2FzZS5cbiAgICAgICAgKiBAcGFyYW0gdGFzayBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbC5cbiAgICAgICAgKiBAcGFyYW0gb2ZFcnJvciBDcmVhdGVzIHRoZSBtZXNzYWdlIHRvIGRpc3BhdGNoIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuXG4gICAgICAgICogQHBhcmFtIGFyZ3MgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHRhc2suXG4gICAgICAgICovXG4gICAgICAgIGF0dGVtcHQ8VE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUQXJncyBleHRlbmRzIHVua25vd24gW10sIFRSZXR1cm4+KHRhc2s6ICguLi5hcmdzOiBUQXJncykgPT4gUHJvbWlzZTxUUmV0dXJuPiwgb2ZFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gVE1lc3NhZ2UsIC4uLmFyZ3M6IFRBcmdzKTogQ21kPFRNZXNzYWdlPiB7XG4gICAgICAgICAgICBjb25zdCBiaW5kID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTWVzc2FnZT4sIGZhbGxiYWNrPzogRmFsbGJhY2tIYW5kbGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGFzayguLi5hcmdzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChleDogRXJyb3IpID0+IGRpc3BhdGNoKG9mRXJyb3IoZXgpKSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW2JpbmRdO1xuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5mdW5jdGlvbiBkZWZhdWx0RmFsbGJhY2tIYW5kbGVyICgpOiB2b2lkIHtcbiAgICAvLyBibGFua1xufVxuXG5leHBvcnQge1xuICAgIGNtZCxcbn07Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUc7RUFDUjtBQUNKO0FBQ0E7QUFDQTtFQUNJQyxLQUFLLFdBQUFBLE1BQTRCQyxHQUFhLEVBQWlCO0lBQzNELE9BQU8sQ0FBQyxVQUFBQyxRQUFRO01BQUEsT0FBSUEsUUFBUSxDQUFDRCxHQUFHLENBQUM7SUFBQSxFQUFDO0VBQ3RDLENBQUM7RUFFRDtBQUNKO0FBQ0E7QUFDQTtFQUNJRSxLQUFLLFdBQUFBLE1BQUEsRUFBK0Y7SUFBQSxTQUFBQyxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUFoRUMsUUFBUSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtNQUFSRixRQUFRLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO0lBQUE7SUFDeEMsT0FBUUYsUUFBUSxDQUFDRyxN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
|