@kepler.gl/utils 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application-config-types.d.ts +13 -0
- package/dist/application-config-types.js +6 -0
- package/dist/application-config.d.ts +6 -3
- package/dist/application-config.js +4 -2
- package/dist/data-scale-utils.js +4 -4
- package/dist/data-utils.d.ts +9 -3
- package/dist/data-utils.js +40 -7
- package/dist/dataset-utils.js +26 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/indexed-data-container.d.ts +2 -2
- package/dist/indexed-data-container.js +1 -1
- package/dist/map-style-utils/mapbox-utils.d.ts +1 -1
- package/dist/map-style-utils/mapbox-utils.js +3 -3
- package/dist/plot.d.ts +2 -2
- package/dist/plot.js +6 -6
- package/dist/utils.js +1 -1
- package/package.json +6 -4
package/dist/data-utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -29,6 +30,7 @@ exports.reverseFormatNumber = reverseFormatNumber;
|
|
|
29
30
|
exports.roundToFour = roundToFour;
|
|
30
31
|
exports.roundValToStep = roundValToStep;
|
|
31
32
|
exports.timeToUnixMilli = timeToUnixMilli;
|
|
33
|
+
exports.uint8ArrayToHex = uint8ArrayToHex;
|
|
32
34
|
exports.unique = unique;
|
|
33
35
|
exports.validateCoordinate = validateCoordinate;
|
|
34
36
|
exports.validateLatitude = validateLatitude;
|
|
@@ -36,16 +38,20 @@ exports.validateLongitude = validateLongitude;
|
|
|
36
38
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
37
39
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
38
40
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
41
|
+
var arrow = _interopRequireWildcard(require("apache-arrow"));
|
|
39
42
|
var _assert = _interopRequireDefault(require("assert"));
|
|
40
43
|
var _d3Format = require("d3-format");
|
|
41
44
|
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
45
|
+
var _arrow = require("@loaders.gl/arrow");
|
|
42
46
|
var _constants = require("@kepler.gl/constants");
|
|
43
47
|
var _commonUtils = require("@kepler.gl/common-utils");
|
|
44
48
|
var _plot = require("./plot");
|
|
45
49
|
var _utils = require("./utils");
|
|
46
50
|
var _FIELD_DISPLAY_FORMAT; // SPDX-License-Identifier: MIT
|
|
47
51
|
// Copyright contributors to the kepler.gl project
|
|
48
|
-
|
|
52
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
53
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
54
|
+
// We need threat latitude differently otherwise mercator project view throws
|
|
49
55
|
// a projection matrix error
|
|
50
56
|
// Uncaught Error: Pixel project matrix not invertible
|
|
51
57
|
// at WebMercatorViewport16.Viewport6 (viewport.js:81:13)
|
|
@@ -288,22 +294,49 @@ var defaultFormatter = exports.defaultFormatter = function defaultFormatter(v) {
|
|
|
288
294
|
var floatFormatter = exports.floatFormatter = function floatFormatter(v) {
|
|
289
295
|
return isNumber(v) ? String(roundToFour(v)) : '';
|
|
290
296
|
};
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Transforms a WKB in Uint8Array form into a hex WKB string.
|
|
300
|
+
* @param uint8Array WKB in Uint8Array form.
|
|
301
|
+
* @returns hex WKB string.
|
|
302
|
+
*/
|
|
303
|
+
function uint8ArrayToHex(data) {
|
|
304
|
+
return Array.from(data).map(function (_byte) {
|
|
305
|
+
return _byte.toString(16).padStart(2, '0');
|
|
306
|
+
}).join('');
|
|
307
|
+
}
|
|
291
308
|
var FIELD_DISPLAY_FORMAT = exports.FIELD_DISPLAY_FORMAT = (_FIELD_DISPLAY_FORMAT = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.string, defaultFormatter), _constants.ALL_FIELD_TYPES.timestamp, defaultFormatter), _constants.ALL_FIELD_TYPES.integer, defaultFormatter), _constants.ALL_FIELD_TYPES.real, defaultFormatter), _constants.ALL_FIELD_TYPES["boolean"], defaultFormatter), _constants.ALL_FIELD_TYPES.date, defaultFormatter), _constants.ALL_FIELD_TYPES.geojson, function (d) {
|
|
292
309
|
return typeof d === 'string' ? d : (0, _utils.isPlainObject)(d) ? JSON.stringify(d) : Array.isArray(d) ? "[".concat(String(d), "]") : '';
|
|
293
|
-
}), _constants.ALL_FIELD_TYPES.geoarrow, function (
|
|
294
|
-
|
|
310
|
+
}), _constants.ALL_FIELD_TYPES.geoarrow, function (data, field) {
|
|
311
|
+
if (data instanceof arrow.Vector) {
|
|
312
|
+
try {
|
|
313
|
+
var _field$metadata;
|
|
314
|
+
var encoding = field === null || field === void 0 || (_field$metadata = field.metadata) === null || _field$metadata === void 0 ? void 0 : _field$metadata.get('ARROW:extension:name');
|
|
315
|
+
if (encoding) {
|
|
316
|
+
var geometry = (0, _arrow.parseGeometryFromArrow)(data, encoding);
|
|
317
|
+
return JSON.stringify(geometry);
|
|
318
|
+
}
|
|
319
|
+
} catch (error) {
|
|
320
|
+
// ignore for now
|
|
321
|
+
}
|
|
322
|
+
} else if (data instanceof Uint8Array) {
|
|
323
|
+
return uint8ArrayToHex(data);
|
|
324
|
+
}
|
|
325
|
+
return data;
|
|
295
326
|
}), _constants.ALL_FIELD_TYPES.object, function (value) {
|
|
296
327
|
try {
|
|
297
328
|
return JSON.stringify(value);
|
|
298
329
|
} catch (e) {
|
|
299
330
|
return String(value);
|
|
300
331
|
}
|
|
301
|
-
}), _constants.ALL_FIELD_TYPES.array,
|
|
332
|
+
}), _constants.ALL_FIELD_TYPES.array, function (d) {
|
|
333
|
+
return JSON.stringify(d);
|
|
334
|
+
}), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.h3, defaultFormatter));
|
|
302
335
|
|
|
303
336
|
/**
|
|
304
337
|
* Parse field value and type and return a string representation
|
|
305
338
|
*/
|
|
306
|
-
var parseFieldValue = exports.parseFieldValue = function parseFieldValue(value, type) {
|
|
339
|
+
var parseFieldValue = exports.parseFieldValue = function parseFieldValue(value, type, field) {
|
|
307
340
|
if (!(0, _commonUtils.notNullorUndefined)(value)) {
|
|
308
341
|
return '';
|
|
309
342
|
}
|
|
@@ -313,7 +346,7 @@ var parseFieldValue = exports.parseFieldValue = function parseFieldValue(value,
|
|
|
313
346
|
if (typeof value === 'bigint') {
|
|
314
347
|
return value.toString();
|
|
315
348
|
}
|
|
316
|
-
return FIELD_DISPLAY_FORMAT[type] ? FIELD_DISPLAY_FORMAT[type](value) : String(value);
|
|
349
|
+
return FIELD_DISPLAY_FORMAT[type] ? FIELD_DISPLAY_FORMAT[type](value, field) : String(value);
|
|
317
350
|
};
|
|
318
351
|
|
|
319
352
|
/**
|
|
@@ -498,4 +531,4 @@ function datetimeFormatter(timezone) {
|
|
|
498
531
|
};
|
|
499
532
|
};
|
|
500
533
|
}
|
|
501
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNGb3JtYXQiLCJfbW9tZW50VGltZXpvbmUiLCJfY29uc3RhbnRzIiwiX2NvbW1vblV0aWxzIiwiX3Bsb3QiLCJfdXRpbHMiLCJfRklFTERfRElTUExBWV9GT1JNQVQiLCJNQVhfTEFUSVRVREUiLCJleHBvcnRzIiwiTUlOX0xBVElUVURFIiwiTUFYX0xPTkdJVFVERSIsIk1JTl9MT05HSVRVREUiLCJ2YWxpZGF0ZUxhdGl0dWRlIiwibGF0aXR1ZGUiLCJ2YWxpZGF0ZUNvb3JkaW5hdGUiLCJ2YWxpZGF0ZUxvbmdpdHVkZSIsImxvbmdpdHVkZSIsInZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsInVuaXF1ZSIsInZhbHVlcyIsInJlc3VsdHMiLCJ1bmlxdWVTZXQiLCJTZXQiLCJmb3JFYWNoIiwidiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInB1c2giLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiTnVtYmVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImxlbmd0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJjbGFtcCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsInZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldFNhbXBsZURhdGEiLCJkYXRhIiwic2FtcGxlU2l6ZSIsImdldFZhbHVlIiwic2FtcGxlU3RlcCIsImZsb29yIiwib3V0cHV0IiwiaSIsInRpbWVUb1VuaXhNaWxsaSIsImZvcm1hdCIsIm1vbWVudCIsInV0YyIsInZhbHVlT2YiLCJEYXRlIiwiaXNOdW1iZXIiLCJoYXNPd25Qcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiYSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwidCIsInBvdyIsInJvdW5kIiwic2lnbiIsInRvRml4ZWQiLCJyb3VuZFRvRm91ciIsImNvbmNhdCIsImdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwIiwic3RlcCIsImlzTmFOIiwiYXNzZXJ0Iiwic3RlcFN0ciIsInRvU3RyaW5nIiwic3BsaXRFeHBvbmVudGlhbCIsInNwbGl0IiwiY29lZmZaZXJvIiwiY29lZmZEZWNpbWFsIiwicGFyc2VJbnQiLCJzcGxpdFplcm8iLCJub3JtYWxpemVTbGlkZXJWYWx1ZSIsIm1hcmtzIiwic25hcFRvTWFya3MiLCJyb3VuZFZhbFRvU3RlcCIsImRlY2ltYWwiLCJzdGVwcyIsInJlbWFpbiIsImNsb3Nlc3QiLCJyb3VuZGVkIiwiZGVmYXVsdEZvcm1hdHRlciIsIlN0cmluZyIsImZsb2F0Rm9ybWF0dGVyIiwiRklFTERfRElTUExBWV9GT1JNQVQiLCJfZGVmaW5lUHJvcGVydHkyIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJpc1BsYWluT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsImdlb2Fycm93Iiwib2JqZWN0IiwiZSIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwiZmllbGQiLCJ0b29sdGlwRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRTIiwiZmluZCIsImYiLCJUT09MVElQX0tFWSIsImFwcGx5RGVmYXVsdEZvcm1hdCIsImFwcGx5Q3VzdG9tRm9ybWF0IiwiZ2V0Q29sdW1uRm9ybWF0dGVyIiwiZGlzcGxheUZvcm1hdCIsIl90eXBlb2YyIiwiYXBwbHlWYWx1ZU1hcCIsIlRPT0xUSVBfRk9STUFUX1RZUEVTIiwiREVDSU1BTCIsImQzRm9ybWF0IiwiREFURSIsIkRBVEVfVElNRSIsImRhdGV0aW1lRm9ybWF0dGVyIiwiUEVSQ0VOVEFHRSIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yIiwiQk9PTEVBTiIsImdldEJvb2xlYW5Gb3JtYXR0ZXIiLCJmb3JtYXRMYXJnZU51bWJlciIsIm4iLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVMsXG4gIFRPT0xUSVBfS0VZLFxuICBUb29sdGlwRm9ybWF0XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0ZpZWxkLCBNaWxsaXNlY29uZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtYXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0RJU1BMQVlfRk9STUFUOiB7XG4gIFtrZXk6IHN0cmluZ106IEZpZWxkRm9ybWF0dGVyO1xufSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IGQgPT5cbiAgICB0eXBlb2YgZCA9PT0gJ3N0cmluZydcbiAgICAgID8gZFxuICAgICAgOiBpc1BsYWluT2JqZWN0KGQpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZClcbiAgICAgID8gYFske1N0cmluZyhkKX1dYFxuICAgICAgOiAnJyxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IGQgPT4gZCxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IEpTT04uc3RyaW5naWZ5LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXTogZGVmYXVsdEZvcm1hdHRlclxufTtcblxuLyoqXG4gKiBQYXJzZSBmaWVsZCB2YWx1ZSBhbmQgdHlwZSBhbmQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUZpZWxkVmFsdWUgPSAodmFsdWU6IGFueSwgdHlwZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIC8vIEJpZ0ludCB2YWx1ZXMgY2Fubm90IGJlIHNlcmlhbGl6ZWQgd2l0aCBKU09OLnN0cmluZ2lmeSgpIGRpcmVjdGx5XG4gIC8vIFdlIG5lZWQgdG8gZXhwbGljaXRseSBjb252ZXJ0IHRoZW0gdG8gc3RyaW5ncyB1c2luZyAudG9TdHJpbmcoKVxuICAvLyBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0JpZ0ludCN1c2Vfd2l0aGluX2pzb25cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0gPyBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFB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
|
|
534
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9hc3NlcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2QzRm9ybWF0IiwiX21vbWVudFRpbWV6b25lIiwiX2Fycm93IiwiX2NvbnN0YW50cyIsIl9jb21tb25VdGlscyIsIl9wbG90IiwiX3V0aWxzIiwiX0ZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIk1BWF9MQVRJVFVERSIsImV4cG9ydHMiLCJNSU5fTEFUSVRVREUiLCJNQVhfTE9OR0lUVURFIiwiTUlOX0xPTkdJVFVERSIsInZhbGlkYXRlTGF0aXR1ZGUiLCJsYXRpdHVkZSIsInZhbGlkYXRlQ29vcmRpbmF0ZSIsInZhbGlkYXRlTG9uZ2l0dWRlIiwibG9uZ2l0dWRlIiwidmFsdWUiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwidW5pcXVlIiwidmFsdWVzIiwicmVzdWx0cyIsInVuaXF1ZVNldCIsIlNldCIsImZvckVhY2giLCJ2Iiwibm90TnVsbG9yVW5kZWZpbmVkIiwicHVzaCIsImdldExhdExuZ0JvdW5kcyIsInBvaW50cyIsImlkeCIsImxpbWl0IiwibGF0cyIsIm1hcCIsImQiLCJOdW1iZXIiLCJBcnJheSIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc0Zpbml0ZSIsInNvcnQiLCJudW1iZXJTb3J0IiwibGVuZ3RoIiwiTWF0aCIsIm1heCIsIm1pbiIsImNsYW1wIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwidmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U2FtcGxlRGF0YSIsImRhdGEiLCJzYW1wbGVTaXplIiwiZ2V0VmFsdWUiLCJzYW1wbGVTdGVwIiwiZmxvb3IiLCJvdXRwdXQiLCJ0aW1lVG9Vbml4TWlsbGkiLCJmb3JtYXQiLCJtb21lbnQiLCJ1dGMiLCJ2YWx1ZU9mIiwiRGF0ZSIsImlzTnVtYmVyIiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwicG93Iiwicm91bmQiLCJzaWduIiwidG9GaXhlZCIsInJvdW5kVG9Gb3VyIiwiY29uY2F0IiwiZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAiLCJzdGVwIiwiaXNOYU4iLCJhc3NlcnQiLCJzdGVwU3RyIiwidG9TdHJpbmciLCJzcGxpdEV4cG9uZW50aWFsIiwic3BsaXQiLCJjb2VmZlplcm8iLCJjb2VmZkRlY2ltYWwiLCJwYXJzZUludCIsInNwbGl0WmVybyIsIm5vcm1hbGl6ZVNsaWRlclZhbHVlIiwibWFya3MiLCJzbmFwVG9NYXJrcyIsInJvdW5kVmFsVG9TdGVwIiwiZGVjaW1hbCIsInN0ZXBzIiwicmVtYWluIiwiY2xvc2VzdCIsInJvdW5kZWQiLCJkZWZhdWx0Rm9ybWF0dGVyIiwiU3RyaW5nIiwiZmxvYXRGb3JtYXR0ZXIiLCJ1aW50OEFycmF5VG9IZXgiLCJmcm9tIiwiYnl0ZSIsInBhZFN0YXJ0Iiwiam9pbiIsIkZJRUxEX0RJU1BMQVlfRk9STUFUIiwiX2RlZmluZVByb3BlcnR5MiIsInN0cmluZyIsImRhdGUiLCJnZW9qc29uIiwiaXNQbGFpbk9iamVjdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZW9hcnJvdyIsImZpZWxkIiwiVmVjdG9yIiwiX2ZpZWxkJG1ldGFkYXRhIiwiZW5jb2RpbmciLCJtZXRhZGF0YSIsImdlb21ldHJ5IiwicGFyc2VHZW9tZXRyeUZyb21BcnJvdyIsImVycm9yIiwiVWludDhBcnJheSIsIm9iamVjdCIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwidG9vbHRpcEZvcm1hdCIsIlRPT0xUSVBfRk9STUFUUyIsImZpbmQiLCJmIiwiVE9PTFRJUF9LRVkiLCJhcHBseURlZmF1bHRGb3JtYXQiLCJhcHBseUN1c3RvbUZvcm1hdCIsImdldENvbHVtbkZvcm1hdHRlciIsImRpc3BsYXlGb3JtYXQiLCJfdHlwZW9mMiIsImFwcGx5VmFsdWVNYXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRFQ0lNQUwiLCJkM0Zvcm1hdCIsIkRBVEUiLCJEQVRFX1RJTUUiLCJkYXRldGltZUZvcm1hdHRlciIsIlBFUkNFTlRBR0UiLCJERUNJTUFMX0RFQ0lNQUxfRklYRURfMiIsIkJPT0xFQU4iLCJnZXRCb29sZWFuRm9ybWF0dGVyIiwiZm9ybWF0TGFyZ2VOdW1iZXIiLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge2Zvcm1hdCBhcyBkM0Zvcm1hdH0gZnJvbSAnZDMtZm9ybWF0JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcblxuaW1wb3J0IHtwYXJzZUdlb21ldHJ5RnJvbUFycm93fSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0ZPUk1BVF9UWVBFUyxcbiAgVE9PTFRJUF9LRVksXG4gIFRvb2x0aXBGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RmllbGQsIE1pbGxpc2Vjb25kLCBQcm90b0RhdGFzZXRGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55LCBmaWVsZD86IFByb3RvRGF0YXNldEZpZWxkKSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtZXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm1zIGEgV0tCIGluIFVpbnQ4QXJyYXkgZm9ybSBpbnRvIGEgaGV4IFdLQiBzdHJpbmcuXG4gKiBAcGFyYW0gdWludDhBcnJheSBXS0IgaW4gVWludDhBcnJheSBmb3JtLlxuICogQHJldHVybnMgaGV4IFdLQiBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aW50OEFycmF5VG9IZXgoZGF0YTogVWludDhBcnJheSk6IHN0cmluZyB7XG4gIHJldHVybiBBcnJheS5mcm9tKGRhdGEpXG4gICAgLm1hcChieXRlID0+IChieXRlIGFzIGFueSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpXG4gICAgLmpvaW4oJycpO1xufVxuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XTogKGRhdGEsIGZpZWxkKSA9PiB7XG4gICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBhcnJvdy5WZWN0b3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZmllbGQ/Lm1ldGFkYXRhPy5nZXQoJ0FSUk9XOmV4dGVuc2lvbjpuYW1lJyk7XG4gICAgICAgIGlmIChlbmNvZGluZykge1xuICAgICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gcGFyc2VHZW9tZXRyeUZyb21BcnJvdyhkYXRhLCBlbmNvZGluZyk7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGdlb21ldHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gaWdub3JlIGZvciBub3dcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gdWludDhBcnJheVRvSGV4KGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IGQgPT4gSlNPTi5zdHJpbmdpZnkoZCksXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiBkZWZhdWx0Rm9ybWF0dGVyXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcsIGZpZWxkPzogRmllbGQpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgLy8gQmlnSW50IHZhbHVlcyBjYW5ub3QgYmUgc2VyaWFsaXplZCB3aXRoIEpTT04uc3RyaW5naWZ5KCkgZGlyZWN0bHlcbiAgLy8gV2UgbmVlZCB0byBleHBsaWNpdGx5IGNvbnZlcnQgdGhlbSB0byBzdHJpbmdzIHVzaW5nIC50b1N0cmluZygpXG4gIC8vIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQmlnSW50I3VzZV93aXRoaW5fanNvblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSA/IEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdKHZhbHVlLCBmaWVsZCkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFHQSxJQUFBUSxLQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxNQUFBLEdBQUFULE9BQUE7QUFBc0MsSUFBQVUscUJBQUEsRUFyQnRDO0FBQ0E7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQWIsd0JBQUFhLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssUUFBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFB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
|
package/dist/dataset-utils.js
CHANGED
|
@@ -113,7 +113,7 @@ function findDefaultColorField(_ref) {
|
|
|
113
113
|
_ref$fieldPairs = _ref.fieldPairs,
|
|
114
114
|
fieldPairs = _ref$fieldPairs === void 0 ? [] : _ref$fieldPairs;
|
|
115
115
|
var fieldsWithoutExcluded = fields.filter(function (field) {
|
|
116
|
-
if (field.type !== _constants.ALL_FIELD_TYPES.real
|
|
116
|
+
if (field.type !== _constants.ALL_FIELD_TYPES.real) {
|
|
117
117
|
// Only select numeric fields.
|
|
118
118
|
return false;
|
|
119
119
|
}
|
|
@@ -189,8 +189,8 @@ function validateInputData(data) {
|
|
|
189
189
|
} else if (!Array.isArray(data.fields)) {
|
|
190
190
|
(0, _assert["default"])('addDataToMap Error: expect dataset.data.fields to be an array');
|
|
191
191
|
return null;
|
|
192
|
-
} else if (!Array.isArray(data.rows)) {
|
|
193
|
-
(0, _assert["default"])('addDataToMap Error: expect dataset.data.rows to be an array');
|
|
192
|
+
} else if (!Array.isArray(data.rows) && !Array.isArray(data.cols)) {
|
|
193
|
+
(0, _assert["default"])('addDataToMap Error: expect dataset.data.rows or cols to be an array');
|
|
194
194
|
return null;
|
|
195
195
|
}
|
|
196
196
|
var fields = data.fields,
|
|
@@ -215,16 +215,14 @@ function validateInputData(data) {
|
|
|
215
215
|
(0, _assert["default"])("unknown field type ".concat(f.type));
|
|
216
216
|
return false;
|
|
217
217
|
}
|
|
218
|
-
if (!
|
|
219
|
-
|
|
220
|
-
})) {
|
|
221
|
-
(0, _assert["default"])('field missing analyzerType');
|
|
218
|
+
if (!f.analyzerType) {
|
|
219
|
+
(0, _assert["default"])("field ".concat(i, " missing analyzerType"));
|
|
222
220
|
return false;
|
|
223
221
|
}
|
|
224
222
|
|
|
225
223
|
// check time format is correct based on first 10 not empty element
|
|
226
224
|
if (f.type === _constants.ALL_FIELD_TYPES.timestamp) {
|
|
227
|
-
var sample = findNonEmptyRowsAtField(rows, i, 10).map(function (r) {
|
|
225
|
+
var sample = (cols ? findNonEmptyRowsAtFieldArrow(cols, i, 10) : findNonEmptyRowsAtField(rows, i, 10)).map(function (r) {
|
|
228
226
|
return {
|
|
229
227
|
ts: r[i]
|
|
230
228
|
};
|
|
@@ -235,7 +233,7 @@ function validateInputData(data) {
|
|
|
235
233
|
|
|
236
234
|
// check existing string field is H3 type
|
|
237
235
|
if (f.type === _constants.ALL_FIELD_TYPES.string) {
|
|
238
|
-
var _sample = findNonEmptyRowsAtField(rows, i, 10).map(function (r) {
|
|
236
|
+
var _sample = (cols ? findNonEmptyRowsAtFieldArrow(cols, i, 10) : findNonEmptyRowsAtField(rows, i, 10)).map(function (r) {
|
|
239
237
|
return r[i];
|
|
240
238
|
});
|
|
241
239
|
return _sample.every(function (item) {
|
|
@@ -254,7 +252,9 @@ function validateInputData(data) {
|
|
|
254
252
|
|
|
255
253
|
// if any field has missing type, recalculate it for everyone
|
|
256
254
|
// because we simply lost faith in humanity
|
|
257
|
-
var sampleData = (0, _commonUtils.
|
|
255
|
+
var sampleData = cols ? (0, _commonUtils.getSampleForTypeAnalyzeArrow)(cols, fields.map(function (f) {
|
|
256
|
+
return f.name;
|
|
257
|
+
})) : (0, _commonUtils.getSampleForTypeAnalyze)({
|
|
258
258
|
fields: fields.map(function (f) {
|
|
259
259
|
return f.name;
|
|
260
260
|
}),
|
|
@@ -290,6 +290,21 @@ function findNonEmptyRowsAtField(rows, fieldIdx, total) {
|
|
|
290
290
|
}
|
|
291
291
|
return sample;
|
|
292
292
|
}
|
|
293
|
+
function findNonEmptyRowsAtFieldArrow(cols, fieldIdx, total) {
|
|
294
|
+
var sample = [];
|
|
295
|
+
var numRows = cols[fieldIdx].length;
|
|
296
|
+
var i = 0;
|
|
297
|
+
while (sample.length < total && i < numRows) {
|
|
298
|
+
if ((0, _commonUtils.notNullorUndefined)(cols[fieldIdx].get(i))) {
|
|
299
|
+
var row = cols.map(function (col) {
|
|
300
|
+
return col.get(i);
|
|
301
|
+
});
|
|
302
|
+
sample.push(row);
|
|
303
|
+
}
|
|
304
|
+
i++;
|
|
305
|
+
}
|
|
306
|
+
return sample;
|
|
307
|
+
}
|
|
293
308
|
var TIME_DISPLAY = '2020-05-11 14:00';
|
|
294
309
|
var addTimeLabel = exports.addTimeLabel = function addTimeLabel(formats) {
|
|
295
310
|
return formats.map(function (f) {
|
|
@@ -312,4 +327,4 @@ var getFormatLabels = exports.getFormatLabels = function getFormatLabels(fields,
|
|
|
312
327
|
})) === null || _fields$find === void 0 ? void 0 : _fields$find.type;
|
|
313
328
|
return getFieldFormatLabels(fieldType);
|
|
314
329
|
};
|
|
315
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9jb21tb25VdGlscyIsIl90eXBlQW5hbHl6ZXIiLCJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9tYXJrZWQiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiZ2VuZXJhdGVDb2xvciIsImRhdGFzZXRDb2xvcnMiLCJtYXAiLCJoZXhUb1JnYiIsImluZGV4Iiwid3JhcCIsImdlbmVyYXRlQ29sb3IkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJkYXRhc2V0Q29sb3JNYWtlciIsImV4cG9ydHMiLCJFWENMVURFRF9ERUZBVUxUX0ZJRUxEUyIsIk1FVFJJQ19ERUZBVUxUX0ZJRUxEUyIsImZpbmREZWZhdWx0Q29sb3JGaWVsZCIsIl9yZWYiLCJmaWVsZHMiLCJfcmVmJGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiZmllbGRzV2l0aG91dEV4Y2x1ZGVkIiwiZmllbGQiLCJ0eXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwicmVhbCIsImludGVnZXIiLCJmaW5kIiwicGFpciIsImxhdCIsInZhbHVlIiwibmFtZSIsImxuZyIsIm5vcm1hbGl6ZWRGaWVsZE5hbWUiLCJ0b0xvd2VyQ2FzZSIsImhhc0V4Y2x1ZGVkIiwiZiIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsImhhc0luY2x1c2lvbiIsInNvcnRlZEZpZWxkcyIsInNvcnQiLCJsZWZ0IiwicmlnaHQiLCJub3JtYWxpemVkTGVmdCIsIm5vcm1hbGl6ZWRSaWdodCIsImxlZnRIYXNJbmNsdXNpb24iLCJmaW5kSW5kZXgiLCJyaWdodEhhc0luY2x1c2lvbiIsInZhbGlkYXRlSW5wdXREYXRhIiwiZGF0YSIsImlzUGxhaW5PYmplY3QiLCJhc3NlcnQiLCJBcnJheSIsImlzQXJyYXkiLCJyb3dzIiwiY29scyIsImFsbFZhbGlkIiwiZXZlcnkiLCJpIiwiY29uY2F0IiwiX3R5cGVvZjIiLCJzdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiYW5hbHl6ZXJUeXBlIiwidGltZXN0YW1wIiwic2FtcGxlIiwiZmluZE5vbkVtcHR5Um93c0F0RmllbGQiLCJ0cyIsImFuYWx5emVkVHlwZSIsIkFuYWx5emVyIiwiY29tcHV0ZUNvbE1ldGEiLCJjYXRlZ29yeSIsImZvcm1hdCIsIml0ZW0iLCJoM0lzVmFsaWQiLCJzYW1wbGVEYXRhIiwiZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUiLCJmaWVsZE9yZGVyIiwibWV0YSIsImdldEZpZWxkc0Zyb21EYXRhIiwidXBkYXRlZEZpZWxkcyIsImZpZWxkSWR4IiwidG90YWwiLCJfcm93cyRpIiwibm90TnVsbG9yVW5kZWZpbmVkIiwiVElNRV9ESVNQTEFZIiwiYWRkVGltZUxhYmVsIiwiZm9ybWF0cyIsImxhYmVsIiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJEQVRFX1RJTUUiLCJEQVRFIiwiZ2V0Rm9ybWF0dGVyIiwiZ2V0Rm9ybWF0VmFsdWUiLCJnZXRGaWVsZEZvcm1hdExhYmVscyIsImZpZWxkVHlwZSIsInRvb2x0aXBUeXBlcyIsIkZJRUxEX09QVFMiLCJ0b29sdGlwIiwiZm9ybWF0TGFiZWxzIiwidmFsdWVzIiwiVE9PTFRJUF9GT1JNQVRTIiwiaW5jbHVkZXMiLCJnZXRGb3JtYXRMYWJlbHMiLCJmaWVsZE5hbWUiLCJfZmllbGRzJGZpbmQiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIEZJRUxEX09QVFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSwgZ2V0RmllbGRzRnJvbURhdGF9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QW5hbHl6ZXJ9IGZyb20gJ3R5cGUtYW5hbHl6ZXInO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQge1xuICBQcm9jZXNzb3JSZXN1bHQsXG4gIFJHQkNvbG9yLFxuICBGaWVsZCxcbiAgRmllbGRQYWlyLFxuICBUaW1lTGFiZWxGb3JtYXQsXG4gIFRvb2x0aXBGaWVsZHMsXG4gIFByb3RvRGF0YXNldFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7VG9vbHRpcEZvcm1hdH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWQsIGgzSXNWYWxpZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtnZXRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2dldEZvcm1hdFZhbHVlfSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICcuL2NvbG9yLXV0aWxzJztcblxuLy8gYXBwbHkgYSBjb2xvciBmb3IgZWFjaCBkYXRhc2V0XG4vLyB0byB1c2UgYXMgbGFiZWwgY29sb3JzXG5jb25zdCBkYXRhc2V0Q29sb3JzID0gW1xuICAnIzhGMkZCRicsXG4gICcjMDA1Q0ZGJyxcbiAgJyNDMDZDODQnLFxuICAnI0Y4QjE5NScsXG4gICcjNTQ3QTgyJyxcbiAgJyMzRUFDQTgnLFxuICAnI0EyRDRBQidcbl0ubWFwKGhleFRvUmdiKTtcblxuLyoqXG4gKiBSYW5kb20gY29sb3IgZ2VuZXJhdG9yXG4gKi9cbmZ1bmN0aW9uKiBnZW5lcmF0ZUNvbG9yKCk6IEdlbmVyYXRvcjxSR0JDb2xvcj4ge1xuICBsZXQgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBkYXRhc2V0Q29sb3JzLmxlbmd0aCArIDEpIHtcbiAgICBpZiAoaW5kZXggPT09IGRhdGFzZXRDb2xvcnMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IDA7XG4gICAgfVxuICAgIHlpZWxkIGRhdGFzZXRDb2xvcnNbaW5kZXgrK107XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRDb2xvck1ha2VyID0gZ2VuZXJhdGVDb2xvcigpO1xuXG4vKipcbiAqIEZpZWxkIG5hbWUgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIHdoaWNoIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZFxuICogYXMgbWV0cmljcy4gRmllbGRzIHdpbGwgc3RpbGwgYmUgaW5jbHVkZWQgaWYgYSAnbWV0cmljIHdvcmQnXG4gKiBpcyBmb3VuZCBvbiB0aGUgZmllbGQgbmFtZSwgaG93ZXZlci5cbiAqL1xuY29uc3QgRVhDTFVERURfREVGQVVMVF9GSUVMRFMgPSBbXG4gIC8vIFNlcmlhbCBudW1iZXJzIGFuZCBpZGVudGlmaWNhdGlvbiBudW1iZXJzXG4gICdfaWQnLFxuICAnaWQnLFxuICAnaW5kZXgnLFxuICAndXVpZCcsXG4gICdndWlkJyxcbiAgJ3VpZCcsXG4gICdnaWQnLFxuICAnc2VyaWFsJyxcbiAgLy8gR2VvZ3JhcGhpYyBJRHMgYXJlIHVubGlrZWx5IHRvIGJlIGludGVyZXN0aW5nIHRvIGNvbG9yXG4gICd6aXAnLFxuICAnY29kZScsXG4gICdwb3N0JyxcbiAgJ3JlZ2lvbicsXG4gICdmaXBzJyxcbiAgJ2NiZ3MnLFxuICAnaDMnLFxuICAnczInLFxuICAvLyBHZW9ncmFwaGljIGNvb3JkcyAoYnV0IG5vdCB6L2VsZXZhdGlvbi9hbHRpdHVkZVxuICAvLyBzaW5jZSB0aGF0IG1pZ2h0IGJlIGEgbWV0cmljKVxuICAnbGF0JyxcbiAgJ2xvbicsXG4gICdsbmcnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ194JyxcbiAgJ195J1xuXTtcblxuLyoqXG4gKiBQcmVmaXhlcyBhbmQgc3VmZml4ZXMgdGhhdCBpbmRpY2F0ZSBhIGZpZWxkIGlzIGEgbWV0cmljLlxuICpcbiAqIE5vdGUgdGhhdCB0aGVzZSBhcmUgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgZmlyc3QgYmVpbmdcbiAqIG1vc3QgcHJlZmVycmVkLlxuICovXG5jb25zdCBNRVRSSUNfREVGQVVMVF9GSUVMRFMgPSBbXG4gICdtZXRyaWMnLFxuICAndmFsdWUnLFxuICAnc3VtJyxcbiAgJ2NvdW50JyxcbiAgJ3VuaXF1ZScsXG4gICdtZWFuJyxcbiAgJ21vZGUnLFxuICAnbWVkaWFuJyxcbiAgJ21heCcsXG4gICdtaW4nLFxuICAnZGV2aWF0aW9uJyxcbiAgJ3ZhcmlhbmNlJyxcbiAgJ3A5OScsXG4gICdwOTUnLFxuICAncDc1JyxcbiAgJ3A1MCcsXG4gICdwMjUnLFxuICAncDA1JyxcbiAgLy8gQWJicmV2aWF0aW9ucyBhcmUgbGVzcyBwcmVmZXJyZWRcbiAgJ2NudCcsXG4gICd2YWwnXG5dO1xuXG4vKipcbiAqIENob29zZSBhIGZpZWxkIHRvIHVzZSBhcyB0aGUgZGVmYXVsdCBjb2xvciBmaWVsZCBvZiBhIGxheWVyLlxuICpcbiAqIFRoZSBoZXVyaXN0aWMgaXM6XG4gKlxuICogRmlyc3QsIGV4Y2x1ZGUgZmllbGRzIHRoYXQgYXJlIG9uIHRoZSBleGNsdXNpb24gbGlzdCBhbmQgZG9uJ3RcbiAqIGhhdmUgbmFtZXMgdGhhdCBzdWdnZXN0IHRoZXkgY29udGFpbiBtZXRyaWNzLiBBbHNvIGV4Y2x1ZGVcbiAqIGZpZWxkIG5hbWVzIHRoYXQgYXJlIGJsYW5rLlxuICpcbiAqIE5leHQsIGxvb2sgZm9yIGEgZmllbGQgdGhhdCBpcyBvZiByZWFsIHR5cGUgYW5kIGNvbnRhaW5zIG9uZVxuICogb2YgdGhlIHByZWZlcnJlZCBuYW1lcyAoaW4gb3JkZXIgb2YgdGhlIHByZWZlcnJlZCBuYW1lcykuXG4gKlxuICogTmV4dCwgbG9vayBmb3IgYSBmaWVsZCB0aGF0IGlzIG9mIGludGVnZXIgdHlwZSBhbmQgY29udGFpbnNcbiAqIG9uZSBvZiB0aGUgcHJlZmVycmVkIG5hbWVzIChpbiBvcmRlciBvZiB0aGUgcHJlZmVycmVkIG5hbWVzKS5cbiAqXG4gKiBOZXh0LCBsb29rIGZvciB0aGUgZmlyc3QgZmllbGQgdGhhdCBpcyBvZiByZWFsIHR5cGUgKGluIG9yZGVyXG4gKiBvZiBmaWVsZCBpbmRleCkuXG4gKlxuICogTmV4dCwgbG9vayBmb3IgdGhlIGZpcnN0IGZpZWxkIHRoYXQgaXMgb2YgaW50ZWdlciB0eXBlIChpblxuICogb3JkZXIgb2YgZmllbGQgaW5kZXgpLlxuICpcbiAqIEl0J3MgcG9zc2libGUgbm8gZmllbGQgd2lsbCBiZSBjaG9zZW4gKGkuZS4gYmVjYXVzZSBhbGwgZmllbGRzXG4gKiBhcmUgc3RyaW5ncy4pXG4gKlxuICogQHBhcmFtIGRhdGFzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZWZhdWx0Q29sb3JGaWVsZCh7XG4gIGZpZWxkcyxcbiAgZmllbGRQYWlycyA9IFtdXG59OiB7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRQYWlyczogRmllbGRQYWlyW107XG59KTogbnVsbCB8IEZpZWxkIHtcbiAgY29uc3QgZmllbGRzV2l0aG91dEV4Y2x1ZGVkID0gZmllbGRzLmZpbHRlcihmaWVsZCA9PiB7XG4gICAgaWYgKGZpZWxkLnR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5yZWFsICYmIGZpZWxkLnR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyKSB7XG4gICAgICAvLyBPbmx5IHNlbGVjdCBudW1lcmljIGZpZWxkcy5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZmllbGRQYWlycy5maW5kKFxuICAgICAgICBwYWlyID0+IHBhaXIucGFpci5sYXQudmFsdWUgPT09IGZpZWxkLm5hbWUgfHwgcGFpci5wYWlyLmxuZy52YWx1ZSA9PT0gZmllbGQubmFtZVxuICAgICAgKVxuICAgICkge1xuICAgICAgLy8gRG8gbm90IHBlcm1pdCBsYXQsIGxvbiBmaWVsZHNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRmllbGROYW1lID0gZmllbGQubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChub3JtYWxpemVkRmllbGROYW1lID09PSAnJykge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlIGV4Y2x1ZGVkIG5hbWUgd2hlbiB0aGUgbmFtZSBpcyBibGFuay5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaGFzRXhjbHVkZWQgPSBFWENMVURFRF9ERUZBVUxUX0ZJRUxEUy5maW5kKFxuICAgICAgZiA9PiBub3JtYWxpemVkRmllbGROYW1lLnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZEZpZWxkTmFtZS5lbmRzV2l0aChmKVxuICAgICk7XG4gICAgY29uc3QgaGFzSW5jbHVzaW9uID0gTUVUUklDX0RFRkFVTFRfRklFTERTLmZpbmQoXG4gICAgICBmID0+IG5vcm1hbGl6ZWRGaWVsZE5hbWUuc3RhcnRzV2l0aChmKSB8fCBub3JtYWxpemVkRmllbGROYW1lLmVuZHNXaXRoKGYpXG4gICAgKTtcbiAgICByZXR1cm4gIWhhc0V4Y2x1ZGVkIHx8IGhhc0luY2x1c2lvbjtcbiAgfSk7XG5cbiAgY29uc3Qgc29ydGVkRmllbGRzID0gZmllbGRzV2l0aG91dEV4Y2x1ZGVkLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZExlZnQgPSBsZWZ0Lm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBub3JtYWxpemVkUmlnaHQgPSByaWdodC5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbGVmdEhhc0luY2x1c2lvbiA9IE1FVFJJQ19ERUZBVUxUX0ZJRUxEUy5maW5kSW5kZXgoXG4gICAgICBmID0+IG5vcm1hbGl6ZWRMZWZ0LnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZExlZnQuZW5kc1dpdGgoZilcbiAgICApO1xuICAgIGNvbnN0IHJpZ2h0SGFzSW5jbHVzaW9uID0gTUVUUklDX0RFRkFVTFRfRklFTERTLmZpbmRJbmRleChcbiAgICAgIGYgPT4gbm9ybWFsaXplZFJpZ2h0LnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZFJpZ2h0LmVuZHNXaXRoKGYpXG4gICAgKTtcbiAgICBpZiAobGVmdEhhc0luY2x1c2lvbiAhPT0gcmlnaHRIYXNJbmNsdXNpb24pIHtcbiAgICAgIGlmIChsZWZ0SGFzSW5jbHVzaW9uID09PSAtMSkge1xuICAgICAgICAvLyBFbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIHRoZSBpbmNsdXNpb24gbGlzdCBzaG91bGQgZ28gYWZ0ZXIgdGhvc2UgdGhhdCBkby5cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2UgaWYgKHJpZ2h0SGFzSW5jbHVzaW9uID09PSAtMSkge1xuICAgICAgICAvLyBFbGVtZW50cyB0aGF0IGRvIGhhdmUgdGhlIGluY2x1c2lvbiBsaXN0IHNob3VsZCBnbyBiZWZvcmUgdGhvc2UgdGhhdCBkb24ndC5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgLy8gQ29tcGFyZSBiYXNlZCBvbiBvcmRlciBpbiB0aGUgaW5jbHVzaW9uIGxpc3RcbiAgICAgIHJldHVybiBsZWZ0SGFzSW5jbHVzaW9uIC0gcmlnaHRIYXNJbmNsdXNpb247XG4gICAgfVxuXG4gICAgLy8gQ29tcGFyZSBiYXNlZCBvbiB0eXBlXG4gICAgaWYgKGxlZnQudHlwZSAhPT0gcmlnaHQudHlwZSkge1xuICAgICAgaWYgKGxlZnQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnJlYWwpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgLy8gbGVmdCBpcyBhbiBpbnRlZ2VyIGFuZCByaWdodCBpcyBub3RcbiAgICAgIC8vIGFuZCByZWFscyBjb21lIGJlZm9yZSBpbnRlZ2Vyc1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgLy8gRmluYWxseSwgb3JkZXIgYmFzZWQgb24gdGhlIG9yZGVyIGluIHRoZSBkYXRhc2V0cyBjb2x1bW5zXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7XG4gIH0pO1xuXG4gIGlmIChzb3J0ZWRGaWVsZHMubGVuZ3RoKSB7XG4gICAgLy8gVGhlcmUgd2FzIGEgYmVzdCBtYXRjaFxuICAgIHJldHVybiBzb3J0ZWRGaWVsZHNbMF07XG4gIH1cbiAgLy8gTm8gbWF0Y2hlc1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBpbnB1dCBkYXRhLCBhZGRpbmcgbWlzc2luZyBmaWVsZCB0eXBlcywgcmVuYW1lIGR1cGxpY2F0ZSBjb2x1bW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0RGF0YShkYXRhOiBQcm90b0RhdGFzZXRbJ2RhdGEnXSk6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgIGFzc2VydCgnYWRkRGF0YVRvTWFwIEVycm9yOiBkYXRhc2V0LmRhdGEgY2Fubm90IGJlIG51bGwnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShkYXRhLmZpZWxkcykpIHtcbiAgICBhc3NlcnQoJ2FkZERhdGFUb01hcCBFcnJvcjogZXhwZWN0IGRhdGFzZXQuZGF0YS5maWVsZHMgdG8gYmUgYW4gYXJyYXknKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShkYXRhLnJvd3MpKSB7XG4gICAgYXNzZXJ0KCdhZGREYXRhVG9NYXAgRXJyb3I6IGV4cGVjdCBkYXRhc2V0LmRhdGEucm93cyB0byBiZSBhbiBhcnJheScpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qge2ZpZWxkcywgcm93cywgY29sc30gPSBkYXRhO1xuXG4gIC8vIGNoZWNrIGlmIGFsbCBmaWVsZHMgaGFzIG5hbWUsIGZvcm1hdCBhbmQgdHlwZVxuICBjb25zdCBhbGxWYWxpZCA9IGZpZWxkcy5ldmVyeSgoZiwgaSkgPT4ge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChmKSkge1xuICAgICAgYXNzZXJ0KGBmaWVsZHMgbmVlZHMgdG8gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0LCBidXQgZmluZCAke3R5cGVvZiBmfWApO1xuICAgICAgZmllbGRzW2ldID0ge25hbWU6IGBjb2x1bW5fJHtpfWAsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9O1xuICAgIH1cblxuICAgIGlmICghZi5uYW1lKSB7XG4gICAgICBhc3NlcnQoYGZpZWxkLm5hbWUgaXMgcmVxdWlyZWQgYnV0IG1pc3NpbmcgaW4gJHtKU09OLnN0cmluZ2lmeShmKX1gKTtcbiAgICAgIC8vIGFzc2lnbiBhIG5hbWVcbiAgICAgIGZpZWxkc1tpXS5uYW1lID0gYGNvbHVtbl8ke2l9YDtcbiAgICB9XG5cbiAgICBpZiAoIWYudHlwZSB8fCAhQUxMX0ZJRUxEX1RZUEVTW2YudHlwZV0pIHtcbiAgICAgIGFzc2VydChgdW5rbm93biBmaWVsZCB0eXBlICR7Zi50eXBlfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghZmllbGRzLmV2ZXJ5KGZpZWxkID0+IGZpZWxkLmFuYWx5emVyVHlwZSkpIHtcbiAgICAgIGFzc2VydCgnZmllbGQgbWlzc2luZyBhbmFseXplclR5cGUnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayB0aW1lIGZvcm1hdCBpcyBjb3JyZWN0IGJhc2VkIG9uIGZpcnN0IDEwIG5vdCBlbXB0eSBlbGVtZW50XG4gICAgaWYgKGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCkge1xuICAgICAgY29uc3Qgc2FtcGxlID0gZmluZE5vbkVtcHR5Um93c0F0RmllbGQocm93cywgaSwgMTApLm1hcChyID0+ICh7dHM6IHJbaV19KSk7XG4gICAgICBjb25zdCBhbmFseXplZFR5cGUgPSBBbmFseXplci5jb21wdXRlQ29sTWV0YShzYW1wbGUpWzBdO1xuICAgICAgcmV0dXJuIGFuYWx5emVkVHlwZSAmJiBhbmFseXplZFR5cGUuY2F0ZWdvcnkgPT09ICdUSU1FJyAmJiBhbmFseXplZFR5cGUuZm9ybWF0ID09PSBmLmZvcm1hdDtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBleGlzdGluZyBzdHJpbmcgZmllbGQgaXMgSDMgdHlwZVxuICAgIGlmIChmLnR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmcpIHtcbiAgICAgIGNvbnN0IHNhbXBsZSA9IGZpbmROb25FbXB0eVJvd3NBdEZpZWxkKHJvd3MsIGksIDEwKS5tYXAociA9PiByW2ldKTtcbiAgICAgIHJldHVybiBzYW1wbGUuZXZlcnkoaXRlbSA9PiAhaDNJc1ZhbGlkKGl0ZW0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKGFsbFZhbGlkKSB7XG4gICAgcmV0dXJuIHtyb3dzLCBmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgLy8gaWYgYW55IGZpZWxkIGhhcyBtaXNzaW5nIHR5cGUsIHJlY2FsY3VsYXRlIGl0IGZvciBldmVyeW9uZVxuICAvLyBiZWNhdXNlIHdlIHNpbXBseSBsb3N0IGZhaXRoIGluIGh1bWFuaXR5XG4gIGNvbnN0IHNhbXBsZURhdGEgPSBnZXRTYW1wbGVGb3JUeXBlQW5hbHl6ZSh7XG4gICAgZmllbGRzOiBmaWVsZHMubWFwKGYgPT4gZi5uYW1lKSxcbiAgICByb3dzXG4gIH0pO1xuICBjb25zdCBmaWVsZE9yZGVyID0gZmllbGRzLm1hcChmID0+IGYubmFtZSk7XG4gIGNvbnN0IG1ldGEgPSBnZXRGaWVsZHNGcm9tRGF0YShzYW1wbGVEYXRhLCBmaWVsZE9yZGVyKTtcbiAgY29uc3QgdXBkYXRlZEZpZWxkcyA9IGZpZWxkcy5tYXAoKGYsIGkpID0+ICh7XG4gICAgLi4uZixcbiAgICB0eXBlOiBtZXRhW2ldLnR5cGUsXG4gICAgZm9ybWF0OiBtZXRhW2ldLmZvcm1hdCxcbiAgICBhbmFseXplclR5cGU6IG1ldGFbaV0uYW5hbHl6ZXJUeXBlXG4gIH0pKTtcblxuICByZXR1cm4ge2ZpZWxkczogdXBkYXRlZEZpZWxkcywgcm93cywgLi4uKGNvbHMgPyB7Y29sc30gOiB7fSl9O1xufVxuXG5mdW5jdGlvbiBmaW5kTm9uRW1wdHlSb3dzQXRGaWVsZChyb3dzOiB1bmtub3duW11bXSwgZmllbGRJZHg6IG51bWJlciwgdG90YWw6IG51bWJlcik6IGFueVtdIHtcbiAgY29uc3Qgc2FtcGxlOiBhbnlbXSA9IFtdO1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlIChzYW1wbGUubGVuZ3RoIDwgdG90YWwgJiYgaSA8IHJvd3MubGVuZ3RoKSB7XG4gICAgaWYgKG5vdE51bGxvclVuZGVmaW5lZChyb3dzW2ldPy5bZmllbGRJZHhdKSkge1xuICAgICAgc2FtcGxlLnB1c2gocm93c1tpXSk7XG4gICAgfVxuICAgIGkrKztcbiAgfVxuICByZXR1cm4gc2FtcGxlO1xufVxuXG5jb25zdCBUSU1FX0RJU1BMQVkgPSAnMjAyMC0wNS0xMSAxNDowMCc7XG5cbmV4cG9ydCBjb25zdCBhZGRUaW1lTGFiZWwgPSAoZm9ybWF0czogVGltZUxhYmVsRm9ybWF0W10pID0+XG4gIGZvcm1hdHMubWFwKGYgPT4gKHtcbiAgICAuLi5mLFxuICAgIGxhYmVsOlxuICAgICAgZi50eXBlID09PSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUUgfHwgZi50eXBlID09PSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXG4gICAgICAgID8gZ2V0Rm9ybWF0dGVyKGdldEZvcm1hdFZhbHVlKGYpKShUSU1FX0RJU1BMQVkpXG4gICAgICAgIDogZi5sYWJlbFxuICB9KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWVsZEZvcm1hdExhYmVscyhmaWVsZFR5cGU/OiBzdHJpbmcpOiBUb29sdGlwRm9ybWF0W10ge1xuICBjb25zdCB0b29sdGlwVHlwZXMgPSAoZmllbGRUeXBlICYmIEZJRUxEX09QVFNbZmllbGRUeXBlXS5mb3JtYXQudG9vbHRpcCkgfHwgW107XG4gIGNvbnN0IGZvcm1hdExhYmVsczogVGltZUxhYmVsRm9ybWF0W10gPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmlsdGVyKHQgPT5cbiAgICB0b29sdGlwVHlwZXMuaW5jbHVkZXModC50eXBlKVxuICApO1xuICByZXR1cm4gYWRkVGltZUxhYmVsKGZvcm1hdExhYmVscyk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXRMYWJlbHMgPSAoZmllbGRzOiBUb29sdGlwRmllbGRzW10sIGZpZWxkTmFtZTogc3RyaW5nKTogVG9vbHRpcEZvcm1hdFtdID0+IHtcbiAgY29uc3QgZmllbGRUeXBlID0gZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IGZpZWxkTmFtZSk/LnR5cGU7XG4gIHJldHVybiBnZXRGaWVsZEZvcm1hdExhYmVscyhmaWVsZFR5cGUpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFNQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFjQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxX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
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9jb21tb25VdGlscyIsIl90eXBlQW5hbHl6ZXIiLCJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfZm9ybWF0IiwiX2NvbG9yVXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9tYXJrZWQiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiZ2VuZXJhdGVDb2xvciIsImRhdGFzZXRDb2xvcnMiLCJtYXAiLCJoZXhUb1JnYiIsImluZGV4Iiwid3JhcCIsImdlbmVyYXRlQ29sb3IkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJkYXRhc2V0Q29sb3JNYWtlciIsImV4cG9ydHMiLCJFWENMVURFRF9ERUZBVUxUX0ZJRUxEUyIsIk1FVFJJQ19ERUZBVUxUX0ZJRUxEUyIsImZpbmREZWZhdWx0Q29sb3JGaWVsZCIsIl9yZWYiLCJmaWVsZHMiLCJfcmVmJGZpZWxkUGFpcnMiLCJmaWVsZFBhaXJzIiwiZmllbGRzV2l0aG91dEV4Y2x1ZGVkIiwiZmllbGQiLCJ0eXBlIiwiQUxMX0ZJRUxEX1RZUEVTIiwicmVhbCIsImZpbmQiLCJwYWlyIiwibGF0IiwidmFsdWUiLCJuYW1lIiwibG5nIiwibm9ybWFsaXplZEZpZWxkTmFtZSIsInRvTG93ZXJDYXNlIiwiaGFzRXhjbHVkZWQiLCJmIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwiaGFzSW5jbHVzaW9uIiwic29ydGVkRmllbGRzIiwic29ydCIsImxlZnQiLCJyaWdodCIsIm5vcm1hbGl6ZWRMZWZ0Iiwibm9ybWFsaXplZFJpZ2h0IiwibGVmdEhhc0luY2x1c2lvbiIsImZpbmRJbmRleCIsInJpZ2h0SGFzSW5jbHVzaW9uIiwidmFsaWRhdGVJbnB1dERhdGEiLCJkYXRhIiwiaXNQbGFpbk9iamVjdCIsImFzc2VydCIsIkFycmF5IiwiaXNBcnJheSIsInJvd3MiLCJjb2xzIiwiYWxsVmFsaWQiLCJldmVyeSIsImkiLCJjb25jYXQiLCJfdHlwZW9mMiIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhbmFseXplclR5cGUiLCJ0aW1lc3RhbXAiLCJzYW1wbGUiLCJmaW5kTm9uRW1wdHlSb3dzQXRGaWVsZEFycm93IiwiZmluZE5vbkVtcHR5Um93c0F0RmllbGQiLCJ0cyIsImFuYWx5emVkVHlwZSIsIkFuYWx5emVyIiwiY29tcHV0ZUNvbE1ldGEiLCJjYXRlZ29yeSIsImZvcm1hdCIsIml0ZW0iLCJoM0lzVmFsaWQiLCJzYW1wbGVEYXRhIiwiZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emVBcnJvdyIsImdldFNhbXBsZUZvclR5cGVBbmFseXplIiwiZmllbGRPcmRlciIsIm1ldGEiLCJnZXRGaWVsZHNGcm9tRGF0YSIsInVwZGF0ZWRGaWVsZHMiLCJmaWVsZElkeCIsInRvdGFsIiwiX3Jvd3MkaSIsIm5vdE51bGxvclVuZGVmaW5lZCIsIm51bVJvd3MiLCJnZXQiLCJyb3ciLCJjb2wiLCJUSU1FX0RJU1BMQVkiLCJhZGRUaW1lTGFiZWwiLCJmb3JtYXRzIiwibGFiZWwiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIkRBVEVfVElNRSIsIkRBVEUiLCJnZXRGb3JtYXR0ZXIiLCJnZXRGb3JtYXRWYWx1ZSIsImdldEZpZWxkRm9ybWF0TGFiZWxzIiwiZmllbGRUeXBlIiwidG9vbHRpcFR5cGVzIiwiRklFTERfT1BUUyIsInRvb2x0aXAiLCJmb3JtYXRMYWJlbHMiLCJ2YWx1ZXMiLCJUT09MVElQX0ZPUk1BVFMiLCJpbmNsdWRlcyIsImdldEZvcm1hdExhYmVscyIsImZpZWxkTmFtZSIsIl9maWVsZHMkZmluZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0LXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIEZJRUxEX09QVFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emUsXG4gIGdldFNhbXBsZUZvclR5cGVBbmFseXplQXJyb3csXG4gIGdldEZpZWxkc0Zyb21EYXRhXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QW5hbHl6ZXJ9IGZyb20gJ3R5cGUtYW5hbHl6ZXInO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQge1xuICBQcm9jZXNzb3JSZXN1bHQsXG4gIFJHQkNvbG9yLFxuICBGaWVsZCxcbiAgRmllbGRQYWlyLFxuICBUaW1lTGFiZWxGb3JtYXQsXG4gIFRvb2x0aXBGaWVsZHMsXG4gIFByb3RvRGF0YXNldFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7VG9vbHRpcEZvcm1hdH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWQsIGgzSXNWYWxpZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtnZXRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQge2dldEZvcm1hdFZhbHVlfSBmcm9tICcuL2Zvcm1hdCc7XG5pbXBvcnQge2hleFRvUmdifSBmcm9tICcuL2NvbG9yLXV0aWxzJztcblxuLy8gYXBwbHkgYSBjb2xvciBmb3IgZWFjaCBkYXRhc2V0XG4vLyB0byB1c2UgYXMgbGFiZWwgY29sb3JzXG5jb25zdCBkYXRhc2V0Q29sb3JzID0gW1xuICAnIzhGMkZCRicsXG4gICcjMDA1Q0ZGJyxcbiAgJyNDMDZDODQnLFxuICAnI0Y4QjE5NScsXG4gICcjNTQ3QTgyJyxcbiAgJyMzRUFDQTgnLFxuICAnI0EyRDRBQidcbl0ubWFwKGhleFRvUmdiKTtcblxuLyoqXG4gKiBSYW5kb20gY29sb3IgZ2VuZXJhdG9yXG4gKi9cbmZ1bmN0aW9uKiBnZW5lcmF0ZUNvbG9yKCk6IEdlbmVyYXRvcjxSR0JDb2xvcj4ge1xuICBsZXQgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBkYXRhc2V0Q29sb3JzLmxlbmd0aCArIDEpIHtcbiAgICBpZiAoaW5kZXggPT09IGRhdGFzZXRDb2xvcnMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IDA7XG4gICAgfVxuICAgIHlpZWxkIGRhdGFzZXRDb2xvcnNbaW5kZXgrK107XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRDb2xvck1ha2VyID0gZ2VuZXJhdGVDb2xvcigpO1xuXG4vKipcbiAqIEZpZWxkIG5hbWUgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIHdoaWNoIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZFxuICogYXMgbWV0cmljcy4gRmllbGRzIHdpbGwgc3RpbGwgYmUgaW5jbHVkZWQgaWYgYSAnbWV0cmljIHdvcmQnXG4gKiBpcyBmb3VuZCBvbiB0aGUgZmllbGQgbmFtZSwgaG93ZXZlci5cbiAqL1xuY29uc3QgRVhDTFVERURfREVGQVVMVF9GSUVMRFMgPSBbXG4gIC8vIFNlcmlhbCBudW1iZXJzIGFuZCBpZGVudGlmaWNhdGlvbiBudW1iZXJzXG4gICdfaWQnLFxuICAnaWQnLFxuICAnaW5kZXgnLFxuICAndXVpZCcsXG4gICdndWlkJyxcbiAgJ3VpZCcsXG4gICdnaWQnLFxuICAnc2VyaWFsJyxcbiAgLy8gR2VvZ3JhcGhpYyBJRHMgYXJlIHVubGlrZWx5IHRvIGJlIGludGVyZXN0aW5nIHRvIGNvbG9yXG4gICd6aXAnLFxuICAnY29kZScsXG4gICdwb3N0JyxcbiAgJ3JlZ2lvbicsXG4gICdmaXBzJyxcbiAgJ2NiZ3MnLFxuICAnaDMnLFxuICAnczInLFxuICAvLyBHZW9ncmFwaGljIGNvb3JkcyAoYnV0IG5vdCB6L2VsZXZhdGlvbi9hbHRpdHVkZVxuICAvLyBzaW5jZSB0aGF0IG1pZ2h0IGJlIGEgbWV0cmljKVxuICAnbGF0JyxcbiAgJ2xvbicsXG4gICdsbmcnLFxuICAnbGF0aXR1ZGUnLFxuICAnbG9uZ2l0dWRlJyxcbiAgJ194JyxcbiAgJ195J1xuXTtcblxuLyoqXG4gKiBQcmVmaXhlcyBhbmQgc3VmZml4ZXMgdGhhdCBpbmRpY2F0ZSBhIGZpZWxkIGlzIGEgbWV0cmljLlxuICpcbiAqIE5vdGUgdGhhdCB0aGVzZSBhcmUgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgZmlyc3QgYmVpbmdcbiAqIG1vc3QgcHJlZmVycmVkLlxuICovXG5jb25zdCBNRVRSSUNfREVGQVVMVF9GSUVMRFMgPSBbXG4gICdtZXRyaWMnLFxuICAndmFsdWUnLFxuICAnc3VtJyxcbiAgJ2NvdW50JyxcbiAgJ3VuaXF1ZScsXG4gICdtZWFuJyxcbiAgJ21vZGUnLFxuICAnbWVkaWFuJyxcbiAgJ21heCcsXG4gICdtaW4nLFxuICAnZGV2aWF0aW9uJyxcbiAgJ3ZhcmlhbmNlJyxcbiAgJ3A5OScsXG4gICdwOTUnLFxuICAncDc1JyxcbiAgJ3A1MCcsXG4gICdwMjUnLFxuICAncDA1JyxcbiAgLy8gQWJicmV2aWF0aW9ucyBhcmUgbGVzcyBwcmVmZXJyZWRcbiAgJ2NudCcsXG4gICd2YWwnXG5dO1xuXG4vKipcbiAqIENob29zZSBhIGZpZWxkIHRvIHVzZSBhcyB0aGUgZGVmYXVsdCBjb2xvciBmaWVsZCBvZiBhIGxheWVyLlxuICpcbiAqIFRoZSBoZXVyaXN0aWMgaXM6XG4gKlxuICogRmlyc3QsIGV4Y2x1ZGUgZmllbGRzIHRoYXQgYXJlIG9uIHRoZSBleGNsdXNpb24gbGlzdCBhbmQgZG9uJ3RcbiAqIGhhdmUgbmFtZXMgdGhhdCBzdWdnZXN0IHRoZXkgY29udGFpbiBtZXRyaWNzLiBBbHNvIGV4Y2x1ZGVcbiAqIGZpZWxkIG5hbWVzIHRoYXQgYXJlIGJsYW5rLlxuICpcbiAqIE5leHQsIGxvb2sgZm9yIGEgZmllbGQgdGhhdCBpcyBvZiByZWFsIHR5cGUgYW5kIGNvbnRhaW5zIG9uZVxuICogb2YgdGhlIHByZWZlcnJlZCBuYW1lcyAoaW4gb3JkZXIgb2YgdGhlIHByZWZlcnJlZCBuYW1lcykuXG4gKlxuICogTmV4dCwgbG9vayBmb3IgYSBmaWVsZCB0aGF0IGlzIG9mIGludGVnZXIgdHlwZSBhbmQgY29udGFpbnNcbiAqIG9uZSBvZiB0aGUgcHJlZmVycmVkIG5hbWVzIChpbiBvcmRlciBvZiB0aGUgcHJlZmVycmVkIG5hbWVzKS5cbiAqXG4gKiBOZXh0LCBsb29rIGZvciB0aGUgZmlyc3QgZmllbGQgdGhhdCBpcyBvZiByZWFsIHR5cGUgKGluIG9yZGVyXG4gKiBvZiBmaWVsZCBpbmRleCkuXG4gKlxuICogTmV4dCwgbG9vayBmb3IgdGhlIGZpcnN0IGZpZWxkIHRoYXQgaXMgb2YgaW50ZWdlciB0eXBlIChpblxuICogb3JkZXIgb2YgZmllbGQgaW5kZXgpLlxuICpcbiAqIEl0J3MgcG9zc2libGUgbm8gZmllbGQgd2lsbCBiZSBjaG9zZW4gKGkuZS4gYmVjYXVzZSBhbGwgZmllbGRzXG4gKiBhcmUgc3RyaW5ncy4pXG4gKlxuICogQHBhcmFtIGRhdGFzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZWZhdWx0Q29sb3JGaWVsZCh7XG4gIGZpZWxkcyxcbiAgZmllbGRQYWlycyA9IFtdXG59OiB7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRQYWlyczogRmllbGRQYWlyW107XG59KTogbnVsbCB8IEZpZWxkIHtcbiAgY29uc3QgZmllbGRzV2l0aG91dEV4Y2x1ZGVkID0gZmllbGRzLmZpbHRlcihmaWVsZCA9PiB7XG4gICAgaWYgKGZpZWxkLnR5cGUgIT09IEFMTF9GSUVMRF9UWVBFUy5yZWFsKSB7XG4gICAgICAvLyBPbmx5IHNlbGVjdCBudW1lcmljIGZpZWxkcy5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZmllbGRQYWlycy5maW5kKFxuICAgICAgICBwYWlyID0+IHBhaXIucGFpci5sYXQudmFsdWUgPT09IGZpZWxkLm5hbWUgfHwgcGFpci5wYWlyLmxuZy52YWx1ZSA9PT0gZmllbGQubmFtZVxuICAgICAgKVxuICAgICkge1xuICAgICAgLy8gRG8gbm90IHBlcm1pdCBsYXQsIGxvbiBmaWVsZHNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRmllbGROYW1lID0gZmllbGQubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChub3JtYWxpemVkRmllbGROYW1lID09PSAnJykge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlIGV4Y2x1ZGVkIG5hbWUgd2hlbiB0aGUgbmFtZSBpcyBibGFuay5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaGFzRXhjbHVkZWQgPSBFWENMVURFRF9ERUZBVUxUX0ZJRUxEUy5maW5kKFxuICAgICAgZiA9PiBub3JtYWxpemVkRmllbGROYW1lLnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZEZpZWxkTmFtZS5lbmRzV2l0aChmKVxuICAgICk7XG4gICAgY29uc3QgaGFzSW5jbHVzaW9uID0gTUVUUklDX0RFRkFVTFRfRklFTERTLmZpbmQoXG4gICAgICBmID0+IG5vcm1hbGl6ZWRGaWVsZE5hbWUuc3RhcnRzV2l0aChmKSB8fCBub3JtYWxpemVkRmllbGROYW1lLmVuZHNXaXRoKGYpXG4gICAgKTtcbiAgICByZXR1cm4gIWhhc0V4Y2x1ZGVkIHx8IGhhc0luY2x1c2lvbjtcbiAgfSk7XG5cbiAgY29uc3Qgc29ydGVkRmllbGRzID0gZmllbGRzV2l0aG91dEV4Y2x1ZGVkLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZExlZnQgPSBsZWZ0Lm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBub3JtYWxpemVkUmlnaHQgPSByaWdodC5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbGVmdEhhc0luY2x1c2lvbiA9IE1FVFJJQ19ERUZBVUxUX0ZJRUxEUy5maW5kSW5kZXgoXG4gICAgICBmID0+IG5vcm1hbGl6ZWRMZWZ0LnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZExlZnQuZW5kc1dpdGgoZilcbiAgICApO1xuICAgIGNvbnN0IHJpZ2h0SGFzSW5jbHVzaW9uID0gTUVUUklDX0RFRkFVTFRfRklFTERTLmZpbmRJbmRleChcbiAgICAgIGYgPT4gbm9ybWFsaXplZFJpZ2h0LnN0YXJ0c1dpdGgoZikgfHwgbm9ybWFsaXplZFJpZ2h0LmVuZHNXaXRoKGYpXG4gICAgKTtcbiAgICBpZiAobGVmdEhhc0luY2x1c2lvbiAhPT0gcmlnaHRIYXNJbmNsdXNpb24pIHtcbiAgICAgIGlmIChsZWZ0SGFzSW5jbHVzaW9uID09PSAtMSkge1xuICAgICAgICAvLyBFbGVtZW50cyB0aGF0IGRvIG5vdCBoYXZlIHRoZSBpbmNsdXNpb24gbGlzdCBzaG91bGQgZ28gYWZ0ZXIgdGhvc2UgdGhhdCBkby5cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9IGVsc2UgaWYgKHJpZ2h0SGFzSW5jbHVzaW9uID09PSAtMSkge1xuICAgICAgICAvLyBFbGVtZW50cyB0aGF0IGRvIGhhdmUgdGhlIGluY2x1c2lvbiBsaXN0IHNob3VsZCBnbyBiZWZvcmUgdGhvc2UgdGhhdCBkb24ndC5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgLy8gQ29tcGFyZSBiYXNlZCBvbiBvcmRlciBpbiB0aGUgaW5jbHVzaW9uIGxpc3RcbiAgICAgIHJldHVybiBsZWZ0SGFzSW5jbHVzaW9uIC0gcmlnaHRIYXNJbmNsdXNpb247XG4gICAgfVxuXG4gICAgLy8gQ29tcGFyZSBiYXNlZCBvbiB0eXBlXG4gICAgaWYgKGxlZnQudHlwZSAhPT0gcmlnaHQudHlwZSkge1xuICAgICAgaWYgKGxlZnQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnJlYWwpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgLy8gbGVmdCBpcyBhbiBpbnRlZ2VyIGFuZCByaWdodCBpcyBub3RcbiAgICAgIC8vIGFuZCByZWFscyBjb21lIGJlZm9yZSBpbnRlZ2Vyc1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgLy8gRmluYWxseSwgb3JkZXIgYmFzZWQgb24gdGhlIG9yZGVyIGluIHRoZSBkYXRhc2V0cyBjb2x1bW5zXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBsZWZ0LmluZGV4IC0gcmlnaHQuaW5kZXg7XG4gIH0pO1xuXG4gIGlmIChzb3J0ZWRGaWVsZHMubGVuZ3RoKSB7XG4gICAgLy8gVGhlcmUgd2FzIGEgYmVzdCBtYXRjaFxuICAgIHJldHVybiBzb3J0ZWRGaWVsZHNbMF07XG4gIH1cbiAgLy8gTm8gbWF0Y2hlc1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBpbnB1dCBkYXRhLCBhZGRpbmcgbWlzc2luZyBmaWVsZCB0eXBlcywgcmVuYW1lIGR1cGxpY2F0ZSBjb2x1bW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0RGF0YShkYXRhOiBQcm90b0RhdGFzZXRbJ2RhdGEnXSk6IFByb2Nlc3NvclJlc3VsdCB7XG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xuICAgIGFzc2VydCgnYWRkRGF0YVRvTWFwIEVycm9yOiBkYXRhc2V0LmRhdGEgY2Fubm90IGJlIG51bGwnKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShkYXRhLmZpZWxkcykpIHtcbiAgICBhc3NlcnQoJ2FkZERhdGFUb01hcCBFcnJvcjogZXhwZWN0IGRhdGFzZXQuZGF0YS5maWVsZHMgdG8gYmUgYW4gYXJyYXknKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShkYXRhLnJvd3MpICYmICFBcnJheS5pc0FycmF5KGRhdGEuY29scykpIHtcbiAgICBhc3NlcnQoJ2FkZERhdGFUb01hcCBFcnJvcjogZXhwZWN0IGRhdGFzZXQuZGF0YS5yb3dzIG9yIGNvbHMgdG8gYmUgYW4gYXJyYXknKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHtmaWVsZHMsIHJvd3MsIGNvbHN9ID0gZGF0YTtcblxuICAvLyBjaGVjayBpZiBhbGwgZmllbGRzIGhhcyBuYW1lLCBmb3JtYXQgYW5kIHR5cGVcbiAgY29uc3QgYWxsVmFsaWQgPSBmaWVsZHMuZXZlcnkoKGYsIGkpID0+IHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QoZikpIHtcbiAgICAgIGFzc2VydChgZmllbGRzIG5lZWRzIHRvIGJlIGFuIGFycmF5IG9mIG9iamVjdCwgYnV0IGZpbmQgJHt0eXBlb2YgZn1gKTtcbiAgICAgIGZpZWxkc1tpXSA9IHtuYW1lOiBgY29sdW1uXyR7aX1gLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfTtcbiAgICB9XG5cbiAgICBpZiAoIWYubmFtZSkge1xuICAgICAgYXNzZXJ0KGBmaWVsZC5uYW1lIGlzIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGluICR7SlNPTi5zdHJpbmdpZnkoZil9YCk7XG4gICAgICAvLyBhc3NpZ24gYSBuYW1lXG4gICAgICBmaWVsZHNbaV0ubmFtZSA9IGBjb2x1bW5fJHtpfWA7XG4gICAgfVxuXG4gICAgaWYgKCFmLnR5cGUgfHwgIUFMTF9GSUVMRF9UWVBFU1tmLnR5cGVdKSB7XG4gICAgICBhc3NlcnQoYHVua25vd24gZmllbGQgdHlwZSAke2YudHlwZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWYuYW5hbHl6ZXJUeXBlKSB7XG4gICAgICBhc3NlcnQoYGZpZWxkICR7aX0gbWlzc2luZyBhbmFseXplclR5cGVgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayB0aW1lIGZvcm1hdCBpcyBjb3JyZWN0IGJhc2VkIG9uIGZpcnN0IDEwIG5vdCBlbXB0eSBlbGVtZW50XG4gICAgaWYgKGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcCkge1xuICAgICAgY29uc3Qgc2FtcGxlID0gKFxuICAgICAgICBjb2xzID8gZmluZE5vbkVtcHR5Um93c0F0RmllbGRBcnJvdyhjb2xzLCBpLCAxMCkgOiBmaW5kTm9uRW1wdHlSb3dzQXRGaWVsZChyb3dzLCBpLCAxMClcbiAgICAgICkubWFwKHIgPT4gKHt0czogcltpXX0pKTtcbiAgICAgIGNvbnN0IGFuYWx5emVkVHlwZSA9IEFuYWx5emVyLmNvbXB1dGVDb2xNZXRhKHNhbXBsZSlbMF07XG4gICAgICByZXR1cm4gYW5hbHl6ZWRUeXBlICYmIGFuYWx5emVkVHlwZS5jYXRlZ29yeSA9PT0gJ1RJTUUnICYmIGFuYWx5emVkVHlwZS5mb3JtYXQgPT09IGYuZm9ybWF0O1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGV4aXN0aW5nIHN0cmluZyBmaWVsZCBpcyBIMyB0eXBlXG4gICAgaWYgKGYudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnN0cmluZykge1xuICAgICAgY29uc3Qgc2FtcGxlID0gKFxuICAgICAgICBjb2xzID8gZmluZE5vbkVtcHR5Um93c0F0RmllbGRBcnJvdyhjb2xzLCBpLCAxMCkgOiBmaW5kTm9uRW1wdHlSb3dzQXRGaWVsZChyb3dzLCBpLCAxMClcbiAgICAgICkubWFwKHIgPT4gcltpXSk7XG4gICAgICByZXR1cm4gc2FtcGxlLmV2ZXJ5KGl0ZW0gPT4gIWgzSXNWYWxpZChpdGVtKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuXG4gIGlmIChhbGxWYWxpZCkge1xuICAgIHJldHVybiB7cm93cywgZmllbGRzLCBjb2xzfTtcbiAgfVxuXG4gIC8vIGlmIGFueSBmaWVsZCBoYXMgbWlzc2luZyB0eXBlLCByZWNhbGN1bGF0ZSBpdCBmb3IgZXZlcnlvbmVcbiAgLy8gYmVjYXVzZSB3ZSBzaW1wbHkgbG9zdCBmYWl0aCBpbiBodW1hbml0eVxuICBjb25zdCBzYW1wbGVEYXRhID0gY29sc1xuICAgID8gZ2V0U2FtcGxlRm9yVHlwZUFuYWx5emVBcnJvdyhcbiAgICAgICAgY29scyxcbiAgICAgICAgZmllbGRzLm1hcChmID0+IGYubmFtZSlcbiAgICAgIClcbiAgICA6IGdldFNhbXBsZUZvclR5cGVBbmFseXplKHtcbiAgICAgICAgZmllbGRzOiBmaWVsZHMubWFwKGYgPT4gZi5uYW1lKSxcbiAgICAgICAgcm93c1xuICAgICAgfSk7XG4gIGNvbnN0IGZpZWxkT3JkZXIgPSBmaWVsZHMubWFwKGYgPT4gZi5uYW1lKTtcbiAgY29uc3QgbWV0YSA9IGdldEZpZWxkc0Zyb21EYXRhKHNhbXBsZURhdGEsIGZpZWxkT3JkZXIpO1xuICBjb25zdCB1cGRhdGVkRmllbGRzID0gZmllbGRzLm1hcCgoZiwgaSkgPT4gKHtcbiAgICAuLi5mLFxuICAgIHR5cGU6IG1ldGFbaV0udHlwZSxcbiAgICBmb3JtYXQ6IG1ldGFbaV0uZm9ybWF0LFxuICAgIGFuYWx5emVyVHlwZTogbWV0YVtpXS5hbmFseXplclR5cGVcbiAgfSkpO1xuXG4gIHJldHVybiB7ZmllbGRzOiB1cGRhdGVkRmllbGRzLCByb3dzLCAuLi4oY29scyA/IHtjb2xzfSA6IHt9KX07XG59XG5cbmZ1bmN0aW9uIGZpbmROb25FbXB0eVJvd3NBdEZpZWxkKHJvd3M6IHVua25vd25bXVtdLCBmaWVsZElkeDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKTogYW55W10ge1xuICBjb25zdCBzYW1wbGU6IGFueVtdID0gW107XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKHNhbXBsZS5sZW5ndGggPCB0b3RhbCAmJiBpIDwgcm93cy5sZW5ndGgpIHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHJvd3NbaV0/LltmaWVsZElkeF0pKSB7XG4gICAgICBzYW1wbGUucHVzaChyb3dzW2ldKTtcbiAgICB9XG4gICAgaSsrO1xuICB9XG4gIHJldHVybiBzYW1wbGU7XG59XG5cbmZ1bmN0aW9uIGZpbmROb25FbXB0eVJvd3NBdEZpZWxkQXJyb3coXG4gIGNvbHM6IGFycm93LlZlY3RvcltdLFxuICBmaWVsZElkeDogbnVtYmVyLFxuICB0b3RhbDogbnVtYmVyXG4pOiBhbnlbXSB7XG4gIGNvbnN0IHNhbXBsZTogYW55W10gPSBbXTtcbiAgY29uc3QgbnVtUm93cyA9IGNvbHNbZmllbGRJZHhdLmxlbmd0aDtcbiAgbGV0IGkgPSAwO1xuICB3aGlsZSAoc2FtcGxlLmxlbmd0aCA8IHRvdGFsICYmIGkgPCBudW1Sb3dzKSB7XG4gICAgaWYgKG5vdE51bGxvclVuZGVmaW5lZChjb2xzW2ZpZWxkSWR4XS5nZXQoaSkpKSB7XG4gICAgICBjb25zdCByb3cgPSBjb2xzLm1hcChjb2wgPT4gY29sLmdldChpKSk7XG4gICAgICBzYW1wbGUucHVzaChyb3cpO1xuICAgIH1cbiAgICBpKys7XG4gIH1cbiAgcmV0dXJuIHNhbXBsZTtcbn1cblxuY29uc3QgVElNRV9ESVNQTEFZID0gJzIwMjAtMDUtMTEgMTQ6MDAnO1xuXG5leHBvcnQgY29uc3QgYWRkVGltZUxhYmVsID0gKGZvcm1hdHM6IFRpbWVMYWJlbEZvcm1hdFtdKSA9PlxuICBmb3JtYXRzLm1hcChmID0+ICh7XG4gICAgLi4uZixcbiAgICBsYWJlbDpcbiAgICAgIGYudHlwZSA9PT0gVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURV9USU1FIHx8IGYudHlwZSA9PT0gVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURVxuICAgICAgICA/IGdldEZvcm1hdHRlcihnZXRGb3JtYXRWYWx1ZShmKSkoVElNRV9ESVNQTEFZKVxuICAgICAgICA6IGYubGFiZWxcbiAgfSkpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRGb3JtYXRMYWJlbHMoZmllbGRUeXBlPzogc3RyaW5nKTogVG9vbHRpcEZvcm1hdFtdIHtcbiAgY29uc3QgdG9vbHRpcFR5cGVzID0gKGZpZWxkVHlwZSAmJiBGSUVMRF9PUFRTW2ZpZWxkVHlwZV0uZm9ybWF0LnRvb2x0aXApIHx8IFtdO1xuICBjb25zdCBmb3JtYXRMYWJlbHM6IFRpbWVMYWJlbEZvcm1hdFtdID0gT2JqZWN0LnZhbHVlcyhUT09MVElQX0ZPUk1BVFMpLmZpbHRlcih0ID0+XG4gICAgdG9vbHRpcFR5cGVzLmluY2x1ZGVzKHQudHlwZSlcbiAgKTtcbiAgcmV0dXJuIGFkZFRpbWVMYWJlbChmb3JtYXRMYWJlbHMpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0TGFiZWxzID0gKGZpZWxkczogVG9vbHRpcEZpZWxkc1tdLCBmaWVsZE5hbWU6IHN0cmluZyk6IFRvb2x0aXBGb3JtYXRbXSA9PiB7XG4gIGNvbnN0IGZpZWxkVHlwZSA9IGZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBmaWVsZE5hbWUpPy50eXBlO1xuICByZXR1cm4gZ2V0RmllbGRGb3JtYXRMYWJlbHMoZmllbGRUeXBlKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBTUEsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBS0EsSUFBQUUsYUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBY0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sVUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQXVDLFNBQUFTLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBO0FBQUEsSUFBQW9CLE9BQUEsZ0JBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQWlCN0JDLGFBQWEsR0FsRHZCO0FBQ0E7QUFrQ0E7QUFDQTtBQUNBLElBQU1DLGFBQWEsR0FBRyxDQUNwQixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLENBQ1YsQ0FBQ0MsR0FBRyxDQUFDQyxvQkFBUSxDQUFDOztBQUVmO0FBQ0E7QUFDQTtBQUNBLFNBQVVILGFBQWFBLENBQUE7RUFBQSxJQUFBSSxLQUFBO0VBQUEsT0FBQU4sWUFBQSxZQUFBTyxJQUFBLFVBQUFDLGVBQUFDLFFBQUE7SUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtNQUFBO1FBQ2pCTCxLQUFLLEdBQUcsQ0FBQztNQUFBO1FBQUEsTUFDTkEsS0FBSyxHQUFHSCxhQUFhLENBQUNWLE1BQU0sR0FBRyxDQUFDO1VBQUFnQixRQUFBLENBQUFFLElBQUE7VUFBQTtRQUFBO1FBQ3JDLElBQUlMLEtBQUssS0FBS0gsYUFBYSxDQUFDVixNQUFNLEVBQUU7VUFDbENhLEtBQUssR0FBRyxDQUFDO1FBQ1g7UUFBQ0csUUFBQSxDQUFBRSxJQUFBO1FBQ0QsT0FBTVIsYUFBYSxDQUFDRyxLQUFLLEVBQUUsQ0FBQztNQUFBO1FBQUFHLFFBQUEsQ0FBQUUsSUFBQTtRQUFBO01BQUE7TUFBQTtRQUFBLE9BQUFGLFFBQUEsQ0FBQUcsSUFBQTtJQUFBO0VBQUEsR0FBQWIsT0FBQTtBQUFBO0FBSXpCLElBQU1jLGlCQUFpQixHQUFBQyxPQUFBLENBQUFELGlCQUFBLEdBQUdYLGFBQWEsQ0FBQyxDQUFDOztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTWEsdUJBQXVCLEdBQUc7QUFDOUI7QUFDQSxLQUFLLEVBQ0wsSUFBSSxFQUNKLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsUUFBUTtBQUNSO0FBQ0EsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUk7QUFDSjtBQUNBO0FBQ0EsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLFdBQVcsRUFDWCxJQUFJLEVBQ0osSUFBSSxDQUNMOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLHFCQUFxQixHQUFHLENBQzVCLFFBQVEsRUFDUixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQ1gsVUFBVSxFQUNWLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSztBQUNMO0FBQ0EsS0FBSyxFQUNMLEtBQUssQ0FDTjs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MscUJBQXFCQSxDQUFBQyxJQUFBLEVBTXBCO0VBQUEsSUFMZkMsTUFBTSxHQUFBRCxJQUFBLENBQU5DLE1BQU07SUFBQUMsZUFBQSxHQUFBRixJQUFBLENBQ05HLFVBQVU7SUFBVkEsVUFBVSxHQUFBRCxlQUFBLGNBQUcsRUFBRSxHQUFBQSxlQUFBO0VBS2YsSUFBTUUscUJBQXFCLEdBQUdILE1BQU0sQ0FBQ2pDLE1BQU0sQ0FBQyxVQUFBcUMsS0FBSyxFQUFJO0lBQ25ELElBQUlBLEtBQUssQ0FBQ0MsSUFBSSxLQUFLQywwQkFBZSxDQUFDQyxJQUFJLEVBQUU7TUFDdkM7TUFDQSxPQUFPLEtBQUs7SUFDZDtJQUNBLElBQ0VMLFVBQVUsQ0FBQ00sSUFBSSxDQUNiLFVBQUFDLElBQUk7TUFBQSxPQUFJQSxJQUFJLENBQUNBLElBQUksQ0FBQ0MsR0FBRyxDQUFDQyxLQUFLLEtBQUtQLEtBQUssQ0FBQ1EsSUFBSSxJQUFJSCxJQUFJLENBQUNBLElBQUksQ0FBQ0ksR0FBRyxDQUFDRixLQUFLLEtBQUtQLEtBQUssQ0FBQ1EsSUFBSTtJQUFBLENBQ2xGLENBQUMsRUFDRDtNQUNBO01BQ0EsT0FBTyxLQUFLO0lBQ2Q7SUFFQSxJQUFNRSxtQkFBbUIsR0FBR1YsS0FBSyxDQUFDUSxJQUFJLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELElBQUlELG1CQUFtQixLQUFLLEVBQUUsRUFBRTtNQUM5QjtNQUNBLE9BQU8sS0FBSztJQUNkO0lBQ0EsSUFBTUUsV0FBVyxHQUFHcEIsdUJBQXVCLENBQUNZLElBQUksQ0FDOUMsVUFBQVMsQ0FBQztNQUFBLE9BQUlILG1CQUFtQixDQUFDSSxVQUFVLENBQUNELENBQUMsQ0FBQyxJQUFJSCxtQkFBbUIsQ0FBQ0ssUUFBUSxDQUFDRixDQUFDLENBQUM7SUFBQSxDQUMzRSxDQUFDO0lBQ0QsSUFBTUcsWUFBWSxHQUFHdkIscUJBQXFCLENBQUNXLElBQUksQ0FDN0MsVUFBQVMsQ0FBQztNQUFBLE9BQUlILG1CQUFtQixDQUFDSSxVQUFVLENBQUNELENBQUMsQ0FBQyxJQUFJSCxtQkFBbUIsQ0FBQ0ssUUFBUSxDQUFDRixDQUFDLENBQUM7SUFBQSxDQUMzRSxDQUFDO0lBQ0QsT0FBTyxDQUFDRCxXQUFXLElBQUlJLFlBQVk7RUFDckMsQ0FBQyxDQUFDO0VBRUYsSUFBTUMsWUFBWSxHQUFHbEIscUJBQXFCLENBQUNtQixJQUFJLENBQUMsVUFBQ0MsSUFBSSxFQUFFQyxLQUFLLEVBQUs7SUFDL0QsSUFBTUMsY0FBYyxHQUFHRixJQUFJLENBQUNYLElBQUksQ0FBQ0csV0FBVyxDQUFDLENBQUM7SUFDOUMsSUFBTVcsZUFBZSxHQUFHRixLQUFLLENBQUNaLElBQUksQ0FBQ0csV0FBVyxDQUFDLENBQUM7SUFDaEQsSUFBTVksZ0JBQWdCLEdBQUc5QixxQkFBcUIsQ0FBQytCLFNBQVMsQ0FDdEQsVUFBQVgsQ0FBQztNQUFBLE9BQUlRLGNBQWMsQ0FBQ1AsVUFBVSxDQUFDRCxDQUFDLENBQUMsSUFBSVEsY0FBYyxDQUFDTixRQUFRLENBQUNGLENBQUMsQ0FBQztJQUFBLENBQ2pFLENBQUM7SUFDRCxJQUFNWSxpQkFBaUIsR0FBR2hDLHFCQUFxQixDQUFDK0IsU0FBUyxDQUN2RCxVQUFBWCxDQUFDO01BQUEsT0FBSVMsZUFBZSxDQUFDUixVQUFVLENBQUNELENBQUMsQ0FBQyxJQUFJUyxlQUFlLENBQUNQLFFBQVEsQ0FBQ0YsQ0FBQyxDQUFDO0lBQUEsQ0FDbkUsQ0FBQztJQUNELElBQUlVLGdCQUFnQixLQUFLRSxpQkFBaUIsRUFBRTtNQUMxQyxJQUFJRixnQkFBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUMzQjtRQUNBLE9BQU8sQ0FBQztNQUNWLENBQUMsTUFBTSxJQUFJRSxpQkFBaUIsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNuQztRQUNBLE9BQU8sQ0FBQyxDQUFDO01BQ1g7TUFDQTtNQUNBLE9BQU9GLGdCQUFnQixHQUFHRSxpQkFBaUI7SUFDN0M7O0lBRUE7SUFDQSxJQUFJTixJQUFJLENBQUNsQixJQUFJLEtBQUttQixLQUFLLENBQUNuQixJQUFJLEVBQUU7TUFDNUIsSUFBSWtCLElBQUksQ0FBQ2xCLElBQUksS0FBS0MsMEJBQWUsQ0FBQ0MsSUFBSSxFQUFFO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDO01BQ1g7TUFDQTtNQUNBO01BQ0EsT0FBTyxDQUFDO0lBQ1Y7O0lBRUE7SUFDQTtJQUNBLE9BQU9nQixJQUFJLENBQUNwQyxLQUFLLEdBQUdxQyxLQUFLLENBQUNyQyxLQUFLO0VBQ2pDLENBQUMsQ0FBQztFQUVGLElBQUlrQyxZQUFZLENBQUMvQyxNQUFNLEVBQUU7SUFDdkI7SUFDQSxPQUFPK0MsWUFBWSxDQUFDLENBQUMsQ0FBQztFQUN4QjtFQUNBO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU1MsaUJBQWlCQSxDQUFDQyxJQUEwQixFQUFtQjtFQUM3RSxJQUFJLENBQUMsSUFBQUMsb0JBQWEsRUFBQ0QsSUFBSSxDQUFDLEVBQUU7SUFDeEIsSUFBQUUsa0JBQU0sRUFBQyxpREFBaUQsQ0FBQztJQUN6RCxPQUFPLElBQUk7RUFDYixDQUFDLE1BQU0sSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osSUFBSSxDQUFDL0IsTUFBTSxDQUFDLEVBQUU7SUFDdEMsSUFBQWlDLGtCQUFNLEVBQUMsK0RBQStELENBQUM7SUFDdkUsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxNQUFNLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNKLElBQUksQ0FBQ0ssSUFBSSxDQUFDLElBQUksQ0FBQ0YsS0FBSyxDQUFDQyxPQUFPLENBQUNKLElBQUksQ0FBQ00sSUFBSSxDQUFDLEVBQUU7SUFDakUsSUFBQUosa0JBQU0sRUFBQyxxRUFBcUUsQ0FBQztJQUM3RSxPQUFPLElBQUk7RUFDYjtFQUVBLElBQU9qQyxNQUFNLEdBQWdCK0IsSUFBSSxDQUExQi9CLE1BQU07SUFBRW9DLElBQUksR0FBVUwsSUFBSSxDQUFsQkssSUFBSTtJQUFFQyxJQUFJLEdBQUlOLElBQUksQ0FBWk0sSUFBSTs7RUFFekI7RUFDQSxJQUFNQyxRQUFRLEdBQUd0QyxNQUFNLENBQUN1QyxLQUFLLENBQUMsVUFBQ3RCLENBQUMsRUFBRXVCLENBQUMsRUFBSztJQUN0QyxJQUFJLENBQUMsSUFBQVIsb0JBQWEsRUFBQ2YsQ0FBQyxDQUFDLEVBQUU7TUFDckIsSUFBQWdCLGtCQUFNLHFEQUFBUSxNQUFBLEtBQUFDLFFBQUEsYUFBMkR6QixDQUFDLEVBQUUsQ0FBQztNQUNyRWpCLE1BQU0sQ0FBQ3dDLENBQUMsQ0FBQyxHQUFHO1FBQUM1QixJQUFJLFlBQUE2QixNQUFBLENBQVlELENBQUMsQ0FBRTtRQUFFbkMsSUFBSSxFQUFFQywwQkFBZSxDQUFDcUM7TUFBTSxDQUFDO0lBQ2pFO0lBRUEsSUFBSSxDQUFDMUIsQ0FBQyxDQUFDTCxJQUFJLEVBQUU7TUFDWCxJQUFBcUIsa0JBQU0sMkNBQUFRLE1BQUEsQ0FBMENHLElBQUksQ0FBQ0MsU0FBUyxDQUFDNUIsQ0FBQyxDQUFDLENBQUUsQ0FBQztNQUNwRTtNQUNBakIsTUFBTSxDQUFDd0MsQ0FBQyxDQUFDLENBQUM1QixJQUFJLGFBQUE2QixNQUFBLENBQWFELENBQUMsQ0FBRTtJQUNoQztJQUVBLElBQUksQ0FBQ3ZCLENBQUMsQ0FBQ1osSUFBSSxJQUFJLENBQUNDLDBCQUFlLENBQUNXLENBQUMsQ0FBQ1osSUFBSSxDQUFDLEVBQUU7TUFDdkMsSUFBQTRCLGtCQUFNLHdCQUFBUSxNQUFBLENBQXVCeEIsQ0FBQyxDQUFDWixJQUFJLENBQUUsQ0FBQztNQUN0QyxPQUFPLEtBQUs7SUFDZDtJQUVBLElBQUksQ0FBQ1ksQ0FBQyxDQUFDNkIsWUFBWSxFQUFFO01BQ25CLElBQUFiLGtCQUFNLFdBQUFRLE1BQUEsQ0FBVUQsQ0FBQywwQkFBdUIsQ0FBQztNQUN6QyxPQUFPLEtBQUs7SUFDZDs7SUFFQTtJQUNBLElBQUl2QixDQUFDLENBQUNaLElBQUksS0FBS0MsMEJBQWUsQ0FBQ3lDLFNBQVMsRUFBRTtNQUN4QyxJQUFNQyxNQUFNLEdBQUcsQ0FDYlgsSUFBSSxHQUFHWSw0QkFBNEIsQ0FBQ1osSUFBSSxFQUFFRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUdVLHVCQUF1QixDQUFDZCxJQUFJLEVBQUVJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDdkZ2RCxHQUFHLENBQUMsVUFBQXhCLENBQUM7UUFBQSxPQUFLO1VBQUMwRixFQUFFLEVBQUUxRixDQUFDLENBQUMrRSxDQUFDO1FBQUMsQ0FBQztNQUFBLENBQUMsQ0FBQztNQUN4QixJQUFNWSxZQUFZLEdBQUdDLHNCQUFRLENBQUNDLGNBQWMsQ0FBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3ZELE9BQU9JLFlBQVksSUFBSUEsWUFBWSxDQUFDRyxRQUFRLEtBQUssTUFBTSxJQUFJSCxZQUFZLENBQUNJLE1BQU0sS0FBS3ZDLENBQUMsQ0FBQ3VDLE1BQU07SUFDN0Y7O0lBRUE7SUFDQSxJQUFJdkMsQ0FBQyxDQUFDWixJQUFJLEtBQUtDLDBCQUFlLENBQUNxQyxNQUFNLEVBQUU7TUFDckMsSUFBTUssT0FBTSxHQUFHLENBQ2JYLElBQUksR0FBR1ksNEJBQTRCLENBQUNaLElBQUksRUFBRUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHVSx1QkFBdUIsQ0FBQ2QsSUFBSSxFQUFFSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQ3ZGdkQsR0FBRyxDQUFDLFVBQUF4QixDQUFDO1FBQUEsT0FBSUEsQ0FBQyxDQUFDK0UsQ0FBQyxDQUFDO01BQUEsRUFBQztNQUNoQixPQUFPUSxPQUFNLENBQUNULEtBQUssQ0FBQyxVQUFBa0IsSUFBSTtRQUFBLE9BQUksQ0FBQyxJQUFBQyxzQkFBUyxFQUFDRCxJQUFJLENBQUM7TUFBQSxFQUFDO0lBQy9DO0lBRUEsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxDQUFDO0VBRUYsSUFBSW5CLFFBQVEsRUFBRTtJQUNaLE9BQU87TUFBQ0YsSUFBSSxFQUFKQSxJQUFJO01BQUVwQyxNQUFNLEVBQU5BLE1BQU07TUFBRXFDLElBQUksRUFBSkE7SUFBSSxDQUFDO0VBQzdCOztFQUVBO0VBQ0E7RUFDQSxJQUFNc0IsVUFBVSxHQUFHdEIsSUFBSSxHQUNuQixJQUFBdUIseUNBQTRCLEVBQzFCdkIsSUFBSSxFQUNKckMsTUFBTSxDQUFDZixHQUFHLENBQUMsVUFBQWdDLENBQUM7SUFBQSxPQUFJQSxDQUFDLENBQUNMLElBQUk7RUFBQSxFQUN4QixDQUFDLEdBQ0QsSUFBQWlELG9DQUF1QixFQUFDO0lBQ3RCN0QsTUFBTSxFQUFFQSxNQUFNLENBQUNmLEdBQUcsQ0FBQyxVQUFBZ0MsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ0wsSUFBSTtJQUFBLEVBQUM7SUFDL0J3QixJQUFJLEVBQUpBO0VBQ0YsQ0FBQyxDQUFDO0VBQ04sSUFBTTBCLFVBQVUsR0FBRzlELE1BQU0sQ0FBQ2YsR0FBRyxDQUFDLFVBQUFnQyxDQUFDO0lBQUEsT0FBSUEsQ0FBQyxDQUFDTCxJQUFJO0VBQUEsRUFBQztFQUMxQyxJQUFNbUQsSUFBSSxHQUFHLElBQUFDLDhCQUFpQixFQUFDTCxVQUFVLEVBQUVHLFVBQVUsQ0FBQztFQUN0RCxJQUFNRyxhQUFhLEdBQUdqRSxNQUFNLENBQUNmLEdBQUcsQ0FBQyxVQUFDZ0MsQ0FBQyxFQUFFdUIsQ0FBQztJQUFBLE9BQUFwRSxhQUFBLENBQUFBLGFBQUEsS0FDakM2QyxDQUFDO01BQ0paLElBQUksRUFBRTBELElBQUksQ0FBQ3ZCLENBQUMsQ0FBQyxDQUFDbkMsSUFBSTtNQUNsQm1ELE1BQU0sRUFBRU8sSUFBSSxDQUFDdkIsQ0FBQyxDQUFDLENBQUNnQixNQUFNO01BQ3RCVixZQUFZLEVBQUVpQixJQUFJLENBQUN2QixDQUFDLENBQUMsQ0FBQ007SUFBWTtFQUFBLENBQ2xDLENBQUM7RUFFSCxPQUFBMUUsYUFBQTtJQUFRNEIsTUFBTSxFQUFFaUUsYUFBYTtJQUFFN0IsSUFBSSxFQUFKQTtFQUFJLEdBQU1DLElBQUksR0FBRztJQUFDQSxJQUFJLEVBQUpBO0VBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RDtBQUVBLFNBQVNhLHVCQUF1QkEsQ0FBQ2QsSUFBaUIsRUFBRThCLFFBQWdCLEVBQUVDLEtBQWEsRUFBUztFQUMxRixJQUFNbkIsTUFBYSxHQUFHLEVBQUU7RUFDeEIsSUFBSVIsQ0FBQyxHQUFHLENBQUM7RUFDVCxPQUFPUSxNQUFNLENBQUMxRSxNQUFNLEdBQUc2RixLQUFLLElBQUkzQixDQUFDLEdBQUdKLElBQUksQ0FBQzlELE1BQU0sRUFBRTtJQUFBLElBQUE4RixPQUFBO0lBQy9DLElBQUksSUFBQUMsK0JBQWtCLEdBQUFELE9BQUEsR0FBQ2hDLElBQUksQ0FBQ0ksQ0FBQyxDQUFDLGNBQUE0QixPQUFBLHVCQUFQQSxPQUFBLENBQVVGLFFBQVEsQ0FBQyxDQUFDLEVBQUU7TUFDM0NsQixNQUFNLENBQUM5RSxJQUFJLENBQUNrRSxJQUFJLENBQUNJLENBQUMsQ0FBQyxDQUFDO0lBQ3RCO0lBQ0FBLENBQUMsRUFBRTtFQUNMO0VBQ0EsT0FBT1EsTUFBTTtBQUNmO0FBRUEsU0FBU0MsNEJBQTRCQSxDQUNuQ1osSUFBb0IsRUFDcEI2QixRQUFnQixFQUNoQkMsS0FBYSxFQUNOO0VBQ1AsSUFBTW5CLE1BQWEsR0FBRyxFQUFFO0VBQ3hCLElBQU1zQixPQUFPLEdBQUdqQyxJQUFJLENBQUM2QixRQUFRLENBQUMsQ0FBQzVGLE1BQU07RUFDckMsSUFBSWtFLENBQUMsR0FBRyxDQUFDO0VBQ1QsT0FBT1EsTUFBTSxDQUFDMUUsTUFBTSxHQUFHNkYsS0FBSyxJQUFJM0IsQ0FBQyxHQUFHOEIsT0FBTyxFQUFFO0lBQzNDLElBQUksSUFBQUQsK0JBQWtCLEVBQUNoQyxJQUFJLENBQUM2QixRQUFRLENBQUMsQ0FBQ0ssR0FBRyxDQUFDL0IsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUM3QyxJQUFNZ0MsR0FBRyxHQUFHbkMsSUFBSSxDQUFDcEQsR0FBRyxDQUFDLFVBQUF3RixHQUFHO1FBQUEsT0FBSUEsR0FBRyxDQUFDRixHQUFHLENBQUMvQixDQUFDLENBQUM7TUFBQSxFQUFDO01BQ3ZDUSxNQUFNLENBQUM5RSxJQUFJLENBQUNzRyxHQUFHLENBQUM7SUFDbEI7SUFDQWhDLENBQUMsRUFBRTtFQUNMO0VBQ0EsT0FBT1EsTUFBTTtBQUNmO0FBRUEsSUFBTTBCLFlBQVksR0FBRyxrQkFBa0I7QUFFaEMsSUFBTUMsWUFBWSxHQUFBaEYsT0FBQSxDQUFBZ0YsWUFBQSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLE9BQTBCO0VBQUEsT0FDckRBLE9BQU8sQ0FBQzNGLEdBQUcsQ0FBQyxVQUFBZ0MsQ0FBQztJQUFBLE9BQUE3QyxhQUFBLENBQUFBLGFBQUEsS0FDUjZDLENBQUM7TUFDSjRELEtBQUssRUFDSDVELENBQUMsQ0FBQ1osSUFBSSxLQUFLeUUsK0JBQW9CLENBQUNDLFNBQVMsSUFBSTlELENBQUMsQ0FBQ1osSUFBSSxLQUFLeUUsK0JBQW9CLENBQUNFLElBQUksR0FDN0UsSUFBQUMsdUJBQVksRUFBQyxJQUFBQyxzQkFBYyxFQUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQ3lELFlBQVksQ0FBQyxHQUM3Q3pELENBQUMsQ0FBQzREO0lBQUs7RUFBQSxDQUNiLENBQUM7QUFBQTtBQUVFLFNBQVNNLG9CQUFvQkEsQ0FBQ0MsU0FBa0IsRUFBbUI7RUFDeEUsSUFBTUMsWUFBWSxHQUFJRCxTQUFTLElBQUlFLHFCQUFVLENBQUNGLFNBQVMsQ0FBQyxDQUFDNUIsTUFBTSxDQUFDK0IsT0FBTyxJQUFLLEVBQUU7RUFDOUUsSUFBTUMsWUFBK0IsR0FBRzdILE1BQU0sQ0FBQzhILE1BQU0sQ0FBQ0MsMEJBQWUsQ0FBQyxDQUFDM0gsTUFBTSxDQUFDLFVBQUFMLENBQUM7SUFBQSxPQUM3RTJILFlBQVksQ0FBQ00sUUFBUSxDQUFDakksQ0FBQyxDQUFDMkMsSUFBSSxDQUFDO0VBQUEsQ0FDL0IsQ0FBQztFQUNELE9BQU9zRSxZQUFZLENBQUNhLFlBQVksQ0FBQztBQUNuQztBQUVPLElBQU1JLGVBQWUsR0FBQWpHLE9BQUEsQ0FBQWlHLGVBQUEsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSTVGLE1BQXVCLEVBQUU2RixTQUFpQixFQUFzQjtFQUFBLElBQUFDLFlBQUE7RUFDOUYsSUFBTVYsU0FBUyxJQUFBVSxZQUFBLEdBQUc5RixNQUFNLENBQUNRLElBQUksQ0FBQyxVQUFBUyxDQUFDO0lBQUEsT0FBSUEsQ0FBQyxDQUFDTCxJQUFJLEtBQUtpRixTQUFTO0VBQUEsRUFBQyxjQUFBQyxZQUFBLHVCQUF0Q0EsWUFBQSxDQUF3Q3pGLElBQUk7RUFDOUQsT0FBTzhFLG9CQUFvQixDQUFDQyxTQUFTLENBQUM7QUFDeEMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export type { ColorBreak, ColorBreakOrdinal, DomainQuantiles, DomainStops } from
|
|
|
38
38
|
export { DataRow } from './data-row';
|
|
39
39
|
export { getApplicationConfig, initApplicationConfig } from './application-config';
|
|
40
40
|
export type { KeplerApplicationConfig, BaseMapLibraryConfig, MapLibInstance, GetMapRef } from './application-config';
|
|
41
|
+
export type { DatabaseAdapter, DatabaseConnection } from './application-config-types';
|
|
41
42
|
export { isAppleDevice } from './browser-utils';
|
|
42
43
|
export { default as quickInsertionSort } from './quick-insertion-sort';
|
|
43
44
|
export type { KeplerTableModel } from './types';
|
package/dist/index.js
CHANGED
|
@@ -1044,4 +1044,4 @@ var _browserUtils = require("./browser-utils");
|
|
|
1044
1044
|
var _quickInsertionSort = _interopRequireDefault(require("./quick-insertion-sort"));
|
|
1045
1045
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
1046
1046
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
1047
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sb3JVdGlscyIsInJlcXVpcmUiLCJfbm90aWZpY2F0aW9uc1V0aWxzIiwiX2RvbVV0aWxzIiwiX2RvbVRvSW1hZ2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FnZ3JlZ2F0aW9uIiwiX3Bsb3QiLCJfZGF0YVV0aWxzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3N0cmluZ3MiLCJfdGltZSIsIl9wb3NpdGlvblV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9leHBvcnRNYXBIdG1sIiwiX2V4cG9ydFV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZm9ybWF0IiwiX2dsVXRpbHMiLCJfbG9jYWxlVXRpbHMiLCJfbWFwSW5mb1V0aWxzIiwiX21hcGJveEdsU3R5bGVFZGl0b3IiLCJfbWFwYm94VXRpbHMiLCJfb2JzZXJ2ZURpbWVuc2lvbnMiLCJfcHJvamVjdGlvblV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfdXRpbHMiLCJfZWZmZWN0VXRpbHMiLCJfbWFwYm94VXRpbHMyIiwiX21hcFV0aWxzIiwiX2Fycm93RGF0YUNvbnRhaW5lciIsIl9kYXRhQ29udGFpbmVyVXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfZGF0YVNjYWxlVXRpbHMiLCJfZGF0YVJvdyIsIl9hcHBsaWNhdGlvbkNvbmZpZyIsIl9icm93c2VyVXRpbHMiLCJfcXVpY2tJbnNlcnRpb25Tb3J0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBVVElMU1xuXG5leHBvcnQge1xuICBjb2xvck1heWJlVG9SR0IsXG4gIGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHksXG4gIGNyZWF0ZUxpbmVhckdyYWRpZW50LFxuICBoYXNDb2xvck1hcCxcbiAgaGV4VG9SZ2IsXG4gIGlzSGV4Q29sb3IsXG4gIGlzUmdiQ29sb3IsXG4gIG5vcm1hbGl6ZUNvbG9yLFxuICByZXZlcnNlQ29sb3JSYW5nZSxcbiAgcmdiVG9IZXgsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yLFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeVNlbGVjdGVkUGFsZXR0ZSxcbiAgcGFsZXR0ZUlzU3RlcHMsXG4gIHBhbGV0dGVJc1R5cGUsXG4gIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlLFxuICB1cGRhdGVDb2xvclJhbmdlQnlNYXRjaGluZ1BhbGV0dGUsXG4gIHVwZGF0ZUN1c3RvbUNvbG9yUmFuZ2VCeUNvbG9yVUksXG4gIGluaXRpYWxpemVDdXN0b21QYWxldHRlXG59IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuZXhwb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuZXhwb3J0IHtjcmVhdGVOb3RpZmljYXRpb24sIGV4cG9ydEltYWdlRXJyb3IsIHN1Y2Nlc3NOb3RpZmljYXRpb259IGZyb20gJy4vbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbmV4cG9ydCB7c2V0U3R5bGVTaGVldEJhc2VIcmVmfSBmcm9tICcuL2RvbS11dGlscyc7XG5leHBvcnQge2RlZmF1bHQgYXMgZG9tdG9pbWFnZX0gZnJvbSAnLi9kb20tdG8taW1hZ2UnO1xuZXhwb3J0IHtnZXRGcmVxdWVuY3ksIGdldE1vZGUsIGFnZ3JlZ2F0ZX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5leHBvcnQge1xuICBhZGp1c3RWYWx1ZVRvQW5pbWF0aW9uV2luZG93LFxuICBnZXRCaW5UaHJlc2hvbGRzLFxuICBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tRG9tYWluLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgcnVuR3B1RmlsdGVyRm9yUGxvdCxcbiAgdXBkYXRlVGltZUZpbHRlclBsb3RUeXBlXG59IGZyb20gJy4vcGxvdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgdHlwZSB7RmllbGRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ3MnO1xuZXhwb3J0IHtcbiAgU0FNUExFX1RJTUVMSU5FLFxuICBUSU1FTElORV9NT0RFUyxcbiAgVElNRV9JTlRFUlZBTFNfT1JERVJFRCxcbiAgTGF5ZXJUb0ZpbHRlclRpbWVJbnRlcnZhbCxcbiAgVGlsZVRpbWVJbnRlcnZhbCxcbiAgZ2V0VGltZWxpbmVGcm9tQW5pbWF0aW9uQ29uZmlnLFxuICBnZXRUaW1lbGluZUZyb21GaWx0ZXJcbn0gZnJvbSAnLi90aW1lJztcbmV4cG9ydCB7bWF5YmVIZXhUb0dlbywgZ2V0UG9zaXRpb25Gcm9tSGV4VmFsdWV9IGZyb20gJy4vcG9zaXRpb24tdXRpbHMnO1xuXG5leHBvcnQge1xuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZmluZERlZmF1bHRDb2xvckZpZWxkLFxuICBnZXRGaWVsZEZvcm1hdExhYmVscyxcbiAgZ2V0Rm9ybWF0TGFiZWxzLFxuICB2YWxpZGF0ZUlucHV0RGF0YVxufSBmcm9tICcuL2RhdGFzZXQtdXRpbHMnO1xuZXhwb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcbmV4cG9ydCB7XG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgY29udmVydFRvUG5nLFxuICBkYXRhVVJJdG9CbG9iLFxuICBkb3dubG9hZEZpbGUsXG4gIGV4cG9ydEh0bWwsXG4gIGV4cG9ydEltYWdlLFxuICBleHBvcnRKc29uLFxuICBleHBvcnRNYXAsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZGVmYXVsdCBhcyBleHBvcnRlcnMsXG4gIGdldE1hcEpTT04sXG4gIGdldFNjYWxlRnJvbUltYWdlU2l6ZSxcbiAgaXNNU0VkZ2Vcbn0gZnJvbSAnLi9leHBvcnQtdXRpbHMnO1xuZXhwb3J0IHtnZXRGb3JtYXRWYWx1ZSwgZ2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmV4cG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAnLi9nbC11dGlscyc7XG5leHBvcnQge2ZsYXR0ZW5NZXNzYWdlcywgbWVyZ2VNZXNzYWdlc30gZnJvbSAnLi9sb2NhbGUtdXRpbHMnO1xuZXhwb3J0IHtpc1ZhbGlkTWFwSW5mb30gZnJvbSAnLi9tYXAtaW5mby11dGlscyc7XG5leHBvcnQge1xuICBlZGl0Qm90dG9tTWFwU3R5bGUsXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvblxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcbmV4cG9ydCB7dmFsaWRhdGVUb2tlbn0gZnJvbSAnLi9tYXBib3gtdXRpbHMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB1c2VEaW1lbnNpb25zLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9uc1xufSBmcm9tICcuL29ic2VydmUtZGltZW5zaW9ucyc7XG5leHBvcnQgdHlwZSB7RGltZW5zaW9uc30gZnJvbSAnLi9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuZXhwb3J0IHtzbmFwVG9NYXJrcywgZ2V0VGltZUJpbnN9IGZyb20gJy4vcGxvdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24tdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGxpdC1tYXAtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIGNvbXB1dGVEZWNrRWZmZWN0cyxcbiAgZml4RWZmZWN0T3JkZXIsXG4gIHJlb3JkZXJFZmZlY3RPcmRlcixcbiAgdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzXG59IGZyb20gJy4vZWZmZWN0LXV0aWxzJztcblxuLy8gTWFwYm94XG5leHBvcnQge1xuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgdHJhbnNmb3JtUmVxdWVzdFxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuXG4vLyBNYXBcbmV4cG9ydCAqIGZyb20gJy4vbWFwLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgQXJyb3dEYXRhQ29udGFpbmVyLFxuICBhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlLFxuICBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGVcbn0gZnJvbSAnLi9hcnJvdy1kYXRhLWNvbnRhaW5lcic7XG5leHBvcnQgdHlwZSB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuZXhwb3J0IHtcbiAgRGF0YUZvcm0sXG4gIGNyZWF0ZURhdGFDb250YWluZXIsXG4gIGNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyLFxuICBnZXRTYW1wbGVEYXRhIGFzIGdldFNhbXBsZUNvbnRhaW5lckRhdGFcbn0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5leHBvcnQgdHlwZSB7RmlsdGVyQ2hhbmdlZCwgRmlsdGVyUmVzdWx0LCBkYXRhVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9maWx0ZXItdXRpbHMnO1xuXG5leHBvcnQge1xuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGNvbG9yQnJlYWtzVG9Db2xvck1hcCxcbiAgZ2V0TGF5ZXJDb2xvclNjYWxlLFxuICBnZXRMZWdlbmRPZlNjYWxlLFxuICBnZXRMaW5lYXJEb21haW4sXG4gIGdldExvZ0RvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0UXVhbnRpbGVEb21haW4sXG4gIGdldFNjYWxlRnVuY3Rpb24sXG4gIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSxcbiAgaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICBpc0RvbWFpblN0b3BzLFxuICBpc0RvbWFpblF1YW50aWxlLFxuICBnZXREb21haW5TdGVwc2J5Wm9vbSxcbiAgZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMsXG4gIGdldFF1YW50TGFiZWxGb3JtYXQsXG4gIGdldEhpc3RvZ3JhbURvbWFpbixcbiAgZ2V0UXVhbnRMZWdlbmRzLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yTWFwLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUsXG4gIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSxcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCxcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwXG59IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5leHBvcnQgdHlwZSB7Q29sb3JCcmVhaywgQ29sb3JCcmVha09yZGluYWwsIERvbWFpblF1YW50aWxlcywgRG9tYWluU3RvcHN9IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5cbmV4cG9ydCB7RGF0YVJvd30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8vIEFwcGxpY2F0aW9uIGNvbmZpZ1xuZXhwb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgaW5pdEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7XG4gIEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnLFxuICBCYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgTWFwTGliSW5zdGFuY2UsXG4gIEdldE1hcFJlZlxufSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5cbi8vIEJyb3dzZXIgdXRpbHNcbmV4cG9ydCB7aXNBcHBsZURldmljZX0gZnJvbSAnLi9icm93c2VyLXV0aWxzJztcblxuZXhwb3J0IHtkZWZhdWx0IGFzIHF1aWNrSW5zZXJ0aW9uU29ydH0gZnJvbSAnLi9xdWljay1pbnNlcnRpb24tc29ydCc7XG5cbmV4cG9ydCB0eXBlIHtLZXBsZXJUYWJsZU1vZGVsfSBmcm9tICcuL3R5cGVzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FBdUJBLElBQUFDLG1CQUFBLEdBQUFELE9BQUE7QUFJQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFXQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7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
|
|
1047
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sb3JVdGlscyIsInJlcXVpcmUiLCJfbm90aWZpY2F0aW9uc1V0aWxzIiwiX2RvbVV0aWxzIiwiX2RvbVRvSW1hZ2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FnZ3JlZ2F0aW9uIiwiX3Bsb3QiLCJfZGF0YVV0aWxzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3N0cmluZ3MiLCJfdGltZSIsIl9wb3NpdGlvblV0aWxzIiwiX2RhdGFzZXRVdGlscyIsIl9leHBvcnRNYXBIdG1sIiwiX2V4cG9ydFV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZm9ybWF0IiwiX2dsVXRpbHMiLCJfbG9jYWxlVXRpbHMiLCJfbWFwSW5mb1V0aWxzIiwiX21hcGJveEdsU3R5bGVFZGl0b3IiLCJfbWFwYm94VXRpbHMiLCJfb2JzZXJ2ZURpbWVuc2lvbnMiLCJfcHJvamVjdGlvblV0aWxzIiwiX3NwbGl0TWFwVXRpbHMiLCJfdXRpbHMiLCJfZWZmZWN0VXRpbHMiLCJfbWFwYm94VXRpbHMyIiwiX21hcFV0aWxzIiwiX2Fycm93RGF0YUNvbnRhaW5lciIsIl9kYXRhQ29udGFpbmVyVXRpbHMiLCJfZmlsdGVyVXRpbHMiLCJfZGF0YVNjYWxlVXRpbHMiLCJfZGF0YVJvdyIsIl9hcHBsaWNhdGlvbkNvbmZpZyIsIl9icm93c2VyVXRpbHMiLCJfcXVpY2tJbnNlcnRpb25Tb3J0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwibiIsIl9fcHJvdG9fXyIsImEiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaSIsInNldCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBVVElMU1xuXG5leHBvcnQge1xuICBjb2xvck1heWJlVG9SR0IsXG4gIGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHksXG4gIGNyZWF0ZUxpbmVhckdyYWRpZW50LFxuICBoYXNDb2xvck1hcCxcbiAgaGV4VG9SZ2IsXG4gIGlzSGV4Q29sb3IsXG4gIGlzUmdiQ29sb3IsXG4gIG5vcm1hbGl6ZUNvbG9yLFxuICByZXZlcnNlQ29sb3JSYW5nZSxcbiAgcmdiVG9IZXgsXG4gIGFkZEN1c3RvbVBhbGV0dGVDb2xvcixcbiAgcmVtb3ZlQ3VzdG9tUGFsZXR0ZUNvbG9yLFxuICBzb3J0Q3VzdG9tUGFsZXR0ZUNvbG9yLFxuICB1cGRhdGVDdXN0b21QYWxldHRlQ29sb3IsXG4gIHVwZGF0ZUNvbG9yUmFuZ2VCeVNlbGVjdGVkUGFsZXR0ZSxcbiAgcGFsZXR0ZUlzU3RlcHMsXG4gIHBhbGV0dGVJc1R5cGUsXG4gIHBhbGV0dGVJc0NvbG9yQmxpbmRTYWZlLFxuICB1cGRhdGVDb2xvclJhbmdlQnlNYXRjaGluZ1BhbGV0dGUsXG4gIHVwZGF0ZUN1c3RvbUNvbG9yUmFuZ2VCeUNvbG9yVUksXG4gIGluaXRpYWxpemVDdXN0b21QYWxldHRlXG59IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuZXhwb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXV0aWxzJztcblxuZXhwb3J0IHtjcmVhdGVOb3RpZmljYXRpb24sIGV4cG9ydEltYWdlRXJyb3IsIHN1Y2Nlc3NOb3RpZmljYXRpb259IGZyb20gJy4vbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbmV4cG9ydCB7c2V0U3R5bGVTaGVldEJhc2VIcmVmfSBmcm9tICcuL2RvbS11dGlscyc7XG5leHBvcnQge2RlZmF1bHQgYXMgZG9tdG9pbWFnZX0gZnJvbSAnLi9kb20tdG8taW1hZ2UnO1xuZXhwb3J0IHtnZXRGcmVxdWVuY3ksIGdldE1vZGUsIGFnZ3JlZ2F0ZX0gZnJvbSAnLi9hZ2dyZWdhdGlvbic7XG5leHBvcnQge1xuICBhZGp1c3RWYWx1ZVRvQW5pbWF0aW9uV2luZG93LFxuICBnZXRCaW5UaHJlc2hvbGRzLFxuICBoaXN0b2dyYW1Gcm9tVGhyZXNob2xkLFxuICBoaXN0b2dyYW1Gcm9tVmFsdWVzLFxuICBoaXN0b2dyYW1Gcm9tRG9tYWluLFxuICBoaXN0b2dyYW1Gcm9tT3JkaW5hbCxcbiAgcnVuR3B1RmlsdGVyRm9yUGxvdCxcbiAgdXBkYXRlVGltZUZpbHRlclBsb3RUeXBlXG59IGZyb20gJy4vcGxvdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgdHlwZSB7RmllbGRGb3JtYXR0ZXJ9IGZyb20gJy4vZGF0YS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ3MnO1xuZXhwb3J0IHtcbiAgU0FNUExFX1RJTUVMSU5FLFxuICBUSU1FTElORV9NT0RFUyxcbiAgVElNRV9JTlRFUlZBTFNfT1JERVJFRCxcbiAgTGF5ZXJUb0ZpbHRlclRpbWVJbnRlcnZhbCxcbiAgVGlsZVRpbWVJbnRlcnZhbCxcbiAgZ2V0VGltZWxpbmVGcm9tQW5pbWF0aW9uQ29uZmlnLFxuICBnZXRUaW1lbGluZUZyb21GaWx0ZXJcbn0gZnJvbSAnLi90aW1lJztcbmV4cG9ydCB7bWF5YmVIZXhUb0dlbywgZ2V0UG9zaXRpb25Gcm9tSGV4VmFsdWV9IGZyb20gJy4vcG9zaXRpb24tdXRpbHMnO1xuXG5leHBvcnQge1xuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZmluZERlZmF1bHRDb2xvckZpZWxkLFxuICBnZXRGaWVsZEZvcm1hdExhYmVscyxcbiAgZ2V0Rm9ybWF0TGFiZWxzLFxuICB2YWxpZGF0ZUlucHV0RGF0YVxufSBmcm9tICcuL2RhdGFzZXQtdXRpbHMnO1xuZXhwb3J0IHtleHBvcnRNYXBUb0hUTUx9IGZyb20gJy4vZXhwb3J0LW1hcC1odG1sJztcbmV4cG9ydCB7XG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgY29udmVydFRvUG5nLFxuICBkYXRhVVJJdG9CbG9iLFxuICBkb3dubG9hZEZpbGUsXG4gIGV4cG9ydEh0bWwsXG4gIGV4cG9ydEltYWdlLFxuICBleHBvcnRKc29uLFxuICBleHBvcnRNYXAsXG4gIGV4cG9ydFRvSnNvblN0cmluZyxcbiAgZGVmYXVsdCBhcyBleHBvcnRlcnMsXG4gIGdldE1hcEpTT04sXG4gIGdldFNjYWxlRnJvbUltYWdlU2l6ZSxcbiAgaXNNU0VkZ2Vcbn0gZnJvbSAnLi9leHBvcnQtdXRpbHMnO1xuZXhwb3J0IHtnZXRGb3JtYXRWYWx1ZSwgZ2V0RGVmYXVsdFRpbWVGb3JtYXR9IGZyb20gJy4vZm9ybWF0JztcbmV4cG9ydCB7c2V0TGF5ZXJCbGVuZGluZ30gZnJvbSAnLi9nbC11dGlscyc7XG5leHBvcnQge2ZsYXR0ZW5NZXNzYWdlcywgbWVyZ2VNZXNzYWdlc30gZnJvbSAnLi9sb2NhbGUtdXRpbHMnO1xuZXhwb3J0IHtpc1ZhbGlkTWFwSW5mb30gZnJvbSAnLi9tYXAtaW5mby11dGlscyc7XG5leHBvcnQge1xuICBlZGl0Qm90dG9tTWFwU3R5bGUsXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBnZXRTdHlsZURvd25sb2FkVXJsLFxuICBnZXRTdHlsZUltYWdlSWNvbixcbiAgbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eSxcbiAgc2NhbGVNYXBTdHlsZUJ5UmVzb2x1dGlvblxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtZ2wtc3R5bGUtZWRpdG9yJztcbmV4cG9ydCB7dmFsaWRhdGVUb2tlbn0gZnJvbSAnLi9tYXBib3gtdXRpbHMnO1xuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyB1c2VEaW1lbnNpb25zLFxuICBvYnNlcnZlRGltZW5zaW9ucyxcbiAgdW5vYnNlcnZlRGltZW5zaW9uc1xufSBmcm9tICcuL29ic2VydmUtZGltZW5zaW9ucyc7XG5leHBvcnQgdHlwZSB7RGltZW5zaW9uc30gZnJvbSAnLi9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuZXhwb3J0IHtzbmFwVG9NYXJrcywgZ2V0VGltZUJpbnN9IGZyb20gJy4vcGxvdCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3Rpb24tdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcGxpdC1tYXAtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7XG4gIGNvbXB1dGVEZWNrRWZmZWN0cyxcbiAgZml4RWZmZWN0T3JkZXIsXG4gIHJlb3JkZXJFZmZlY3RPcmRlcixcbiAgdmFsaWRhdGVFZmZlY3RQYXJhbWV0ZXJzXG59IGZyb20gJy4vZWZmZWN0LXV0aWxzJztcblxuLy8gTWFwYm94XG5leHBvcnQge1xuICBpc1N0eWxlVXNpbmdNYXBib3hUaWxlcyxcbiAgaXNTdHlsZVVzaW5nT3BlblN0cmVldE1hcFRpbGVzLFxuICBnZXRCYXNlTWFwTGlicmFyeSxcbiAgdHJhbnNmb3JtUmVxdWVzdFxufSBmcm9tICcuL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuXG4vLyBNYXBcbmV4cG9ydCAqIGZyb20gJy4vbWFwLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgQXJyb3dEYXRhQ29udGFpbmVyLFxuICBhcnJvd0RhdGFUeXBlVG9BbmFseXplckRhdGFUeXBlLFxuICBhcnJvd0RhdGFUeXBlVG9GaWVsZFR5cGVcbn0gZnJvbSAnLi9hcnJvdy1kYXRhLWNvbnRhaW5lcic7XG5leHBvcnQgdHlwZSB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci1pbnRlcmZhY2UnO1xuZXhwb3J0IHtcbiAgRGF0YUZvcm0sXG4gIGNyZWF0ZURhdGFDb250YWluZXIsXG4gIGNyZWF0ZUluZGV4ZWREYXRhQ29udGFpbmVyLFxuICBnZXRTYW1wbGVEYXRhIGFzIGdldFNhbXBsZUNvbnRhaW5lckRhdGFcbn0gZnJvbSAnLi9kYXRhLWNvbnRhaW5lci11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci11dGlscyc7XG5leHBvcnQgdHlwZSB7RmlsdGVyQ2hhbmdlZCwgRmlsdGVyUmVzdWx0LCBkYXRhVmFsdWVBY2Nlc3Nvcn0gZnJvbSAnLi9maWx0ZXItdXRpbHMnO1xuXG5leHBvcnQge1xuICBjb2xvck1hcFRvQ29sb3JCcmVha3MsXG4gIGNvbG9yQnJlYWtzVG9Db2xvck1hcCxcbiAgZ2V0TGF5ZXJDb2xvclNjYWxlLFxuICBnZXRMZWdlbmRPZlNjYWxlLFxuICBnZXRMaW5lYXJEb21haW4sXG4gIGdldExvZ0RvbWFpbixcbiAgZ2V0T3JkaW5hbERvbWFpbixcbiAgZ2V0UXVhbnRpbGVEb21haW4sXG4gIGdldFNjYWxlRnVuY3Rpb24sXG4gIGdldFZpc3VhbENoYW5uZWxTY2FsZUJ5Wm9vbSxcbiAgaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAsXG4gIGlzTnVtZXJpY0NvbG9yQnJlYWtzLFxuICBpc0RvbWFpblN0b3BzLFxuICBpc0RvbWFpblF1YW50aWxlLFxuICBnZXREb21haW5TdGVwc2J5Wm9vbSxcbiAgZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMsXG4gIGdldFF1YW50TGFiZWxGb3JtYXQsXG4gIGdldEhpc3RvZ3JhbURvbWFpbixcbiAgZ2V0UXVhbnRMZWdlbmRzLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yTWFwLFxuICBnZXRDYXRlZ29yaWNhbENvbG9yU2NhbGUsXG4gIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSxcbiAgY29sb3JNYXBUb0NhdGVnb3JpY2FsQ29sb3JCcmVha3MsXG4gIHJlc2V0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgsXG4gIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCxcbiAgcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcCxcbiAgYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwXG59IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5leHBvcnQgdHlwZSB7Q29sb3JCcmVhaywgQ29sb3JCcmVha09yZGluYWwsIERvbWFpblF1YW50aWxlcywgRG9tYWluU3RvcHN9IGZyb20gJy4vZGF0YS1zY2FsZS11dGlscyc7XG5cbmV4cG9ydCB7RGF0YVJvd30gZnJvbSAnLi9kYXRhLXJvdyc7XG5cbi8vIEFwcGxpY2F0aW9uIGNvbmZpZ1xuZXhwb3J0IHtnZXRBcHBsaWNhdGlvbkNvbmZpZywgaW5pdEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7XG4gIEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnLFxuICBCYXNlTWFwTGlicmFyeUNvbmZpZyxcbiAgTWFwTGliSW5zdGFuY2UsXG4gIEdldE1hcFJlZlxufSBmcm9tICcuL2FwcGxpY2F0aW9uLWNvbmZpZyc7XG5leHBvcnQgdHlwZSB7RGF0YWJhc2VBZGFwdGVyLCBEYXRhYmFzZUNvbm5lY3Rpb259IGZyb20gJy4vYXBwbGljYXRpb24tY29uZmlnLXR5cGVzJztcblxuLy8gQnJvd3NlciB1dGlsc1xuZXhwb3J0IHtpc0FwcGxlRGV2aWNlfSBmcm9tICcuL2Jyb3dzZXItdXRpbHMnO1xuXG5leHBvcnQge2RlZmF1bHQgYXMgcXVpY2tJbnNlcnRpb25Tb3J0fSBmcm9tICcuL3F1aWNrLWluc2VydGlvbi1zb3J0JztcblxuZXhwb3J0IHR5cGUge0tlcGxlclRhYmxlTW9kZWx9IGZyb20gJy4vdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUF1QkEsSUFBQUMsbUJBQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUos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
|