necessary 10.0.0 → 10.0.4
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 +42 -44
- package/lib/browser.js +1 -1
- package/lib/characters.js +2 -2
- package/lib/constants.js +2 -2
- package/lib/contentTypes.js +1 -1
- package/lib/defaults.js +2 -2
- package/lib/eventTypes.js +1 -1
- package/lib/levels.js +2 -2
- package/lib/main.js +1 -1
- package/lib/methods.js +1 -1
- package/lib/utilities/ajax.js +5 -5
- package/lib/utilities/array.js +10 -5
- package/lib/utilities/asynchronous.js +19 -19
- package/lib/utilities/configuration.js +7 -7
- package/lib/utilities/fileSystem.js +1 -1
- package/lib/utilities/http.js +3 -3
- package/lib/utilities/logging.js +4 -5
- package/lib/utilities/path.js +1 -1
- package/lib/utilities/request.js +5 -5
- package/lib/utilities/shell.js +7 -7
- package/lib/utilities/template.js +1 -1
- package/package.json +1 -1
- package/src/utilities/array.js +3 -0
- package/src/utilities/asynchronous.js +18 -18
package/README.md
CHANGED
|
@@ -60,13 +60,13 @@ The miscellaneous functions are a special case. They can be treated as above but
|
|
|
60
60
|
|
|
61
61
|
The first two `get()` and `post()` functions make use of the third `request()` function, which is more generic and can be used for arbitrary HTTP requests.
|
|
62
62
|
|
|
63
|
-
* The `get()` function sends a `GET` request, taking `host`, `uri`, `query` and `
|
|
63
|
+
* The `get()` function sends a `GET` request, taking `host`, `uri`, `query` and `operation` arguments, together with an optional `headers` argument after the `query` argument.
|
|
64
64
|
|
|
65
65
|
The `query` argument should be a plain old JavaScript object, the names and values of which are encoded and concatenated to form the query string.
|
|
66
66
|
|
|
67
67
|
The `headers` argument should also be a plain old JavaScript object. If it does not have an `accept` property then one wil be provided with the value `application/json`.
|
|
68
68
|
|
|
69
|
-
The `
|
|
69
|
+
The `operation` argument is expected to be a function taking `contnet` and `statusCode` arguments. If the `accept` property of the main `headers` argument is set to `application/json` then the operation's `content` argument can be assumed to be JSON, or `null` if the request body cannot be parsed as such. The `statusCode` argument will be the response status code, for example `200` for a successful `OK` response.
|
|
70
70
|
|
|
71
71
|
```
|
|
72
72
|
const host = "...",
|
|
@@ -147,7 +147,7 @@ const offEXT = onEXT(process.exit);
|
|
|
147
147
|
offEXT();
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
* The `prompt()` function is meant for use in shell applications. It takes a plain old JavaScript `options` object and a `callback` function as
|
|
150
|
+
* The `prompt()` function is meant for use in shell applications. It takes a plain old JavaScript `options` object and a `callback` function as its first and second arguments, respectively:
|
|
151
151
|
|
|
152
152
|
```
|
|
153
153
|
const hidden = true,
|
|
@@ -244,7 +244,7 @@ const host = ...,
|
|
|
244
244
|
request = createRequest(host, uri, query, method, headers, (error, response) => {
|
|
245
245
|
...
|
|
246
246
|
|
|
247
|
-
const writeStream = createWriteStream(
|
|
247
|
+
const writeStream = createWriteStream(...);
|
|
248
248
|
|
|
249
249
|
response.pipe(writeStream);
|
|
250
250
|
});
|
|
@@ -252,34 +252,29 @@ const host = ...,
|
|
|
252
252
|
request.end();
|
|
253
253
|
```
|
|
254
254
|
|
|
255
|
-
In the following example the `queryStringFromQuery()` function from the HTTP utilities is used to encode the body of the request. Note that the `content-type` header is set explicitly.
|
|
255
|
+
In the following example the `queryStringFromQuery()` function from the HTTP utilities is used to encode the body of the request. Note that the `content-type` header is set explicitly. Note that the request body is piped directly from a file:
|
|
256
256
|
|
|
257
257
|
```
|
|
258
|
-
const {
|
|
258
|
+
const { createReadStream } = require("fs");
|
|
259
259
|
|
|
260
260
|
const host = ...,
|
|
261
261
|
uri = ...,
|
|
262
262
|
query = {},
|
|
263
263
|
method = "POST",
|
|
264
264
|
headers = {
|
|
265
|
-
"content-type": "
|
|
265
|
+
"content-type": "image/png"
|
|
266
266
|
},
|
|
267
267
|
request = createRequest(host, uri, query, method, headers, (error, response) => {
|
|
268
268
|
...
|
|
269
269
|
}),
|
|
270
|
-
|
|
271
|
-
"name": "John Doe"
|
|
272
|
-
}),
|
|
273
|
-
readable = Readable.from(content);
|
|
270
|
+
readStream = createReadStream(...);
|
|
274
271
|
|
|
275
|
-
|
|
272
|
+
readStream.pipe(request);
|
|
276
273
|
```
|
|
277
274
|
|
|
278
275
|
Finally, in the following example a `contentFromResponse()` function has been written in order to parse the response to a string in preference to piping it to a file, say:
|
|
279
276
|
|
|
280
277
|
```
|
|
281
|
-
const { Readable } = require("stream");
|
|
282
|
-
|
|
283
278
|
const host = ...,
|
|
284
279
|
uri = ...,
|
|
285
280
|
query = {
|
|
@@ -295,6 +290,8 @@ const host = ...,
|
|
|
295
290
|
});
|
|
296
291
|
});
|
|
297
292
|
|
|
293
|
+
request.end();
|
|
294
|
+
|
|
298
295
|
function contentFromResponse(response, callback) {
|
|
299
296
|
let content = "";
|
|
300
297
|
|
|
@@ -625,6 +622,7 @@ pathWithoutTopmostDirectoryNameFromPath("root/etc/init.conf"); // returns 'etc/i
|
|
|
625
622
|
- `fourthLast()`
|
|
626
623
|
- `thirdLast()`
|
|
627
624
|
- `secondLast()`
|
|
625
|
+
- `firstLast()`
|
|
628
626
|
- `last()`
|
|
629
627
|
- `head()`
|
|
630
628
|
- `tail()`
|
|
@@ -837,14 +835,14 @@ Ideally the `host` argument should not include a trailing forward slash whereas
|
|
|
837
835
|
- `eventually()`
|
|
838
836
|
- `repeatedly()`
|
|
839
837
|
|
|
840
|
-
These functions generally take either a
|
|
838
|
+
These functions generally take either a operatio or an array of operations, functions that mutate a context essentially, rather than returning a value, followed by a `done()` function and an optional `context` argument. They all pass a `next()` function to the operations followed by the `done()` function, the `context` and then an `index` argument. Operations are given access to the `done()` function which can be called instead of the `next()` function in order to terminate early.
|
|
841
839
|
|
|
842
|
-
* The `whilst()` function takes a single
|
|
840
|
+
* The `whilst()` function takes a single operation, which it calls each time the operation invokes the given `next()` function or until the operation invokes the given `done()` function. The operation can also force termination by returning a truthy value, in which case it must *not* call the given `next()` or `done()` functions. In the example below the operation will be executed ten times:
|
|
843
841
|
|
|
844
842
|
```
|
|
845
843
|
const context = {}; ///
|
|
846
844
|
|
|
847
|
-
const
|
|
845
|
+
const operation = (next, done, context, index) => {
|
|
848
846
|
const terminate = (index === 9);
|
|
849
847
|
|
|
850
848
|
if (terminate) {
|
|
@@ -856,17 +854,17 @@ const callback = (next, done, context, index) => {
|
|
|
856
854
|
}
|
|
857
855
|
}
|
|
858
856
|
|
|
859
|
-
whilst(
|
|
857
|
+
whilst(operation, () => {
|
|
860
858
|
/// done
|
|
861
859
|
}, context);
|
|
862
860
|
```
|
|
863
861
|
|
|
864
|
-
* The `forEach()` function takes an array as the first argument followed by a single
|
|
862
|
+
* The `forEach()` function takes an array as the first argument followed by a single operation, which it calls for each element of the array unless the operation invokes the given `done()` function. If the `done()` function is never invoked by the operation, it is called once each of the array elements has been passed to the operation, provided the operationinvokes the given `next ()` function each time. In the example below the operation will be executed four times:
|
|
865
863
|
|
|
866
864
|
```
|
|
867
865
|
const context = {};
|
|
868
866
|
|
|
869
|
-
const
|
|
867
|
+
const operation = (element, next, done, context, index) => {
|
|
870
868
|
const terminate = (element === 3);
|
|
871
869
|
|
|
872
870
|
if (terminate) {
|
|
@@ -880,56 +878,56 @@ const callback = (element, next, done, context, index) => {
|
|
|
880
878
|
|
|
881
879
|
const array = [0, 1, 2, 3, 4, 5];
|
|
882
880
|
|
|
883
|
-
forEach(array,
|
|
881
|
+
forEach(array, operation, () => {
|
|
884
882
|
/// done
|
|
885
883
|
}, context);
|
|
886
884
|
```
|
|
887
885
|
|
|
888
|
-
* The `sequence()` function takes an array of
|
|
886
|
+
* The `sequence()` function takes an array of operations, which it calls in turn unless the operation invokes the given `done()` function. If the `done()` function is never invoked by a operation, it is called once each of the operations have been called, provided each operation invokes the given `next ()` function. In the example below each of the operations bar the last is executed:
|
|
889
887
|
|
|
890
888
|
```
|
|
891
889
|
const context = {};
|
|
892
890
|
|
|
893
|
-
const
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
891
|
+
const firstOperation = (next, done, context, index) => { next(); },
|
|
892
|
+
secondOperation = (next, done, context, index) => { next(); },
|
|
893
|
+
thirdOperation = (next, done, context, index) => { done(); },
|
|
894
|
+
lastOperation = (next, done, context, index) => { next(); },
|
|
895
|
+
operation = [
|
|
896
|
+
firstOperation,
|
|
897
|
+
secondOperation,
|
|
898
|
+
thirdOperation,
|
|
899
|
+
lastOperation
|
|
902
900
|
];
|
|
903
901
|
|
|
904
|
-
sequence(
|
|
902
|
+
sequence(operations, () => {
|
|
905
903
|
/// done
|
|
906
904
|
}, context);
|
|
907
905
|
```
|
|
908
906
|
|
|
909
|
-
* The `eventually()` function takes an array of
|
|
907
|
+
* The `eventually()` function takes an array of operations, each of which it calls immediately without waiting for the operations to invoke the given `next()` functions. When each of the operations has invoked the given `next()` function, it will call the `done()` function. Note that in this case invoking the `done()` function from within a operation will not halt the execution of other operations, it is passed as an argument only for the sake of convention. In the example below each of the operations is executed:
|
|
910
908
|
|
|
911
909
|
```
|
|
912
910
|
const context = {};
|
|
913
911
|
|
|
914
|
-
const
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
912
|
+
const firstOperation = (next, done, context, index) => { next(); },
|
|
913
|
+
secondOperation = (next, done, context, index) => { next(); },
|
|
914
|
+
thirdOperation = (next, done, context, index) => { done(); },
|
|
915
|
+
operations = [
|
|
916
|
+
firstOperation,
|
|
917
|
+
secondOperation,
|
|
918
|
+
thirdOperation
|
|
921
919
|
];
|
|
922
920
|
|
|
923
|
-
eventually(
|
|
921
|
+
eventually(operations, () => {
|
|
924
922
|
/// done
|
|
925
923
|
}, context);
|
|
926
924
|
```
|
|
927
|
-
* The `repeatedly()` function takes a single
|
|
925
|
+
* The `repeatedly()` function takes a single operation and a `length` parameter, immediately calling the operation a `length` number of times without waiting for it to invoke the given `next()` function each time. When the operation has invoked the given `next()` function a `length` number of times, it will call the `done()` function. Note that in this case invoking the `done()` function from within the operation will not halt its execution the requisite number of times, it is passed as an argument only for the sake of convention. In the example below the operation is executed ten times:
|
|
928
926
|
|
|
929
927
|
```
|
|
930
928
|
const context = {};
|
|
931
929
|
|
|
932
|
-
const
|
|
930
|
+
const operation = (next, done, context, index) => {
|
|
933
931
|
...
|
|
934
932
|
|
|
935
933
|
next();
|
|
@@ -937,7 +935,7 @@ const callback = (next, done, context, index) => {
|
|
|
937
935
|
|
|
938
936
|
const length = 10;
|
|
939
937
|
|
|
940
|
-
repeatedly(
|
|
938
|
+
repeatedly(operation, length, () => {
|
|
941
939
|
// done
|
|
942
940
|
}, context);
|
|
943
941
|
```
|
package/lib/browser.js
CHANGED
|
@@ -43,4 +43,4 @@ function _interopRequireDefault(obj) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9icm93c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhdGhVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcGF0aFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBodHRwVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2h0dHBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGFqYXhVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYWpheFwiO1xuIl0sIm5hbWVzIjpbInBhdGhVdGlsaXRpZXMiLCJkZWZhdWx0IiwiaHR0cFV0aWxpdGllcyIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwiYWpheFV0aWxpdGllcyJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OzsrQkFFUUEsQ0FBYTs7O3FCQUF4QkMsT0FBTzs7OytCQUNJQyxDQUFhOzs7cUJBQXhCRCxPQUFPOzs7K0JBQ0lFLENBQWM7OztzQkFBekJGLE9BQU87OzsrQkFDSUcsQ0FBcUI7Ozs2QkFBaENILE9BQU87OzsrQkFFSUksQ0FBYTs7O3FCQUF4QkosT0FBTyJ9
|
package/lib/characters.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.CARRIAGE_RETURN_CHARACTER = exports.BACKSPACE_CHARACTER = exports.LINE_FEED_CHARACTER = exports.
|
|
5
|
+
exports.CARRIAGE_RETURN_CHARACTER = exports.BACKSPACE_CHARACTER = exports.LINE_FEED_CHARACTER = exports.AMPERSAND_CHARACTER = exports.COLON_CHARACTER = exports.ETX_CHARACTER = void 0;
|
|
6
6
|
var ETX_CHARACTER = "\x03";
|
|
7
7
|
exports.ETX_CHARACTER = ETX_CHARACTER;
|
|
8
8
|
var COLON_CHARACTER = ":";
|
|
@@ -16,4 +16,4 @@ exports.BACKSPACE_CHARACTER = BACKSPACE_CHARACTER;
|
|
|
16
16
|
var CARRIAGE_RETURN_CHARACTER = "\r";
|
|
17
17
|
exports.CARRIAGE_RETURN_CHARACTER = CARRIAGE_RETURN_CHARACTER;
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGFyYWN0ZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgRVRYX0NIQVJBQ1RFUiA9IFwiXFx1MDAwM1wiO1xuZXhwb3J0IGNvbnN0IENPTE9OX0NIQVJBQ1RFUiA9IFwiOlwiO1xuZXhwb3J0IGNvbnN0IEFNUEVSU0FORF9DSEFSQUNURVIgPSBcIiZcIjtcbmV4cG9ydCBjb25zdCBMSU5FX0ZFRURfQ0hBUkFDVEVSID0gXCJcXG5cIjtcbmV4cG9ydCBjb25zdCBCQUNLU1BBQ0VfQ0hBUkFDVEVSID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxMjcpO1xuZXhwb3J0IGNvbnN0IENBUlJJQUdFX1JFVFVSTl9DSEFSQUNURVIgPSBcIlxcclwiO1xuIl0sIm5hbWVzIjpbIkVUWF9DSEFSQUNURVIiLCJDT0xPTl9DSEFSQUNURVIiLCJBTVBFUlNBTkRfQ0hBUkFDVEVSIiwiTElORV9GRUVEX0NIQVJBQ1RFUiIsIkJBQ0tTUEFDRV9DSEFSQUNURVIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJDQVJSSUFHRV9SRVRVUk5fQ0hBUkFDVEVSIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVMLEdBQUssQ0FBQ0EsYUFBYSxHQUFHLENBQVE7UUFBeEJBLGFBQWEsR0FBYkEsYUFBYTtBQUNuQixHQUFLLENBQUNDLGVBQWUsR0FBRyxDQUFHO1FBQXJCQSxlQUFlLEdBQWZBLGVBQWU7QUFDckIsR0FBSyxDQUFDQyxtQkFBbUIsR0FBRyxDQUFHO1FBQXpCQSxtQkFBbUIsR0FBbkJBLG1CQUFtQjtBQUN6QixHQUFLLENBQUNDLG1CQUFtQixHQUFHLENBQUk7UUFBMUJBLG1CQUFtQixHQUFuQkEsbUJBQW1CO0FBQ3pCLEdBQUssQ0FBQ0MsbUJBQW1CLEdBQUdDLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLEdBQUc7UUFBN0NGLG1CQUFtQixHQUFuQkEsbUJBQW1CO0FBQ3pCLEdBQUssQ0FBQ0cseUJBQXlCLEdBQUcsQ0FBSTtRQUFoQ0EseUJBQXlCLEdBQXpCQSx5QkFBeUIifQ==
|
package/lib/constants.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.
|
|
5
|
+
exports.CONTENT_TYPE = exports.EMPTY_STRING = exports.ACCEPT = exports.CTRL_C = exports.ERROR = exports.UTF8 = void 0;
|
|
6
6
|
var UTF8 = "utf8";
|
|
7
7
|
exports.UTF8 = UTF8;
|
|
8
8
|
var ERROR = "error";
|
|
@@ -16,4 +16,4 @@ exports.EMPTY_STRING = EMPTY_STRING;
|
|
|
16
16
|
var CONTENT_TYPE = "content-type";
|
|
17
17
|
exports.CONTENT_TYPE = CONTENT_TYPE;
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBVVEY4ID0gXCJ1dGY4XCI7XG5leHBvcnQgY29uc3QgRVJST1IgPSBcImVycm9yXCI7XG5leHBvcnQgY29uc3QgQ1RSTF9DID0gXCJeQ1wiO1xuZXhwb3J0IGNvbnN0IEFDQ0VQVCA9IFwiYWNjZXB0XCI7XG5leHBvcnQgY29uc3QgRU1QVFlfU1RSSU5HID0gXCJcIjtcbmV4cG9ydCBjb25zdCBDT05URU5UX1RZUEUgPSBcImNvbnRlbnQtdHlwZVwiO1xuIl0sIm5hbWVzIjpbIlVURjgiLCJFUlJPUiIsIkNUUkxfQyIsIkFDQ0VQVCIsIkVNUFRZX1NUUklORyIsIkNPTlRFTlRfVFlQRSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFTCxHQUFLLENBQUNBLElBQUksR0FBRyxDQUFNO1FBQWJBLElBQUksR0FBSkEsSUFBSTtBQUNWLEdBQUssQ0FBQ0MsS0FBSyxHQUFHLENBQU87UUFBZkEsS0FBSyxHQUFMQSxLQUFLO0FBQ1gsR0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBSTtRQUFiQSxNQUFNLEdBQU5BLE1BQU07QUFDWixHQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFRO1FBQWpCQSxNQUFNLEdBQU5BLE1BQU07QUFDWixHQUFLLENBQUNDLFlBQVksR0FBRyxDQUFFO1FBQWpCQSxZQUFZLEdBQVpBLFlBQVk7QUFDbEIsR0FBSyxDQUFDQyxZQUFZLEdBQUcsQ0FBYztRQUE3QkEsWUFBWSxHQUFaQSxZQUFZIn0=
|
package/lib/contentTypes.js
CHANGED
|
@@ -6,4 +6,4 @@ exports.APPLICATION_JSON_CONTENT_TYPE = void 0;
|
|
|
6
6
|
var APPLICATION_JSON_CONTENT_TYPE = "application/json";
|
|
7
7
|
exports.APPLICATION_JSON_CONTENT_TYPE = APPLICATION_JSON_CONTENT_TYPE;
|
|
8
8
|
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZW50VHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTl9KU09OX0NPTlRFTlRfVFlQRSA9IFwiYXBwbGljYXRpb24vanNvblwiO1xuIl0sIm5hbWVzIjpbIkFQUExJQ0FUSU9OX0pTT05fQ09OVEVOVF9UWVBFIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVMLEdBQUssQ0FBQ0EsNkJBQTZCLEdBQUcsQ0FBa0I7UUFBbERBLDZCQUE2QixHQUE3QkEsNkJBQTZCIn0=
|
package/lib/defaults.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.DEFAULT_LOG_FILE_BASE_NAME = exports.DEFAULT_LOG_DIRECTORY_PATH = exports.DEFAULT_RC_BASE_EXTENSION = exports.
|
|
5
|
+
exports.DEFAULT_LOG_FILE_BASE_NAME = exports.DEFAULT_LOG_DIRECTORY_PATH = exports.DEFAULT_RC_BASE_EXTENSION = exports.DEFAULT_INITIAL_ANSWER = exports.DEFAULT_LOG_LEVEL = exports.DEFAULT_ENCODING = exports.DEFAULT_ATTEMPTS = void 0;
|
|
6
6
|
var _levels = require("./levels");
|
|
7
7
|
var _constants = require("./constants");
|
|
8
8
|
var DEFAULT_ATTEMPTS = 3;
|
|
@@ -20,4 +20,4 @@ exports.DEFAULT_LOG_DIRECTORY_PATH = DEFAULT_LOG_DIRECTORY_PATH;
|
|
|
20
20
|
var DEFAULT_LOG_FILE_BASE_NAME = "default";
|
|
21
21
|
exports.DEFAULT_LOG_FILE_BASE_NAME = DEFAULT_LOG_FILE_BASE_NAME;
|
|
22
22
|
|
|
23
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgV0FSTklOR19MRVZFTCB9IGZyb20gXCIuL2xldmVsc1wiO1xuaW1wb3J0IHsgVVRGOCwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FUVEVNUFRTID0gMztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VOQ09ESU5HID0gVVRGODtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPR19MRVZFTCA9IFdBUk5JTkdfTEVWRUw7IC8vL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5JVElBTF9BTlNXRVIgPSBFTVBUWV9TVFJJTkc7IC8vL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT04gPSBFTVBUWV9TVFJJTkc7ICAvLy9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPR19ESVJFQ1RPUllfUEFUSCA9IG51bGw7XG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0dfRklMRV9CQVNFX05BTUUgPSBcImRlZmF1bHRcIjtcbiJdLCJuYW1lcyI6WyJERUZBVUxUX0FUVEVNUFRTIiwiREVGQVVMVF9FTkNPRElORyIsIkRFRkFVTFRfTE9HX0xFVkVMIiwiREVGQVVMVF9JTklUSUFMX0FOU1dFUiIsIkRFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT04iLCJERUZBVUxUX0xPR19ESVJFQ1RPUllfUEFUSCIsIkRFRkFVTFRfTE9HX0ZJTEVfQkFTRV9OQU1FIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVrQixHQUFVLENBQVYsT0FBVTtBQUNMLEdBQWEsQ0FBYixVQUFhO0FBRXpDLEdBQUssQ0FBQ0EsZ0JBQWdCLEdBQUcsQ0FBQztRQUFwQkEsZ0JBQWdCLEdBQWhCQSxnQkFBZ0I7QUFDdEIsR0FBSyxDQUFDQyxnQkFBZ0IsR0FITSxVQUFhO1FBR25DQSxnQkFBZ0IsR0FBaEJBLGdCQUFnQjtBQUN0QixHQUFLLENBQUNDLGlCQUFpQixHQUxBLE9BQVUsZUFLUSxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7UUFBdENBLGlCQUFpQixHQUFqQkEsaUJBQWlCO0FBQ3ZCLEdBQUssQ0FBQ0Msc0JBQXNCLEdBTEEsVUFBYSxjQUtJLENBQUcsQUFBSCxFQUFHLEFBQUgsQ0FBRztRQUExQ0Esc0JBQXNCLEdBQXRCQSxzQkFBc0I7QUFDNUIsR0FBSyxDQUFDQyx5QkFBeUIsR0FOSCxVQUFhLGNBTVEsQ0FBRyxBQUFILEVBQUcsQUFBSCxDQUFHO1FBQTlDQSx5QkFBeUIsR0FBekJBLHlCQUF5QjtBQUMvQixHQUFLLENBQUNDLDBCQUEwQixHQUFHLElBQUk7UUFBakNBLDBCQUEwQixHQUExQkEsMEJBQTBCO0FBQ2hDLEdBQUssQ0FBQ0MsMEJBQTBCLEdBQUcsQ0FBUztRQUF0Q0EsMEJBQTBCLEdBQTFCQSwwQkFBMEIifQ==
|
package/lib/eventTypes.js
CHANGED
|
@@ -6,4 +6,4 @@ exports.DATA_EVENT_TYPE = void 0;
|
|
|
6
6
|
var DATA_EVENT_TYPE = "data";
|
|
7
7
|
exports.DATA_EVENT_TYPE = DATA_EVENT_TYPE;
|
|
8
8
|
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ldmVudFR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgREFUQV9FVkVOVF9UWVBFID0gXCJkYXRhXCI7XG4iXSwibmFtZXMiOlsiREFUQV9FVkVOVF9UWVBFIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVMLEdBQUssQ0FBQ0EsZUFBZSxHQUFHLENBQU07UUFBeEJBLGVBQWUsR0FBZkEsZUFBZSJ9
|
package/lib/levels.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports.
|
|
5
|
+
exports.FATAL_LEVEL = exports.ERROR_LEVEL = exports.WARNING_LEVEL = exports.INFO_LEVEL = exports.DEBUG_LEVEL = exports.TRACE_LEVEL = void 0;
|
|
6
6
|
var TRACE_LEVEL = "TRACE";
|
|
7
7
|
exports.TRACE_LEVEL = TRACE_LEVEL;
|
|
8
8
|
var DEBUG_LEVEL = "DEBUG";
|
|
@@ -16,4 +16,4 @@ exports.ERROR_LEVEL = ERROR_LEVEL;
|
|
|
16
16
|
var FATAL_LEVEL = "FATAL";
|
|
17
17
|
exports.FATAL_LEVEL = FATAL_LEVEL;
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sZXZlbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBUUkFDRV9MRVZFTCA9IFwiVFJBQ0VcIjtcbmV4cG9ydCBjb25zdCBERUJVR19MRVZFTCA9IFwiREVCVUdcIjtcbmV4cG9ydCBjb25zdCBJTkZPX0xFVkVMID0gXCJJTkZPXCI7XG5leHBvcnQgY29uc3QgV0FSTklOR19MRVZFTCA9IFwiV0FSTklOR1wiO1xuZXhwb3J0IGNvbnN0IEVSUk9SX0xFVkVMID0gXCJFUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEZBVEFMX0xFVkVMID0gXCJGQVRBTFwiO1xuIl0sIm5hbWVzIjpbIlRSQUNFX0xFVkVMIiwiREVCVUdfTEVWRUwiLCJJTkZPX0xFVkVMIiwiV0FSTklOR19MRVZFTCIsIkVSUk9SX0xFVkVMIiwiRkFUQUxfTEVWRUwiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRUwsR0FBSyxDQUFDQSxXQUFXLEdBQUcsQ0FBTztRQUFyQkEsV0FBVyxHQUFYQSxXQUFXO0FBQ2pCLEdBQUssQ0FBQ0MsV0FBVyxHQUFHLENBQU87UUFBckJBLFdBQVcsR0FBWEEsV0FBVztBQUNqQixHQUFLLENBQUNDLFVBQVUsR0FBRyxDQUFNO1FBQW5CQSxVQUFVLEdBQVZBLFVBQVU7QUFDaEIsR0FBSyxDQUFDQyxhQUFhLEdBQUcsQ0FBUztRQUF6QkEsYUFBYSxHQUFiQSxhQUFhO0FBQ25CLEdBQUssQ0FBQ0MsV0FBVyxHQUFHLENBQU87UUFBckJBLFdBQVcsR0FBWEEsV0FBVztBQUNqQixHQUFLLENBQUNDLFdBQVcsR0FBRyxDQUFPO1FBQXJCQSxXQUFXLEdBQVhBLFdBQVcifQ==
|
package/lib/main.js
CHANGED
|
@@ -78,4 +78,4 @@ function _interopRequireDefault(obj) {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhdGhVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcGF0aFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBodHRwVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2h0dHBcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvYXJyYXlcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXN5bmNocm9ub3VzVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIHNoZWxsVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3NoZWxsXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcXVlc3RVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcmVxdWVzdFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb2dnaW5nVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2xvZ2dpbmdcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGVtcGxhdGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdGVtcGxhdGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9maWxlU3lzdGVtXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbmZpZ3VyYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvY29uZmlndXJhdGlvblwiO1xuIl0sIm5hbWVzIjpbInBhdGhVdGlsaXRpZXMiLCJkZWZhdWx0IiwiaHR0cFV0aWxpdGllcyIsImFycmF5VXRpbGl0aWVzIiwiYXN5bmNocm9ub3VzVXRpbGl0aWVzIiwic2hlbGxVdGlsaXRpZXMiLCJyZXF1ZXN0VXRpbGl0aWVzIiwibG9nZ2luZ1V0aWxpdGllcyIsInRlbXBsYXRlVXRpbGl0aWVzIiwiZmlsZVN5c3RlbVV0aWxpdGllcyIsImNvbmZpZ3VyYXRpb25VdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7K0JBRVFBLENBQWE7OztxQkFBeEJDLE9BQU87OzsrQkFDSUMsQ0FBYTs7O3FCQUF4QkQsT0FBTzs7OytCQUNJRSxDQUFjOzs7c0JBQXpCRixPQUFPOzs7K0JBQ0lHLENBQXFCOzs7NkJBQWhDSCxPQUFPOzs7K0JBRUlJLENBQWM7OztzQkFBekJKLE9BQU87OzsrQkFDSUssQ0FBZ0I7Ozt3QkFBM0JMLE9BQU87OzsrQkFDSU0sQ0FBZ0I7Ozt3QkFBM0JOLE9BQU87OzsrQkFDSU8sQ0FBaUI7Ozt5QkFBNUJQLE9BQU87OzsrQkFDSVEsQ0FBbUI7OzsyQkFBOUJSLE9BQU87OzsrQkFDSVMsQ0FBc0I7Ozs4QkFBakNULE9BQU8ifQ==
|
package/lib/methods.js
CHANGED
|
@@ -8,4 +8,4 @@ exports.GET_METHOD = GET_METHOD;
|
|
|
8
8
|
var POST_METHOD = "POST";
|
|
9
9
|
exports.POST_METHOD = POST_METHOD;
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRob2RzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgY29uc3QgR0VUX01FVEhPRCA9IFwiR0VUXCI7XG5leHBvcnQgY29uc3QgUE9TVF9NRVRIT0QgPSBcIlBPU1RcIjtcbiJdLCJuYW1lcyI6WyJHRVRfTUVUSE9EIiwiUE9TVF9NRVRIT0QiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRUwsR0FBSyxDQUFDQSxVQUFVLEdBQUcsQ0FBSztRQUFsQkEsVUFBVSxHQUFWQSxVQUFVO0FBQ2hCLEdBQUssQ0FBQ0MsV0FBVyxHQUFHLENBQU07UUFBcEJBLFdBQVcsR0FBWEEsV0FBVyJ9
|
package/lib/utilities/ajax.js
CHANGED
|
@@ -32,11 +32,11 @@ function post(host, uri, query, headers, content, callback) {
|
|
|
32
32
|
underwriteContentType(headers, contentType);
|
|
33
33
|
request(host, uri, query, method, headers, content, callback);
|
|
34
34
|
}
|
|
35
|
-
function request(host, uri, query, method, headers,
|
|
35
|
+
function request(host, uri, query, method, headers, content1, callback) {
|
|
36
36
|
var url = (0, _http).urlFromHostURIAndQuery(host, uri, query), accept = headers[_constants.ACCEPT] || null, contentType = headers[_constants.CONTENT_TYPE] || null, xmlHttpRequest = new XMLHttpRequest();
|
|
37
37
|
if (contentType === _contentTypes.APPLICATION_JSON_CONTENT_TYPE) {
|
|
38
|
-
var json =
|
|
39
|
-
|
|
38
|
+
var json = content1, jsonString = JSON.stringify(json);
|
|
39
|
+
content1 = jsonString; ///
|
|
40
40
|
}
|
|
41
41
|
xmlHttpRequest.onreadystatechange = function() {
|
|
42
42
|
var readyState = xmlHttpRequest.readyState, status = xmlHttpRequest.status, responseText = xmlHttpRequest.responseText, statusCode = status;
|
|
@@ -60,7 +60,7 @@ function request(host, uri, query, method, headers, content, callback) {
|
|
|
60
60
|
if (contentType !== null) {
|
|
61
61
|
xmlHttpRequest.setRequestHeader(_constants.CONTENT_TYPE, contentType);
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
content1 !== null ? xmlHttpRequest.send(content1) : xmlHttpRequest.send();
|
|
64
64
|
}
|
|
65
65
|
var _default = {
|
|
66
66
|
get: get,
|
|
@@ -77,4 +77,4 @@ function underwriteContentType(headers, contentTYpe) {
|
|
|
77
77
|
(0, _http).underwrite(headers, name, value);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYWpheC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQUNDRVBULCBDT05URU5UX1RZUEUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBHRVRfTUVUSE9ELCBQT1NUX01FVEhPRCB9IGZyb20gXCIuLi9tZXRob2RzXCI7XG5pbXBvcnQgeyBBUFBMSUNBVElPTl9KU09OX0NPTlRFTlRfVFlQRSB9IGZyb20gXCIuLi9jb250ZW50VHlwZXNcIjtcbmltcG9ydCB7IHVuZGVyd3JpdGUsIHVybEZyb21Ib3N0VVJJQW5kUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2h0dHBcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldChob3N0LCB1cmksIHF1ZXJ5LCBoZWFkZXJzLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIGNhbGxiYWNrID0gaGVhZGVyczsgLy8vXG4gICAgaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgY29uc3QgbWV0aG9kID0gR0VUX01FVEhPRCxcbiAgICAgICAgYWNjZXB0ID0gQVBQTElDQVRJT05fSlNPTl9DT05URU5UX1RZUEUsXG4gICAgICAgIGNvbnRlbnQgPSBudWxsO1xuXG4gIHVuZGVyd3JpdGVBY2NlcHQoaGVhZGVycywgYWNjZXB0KTtcblxuICByZXF1ZXN0KGhvc3QsIHVyaSwgcXVlcnksIG1ldGhvZCwgaGVhZGVycywgY29udGVudCwgY2FsbGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9zdChob3N0LCB1cmksIHF1ZXJ5LCBoZWFkZXJzLCBjb250ZW50LCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIGNhbGxiYWNrID0gY29udGVudDtcbiAgICBjb250ZW50ID0gaGVhZGVycztcbiAgICBoZWFkZXJzID0ge307XG4gIH1cblxuICBjb25zdCBtZXRob2QgPSBQT1NUX01FVEhPRCxcbiAgICAgICAgYWNjZXB0ID0gQVBQTElDQVRJT05fSlNPTl9DT05URU5UX1RZUEUsXG4gICAgICAgIGNvbnRlbnRUeXBlID0gQVBQTElDQVRJT05fSlNPTl9DT05URU5UX1RZUEU7XG5cbiAgdW5kZXJ3cml0ZUFjY2VwdChoZWFkZXJzLCBhY2NlcHQpO1xuXG4gIHVuZGVyd3JpdGVDb250ZW50VHlwZShoZWFkZXJzLCBjb250ZW50VHlwZSk7XG5cbiAgcmVxdWVzdChob3N0LCB1cmksIHF1ZXJ5LCBtZXRob2QsIGhlYWRlcnMsIGNvbnRlbnQsIGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QoaG9zdCwgdXJpLCBxdWVyeSwgbWV0aG9kLCBoZWFkZXJzLCBjb250ZW50LCBjYWxsYmFjaykge1xuICBjb25zdCB1cmwgPSB1cmxGcm9tSG9zdFVSSUFuZFF1ZXJ5KGhvc3QsIHVyaSwgcXVlcnkpLFxuICAgICAgICBhY2NlcHQgPSBoZWFkZXJzW0FDQ0VQVF0gfHwgbnVsbCxcbiAgICAgICAgY29udGVudFR5cGUgPSBoZWFkZXJzW0NPTlRFTlRfVFlQRV0gfHwgbnVsbCxcbiAgICAgICAgeG1sSHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICBpZiAoY29udGVudFR5cGUgPT09IEFQUExJQ0FUSU9OX0pTT05fQ09OVEVOVF9UWVBFKSB7XG4gICAgY29uc3QganNvbiA9IGNvbnRlbnQsICAvLy9cbiAgICAgICAgICBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoanNvbik7XG5cbiAgICBjb250ZW50ID0ganNvblN0cmluZzsgIC8vL1xuICB9XG5cbiAgeG1sSHR0cFJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgcmVhZHlTdGF0ZSwgc3RhdHVzLCByZXNwb25zZVRleHQgfSA9IHhtbEh0dHBSZXF1ZXN0LFxuICAgICAgICAgIHN0YXR1c0NvZGUgPSBzdGF0dXM7XG5cbiAgICBpZiAocmVhZHlTdGF0ZSA9PSA0KSB7XG4gICAgICBsZXQgY29udGVudCA9IHJlc3BvbnNlVGV4dDtcblxuICAgICAgaWYgKGFjY2VwdCA9PT0gQVBQTElDQVRJT05fSlNPTl9DT05URU5UX1RZUEUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gY29udGVudCwgIC8vL1xuICAgICAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuXG4gICAgICAgICAgY29udGVudCA9IGpzb247ICAvLy9cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb250ZW50ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKGNvbnRlbnQsIHN0YXR1c0NvZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB4bWxIdHRwUmVxdWVzdC5vcGVuKG1ldGhvZCwgdXJsKTtcblxuICBpZiAoYWNjZXB0ICE9PSBudWxsKSB7XG4gICAgeG1sSHR0cFJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihBQ0NFUFQsIGFjY2VwdCk7XG4gIH1cblxuICBpZiAoY29udGVudFR5cGUgIT09IG51bGwpIHtcbiAgICB4bWxIdHRwUmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKENPTlRFTlRfVFlQRSwgY29udGVudFR5cGUpO1xuICB9XG5cbiAgKGNvbnRlbnQgIT09IG51bGwpID9cbiAgICB4bWxIdHRwUmVxdWVzdC5zZW5kKGNvbnRlbnQpIDpcbiAgICAgIHhtbEh0dHBSZXF1ZXN0LnNlbmQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXQsXG4gIHBvc3QsXG4gIHJlcXVlc3Rcbn1cblxuZnVuY3Rpb24gdW5kZXJ3cml0ZUFjY2VwdChoZWFkZXJzLCBhY2NlcHQpIHtcbiAgY29uc3QgbmFtZSA9IEFDQ0VQVCwgIC8vL1xuICAgICAgICB2YWx1ZSA9IGFjY2VwdDsgLy8vXG5cbiAgdW5kZXJ3cml0ZShoZWFkZXJzLCBuYW1lLCB2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVuZGVyd3JpdGVDb250ZW50VHlwZShoZWFkZXJzLCBjb250ZW50VFlwZSkge1xuICBjb25zdCBuYW1lID0gQ09OVEVOVF9UWVBFLCAgLy8vXG4gICAgICAgIHZhbHVlID0gY29udGVudFRZcGU7IC8vL1xuXG4gIHVuZGVyd3JpdGUoaGVhZGVycywgbmFtZSwgdmFsdWUpO1xufVxuIl0sIm5hbWVzIjpbImdldCIsInBvc3QiLCJyZXF1ZXN0IiwiaG9zdCIsInVyaSIsInF1ZXJ5IiwiaGVhZGVycyIsImNhbGxiYWNrIiwidW5kZWZpbmVkIiwibWV0aG9kIiwiYWNjZXB0IiwiY29udGVudCIsInVuZGVyd3JpdGVBY2NlcHQiLCJjb250ZW50VHlwZSIsInVuZGVyd3JpdGVDb250ZW50VHlwZSIsInVybCIsInhtbEh0dHBSZXF1ZXN0IiwiWE1MSHR0cFJlcXVlc3QiLCJqc29uIiwianNvblN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwic3RhdHVzIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzQ29kZSIsInBhcnNlIiwiZXJyb3IiLCJvcGVuIiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJuYW1lIiwidmFsdWUiLCJjb250ZW50VFlwZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQU9JQSxHQUFHLEdBQUhBLEdBQUc7UUFlSEMsSUFBSSxHQUFKQSxJQUFJO1FBa0JKQyxPQUFPLEdBQVBBLE9BQU87O0FBdENjLEdBQWMsQ0FBZCxVQUFjO0FBQ1gsR0FBWSxDQUFaLFFBQVk7QUFDTixHQUFpQixDQUFqQixhQUFpQjtBQUNaLEdBQW1CLENBQW5CLEtBQW1CO1NBRXRERixHQUFHLENBQUNHLElBQUksRUFBRUMsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFLENBQUM7SUFDeEQsRUFBRSxFQUFFQSxRQUFRLEtBQUtDLFNBQVMsRUFBRSxDQUFDO1FBQzNCRCxRQUFRLEdBQUdE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
|
package/lib/utilities/array.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.fifthLast = fifthLast;
|
|
|
11
11
|
exports.fourthLast = fourthLast;
|
|
12
12
|
exports.thirdLast = thirdLast;
|
|
13
13
|
exports.secondLast = secondLast;
|
|
14
|
+
exports.firstLast = firstLast;
|
|
14
15
|
exports.last = last;
|
|
15
16
|
exports.head = head;
|
|
16
17
|
exports.tail = tail;
|
|
@@ -90,6 +91,9 @@ function thirdLast(array) {
|
|
|
90
91
|
function secondLast(array) {
|
|
91
92
|
return array[array.length - 2];
|
|
92
93
|
}
|
|
94
|
+
function firstLast(array) {
|
|
95
|
+
return array[array.length - 1];
|
|
96
|
+
}
|
|
93
97
|
function last(array) {
|
|
94
98
|
return array[array.length - 1];
|
|
95
99
|
}
|
|
@@ -136,7 +140,7 @@ function splice(array1, start, param, param1) {
|
|
|
136
140
|
].concat(_toConsumableArray(array2)), deletedItemsArray = Array.prototype.splice.apply(array1, args);
|
|
137
141
|
return deletedItemsArray;
|
|
138
142
|
}
|
|
139
|
-
function replace(array,
|
|
143
|
+
function replace(array, element1, test) {
|
|
140
144
|
var start;
|
|
141
145
|
var found = array.some(function(element, index) {
|
|
142
146
|
var passed = test(element, index);
|
|
@@ -147,7 +151,7 @@ function replace(array, element, test) {
|
|
|
147
151
|
});
|
|
148
152
|
if (found) {
|
|
149
153
|
var deleteCount = 1;
|
|
150
|
-
array.splice(start, deleteCount,
|
|
154
|
+
array.splice(start, deleteCount, element1);
|
|
151
155
|
}
|
|
152
156
|
return found;
|
|
153
157
|
}
|
|
@@ -184,7 +188,7 @@ function prune(array, test) {
|
|
|
184
188
|
});
|
|
185
189
|
return prunedElement;
|
|
186
190
|
}
|
|
187
|
-
function patch(array,
|
|
191
|
+
function patch(array, element2, test) {
|
|
188
192
|
var found = array.some(function(element, index) {
|
|
189
193
|
var passed = test(element, index);
|
|
190
194
|
if (passed) {
|
|
@@ -192,7 +196,7 @@ function patch(array, element, test) {
|
|
|
192
196
|
}
|
|
193
197
|
});
|
|
194
198
|
if (found) {
|
|
195
|
-
array.push(
|
|
199
|
+
array.push(element2);
|
|
196
200
|
}
|
|
197
201
|
return found;
|
|
198
202
|
}
|
|
@@ -288,6 +292,7 @@ var _default = {
|
|
|
288
292
|
fourthLast: fourthLast,
|
|
289
293
|
thirdLast: thirdLast,
|
|
290
294
|
secondLast: secondLast,
|
|
295
|
+
firstLast: firstLast,
|
|
291
296
|
last: last,
|
|
292
297
|
head: head,
|
|
293
298
|
tail: tail,
|
|
@@ -318,4 +323,4 @@ var _default = {
|
|
|
318
323
|
};
|
|
319
324
|
exports.default = _default;
|
|
320
325
|
|
|
321
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwibmFtZXMiOlsiZmlyc3QiLCJhcnJheSIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJsZW5ndGgiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImxhc3QiLCJoZWFkIiwic2xpY2UiLCJ0YWlsIiwiYmFjayIsImZyb250IiwicHVzaCIsImFycmF5MSIsImFycmF5MiIsIkFycmF5IiwicHJvdG90eXBlIiwiYXBwbHkiLCJ1bnNoaWZ0IiwiY29uY2F0IiwiZWxlbWVudE9yQXJyYXkyIiwiY2xlYXIiLCJzdGFydCIsInNwbGljZSIsImNvcHkiLCJkZWxldGVDb3VudCIsIm1lcmdlIiwiSW5maW5pdHkiLCJhcmdzIiwiZGVsZXRlZEl0ZW1zQXJyYXkiLCJyZXBsYWNlIiwiZWxlbWVudCIsInRlc3QiLCJmb3VuZCIsInNvbWUiLCJpbmRleCIsInBhc3NlZCIsImZpbHRlciIsImZpbHRlcmVkRWxlbWVudHMiLCJiYWNrd2FyZHNGb3JFYWNoIiwiZGVsZXRlZEVsZW1lbnRzIiwiZmlyc3REZWxldGVkRWxlbWVudCIsImZpbmQiLCJlbGVtZW50cyIsImZvcndhcmRzRm9yRWFjaCIsInBydW5lIiwicHJ1bmVkRWxlbWVudCIsInVuZGVmaW5lZCIsInBhdGNoIiwiYXVnbWVudCIsImZvckVhY2giLCJzZXBhcmF0ZSIsImZvcndhcmRzU29tZSIsImNhbGxiYWNrIiwiYXJyYXlMZW5ndGgiLCJyZXN1bHQiLCJiYWNrd2FyZHNTb21lIiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNSZWR1Y2UiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImJhY2t3YXJkc1JlZHVjZSJdLCJtYXBwaW5ncyI6IkNBQUEsVUFBWTs7OztRQUVJLEtBQUssR0FBTCxLQUFLO1FBRUwsTUFBTSxHQUFOLE1BQU07UUFFTixLQUFLLEdBQUwsS0FBSztRQUVMLE1BQU0sR0FBTixNQUFNO1FBRU4sS0FBSyxHQUFMLEtBQUs7UUFFTCxTQUFTLEdBQVQsU0FBUztRQUVULFVBQVUsR0FBVixVQUFVO1FBRVYsU0FBUyxHQUFULFNBQVM7UUFFVCxVQUFVLEdBQVYsVUFBVTtRQUVWLElBQUksR0FBSixJQUFJO1FBRUosSUFBSSxHQUFKLElBQUk7UUFFSixJQUFJLEdBQUosSUFBSTtRQUVKLElBQUksR0FBSixJQUFJO1FBRUosS0FBSyxHQUFMLEtBQUs7UUFFTCxJQUFJLEdBQUosSUFBSTtRQUVKLE9BQU8sR0FBUCxPQUFPO1FBRVAsTUFBTSxHQUFOLE1BQU07UUFRTixLQUFLLEdBQUwsS0FBSztRQU1MLElBQUksR0FBSixJQUFJO1FBT0osS0FBSyxHQUFMLEtBQUs7UUFFTCxNQUFNLEdBQU4sTUFBTTtRQU9OLE9BQU8sR0FBUCxPQUFPO1FBc0JQLE1BQU0sR0FBTixNQUFNO1FBbUJOLElBQUksR0FBSixJQUFJO1FBY0osS0FBSyxHQUFMLEtBQUs7UUFxQkwsS0FBSyxHQUFMLEtBQUs7UUFpQkwsT0FBTyxHQUFQLE9BQU87UUFVUCxRQUFRLEdBQVIsUUFBUTtRQVVSLFlBQVksR0FBWixZQUFZO1FBZVosYUFBYSxHQUFiLGFBQWE7UUFlYixhQUFhLEdBQWIsYUFBYTtRQWViLGNBQWMsR0FBZCxjQUFjO1FBZWQsY0FBYyxHQUFkLGNBQWM7UUFVZCxlQUFlLEdBQWYsZUFBZTtRQVVmLGVBQWUsR0FBZixlQUFlO1FBVWYsZ0JBQWdCLEdBQWhCLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F6UWhCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUFFLENBQUM7U0FFaEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUVsQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFBRyxDQUFDO1NBRWpDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUFHLENBQUM7U0FFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUVqQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFcEQsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRXJELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUVwRCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFckQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRS9DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUcsQ0FBQztTQUV6QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUV0QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRXJELEtBQUssQ0FBQyxLQUFLLEVB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QUs7SUFDTCxNQUFNLEVBQU4sTUFBTTtJQUNOLEtBQUssRUFBTCxLQUFLO0lBQ0wsU0FBUyxFQUFULFNBQVM7SUFDVCxVQUFVLEVBQVYsVUFBVTtJQUNWLFNBQVMsRUFBVCxTQUFTO0lBQ1QsVUFBVSxFQUFWLFVBQVU7SUFDVixJQUFJLEVBQUosSUFBSTtJQUNKLElBQUksRUFBSixJQUFJO0lBQ0osSUFBSSxFQUFKLElBQUk7SUFDSixJQUFJLEVBQUosSUFBSTtJQUNKLEtBQUssRUFBTCxLQUFLO0lBQ0wsSUFBSSxFQUFKLElBQUk7SUFDSixPQUFPLEVBQVAsT0FBTztJQUNQLE1BQU0sRUFBTixNQUFNO0lBQ04sS0FBSyxFQUFMLEtBQUs7SUFDTCxJQUFJLEVBQUosSUFBSTtJQUNKLEtBQUssRUFBTCxLQUFLO0lBQ0wsTUFBTSxFQUFOLE1BQU07SUFDTixPQUFPLEVBQVAsT0FBTztJQUNQLE1BQU0sRUFBTixNQUFNO0lBQ04sSUFBSSxFQUFKLElBQUk7SUFDSixLQUFLLEVBQUwsS0FBSztJQUNMLEtBQUssRUFBTCxLQUFLO0lBQ0wsT0FBTyxFQUFQLE9BQU87SUFDUCxRQUFRLEVBQVIsUUFBUTtJQUNSLFlBQVksRUFBWixZQUFZO0lBQ1osYUFBYSxFQUFiLGFBQWE7SUFDYixhQUFhLEVBQWIsYUFBYTtJQUNiLGNBQWMsRUFBZCxjQUFjO0lBQ2QsY0FBYyxFQUFkLGNBQWM7SUFDZCxlQUFlLEVBQWYsZUFBZTtJQUNmLGVBQWUsRUFBZixlQUFlO0lBQ2YsZ0JBQWdCLEVBQWhCLGdCQUFnQjtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBhcnJheS5sZW5ndGggLSAxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaChhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2hpZnQoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYXJyYXkxLCBlbGVtZW50T3JBcnJheTIpIHtcbiAgY29uc3QgYXJyYXkyID0gKGVsZW1lbnRPckFycmF5MiBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckFycmF5MiA6XG4gICAgICAgICAgICAgICAgICAgICBbZWxlbWVudE9yQXJyYXkyXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgdGVzdCkge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgdGVzdCkge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBmaWx0ZXJlZEVsZW1lbnRzLnVuc2hpZnQoZmlyc3REZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCB0ZXN0KSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgdGVzdCkge1xuICBsZXQgcHJ1bmVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIHRlc3QpIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuXG4gIGlmIChmb3VuZCkge1xuICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCB0ZXN0KSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgdGVzdCkge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9KTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGxhc3QsXG4gIGhlYWQsXG4gIHRhaWwsXG4gIGJhY2ssXG4gIGZyb250LFxuICBwdXNoLFxuICB1bnNoaWZ0LFxuICBjb25jYXQsXG4gIGNsZWFyLFxuICBjb3B5LFxuICBtZXJnZSxcbiAgc3BsaWNlLFxuICByZXBsYWNlLFxuICBmaWx0ZXIsXG4gIGZpbmQsXG4gIHBydW5lLFxuICBwYXRjaCxcbiAgYXVnbWVudCxcbiAgc2VwYXJhdGUsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdfQ==
|
|
326
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBhcnJheS5sZW5ndGggLSAxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaChhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2hpZnQoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYXJyYXkxLCBlbGVtZW50T3JBcnJheTIpIHtcbiAgY29uc3QgYXJyYXkyID0gKGVsZW1lbnRPckFycmF5MiBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckFycmF5MiA6XG4gICAgICAgICAgICAgICAgICAgICBbZWxlbWVudE9yQXJyYXkyXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgdGVzdCkge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgdGVzdCkge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBmaWx0ZXJlZEVsZW1lbnRzLnVuc2hpZnQoZmlyc3REZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCB0ZXN0KSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgdGVzdCkge1xuICBsZXQgcHJ1bmVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIHRlc3QpIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuXG4gIGlmIChmb3VuZCkge1xuICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCB0ZXN0KSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgdGVzdCkge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9KTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBzcGxpY2UsXG4gIHJlcGxhY2UsXG4gIGZpbHRlcixcbiAgZmluZCxcbiAgcHJ1bmUsXG4gIHBhdGNoLFxuICBhdWdtZW50LFxuICBzZXBhcmF0ZSxcbiAgZm9yd2FyZHNTb21lLFxuICBiYWNrd2FyZHNTb21lLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNSZWR1Y2UsXG4gIGJhY2t3YXJkc1JlZHVjZSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoXG59O1xuIl0sIm5hbWVzIjpbImZpcnN0Iiwic2Vjb25kIiwidGhpcmQiLCJmb3VydGgiLCJmaWZ0aCIsImZpZnRoTGFzdCIsImZvdXJ0aExhc3QiLCJ0aGlyZExhc3QiLCJzZWNvbmRMYXN0IiwiZmlyc3RMYXN0IiwibGFzdCIsImhlYWQiLCJ0YWlsIiwiYmFjayIsImZyb250IiwicHVzaCIsInVuc2hpZnQiLCJjb25jYXQiLCJjbGVhciIsImNvcHkiLCJtZXJnZSIsInNwbGljZSIsInJlcGxhY2UiLCJmaWx0ZXIiLCJmaW5kIiwicHJ1bmUiLCJwYXRjaCIsImF1Z21lbnQiLCJzZXBhcmF0ZSIsImZvcndhcmRzU29tZSIsImJhY2t3YXJkc1NvbWUiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJmb3J3YXJkc1JlZHVjZSIsImJhY2t3YXJkc1JlZHVjZSIsImZvcndhcmRzRm9yRWFjaCIsImJhY2t3YXJkc0ZvckVhY2giLCJhcnJheSIsImxlbmd0aCIsInNsaWNlIiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJ0ZXN0IiwiZm91bmQiLCJzb21lIiwiaW5kZXgiLCJwYXNzZWQiLCJmaWx0ZXJlZEVsZW1lbnRzIiwiZGVsZXRlZEVsZW1lbnRzIiwiZmlyc3REZWxldGVkRWxlbWVudCIsImVsZW1lbnRzIiwicHJ1bmVkRWxlbWVudCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJjYWxsYmFjayIsImFycmF5TGVuZ3RoIiwicmVzdWx0IiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7UUFFSUEsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLE1BQU0sR0FBTkEsTUFBTTtRQUVOQyxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsVUFBVSxHQUFWQSxVQUFVO1FBRVZDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsSUFBSSxHQUFKQSxJQUFJ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
|