@datagrok-libraries/statistics 0.1.5 → 0.1.6

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/package.json CHANGED
@@ -1,32 +1,36 @@
1
1
  {
2
- "name": "@datagrok-libraries/statistics",
3
- "publishConfig": {
4
- "access": "public"
5
- },
6
- "friendlyName": "statistics",
7
- "version": "0.1.5",
8
- "description": "",
9
- "dependencies": {
10
- "datagrok-api": ">0.95.4",
11
- "cash-dom": "latest",
12
- "dayjs": "latest",
13
- "jstat": "latest"
14
- },
15
- "devDependencies": {
16
- "ts-loader": "^9.2.6",
17
- "typescript": "^4.2.3",
18
- "eslint": "latest",
19
- "eslint-config-google": "latest",
20
- "@typescript-eslint/eslint-plugin": "latest",
21
- "@typescript-eslint/parser": "latest"
22
- },
23
- "scripts": {
24
- "link": "npm link",
25
- "debug-statistics": "grok publish --rebuild",
26
- "release-statistics": "grok publish --rebuild --release",
27
- "build-statistics": "tsc",
28
- "build": "tsc",
29
- "lint": "eslint src --ext .ts",
30
- "lint-fix": "eslint src --ext .ts --fix"
31
- }
2
+ "name": "@datagrok-libraries/statistics",
3
+ "publishConfig": {
4
+ "access": "public"
5
+ },
6
+ "friendlyName": "statistics",
7
+ "version": "0.1.6",
8
+ "description": "",
9
+ "dependencies": {
10
+ "datagrok-api": ">0.95.4",
11
+ "@datagrok-libraries/utils": ">=0.0.22",
12
+ "cash-dom": "latest",
13
+ "dayjs": "latest",
14
+ "jstat": "latest"
15
+ },
16
+ "devDependencies": {
17
+ "ts-loader": "^9.2.6",
18
+ "typescript": "^4.2.3",
19
+ "eslint": "latest",
20
+ "eslint-config-google": "latest",
21
+ "@typescript-eslint/eslint-plugin": "latest",
22
+ "@typescript-eslint/parser": "latest"
23
+ },
24
+ "scripts": {
25
+ "link": "npm link",
26
+ "link-api": "npm link datagrok-api",
27
+ "link-utils": "npm link @datagrok-libraries/utils",
28
+ "link-all": "npm link datagrok-api @datagrok-libraries/utils",
29
+ "debug-statistics": "grok publish --rebuild",
30
+ "release-statistics": "grok publish --rebuild --release",
31
+ "build-statistics": "tsc",
32
+ "build": "tsc",
33
+ "lint": "eslint src --ext .ts",
34
+ "lint-fix": "eslint src --ext .ts --fix"
35
+ }
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-tests.d.ts","sourceRoot":"","sources":["multiple-tests.ts"],"names":[],"mappings":"AA2IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,KAAK,GAAE,MAAa,EACpB,MAAM,GAAE,MAAW,EACnB,QAAQ,GAAE,OAAe,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAyD3D"}
1
+ {"version":3,"file":"multiple-tests.d.ts","sourceRoot":"","sources":["multiple-tests.ts"],"names":[],"mappings":"AAoIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,KAAK,GAAE,MAAa,EACpB,MAAM,GAAE,MAAW,EACnB,QAAQ,GAAE,OAAe,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAyD3D"}
@@ -1,3 +1,4 @@
1
+ import { ArrayUtils } from '@datagrok-libraries/utils/src/array-utils';
1
2
  /** @type {*} A dictionary of basic binary operations. */
2
3
  const _operations = {
3
4
  '+': (a, b) => (a + b),
@@ -14,13 +15,8 @@ const _operations = {
14
15
  * @return {Int32Array} Array of indices that sort values along the first axis.
15
16
  */
16
17
  function _argsort(values) {
17
- const v = Array.from(values);
18
- const argsort = (arr) => arr
19
- .map((v, i) => [v, i]) // Decorate with index
20
- .sort((a, b) => (a[0] == b[0] ? 0 : (a[0] > b[0] ? 1 : -1)))
21
- .map((v, _) => v[1]); // Undecorate
22
- const forder = argsort(v);
23
- return Int32Array.from(forder);
18
+ const array = Array.from(values);
19
+ return Int32Array.from(ArrayUtils.argSort(array));
24
20
  }
25
21
  /**
26
22
  * Take elements from an array.
@@ -203,4 +199,4 @@ export function fdrcorrection(pvals, alpha = 0.05, method = 'n', isSorted = fals
203
199
  }
204
200
  return [reject, pvalsCorrected];
205
201
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtdWx0aXBsZS10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsTUFBTSxXQUFXLEdBQStCO0lBQzlDLEdBQUcsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsR0FBRyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxLQUFLLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELEtBQUssRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDakQsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsU0FBUyxRQUFRLENBQUMsTUFBb0I7SUFDcEMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU3QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQWEsRUFBRSxFQUFFLENBQUMsR0FBRztTQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMs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RUFBRSxlQUFlLENBQUMsQ0FBQztLQUNuQztJQUNELE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAdHlwZSB7Kn0gQSBkaWN0aW9uYXJ5IG9mIGJhc2ljIGJpbmFyeSBvcGVyYXRpb25zLiAqL1xuY29uc3QgX29wZXJhdGlvbnM6IHtbbmFtZTogc3RyaW5nXTogRnVuY3Rpb259ID0ge1xuICAnKyc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgKyBiKSxcbiAgJy0nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIC0gYiksXG4gICcqJzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSAqIGIpLFxuICAnLyc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgLyBiKSxcbiAgJ21pbic6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgPCBiID8gYSA6IGIpLFxuICAnbWF4JzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSA+IGIgPyBhIDogYiksXG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGluZGljZXMgdGhhdCB3b3VsZCBzb3J0IGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgQXJyYXkgdG8gc29ydC5cbiAqIEByZXR1cm4ge0ludDMyQXJyYXl9IEFycmF5IG9mIGluZGljZXMgdGhhdCBzb3J0IHZhbHVlcyBhbG9uZyB0aGUgZmlyc3QgYXhpcy5cbiAqL1xuZnVuY3Rpb24gX2FyZ3NvcnQodmFsdWVzOiBGbG9hdDMyQXJyYXkpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgdiA9IEFycmF5LmZyb20odmFsdWVzKTtcblxuICBjb25zdCBhcmdzb3J0ID0gKGFycjogbnVtYmVyW10pID0+IGFyclxuICAgIC5tYXAoKHYsIGkpID0+IFt2LCBpXSkgLy8gRGVjb3JhdGUgd2l0aCBpbmRleFxuICAgIC5zb3J0KChhLCBiKSA9PiAoYVswXSA9PSBiWzBdID8gMCA6IChhWzBdID4gYlswXSA/IDEgOiAtMSkpKVxuICAgIC5tYXAoKHYsIF8pID0+IHZbMV0pOyAvLyBVbmRlY29yYXRlXG5cbiAgY29uc3QgZm9yZGVyID0gYXJnc29ydCh2KTtcblxuICByZXR1cm4gSW50MzJBcnJheS5mcm9tKGZvcmRlcik7XG59XG5cblxuLyoqXG4gKiBUYWtlIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtJbnQzMkFycmF5fSBvcmRlciBUaGUgaW5kaWNlcyBvZiB0aGUgdmFsdWVzIHRvIGV4dHJhY3QuXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBzb3VyY2UgYXJyYXkuXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF90YWtlKG9yZGVyOiBJbnQzMkFycmF5LCB2YWx1ZXM6IEZsb2F0MzJBcnJheSk6IEZsb2F0MzJBcnJheSB7XG4gIC8vIFRPRE86IEltcGxlbWVudCBhIGdlbmVyYWwgZnVuY3Rpb24gZm9yIFR5cGVkQXJyYXkuXG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpLm1hcCgoXywgaSkgPT4gdmFsdWVzW29yZGVyW2ldXSk7XG59XG5cbi8qKlxuICogQXNzaWduIGVsZW1lbnRzIG9mIGFuIGFycmF5IGZvbGxvd2luZyB0aGUgb3JkZXIgZ2l2ZW4gKGZsb2F0aW5nLXBvaW50IHZlcnNpb24pLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEBwYXJhbSB7SW50MzJBcnJheX0gb3JkZXIgVGhlIG9yZGVyIGdpdmVuLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBUaGUgcmV0dXJuZWQgYXJyYXkgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBfZ2l2ZSh2YWx1ZXM6IEZsb2F0MzJBcnJheSwgb3JkZXI6IEludDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xuICBjb25zdCB2ID0gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSB7XG4gICAgdltvcmRlcltpXV0gPSB2YWx1ZXNbaV07XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbi8qKlxuICogQXNzaWduIGVsZW1lbnRzIG9mIGFuIGFycmF5IGZvbGxvd2luZyB0aGUgb3JkZXIgZ2l2ZW4gKGJvb2xlYW4gdmVyc2lvbikuXG4gKlxuICogQHBhcmFtIHtBcnJheTxib29sZWFuPn0gdmFsdWVzIFRoZSBzb3VyY2UgYXJyYXkuXG4gKiBAcGFyYW0ge0ludDMyQXJyYXl9IG9yZGVyIFRoZSBvcmRlciBnaXZlbi5cbiAqIEByZXR1cm4ge0FycmF5PGJvb2xlYW4+fSBUaGUgcmV0dXJuZWQgYXJyYXkgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBfZ2l2ZWIodmFsdWVzOiBBcnJheTxib29sZWFuPiwgb3JkZXI6IEludDMyQXJyYXkpOiBBcnJheTxib29sZWFuPiB7XG4gIGNvbnN0IHYgPSBBcnJheS5mcm9tKHZhbHVlcyk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcmRlci5sZW5ndGg7ICsraSkge1xuICAgIHZbb3JkZXJbaV1dID0gdmFsdWVzW2ldO1xuICB9XG4gIHJldHVybiB2O1xufVxuXG4vKipcbiAqIE5vIGZyaWxscyBlbXBpcmljYWwgY2RmIHVzZWQgaW4gZmRyY29ycmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0geCBUaGUgc291cmNlIGFycmF5IHRvIHRha2UgYSBkaW1lbnNpb24gZnJvbS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gRW1waXJpY2FsIGNkZi5cbiAqL1xuZnVuY3Rpb24gX2VjZGYoeDogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgY29uc3Qgbm9icyA9IHgubGVuZ3RoO1xuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20oeCkubWFwKChfLCBpKSA9PiAoaSsxKS9ub2JzKTtcbn1cblxuLyoqXG4gKiBjbSA9IG5wLnN1bSgxLi9ucC5hcmFuZ2UoMSwgbGVuKHB2YWxzX3NvcnRlZCkrMSkpXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBnaXZlbi5cbiAqIEByZXR1cm4ge251bWJlcn0gY20gdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIF9jbShuOiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBzdW0gKz0gMSAvIChpKzEpO1xuICB9XG4gIHJldHVybiBzdW07XG59XG5cbi8qKlxuICogQmFzaWMgb3BlcmF0aW9uIHVuZGVyIGEgdmVjdG9yIGFuZCBhIHNjYWxhci5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBzb3VyY2UgdmVjdG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IHNjYWxlIFRoZSBzY2FsYXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wPScqJ10gVGhlIG9wZXJhdGlvbiB0byBwZXJmb3JtLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBOZXcgdmVjdG9yIGFzIGEgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIF9mYWN0b3IodmFsdWVzOiBGbG9hdDMyQXJyYXksIHNjYWxlOiBudW1iZXIsIG9wID0gJyonKTogRmxvYXQzMkFycmF5IHtcbiAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcykubWFwKCh2LCBfKSA9PiBfb3BlcmF0aW9uc1tvcF0odiwgc2NhbGUpKTtcbn1cblxuLyoqXG4gKiBCYXNpYyBvcGVyYXRpb24gdW5kZXIgdHdvIHZlY3RvcnMuXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHNjYWxlIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcD0nKiddIFRoZSBvcGVyYXRpb24gdG8gcGVyZm9ybS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gTmV3IHZlY3RvciBhcyBhIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uLlxuICovXG5mdW5jdGlvbiBfdmZhY3Rvcih2YWx1ZXM6IEZsb2F0MzJBcnJheSwgc2NhbGU6IEZsb2F0MzJBcnJheSwgb3AgPSAnKicpOiBGbG9hdDMyQXJyYXkge1xuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKS5tYXAoKHYsIGkpID0+IF9vcGVyYXRpb25zW29wXSh2LCBzY2FsZVtpXSkpO1xufVxuXG4vKipcbiAqIEFjY3VtdWxhdGUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgbWluIG9wZXJhdG9yIHRvIGFsbCBlbGVtZW50cy5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBhcnJheSB0byBhY3Qgb24uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IFRoZSBhY2N1bXVsYXRlZCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9taW5pbXVtQWNjdW11bGF0ZSh2YWx1ZXM6IEZsb2F0MzJBcnJheSk6IEZsb2F0MzJBcnJheSB7XG4gIGNvbnN0IG5JdGVtcyA9IHZhbHVlcy5sZW5ndGg7XG4gIGNvbnN0IHIgPSBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICByW2ldID0gdmFsdWVzLnNsaWNlKDAsIGkrMSkucmVkdWNlKChhLCBiLCBfLCBfXykgPT4gKF9vcGVyYXRpb25zWydtaW4nXShhLCBiKSkpO1xuICB9XG4gIHJldHVybiByO1xufVxuXG4vKipcbiAqIHB2YWx1ZSBjb3JyZWN0aW9uIGZvciBmYWxzZSBkaXNjb3ZlcnkgcmF0ZVxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSBwdmFscyBTZXQgb2YgcC12YWx1ZXMgb2YgdGhlIGluZGl2aWR1YWwgdGVzdHMuXG4gKiBAcGFyYW0ge251bWJlcn0gW2FscGhhPTAuMDVdIEZhbWlseS13aXNlIGVycm9yIHJhdGUuIERlZmF1bHRzIHRvIDAuMDUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21ldGhvZD0nbiddIHsnaScsICdpbmRlcCcsICdwJywgJ3Bvc2NvcnInLCAnbicsICduZWdjb3JyJ30sIG9wdGlvbmFsXG4gKiBXaGljaCBtZXRob2QgdG8gdXNlIGZvciBGRFIgY29ycmVjdGlvbi5cbiAqIGBgeydpJywgJ2luZGVwJywgJ3AnLCAncG9zY29ycid9YGAgYWxsIHJlZmVyIHRvIGBgZmRyX2JoYGBcbiAqIChCZW5qYW1pbmkvSG9jaGJlcmcgZm9yIGluZGVwZW5kZW50IG9yIHBvc2l0aXZlbHlcbiAqIGNvcnJlbGF0ZWQgdGVzdHMpLiBgYHsnbicsICduZWdjb3JyJ31gYCBib3RoIHJlZmVyIHRvIGBgZmRyX2J5YGBcbiAqIChCZW5qYW1pbmkvWWVrdXRpZWxpIGZvciBnZW5lcmFsIG9yIG5lZ2F0aXZlbHkgY29ycmVsYXRlZCB0ZXN0cykuXG4gKiBEZWZhdWx0cyB0byAnbicuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1NvcnRlZD1mYWxzZV0gSWYgRmFsc2UgKGRlZmF1bHQpLCB0aGUgcF92YWx1ZXMgd2lsbCBiZSBzb3J0ZWQsIGJ1dCB0aGUgY29ycmVjdGVkXG4gKiBwdmFsdWVzIGFyZSBpbiB0aGUgb3JpZ2luYWwgb3JkZXIuIElmIFRydWUsIHRoZW4gaXQgYXNzdW1lZCB0aGF0IHRoZVxuICogcHZhbHVlcyBhcmUgYWxyZWFkeSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLlxuICogQHJldHVybiB7W0FycmF5PGJvb2xlYW4+LCBGbG9hdDMyQXJyYXldfSByZWplY3RlZCA6IG5kYXJyYXksIGJvb2xcbiAqIFRydWUgaWYgYSBoeXBvdGhlc2lzIGlzIHJlamVjdGVkLCBGYWxzZSBpZiBub3RcbiAqIHB2YWx1ZS1jb3JyZWN0ZWQgOiBuZGFycmF5XG4gKiBwdmFsdWVzIGFkanVzdGVkIGZvciBtdWx0aXBsZSBoeXBvdGhlc2lzIHRlc3RpbmcgdG8gbGltaXQgRkRSXG4gKiBAc2VlXG4gKiBJZiB0aGVyZSBpcyBwcmlvciBpbmZvcm1hdGlvbiBvbiB0aGUgZnJhY3Rpb24gb2YgdHJ1ZSBoeXBvdGhlc2lzLCB0aGVuIGFscGhhXG4gKiBzaG91bGQgYmUgc2V0IHRvIGBgYWxwaGEgKiBtL21fMGBgIHdoZXJlIG0gaXMgdGhlIG51bWJlciBvZiB0ZXN0cyxcbiAqIGdpdmVuIGJ5IHRoZSBwLXZhbHVlcywgYW5kIG1fMCBpcyBhbiBlc3RpbWF0ZSBvZiB0aGUgdHJ1ZSBoeXBvdGhlc2lzLlxuICogKHNlZSBCZW5qYW1pbmksIEtyaWVnZXIgYW5kIFlla3V0ZWxpKVxuICpcbiAqIFRoZSB0d28tc3RlcCBtZXRob2Qgb2YgQmVuamFtaW5pLCBLcmllZ2VyIGFuZCBZZWt1dGllbCB0aGF0IGVzdGltYXRlcyB0aGUgbnVtYmVyXG4gKiBvZiBmYWxzZSBoeXBvdGhlc2VzIHdpbGwgYmUgYXZhaWxhYmxlIChzb29uKS5cbiAqXG4gKiBCb3RoIG1ldGhvZHMgZXhwb3NlZCB2aWEgdGhpcyBmdW5jdGlvbiAoQmVuamFtaW5pL0hvY2hiZXJnLCBCZW5qYW1pbmkvWWVrdXRpZWxpKVxuICogYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSBmdW5jdGlvbiBgYG11bHRpcGxldGVzdHNgYCwgYXMgYGBtZXRob2Q9XCJmZHJfYmhcImBgIGFuZFxuICogYGBtZXRob2Q9XCJmZHJfYnlcImBgLCByZXNwZWN0aXZlbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmZHJjb3JyZWN0aW9uKFxuICBwdmFsczogRmxvYXQzMkFycmF5LFxuICBhbHBoYTogbnVtYmVyID0gMC4wNSxcbiAgbWV0aG9kOiBzdHJpbmcgPSduJyxcbiAgaXNTb3J0ZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IFtBcnJheTxib29sZWFuPiwgRmxvYXQzMkFycmF5XVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGJyYWNlLXN0eWxlXG57XG4gIGNvbnN0IG5JdGVtcyA9IHB2YWxzLmxlbmd0aDtcbiAgbGV0IHB2YWxzU29ydGVkOiBGbG9hdDMyQXJyYXk7XG4gIGxldCBwdmFsc1NvcnRpbmQ6IEludDMyQXJyYXk7XG4gIGxldCBjbSA9IDA7XG5cbiAgaWYgKCFpc1NvcnRlZCkge1xuICAgIHB2YWxzU29ydGluZCA9IF9hcmdzb3J0KHB2YWxzKTtcbiAgICBwdmFsc1NvcnRlZCA9IF90YWtlKHB2YWxzU29ydGluZCwgcHZhbHMpO1xuICB9IGVsc2Uge1xuICAgIHB2YWxzU29ydGluZCA9IG5ldyBJbnQzMkFycmF5KG5JdGVtcykuZmlsbCgwKS5tYXAoKF8sIGkpID0+IChpKSk7XG4gICAgcHZhbHNTb3J0ZWQgPSBwdmFsczsgLy8gYWxpYXNcbiAgfVxuXG4gIGxldCBlY2RmZmFjdG9yID0gX2VjZGYocHZhbHNTb3J0ZWQpO1xuXG4gIGlmIChbJ2knLCAnaW5kZXAnLCAncCcsICdwb3Njb3JyJ10uaW5jbHVkZXMobWV0aG9kKSkge1xuICAgIDtcbiAgfSBlbHNlIGlmIChbJ24nLCAnbmVnY29yciddLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICBjbSA9IF9jbShuSXRlbXMpO1xuICAgIGVjZGZmYWN0b3IgPSBfZmFjdG9yKGVjZGZmYWN0b3IsIGNtLCAnLycpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignb25seSBpbmRlcCBhbmQgbmVnY29yciBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgY29uc3QgcmVqZWN0OiBib29sZWFuW10gPSBuZXcgQXJyYXkobkl0ZW1zKS5maWxsKGZhbHNlKTtcbiAgbGV0IHJlamVjdG1heCA9IC0xO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICBpZiAocHZhbHNTb3J0ZWRbaV0gPD0gZWNkZmZhY3RvcltpXSphbHBoYSkge1xuICAgICAgcmVqZWN0bWF4ID0gaTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVqZWN0bWF4ID49IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlamVjdG1heDsgKytpKSB7XG4gICAgICByZWplY3RbaV0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGxldCBwdmFsc0NvcnJlY3RlZCA9IF92ZmFjdG9yKHB2YWxzU29ydGVkLCBlY2RmZmFjdG9yLCAnLycpO1xuICBwdmFsc0NvcnJlY3RlZCA9IF9taW5pbXVtQWNjdW11bGF0ZShwdmFsc0NvcnJlY3RlZC5yZXZlcnNlKCkpLnJldmVyc2UoKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgaWYgKHB2YWxzQ29ycmVjdGVkW2ldID4gMSkge1xuICAgICAgcHZhbHNDb3JyZWN0ZWRbaV0gPSAxO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaXNTb3J0ZWQpIHtcbiAgICBjb25zdCBwdmFsc0NvcnJlY3RlZF8gPSBfZ2l2ZShwdmFsc0NvcnJlY3RlZCwgcHZhbHNTb3J0aW5kKTtcbiAgICBjb25zdCByZWplY3RfID0gX2dpdmViKHJlamVjdCwgcHZhbHNTb3J0aW5kKTtcbiAgICByZXR1cm4gW3JlamVjdF8sIHB2YWxzQ29ycmVjdGVkX107XG4gIH1cbiAgcmV0dXJuIFtyZWplY3QsIHB2YWxzQ29ycmVjdGVkXTtcbn1cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtdWx0aXBsZS10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFFckUseURBQXlEO0FBQ3pELE1BQU0sV0FBVyxHQUErQjtJQUM5QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsR0FBRyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLEdBQUcsRUFBRSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxHQUFHLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsS0FBSyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLLEVBQUUsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2pELENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILFNBQVMsUUFBUSxDQUFDLE1BQW9CO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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USxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRXhFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDL0IsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkI7S0FDRjtJQUVELElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztLQUNuQztJQUNELE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYXJyYXktdXRpbHMnO1xuXG4vKiogQHR5cGUgeyp9IEEgZGljdGlvbmFyeSBvZiBiYXNpYyBiaW5hcnkgb3BlcmF0aW9ucy4gKi9cbmNvbnN0IF9vcGVyYXRpb25zOiB7W25hbWU6IHN0cmluZ106IEZ1bmN0aW9ufSA9IHtcbiAgJysnOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhICsgYiksXG4gICctJzogKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PiAoYSAtIGIpLFxuICAnKic6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgKiBiKSxcbiAgJy8nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIC8gYiksXG4gICdtaW4nOiAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+IChhIDwgYiA/IGEgOiBiKSxcbiAgJ21heCc6IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT4gKGEgPiBiID8gYSA6IGIpLFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRpY2VzIHRoYXQgd291bGQgc29ydCBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIEFycmF5IHRvIHNvcnQuXG4gKiBAcmV0dXJuIHtJbnQzMkFycmF5fSBBcnJheSBvZiBpbmRpY2VzIHRoYXQgc29ydCB2YWx1ZXMgYWxvbmcgdGhlIGZpcnN0IGF4aXMuXG4gKi9cbmZ1bmN0aW9uIF9hcmdzb3J0KHZhbHVlczogRmxvYXQzMkFycmF5KTogSW50MzJBcnJheSB7XG4gIGNvbnN0IGFycmF5ID0gQXJyYXkuZnJvbSh2YWx1ZXMpO1xuICByZXR1cm4gSW50MzJBcnJheS5mcm9tKEFycmF5VXRpbHMuYXJnU29ydChhcnJheSkpO1xufVxuXG4vKipcbiAqIFRha2UgZWxlbWVudHMgZnJvbSBhbiBhcnJheS5cbiAqXG4gKiBAcGFyYW0ge0ludDMyQXJyYXl9IG9yZGVyIFRoZSBpbmRpY2VzIG9mIHRoZSB2YWx1ZXMgdG8gZXh0cmFjdC5cbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gVGhlIHJldHVybmVkIGFycmF5IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gX3Rha2Uob3JkZXI6IEludDMyQXJyYXksIHZhbHVlczogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgLy8gVE9ETzogSW1wbGVtZW50IGEgZ2VuZXJhbCBmdW5jdGlvbiBmb3IgVHlwZWRBcnJheS5cbiAgcmV0dXJuIEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcykubWFwKChfLCBpKSA9PiB2YWx1ZXNbb3JkZXJbaV1dKTtcbn1cblxuLyoqXG4gKiBBc3NpZ24gZWxlbWVudHMgb2YgYW4gYXJyYXkgZm9sbG93aW5nIHRoZSBvcmRlciBnaXZlbiAoZmxvYXRpbmctcG9pbnQgdmVyc2lvbikuXG4gKlxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHZhbHVlcyBUaGUgc291cmNlIGFycmF5LlxuICogQHBhcmFtIHtJbnQzMkFycmF5fSBvcmRlciBUaGUgb3JkZXIgZ2l2ZW4uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9naXZlKHZhbHVlczogRmxvYXQzMkFycmF5LCBvcmRlcjogSW50MzJBcnJheSk6IEZsb2F0MzJBcnJheSB7XG4gIGNvbnN0IHYgPSBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb3JkZXIubGVuZ3RoOyArK2kpIHtcbiAgICB2W29yZGVyW2ldXSA9IHZhbHVlc1tpXTtcbiAgfVxuICByZXR1cm4gdjtcbn1cblxuLyoqXG4gKiBBc3NpZ24gZWxlbWVudHMgb2YgYW4gYXJyYXkgZm9sbG93aW5nIHRoZSBvcmRlciBnaXZlbiAoYm9vbGVhbiB2ZXJzaW9uKS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGJvb2xlYW4+fSB2YWx1ZXMgVGhlIHNvdXJjZSBhcnJheS5cbiAqIEBwYXJhbSB7SW50MzJBcnJheX0gb3JkZXIgVGhlIG9yZGVyIGdpdmVuLlxuICogQHJldHVybiB7QXJyYXk8Ym9vbGVhbj59IFRoZSByZXR1cm5lZCBhcnJheSBoYXMgdGhlIHNhbWUgdHlwZSBhcyB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIF9naXZlYih2YWx1ZXM6IEFycmF5PGJvb2xlYW4+LCBvcmRlcjogSW50MzJBcnJheSk6IEFycmF5PGJvb2xlYW4+IHtcbiAgY29uc3QgdiA9IEFycmF5LmZyb20odmFsdWVzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSB7XG4gICAgdltvcmRlcltpXV0gPSB2YWx1ZXNbaV07XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbi8qKlxuICogTm8gZnJpbGxzIGVtcGlyaWNhbCBjZGYgdXNlZCBpbiBmZHJjb3JyZWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB4IFRoZSBzb3VyY2UgYXJyYXkgdG8gdGFrZSBhIGRpbWVuc2lvbiBmcm9tLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBFbXBpcmljYWwgY2RmLlxuICovXG5mdW5jdGlvbiBfZWNkZih4OiBGbG9hdDMyQXJyYXkpOiBGbG9hdDMyQXJyYXkge1xuICBjb25zdCBub2JzID0geC5sZW5ndGg7XG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh4KS5tYXAoKF8sIGkpID0+IChpKzEpL25vYnMpO1xufVxuXG4vKipcbiAqIGNtID0gbnAuc3VtKDEuL25wLmFyYW5nZSgxLCBsZW4ocHZhbHNfc29ydGVkKSsxKSlcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIGdpdmVuLlxuICogQHJldHVybiB7bnVtYmVyfSBjbSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gX2NtKG46IG51bWJlcik6IG51bWJlciB7XG4gIGxldCBzdW0gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgIHN1bSArPSAxIC8gKGkrMSk7XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuLyoqXG4gKiBCYXNpYyBvcGVyYXRpb24gdW5kZXIgYSB2ZWN0b3IgYW5kIGEgc2NhbGFyLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIHNvdXJjZSB2ZWN0b3IuXG4gKiBAcGFyYW0ge251bWJlcn0gc2NhbGUgVGhlIHNjYWxhci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3A9JyonXSBUaGUgb3BlcmF0aW9uIHRvIHBlcmZvcm0uXG4gKiBAcmV0dXJuIHtGbG9hdDMyQXJyYXl9IE5ldyB2ZWN0b3IgYXMgYSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gX2ZhY3Rvcih2YWx1ZXM6IEZsb2F0MzJBcnJheSwgc2NhbGU6IG51bWJlciwgb3AgPSAnKicpOiBGbG9hdDMyQXJyYXkge1xuICByZXR1cm4gRmxvYXQzMkFycmF5LmZyb20odmFsdWVzKS5tYXAoKHYsIF8pID0+IF9vcGVyYXRpb25zW29wXSh2LCBzY2FsZSkpO1xufVxuXG4vKipcbiAqIEJhc2ljIG9wZXJhdGlvbiB1bmRlciB0d28gdmVjdG9ycy5cbiAqXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gdmFsdWVzIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gc2NhbGUgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wPScqJ10gVGhlIG9wZXJhdGlvbiB0byBwZXJmb3JtLlxuICogQHJldHVybiB7RmxvYXQzMkFycmF5fSBOZXcgdmVjdG9yIGFzIGEgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uXG4gKi9cbmZ1bmN0aW9uIF92ZmFjdG9yKHZhbHVlczogRmxvYXQzMkFycmF5LCBzY2FsZTogRmxvYXQzMkFycmF5LCBvcCA9ICcqJyk6IEZsb2F0MzJBcnJheSB7XG4gIHJldHVybiBGbG9hdDMyQXJyYXkuZnJvbSh2YWx1ZXMpLm1hcCgodiwgaSkgPT4gX29wZXJhdGlvbnNbb3BdKHYsIHNjYWxlW2ldKSk7XG59XG5cbi8qKlxuICogQWNjdW11bGF0ZSB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZSBtaW4gb3BlcmF0b3IgdG8gYWxsIGVsZW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7RmxvYXQzMkFycmF5fSB2YWx1ZXMgVGhlIGFycmF5IHRvIGFjdCBvbi5cbiAqIEByZXR1cm4ge0Zsb2F0MzJBcnJheX0gVGhlIGFjY3VtdWxhdGVkIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gX21pbmltdW1BY2N1bXVsYXRlKHZhbHVlczogRmxvYXQzMkFycmF5KTogRmxvYXQzMkFycmF5IHtcbiAgY29uc3Qgbkl0ZW1zID0gdmFsdWVzLmxlbmd0aDtcbiAgY29uc3QgciA9IEZsb2F0MzJBcnJheS5mcm9tKHZhbHVlcyk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgIHJbaV0gPSB2YWx1ZXMuc2xpY2UoMCwgaSsxKS5yZWR1Y2UoKGEsIGIsIF8sIF9fKSA9PiAoX29wZXJhdGlvbnNbJ21pbiddKGEsIGIpKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogcHZhbHVlIGNvcnJlY3Rpb24gZm9yIGZhbHNlIGRpc2NvdmVyeSByYXRlXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IHB2YWxzIFNldCBvZiBwLXZhbHVlcyBvZiB0aGUgaW5kaXZpZHVhbCB0ZXN0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYWxwaGE9MC4wNV0gRmFtaWx5LXdpc2UgZXJyb3IgcmF0ZS4gRGVmYXVsdHMgdG8gMC4wNS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWV0aG9kPSduJ10geydpJywgJ2luZGVwJywgJ3AnLCAncG9zY29ycicsICduJywgJ25lZ2NvcnInfSwgb3B0aW9uYWxcbiAqIFdoaWNoIG1ldGhvZCB0byB1c2UgZm9yIEZEUiBjb3JyZWN0aW9uLlxuICogYGB7J2knLCAnaW5kZXAnLCAncCcsICdwb3Njb3JyJ31gYCBhbGwgcmVmZXIgdG8gYGBmZHJfYmhgYFxuICogKEJlbmphbWluaS9Ib2NoYmVyZyBmb3IgaW5kZXBlbmRlbnQgb3IgcG9zaXRpdmVseVxuICogY29ycmVsYXRlZCB0ZXN0cykuIGBgeyduJywgJ25lZ2NvcnInfWBgIGJvdGggcmVmZXIgdG8gYGBmZHJfYnlgYFxuICogKEJlbmphbWluaS9ZZWt1dGllbGkgZm9yIGdlbmVyYWwgb3IgbmVnYXRpdmVseSBjb3JyZWxhdGVkIHRlc3RzKS5cbiAqIERlZmF1bHRzIHRvICduJy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU29ydGVkPWZhbHNlXSBJZiBGYWxzZSAoZGVmYXVsdCksIHRoZSBwX3ZhbHVlcyB3aWxsIGJlIHNvcnRlZCwgYnV0IHRoZSBjb3JyZWN0ZWRcbiAqIHB2YWx1ZXMgYXJlIGluIHRoZSBvcmlnaW5hbCBvcmRlci4gSWYgVHJ1ZSwgdGhlbiBpdCBhc3N1bWVkIHRoYXQgdGhlXG4gKiBwdmFsdWVzIGFyZSBhbHJlYWR5IHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gKiBAcmV0dXJuIHtbQXJyYXk8Ym9vbGVhbj4sIEZsb2F0MzJBcnJheV19IHJlamVjdGVkIDogbmRhcnJheSwgYm9vbFxuICogVHJ1ZSBpZiBhIGh5cG90aGVzaXMgaXMgcmVqZWN0ZWQsIEZhbHNlIGlmIG5vdFxuICogcHZhbHVlLWNvcnJlY3RlZCA6IG5kYXJyYXlcbiAqIHB2YWx1ZXMgYWRqdXN0ZWQgZm9yIG11bHRpcGxlIGh5cG90aGVzaXMgdGVzdGluZyB0byBsaW1pdCBGRFJcbiAqIEBzZWVcbiAqIElmIHRoZXJlIGlzIHByaW9yIGluZm9ybWF0aW9uIG9uIHRoZSBmcmFjdGlvbiBvZiB0cnVlIGh5cG90aGVzaXMsIHRoZW4gYWxwaGFcbiAqIHNob3VsZCBiZSBzZXQgdG8gYGBhbHBoYSAqIG0vbV8wYGAgd2hlcmUgbSBpcyB0aGUgbnVtYmVyIG9mIHRlc3RzLFxuICogZ2l2ZW4gYnkgdGhlIHAtdmFsdWVzLCBhbmQgbV8wIGlzIGFuIGVzdGltYXRlIG9mIHRoZSB0cnVlIGh5cG90aGVzaXMuXG4gKiAoc2VlIEJlbmphbWluaSwgS3JpZWdlciBhbmQgWWVrdXRlbGkpXG4gKlxuICogVGhlIHR3by1zdGVwIG1ldGhvZCBvZiBCZW5qYW1pbmksIEtyaWVnZXIgYW5kIFlla3V0aWVsIHRoYXQgZXN0aW1hdGVzIHRoZSBudW1iZXJcbiAqIG9mIGZhbHNlIGh5cG90aGVzZXMgd2lsbCBiZSBhdmFpbGFibGUgKHNvb24pLlxuICpcbiAqIEJvdGggbWV0aG9kcyBleHBvc2VkIHZpYSB0aGlzIGZ1bmN0aW9uIChCZW5qYW1pbmkvSG9jaGJlcmcsIEJlbmphbWluaS9ZZWt1dGllbGkpXG4gKiBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlIGZ1bmN0aW9uIGBgbXVsdGlwbGV0ZXN0c2BgLCBhcyBgYG1ldGhvZD1cImZkcl9iaFwiYGAgYW5kXG4gKiBgYG1ldGhvZD1cImZkcl9ieVwiYGAsIHJlc3BlY3RpdmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZkcmNvcnJlY3Rpb24oXG4gIHB2YWxzOiBGbG9hdDMyQXJyYXksXG4gIGFscGhhOiBudW1iZXIgPSAwLjA1LFxuICBtZXRob2Q6IHN0cmluZyA9J24nLFxuICBpc1NvcnRlZDogYm9vbGVhbiA9IGZhbHNlKTogW0FycmF5PGJvb2xlYW4+LCBGbG9hdDMyQXJyYXldXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbntcbiAgY29uc3Qgbkl0ZW1zID0gcHZhbHMubGVuZ3RoO1xuICBsZXQgcHZhbHNTb3J0ZWQ6IEZsb2F0MzJBcnJheTtcbiAgbGV0IHB2YWxzU29ydGluZDogSW50MzJBcnJheTtcbiAgbGV0IGNtID0gMDtcblxuICBpZiAoIWlzU29ydGVkKSB7XG4gICAgcHZhbHNTb3J0aW5kID0gX2FyZ3NvcnQocHZhbHMpO1xuICAgIHB2YWxzU29ydGVkID0gX3Rha2UocHZhbHNTb3J0aW5kLCBwdmFscyk7XG4gIH0gZWxzZSB7XG4gICAgcHZhbHNTb3J0aW5kID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKGkpKTtcbiAgICBwdmFsc1NvcnRlZCA9IHB2YWxzOyAvLyBhbGlhc1xuICB9XG5cbiAgbGV0IGVjZGZmYWN0b3IgPSBfZWNkZihwdmFsc1NvcnRlZCk7XG5cbiAgaWYgKFsnaScsICdpbmRlcCcsICdwJywgJ3Bvc2NvcnInXS5pbmNsdWRlcyhtZXRob2QpKSB7XG4gICAgO1xuICB9IGVsc2UgaWYgKFsnbicsICduZWdjb3JyJ10uaW5jbHVkZXMobWV0aG9kKSkge1xuICAgIGNtID0gX2NtKG5JdGVtcyk7XG4gICAgZWNkZmZhY3RvciA9IF9mYWN0b3IoZWNkZmZhY3RvciwgY20sICcvJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvbmx5IGluZGVwIGFuZCBuZWdjb3JyIGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBjb25zdCByZWplY3Q6IGJvb2xlYW5bXSA9IG5ldyBBcnJheShuSXRlbXMpLmZpbGwoZmFsc2UpO1xuICBsZXQgcmVqZWN0bWF4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgIGlmIChwdmFsc1NvcnRlZFtpXSA8PSBlY2RmZmFjdG9yW2ldKmFscGhhKSB7XG4gICAgICByZWplY3RtYXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZWplY3RtYXggPj0gMCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVqZWN0bWF4OyArK2kpIHtcbiAgICAgIHJlamVjdFtpXSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbGV0IHB2YWxzQ29ycmVjdGVkID0gX3ZmYWN0b3IocHZhbHNTb3J0ZWQsIGVjZGZmYWN0b3IsICcvJyk7XG4gIHB2YWxzQ29ycmVjdGVkID0gX21pbmltdW1BY2N1bXVsYXRlKHB2YWxzQ29ycmVjdGVkLnJldmVyc2UoKSkucmV2ZXJzZSgpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICBpZiAocHZhbHNDb3JyZWN0ZWRbaV0gPiAxKSB7XG4gICAgICBwdmFsc0NvcnJlY3RlZFtpXSA9IDE7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc1NvcnRlZCkge1xuICAgIGNvbnN0IHB2YWxzQ29ycmVjdGVkXyA9IF9naXZlKHB2YWxzQ29ycmVjdGVkLCBwdmFsc1NvcnRpbmQpO1xuICAgIGNvbnN0IHJlamVjdF8gPSBfZ2l2ZWIocmVqZWN0LCBwdmFsc1NvcnRpbmQpO1xuICAgIHJldHVybiBbcmVqZWN0XywgcHZhbHNDb3JyZWN0ZWRfXTtcbiAgfVxuICByZXR1cm4gW3JlamVjdCwgcHZhbHNDb3JyZWN0ZWRdO1xufVxuIl19
package/src/tests.d.ts CHANGED
@@ -5,7 +5,8 @@ declare type testStats = {
5
5
  'p-value more': number;
6
6
  'p-value less': number;
7
7
  };
8
- export declare function tTest(arr1: number[], arr2: number[], devKnown?: boolean, devEqual?: boolean): testStats;
8
+ declare type Population = number[] | Float32Array | Int32Array;
9
+ export declare function tTest(arr1: Population, arr2: Population, devKnown?: boolean, devEqual?: boolean): testStats;
9
10
  export declare function uTest(x: number[], y: number[], continuity?: boolean): testStats;
10
11
  export {};
11
12
  //# sourceMappingURL=tests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["tests.ts"],"names":[],"mappings":"AAGA,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,UAAM,EAAE,QAAQ,UAAM,GAAG,SAAS,CA8C/F;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,UAAK,GAAG,SAAS,CA+B1E"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["tests.ts"],"names":[],"mappings":"AAGA,aAAK,SAAS,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,aAAK,UAAU,GAAG,MAAM,EAAE,GAAG,YAAY,GAAG,UAAU,CAAC;AAEvD,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,UAAM,EAAE,QAAQ,UAAM,GAAG,SAAS,CA8CnG;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,UAAK,GAAG,SAAS,CA+B1E"}
package/src/tests.js CHANGED
@@ -74,4 +74,4 @@ function _tieTerm(ranks) {
74
74
  });
75
75
  return jStat.sum(Object.values(ties));
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFVL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxJQUFjLEVBQUUsSUFBYyxFQUFFLFFBQVEsR0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFDLEtBQUs7SUFDbEYsTUFBTSxFQUFFLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxNQUFNLEVBQUUsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sRUFBRSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsTUFBTSxFQUFFLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFFdkIsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxDQUFDLENBQUM7SUFDTixJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLElBQUksQ0FBQztJQUVULElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDYixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDZCxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNkLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNyQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdFLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakMsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFcEQsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztLQUNGO1NBQU07UUFDTCxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNkLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzVDO0lBQ0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLFVBQVUsR0FBQyxJQUFJO0lBQzdELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU1QixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2QixNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRWxCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZFLElBQUksU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsSUFBSSxVQUFVLEVBQUU7UUFDZCxTQUFTLElBQUksR0FBRyxDQUFDO0tBQ2xCO0lBRUQsTUFBTSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUV4QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlDLE9BQU8sRUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFDaEcsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQWU7SUFDL0IsTUFBTSxJQUFJLEdBQTRCLEVBQUUsQ0FBQztJQUV6QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vQHRzLWlnbm9yZTogbm8gdHlwZXNcbmltcG9ydCAqIGFzIGpTdGF0IGZyb20gJ2pzdGF0JztcblxudHlwZSB0ZXN0U3RhdHMgPSB7XG4gICdwLXZhbHVlJzogbnVtYmVyLFxuICAnTWVhbiBkaWZmZXJlbmNlJz86IG51bWJlcixcbiAgJ01lZGlhbiBkaWZmZXJlbmNlJz86IG51bWJlcixcbiAgJ3AtdmFsdWUgbW9yZSc6IG51bWJlcixcbiAgJ3AtdmFsdWUgbGVzcyc6IG51bWJlcixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0VGVzdChhcnIxOiBudW1iZXJbXSwgYXJyMjogbnVtYmVyW10sIGRldktub3duPWZhbHNlLCBkZXZFcXVhbD1mYWxzZSk6IHRlc3RTdGF0cyB7XG4gIGNvbnN0IG0xOiBudW1iZXIgPSBqU3RhdC5tZWFuKGFycjEpO1xuICBjb25zdCBtMjogbnVtYmVyID0galN0YXQubWVhbihhcnIyKTtcbiAgY29uc3QgdjE6IG51bWJlciA9IGpTdGF0LnZhcmlhbmNlKGFycjEpO1xuICBjb25zdCB2MjogbnVtYmVyID0galN0YXQudmFyaWFuY2UoYXJyMik7XG4gIGNvbnN0IG4xID0gYXJyMS5sZW5ndGg7XG4gIGNvbnN0IG4yID0gYXJyMi5sZW5ndGg7XG5cbiAgbGV0IHd2MTtcbiAgbGV0IHd2MjtcbiAgbGV0IHd2O1xuICBsZXQgWjtcbiAgbGV0IEs7XG4gIGxldCBwTW9yZTtcbiAgbGV0IHBMZXNzO1xuICBsZXQgcFRvdDtcblxuICBpZiAoIWRldktub3duKSB7XG4gICAgaWYgKCFkZXZFcXVhbCkge1xuICAgICAgd3YxID0gdjEgLyBuMTtcbiAgICAgIHd2MiA9IHYyIC8gbjI7XG4gICAgICBaID0gKG0xIC0gbTIpIC8gTWF0aC5zcXJ0KHd2MSArIHd2Mik7XG4gICAgICBLID0gTWF0aC5wb3coKHd2MSArIHd2MiksIDIpIC8gKHd2MSAqIHd2MSAvIChuMSAtIDEpICsgd3YyICogd3YyIC8gKG4yIC0gMSkpO1xuXG4gICAgICBwTGVzcyA9IGpTdGF0LnN0dWRlbnR0LmNkZihaLCBLKTtcbiAgICAgIHBNb3JlID0gMSAtIHBMZXNzO1xuICAgICAgcFRvdCA9IDIgKiAocExlc3MgPCBwTW9yZSA/IHBMZXNzIDogcE1vcmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBLID0gbjEgKyBuMiAtIDI7XG4gICAgICB3diA9ICh2MSAqIChuMSAtIDEpICsgdjIgKiAobjIgLSAxKSkgLyBLO1xuICAgICAgWiA9IE1hdGguc3FydChuMSAqIG4yIC8gKG4xICsgbjIpKSAqIChtMSAtIG0yKSAvIHd2O1xuXG4gICAgICBwTW9yZSA9IDEgLSBqU3RhdC5zdHVkZW50dC5jZGYoWiwgSyk7XG4gICAgICBwTGVzcyA9IGpTdGF0LnN0dWRlbnR0LmNkZihaLCBLKTtcbiAgICAgIHBUb3QgPSAyICogKHBMZXNzIDwgcE1vcmUgPyBwTGVzcyA6IHBNb3JlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd3YxID0gdjEgLyBuMTtcbiAgICB3djIgPSB2MiAvIG4yO1xuICAgIFogPSAobTEgLSBtMikgLyBNYXRoLnNxcnQod3YxICsgd3YyKTtcblxuICAgIHBMZXNzID0galN0YXQubm9ybWFsLnBkZihaLCAwLCAxKTtcbiAgICBwTW9yZSA9IDEgLSBwTGVzcztcbiAgICBwVG90ID0gMiAqIChwTGVzcyA8IHBNb3JlID8gcExlc3MgOiBwTW9yZSk7XG4gIH1cbiAgcmV0dXJuIHsncC12YWx1ZSc6IHBUb3QsICdNZWFuIGRpZmZlcmVuY2UnOiBtMSAtIG0yLCAncC12YWx1ZSBtb3JlJzogcE1vcmUsICdwLXZhbHVlIGxlc3MnOiBwTGVzc307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1VGVzdCh4OiBudW1iZXJbXSwgeTogbnVtYmVyW10sIGNvbnRpbnVpdHk9dHJ1ZSk6IHRlc3RTdGF0cyB7XG4gIGNvbnN0IHh5ID0geC5jb25jYXQoeSk7XG4gIGNvbnN0IG4xID0geC5sZW5ndGg7XG4gIGNvbnN0IG4yID0geS5sZW5ndGg7XG4gIGNvbnN0IG1lZDEgPSBqU3RhdC5tZWRpYW4oeCk7XG4gIGNvbnN0IG1lZDIgPSBqU3RhdC5tZWRpYW4oeSk7XG5cbiAgY29uc3QgcmFua3MgPSBqU3RhdC5yYW5rKHh5KTtcblxuICBjb25zdCBSMSA9IGpTdGF0LnN1bShyYW5rcy5zbGljZSgwLCBuMSkpO1xuICBjb25zdCBVMSA9IFIxIC0gbjEgKiAobjEgKyAxKSAvIDI7XG4gIGNvbnN0IFUyID0gbjEgKiBuMiAtIFUxO1xuICBjb25zdCBVID0gVTEgPiBVMiA/IFUxIDogVTI7XG5cbiAgY29uc3QgbXUgPSBuMSAqIG4yIC8gMjtcbiAgY29uc3QgbiA9IG4xICsgbjI7XG5cbiAgY29uc3QgdGllVGVybSA9IF90aWVUZXJtKHJhbmtzKTtcbiAgY29uc3QgcyA9IE1hdGguc3FydChuMSAqIG4yIC8gMTIgKiAoKG4gKyAxKSAtIHRpZVRlcm0gLyAobiogKG4gLSAxKSkpKTtcblxuICBsZXQgbnVtZXJhdG9yID0gVSAtIG11O1xuXG4gIGlmIChjb250aW51aXR5KSB7XG4gICAgbnVtZXJhdG9yIC09IDAuNTtcbiAgfVxuXG4gIGNvbnN0IHogPSBudW1lcmF0b3IgLyBzO1xuXG4gIGNvbnN0IHAgPSAyICogKDEgLSBqU3RhdC5ub3JtYWwuY2RmKHosIDAsIDEpKTtcblxuICByZXR1cm4geydwLXZhbHVlJzogcCwgJ01lZGlhbiBkaWZmZXJlbmNlJzogbWVkMSAtIG1lZDIsICdwLXZhbHVlIG1vcmUnOiBwLCAncC12YWx1ZSBsZXNzJzogcH07XG59XG5cbmZ1bmN0aW9uIF90aWVUZXJtKHJhbmtzOiBudW1iZXJbXSk6IG51bWJlciB7XG4gIGNvbnN0IHRpZXM6IHtba2V5OiBudW1iZXJdOiBudW1iZXJ9ID0ge307XG5cbiAgcmFua3MuZm9yRWFjaCgobnVtKSA9PiB7XG4gICAgdGllc1tudW1dID0gKHRpZXNbbnVtXSB8fCAwKSArIDE7XG4gIH0pO1xuXG4gIHJldHVybiBqU3RhdC5zdW0oT2JqZWN0LnZhbHVlcyh0aWVzKSk7XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFZL0IsTUFBTSxVQUFVLEtBQUssQ0FBQyxJQUFnQixFQUFFLElBQWdCLEVBQUUsUUFBUSxHQUFDLEtBQUssRUFBRSxRQUFRLEdBQUMsS0FBSztJQUN0RixNQUFNLEVBQUUsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sRUFBRSxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsTUFBTSxFQUFFLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLEVBQUUsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV2QixJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxFQUFFLENBQUM7SUFDUCxJQUFJLENBQUMsQ0FBQztJQUNOLElBQUksQ0FBQyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLEtBQUssQ0FBQztJQUNWLElBQUksSUFBSSxDQUFDO0lBRVQsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNkLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2QsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0UsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVwRCxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVDO0tBQ0Y7U0FBTTtRQUNMLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2QsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUM7SUFDRCxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBQyxDQUFDO0FBQ3JHLENBQUM7QUFFRCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQVcsRUFBRSxDQUFXLEVBQUUsVUFBVSxHQUFDLElBQUk7SUFDN0QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0IsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFFbEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdkUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUV2QixJQUFJLFVBQVUsRUFBRTtRQUNkLFNBQVMsSUFBSSxHQUFHLENBQUM7S0FDbEI7SUFFRCxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBZTtJQUMvQixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBRXpDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9AdHMtaWdub3JlOiBubyB0eXBlc1xuaW1wb3J0ICogYXMgalN0YXQgZnJvbSAnanN0YXQnO1xuXG50eXBlIHRlc3RTdGF0cyA9IHtcbiAgJ3AtdmFsdWUnOiBudW1iZXIsXG4gICdNZWFuIGRpZmZlcmVuY2UnPzogbnVtYmVyLFxuICAnTWVkaWFuIGRpZmZlcmVuY2UnPzogbnVtYmVyLFxuICAncC12YWx1ZSBtb3JlJzogbnVtYmVyLFxuICAncC12YWx1ZSBsZXNzJzogbnVtYmVyLFxufTtcblxudHlwZSBQb3B1bGF0aW9uID0gbnVtYmVyW10gfCBGbG9hdDMyQXJyYXkgfCBJbnQzMkFycmF5O1xuXG5leHBvcnQgZnVuY3Rpb24gdFRlc3QoYXJyMTogUG9wdWxhdGlvbiwgYXJyMjogUG9wdWxhdGlvbiwgZGV2S25vd249ZmFsc2UsIGRldkVxdWFsPWZhbHNlKTogdGVzdFN0YXRzIHtcbiAgY29uc3QgbTE6IG51bWJlciA9IGpTdGF0Lm1lYW4oYXJyMSk7XG4gIGNvbnN0IG0yOiBudW1iZXIgPSBqU3RhdC5tZWFuKGFycjIpO1xuICBjb25zdCB2MTogbnVtYmVyID0galN0YXQudmFyaWFuY2UoYXJyMSk7XG4gIGNvbnN0IHYyOiBudW1iZXIgPSBqU3RhdC52YXJpYW5jZShhcnIyKTtcbiAgY29uc3QgbjEgPSBhcnIxLmxlbmd0aDtcbiAgY29uc3QgbjIgPSBhcnIyLmxlbmd0aDtcblxuICBsZXQgd3YxO1xuICBsZXQgd3YyO1xuICBsZXQgd3Y7XG4gIGxldCBaO1xuICBsZXQgSztcbiAgbGV0IHBNb3JlO1xuICBsZXQgcExlc3M7XG4gIGxldCBwVG90O1xuXG4gIGlmICghZGV2S25vd24pIHtcbiAgICBpZiAoIWRldkVxdWFsKSB7XG4gICAgICB3djEgPSB2MSAvIG4xO1xuICAgICAgd3YyID0gdjIgLyBuMjtcbiAgICAgIFogPSAobTEgLSBtMikgLyBNYXRoLnNxcnQod3YxICsgd3YyKTtcbiAgICAgIEsgPSBNYXRoLnBvdygod3YxICsgd3YyKSwgMikgLyAod3YxICogd3YxIC8gKG4xIC0gMSkgKyB3djIgKiB3djIgLyAobjIgLSAxKSk7XG5cbiAgICAgIHBMZXNzID0galN0YXQuc3R1ZGVudHQuY2RmKFosIEspO1xuICAgICAgcE1vcmUgPSAxIC0gcExlc3M7XG4gICAgICBwVG90ID0gMiAqIChwTGVzcyA8IHBNb3JlID8gcExlc3MgOiBwTW9yZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEsgPSBuMSArIG4yIC0gMjtcbiAgICAgIHd2ID0gKHYxICogKG4xIC0gMSkgKyB2MiAqIChuMiAtIDEpKSAvIEs7XG4gICAgICBaID0gTWF0aC5zcXJ0KG4xICogbjIgLyAobjEgKyBuMikpICogKG0xIC0gbTIpIC8gd3Y7XG5cbiAgICAgIHBNb3JlID0gMSAtIGpTdGF0LnN0dWRlbnR0LmNkZihaLCBLKTtcbiAgICAgIHBMZXNzID0galN0YXQuc3R1ZGVudHQuY2RmKFosIEspO1xuICAgICAgcFRvdCA9IDIgKiAocExlc3MgPCBwTW9yZSA/IHBMZXNzIDogcE1vcmUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3djEgPSB2MSAvIG4xO1xuICAgIHd2MiA9IHYyIC8gbjI7XG4gICAgWiA9IChtMSAtIG0yKSAvIE1hdGguc3FydCh3djEgKyB3djIpO1xuXG4gICAgcExlc3MgPSBqU3RhdC5ub3JtYWwucGRmKFosIDAsIDEpO1xuICAgIHBNb3JlID0gMSAtIHBMZXNzO1xuICAgIHBUb3QgPSAyICogKHBMZXNzIDwgcE1vcmUgPyBwTGVzcyA6IHBNb3JlKTtcbiAgfVxuICByZXR1cm4geydwLXZhbHVlJzogcFRvdCwgJ01lYW4gZGlmZmVyZW5jZSc6IG0xIC0gbTIsICdwLXZhbHVlIG1vcmUnOiBwTW9yZSwgJ3AtdmFsdWUgbGVzcyc6IHBMZXNzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVUZXN0KHg6IG51bWJlcltdLCB5OiBudW1iZXJbXSwgY29udGludWl0eT10cnVlKTogdGVzdFN0YXRzIHtcbiAgY29uc3QgeHkgPSB4LmNvbmNhdCh5KTtcbiAgY29uc3QgbjEgPSB4Lmxlbmd0aDtcbiAgY29uc3QgbjIgPSB5Lmxlbmd0aDtcbiAgY29uc3QgbWVkMSA9IGpTdGF0Lm1lZGlhbih4KTtcbiAgY29uc3QgbWVkMiA9IGpTdGF0Lm1lZGlhbih5KTtcblxuICBjb25zdCByYW5rcyA9IGpTdGF0LnJhbmsoeHkpO1xuXG4gIGNvbnN0IFIxID0galN0YXQuc3VtKHJhbmtzLnNsaWNlKDAsIG4xKSk7XG4gIGNvbnN0IFUxID0gUjEgLSBuMSAqIChuMSArIDEpIC8gMjtcbiAgY29uc3QgVTIgPSBuMSAqIG4yIC0gVTE7XG4gIGNvbnN0IFUgPSBVMSA+IFUyID8gVTEgOiBVMjtcblxuICBjb25zdCBtdSA9IG4xICogbjIgLyAyO1xuICBjb25zdCBuID0gbjEgKyBuMjtcblxuICBjb25zdCB0aWVUZXJtID0gX3RpZVRlcm0ocmFua3MpO1xuICBjb25zdCBzID0gTWF0aC5zcXJ0KG4xICogbjIgLyAxMiAqICgobiArIDEpIC0gdGllVGVybSAvIChuKiAobiAtIDEpKSkpO1xuXG4gIGxldCBudW1lcmF0b3IgPSBVIC0gbXU7XG5cbiAgaWYgKGNvbnRpbnVpdHkpIHtcbiAgICBudW1lcmF0b3IgLT0gMC41O1xuICB9XG5cbiAgY29uc3QgeiA9IG51bWVyYXRvciAvIHM7XG5cbiAgY29uc3QgcCA9IDIgKiAoMSAtIGpTdGF0Lm5vcm1hbC5jZGYoeiwgMCwgMSkpO1xuXG4gIHJldHVybiB7J3AtdmFsdWUnOiBwLCAnTWVkaWFuIGRpZmZlcmVuY2UnOiBtZWQxIC0gbWVkMiwgJ3AtdmFsdWUgbW9yZSc6IHAsICdwLXZhbHVlIGxlc3MnOiBwfTtcbn1cblxuZnVuY3Rpb24gX3RpZVRlcm0ocmFua3M6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgY29uc3QgdGllczoge1trZXk6IG51bWJlcl06IG51bWJlcn0gPSB7fTtcblxuICByYW5rcy5mb3JFYWNoKChudW0pID0+IHtcbiAgICB0aWVzW251bV0gPSAodGllc1tudW1dIHx8IDApICsgMTtcbiAgfSk7XG5cbiAgcmV0dXJuIGpTdGF0LnN1bShPYmplY3QudmFsdWVzKHRpZXMpKTtcbn1cbiJdfQ==