@kepler.gl/reducers 3.0.0-alpha.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -36,7 +16,12 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
36
16
 
37
17
  var _constants = require("@kepler.gl/constants");
38
18
 
39
- var _utils = require("@kepler.gl/utils");/**
19
+ var _utils = require("@kepler.gl/utils");
20
+
21
+ // SPDX-License-Identifier: MIT
22
+ // Copyright contributors to the kepler.gl project
23
+
24
+ /**
40
25
  * Minus sign used in tooltip formatting.
41
26
  * \u2212 or \u002D is the minus sign that d3-format uses for decimal number formatting
42
27
  * d3-format 2.0 uses \u002D
@@ -81,7 +66,7 @@ function autoFindTooltipFields(fields, maxDefaultTooltips) {
81
66
  type = _ref4.type;
82
67
  return name.replace(/[_,.]+/g, ' ').trim().split(' ').every(function (seg) {
83
68
  return !ptFields.includes(seg);
84
- }) && type !== _constants.ALL_FIELD_TYPES.geojson && type !== 'object';
69
+ }) && type !== _constants.ALL_FIELD_TYPES.geojson && type !== _constants.ALL_FIELD_TYPES.geoarrow && type !== 'object';
85
70
  });
86
71
  return fieldsToShow.slice(0, maxDefaultTooltips).map(function (_ref5) {
87
72
  var name = _ref5.name;
@@ -141,4 +126,4 @@ function getTooltipDisplayValue(_ref7) {
141
126
 
142
127
  return item !== null && item !== void 0 && item.format ? (0, _utils.getFormatter)(item === null || item === void 0 ? void 0 : item.format, field)(value) : field.displayFormat ? (0, _utils.getFormatter)(field.displayFormat, field)(value) : (0, _utils.parseFieldValue)(value, field.type);
143
128
  }
144
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcmFjdGlvbi11dGlscy50cyJdLCJuYW1lcyI6WyJUT09MVElQX01JTlVTX1NJR04iLCJORUdBVElWRV9TSUdOUyIsIkJSVVNIX0NPTkZJRyIsInJhbmdlIiwiZmluZEZpZWxkc1RvU2hvdyIsImZpZWxkcyIsImlkIiwibWF4RGVmYXVsdFRvb2x0aXBzIiwiZmllbGRzVG9TaG93IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIm5hbWUiLCJwdXNoIiwibGVuZ3RoIiwiYXV0b0ZpbmRUb29sdGlwRmllbGRzIiwicHRGaWVsZHMiLCJfbWVyZ2VGaWVsZFBhaXJzIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJmaWx0ZXIiLCJ0eXBlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsImV2ZXJ5Iiwic2VnIiwiaW5jbHVkZXMiLCJBTExfRklFTERfVFlQRVMiLCJnZW9qc29uIiwic2xpY2UiLCJtYXAiLCJmb3JtYXQiLCJwYWlycyIsInBhaXIiLCJnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUiLCJwcmltYXJ5RGF0YSIsImZpZWxkIiwiY29tcGFyZVR5cGUiLCJkYXRhIiwiZmllbGRJZHgiLCJkaXNwbGF5RGVsdGFWYWx1ZSIsImludGVnZXIiLCJyZWFsIiwiYmFzZURwIiwidmFsdWVBdCIsImRwIiwiZGVsdGFWYWx1ZSIsIkNPTVBBUkVfVFlQRVMiLCJSRUxBVElWRSIsImRlbHRhRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRTIiwiREVDSU1BTF9QRVJDRU5UX0ZVTExfMiIsIlRPT0xUSVBfS0VZIiwiZGlzcGxheUZvcm1hdCIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8zIiwiZGVsdGFGaXJzdENoYXIiLCJjaGFyQXQiLCJnZXRUb29sdGlwRGlzcGxheVZhbHVlIiwiaXRlbSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQVVBOztBQTlCQTtBQUNBO0FBQ0E7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Q0Y7O0FBRUQsU0FBTzBDLGlCQUFQO0FBQ0Q7O0FBRU0sU0FBU2lCLHNCQUFULFFBUUk7QUFBQSxNQVBUQyxJQU9TLFNBUFRBLElBT1M7QUFBQSxNQU5UdEIsS0FNUyxTQU5UQSxLQU1TO0FBQUEsTUFMVHVCLEtBS1MsU0FMVEEsS0FLUzs7QUFDVCxNQUFJLENBQUMsK0JBQW1CQSxLQUFuQixDQUFMLEVBQWdDO0FBQzlCLFdBQU8sRUFBUDtBQUNEOztBQUVELFNBQU9ELElBQUksU0FBSixJQUFBQSxJQUFJLFdBQUosSUFBQUEsSUFBSSxDQUFFM0IsTUFBTixHQUNILHlCQUFhMkIsSUFBYixhQUFhQSxJQUFiLHVCQUFhQSxJQUFJLENBQUUzQixNQUFuQixFQUEyQkssS0FBM0IsRUFBa0N1QixLQUFsQyxDQURHLEdBRUh2QixLQUFLLENBQUNpQixhQUFOLEdBQ0EseUJBQWFqQixLQUFLLENBQUNpQixhQUFuQixFQUFrQ2pCLEtBQWxDLEVBQXlDdUIsS0FBekMsQ0FEQSxHQUVBLDRCQUFnQkEsS0FBaEIsRUFBdUJ2QixLQUFLLENBQUNoQixJQUE3QixDQUpKO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge1xuICBERUZBVUxUX1RPT0xUSVBfRklFTERTLFxuICBBTExfRklFTERfVFlQRVMsXG4gIFRSSVBfUE9JTlRfRklFTERTLFxuICBUT09MVElQX0ZPUk1BVFMsXG4gIFRPT0xUSVBfS0VZLFxuICBDT01QQVJFX1RZUEVTXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtGaWVsZCwgVG9vbHRpcEZpZWxkLCBDb21wYXJlVHlwZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBEYXRhUm93LFxuICBwYXJzZUZpZWxkVmFsdWUsXG4gIGdldEZvcm1hdHRlcixcbiAgaXNOdW1iZXIsXG4gIGRlZmF1bHRGb3JtYXR0ZXIsXG4gIG5vdE51bGxvclVuZGVmaW5lZFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuLyoqXG4gKiBNaW51cyBzaWduIHVzZWQgaW4gdG9vbHRpcCBmb3JtYXR0aW5nLlxuICogXFx1MjIxMiBvciBcXHUwMDJEIGlzIHRoZSBtaW51cyBzaWduIHRoYXQgZDMtZm9ybWF0IHVzZXMgZm9yIGRlY2ltYWwgbnVtYmVyIGZvcm1hdHRpbmdcbiAqIGQzLWZvcm1hdCAyLjAgdXNlcyBcXHUwMDJEXG4gKi9cbmV4cG9ydCBjb25zdCBUT09MVElQX01JTlVTX1NJR04gPSAnXFx1MjIxMic7XG4vLyBib3RoIGFyZSBwb3NpYmxlIG5lZ2F0aXZlIHNpZ25zXG5leHBvcnQgY29uc3QgTkVHQVRJVkVfU0lHTlMgPSBbJ1xcdTAwMkQnLCAnXFx1MjIxMiddO1xuXG5leHBvcnQgY29uc3QgQlJVU0hfQ09ORklHOiB7XG4gIHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufSA9IHtcbiAgcmFuZ2U6IFswLCA1MF1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRmllbGRzVG9TaG93KHtcbiAgZmllbGRzLFxuICBpZCxcbiAgbWF4RGVmYXVsdFRvb2x0aXBzXG59OiB7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgaWQ6IHN0cmluZztcbiAgbWF4RGVmYXVsdFRvb2x0aXBzOiBudW1iZXI7XG59KToge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbn0ge1xuICAvLyBmaXJzdCBmaW5kIGRlZmF1bHQgdG9vbHRpcCBmaWVsZHMgZm9yIHRyaXBzXG4gIGNvbnN0IGZpZWxkc1RvU2hvdyA9IERFRkFVTFRfVE9PTFRJUF9GSUVMRFMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgaWYgKGZpZWxkcy5maW5kKCh7bmFtZX0pID0+IGN1cnIubmFtZSA9PT0gbmFtZSkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHByZXYucHVzaChjdXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZXY7XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIFtpZF06IGZpZWxkc1RvU2hvdy5sZW5ndGggPyBmaWVsZHNUb1Nob3cgOiBhdXRvRmluZFRvb2x0aXBGaWVsZHMoZmllbGRzLCBtYXhEZWZhdWx0VG9vbHRpcHMpXG4gIH07XG59XG5cbmZ1bmN0aW9uIGF1dG9GaW5kVG9vbHRpcEZpZWxkcyhmaWVsZHMsIG1heERlZmF1bHRUb29sdGlwcykge1xuICBjb25zdCBwdEZpZWxkcyA9IF9tZXJnZUZpZWxkUGFpcnMoVFJJUF9QT0lOVF9GSUVMRFMpO1xuICAvLyBmaWx0ZXIgb3V0IHRoZSBkZWZhdWx0IGZpZWxkcyB0aGF0IGNvbnRhaW5zIGxhdCBhbmQgbG5nIGFuZCBhbnkgZ2VvbWV0cnlcbiAgY29uc3QgZmllbGRzVG9TaG93ID0gZmllbGRzLmZpbHRlcihcbiAgICAoe25hbWUsIHR5cGV9KSA9PlxuICAgICAgbmFtZVxuICAgICAgICAucmVwbGFjZSgvW18sLl0rL2csICcgJylcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAuc3BsaXQoJyAnKVxuICAgICAgICAuZXZlcnkoc2VnID0+ICFwdEZpZWxkcy5pbmNsdWRlcyhzZWcpKSAmJlxuICAgICAgdHlwZSAhPT0gQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb24gJiZcbiAgICAgIHR5cGUgIT09ICdvYmplY3QnXG4gICk7XG5cbiAgcmV0dXJuIGZpZWxkc1RvU2hvdy5zbGljZSgwLCBtYXhEZWZhdWx0VG9vbHRpcHMpLm1hcCgoe25hbWV9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWUsXG4gICAgICBmb3JtYXQ6IG51bGxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gX21lcmdlRmllbGRQYWlycyhwYWlycykge1xuICByZXR1cm4gcGFpcnMucmVkdWNlKChwcmV2LCBwYWlyKSA9PiBbLi4ucHJldiwgLi4ucGFpcl0sIFtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSh7XG4gIHByaW1hcnlEYXRhLFxuICBmaWVsZCxcbiAgY29tcGFyZVR5cGUsXG4gIGRhdGEsXG4gIGZpZWxkSWR4XG59OiB7XG4gIGZpZWxkOiBGaWVsZDtcbiAgZGF0YTogRGF0YVJvdztcbiAgZmllbGRJZHg6IG51bWJlcjtcbiAgcHJpbWFyeURhdGE6IERhdGFSb3c7XG4gIGNvbXBhcmVUeXBlOiBDb21wYXJlVHlwZTtcbn0pOiBzdHJpbmcgfCBudWxsIHtcbiAgbGV0IGRpc3BsYXlEZWx0YVZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBpZiAoXG4gICAgcHJpbWFyeURhdGEgJiZcbiAgICAvLyBjb21wYXJpc29uIG1vZGUgb25seSB3b3JrcyBmb3IgbnVtZXJpYyBmaWVsZFxuICAgIChmaWVsZC50eXBlID09PSBBTExfRklFTERfVFlQRVMuaW50ZWdlciB8fCBmaWVsZC50eXBlID09PSBBTExfRklFTERfVFlQRVMucmVhbClcbiAgKSB7XG4gICAgY29uc3QgYmFzZURwID0gcHJpbWFyeURhdGEudmFsdWVBdChmaWVsZElkeCk7XG4gICAgY29uc3QgZHAgPSBkYXRhLnZhbHVlQXQoZmllbGRJZHgpO1xuICAgIGlmIChpc051bWJlcihiYXNlRHApICYmIGlzTnVtYmVyKGRwKSkge1xuICAgICAgY29uc3QgZGVsdGFWYWx1ZSA9IGNvbXBhcmVUeXBlID09PSBDT01QQVJFX1RZUEVTLlJFTEFUSVZFID8gZHAgLyBiYXNlRHAgLSAxIDogZHAgLSBiYXNlRHA7XG4gICAgICBjb25zdCBkZWx0YUZvcm1hdCA9XG4gICAgICAgIGNvbXBhcmVUeXBlID09PSBDT01QQVJFX1RZUEVTLlJFTEFUSVZFXG4gICAgICAgICAgPyBUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9QRVJDRU5UX0ZVTExfMltUT09MVElQX0tFWV1cbiAgICAgICAgICA6IGZpZWxkLmRpc3BsYXlGb3JtYXQgfHwgVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8zW1RPT0xUSVBfS0VZXTtcblxuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBnZXRGb3JtYXR0ZXIoZGVsdGFGb3JtYXQsIGZpZWxkKShkZWx0YVZhbHVlKTtcblxuICAgICAgLy8gc2FmZWx5IGNhc3Qgc3RyaW5nXG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGRlZmF1bHRGb3JtYXR0ZXIoZGlzcGxheURlbHRhVmFsdWUpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGRlbHRhRmlyc3RDaGFyID0gZGlzcGxheURlbHRhVmFsdWUuY2hhckF0KDApO1xuXG4gICAgICBpZiAoZGVsdGFGaXJzdENoYXIgIT09ICcrJyAmJiAhTkVHQVRJVkVfU0lHTlMuaW5jbHVkZXMoZGVsdGFGaXJzdENoYXIpKSB7XG4gICAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gYCske2Rpc3BsYXlEZWx0YVZhbHVlfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gVE9PTFRJUF9NSU5VU19TSUdOO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXNwbGF5RGVsdGFWYWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBEaXNwbGF5VmFsdWUoe1xuICBpdGVtLFxuICBmaWVsZCxcbiAgdmFsdWVcbn06IHtcbiAgaXRlbTogVG9vbHRpcEZpZWxkIHwgdW5kZWZpbmVkO1xuICBmaWVsZDogRmllbGQ7XG4gIHZhbHVlOiBhbnk7XG59KTogc3RyaW5nIHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW0/LmZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGl0ZW0/LmZvcm1hdCwgZmllbGQpKHZhbHVlKVxuICAgIDogZmllbGQuZGlzcGxheUZvcm1hdFxuICAgID8gZ2V0Rm9ybWF0dGVyKGZpZWxkLmRpc3BsYXlGb3JtYXQsIGZpZWxkKSh2YWx1ZSlcbiAgICA6IHBhcnNlRmllbGRWYWx1ZSh2YWx1ZSwgZmllbGQudHlwZSk7XG59XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcmFjdGlvbi11dGlscy50cyJdLCJuYW1lcyI6WyJUT09MVElQX01JTlVTX1NJR04iLCJORUdBVElWRV9TSUdOUyIsIkJSVVNIX0NPTkZJRyIsInJhbmdlIiwiZmluZEZpZWxkc1RvU2hvdyIsImZpZWxkcyIsImlkIiwibWF4RGVmYXVsdFRvb2x0aXBzIiwiZmllbGRzVG9TaG93IiwiREVGQVVMVF9UT09MVElQX0ZJRUxEUyIsInJlZHVjZSIsInByZXYiLCJjdXJyIiwiZmluZCIsIm5hbWUiLCJwdXNoIiwibGVuZ3RoIiwiYXV0b0ZpbmRUb29sdGlwRmllbGRzIiwicHRGaWVsZHMiLCJfbWVyZ2VGaWVsZFBhaXJzIiwiVFJJUF9QT0lOVF9GSUVMRFMiLCJmaWx0ZXIiLCJ0eXBlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpdCIsImV2ZXJ5Iiwic2VnIiwiaW5jbHVkZXMiLCJBTExfRklFTERfVFlQRVMiLCJnZW9qc29uIiwiZ2VvYXJyb3ciLCJzbGljZSIsIm1hcCIsImZvcm1hdCIsInBhaXJzIiwicGFpciIsImdldFRvb2x0aXBEaXNwbGF5RGVsdGFWYWx1ZSIsInByaW1hcnlEYXRhIiwiZmllbGQiLCJjb21wYXJlVHlwZSIsImRhdGEiLCJmaWVsZElkeCIsImRpc3BsYXlEZWx0YVZhbHVlIiwiaW50ZWdlciIsInJlYWwiLCJiYXNlRHAiLCJ2YWx1ZUF0IiwiZHAiLCJkZWx0YVZhbHVlIiwiQ09NUEFSRV9UWVBFUyIsIlJFTEFUSVZFIiwiZGVsdGFGb3JtYXQiLCJUT09MVElQX0ZPUk1BVFMiLCJERUNJTUFMX1BFUkNFTlRfRlVMTF8yIiwiVE9PTFRJUF9LRVkiLCJkaXNwbGF5Rm9ybWF0IiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzMiLCJkZWx0YUZpcnN0Q2hhciIsImNoYXJBdCIsImdldFRvb2x0aXBEaXNwbGF5VmFsdWUiLCJpdGVtIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQTs7QUFVQTs7QUFiQTtB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QVQsUUFRSTtBQUFBLE1BUFRDLElBT1MsU0FQVEEsSUFPUztBQUFBLE1BTlR0QixLQU1TLFNBTlRBLEtBTVM7QUFBQSxNQUxUdUIsS0FLUyxTQUxUQSxLQUtTOztBQUNULE1BQUksQ0FBQywrQkFBbUJBLEtBQW5CLENBQUwsRUFBZ0M7QUFDOUIsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBT0QsSUFBSSxTQUFKLElBQUFBLElBQUksV0FBSixJQUFBQSxJQUFJLENBQUUzQixNQUFOLEdBQ0gseUJBQWEyQixJQUFiLGFBQWFBLElBQWIsdUJBQWFBLElBQUksQ0FBRTNCLE1BQW5CLEVBQTJCSyxLQUEzQixFQUFrQ3VCLEtBQWxDLENBREcsR0FFSHZCLEtBQUssQ0FBQ2lCLGFBQU4sR0FDQSx5QkFBYWpCLEtBQUssQ0FBQ2lCLGFBQW5CLEVBQWtDakIsS0FBbEMsRUFBeUN1QixLQUF6QyxDQURBLEdBRUEsNEJBQWdCQSxLQUFoQixFQUF1QnZCLEtBQUssQ0FBQ2pCLElBQTdCLENBSko7QUFLRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7XG4gIERFRkFVTFRfVE9PTFRJUF9GSUVMRFMsXG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVFJJUF9QT0lOVF9GSUVMRFMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9LRVksXG4gIENPTVBBUkVfVFlQRVNcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQge0ZpZWxkLCBUb29sdGlwRmllbGQsIENvbXBhcmVUeXBlfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIERhdGFSb3csXG4gIHBhcnNlRmllbGRWYWx1ZSxcbiAgZ2V0Rm9ybWF0dGVyLFxuICBpc051bWJlcixcbiAgZGVmYXVsdEZvcm1hdHRlcixcbiAgbm90TnVsbG9yVW5kZWZpbmVkXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG4vKipcbiAqIE1pbnVzIHNpZ24gdXNlZCBpbiB0b29sdGlwIGZvcm1hdHRpbmcuXG4gKiBcXHUyMjEyIG9yIFxcdTAwMkQgaXMgdGhlIG1pbnVzIHNpZ24gdGhhdCBkMy1mb3JtYXQgdXNlcyBmb3IgZGVjaW1hbCBudW1iZXIgZm9ybWF0dGluZ1xuICogZDMtZm9ybWF0IDIuMCB1c2VzIFxcdTAwMkRcbiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xUSVBfTUlOVVNfU0lHTiA9ICdcXHUyMjEyJztcbi8vIGJvdGggYXJlIHBvc2libGUgbmVnYXRpdmUgc2lnbnNcbmV4cG9ydCBjb25zdCBORUdBVElWRV9TSUdOUyA9IFsnXFx1MDAyRCcsICdcXHUyMjEyJ107XG5cbmV4cG9ydCBjb25zdCBCUlVTSF9DT05GSUc6IHtcbiAgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG59ID0ge1xuICByYW5nZTogWzAsIDUwXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGaWVsZHNUb1Nob3coe1xuICBmaWVsZHMsXG4gIGlkLFxuICBtYXhEZWZhdWx0VG9vbHRpcHNcbn06IHtcbiAgZmllbGRzOiBGaWVsZFtdO1xuICBpZDogc3RyaW5nO1xuICBtYXhEZWZhdWx0VG9vbHRpcHM6IG51bWJlcjtcbn0pOiB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZ1tdO1xufSB7XG4gIC8vIGZpcnN0IGZpbmQgZGVmYXVsdCB0b29sdGlwIGZpZWxkcyBmb3IgdHJpcHNcbiAgY29uc3QgZmllbGRzVG9TaG93ID0gREVGQVVMVF9UT09MVElQX0ZJRUxEUy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICBpZiAoZmllbGRzLmZpbmQoKHtuYW1lfSkgPT4gY3Vyci5uYW1lID09PSBuYW1lKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJldi5wdXNoKGN1cnIpO1xuICAgIH1cbiAgICByZXR1cm4gcHJldjtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7XG4gICAgW2lkXTogZmllbGRzVG9TaG93Lmxlbmd0aCA/IGZpZWxkc1RvU2hvdyA6IGF1dG9GaW5kVG9vbHRpcEZpZWxkcyhmaWVsZHMsIG1heERlZmF1bHRUb29sdGlwcylcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXV0b0ZpbmRUb29sdGlwRmllbGRzKGZpZWxkcywgbWF4RGVmYXVsdFRvb2x0aXBzKSB7XG4gIGNvbnN0IHB0RmllbGRzID0gX21lcmdlRmllbGRQYWlycyhUUklQX1BPSU5UX0ZJRUxEUyk7XG4gIC8vIGZpbHRlciBvdXQgdGhlIGRlZmF1bHQgZmllbGRzIHRoYXQgY29udGFpbnMgbGF0IGFuZCBsbmcgYW5kIGFueSBnZW9tZXRyeVxuICBjb25zdCBmaWVsZHNUb1Nob3cgPSBmaWVsZHMuZmlsdGVyKFxuICAgICh7bmFtZSwgdHlwZX0pID0+XG4gICAgICBuYW1lXG4gICAgICAgIC5yZXBsYWNlKC9bXywuXSsvZywgJyAnKVxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5ldmVyeShzZWcgPT4gIXB0RmllbGRzLmluY2x1ZGVzKHNlZykpICYmXG4gICAgICB0eXBlICE9PSBBTExfRklFTERfVFlQRVMuZ2VvanNvbiAmJlxuICAgICAgdHlwZSAhPT0gQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93ICYmXG4gICAgICB0eXBlICE9PSAnb2JqZWN0J1xuICApO1xuXG4gIHJldHVybiBmaWVsZHNUb1Nob3cuc2xpY2UoMCwgbWF4RGVmYXVsdFRvb2x0aXBzKS5tYXAoKHtuYW1lfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZm9ybWF0OiBudWxsXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIF9tZXJnZUZpZWxkUGFpcnMocGFpcnMpIHtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocHJldiwgcGFpcikgPT4gWy4uLnByZXYsIC4uLnBhaXJdLCBbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwRGlzcGxheURlbHRhVmFsdWUoe1xuICBwcmltYXJ5RGF0YSxcbiAgZmllbGQsXG4gIGNvbXBhcmVUeXBlLFxuICBkYXRhLFxuICBmaWVsZElkeFxufToge1xuICBmaWVsZDogRmllbGQ7XG4gIGRhdGE6IERhdGFSb3c7XG4gIGZpZWxkSWR4OiBudW1iZXI7XG4gIHByaW1hcnlEYXRhOiBEYXRhUm93O1xuICBjb21wYXJlVHlwZTogQ29tcGFyZVR5cGU7XG59KTogc3RyaW5nIHwgbnVsbCB7XG4gIGxldCBkaXNwbGF5RGVsdGFWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKFxuICAgIHByaW1hcnlEYXRhICYmXG4gICAgLy8gY29tcGFyaXNvbiBtb2RlIG9ubHkgd29ya3MgZm9yIG51bWVyaWMgZmllbGRcbiAgICAoZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLmludGVnZXIgfHwgZmllbGQudHlwZSA9PT0gQUxMX0ZJRUxEX1RZUEVTLnJlYWwpXG4gICkge1xuICAgIGNvbnN0IGJhc2VEcCA9IHByaW1hcnlEYXRhLnZhbHVlQXQoZmllbGRJZHgpO1xuICAgIGNvbnN0IGRwID0gZGF0YS52YWx1ZUF0KGZpZWxkSWR4KTtcbiAgICBpZiAoaXNOdW1iZXIoYmFzZURwKSAmJiBpc051bWJlcihkcCkpIHtcbiAgICAgIGNvbnN0IGRlbHRhVmFsdWUgPSBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRSA/IGRwIC8gYmFzZURwIC0gMSA6IGRwIC0gYmFzZURwO1xuICAgICAgY29uc3QgZGVsdGFGb3JtYXQgPVxuICAgICAgICBjb21wYXJlVHlwZSA9PT0gQ09NUEFSRV9UWVBFUy5SRUxBVElWRVxuICAgICAgICAgID8gVE9PTFRJUF9GT1JNQVRTLkRFQ0lNQUxfUEVSQ0VOVF9GVUxMXzJbVE9PTFRJUF9LRVldXG4gICAgICAgICAgOiBmaWVsZC5kaXNwbGF5Rm9ybWF0IHx8IFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfM1tUT09MVElQX0tFWV07XG5cbiAgICAgIGRpc3BsYXlEZWx0YVZhbHVlID0gZ2V0Rm9ybWF0dGVyKGRlbHRhRm9ybWF0LCBmaWVsZCkoZGVsdGFWYWx1ZSk7XG5cbiAgICAgIC8vIHNhZmVseSBjYXN0IHN0cmluZ1xuICAgICAgZGlzcGxheURlbHRhVmFsdWUgPSBkZWZhdWx0Rm9ybWF0dGVyKGRpc3BsYXlEZWx0YVZhbHVlKSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBkZWx0YUZpcnN0Q2hhciA9IGRpc3BsYXlEZWx0YVZhbHVlLmNoYXJBdCgwKTtcblxuICAgICAgaWYgKGRlbHRhRmlyc3RDaGFyICE9PSAnKycgJiYgIU5FR0FUSVZFX1NJR05TLmluY2x1ZGVzKGRlbHRhRmlyc3RDaGFyKSkge1xuICAgICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IGArJHtkaXNwbGF5RGVsdGFWYWx1ZX1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5RGVsdGFWYWx1ZSA9IFRPT0xUSVBfTUlOVVNfU0lHTjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlzcGxheURlbHRhVmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwRGlzcGxheVZhbHVlKHtcbiAgaXRlbSxcbiAgZmllbGQsXG4gIHZhbHVlXG59OiB7XG4gIGl0ZW06IFRvb2x0aXBGaWVsZCB8IHVuZGVmaW5lZDtcbiAgZmllbGQ6IEZpZWxkO1xuICB2YWx1ZTogYW55O1xufSk6IHN0cmluZyB7XG4gIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJldHVybiBpdGVtPy5mb3JtYXRcbiAgICA/IGdldEZvcm1hdHRlcihpdGVtPy5mb3JtYXQsIGZpZWxkKSh2YWx1ZSlcbiAgICA6IGZpZWxkLmRpc3BsYXlGb3JtYXRcbiAgICA/IGdldEZvcm1hdHRlcihmaWVsZC5kaXNwbGF5Rm9ybWF0LCBmaWVsZCkodmFsdWUpXG4gICAgOiBwYXJzZUZpZWxkVmFsdWUodmFsdWUsIGZpZWxkLnR5cGUpO1xufVxuIl19
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -154,9 +134,9 @@ function getLayerHoverProp(_ref) {
154
134
  var object = hoverInfo.object,
155
135
  overlay = hoverInfo.layer; // deckgl layer to kepler-gl layer
156
136
 
157
- var layer = layers[overlay.props.idx];
137
+ var layer = layers[overlay.props.idx]; // NOTE: for binary format GeojsonLayer, deck will return object=null but hoverInfo.index >= 0
158
138
 
159
- if (object && layer && layer.getHoverData && layersToRender[layer.id]) {
139
+ if ((object || hoverInfo.index >= 0) && layer && layer.getHoverData && layersToRender[layer.id]) {
160
140
  // if layer is visible and have hovered data
161
141
  var dataId = layer.config.dataId;
162
142
 
@@ -167,7 +147,7 @@ function getLayerHoverProp(_ref) {
167
147
  var _datasets$dataId = datasets[dataId],
168
148
  dataContainer = _datasets$dataId.dataContainer,
169
149
  fields = _datasets$dataId.fields;
170
- var data = layer.getHoverData(object, dataContainer, fields);
150
+ var data = layer.getHoverData(object || hoverInfo.index, dataContainer, fields);
171
151
 
172
152
  if (!data) {
173
153
  return null;
@@ -361,4 +341,4 @@ function reorderLayerOrder(layerOrder, originLayerId, destinationLayerId) {
361
341
  function addLayerToLayerOrder(layerOrder, layerId) {
362
342
  return [layerId].concat((0, _toConsumableArray2["default"])(layerOrder));
363
343
  }
364
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllci11dGlscy50cyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGEiLCJpc1ZhbGlkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsInVuZGVmaW5lZCIsImhhc0FsbENvbHVtbnMiLCJjb25maWciLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiaXNWaXNpYmxlIiwiZXJyb3JNZXNzYWdlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwic3Vic3RyaW5nIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVycyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiZ2V0SG92ZXJEYXRhIiwiZmllbGRzIiwiZGF0YSIsImZpZWxkc1RvU2hvdyIsInJlbmRlckRlY2tHbExheWVyIiwibGF5ZXJDYWxsYmFja3MiLCJsYXllckluZGV4IiwiY2xpY2tlZCIsIm1hcFN0YXRlIiwiYW5pbWF0aW9uQ29uZmlnIiwibWFwTGF5ZXJzIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsInZpc2libGUiLCJyZW5kZXJMYXllciIsImlzTGF5ZXJSZW5kZXJhYmxlIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJzaG91bGRSZW5kZXJMYXllciIsImlzTGF5ZXJWaXNpYmxlIiwicHJlcGFyZUxheWVyc0ZvckRlY2siLCJhY2N1Iiwib3ZlcmxheVR5cGUiLCJPVkVSTEFZX1RZUEVfQ09OU1QiLCJkZWNrZ2wiLCJwcmVwYXJlTGF5ZXJzVG9SZW5kZXIiLCJnZXRDdXN0b21EZWNrTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJib3R0b21EZWNrTGF5ZXJzIiwidG9wRGVja0xheWVycyIsInRvcExheWVycyIsImJpbmRMYXllckNhbGxiYWNrcyIsImtleSIsInZhbCIsImNvbXB1dGVEZWNrTGF5ZXJzIiwib3B0aW9ucyIsInZpc1N0YXRlIiwibWFwU3R5bGUiLCJsYXllck9yZGVyIiwic3BsaXRNYXBzIiwibWFwSW5kZXgiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsInByaW1hcnlNYXAiLCJsYXllcnNGb3JEZWNrIiwiZWRpdG9ySW5mbyIsImRhdGFMYXllcnMiLCJsZW5ndGgiLCJjdXJyZW50TGF5ZXJzRm9yRGVjayIsInNsaWNlIiwicmV2ZXJzZSIsImZpbHRlciIsIm92ZXJsYXlzIiwibGF5ZXJJZCIsImZpbmRJbmRleCIsImJpbmRlZExheWVyQ2FsbGJhY2tzIiwibGF5ZXJPdmVybGF5IiwidmlzaWJsZUxheWVyR3JvdXBzIiwicHVzaCIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJnZXRGaWxsQ29sb3IiLCJjdXN0b21Cb3R0b21EZWNrTGF5ZXJzIiwiY3VzdG9tVG9wRGVja0xheWVycyIsImVkaXRvckxheWVyIiwiZ2V0TGF5ZXJPcmRlckZyb21MYXllcnMiLCJyZW9yZGVyTGF5ZXJPcmRlciIsIm9yaWdpbkxheWVySWQiLCJkZXN0aW5hdGlvbkxheWVySWQiLCJhY3RpdmVJbmRleCIsImluZGV4T2YiLCJvdmVySW5kZXgiLCJhZGRMYXllclRvTGF5ZXJPcmRlciJdLCJt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LENBQVc7QUFBQSxRQUFFSSxFQUFGLFNBQUVBLEVBQUY7QUFBQSxXQUFVQSxFQUFWO0FBQUEsR0FBWCxDQUFQO0FBQ0Q7O0FBRU0sU0FBU21HLGlCQUFULENBQ0w3QixVQURLLEVBRUw4QixhQUZLLEVBR0xDLGtCQUhLLEVBSW1CO0FBQ3hCLE1BQU1DLFdBQVcsR0FBR2hDLFVBQVUsQ0FBQ2lDLE9BQVgsQ0FBbUJILGFBQW5CLENBQXBCO0FBQ0EsTUFBTUksU0FBUyxHQUFHbEMsVUFBVSxDQUFDaUMsT0FBWCxDQUFtQkYsa0JBQW5CLENBQWxCO0FBRUEsU0FBTyx5QkFBVS9CLFVBQVYsRUFBc0JnQyxXQUF0QixFQUFtQ0UsU0FBbkMsQ0FBUDtBQUNEOztBQUVNLFNBQVNDLG9CQUFULENBQ0xuQyxVQURLLEVBRUxlLE9BRkssRUFHSztBQUNWLFVBQVFBLE9BQVIsNkNBQW9CZixVQUFwQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHthcnJheU1vdmV9IGZyb20gJ0BkbmQta2l0L3NvcnRhYmxlJztcbmltcG9ydCB7R0VPQ09ERVJfTEFZRVJfSUR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyLCBMYXllclByb3BzIGFzIERlY2tMYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7XG4gIEZpZWxkLFxuICBUb29sdGlwRmllbGQsXG4gIENvbXBhcmVUeXBlLFxuICBTcGxpdE1hcExheWVycyxcbiAgSW50ZXJhY3Rpb25Db25maWcsXG4gIEVkaXRvcixcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIFZpZXdwb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUsXG4gIExheWVyLFxuICBMYXllckNsYXNzZXNUeXBlLFxuICBPVkVSTEFZX1RZUEVfQ09OU1QsXG4gIGdldEVkaXRvckxheWVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcblxuaW1wb3J0IEtlcGxlclRhYmxlLCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7aXNGdW5jdGlvbiwgZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcywgRGF0YVJvd30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1RocmVlREJ1aWxkaW5nTGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvZGVja2dsLWxheWVycyc7XG5cbmV4cG9ydCB0eXBlIExheWVyc1RvUmVuZGVyID0ge1xuICBbbGF5ZXJJZDogc3RyaW5nXTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgPSB7cG9pbnRzOiBhbnlbXTsgY29sb3JWYWx1ZT86IGFueTsgZWxldmF0aW9uVmFsdWU/OiBhbnl9O1xuXG5leHBvcnQgdHlwZSBMYXllckhvdmVyUHJvcCA9IHtcbiAgZGF0YTogRGF0YVJvdyB8IEFnZ3JlZ2F0aW9uTGF5ZXJIb3ZlckRhdGEgfCBudWxsO1xuICBmaWVsZHM6IEZpZWxkW107XG4gIGZpZWxkc1RvU2hvdzogVG9vbHRpcEZpZWxkW107XG4gIGxheWVyOiBMYXllcjtcbiAgcHJpbWFyeURhdGE/OiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGNvbXBhcmVUeXBlPzogQ29tcGFyZVR5cGU7XG59O1xuXG4vKipcbiAqIEZpbmQgZGVmYXVsdCBsYXllcnMgZnJvbSBmaWVsZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmREZWZhdWx0TGF5ZXIoZGF0YXNldDogS2VwbGVyVGFibGUsIGxheWVyQ2xhc3NlczogTGF5ZXJDbGFzc2VzVHlwZSk6IExheWVyW10ge1xuICBpZiAoIWRhdGFzZXQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgbGF5ZXJQcm9wcyA9IChPYmplY3Qua2V5cyhsYXllckNsYXNzZXMpIGFzIEFycmF5PGtleW9mIExheWVyQ2xhc3Nlc1R5cGU+KS5yZWR1Y2UoXG4gICAgKHByZXZpb3VzLCBsYykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgID8gbGF5ZXJDbGFzc2VzW2xjXS5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCwgcHJldmlvdXMpXG4gICAgICAgICAgOiB7cHJvcHM6IFtdfTtcblxuICAgICAgY29uc3QgcHJvcHMgPSBBcnJheS5pc0FycmF5KHJlc3VsdCkgPyByZXN1bHQgOiByZXN1bHQucHJvcHMgfHwgW107XG4gICAgICBjb25zdCBmb3VuZExheWVycyA9IHJlc3VsdC5mb3VuZExheWVycyB8fCBwcmV2aW91cztcblxuICAgICAgcmV0dXJuIGZvdW5kTGF5ZXJzLmNvbmNhdChcbiAgICAgICAgcHJvcHMubWFwKHAgPT4gKHtcbiAgICAgICAgICAuLi5wLFxuICAgICAgICAgIHR5cGU6IGxjLFxuICAgICAgICAgIGRhdGFJZDogZGF0YXNldC5pZFxuICAgICAgICB9KSlcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXSBhcyBMYXllckNsYXNzZXNUeXBlW2tleW9mIExheWVyQ2xhc3Nlc1R5cGVdW11cbiAgKTtcblxuICAvLyBnbyB0aHJvdWdoIGFsbCBsYXllclByb3BzIHRvIGNyZWF0ZSBsYXllclxuICByZXR1cm4gbGF5ZXJQcm9wcy5tYXAocHJvcHMgPT4ge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogY2hlY2tpbmcgcHJvcHMudHlwZSAhPT0gbnVsbFxuICAgIGNvbnN0IGxheWVyID0gbmV3IGxheWVyQ2xhc3Nlc1twcm9wcy50eXBlXShwcm9wcyk7XG4gICAgcmV0dXJuIHR5cGVvZiBsYXllci5zZXRJbml0aWFsTGF5ZXJDb25maWcgPT09ICdmdW5jdGlvbicgJiYgZGF0YXNldC5kYXRhQ29udGFpbmVyXG4gICAgICA/IGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyhkYXRhc2V0KVxuICAgICAgOiBsYXllcjtcbiAgfSk7XG59XG5cbnR5cGUgTWluVmlzU3RhdGVGb3JMYXllckRhdGEgPSB7XG4gIGRhdGFzZXRzOiBWaXNTdGF0ZVsnZGF0YXNldHMnXTtcbiAgYW5pbWF0aW9uQ29uZmlnOiBWaXNTdGF0ZVsnYW5pbWF0aW9uQ29uZmlnJ107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBsYXllciBkYXRhIGJhc2VkIG9uIGxheWVyIHR5cGUsIGNvbCBDb25maWcsXG4gKiByZXR1cm4gdXBkYXRlZCBsYXllciBpZiBjb2xvckRvbWFpbiwgZGF0YU1hcCBoYXMgY2hhbmdlZC5cbiAqIEFsc28sIHJldHVybnMgdXBkYXRlZCBsYXllciBpbiBjYXNlIHRoZSBpbnB1dCBsYXllciB3YXMgaW4gaW52YWxpZCBzdGF0ZS5cbiAqIEFkZHMgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgbGF5ZXIgaW4gY2FzZSBvZiBhbiBleGNlcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMYXllckRhdGE8UyBleHRlbmRzIE1pblZpc1N0YXRlRm9yTGF5ZXJEYXRhPihcbiAgbGF5ZXI6IExheWVyLFxuICBzdGF0ZTogUyxcbiAgb2xkTGF5ZXJEYXRhPzogYW55XG4pOiB7XG4gIGxheWVyRGF0YTogYW55O1xuICBsYXllcjogTGF5ZXI7XG59IHtcbiAgbGV0IGxheWVyRGF0YTtcbiAgdHJ5IHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGxheWVyIHVwZGF0ZXMgZGF0YSBhZnRlciBhbiBlcnJvclxuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgbGF5ZXIuX29sZERhdGFVcGRhdGVUcmlnZ2VycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIWxheWVyLnR5cGUgfHwgIWxheWVyLmhhc0FsbENvbHVtbnMoKSB8fCAhbGF5ZXIuY29uZmlnLmRhdGFJZCkge1xuICAgICAgcmV0dXJuIHtsYXllciwgbGF5ZXJEYXRhOiB7fX07XG4gICAgfVxuXG4gICAgbGF5ZXJEYXRhID0gbGF5ZXIuZm9ybWF0TGF5ZXJEYXRhKHN0YXRlLmRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZGF0YSBmb3IgdGhlIGxheWVyIGlzIHVwZGF0ZWQgd2l0aG91dCBlcnJvcnNcbiAgICBpZiAoIWxheWVyLmlzVmFsaWQpIHtcbiAgICAgIC8vIFN3aXRjaCB0byB2aXNpYmxlIGFmdGVyIGFuIGVycm9yXG4gICAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgbGF5ZXIuaXNWYWxpZCA9IHRydWU7XG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbGF5ZXIgPSBsYXllci51cGRhdGVMYXllckNvbmZpZyh7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gICAgbGF5ZXIuaXNWYWxpZCA9IGZhbHNlO1xuXG4gICAgbGF5ZXIuZXJyb3JNZXNzYWdlID1cbiAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5tZXNzYWdlID8gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDEwMCkgOiAnVW5rbm93biBlcnJvcic7XG5cbiAgICBsYXllckRhdGEgPSB7fTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJEYXRhXG4gIH07XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIHByb3BzIHBhc3NlZCB0byBMYXllckhvdmVySW5mb1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbGF5ZXItdXRpbHMnKS5nZXRMYXllckhvdmVyUHJvcH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG92ZXJQcm9wKHtcbiAgaW50ZXJhY3Rpb25Db25maWcsXG4gIGhvdmVySW5mbyxcbiAgbGF5ZXJzLFxuICBsYXllcnNUb1JlbmRlcixcbiAgZGF0YXNldHNcbn06IHtcbiAgaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnO1xuICBob3ZlckluZm86IGFueTtcbiAgbGF5ZXJzOiBMYXllcltdO1xuICBsYXllcnNUb1JlbmRlcjogTGF5ZXJzVG9SZW5kZXI7XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbn0pOiBMYXllckhvdmVyUHJvcCB8IG51bGwge1xuICBpZiAoaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5lbmFibGVkICYmIGhvdmVySW5mbyAmJiBob3ZlckluZm8ucGlja2VkKSB7XG4gICAgLy8gaWYgYW55dGhpbmcgaG92ZXJlZFxuICAgIGNvbnN0IHtvYmplY3QsIGxheWVyOiBvdmVybGF5fSA9IGhvdmVySW5mbztcblxuICAgIC8vIGRlY2tnbCBsYXllciB0byBrZXBsZXItZ2wgbGF5ZXJcbiAgICBjb25zdCBsYXllciA9IGxheWVyc1tvdmVybGF5LnByb3BzLmlkeF07XG5cbiAgICBpZiAob2JqZWN0ICYmIGxheWVyICYmIGxheWVyLmdldEhvdmVyRGF0YSAmJiBsYXllcnNUb1JlbmRlcltsYXllci5pZF0pIHtcbiAgICAgIC8vIGlmIGxheWVyIGlzIHZpc2libGUgYW5kIGhhdmUgaG92ZXJlZCBkYXRhXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbmZpZzoge2RhdGFJZH1cbiAgICAgIH0gPSBsYXllcjtcbiAgICAgIGlmICghZGF0YUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qge2RhdGFDb250YWluZXIsIGZpZWxkc30gPSBkYXRhc2V0c1tkYXRhSWRdO1xuICAgICAgY29uc3QgZGF0YTogRGF0YVJvdyB8IG51bGwgPSBsYXllci5nZXRIb3ZlckRhdGEob2JqZWN0LCBkYXRhQ29udGFpbmVyLCBmaWVsZHMpO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gaW50ZXJhY3Rpb25Db25maWcudG9vbHRpcC5jb25maWcuZmllbGRzVG9TaG93W2RhdGFJZF07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGEsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZmllbGRzVG9TaG93LFxuICAgICAgICBsYXllclxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckRlY2tHbExheWVyKHByb3BzOiBhbnksIGxheWVyQ2FsbGJhY2tzOiB7W2tleTogc3RyaW5nXTogYW55fSkge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXIsXG4gICAgbGF5ZXJJbmRleCxcbiAgICBkYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIG1hcFN0YXRlLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBtYXBMYXllcnNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbbGF5ZXIuY29uZmlnLmRhdGFJZF07XG4gIGNvbnN0IHtncHVGaWx0ZXJ9ID0gZGF0YXNldCB8fCB7fTtcbiAgY29uc3Qgb2JqZWN0SG92ZXJlZCA9IGNsaWNrZWQgfHwgaG92ZXJJbmZvO1xuICBjb25zdCB2aXNpYmxlID0gIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pO1xuICAvLyBMYXllciBpcyBMYXllciBjbGFzc1xuICByZXR1cm4gbGF5ZXIucmVuZGVyTGF5ZXIoe1xuICAgIGRhdGEsXG4gICAgZ3B1RmlsdGVyLFxuICAgIGlkeDogbGF5ZXJJbmRleCxcbiAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICBsYXllckNhbGxiYWNrcyxcbiAgICBtYXBTdGF0ZSxcbiAgICBhbmltYXRpb25Db25maWcsXG4gICAgb2JqZWN0SG92ZXJlZCxcbiAgICB2aXNpYmxlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclJlbmRlcmFibGUobGF5ZXI6IExheWVyLCBsYXllckRhdGEpIHtcbiAgcmV0dXJuIGxheWVyLmlkICE9PSBHRU9DT0RFUl9MQVlFUl9JRCAmJiBsYXllci5zaG91bGRSZW5kZXJMYXllcihsYXllckRhdGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycykge1xuICByZXR1cm4gKFxuICAgIGxheWVyLmNvbmZpZy5pc1Zpc2libGUgJiZcbiAgICAvLyBpZiBsYXllci5pZCBpcyBub3QgaW4gbWFwTGF5ZXJzLCBkb24ndCByZW5kZXIgaXRcbiAgICAoIW1hcExheWVycyB8fCAobWFwTGF5ZXJzICYmIG1hcExheWVyc1tsYXllci5pZF0pKVxuICApO1xufVxuXG4vLyBQcmVwYXJlIGEgZGljdCBvZiBsYXllcnMgcmVuZGVyZWQgYnkgdGhlIGRlY2suZ2xcbi8vIE5vdGUsIGlzVmlzaWJsZTogZmFsc2UgbGF5ZXIgaXMgcGFzc2VkIHRvIGRlY2suZ2wgaGVyZVxuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNGb3JEZWNrKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddXG4pOiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59IHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTpcbiAgICAgICAgaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBsYXllci5vdmVybGF5VHlwZSA9PT0gT1ZFUkxBWV9UWVBFX0NPTlNULmRlY2tnbFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIHJlbmRlcmVkIGxheWVycyByZW5kZXJlZCBpbiB0aGUgbWFwXG4vLyBUaGlzIGluY2x1ZGVzIG9ubHkgdGhlIHZpc2liaWxlIGxheWVycyBmb3Igc2luZ2xlIG1hcCB2aWV3IGFuZCBzcGxpdCBtYXAgdmlld1xuLy8gcmV0dXJuIHtbaWRdOiB0cnVlIFxcIGZhbHNlfVxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVMYXllcnNUb1JlbmRlcihcbiAgbGF5ZXJzOiBMYXllcltdLFxuICBsYXllckRhdGE6IFZpc1N0YXRlWydsYXllckRhdGEnXSxcbiAgbWFwTGF5ZXJzPzogU3BsaXRNYXBMYXllcnMgfCB1bmRlZmluZWQgfCBudWxsXG4pOiBMYXllcnNUb1JlbmRlciB7XG4gIHJldHVybiBsYXllcnMucmVkdWNlKFxuICAgIChhY2N1LCBsYXllciwgaWR4KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtsYXllci5pZF06IGlzTGF5ZXJSZW5kZXJhYmxlKGxheWVyLCBsYXllckRhdGFbaWR4XSkgJiYgaXNMYXllclZpc2libGUobGF5ZXIsIG1hcExheWVycylcbiAgICB9KSxcbiAgICB7fVxuICApO1xufVxuXG50eXBlIEN1c3RvbURlY2tMYXllciA9IERlY2tMYXllcjxEZWNrTGF5ZXJQcm9wcz47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzPzogYW55KTogW0N1c3RvbURlY2tMYXllcltdLCBDdXN0b21EZWNrTGF5ZXJbXV0ge1xuICBjb25zdCBib3R0b21EZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8ubGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LmxheWVycygpXG4gICAgOiBbXTtcbiAgY29uc3QgdG9wRGVja0xheWVycyA9IEFycmF5LmlzQXJyYXkoZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnNcbiAgICA6IGlzRnVuY3Rpb24oZGVja0dsUHJvcHM/LnRvcExheWVycylcbiAgICA/IGRlY2tHbFByb3BzPy50b3BMYXllcnMoKVxuICAgIDogW107XG5cbiAgcmV0dXJuIFtib3R0b21EZWNrTGF5ZXJzLCB0b3BEZWNrTGF5ZXJzXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tcHV0ZURlY2tMYXllcnNQcm9wcyA9IHtcbiAgbWFwSW5kZXg/OiBudW1iZXI7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIHByaW1hcnlNYXA/OiBib29sZWFuO1xuICBsYXllcnNGb3JEZWNrPzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuICBlZGl0b3JJbmZvPzoge1xuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIGVkaXRvck1lbnVBY3RpdmU6IGJvb2xlYW47XG4gICAgb25TZXRGZWF0dXJlczogKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IGFueTtcbiAgICBzZXRTZWxlY3RlZEZlYXR1cmU6IChcbiAgICAgIGZlYXR1cmU6IEZlYXR1cmUgfCBudWxsLFxuICAgICAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0XG4gICAgKSA9PiBhbnk7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb246IHtcbiAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgIGZlYXR1cmVzOiBGZWF0dXJlW107XG4gICAgfTtcbiAgICBzZWxlY3RlZEZlYXR1cmVJbmRleGVzOiBudW1iZXJbXTtcbiAgICB2aWV3cG9ydDogVmlld3BvcnQ7XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYmluZExheWVyQ2FsbGJhY2tzKGxheWVyQ2FsbGJhY2tzOiBMYXllckNhbGxiYWNrcyA9IHt9LCBpZHg6IG51bWJlcikge1xuICByZXR1cm4gT2JqZWN0LmtleXMobGF5ZXJDYWxsYmFja3MpLnJlZHVjZShcbiAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgLi4uYWNjdSxcbiAgICAgIFtrZXldOiB2YWwgPT4gbGF5ZXJDYWxsYmFja3Nba2V5XShpZHgsIHZhbClcbiAgICB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCAoX2lkeDogbnVtYmVyLCB2YWw6IGFueSkgPT4gdm9pZD5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJDYWxsYmFja3MgPSB7XG4gIG9uTGF5ZXJIb3Zlcj86IChpZHg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdm9pZDtcbiAgb25TZXRMYXllckRvbWFpbj86IChpZHg6IG51bWJlciwgdmFsdWU6IGFueSkgPT4gdm9pZDtcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZURlY2tMYXllcnMoXG4gIHt2aXNTdGF0ZSwgbWFwU3RhdGUsIG1hcFN0eWxlfTogYW55LFxuICBvcHRpb25zPzogQ29tcHV0ZURlY2tMYXllcnNQcm9wcyxcbiAgbGF5ZXJDYWxsYmFja3M/OiBMYXllckNhbGxiYWNrcyxcbiAgZGVja0dsUHJvcHM/OiBhbnlcbik6IExheWVyW10ge1xuICBjb25zdCB7XG4gICAgZGF0YXNldHMsXG4gICAgbGF5ZXJzLFxuICAgIGxheWVyT3JkZXIsXG4gICAgbGF5ZXJEYXRhLFxuICAgIGhvdmVySW5mbyxcbiAgICBjbGlja2VkLFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBzcGxpdE1hcHNcbiAgfSA9IHZpc1N0YXRlO1xuXG4gIGNvbnN0IHttYXBJbmRleCwgbWFwYm94QXBpQWNjZXNzVG9rZW4sIG1hcGJveEFwaVVybCwgcHJpbWFyeU1hcCwgbGF5ZXJzRm9yRGVjaywgZWRpdG9ySW5mb30gPVxuICAgIG9wdGlvbnMgfHwge307XG5cbiAgbGV0IGRhdGFMYXllcnM6IGFueVtdID0gW107XG5cbiAgaWYgKGxheWVyRGF0YSAmJiBsYXllckRhdGEubGVuZ3RoKSB7XG4gICAgY29uc3QgbWFwTGF5ZXJzID0gZ2V0TWFwTGF5ZXJzRnJvbVNwbGl0TWFwcyhzcGxpdE1hcHMsIG1hcEluZGV4IHx8IDApO1xuXG4gICAgY29uc3QgY3VycmVudExheWVyc0ZvckRlY2sgPSBsYXllcnNGb3JEZWNrIHx8IHByZXBhcmVMYXllcnNGb3JEZWNrKGxheWVycywgbGF5ZXJEYXRhKTtcblxuICAgIGRhdGFMYXllcnMgPSBsYXllck9yZGVyXG4gICAgICAuc2xpY2UoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbHRlcihpZCA9PiBjdXJyZW50TGF5ZXJzRm9yRGVja1tpZF0pXG4gICAgICAucmVkdWNlKChvdmVybGF5cywgbGF5ZXJJZCkgPT4ge1xuICAgICAgICBjb25zdCBsYXllckluZGV4ID0gbGF5ZXJzLmZpbmRJbmRleCgoe2lkfSkgPT4gaWQgPT09IGxheWVySWQpO1xuICAgICAgICBjb25zdCBiaW5kZWRMYXllckNhbGxiYWNrcyA9IGxheWVyQ2FsbGJhY2tzXG4gICAgICAgICAgPyBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3MsIGxheWVySW5kZXgpXG4gICAgICAgICAgOiB7fTtcbiAgICAgICAgY29uc3QgbGF5ZXIgPSBsYXllcnNbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsYXllckRhdGFbbGF5ZXJJbmRleF07XG4gICAgICAgIGNvbnN0IGxheWVyT3ZlcmxheSA9IHJlbmRlckRlY2tHbExheWVyKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRhdGFzZXRzLFxuICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICBsYXllckluZGV4LFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIGhvdmVySW5mbyxcbiAgICAgICAgICAgIGNsaWNrZWQsXG4gICAgICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgICAgICAgICAgbWFwTGF5ZXJzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBiaW5kZWRMYXllckNhbGxiYWNrc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICBpZiAoIXByaW1hcnlNYXApIHtcbiAgICByZXR1cm4gZGF0YUxheWVycztcbiAgfVxuXG4gIGlmIChcbiAgICBtYXBTdHlsZT8udmlzaWJsZUxheWVyR3JvdXBzWyczZCBidWlsZGluZyddICYmXG4gICAgcHJpbWFyeU1hcCAmJlxuICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuICYmXG4gICAgbWFwYm94QXBpVXJsXG4gICkge1xuICAgIGRhdGFMYXllcnMucHVzaChcbiAgICAgIG5ldyBUaHJlZURCdWlsZGluZ0xheWVyKHtcbiAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgIGdldEZpbGxDb2xvcjogbWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvclxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBjb25zdCBbY3VzdG9tQm90dG9tRGVja0xheWVycywgY3VzdG9tVG9wRGVja0xheWVyc10gPSBnZXRDdXN0b21EZWNrTGF5ZXJzKGRlY2tHbFByb3BzKTtcblxuICBjb25zdCBlZGl0b3JMYXllcjogYW55W10gPSBbXTtcbiAgaWYgKGVkaXRvckluZm8pIHtcbiAgICBlZGl0b3JMYXllci5wdXNoKFxuICAgICAgZ2V0RWRpdG9yTGF5ZXIoe1xuICAgICAgICAuLi5lZGl0b3JJbmZvXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gWy4uLmN1c3RvbUJvdHRvbURlY2tMYXllcnMsIC4uLmRhdGFMYXllcnMsIC4uLmN1c3RvbVRvcERlY2tMYXllcnMsIC4uLmVkaXRvckxheWVyXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyT3JkZXJGcm9tTGF5ZXJzPFQgZXh0ZW5kcyB7aWQ6IHN0cmluZ30+KGxheWVyczogVFtdKTogc3RyaW5nW10ge1xuICByZXR1cm4gbGF5ZXJzLm1hcCgoe2lkfSkgPT4gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVvcmRlckxheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIG9yaWdpbkxheWVySWQ6IHN0cmluZyxcbiAgZGVzdGluYXRpb25MYXllcklkOiBzdHJpbmdcbik6IFZpc1N0YXRlWydsYXllck9yZGVyJ10ge1xuICBjb25zdCBhY3RpdmVJbmRleCA9IGxheWVyT3JkZXIuaW5kZXhPZihvcmlnaW5MYXllcklkKTtcbiAgY29uc3Qgb3ZlckluZGV4ID0gbGF5ZXJPcmRlci5pbmRleE9mKGRlc3RpbmF0aW9uTGF5ZXJJZCk7XG5cbiAgcmV0dXJuIGFycmF5TW92ZShsYXllck9yZGVyLCBhY3RpdmVJbmRleCwgb3ZlckluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZExheWVyVG9MYXllck9yZGVyKFxuICBsYXllck9yZGVyOiBWaXNTdGF0ZVsnbGF5ZXJPcmRlciddLFxuICBsYXllcklkOiBzdHJpbmdcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFtsYXllcklkLCAuLi5sYXllck9yZGVyXTtcbn1cbiJdfQ==
344
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXllci11dGlscy50cyJdLCJuYW1lcyI6WyJmaW5kRGVmYXVsdExheWVyIiwiZGF0YXNldCIsImxheWVyQ2xhc3NlcyIsImxheWVyUHJvcHMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicHJldmlvdXMiLCJsYyIsInJlc3VsdCIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsInByb3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm91bmRMYXllcnMiLCJjb25jYXQiLCJtYXAiLCJwIiwidHlwZSIsImRhdGFJZCIsImlkIiwibGF5ZXIiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJkYXRhQ29udGFpbmVyIiwiY2FsY3VsYXRlTGF5ZXJEYXRhIiwic3RhdGUiLCJvbGRMYXllckRhdGEiLCJsYXllckRhdGEiLCJpc1ZhbGlkIiwiX29sZERhdGFVcGRhdGVUcmlnZ2VycyIsInVuZGVmaW5lZCIsImhhc0FsbENvbHVtbnMiLCJjb25maWciLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiaXNWaXNpYmxlIiwiZXJyb3JNZXNzYWdlIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwic3Vic3RyaW5nIiwiZ2V0TGF5ZXJIb3ZlclByb3AiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImhvdmVySW5mbyIsImxheWVycyIsImxheWVyc1RvUmVuZGVyIiwidG9vbHRpcCIsImVuYWJsZWQiLCJwaWNrZWQiLCJvYmplY3QiLCJvdmVybGF5IiwiaWR4IiwiaW5kZXgiLCJnZXRIb3ZlckRhdGEiLCJmaWVsZHMiLCJkYXRhIiwiZmllbGRzVG9TaG93IiwicmVuZGVyRGVja0dsTGF5ZXIiLCJsYXllckNhbGxiYWNrcyIsImxheWVySW5kZXgiLCJjbGlja2VkIiwibWFwU3RhdGUiLCJhbmltYXRpb25Db25maWciLCJtYXBMYXllcnMiLCJncHVGaWx0ZXIiLCJvYmplY3RIb3ZlcmVkIiwidmlzaWJsZSIsInJlbmRlckxheWVyIiwiaXNMYXllclJlbmRlcmFibGUiLCJHRU9DT0RFUl9MQVlFUl9JRCIsInNob3VsZFJlbmRlckxheWVyIiwiaXNMYXllclZpc2libGUiLCJwcmVwYXJlTGF5ZXJzRm9yRGVjayIsImFjY3UiLCJvdmVybGF5VHlwZSIsIk9WRVJMQVlfVFlQRV9DT05TVCIsImRlY2tnbCIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsImdldEN1c3RvbURlY2tMYXllcnMiLCJkZWNrR2xQcm9wcyIsImJvdHRvbURlY2tMYXllcnMiLCJ0b3BEZWNrTGF5ZXJzIiwidG9wTGF5ZXJzIiwiYmluZExheWVyQ2FsbGJhY2tzIiwia2V5IiwidmFsIiwiY29tcHV0ZURlY2tMYXllcnMiLCJvcHRpb25zIiwidmlzU3RhdGUiLCJtYXBTdHlsZSIsImxheWVyT3JkZXIiLCJzcGxpdE1hcHMiLCJtYXBJbmRleCIsIm1hcGJveEFwaUFjY2Vzc1Rva2VuIiwibWFwYm94QXBpVXJsIiwicHJpbWFyeU1hcCIsImxheWVyc0ZvckRlY2siLCJlZGl0b3JJbmZvIiwiZGF0YUxheWVycyIsImxlbmd0aCIsImN1cnJlbnRMYXllcnNGb3JEZWNrIiwic2xpY2UiLCJyZXZlcnNlIiwiZmlsdGVyIiwib3ZlcmxheXMiLCJsYXllcklkIiwiZmluZEluZGV4IiwiYmluZGVkTGF5ZXJDYWxsYmFja3MiLCJsYXllck92ZXJsYXkiLCJ2aXNpYmxlTGF5ZXJHcm91cHMiLCJwdXNoIiwiVGhyZWVEQnVpbGRpbmdMYXllciIsInRocmVlREJ1aWxkaW5nQ29sb3IiLCJ1cGRhdGVUcmlnZ2VycyIsImdldEZpbGxDb2xvciIsImN1c3RvbUJvdHRvbURlY2tMYXllcnMiLCJjdXN0b21Ub3BEZWNrTGF5ZXJzIiwiZWRpdG9yTGF5ZXIiLCJnZXRMYXllck9yZGVyRnJvbUxheWVycyIsInJlb3JkZXJMYXllck9yZGVyIiwib3JpZ2luTGF5ZXJJZCIsImRlc3RpbmF0aW9uTGF5ZXJJZCIsImFjdGl2ZUluZGV4IiwiaW5kZXhPZiIsIm92ZXJJbmRleCIsImFkZExheWVyVG9MYXllck9yZGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBYUE7O0FBVUE7O0FBQ0E7Ozs7OztBQWlCQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQSxnQkFBVCxDQUEwQkMsT0FBMUIsRUFBZ0RDLFlBQWhELEVBQXlGO0FBQzlGLE1BQUksQ0FBQ0QsT0FBTCxFQUFjO0FBQ1osV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsTUFBTUUsVUFBVSxHQUFJQyxNQUFNLENBQUNDLElBQVAsQ0FBWUgsWUFBWixDQUFELENBQTZESSxNQUE3RCxDQUNqQixVQUFDQyxRQUFELEVBQVdDLEVBQVgsRUFBa0I7QUFDaEIsUUFBTUMsTUFBd0MsR0FDNUMsT0FBT1AsWUFBWSxDQUFDTSxFQUFELENBQVosQ0FBaUJFLHFCQUF4QixLQUFrRCxVQUFsRCxHQUNJUixZQUFZLENBQUNNLEVBQUQsQ0FBWixDQUFpQkUscUJBQWpCLENBQXVDVCxPQUF2QyxFQUFnRE0sUUFBaEQsQ0FESixHQUVJO0FBQUNJLE1BQUFBLEtBQUssRUFBRTtBQUFSLEtBSE47QUFLQSxRQUFNQSxLQUFLLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSixNQUFkLElBQXdCQSxNQUF4QixHQUFpQ0EsTUFBTSxDQUFDRSxLQUFQLElBQWdCLEVBQS9EO0FBQ0EsUUFBTUcsV0FBVyxHQUFHTCxNQUFNLENBQUNLLFdBQVAsSUFBc0JQLFFBQTFDO0FBRUEsV0FBT08sV0FBVyxDQUFDQyxNQUFaLENBQ0xKLEtBQUssQ0FBQ0ssR0FBTixDQUFVLFVBQUFDLENBQUM7QUFBQSw2Q0FDTkEsQ0FETTtBQUVUQyxRQUFBQSxJQUFJLEVBQUVWLEVBRkc7QUFHVFcsUUFBQUEsTUFBTSxFQUFFbEIsT0FBTyxDQUFDbUI7QUFIUDtBQUFBLEtBQVgsQ0FESyxDQUFQO0FBT0QsR0FqQmdCLEVBa0JqQixFQWxCaUIsQ0FBbkIsQ0FKOEYsQ0F5QjlGOztBQUNBLFNBQU9qQixVQUFVLENBQUNhLEdBQVgsQ0FBZSxVQUFBTCxLQUFLLEVBQUk7QUFDN0I7QUFDQSxRQUFNVSxLQUFLLEdBQUcsSUFBSW5CLFlBQVksQ0FBQ1MsS0FBSyxDQUFDTyxJQUFQLENBQWhCLENBQTZCUCxLQUE3QixDQUFkO0FBQ0EsV0FBTyxPQUFPVSxLQUFLLENBQUNDLHFCQUFiLEtBQXVDLFVBQXZDLElBQXFEckIsT0FBTyxDQUFDc0IsYUFBN0QsR0FDSEYsS0FBSyxDQUFDQyxxQkFBTixDQUE0QnJCLE9BQTVCLENBREcsR0FFSG9CLEtBRko7QUFHRCxHQU5NLENBQVA7QUFPRDs7QUFPRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxrQkFBVCxDQUNMSCxLQURLLEVBRUxJLEtBRkssRUFHTEMsWUFISyxFQU9MO0FBQ0EsTUFBSUMsU0FBSjs7QUFDQSxNQUFJO0FBQ0Y7QUFDQSxRQUFJLENBQUNOLEtBQUssQ0FBQ08sT0FBWCxFQUFvQjtBQUNsQlAsTUFBQUEsS0FBSyxDQUFDUSxzQkFBTixHQUErQkMsU0FBL0I7QUFDRDs7QUFFRCxRQUFJLENBQUNULEtBQUssQ0FBQ0gsSUFBUCxJQUFlLENBQUNHLEtBQUssQ0FBQ1UsYUFBTixFQUFoQixJQUF5QyxDQUFDVixLQUFLLENBQUNXLE1BQU4sQ0FBYWIsTUFBM0QsRUFBbUU7QUFDakUsYUFBTztBQUFDRSxRQUFBQSxLQUFLLEVBQUxBLEtBQUQ7QUFBUU0sUUFBQUEsU0FBUyxFQUFFO0FBQW5CLE9BQVA7QUFDRDs7QUFFREEsSUFBQUEsU0FBUyxHQUFHTixLQUFLLENBQUNZLGVBQU4sQ0FBc0JSLEtBQUssQ0FBQ1MsUUFBNUIsRUFBc0NSLFlBQXRDLENBQVosQ0FWRSxDQVlGOztBQUNBLFFBQUksQ0FBQ0wsS0FBSyxDQUFDTyxPQUFYLEVBQW9CO0FBQ2xCO0FBQ0FQLE1BQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYyxpQkFBTixDQUF3QjtBQUM5QkMsUUFBQUEsU0FBUyxFQUFFO0FBRG1CLE9BQXhCLENBQVI7QUFHRDs7QUFDRGYsSUFBQUEsS0FBSyxDQUFDTyxPQUFOLEdBQWdCLElBQWhCO0FBQ0FQLElBQUFBLEtBQUssQ0FBQ2dCLFlBQU4sR0FBcUIsSUFBckI7QUFDRCxHQXJCRCxDQXFCRSxPQUFPQyxHQUFQLEVBQVk7QUFDWmpCLElBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYyxpQkFBTixDQUF3QjtBQUM5QkMsTUFBQUEsU0FBUyxFQUFFO0FBRG1CLEtBQXhCLENBQVI7QUFHQWYsSUFBQUEsS0FBSyxDQUFDTyxPQUFOLEdBQWdCLEtBQWhCO0FBRUFQLElBQUFBLEtBQUssQ0FBQ2dCLFlBQU4sR0FDRUMsR0FBRyxZQUFZQyxLQUFmLElBQXdCRCxHQUFHLENBQUNFLE9BQTVCLEdBQXNDRixHQUFHLENBQUNFLE9BQUosQ0FBWUMsU0FBWixDQUFzQixDQUF0QixFQUF5QixHQUF6QixDQUF0QyxHQUFzRSxlQUR4RTtBQUdBZCxJQUFBQSxTQUFTLEdBQUcsRUFBWjtBQUNEOztBQUVELFNBQU87QUFDTE4sSUFBQUEsS0FBSyxFQUFMQSxLQURLO0FBRUxNLElBQUFBLFNBQVMsRUFBVEE7QUFGSyxHQUFQO0FBSUQ7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sU0FBU2UsaUJBQVQsT0FZbUI7QUFBQSxNQVh4QkMsaUJBV3dCLFFBWHhCQSxpQkFXd0I7QUFBQSxNQVZ4QkMsU0FVd0IsUUFWeEJBLFNBVXdCO0FBQUEsTUFUeEJDLE1BU3dCLFFBVHhCQSxNQVN3QjtBQUFBLE1BUnhCQyxjQVF3QixRQVJ4QkEsY0FRd0I7QUFBQSxNQVB4QlosUUFPd0IsUUFQeEJBLFFBT3dCOztBQUN4QixNQUFJUyxpQkFBaUIsQ0FBQ0ksT0FBbEIsQ0FBMEJDLE9BQTFCLElBQXFDSixTQUFyQyxJQUFrREEsU0FBUyxDQUFDSyxNQUFoRSxFQUF3RTtBQUN0RTtBQURzRSxRQUUvREMsTUFGK0QsR0FFckNOLFNBRnFDLENBRS9ETSxNQUYrRDtBQUFBLFFBRWhEQyxPQUZnRCxHQUVyQ1AsU0FGcUMsQ0FFdkR2QixLQUZ1RCxFQUl0RTs7QUFDQSxRQUFNQSxLQUFLLEdBQUd3QixNQUFNLENBQUNNLE9BQU8sQ0FBQ3hDLEtBQVIsQ0FBY3lDLEdBQWYsQ0FBcEIsQ0FMc0UsQ0FPdEU7O0FBQ0EsUUFDRSxDQUFDRixNQUFNLElBQUlOLFNBQVMsQ0FBQ1MsS0FBVixJQUFtQixDQUE5QixLQUNBaEMsS0FEQSxJQUVBQSxLQUFLLENBQUNpQyxZQUZOLElBR0FSLGNBQWMsQ0FBQ3pCLEtBQUssQ0FBQ0QsRUFBUCxDQUpoQixFQUtFO0FBQ0E7QUFEQSxVQUdXRCxNQUhYLEdBSUlFLEtBSkosQ0FHRVcsTUFIRixDQUdXYixNQUhYOztBQUtBLFVBQUksQ0FBQ0EsTUFBTCxFQUFhO0FBQ1gsZUFBTyxJQUFQO0FBQ0Q7O0FBUEQsNkJBUWdDZSxRQUFRLENBQUNmLE1BQUQsQ0FSeEM7QUFBQSxVQVFPSSxhQVJQLG9CQVFPQSxhQVJQO0FBQUEsVUFRc0JnQyxNQVJ0QixvQkFRc0JBLE1BUnRCO0FBU0EsVUFBTUMsSUFBb0IsR0FBR25DLEtBQUssQ0FBQ2lDLFlBQU4sQ0FDM0JKLE1BQU0sSUFBSU4sU0FBUyxDQUFDUyxLQURPLEVBRTNCOUIsYUFGMkIsRUFHM0JnQyxNQUgyQixDQUE3Qjs7QUFLQSxVQUFJLENBQUNDLElBQUwsRUFBVztBQUNULGVBQU8sSUFBUDtBQUNEOztBQUNELFVBQU1DLFlBQVksR0FBR2QsaUJBQWlCLENBQUNJLE9BQWxCLENBQTBCZixNQUExQixDQUFpQ3lCLFlBQWpDLENBQThDdEMsTUFBOUMsQ0FBckI7QUFFQSxhQUFPO0FBQ0xxQyxRQUFBQSxJQUFJLEVBQUpBLElBREs7QUFFTEQsUUFBQUEsTUFBTSxFQUFOQSxNQUZLO0FBR0xFLFFBQUFBLFlBQVksRUFBWkEsWUFISztBQUlMcEMsUUFBQUEsS0FBSyxFQUFMQTtBQUpLLE9BQVA7QUFNRDtBQUNGOztBQUVELFNBQU8sSUFBUDtBQUNEOztBQUVNLFNBQVNxQyxpQkFBVCxDQUEyQi9DLEtBQTNCLEVBQXVDZ0QsY0FBdkMsRUFBNkU7QUFBQSxNQUVoRnpCLFFBRmdGLEdBWTlFdkIsS0FaOEUsQ0FFaEZ1QixRQUZnRjtBQUFBLE1BR2hGYixLQUhnRixHQVk5RVYsS0FaOEUsQ0FHaEZVLEtBSGdGO0FBQUEsTUFJaEZ1QyxVQUpnRixHQVk5RWpELEtBWjhFLENBSWhGaUQsVUFKZ0Y7QUFBQSxNQUtoRkosSUFMZ0YsR0FZOUU3QyxLQVo4RSxDQUtoRjZDLElBTGdGO0FBQUEsTUFNaEZaLFNBTmdGLEdBWTlFakMsS0FaOEUsQ0FNaEZpQyxTQU5nRjtBQUFBLE1BT2hGaUIsT0FQZ0YsR0FZOUVsRCxLQVo4RSxDQU9oRmtELE9BUGdGO0FBQUEsTUFRaEZDLFFBUmdGLEdBWTlFbkQsS0FaOEUsQ0FRaEZtRCxRQVJnRjtBQUFBLE1BU2hGbkIsaUJBVGdGLEdBWTlFaEMsS0FaOEUsQ0FTaEZnQyxpQkFUZ0Y7QUFBQSxNQVVoRm9CLGVBVmdGLEdBWTlFcEQsS0FaOEUsQ0FVaEZvRCxlQVZnRjtBQUFBLE1BV2hGQyxTQVhnRixHQVk5RXJELEtBWjhFLENBV2hGcUQsU0FYZ0Y7QUFhbEYsTUFBTS9ELE9BQU8sR0FBR2lDLFFBQVEsQ0FBQ2IsS0FBSyxDQUFDVyxNQUFOLENBQWFiLE1BQWQsQ0FBeEI7O0FBYmtGLGNBYzlEbEIsT0FBTyxJQUFJLEVBZG1EO0FBQUEsTUFjM0VnRSxTQWQyRSxTQWMzRUEsU0FkMkU7O0FBZWxGLE1BQU1DLGFBQWEsR0FBR0wsT0FBTyxJQUFJakIsU0FBakM7QUFDQSxNQUFNdUIsT0FBTyxHQUFHLENBQUNILFNBQUQsSUFBZUEsU0FBUyxJQUFJQSxTQUFTLENBQUMzQyxLQUFLLENBQUNELEVBQVAsQ0FBckQsQ0FoQmtGLENBaUJsRjs7QUFDQSxTQUFPQyxLQUFLLENBQUMrQyxXQUFOLENBQWtCO0FBQ3ZCWixJQUFBQSxJQUFJLEVBQUpBLElBRHVCO0FBRXZCUyxJQUFBQSxTQUFTLEVBQVRBLFNBRnVCO0FBR3ZCYixJQUFBQSxHQUFHLEVBQUVRLFVBSGtCO0FBSXZCakIsSUFBQUEsaUJBQWlCLEVBQWpCQSxpQkFKdUI7QUFLdkJnQixJQUFBQSxjQUFjLEVBQWRBLGNBTHVCO0FBTXZCRyxJQUFBQSxRQUFRLEVBQVJBLFFBTnVCO0FBT3ZCQyxJQUFBQSxlQUFlLEVBQWZBLGVBUHVCO0FBUXZCRyxJQUFBQSxhQUFhLEVBQWJBLGFBUnVCO0FBU3ZCQyxJQUFBQSxPQUFPLEVBQVBBO0FBVHVCLEdBQWxCLENBQVA7QUFXRDs7QUFFTSxTQUFTRSxpQkFBVCxDQUEyQmhELEtBQTNCLEVBQXlDTSxTQUF6QyxFQUFvRDtBQUN6RCxTQUFPTixLQUFLLENBQUNELEVBQU4sS0FBYWtELDRCQUFiLElBQWtDakQsS0FBSyxDQUFDa0QsaUJBQU4sQ0FBd0I1QyxTQUF4QixDQUF6QztBQUNEOztBQUVNLFNBQVM2QyxjQUFULENBQXdCbkQsS0FBeEIsRUFBK0IyQyxTQUEvQixFQUEwQztBQUMvQyxTQUNFM0MsS0FBSyxDQUFDVyxNQUFOLENBQWFJLFNBQWIsTUFDQTtBQUNDLEdBQUM0QixTQUFELElBQWVBLFNBQVMsSUFBSUEsU0FBUyxDQUFDM0MsS0FBSyxDQUFDRCxFQUFQLENBRnRDLENBREY7QUFLRCxDLENBRUQ7QUFDQTtBQUNBOzs7QUFDTyxTQUFTcUQsb0JBQVQsQ0FDTDVCLE1BREssRUFFTGxCLFNBRkssRUFLTDtBQUNBLFNBQU9rQixNQUFNLENBQUN2QyxNQUFQLENBQ0wsVUFBQ29FLElBQUQsRUFBT3JELEtBQVAsRUFBYytCLEdBQWQ7QUFBQSwyQ0FDS3NCLElBREwsNENBRUdyRCxLQUFLLENBQUNELEVBRlQsRUFHSWlELGlCQUFpQixDQUFDaEQsS0FBRCxFQUFRTSxTQUFTLENBQUN5QixHQUFELENBQWpCLENBQWpCLElBQTRDL0IsS0FBSyxDQUFDc0QsV0FBTixLQUFzQkMsMkJBQW1CQyxNQUh6RjtBQUFBLEdBREssRUFNTCxFQU5LLENBQVA7QUFRRCxDLENBRUQ7QUFDQTtBQUNBOzs7QUFDTyxTQUFTQyxxQkFBVCxDQUNMakMsTUFESyxFQUVMbEIsU0FGSyxFQUdMcUMsU0FISyxFQUlXO0FBQ2hCLFNBQU9uQixNQUFNLENBQUN2QyxNQUFQLENBQ0wsVUFBQ29FLElBQUQsRUFBT3JELEtBQVAsRUFBYytCLEdBQWQ7QUFBQSwyQ0FDS3NCLElBREwsNENBRUdyRCxLQUFLLENBQUNELEVBRlQsRUFFY2lELGlCQUFpQixDQUFDaEQsS0FBRCxFQUFRTSxTQUFTLENBQUN5QixHQUFELENBQWpCLENBQWpCLElBQTRDb0IsY0FBYyxDQUFDbkQsS0FBRCxFQUFRMkMsU0FBUixDQUZ4RTtBQUFBLEdBREssRUFLTCxFQUxLLENBQVA7QUFPRDs7QUFJTSxTQUFTZSxtQkFBVCxDQUE2QkMsV0FBN0IsRUFBd0Y7QUFDN0YsTUFBTUMsZ0JBQWdCLEdBQUdyRSxLQUFLLENBQUNDLE9BQU4sQ0FBY21FLFdBQWQsYUFBY0EsV0FBZCx1QkFBY0EsV0FBVyxDQUFFbkMsTUFBM0IsSUFDckJtQyxXQURxQixhQUNyQkEsV0FEcUIsdUJBQ3JCQSxXQUFXLENBQUVuQyxNQURRLEdBRXJCLHVCQUFXbUMsV0FBWCxhQUFXQSxXQUFYLHVCQUFXQSxXQUFXLENBQUVuQyxNQUF4QixJQUNBbUMsV0FEQSxhQUNBQSxXQURBLHVCQUNBQSxXQUFXLENBQUVuQyxNQUFiLEVBREEsR0FFQSxFQUpKO0FBS0EsTUFBTXFDLGFBQWEsR0FBR3RFLEtBQUssQ0FBQ0MsT0FBTixDQUFjbUUsV0FBZCxhQUFjQSxXQUFkLHVCQUFjQSxXQUFXLENBQUVHLFNBQTNCLElBQ2xCSCxXQURrQixhQUNsQkEsV0FEa0IsdUJBQ2xCQSxXQUFXLENBQUVHLFNBREssR0FFbEIsdUJBQVdILFdBQVgsYUFBV0EsV0FBWCx1QkFBV0EsV0FBVyxDQUFFRyxTQUF4QixJQUNBSCxXQURBLGFBQ0FBLFdBREEsdUJBQ0FBLFdBQVcsQ0FBRUcsU0FBYixFQURBLEdBRUEsRUFKSjtBQU1BLFNBQU8sQ0FBQ0YsZ0JBQUQsRUFBbUJDLGFBQW5CLENBQVA7QUFDRDs7QUF5Qk0sU0FBU0Usa0JBQVQsR0FBOEU7QUFBQSxNQUFsRHpCLGNBQWtELHVFQUFqQixFQUFpQjtBQUFBLE1BQWJQLEdBQWE7QUFDbkYsU0FBT2hELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZc0QsY0FBWixFQUE0QnJELE1BQTVCLENBQ0wsVUFBQ29FLElBQUQsRUFBT1csR0FBUDtBQUFBLDJDQUNLWCxJQURMLDRDQUVHVyxHQUZILEVBRVMsVUFBQUMsR0FBRztBQUFBLGFBQUkzQixjQUFjLENBQUMwQixHQUFELENBQWQsQ0FBb0JqQyxHQUFwQixFQUF5QmtDLEdBQXpCLENBQUo7QUFBQSxLQUZaO0FBQUEsR0FESyxFQUtMLEVBTEssQ0FBUDtBQU9EOztBQU9EO0FBQ08sU0FBU0MsaUJBQVQsUUFFTEMsT0FGSyxFQUdMN0IsY0FISyxFQUlMcUIsV0FKSyxFQUtJO0FBQUEsTUFKUlMsUUFJUSxTQUpSQSxRQUlRO0FBQUEsTUFKRTNCLFFBSUYsU0FKRUEsUUFJRjtBQUFBLE1BSlk0QixRQUlaLFNBSllBLFFBSVo7QUFBQSxNQUVQeEQsUUFGTyxHQVdMdUQsUUFYSyxDQUVQdkQsUUFGTztBQUFBLE1BR1BXLE1BSE8sR0FXTDRDLFFBWEssQ0FHUDVDLE1BSE87QUFBQSxNQUlQOEMsVUFKTyxHQVdMRixRQVhLLENBSVBFLFVBSk87QUFBQSxNQUtQaEUsU0FMTyxHQVdMOEQsUUFYSyxDQUtQOUQsU0FMTztBQUFBLE1BTVBpQixTQU5PLEdBV0w2QyxRQVhLLENBTVA3QyxTQU5PO0FBQUEsTUFPUGlCLE9BUE8sR0FXTDRCLFFBWEssQ0FPUDVCLE9BUE87QUFBQSxNQVFQbEIsaUJBUk8sR0FXTDhDLFFBWEssQ0FRUDlDLGlCQVJPO0FBQUEsTUFTUG9CLGVBVE8sR0FXTDBCLFFBWEssQ0FTUDFCLGVBVE87QUFBQSxNQVVQNkIsU0FWTyxHQVdMSCxRQVhLLENBVVBHLFNBVk87O0FBQUEsY0FjUEosT0FBTyxJQUFJLEVBZEo7QUFBQSxNQWFGSyxRQWJFLFNBYUZBLFFBYkU7QUFBQSxNQWFRQyxvQkFiUixTQWFRQSxvQkFiUjtBQUFBLE1BYThCQyxZQWI5QixTQWE4QkEsWUFiOUI7QUFBQSxNQWE0Q0MsVUFiNUMsU0FhNENBLFVBYjVDO0FBQUEsTUFhd0RDLGFBYnhELFNBYXdEQSxhQWJ4RDtBQUFBLE1BYXVFQyxVQWJ2RSxTQWF1RUEsVUFidkU7O0FBZ0JULE1BQUlDLFVBQWlCLEdBQUcsRUFBeEI7O0FBRUEsTUFBSXhFLFNBQVMsSUFBSUEsU0FBUyxDQUFDeUUsTUFBM0IsRUFBbUM7QUFDakMsUUFBTXBDLFNBQVMsR0FBRyxzQ0FBMEI0QixTQUExQixFQUFxQ0MsUUFBUSxJQUFJLENBQWpELENBQWxCO0FBRUEsUUFBTVEsb0JBQW9CLEdBQUdKLGFBQWEsSUFBSXhCLG9CQUFvQixDQUFDNUIsTUFBRCxFQUFTbEIsU0FBVCxDQUFsRTtBQUVBd0UsSUFBQUEsVUFBVSxHQUFHUixVQUFVLENBQ3BCVyxLQURVLEdBRVZDLE9BRlUsR0FHVkMsTUFIVSxDQUdILFVBQUFwRixFQUFFO0FBQUEsYUFBSWlGLG9CQUFvQixDQUFDakYsRUFBRCxDQUF4QjtBQUFBLEtBSEMsRUFJVmQsTUFKVSxDQUlILFVBQUNtRyxRQUFELEVBQVdDLE9BQVgsRUFBdUI7QUFDN0IsVUFBTTlDLFVBQVUsR0FBR2YsTUFBTSxDQUFDOEQsU0FBUCxDQUFpQjtBQUFBLFlBQUV2RixFQUFGLFNBQUVBLEVBQUY7QUFBQSxlQUFVQSxFQUFFLEtBQUtzRixPQUFqQjtBQUFBLE9BQWpCLENBQW5CO0FBQ0EsVUFBTUUsb0JBQW9CLEdBQUdqRCxjQUFjLEdBQ3ZDeUIsa0JBQWtCLENBQUN6QixjQUFELEVBQWlCQyxVQUFqQixDQURxQixHQUV2QyxFQUZKO0FBR0EsVUFBTXZDLEtBQUssR0FBR3dCLE1BQU0sQ0FBQ2UsVUFBRCxDQUFwQjtBQUNBLFVBQU1KLElBQUksR0FBRzdCLFNBQVMsQ0FBQ2lDLFVBQUQsQ0FBdEI7QUFDQSxVQUFNaUQsWUFBWSxHQUFHbkQsaUJBQWlCLENBQ3BDO0FBQ0V4QixRQUFBQSxRQUFRLEVBQVJBLFFBREY7QUFFRWIsUUFBQUEsS0FBSyxFQUFMQSxLQUZGO0FBR0V1QyxRQUFBQSxVQUFVLEVBQVZBLFVBSEY7QUFJRUosUUFBQUEsSUFBSSxFQUFKQSxJQUpGO0FBS0VaLFFBQUFBLFNBQVMsRUFBVEEsU0FMRjtBQU1FaUIsUUFBQUEsT0FBTyxFQUFQQSxPQU5GO0FBT0VDLFFBQUFBLFFBQVEsRUFBUkEsUUFQRjtBQVFFbkIsUUFBQUEsaUJBQWlCLEVBQWpCQSxpQkFSRjtBQVNFb0IsUUFBQUEsZUFBZSxFQUFmQSxlQVRGO0FBVUVDLFFBQUFBLFNBQVMsRUFBVEE7QUFWRixPQURvQyxFQWFwQzRDLG9CQWJvQyxDQUF0QztBQWVBLGFBQU9ILFFBQVEsQ0FBQzFGLE1BQVQsQ0FBZ0I4RixZQUFZLElBQUksRUFBaEMsQ0FBUDtBQUNELEtBM0JVLEVBMkJSLEVBM0JRLENBQWI7QUE0QkQ7O0FBRUQsTUFBSSxDQUFDYixVQUFMLEVBQWlCO0FBQ2YsV0FBT0csVUFBUDtBQUNEOztBQUVELE1BQ0VULFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsSUFBQUEsUUFBUSxDQUFFb0Isa0JBQVYsQ0FBNkIsYUFBN0IsS0FDQWQsVUFEQSxJQUVBRixvQkFGQSxJQUdBQyxZQUpGLEVBS0U7QUFDQUksSUFBQUEsVUFBVSxDQUFDWSxJQUFYLENBQ0UsSUFBSUMsaUNBQUosQ0FBd0I7QUFDdEI1RixNQUFBQSxFQUFFLEVBQUUsdUJBRGtCO0FBRXRCMEUsTUFBQUEsb0JBQW9CLEVBQXBCQSxvQkFGc0I7QUFHdEJDLE1BQUFBLFlBQVksRUFBWkEsWUFIc0I7QUFJdEJrQixNQUFBQSxtQkFBbUIsRUFBRXZCLFFBQVEsQ0FBQ3VCLG1CQUpSO0FBS3RCQyxNQUFBQSxjQUFjLEVBQUU7QUFDZEMsUUFBQUEsWUFBWSxFQUFFekIsUUFBUSxDQUFDdUI7QUFEVDtBQUxNLEtBQXhCLENBREY7QUFXRDs7QUExRVEsNkJBNEU2Q2xDLG1CQUFtQixDQUFDQyxXQUFELENBNUVoRTtBQUFBO0FBQUEsTUE0RUZvQyxzQkE1RUU7QUFBQSxNQTRFc0JDLG1CQTVFdEI7O0FBOEVULE1BQU1DLFdBQWtCLEdBQUcsRUFBM0I7O0FBQ0EsTUFBSXBCLFVBQUosRUFBZ0I7QUFDZG9CLElBQUFBLFdBQVcsQ0FBQ1AsSUFBWixDQUNFLDhDQUNLYixVQURMLEVBREY7QUFLRDs7QUFFRCx1REFBV2tCLHNCQUFYLHVDQUFzQ2pCLFVBQXRDLHVDQUFxRGtCLG1CQUFyRCxHQUE2RUMsV0FBN0U7QUFDRDs7QUFFTSxTQUFTQyx1QkFBVCxDQUF5RDFFLE1BQXpELEVBQWdGO0FBQ3JGLFNBQU9BLE1BQU0sQ0FBQzdCLEdBQVAsQ0FBVztBQUFBLFFBQUVJLEVBQUYsU0FBRUEsRUFBRjtBQUFBLFdBQVVBLEVBQVY7QUFBQSxHQUFYLENBQVA7QUFDRDs7QUFFTSxTQUFTb0csaUJBQVQsQ0FDTDdCLFVBREssRUFFTDhCLGFBRkssRUFHTEMsa0JBSEssRUFJbUI7QUFDeEIsTUFBTUMsV0FBVyxHQUFHaEMsVUFBVSxDQUFDaUMsT0FBWCxDQUFtQkgsYUFBbkIsQ0FBcEI7QUFDQSxNQUFNSSxTQUFTLEdBQUdsQyxVQUFVLENBQUNpQyxPQUFYLENBQW1CRixrQkFBbkIsQ0FBbEI7QUFFQSxTQUFPLHlCQUFVL0IsVUFBVixFQUFzQmdDLFdBQXRCLEVBQW1DRSxTQUFuQyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU0Msb0JBQVQsQ0FDTG5DLFVBREssRUFFTGUsT0FGSyxFQUdLO0FBQ1YsVUFBUUEsT0FBUiw2Q0FBb0JmLFVBQXBCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IHtHRU9DT0RFUl9MQVlFUl9JRH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMYXllciBhcyBEZWNrTGF5ZXIsIExheWVyUHJvcHMgYXMgRGVja0xheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuaW1wb3J0IHtcbiAgRmllbGQsXG4gIFRvb2x0aXBGaWVsZCxcbiAgQ29tcGFyZVR5cGUsXG4gIFNwbGl0TWFwTGF5ZXJzLFxuICBJbnRlcmFjdGlvbkNvbmZpZyxcbiAgRWRpdG9yLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dCxcbiAgVmlld3BvcnRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1xuICBGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZSxcbiAgTGF5ZXIsXG4gIExheWVyQ2xhc3Nlc1R5cGUsXG4gIE9WRVJMQVlfVFlQRV9DT05TVCxcbiAgZ2V0RWRpdG9yTGF5ZXJcbn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuXG5pbXBvcnQgS2VwbGVyVGFibGUsIHtEYXRhc2V0c30gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtpc0Z1bmN0aW9uLCBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzLCBEYXRhUm93fSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7VGhyZWVEQnVpbGRpbmdMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJzVG9SZW5kZXIgPSB7XG4gIFtsYXllcklkOiBzdHJpbmddOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSA9IHtwb2ludHM6IGFueVtdOyBjb2xvclZhbHVlPzogYW55OyBlbGV2YXRpb25WYWx1ZT86IGFueX07XG5cbmV4cG9ydCB0eXBlIExheWVySG92ZXJQcm9wID0ge1xuICBkYXRhOiBEYXRhUm93IHwgQWdncmVnYXRpb25MYXllckhvdmVyRGF0YSB8IG51bGw7XG4gIGZpZWxkczogRmllbGRbXTtcbiAgZmllbGRzVG9TaG93OiBUb29sdGlwRmllbGRbXTtcbiAgbGF5ZXI6IExheWVyO1xuICBwcmltYXJ5RGF0YT86IERhdGFSb3cgfCBBZ2dyZWdhdGlvbkxheWVySG92ZXJEYXRhIHwgbnVsbDtcbiAgY29tcGFyZVR5cGU/OiBDb21wYXJlVHlwZTtcbn07XG5cbi8qKlxuICogRmluZCBkZWZhdWx0IGxheWVycyBmcm9tIGZpZWxkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlZmF1bHRMYXllcihkYXRhc2V0OiBLZXBsZXJUYWJsZSwgbGF5ZXJDbGFzc2VzOiBMYXllckNsYXNzZXNUeXBlKTogTGF5ZXJbXSB7XG4gIGlmICghZGF0YXNldCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBsYXllclByb3BzID0gKE9iamVjdC5rZXlzKGxheWVyQ2xhc3NlcykgYXMgQXJyYXk8a2V5b2YgTGF5ZXJDbGFzc2VzVHlwZT4pLnJlZHVjZShcbiAgICAocHJldmlvdXMsIGxjKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IEZpbmREZWZhdWx0TGF5ZXJQcm9wc1JldHVyblZhbHVlID1cbiAgICAgICAgdHlwZW9mIGxheWVyQ2xhc3Nlc1tsY10uZmluZERlZmF1bHRMYXllclByb3BzID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgPyBsYXllckNsYXNzZXNbbGNdLmZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0LCBwcmV2aW91cylcbiAgICAgICAgICA6IHtwcm9wczogW119O1xuXG4gICAgICBjb25zdCBwcm9wcyA9IEFycmF5LmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IHJlc3VsdC5wcm9wcyB8fCBbXTtcbiAgICAgIGNvbnN0IGZvdW5kTGF5ZXJzID0gcmVzdWx0LmZvdW5kTGF5ZXJzIHx8IHByZXZpb3VzO1xuXG4gICAgICByZXR1cm4gZm91bmRMYXllcnMuY29uY2F0KFxuICAgICAgICBwcm9wcy5tYXAocCA9PiAoe1xuICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgdHlwZTogbGMsXG4gICAgICAgICAgZGF0YUlkOiBkYXRhc2V0LmlkXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdIGFzIExheWVyQ2xhc3Nlc1R5cGVba2V5b2YgTGF5ZXJDbGFzc2VzVHlwZV1bXVxuICApO1xuXG4gIC8vIGdvIHRocm91Z2ggYWxsIGxheWVyUHJvcHMgdG8gY3JlYXRlIGxheWVyXG4gIHJldHVybiBsYXllclByb3BzLm1hcChwcm9wcyA9PiB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBjaGVja2luZyBwcm9wcy50eXBlICE9PSBudWxsXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgbGF5ZXJDbGFzc2VzW3Byb3BzLnR5cGVdKHByb3BzKTtcbiAgICByZXR1cm4gdHlwZW9mIGxheWVyLnNldEluaXRpYWxMYXllckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyAmJiBkYXRhc2V0LmRhdGFDb250YWluZXJcbiAgICAgID8gbGF5ZXIuc2V0SW5pdGlhbExheWVyQ29uZmlnKGRhdGFzZXQpXG4gICAgICA6IGxheWVyO1xuICB9KTtcbn1cblxudHlwZSBNaW5WaXNTdGF0ZUZvckxheWVyRGF0YSA9IHtcbiAgZGF0YXNldHM6IFZpc1N0YXRlWydkYXRhc2V0cyddO1xuICBhbmltYXRpb25Db25maWc6IFZpc1N0YXRlWydhbmltYXRpb25Db25maWcnXTtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIGxheWVyIGRhdGEgYmFzZWQgb24gbGF5ZXIgdHlwZSwgY29sIENvbmZpZyxcbiAqIHJldHVybiB1cGRhdGVkIGxheWVyIGlmIGNvbG9yRG9tYWluLCBkYXRhTWFwIGhhcyBjaGFuZ2VkLlxuICogQWxzbywgcmV0dXJucyB1cGRhdGVkIGxheWVyIGluIGNhc2UgdGhlIGlucHV0IGxheWVyIHdhcyBpbiBpbnZhbGlkIHN0YXRlLlxuICogQWRkcyBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBsYXllciBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUxheWVyRGF0YTxTIGV4dGVuZHMgTWluVmlzU3RhdGVGb3JMYXllckRhdGE+KFxuICBsYXllcjogTGF5ZXIsXG4gIHN0YXRlOiBTLFxuICBvbGRMYXllckRhdGE/OiBhbnlcbik6IHtcbiAgbGF5ZXJEYXRhOiBhbnk7XG4gIGxheWVyOiBMYXllcjtcbn0ge1xuICBsZXQgbGF5ZXJEYXRhO1xuICB0cnkge1xuICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgdXBkYXRlcyBkYXRhIGFmdGVyIGFuIGVycm9yXG4gICAgaWYgKCFsYXllci5pc1ZhbGlkKSB7XG4gICAgICBsYXllci5fb2xkRGF0YVVwZGF0ZVRyaWdnZXJzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghbGF5ZXIudHlwZSB8fCAhbGF5ZXIuaGFzQWxsQ29sdW1ucygpIHx8ICFsYXllci5jb25maWcuZGF0YUlkKSB7XG4gICAgICByZXR1cm4ge2xheWVyLCBsYXllckRhdGE6IHt9fTtcbiAgICB9XG5cbiAgICBsYXllckRhdGEgPSBsYXllci5mb3JtYXRMYXllckRhdGEoc3RhdGUuZGF0YXNldHMsIG9sZExheWVyRGF0YSk7XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBkYXRhIGZvciB0aGUgbGF5ZXIgaXMgdXBkYXRlZCB3aXRob3V0IGVycm9yc1xuICAgIGlmICghbGF5ZXIuaXNWYWxpZCkge1xuICAgICAgLy8gU3dpdGNoIHRvIHZpc2libGUgYWZ0ZXIgYW4gZXJyb3JcbiAgICAgIGxheWVyID0gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsYXllci5pc1ZhbGlkID0gdHJ1ZTtcbiAgICBsYXllci5lcnJvck1lc3NhZ2UgPSBudWxsO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsYXllciA9IGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICB9KTtcbiAgICBsYXllci5pc1ZhbGlkID0gZmFsc2U7XG5cbiAgICBsYXllci5lcnJvck1lc3NhZ2UgPVxuICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UgPyBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgMTAwKSA6ICdVbmtub3duIGVycm9yJztcblxuICAgIGxheWVyRGF0YSA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsYXllcixcbiAgICBsYXllckRhdGFcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgcHJvcHMgcGFzc2VkIHRvIExheWVySG92ZXJJbmZvXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9sYXllci11dGlscycpLmdldExheWVySG92ZXJQcm9wfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJIb3ZlclByb3Aoe1xuICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgaG92ZXJJbmZvLFxuICBsYXllcnMsXG4gIGxheWVyc1RvUmVuZGVyLFxuICBkYXRhc2V0c1xufToge1xuICBpbnRlcmFjdGlvbkNvbmZpZzogSW50ZXJhY3Rpb25Db25maWc7XG4gIGhvdmVySW5mbzogYW55O1xuICBsYXllcnM6IExheWVyW107XG4gIGxheWVyc1RvUmVuZGVyOiBMYXllcnNUb1JlbmRlcjtcbiAgZGF0YXNldHM6IERhdGFzZXRzO1xufSk6IExheWVySG92ZXJQcm9wIHwgbnVsbCB7XG4gIGlmIChpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmVuYWJsZWQgJiYgaG92ZXJJbmZvICYmIGhvdmVySW5mby5waWNrZWQpIHtcbiAgICAvLyBpZiBhbnl0aGluZyBob3ZlcmVkXG4gICAgY29uc3Qge29iamVjdCwgbGF5ZXI6IG92ZXJsYXl9ID0gaG92ZXJJbmZvO1xuXG4gICAgLy8gZGVja2dsIGxheWVyIHRvIGtlcGxlci1nbCBsYXllclxuICAgIGNvbnN0IGxheWVyID0gbGF5ZXJzW292ZXJsYXkucHJvcHMuaWR4XTtcblxuICAgIC8vIE5PVEU6IGZvciBiaW5hcnkgZm9ybWF0IEdlb2pzb25MYXllciwgZGVjayB3aWxsIHJldHVybiBvYmplY3Q9bnVsbCBidXQgaG92ZXJJbmZvLmluZGV4ID49IDBcbiAgICBpZiAoXG4gICAgICAob2JqZWN0IHx8IGhvdmVySW5mby5pbmRleCA+PSAwKSAmJlxuICAgICAgbGF5ZXIgJiZcbiAgICAgIGxheWVyLmdldEhvdmVyRGF0YSAmJlxuICAgICAgbGF5ZXJzVG9SZW5kZXJbbGF5ZXIuaWRdXG4gICAgKSB7XG4gICAgICAvLyBpZiBsYXllciBpcyB2aXNpYmxlIGFuZCBoYXZlIGhvdmVyZWQgZGF0YVxuICAgICAgY29uc3Qge1xuICAgICAgICBjb25maWc6IHtkYXRhSWR9XG4gICAgICB9ID0gbGF5ZXI7XG4gICAgICBpZiAoIWRhdGFJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtkYXRhQ29udGFpbmVyLCBmaWVsZHN9ID0gZGF0YXNldHNbZGF0YUlkXTtcbiAgICAgIGNvbnN0IGRhdGE6IERhdGFSb3cgfCBudWxsID0gbGF5ZXIuZ2V0SG92ZXJEYXRhKFxuICAgICAgICBvYmplY3QgfHwgaG92ZXJJbmZvLmluZGV4LFxuICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICBmaWVsZHNcbiAgICAgICk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWVsZHNUb1Nob3cgPSBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwLmNvbmZpZy5maWVsZHNUb1Nob3dbZGF0YUlkXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZmllbGRzLFxuICAgICAgICBmaWVsZHNUb1Nob3csXG4gICAgICAgIGxheWVyXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVja0dsTGF5ZXIocHJvcHM6IGFueSwgbGF5ZXJDYWxsYmFja3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KSB7XG4gIGNvbnN0IHtcbiAgICBkYXRhc2V0cyxcbiAgICBsYXllcixcbiAgICBsYXllckluZGV4LFxuICAgIGRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIG1hcExheWVyc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tsYXllci5jb25maWcuZGF0YUlkXTtcbiAgY29uc3Qge2dwdUZpbHRlcn0gPSBkYXRhc2V0IHx8IHt9O1xuICBjb25zdCBvYmplY3RIb3ZlcmVkID0gY2xpY2tlZCB8fCBob3ZlckluZm87XG4gIGNvbnN0IHZpc2libGUgPSAhbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSk7XG4gIC8vIExheWVyIGlzIExheWVyIGNsYXNzXG4gIHJldHVybiBsYXllci5yZW5kZXJMYXllcih7XG4gICAgZGF0YSxcbiAgICBncHVGaWx0ZXIsXG4gICAgaWR4OiBsYXllckluZGV4LFxuICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgIGxheWVyQ2FsbGJhY2tzLFxuICAgIG1hcFN0YXRlLFxuICAgIGFuaW1hdGlvbkNvbmZpZyxcbiAgICBvYmplY3RIb3ZlcmVkLFxuICAgIHZpc2libGVcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyUmVuZGVyYWJsZShsYXllcjogTGF5ZXIsIGxheWVyRGF0YSkge1xuICByZXR1cm4gbGF5ZXIuaWQgIT09IEdFT0NPREVSX0xBWUVSX0lEICYmIGxheWVyLnNob3VsZFJlbmRlckxheWVyKGxheWVyRGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKSB7XG4gIHJldHVybiAoXG4gICAgbGF5ZXIuY29uZmlnLmlzVmlzaWJsZSAmJlxuICAgIC8vIGlmIGxheWVyLmlkIGlzIG5vdCBpbiBtYXBMYXllcnMsIGRvbid0IHJlbmRlciBpdFxuICAgICghbWFwTGF5ZXJzIHx8IChtYXBMYXllcnMgJiYgbWFwTGF5ZXJzW2xheWVyLmlkXSkpXG4gICk7XG59XG5cbi8vIFByZXBhcmUgYSBkaWN0IG9mIGxheWVycyByZW5kZXJlZCBieSB0aGUgZGVjay5nbFxuLy8gTm90ZSwgaXNWaXNpYmxlOiBmYWxzZSBsYXllciBpcyBwYXNzZWQgdG8gZGVjay5nbCBoZXJlXG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc0ZvckRlY2soXG4gIGxheWVyczogTGF5ZXJbXSxcbiAgbGF5ZXJEYXRhOiBWaXNTdGF0ZVsnbGF5ZXJEYXRhJ11cbik6IHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn0ge1xuICByZXR1cm4gbGF5ZXJzLnJlZHVjZShcbiAgICAoYWNjdSwgbGF5ZXIsIGlkeCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbbGF5ZXIuaWRdOlxuICAgICAgICBpc0xheWVyUmVuZGVyYWJsZShsYXllciwgbGF5ZXJEYXRhW2lkeF0pICYmIGxheWVyLm92ZXJsYXlUeXBlID09PSBPVkVSTEFZX1RZUEVfQ09OU1QuZGVja2dsXG4gICAgfSksXG4gICAge31cbiAgKTtcbn1cblxuLy8gUHJlcGFyZSBhIGRpY3Qgb2YgcmVuZGVyZWQgbGF5ZXJzIHJlbmRlcmVkIGluIHRoZSBtYXBcbi8vIFRoaXMgaW5jbHVkZXMgb25seSB0aGUgdmlzaWJpbGUgbGF5ZXJzIGZvciBzaW5nbGUgbWFwIHZpZXcgYW5kIHNwbGl0IG1hcCB2aWV3XG4vLyByZXR1cm4ge1tpZF06IHRydWUgXFwgZmFsc2V9XG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUxheWVyc1RvUmVuZGVyKFxuICBsYXllcnM6IExheWVyW10sXG4gIGxheWVyRGF0YTogVmlzU3RhdGVbJ2xheWVyRGF0YSddLFxuICBtYXBMYXllcnM/OiBTcGxpdE1hcExheWVycyB8IHVuZGVmaW5lZCB8IG51bGxcbik6IExheWVyc1RvUmVuZGVyIHtcbiAgcmV0dXJuIGxheWVycy5yZWR1Y2UoXG4gICAgKGFjY3UsIGxheWVyLCBpZHgpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2xheWVyLmlkXTogaXNMYXllclJlbmRlcmFibGUobGF5ZXIsIGxheWVyRGF0YVtpZHhdKSAmJiBpc0xheWVyVmlzaWJsZShsYXllciwgbWFwTGF5ZXJzKVxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbnR5cGUgQ3VzdG9tRGVja0xheWVyID0gRGVja0xheWVyPERlY2tMYXllclByb3BzPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1c3RvbURlY2tMYXllcnMoZGVja0dsUHJvcHM/OiBhbnkpOiBbQ3VzdG9tRGVja0xheWVyW10sIEN1c3RvbURlY2tMYXllcltdXSB7XG4gIGNvbnN0IGJvdHRvbURlY2tMYXllcnMgPSBBcnJheS5pc0FycmF5KGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzXG4gICAgOiBpc0Z1bmN0aW9uKGRlY2tHbFByb3BzPy5sYXllcnMpXG4gICAgPyBkZWNrR2xQcm9wcz8ubGF5ZXJzKClcbiAgICA6IFtdO1xuICBjb25zdCB0b3BEZWNrTGF5ZXJzID0gQXJyYXkuaXNBcnJheShkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVyc1xuICAgIDogaXNGdW5jdGlvbihkZWNrR2xQcm9wcz8udG9wTGF5ZXJzKVxuICAgID8gZGVja0dsUHJvcHM/LnRvcExheWVycygpXG4gICAgOiBbXTtcblxuICByZXR1cm4gW2JvdHRvbURlY2tMYXllcnMsIHRvcERlY2tMYXllcnNdO1xufVxuXG5leHBvcnQgdHlwZSBDb21wdXRlRGVja0xheWVyc1Byb3BzID0ge1xuICBtYXBJbmRleD86IG51bWJlcjtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgcHJpbWFyeU1hcD86IGJvb2xlYW47XG4gIGxheWVyc0ZvckRlY2s/OiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIGVkaXRvckluZm8/OiB7XG4gICAgZWRpdG9yOiBFZGl0b3I7XG4gICAgZWRpdG9yTWVudUFjdGl2ZTogYm9vbGVhbjtcbiAgICBvblNldEZlYXR1cmVzOiAoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4gYW55O1xuICAgIHNldFNlbGVjdGVkRmVhdHVyZTogKFxuICAgICAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGwsXG4gICAgICBzZWxlY3Rpb25Db250ZXh0PzogRmVhdHVyZVNlbGVjdGlvbkNvbnRleHRcbiAgICApID0+IGFueTtcbiAgICBmZWF0dXJlQ29sbGVjdGlvbjoge1xuICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgZmVhdHVyZXM6IEZlYXR1cmVbXTtcbiAgICB9O1xuICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4ZXM6IG51bWJlcltdO1xuICAgIHZpZXdwb3J0OiBWaWV3cG9ydDtcbiAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBiaW5kTGF5ZXJDYWxsYmFja3MobGF5ZXJDYWxsYmFja3M6IExheWVyQ2FsbGJhY2tzID0ge30sIGlkeDogbnVtYmVyKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhsYXllckNhbGxiYWNrcykucmVkdWNlKFxuICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAuLi5hY2N1LFxuICAgICAgW2tleV06IHZhbCA9PiBsYXllckNhbGxiYWNrc1trZXldKGlkeCwgdmFsKVxuICAgIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIChfaWR4OiBudW1iZXIsIHZhbDogYW55KSA9PiB2b2lkPlxuICApO1xufVxuXG5leHBvcnQgdHlwZSBMYXllckNhbGxiYWNrcyA9IHtcbiAgb25MYXllckhvdmVyPzogKGlkeDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2b2lkO1xuICBvblNldExheWVyRG9tYWluPzogKGlkeDogbnVtYmVyLCB2YWx1ZTogYW55KSA9PiB2b2lkO1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlRGVja0xheWVycyhcbiAge3Zpc1N0YXRlLCBtYXBTdGF0ZSwgbWFwU3R5bGV9OiBhbnksXG4gIG9wdGlvbnM/OiBDb21wdXRlRGVja0xheWVyc1Byb3BzLFxuICBsYXllckNhbGxiYWNrcz86IExheWVyQ2FsbGJhY2tzLFxuICBkZWNrR2xQcm9wcz86IGFueVxuKTogTGF5ZXJbXSB7XG4gIGNvbnN0IHtcbiAgICBkYXRhc2V0cyxcbiAgICBsYXllcnMsXG4gICAgbGF5ZXJPcmRlcixcbiAgICBsYXllckRhdGEsXG4gICAgaG92ZXJJbmZvLFxuICAgIGNsaWNrZWQsXG4gICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgYW5pbWF0aW9uQ29uZmlnLFxuICAgIHNwbGl0TWFwc1xuICB9ID0gdmlzU3RhdGU7XG5cbiAgY29uc3Qge21hcEluZGV4LCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsLCBwcmltYXJ5TWFwLCBsYXllcnNGb3JEZWNrLCBlZGl0b3JJbmZvfSA9XG4gICAgb3B0aW9ucyB8fCB7fTtcblxuICBsZXQgZGF0YUxheWVyczogYW55W10gPSBbXTtcblxuICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICBjb25zdCBtYXBMYXllcnMgPSBnZXRNYXBMYXllcnNGcm9tU3BsaXRNYXBzKHNwbGl0TWFwcywgbWFwSW5kZXggfHwgMCk7XG5cbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzRm9yRGVjayA9IGxheWVyc0ZvckRlY2sgfHwgcHJlcGFyZUxheWVyc0ZvckRlY2sobGF5ZXJzLCBsYXllckRhdGEpO1xuXG4gICAgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgIC5zbGljZSgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAuZmlsdGVyKGlkID0+IGN1cnJlbnRMYXllcnNGb3JEZWNrW2lkXSlcbiAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBsYXllcklkKSA9PiB7XG4gICAgICAgIGNvbnN0IGxheWVySW5kZXggPSBsYXllcnMuZmluZEluZGV4KCh7aWR9KSA9PiBpZCA9PT0gbGF5ZXJJZCk7XG4gICAgICAgIGNvbnN0IGJpbmRlZExheWVyQ2FsbGJhY2tzID0gbGF5ZXJDYWxsYmFja3NcbiAgICAgICAgICA/IGJpbmRMYXllckNhbGxiYWNrcyhsYXllckNhbGxiYWNrcywgbGF5ZXJJbmRleClcbiAgICAgICAgICA6IHt9O1xuICAgICAgICBjb25zdCBsYXllciA9IGxheWVyc1tsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGxheWVyRGF0YVtsYXllckluZGV4XTtcbiAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgIGxheWVySW5kZXgsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaG92ZXJJbmZvLFxuICAgICAgICAgICAgY2xpY2tlZCxcbiAgICAgICAgICAgIG1hcFN0YXRlLFxuICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcsXG4gICAgICAgICAgICBhbmltYXRpb25Db25maWcsXG4gICAgICAgICAgICBtYXBMYXllcnNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJpbmRlZExheWVyQ2FsbGJhY2tzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgIH0sIFtdKTtcbiAgfVxuXG4gIGlmICghcHJpbWFyeU1hcCkge1xuICAgIHJldHVybiBkYXRhTGF5ZXJzO1xuICB9XG5cbiAgaWYgKFxuICAgIG1hcFN0eWxlPy52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10gJiZcbiAgICBwcmltYXJ5TWFwICYmXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW4gJiZcbiAgICBtYXBib3hBcGlVcmxcbiAgKSB7XG4gICAgZGF0YUxheWVycy5wdXNoKFxuICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzOiB7XG4gICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IFtjdXN0b21Cb3R0b21EZWNrTGF5ZXJzLCBjdXN0b21Ub3BEZWNrTGF5ZXJzXSA9IGdldEN1c3RvbURlY2tMYXllcnMoZGVja0dsUHJvcHMpO1xuXG4gIGNvbnN0IGVkaXRvckxheWVyOiBhbnlbXSA9IFtdO1xuICBpZiAoZWRpdG9ySW5mbykge1xuICAgIGVkaXRvckxheWVyLnB1c2goXG4gICAgICBnZXRFZGl0b3JMYXllcih7XG4gICAgICAgIC4uLmVkaXRvckluZm9cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBbLi4uY3VzdG9tQm90dG9tRGVja0xheWVycywgLi4uZGF0YUxheWVycywgLi4uY3VzdG9tVG9wRGVja0xheWVycywgLi4uZWRpdG9yTGF5ZXJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJPcmRlckZyb21MYXllcnM8VCBleHRlbmRzIHtpZDogc3RyaW5nfT4obGF5ZXJzOiBUW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBsYXllcnMubWFwKCh7aWR9KSA9PiBpZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyTGF5ZXJPcmRlcihcbiAgbGF5ZXJPcmRlcjogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSxcbiAgb3JpZ2luTGF5ZXJJZDogc3RyaW5nLFxuICBkZXN0aW5hdGlvbkxheWVySWQ6IHN0cmluZ1xuKTogVmlzU3RhdGVbJ2xheWVyT3JkZXInXSB7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gbGF5ZXJPcmRlci5pbmRleE9mKG9yaWdpbkxheWVySWQpO1xuICBjb25zdCBvdmVySW5kZXggPSBsYXllck9yZGVyLmluZGV4T2YoZGVzdGluYXRpb25MYXllcklkKTtcblxuICByZXR1cm4gYXJyYXlNb3ZlKGxheWVyT3JkZXIsIGFjdGl2ZUluZGV4LCBvdmVySW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXJUb0xheWVyT3JkZXIoXG4gIGxheWVyT3JkZXI6IFZpc1N0YXRlWydsYXllck9yZGVyJ10sXG4gIGxheWVySWQ6IHN0cmluZ1xuKTogc3RyaW5nW10ge1xuICByZXR1cm4gW2xheWVySWQsIC4uLmxheWVyT3JkZXJdO1xufVxuIl19
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -506,4 +486,4 @@ function updateViewport(originalViewport, viewportUpdates) {
506
486
 
507
487
  return newViewport;
508
488
  }
509
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwibmFtZXMiOlsibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwicGl0Y2giLCJiZWFyaW5nIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ6b29tIiwiZHJhZ1JvdGF0ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWluWm9vbSIsInVuZGVmaW5lZCIsIm1heFpvb20iLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwicGF5bG9hZCIsInZpZXdwb3J0IiwibWFwSW5kZXgiLCJ1cGRhdGVWaWV3cG9ydCIsIm90aGVyVmlld3BvcnRNYXBJbmRleCIsIm1hcCIsImN1cnJlbnRWaWV3cG9ydCIsImkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZpdEJvdW5kc1VwZGF0ZXIiLCJjZW50ZXJBbmRab29tIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJsZW5ndGgiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsImNvbmZpZyIsIm9wdGlvbnMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsIm1lcmdlZFN0YXRlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJjZW50ZXJNYXAiLCJnZXRNYXBEaW1Gb3JTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJuZXdTdGF0ZU1heEJvdW5kcyIsIm1heEJvdW5kc1BvbHlnb24iLCJoYXNNYXhCb3VuZHNDaGFuZ2VkIiwiZXZlcnkiLCJ2YWwiLCJpZHgiLCJkZWZpbmVkUHJvcHMiLCJvYmoiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjdSIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwibmV3Vmlld3BvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsZ0JBQWdCLEdBQUcsSUFBekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ08sSUFBTUMsaUJBQTJCLEdBQUc7QUFDekNDLEVBQUFBLEtBQUssRUFBRSxDQURrQztBQUV6Q0MsRUFBQUEsT0FBTyxFQUFFLENBRmdDO0FBR3pDQyxFQUFBQSxRQUFRLEVBQUUsUUFIK0I7QUFJekNDLEVBQUFBLFNBQVMsRUFBRSxDQUFDLFNBSjZCO0FBS3pDQyxFQUFBQSxJQUFJLEVBQUUsQ0FMbUM7QUFNekNDLEVBQUFBLFVB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QVcsQ0FBQ3JFLE9BQVosSUFBdUJxRSxXQUFXLENBQUN6RSxJQUFuQyxJQUEyQ3lFLFdBQVcsQ0FBQ3pFLElBQVosR0FBbUJ5RSxXQUFXLENBQUNyRSxPQUE5RSxFQUF1RjtBQUNyRnFFLElBQUFBLFdBQVcsQ0FBQ3pFLElBQVosR0FBbUJ5RSxXQUFXLENBQUNyRSxPQUEvQjtBQUNELEdBVHNGLENBVXZGOzs7QUFDQSxNQUFJcUUsV0FBVyxDQUFDbkUsT0FBWixJQUF1Qm1FLFdBQVcsQ0FBQ3pFLElBQW5DLElBQTJDeUUsV0FBVyxDQUFDekUsSUFBWixHQUFtQnlFLFdBQVcsQ0FBQ25FLE9BQTlFLEVBQXVGO0FBQ3JGbUUsSUFBQUEsV0FBVyxDQUFDekUsSUFBWixHQUFtQnlFLFdBQVcsQ0FBQ25FLE9BQS9CO0FBQ0QsR0Fic0YsQ0FjdkY7OztBQUNBLE1BQUltRSxXQUFXLENBQUNsRSxTQUFaLElBQXlCLDJCQUFla0UsV0FBVyxDQUFDbEUsU0FBM0IsQ0FBN0IsRUFBb0U7QUFDbEU7QUFDQWtFLElBQUFBLFdBQVcsR0FBR3BCLDJCQUEyQixDQUFDa0IsZ0JBQUQsRUFBbUJFLFdBQW5CLENBQXpDO0FBQ0Q7O0FBRUQsU0FBT0EsV0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCBib29sZWFuV2l0aGluIGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCBiYm94UG9seWdvbiBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgZGVlcG1lcmdlIGZyb20gJ2RlZXBtZXJnZSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gucGljayc7XG5cbmltcG9ydCB7Z2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsIHZhbGlkYXRlQm91bmRzLCBNQVBCT1hfVElMRV9TSVpFfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0YXRlLCB7cGF5bG9hZDogWzEyNy4zNCwgMzEuMDksIDEyNy41NiwgMzEuNTldXX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdGF0ZWBcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBwaXRjaCBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBiZWFyaW5nIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGxhdGl0dWRlIERlZmF1bHQ6IGAzNy43NTA0M2BcbiAqIEBwcm9wZXJ0eSBsb25naXR1ZGUgRGVmYXVsdDogYC0xMjIuMzQ2NzlgXG4gKiBAcHJvcGVydHkgem9vbSBEZWZhdWx0OiBgOWBcbiAqIEBwcm9wZXJ0eSBkcmFnUm90YXRlIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSB3aWR0aCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IGhlaWdodCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IG1pblpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heEJvdW5kczogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgaXNTcGxpdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBpc1ZpZXdwb3J0U3luY2VkOiBgdHJ1ZWAsXG4gKiBAcHJvcGVydHkgaXNab29tTG9ja2VkOiBgZmFsc2VgLFxuICogQHByb3BlcnR5IHNwbGl0TWFwVmlld3BvcnRzOiBgW11gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVEFURTogTWFwU3RhdGUgPSB7XG4gIHBpdGNoOiAwLFxuICBiZWFyaW5nOiAwLFxuICBsYXRpdHVkZTogMzcuNzUwNDMsXG4gIGxvbmdpdHVkZTogLTEyMi4zNDY3OSxcbiAgem9vbTogOSxcbiAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBtaW5ab29tOiB1bmRlZmluZWQsXG4gIG1heFpvb206IHVuZGVmaW5lZCxcbiAgbWF4Qm91bmRzOiB1bmRlZmluZWQsXG4gIGlzU3BsaXQ6IGZhbHNlLFxuICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICBzcGxpdE1hcFZpZXdwb3J0czogW11cbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3ZpZXdwb3J0LCBtYXBJbmRleCA9IDB9ID0gYWN0aW9uLnBheWxvYWQ7XG5cbiAgaWYgKHN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBUaGUgYHVwZGF0ZVZpZXdwb3J0YCBmdW5jdGlvbiBpcyB0eXBlZCBhcyAoVmlld3BvcnQsIFZpZXdwb3J0KSAtPiBWaWV3cG9ydCBidXQgaGVyZSB0aGVcbiAgICAvLyBleHBlY3RlZCB0eXBpbmcgaXMgKE1hcFN0YXRlLCBWaWV3cG9ydCkgLT4gTWFwU3RhdGUuXG4gICAgLy8gdGhpcyBjb3VsZCBiZSBhIHBvdGVudGlhbCBidWcgYXMgd2UgdHJlYXQgVmlld3BvcnQgYW5kIE1hcFN0YXRlIGFzIGVxdWFsIHNlZW1pbmdseVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KHN0YXRlLCB2aWV3cG9ydCk7XG4gIH1cblxuICBsZXQgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gLTE7XG4gIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gc3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gbWFwSW5kZXgpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgdmlld3BvcnQgd2l0aCB0aGUgbmV3Vmlld3BvcnQgaW5mbyBpbiB0aGUgYWN0aW9uIHBheWxvYWRcbiAgICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChjdXJyZW50Vmlld3BvcnQsIHZpZXdwb3J0KTtcbiAgICB9XG5cbiAgICBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSBpO1xuICAgIC8vIG1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgKHlldClcbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICB9KTtcblxuICAvLyBtYWtlIGNvbmRpdGlvbmFsIHVwZGF0ZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0IG5vdCBtYXRjaGluZyB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gIGlmIChOdW1iZXIuaXNGaW5pdGUob3RoZXJWaWV3cG9ydE1hcEluZGV4KSAmJiBvdGhlclZpZXdwb3J0TWFwSW5kZXggPiAtMSkge1xuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGEgc3BlY2lhbCBjYXNlIGFuZCBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgIHdpZHRoOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS5oZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBvdGhlciB2aWV3cG9ydCB3aXRoIHRoZSBuZXcgem9vbSBmcm9tIHRoZSBzcGxpdCB2aWV3cG9ydCB0aGF0IHdhcyB1cGRhdGVkIHdpdGggdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICAgICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgICAgem9vbTogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLnpvb21cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1cGRhdGUgdGhlIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCBzcGxpdCB2aWV3cG9ydFxuICAgIC8vIFdIWT8gdGhpcyBhdm9pZHMgem9vbSBhbmQgYm91bmRzIFwianVtcGluZ1wiIGR1ZSB0byBhIFwic3RhbGVcIiB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2hlbjpcbiAgICAvLyAgMS4gdG9nZ2xpbmcgb2ZmIHRoZSB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZSB0byBzd2l0Y2ggdG8gdGhlIHN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC8vICAyLiB0b2dnbGluZyBvbiB0aGUgem9vbSBsb2NrIGR1cmluZyBhbiB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC4uLnN0YXRlLFxuICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XSxcbiAgICAvLyB1cGRhdGUgdGhlIG1hcFN0YXRlIHdpdGggdGhlIG5ldyBhcnJheSBvZiBzcGxpdCB2aWV3cG9ydHNcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1xuICB9O1xufTtcblxuLyoqXG4gKiBGaXQgbWFwIHZpZXdwb3J0IHRvIGJvdW5kc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGZpdEJvdW5kc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuRml0Qm91bmRzVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYWN0aW9uLnBheWxvYWQsIHtcbiAgICB3aWR0aDogc3RhdGUud2lkdGgsXG4gICAgaGVpZ2h0OiBzdGF0ZS5oZWlnaHRcbiAgfSk7XG4gIGlmICghY2VudGVyQW5kWm9vbSkge1xuICAgIC8vIGJvdW5kcyBpcyBpbnZhbGlkXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pID8ge3pvb206IGNlbnRlckFuZFpvb20uem9vbX0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiBmaXR0aW5nIHRvIGJvdW5kcyB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIGxhdGl0dWRlOiBuZXdTdGF0ZS5sYXRpdHVkZSxcbiAgICAgIGxvbmdpdHVkZTogbmV3U3RhdGUubG9uZ2l0dWRlLFxuICAgICAgem9vbTogbmV3U3RhdGUuem9vbVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gM2QgYW5kIDJkIG1hcC5cbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLntcbiAgICAgIHBpdGNoOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDUwLFxuICAgICAgYmVhcmluZzogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiAyNFxuICAgIH0sXG4gICAgZHJhZ1JvdGF0ZTogIXN0YXRlLmRyYWdSb3RhdGVcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIHJlc2V0IG1hcFN0YXRlIHRvIGluaXRpYWwgU3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uSU5JVElBTF9NQVBfU1RBVEUsXG4gIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlOiBzdGF0ZS5pbml0aWFsU3RhdGVcbn0pO1xuXG4vLyBjb25zaWRlciBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgc3BsaXQgbWFwIGFuZCB1c2VyIHdhbnRzIHRvIHJlc2V0XG4vKipcbiAqIFVwZGF0ZSBgbWFwU3RhdGVgIHRvIHByb3BhZ2F0ZSBhIG5ldyBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7fSwgb3B0aW9ucyA9IHt9LCBib3VuZHMgPSBudWxsfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0YXRlID0+IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtQYXJ0aWFsPE1hcFN0YXRlPn1cbiAgICovXG4gIGNvbnN0IG1hcFN0YXRlID0gKGNvbmZpZyB8fCB7fSkubWFwU3RhdGUgfHwge307XG4gIC8vIG1lcmdlZCByZWNlaXZlZCBtYXBTdGF0ZSB3aXRoIHByZXZpb3VzIHN0YXRlXG4gIC8vIHN0YXRlIGFsc28gbWF5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZXcgdG8gYW4gZXhpc3RpbmcsIHNhdmVkIHByb2plY3QncyBtYXBTdGF0ZVxuXG4gIGxldCBtZXJnZWRTdGF0ZSA9IGRlZXBtZXJnZTxNYXBTdGF0ZT4oc3RhdGUsIG1hcFN0YXRlLCB7XG4gICAgLy8gbm90ZTogZGVlcG1lcmdlIGJ5IGRlZmF1bHQgd2lsbCBtZXJnZSBhcnJheXMgYnkgY29uY2F0ZW5hdGluZyB0aGVtXG4gICAgLy8gYnV0IHdlIG5lZWQgdG8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIGFycmF5cyB3aXRoIHNvdXJjZSBhcnJheXMsIGlmIHByZXNlbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vVGVoU2hyaWtlL2RlZXBtZXJnZSNhcnJheW1lcmdlLWV4YW1wbGUtb3ZlcndyaXRlLXRhcmdldC1hcnJheVxuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuXG4gIC8vIGlmIGNlbnRlciBtYXBcbiAgLy8gY2VudGVyIG1hcCB3aWxsIG92ZXJyaWRlIG1hcFN0YXRlIGNvbmZpZ1xuICBpZiAob3B0aW9ucy5jZW50ZXJNYXAgJiYgYm91bmRzKSB7XG4gICAgbWVyZ2VkU3RhdGUgPSBmaXRCb3VuZHNVcGRhdGVyKG1lcmdlZFN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiBib3VuZHNcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgLy8gdXBkYXRlIHdpZHRoIGlmIGBpc1NwbGl0YCBoYXMgY2hhbmdlZFxuICAgIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKG1lcmdlZFN0YXRlLmlzU3BsaXQsIHN0YXRlKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBvbmUgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5Ub2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgLi4uKCFzdGF0ZS5pc1NwbGl0ID09PSBmYWxzZVxuICAgID8ge1xuICAgICAgICAvLyBpZiB0b2dnbGluZyB0byBubyBsb25nZXIgc3BsaXQgKHNpbmdsZSBtb2RlKSB0aGVuIHJlc2V0IGEgZmV3IHByb3BlcnRpZXNcbiAgICAgICAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgICAgICAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgICAgICAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG4gICAgICB9XG4gICAgOiB7fSlcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIGxvY2tlZCBhbmQgdW5sb2NrZWQgc3BsaXQgdmlld3BvcnRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXJBY3Rpb25cbikgPT4ge1xuICAvLyBuZXcgbWFwIHN0YXRlIGltbWVkaWF0ZWx5IGdldHMgdGhlIG5ldywgb3B0aW9uYWwgcGF5bG9hZCB2YWx1ZXMgZm9yIGlzVmlld3BvcnRTeW5jZWQgYW5kL29yIGlzWm9vbUxvY2tlZFxuICBjb25zdCBuZXdNYXBTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi4oYWN0aW9uLnBheWxvYWQgfHwge30pXG4gIH07XG5cbiAgaWYgKG5ld01hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBzd2l0Y2hpbmcgZnJvbSB1bnN5bmNlZCB0byBzeW5jZWQgdmlld3BvcnRzXG4gICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBbXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzd2l0Y2hpbmcgZnJvbSBzeW5jZWQgdG8gdW5zeW5jZWQgdmlld3BvcnRzXG4gICAgLy8gb3IgYWxyZWFkeSBpbiB1bnN5bmNlZCBtb2RlIGFuZCB0b2dnbGluZyBsb2NrZWQgem9vbVxuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCAmJiAhbmV3TWFwU3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyBzd2l0Y2hpbmcgb2ZmIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBkb24ndCBjb3B5IHRoZSBtYXBTdGF0ZXMgdG8gbGVmdCBhbmQgcmlnaHQgdmlld3BvcnRzIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSB6b29tIFwianVtcGluZ1wiXG4gICAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKCFzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgbmV3TWFwU3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyBzd2l0Y2hpbmcgb24gbG9ja2VkIHpvb20gd2hpbGUgdW5zeW5jZWRcbiAgICAgIC8vIG9ubHkgY29weSB6b29tIHZpZXdwb3J0IHByb3BlcnR5IGZyb20gdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHZpZXdwb3J0IHRvIHRoZSBvdGhlclxuICAgICAgLy8gVE9ETzogZG8gd2Ugd2FudCB0byBjaGVjayBmb3IgYSBtYXRjaCBhIGRpZmZlcmVudCB3YXksIHN1Y2ggYXMgYSBjb21ibyBvZiBgbGF0aXR1ZGVgIGFuZCBgbG9uZ2l0dWRlYD9cbiAgICAgIGNvbnN0IGxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmZpbmRJbmRleChcbiAgICAgICAgdiA9PiBuZXdNYXBTdGF0ZS56b29tID09PSB2Lnpvb21cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IGxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCkge1xuICAgICAgICAgIC8vIG5vIHpvb20gdG8gbW9kaWZ5IGhlcmVcbiAgICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSBvdGhlciB2aWV3cG9ydCBnZXRzIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCdzIHpvb21cbiAgICAgICAgLy8gV0hZPyB0aGUgdmlld3BvcnQgdGhlIHVzZXIgd2FzIGxhc3QgaW50ZXJhY3Rpbmcgd2l0aCB3aWxsIHNldCB6b29tIGFjcm9zcyB0aGUgYm9hcmQgZm9yIHNtb290aCBVWFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgICAgICB6b29tOiBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0c1tsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXhdLnpvb21cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IHNwbGl0TWFwVmlld3BvcnRzO1xuXG4gICAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gICAgfVxuXG4gICAgLy8gaWYgY3VycmVudCB2aWV3cG9ydCBpcyBzeW5jZWQsIGFuZCB3ZSBhcmUgdW5zeW5jaW5nIGl0XG4gICAgLy8gb3IgYWxyZWFkeSBpbiB1bnN5bmNlZCBtb2RlIGFuZCBOT1QgdG9nZ2xpbmcgbG9ja2VkIHpvb21cbiAgICAvLyBtYWtlIGEgZnJlc2ggY29weSBvZiB0aGUgY3VycmVudCB2aWV3cG9ydCBvYmplY3QsIGFzc2lnbiBpdCB0byBzcGxpdE1hcFZpZXdwb3J0c1tdXG4gICAgLy8gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUgaXMgY2FsbGVkIHR3aWNlIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGNvbmZsaWN0c1xuICAgIGNvbnN0IGxlZnRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBjb25zdCByaWdodFZpZXdwb3J0ID0gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobmV3TWFwU3RhdGUpO1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW2xlZnRWaWV3cG9ydCwgcmlnaHRWaWV3cG9ydF07XG4gIH1cblxuICAvLyByZXR1cm4gbmV3IHN0YXRlXG4gIHJldHVybiBuZXdNYXBTdGF0ZTtcbn07XG5cbi8vIEhlbHBlcnNcbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBEaW1Gb3JTcGxpdE1hcChpc1NwbGl0LCBzdGF0ZSkge1xuICAvLyBjYXNlczpcbiAgLy8gMS4gc3RhdGUgc3BsaXQ6IHRydWUgLSBpc1NwbGl0OiB0cnVlXG4gIC8vIGRvIG5vdGhpbmdcbiAgLy8gMi4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogZmFsc2VcbiAgLy8gZG8gbm90aGluZ1xuICBpZiAoc3RhdGUuaXNTcGxpdCA9PT0gaXNTcGxpdCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHdpZHRoID1cbiAgICBzdGF0ZS5pc1NwbGl0ICYmICFpc1NwbGl0XG4gICAgICA/IC8vIDMuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogZmFsc2VcbiAgICAgICAgLy8gZG91YmxlIHdpZHRoXG4gICAgICAgIHN0YXRlLndpZHRoICogMlxuICAgICAgOiAvLyA0LiBzdGF0ZSBzcGxpdDogZmFsc2UgLSBpc1NwbGl0OiB0cnVlXG4gICAgICAgIC8vIHNwbGl0IHdpZHRoXG4gICAgICAgIHN0YXRlLndpZHRoIC8gMjtcblxuICByZXR1cm4ge1xuICAgIHdpZHRoXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyhzdGF0ZTogTWFwU3RhdGUsIG5ld01hcFN0YXRlOiBNYXBTdGF0ZSkge1xuICAvLyBHZXQgdGhlIG5ldyB2aWV3cG9ydCBib3VuZHNcbiAgY29uc3Qgdmlld3BvcnRCb3VuZHMgPSBnZW9WaWV3cG9ydC5ib3VuZHMoXG4gICAgW25ld01hcFN0YXRlLmxvbmdpdHVkZSwgbmV3TWFwU3RhdGUubGF0aXR1ZGVdLFxuICAgIG5ld01hcFN0YXRlLnpvb20sXG4gICAgW25ld01hcFN0YXRlLndpZHRoLCBuZXdNYXBTdGF0ZS5oZWlnaHRdLFxuICAgIE1BUEJPWF9USUxFX1NJWkVcbiAgKTtcbiAgLy8gR2VuZXJhdGUgdHVyZiBQb2x5Z29uIGZyb20gYm91bmRzIGZvciBjb21wYXJpc29uXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzUG9seWdvbiA9IGJib3hQb2x5Z29uKHZpZXdwb3J0Qm91bmRzKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBuZXdTdGF0ZU1heEJvdW5kczogQm91bmRzID0gbmV3TWFwU3RhdGUubWF4Qm91bmRzO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG1heEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbihuZXdTdGF0ZU1heEJvdW5kcyk7XG5cbiAgLy8gSWYgbWF4Qm91bmRzIGhhcyBjaGFuZ2VkIHJlc2V0IHRoZSB2aWV3cG9ydCB0byBzbmFwIHRvIGJvdW5kc1xuICBjb25zdCBoYXNNYXhCb3VuZHNDaGFuZ2VkID1cbiAgICAhc3RhdGUubWF4Qm91bmRzIHx8ICFzdGF0ZS5tYXhCb3VuZHMuZXZlcnkoKHZhbCwgaWR4KSA9PiB2YWwgPT09IG5ld1N0YXRlTWF4Qm91bmRzW2lkeF0pO1xuICBpZiAoaGFzTWF4Qm91bmRzQ2hhbmdlZCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gICAgaWYgKCFib29sZWFuV2l0aGluKHZpZXdwb3J0Qm91bmRzUG9seWdvbiwgbWF4Qm91bmRzUG9seWdvbikpIHtcbiAgICAgIGNvbnN0IHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tfSA9IGZpdEJvdW5kcyh7XG4gICAgICAgIHdpZHRoOiBuZXdNYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBuZXdNYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgYm91bmRzOiBbXG4gICAgICAgICAgW25ld1N0YXRlTWF4Qm91bmRzWzBdLCBuZXdTdGF0ZU1heEJvdW5kc1sxXV0sXG4gICAgICAgICAgW25ld1N0YXRlTWF4Qm91bmRzWzJdLCBuZXdTdGF0ZU1heEJvdW5kc1szXV1cbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIG5ld01hcFN0YXRlID0ge1xuICAgICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgIGxvbmdpdHVkZSxcbiAgICAgICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAgICAgLy8gdG8gYXZvaWQgY29ycnVwdCBzdGF0ZSBhbmQgcG90ZW50aWFsIGNyYXNoZXMgYXMgem9vbSBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlclxuICAgICAgICAuLi4oTnVtYmVyLmlzRmluaXRlKHpvb20pID8ge3pvb219IDoge30pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICBpZiAoIWJvb2xlYW5XaXRoaW4odmlld3BvcnRCb3VuZHNQb2x5Z29uLCBtYXhCb3VuZHNQb2x5Z29uKSkge1xuICAgIG5ld01hcFN0YXRlID0ge1xuICAgICAgLi4ubmV3TWFwU3RhdGUsXG4gICAgICBsb25naXR1ZGU6IHN0YXRlLmxvbmdpdHVkZSxcbiAgICAgIGxhdGl0dWRlOiBzdGF0ZS5sYXRpdHVkZSxcbiAgICAgIHpvb206IHN0YXRlLnpvb21cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5ld01hcFN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUoc3RhdGU6IE1hcFN0YXRlKTogVmlld3BvcnQge1xuICByZXR1cm4gcGljayhzdGF0ZSwgW1xuICAgICd3aWR0aCcsXG4gICAgJ2hlaWdodCcsXG4gICAgJ3pvb20nLFxuICAgICdwaXRjaCcsXG4gICAgJ2JlYXJpbmcnLFxuICAgICdsYXRpdHVkZScsXG4gICAgJ2xvbmdpdHVkZScsXG4gICAgJ2RyYWdSb3RhdGUnLFxuICAgICdtaW5ab29tJyxcbiAgICAnbWF4Wm9vbScsXG4gICAgJ21heEJvdW5kcydcbiAgXSk7XG59XG5cbi8qKiBTZWxlY3QgaXRlbXMgZnJvbSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgbm90IHVuZGVmaW5lZCAqL1xuY29uc3QgZGVmaW5lZFByb3BzID0gb2JqID0+XG4gIE9iamVjdC5lbnRyaWVzKG9iaikucmVkdWNlKFxuICAgIChhY2N1LCBbaywgdl0pID0+ICh7Li4uYWNjdSwgLi4uKHYgIT09IHVuZGVmaW5lZCA/IHtba106IHZ9IDoge30pfSksXG4gICAge31cbiAgKTtcblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnQob3JpZ2luYWxWaWV3cG9ydDogVmlld3BvcnQsIHZpZXdwb3J0VXBkYXRlczogVmlld3BvcnQpOiBWaWV3cG9ydCB7XG4gIGxldCBuZXdWaWV3cG9ydCA9IHtcbiAgICAuLi5vcmlnaW5hbFZpZXdwb3J0LFxuICAgIC4uLihkZWZpbmVkUHJvcHModmlld3BvcnRVcGRhdGVzKSB8fCB7fSlcbiAgfTtcblxuICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGJlbGxvdyBtaW5ab29tIGlmIGRlZmluZWRcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1pblpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSAmJiBuZXdWaWV3cG9ydC56b29tIDwgbmV3Vmlld3BvcnQubWluWm9vbSkge1xuICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSB6b29tIGxldmVsIGRvZXNuJ3QgZ28gYWJvdmUgbWF4Wm9vbSBpZiBkZWZpbmVkXG4gIGlmIChuZXdWaWV3cG9ydC5tYXhab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA+IG5ld1ZpZXdwb3J0Lm1heFpvb20pIHtcbiAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbTtcbiAgfVxuICAvLyBMaW1pdCB2aWV3cG9ydCB1cGRhdGUgYmFzZWQgb24gbWF4Qm91bmRzXG4gIGlmIChuZXdWaWV3cG9ydC5tYXhCb3VuZHMgJiYgdmFsaWRhdGVCb3VuZHMobmV3Vmlld3BvcnQubWF4Qm91bmRzKSkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgbmV3Vmlld3BvcnQgPSB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMob3JpZ2luYWxWaWV3cG9ydCwgbmV3Vmlld3BvcnQpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1ZpZXdwb3J0O1xufVxuIl19
489
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwibmFtZXMiOlsibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwicGl0Y2giLCJiZWFyaW5nIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJ6b29tIiwiZHJhZ1JvdGF0ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWluWm9vbSIsInVuZGVmaW5lZCIsIm1heFpvb20iLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwicGF5bG9hZCIsInZpZXdwb3J0IiwibWFwSW5kZXgiLCJ1cGRhdGVWaWV3cG9ydCIsIm90aGVyVmlld3BvcnRNYXBJbmRleCIsIm1hcCIsImN1cnJlbnRWaWV3cG9ydCIsImkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImZpdEJvdW5kc1VwZGF0ZXIiLCJjZW50ZXJBbmRab29tIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJsZW5ndGgiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsImNvbmZpZyIsIm9wdGlvbnMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsIm1lcmdlZFN0YXRlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJjZW50ZXJNYXAiLCJnZXRNYXBEaW1Gb3JTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJuZXdTdGF0ZU1heEJvdW5kcyIsIm1heEJvdW5kc1BvbHlnb24iLCJoYXNNYXhCb3VuZHNDaGFuZ2VkIiwiZXZlcnkiLCJ2YWwiLCJpZHgiLCJkZWZpbmVkUHJvcHMiLCJvYmoiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjdSIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwibmV3Vmlld3BvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQSxJQUFNQSxnQkFBZ0IsR0FBRyxJQUF6QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDTyxJQUFNQyxpQkFBMkIsR0FBRztBQUN6Q0MsRUFBQUEsS0FBSyxFQUFFLENBRGtDO0FBRXpDQyxFQUFBQSxPQUFPLEVBQUUsQ0FGZ0M7QUFHekNDLEVBQUFBLFFBQVEsRUFBRSxRQUgrQjtBQUl6Q0MsRUFBQUEsU0FBUyxFQUFFLENBQUMsU0FKNkI7QUFLekNDLEVBQUFBLElBQUksRUFBRSxDQUxtQztBQU16Q0MsRUFBQUEsVUFB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VyxDQUFDckUsT0FBWixJQUF1QnFFLFdBQVcsQ0FBQ3pFLElBQW5DLElBQTJDeUUsV0FBVyxDQUFDekUsSUFBWixHQUFtQnlFLFdBQVcsQ0FBQ3JFLE9BQTlFLEVBQXVGO0FBQ3JGcUUsSUFBQUEsV0FBVyxDQUFDekUsSUFBWixHQUFtQnlFLFdBQVcsQ0FBQ3JFLE9BQS9CO0FBQ0QsR0FUc0YsQ0FVdkY7OztBQUNBLE1BQUlxRSxXQUFXLENBQUNuRSxPQUFaLElBQXVCbUUsV0FBVyxDQUFDekUsSUFBbkMsSUFBMkN5RSxXQUFXLENBQUN6RSxJQUFaLEdBQW1CeUUsV0FBVyxDQUFDbkUsT0FBOUUsRUFBdUY7QUFDckZtRSxJQUFBQSxXQUFXLENBQUN6RSxJQUFaLEdBQW1CeUUsV0FBVyxDQUFDbkUsT0FBL0I7QUFDRCxHQWJzRixDQWN2Rjs7O0FBQ0EsTUFBSW1FLFdBQVcsQ0FBQ2xFLFNBQVosSUFBeUIsMkJBQWVrRSxXQUFXLENBQUNsRSxTQUEzQixDQUE3QixFQUFvRTtBQUNsRTtBQUNBa0UsSUFBQUEsV0FBVyxHQUFHcEIsMkJBQTJCLENBQUNrQixnQkFBRCxFQUFtQkUsV0FBbkIsQ0FBekM7QUFDRDs7QUFFRCxTQUFPQSxXQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IGJvb2xlYW5XaXRoaW4gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IGJib3hQb2x5Z29uIGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcbmltcG9ydCBkZWVwbWVyZ2UgZnJvbSAnZGVlcG1lcmdlJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC5waWNrJztcblxuaW1wb3J0IHtnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcywgdmFsaWRhdGVCb3VuZHMsIE1BUEJPWF9USUxFX1NJWkV9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3RhdGVVcGRhdGVyc30gZnJvbSAna2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3RhdGU6IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3RhdGUsIHtwYXlsb2FkOiBbMTI3LjM0LCAzMS4wOSwgMTI3LjU2LCAzMS41OV1dfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0YXRlYFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHBpdGNoIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGJlYXJpbmcgRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgbGF0aXR1ZGUgRGVmYXVsdDogYDM3Ljc1MDQzYFxuICogQHByb3BlcnR5IGxvbmdpdHVkZSBEZWZhdWx0OiBgLTEyMi4zNDY3OWBcbiAqIEBwcm9wZXJ0eSB6b29tIERlZmF1bHQ6IGA5YFxuICogQHByb3BlcnR5IGRyYWdSb3RhdGUgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IHdpZHRoIERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgaGVpZ2h0IERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgbWluWm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Wm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVXBkYXRlTWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7dmlld3BvcnQsIG1hcEluZGV4ID0gMH0gPSBhY3Rpb24ucGF5bG9hZDtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodFxuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAuLi4oTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSkgPyB7em9vbTogY2VudGVyQW5kWm9vbS56b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5Ub2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4ue1xuICAgICAgcGl0Y2g6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogNTAsXG4gICAgICBiZWFyaW5nOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDI0XG4gICAgfSxcbiAgICBkcmFnUm90YXRlOiAhc3RhdGUuZHJhZ1JvdGF0ZVxuICB9O1xuXG4gIC8vIGlmIHRvZ2dsaW5nIDNkIGFuZCAyZCB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IHBpdGNoLCBiZWFyaW5nLCBhbmQgZHJhZ1JvdGF0ZSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBwaXRjaDogbmV3U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXdTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV3U3RhdGUuZHJhZ1JvdGF0ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogcmVzZXQgbWFwU3RhdGUgdG8gaW5pdGlhbCBTdGF0ZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5JTklUSUFMX01BUF9TVEFURSxcbiAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxufSk7XG5cbi8vIGNvbnNpZGVyIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSBzcGxpdCBtYXAgYW5kIHVzZXIgd2FudHMgdG8gcmVzZXRcbi8qKlxuICogVXBkYXRlIGBtYXBTdGF0ZWAgdG8gcHJvcGFnYXRlIGEgbmV3IGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcGF5bG9hZDoge2NvbmZpZyA9IHt9LCBvcHRpb25zID0ge30sIGJvdW5kcyA9IG51bGx9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3RhdGUgPT4ge1xuICAvKipcbiAgICogQHR5cGUge1BhcnRpYWw8TWFwU3RhdGU+fVxuICAgKi9cbiAgY29uc3QgbWFwU3RhdGUgPSAoY29uZmlnIHx8IHt9KS5tYXBTdGF0ZSB8fCB7fTtcbiAgLy8gbWVyZ2VkIHJlY2VpdmVkIG1hcFN0YXRlIHdpdGggcHJldmlvdXMgc3RhdGVcbiAgLy8gc3RhdGUgYWxzbyBtYXkgaW5jbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5ldyB0byBhbiBleGlzdGluZywgc2F2ZWQgcHJvamVjdCdzIG1hcFN0YXRlXG5cbiAgbGV0IG1lcmdlZFN0YXRlID0gZGVlcG1lcmdlPE1hcFN0YXRlPihzdGF0ZSwgbWFwU3RhdGUsIHtcbiAgICAvLyBub3RlOiBkZWVwbWVyZ2UgYnkgZGVmYXVsdCB3aWxsIG1lcmdlIGFycmF5cyBieSBjb25jYXRlbmF0aW5nIHRoZW1cbiAgICAvLyBidXQgd2UgbmVlZCB0byBvdmVyd3JpdGUgZGVzdGluYXRpb24gYXJyYXlzIHdpdGggc291cmNlIGFycmF5cywgaWYgcHJlc2VudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9UZWhTaHJpa2UvZGVlcG1lcmdlI2FycmF5bWVyZ2UtZXhhbXBsZS1vdmVyd3JpdGUtdGFyZ2V0LWFycmF5XG4gICAgYXJyYXlNZXJnZTogKF9kZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSkgPT4gc291cmNlQXJyYXlcbiAgfSk7XG5cbiAgLy8gaWYgY2VudGVyIG1hcFxuICAvLyBjZW50ZXIgbWFwIHdpbGwgb3ZlcnJpZGUgbWFwU3RhdGUgY29uZmlnXG4gIGlmIChvcHRpb25zLmNlbnRlck1hcCAmJiBib3VuZHMpIHtcbiAgICBtZXJnZWRTdGF0ZSA9IGZpdEJvdW5kc1VwZGF0ZXIobWVyZ2VkU3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IGJvdW5kc1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKCFzdGF0ZS5pc1NwbGl0LCBzdGF0ZSksXG4gIGlzU3BsaXQ6ICFzdGF0ZS5pc1NwbGl0LFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gbG9ja2VkIGFuZCB1bmxvY2tlZCBzcGxpdCB2aWV3cG9ydHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlckFjdGlvblxuKSA9PiB7XG4gIC8vIG5ldyBtYXAgc3RhdGUgaW1tZWRpYXRlbHkgZ2V0cyB0aGUgbmV3LCBvcHRpb25hbCBwYXlsb2FkIHZhbHVlcyBmb3IgaXNWaWV3cG9ydFN5bmNlZCBhbmQvb3IgaXNab29tTG9ja2VkXG4gIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSlcbiAgfTtcblxuICBpZiAobmV3TWFwU3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHVuc3luY2VkIHRvIHN5bmNlZCB2aWV3cG9ydHNcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtdO1xuICB9IGVsc2Uge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHN5bmNlZCB0byB1bnN5bmNlZCB2aWV3cG9ydHNcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkICYmICFuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvZmYgbG9ja2VkIHpvb20gd2hpbGUgdW5zeW5jZWRcbiAgICAgIC8vIGRvbid0IGNvcHkgdGhlIG1hcFN0YXRlcyB0byBsZWZ0IGFuZCByaWdodCB2aWV3cG9ydHMgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIHpvb20gXCJqdW1waW5nXCJcbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRlLmlzWm9vbUxvY2tlZCAmJiBuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gb25seSBjb3B5IHpvb20gdmlld3BvcnQgcHJvcGVydHkgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQgdG8gdGhlIG90aGVyXG4gICAgICAvLyBUT0RPOiBkbyB3ZSB3YW50IHRvIGNoZWNrIGZvciBhIG1hdGNoIGEgZGlmZmVyZW50IHdheSwgc3VjaCBhcyBhIGNvbWJvIG9mIGBsYXRpdHVkZWAgYW5kIGBsb25naXR1ZGVgP1xuICAgICAgY29uc3QgbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4ID0gbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMuZmluZEluZGV4KFxuICAgICAgICB2ID0+IG5ld01hcFN0YXRlLnpvb20gPT09IHYuem9vbVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4KSB7XG4gICAgICAgICAgLy8gbm8gem9vbSB0byBtb2RpZnkgaGVyZVxuICAgICAgICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIG90aGVyIHZpZXdwb3J0IGdldHMgdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHZpZXdwb3J0J3Mgem9vbVxuICAgICAgICAvLyBXSFk/IHRoZSB2aWV3cG9ydCB0aGUgdXNlciB3YXMgbGFzdCBpbnRlcmFjdGluZyB3aXRoIHdpbGwgc2V0IHpvb20gYWNyb3NzIHRoZSBib2FyZCBmb3Igc21vb3RoIFVYXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgIHpvb206IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzW2xhc3RVcGRhdGVkVmlld3BvcnRJbmRleF0uem9vbVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gc3BsaXRNYXBWaWV3cG9ydHM7XG5cbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBpZiBjdXJyZW50IHZpZXdwb3J0IGlzIHN5bmNlZCwgYW5kIHdlIGFyZSB1bnN5bmNpbmcgaXRcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIE5PVCB0b2dnbGluZyBsb2NrZWQgem9vbVxuICAgIC8vIG1ha2UgYSBmcmVzaCBjb3B5IG9mIHRoZSBjdXJyZW50IHZpZXdwb3J0IG9iamVjdCwgYXNzaWduIGl0IHRvIHNwbGl0TWFwVmlld3BvcnRzW11cbiAgICAvLyBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZSBpcyBjYWxsZWQgdHdpY2UgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gY29uZmxpY3RzXG4gICAgY29uc3QgbGVmdFZpZXdwb3J0ID0gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobmV3TWFwU3RhdGUpO1xuICAgIGNvbnN0IHJpZ2h0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBbbGVmdFZpZXdwb3J0LCByaWdodFZpZXdwb3J0XTtcbiAgfVxuXG4gIC8vIHJldHVybiBuZXcgc3RhdGVcbiAgcmV0dXJuIG5ld01hcFN0YXRlO1xufTtcblxuLy8gSGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcERpbUZvclNwbGl0TWFwKGlzU3BsaXQsIHN0YXRlKSB7XG4gIC8vIGNhc2VzOlxuICAvLyAxLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IHRydWVcbiAgLy8gZG8gbm90aGluZ1xuICAvLyAyLiBzdGF0ZSBzcGxpdDogZmFsc2UgLSBpc1NwbGl0OiBmYWxzZVxuICAvLyBkbyBub3RoaW5nXG4gIGlmIChzdGF0ZS5pc1NwbGl0ID09PSBpc1NwbGl0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgd2lkdGggPVxuICAgIHN0YXRlLmlzU3BsaXQgJiYgIWlzU3BsaXRcbiAgICAgID8gLy8gMy4gc3RhdGUgc3BsaXQ6IHRydWUgLSBpc1NwbGl0OiBmYWxzZVxuICAgICAgICAvLyBkb3VibGUgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggKiAyXG4gICAgICA6IC8vIDQuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IHRydWVcbiAgICAgICAgLy8gc3BsaXQgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggLyAyO1xuXG4gIHJldHVybiB7XG4gICAgd2lkdGhcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKHN0YXRlOiBNYXBTdGF0ZSwgbmV3TWFwU3RhdGU6IE1hcFN0YXRlKSB7XG4gIC8vIEdldCB0aGUgbmV3IHZpZXdwb3J0IGJvdW5kc1xuICBjb25zdCB2aWV3cG9ydEJvdW5kcyA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhcbiAgICBbbmV3TWFwU3RhdGUubG9uZ2l0dWRlLCBuZXdNYXBTdGF0ZS5sYXRpdHVkZV0sXG4gICAgbmV3TWFwU3RhdGUuem9vbSxcbiAgICBbbmV3TWFwU3RhdGUud2lkdGgsIG5ld01hcFN0YXRlLmhlaWdodF0sXG4gICAgTUFQQk9YX1RJTEVfU0laRVxuICApO1xuICAvLyBHZW5lcmF0ZSB0dXJmIFBvbHlnb24gZnJvbSBib3VuZHMgZm9yIGNvbXBhcmlzb25cbiAgY29uc3Qgdmlld3BvcnRCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24odmlld3BvcnRCb3VuZHMpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG5ld1N0YXRlTWF4Qm91bmRzOiBCb3VuZHMgPSBuZXdNYXBTdGF0ZS5tYXhCb3VuZHM7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbWF4Qm91bmRzUG9seWdvbiA9IGJib3hQb2x5Z29uKG5ld1N0YXRlTWF4Qm91bmRzKTtcblxuICAvLyBJZiBtYXhCb3VuZHMgaGFzIGNoYW5nZWQgcmVzZXQgdGhlIHZpZXdwb3J0IHRvIHNuYXAgdG8gYm91bmRzXG4gIGNvbnN0IGhhc01heEJvdW5kc0NoYW5nZWQgPVxuICAgICFzdGF0ZS5tYXhCb3VuZHMgfHwgIXN0YXRlLm1heEJvdW5kcy5ldmVyeSgodmFsLCBpZHgpID0+IHZhbCA9PT0gbmV3U3RhdGVNYXhCb3VuZHNbaWR4XSk7XG4gIGlmIChoYXNNYXhCb3VuZHNDaGFuZ2VkKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgICBpZiAoIWJvb2xlYW5XaXRoaW4odmlld3BvcnRCb3VuZHNQb2x5Z29uLCBtYXhCb3VuZHNQb2x5Z29uKSkge1xuICAgICAgY29uc3Qge2xhdGl0dWRlLCBsb25naXR1ZGUsIHpvb219ID0gZml0Qm91bmRzKHtcbiAgICAgICAgd2lkdGg6IG5ld01hcFN0YXRlLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IG5ld01hcFN0YXRlLndpZHRoLFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4Qm91bmRzJ1xuICBdKTtcbn1cblxuLyoqIFNlbGVjdCBpdGVtcyBmcm9tIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyBub3QgdW5kZWZpbmVkICovXG5jb25zdCBkZWZpbmVkUHJvcHMgPSBvYmogPT5cbiAgT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXG4gICAgKGFjY3UsIFtrLCB2XSkgPT4gKHsuLi5hY2N1LCAuLi4odiAhPT0gdW5kZWZpbmVkID8ge1trXTogdn0gOiB7fSl9KSxcbiAgICB7fVxuICApO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChvcmlnaW5hbFZpZXdwb3J0OiBWaWV3cG9ydCwgdmlld3BvcnRVcGRhdGVzOiBWaWV3cG9ydCk6IFZpZXdwb3J0IHtcbiAgbGV0IG5ld1ZpZXdwb3J0ID0ge1xuICAgIC4uLm9yaWdpbmFsVmlld3BvcnQsXG4gICAgLi4uKGRlZmluZWRQcm9wcyh2aWV3cG9ydFVwZGF0ZXMpIHx8IHt9KVxuICB9O1xuXG4gIC8vIE1ha2Ugc3VyZSB6b29tIGxldmVsIGRvZXNuJ3QgZ28gYmVsbG93IG1pblpvb20gaWYgZGVmaW5lZFxuICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1pblpvb207XG4gIH1cbiAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1heFpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSAmJiBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSkge1xuICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5tYXhab29tO1xuICB9XG4gIC8vIExpbWl0IHZpZXdwb3J0IHVwZGF0ZSBiYXNlZCBvbiBtYXhCb3VuZHNcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcyAmJiB2YWxpZGF0ZUJvdW5kcyhuZXdWaWV3cG9ydC5tYXhCb3VuZHMpKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICBuZXdWaWV3cG9ydCA9IHVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyhvcmlnaW5hbFZpZXdwb3J0LCBuZXdWaWV3cG9ydCk7XG4gIH1cblxuICByZXR1cm4gbmV3Vmlld3BvcnQ7XG59XG4iXX0=
package/dist/map-state.js CHANGED
@@ -1,23 +1,3 @@
1
- // Copyright (c) 2023 Uber Technologies, Inc.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- //
10
- // The above copyright notice and this permission notice shall be included in
11
- // all copies or substantial portions of the Software.
12
- //
13
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- // THE SOFTWARE.
20
-
21
1
  "use strict";
22
2
 
23
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -64,4 +44,4 @@ exports.mapStateReducerFactory = mapStateReducerFactory;
64
44
  var _default = mapStateReducerFactory();
65
45
 
66
46
  exports["default"] = _default;
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUudHMiXSwibmFtZXMiOlsiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsIm1hcFN0YXRlVXBkYXRlcnMiLCJ1cGRhdGVNYXBVcGRhdGVyIiwiRklUX0JPVU5EUyIsImZpdEJvdW5kc1VwZGF0ZXIiLCJUT0dHTEVfUEVSU1BFQ1RJVkUiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJSRUNFSVZFX01BUF9DT05GSUciLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIlJFU0VUX01BUF9DT05GSUciLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSIsImluaXRpYWxTdGF0ZSIsIklOSVRJQUxfTUFQX1NUQVRFIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSwwRUFDaEJDLHFCQUFZQyxVQURJLEVBQ1NDLGdCQUFnQixDQUFDQyxnQkFEMUIsb0RBRWhCSCxxQkFBWUksVUFGSSxFQUVTRixnQkFBZ0IsQ0FBQ0csZ0JBRjFCLG9EQUdoQkwscUJBQVlNLGtCQUhJLEVBR2lCSixnQkFBZ0IsQ0FBQ0ssd0JBSGxDLG9EQUloQlAscUJBQVlRLGtCQUpJLEVBSWlCTixnQkFBZ0IsQ0FBQ08sdUJBSmxDLG9EQUtoQlQscUJBQVlVLGdCQUxJLEVBS2VSLGdCQUFnQixDQUFDUyxxQkFMaEMsb0RBTWhCWCxxQkFBWVksZ0JBTkksRUFNZVYsZ0JBQWdCLENBQUNXLHFCQU5oQyxvREFPaEJiLHFCQUFZYyx5QkFQSSxFQU93QlosZ0JBQWdCLENBQUNhLDZCQVB6QyxrQkFBbkI7QUFVQTs7QUFDTyxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXlCO0FBQUEsTUFBQ0MsWUFBRCx1RUFBZ0IsRUFBaEI7QUFBQSxTQUNwQztBQUNBLHFDQUFjbEIsYUFBZCxnREFDS0csZ0JBQWdCLENBQUNnQixpQkFEdEIsR0FFS0QsWUFGTDtBQUdFQSxNQUFBQSxZQUFZLEVBQVpBO0FBSEY7QUFGb0M7QUFBQSxDQUEvQjs7OztlQVFRRCxzQkFBc0IsRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7aGFuZGxlQWN0aW9uc30gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5pbXBvcnQge0FjdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgbWFwU3RhdGVVcGRhdGVycyBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5cbi8qKlxuICogSW1wb3J0YW50OiBEbyBub3QgcmVuYW1lIGBhY3Rpb25IYW5kbGVyYCBvciB0aGUgYXNzaWdubWVudCBwYXR0ZXJuIG9mIHByb3BlcnR5IHZhbHVlLlxuICogSXQgaXMgdXNlZCB0byBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uXG4gKi9cbmNvbnN0IGFjdGlvbkhhbmRsZXIgPSB7XG4gIFtBY3Rpb25UeXBlcy5VUERBVEVfTUFQXTogbWFwU3RhdGVVcGRhdGVycy51cGRhdGVNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuRklUX0JPVU5EU106IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlRPR0dMRV9QRVJTUEVDVElWRV06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHXTogbWFwU3RhdGVVcGRhdGVycy5yZWNlaXZlTWFwQ29uZmlnVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlJFU0VUX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlc2V0TWFwQ29uZmlnVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlRPR0dMRV9TUExJVF9NQVBdOiBtYXBTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLlRPR0dMRV9TUExJVF9NQVBfVklFV1BPUlRdOiBtYXBTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyXG59O1xuXG4vKiBSZWR1Y2VyICovXG5leHBvcnQgY29uc3QgbWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSA9IChpbml0aWFsU3RhdGUgPSB7fSkgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBoYW5kbGVBY3Rpb25zKGFjdGlvbkhhbmRsZXIsIHtcbiAgICAuLi5tYXBTdGF0ZVVwZGF0ZXJzLklOSVRJQUxfTUFQX1NUQVRFLFxuICAgIC4uLmluaXRpYWxTdGF0ZSxcbiAgICBpbml0aWFsU3RhdGVcbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IG1hcFN0YXRlUmVkdWNlckZhY3RvcnkoKTtcbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXAtc3RhdGUudHMiXSwibmFtZXMiOlsiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsIm1hcFN0YXRlVXBkYXRlcnMiLCJ1cGRhdGVNYXBVcGRhdGVyIiwiRklUX0JPVU5EUyIsImZpdEJvdW5kc1VwZGF0ZXIiLCJUT0dHTEVfUEVSU1BFQ1RJVkUiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJSRUNFSVZFX01BUF9DT05GSUciLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIlJFU0VUX01BUF9DT05GSUciLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSIsImluaXRpYWxTdGF0ZSIsIklOSVRJQUxfTUFQX1NUQVRFIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQSxhQUFhLDBFQUNoQkMscUJBQVlDLFVBREksRUFDU0MsZ0JBQWdCLENBQUNDLGdCQUQxQixvREFFaEJILHFCQUFZSSxVQUZJLEVBRVNGLGdCQUFnQixDQUFDRyxnQkFGMUIsb0RBR2hCTCxxQkFBWU0sa0JBSEksRUFHaUJKLGdCQUFnQixDQUFDSyx3QkFIbEMsb0RBSWhCUCxxQkFBWVEsa0JBSkksRUFJaUJOLGdCQUFnQixDQUFDTyx1QkFKbEMsb0RBS2hCVCxxQkFBWVUsZ0JBTEksRUFLZVIsZ0JBQWdCLENBQUNTLHFCQUxoQyxvREFNaEJYLHFCQUFZWSxnQkFOSSxFQU1lVixnQkFBZ0IsQ0FBQ1cscUJBTmhDLG9EQU9oQmIscUJBQVljLHlCQVBJLEVBT3dCWixnQkFBZ0IsQ0FBQ2EsNkJBUHpDLGtCQUFuQjtBQVVBOztBQUNPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBeUI7QUFBQSxNQUFDQyxZQUFELHVFQUFnQixFQUFoQjtBQUFBLFNBQ3BDO0FBQ0EscUNBQWNsQixhQUFkLGdEQUNLRyxnQkFBZ0IsQ0FBQ2dCLGlCQUR0QixHQUVLRCxZQUZMO0FBR0VBLE1BQUFBLFlBQVksRUFBWkE7QUFIRjtBQUZvQztBQUFBLENBQS9COzs7O2VBUVFELHNCQUFzQixFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBtYXBTdGF0ZVVwZGF0ZXJzIGZyb20gJy4vbWFwLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLlVQREFURV9NQVBdOiBtYXBTdGF0ZVVwZGF0ZXJzLnVwZGF0ZU1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5GSVRfQk9VTkRTXTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVzZXRNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXJcbn07XG5cbi8qIFJlZHVjZXIgKi9cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLm1hcFN0YXRlVXBkYXRlcnMuSU5JVElBTF9NQVBfU1RBVEUsXG4gICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgbWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSgpO1xuIl19