kepler.gl 3.2.2 → 3.2.3

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.
Files changed (59) hide show
  1. package/dist/src/processors/src/file-handler.d.ts +2 -7
  2. package/dist/src/utils/src/arrow-data-container.d.ts +38 -1
  3. package/dist/src/utils/src/data-container-interface.d.ts +3 -2
  4. package/dist/src/utils/src/index.d.ts +1 -1
  5. package/package.json +2 -2
  6. package/src/actions/package.json +8 -8
  7. package/src/ai-assistant/package.json +7 -7
  8. package/src/cloud-providers/package.json +2 -2
  9. package/src/common-utils/package.json +3 -3
  10. package/src/components/package.json +16 -16
  11. package/src/constants/dist/default-settings.js +1 -1
  12. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/da/54/b803dd69cea23939320d2d3aa0502638ac264cea8968854e5ccc4a71ddfbb0d6ce41a875ec1be176eb7d99815b3d6464bf60d0274b1175d7fcb131846d7d +1 -0
  13. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/9c/6d/1f90c56b793c944c2a9a393e837a46aef02e3b867e2bf28fcb0929c4ac5e +2 -0
  14. package/src/constants/package.json +2 -2
  15. package/src/constants/umd/keplergl.min.js +1 -1
  16. package/src/deckgl-arrow-layers/dist/utils/utils.js +5 -4
  17. package/src/deckgl-arrow-layers/dist/utils/validate.js +3 -2
  18. package/src/deckgl-arrow-layers/package.json +3 -2
  19. package/src/deckgl-arrow-layers/src/utils/utils.ts +4 -3
  20. package/src/deckgl-arrow-layers/src/utils/validate.ts +2 -1
  21. package/src/deckgl-layers/package.json +4 -4
  22. package/src/duckdb/dist/table/duckdb-table.js +3 -3
  23. package/src/duckdb/package.json +7 -6
  24. package/src/duckdb/src/table/duckdb-table.ts +11 -6
  25. package/src/effects/package.json +5 -5
  26. package/src/layers/dist/base-layer.js +2 -6
  27. package/src/layers/dist/layer-text-label.js +3 -3
  28. package/src/layers/package.json +9 -9
  29. package/src/layers/src/base-layer.ts +3 -2
  30. package/src/layers/src/layer-text-label.ts +3 -3
  31. package/src/localization/package.json +1 -1
  32. package/src/processors/dist/file-handler.d.ts +2 -7
  33. package/src/processors/dist/file-handler.js +8 -16
  34. package/src/processors/package.json +7 -7
  35. package/src/processors/src/file-handler.ts +3 -10
  36. package/src/reducers/package.json +16 -16
  37. package/src/schemas/package.json +7 -7
  38. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/fd/ef/551b4725615a0e609688e4b55cf4f617fab2a80dcb5e9efb288d77e62f25cd67f3525e372e109c35ef3b3508da4eb974cdf1a784ee3ff610942b93415cc7 +1 -0
  39. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/aa/b2/36c45c478923af2d1fd8b06c81f5aa622e67be3239349c2219ac4652d959 +2 -0
  40. package/src/styles/package.json +2 -2
  41. package/src/styles/umd/keplergl.min.js +1 -1
  42. package/src/table/dist/kepler-table.js +3 -3
  43. package/src/table/package.json +5 -5
  44. package/src/table/src/kepler-table.ts +1 -1
  45. package/src/tasks/package.json +2 -2
  46. package/src/types/package.json +1 -1
  47. package/src/utils/dist/arrow-data-container.d.ts +38 -1
  48. package/src/utils/dist/arrow-data-container.js +78 -11
  49. package/src/utils/dist/data-container-interface.d.ts +3 -2
  50. package/src/utils/dist/data-container-interface.js +1 -1
  51. package/src/utils/dist/data-utils.js +3 -6
  52. package/src/utils/dist/index.d.ts +1 -1
  53. package/src/utils/dist/index.js +29 -1
  54. package/src/utils/package.json +4 -4
  55. package/src/utils/src/arrow-data-container.ts +101 -13
  56. package/src/utils/src/data-container-interface.ts +3 -2
  57. package/src/utils/src/data-utils.ts +2 -2
  58. package/src/utils/src/index.ts +5 -1
  59. package/umd/keplergl.min.js +1370 -1370
@@ -21,6 +21,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
21
21
  var _typed = require("@deck.gl/core/typed");
22
22
  var arrow = _interopRequireWildcard(require("apache-arrow"));
23
23
  var ga = _interopRequireWildcard(require("@geoarrow/geoarrow-js"));
24
+ var _utils = require("@kepler.gl/utils");
24
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
26
27
  // SPDX-License-Identifier: MIT
@@ -45,11 +46,11 @@ function isColumnReference(input) {
45
46
  }
46
47
  function isDataInterleavedCoords(data) {
47
48
  // TODO: also check 2 or 3d? Float64?
48
- return data.type instanceof arrow.FixedSizeList;
49
+ return (0, _utils.isArrowFixedSizeList)(data.type);
49
50
  }
50
51
  function isDataSeparatedCoords(data) {
51
52
  // TODO: also check child names? Float64?
52
- return data.type instanceof arrow.Struct;
53
+ return (0, _utils.isArrowStruct)(data.type);
53
54
  }
54
55
 
55
56
  /**
@@ -138,7 +139,7 @@ function assignAccessor(args) {
138
139
  if (propInput === undefined) {
139
140
  return;
140
141
  }
141
- if (propInput instanceof arrow.Vector) {
142
+ if ((0, _utils.isArrowVector)(propInput)) {
142
143
  var columnData = propInput.data[chunkIdx];
143
144
  if (arrow.DataType.isFixedSizeList(columnData)) {
144
145
  (0, _typed.assert)(columnData.children.length === 1);
@@ -306,4 +307,4 @@ function extractAccessorsFromProps(props, excludeKeys) {
306
307
  }
307
308
  return [accessors, otherProps];
308
309
  }
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImdhIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgiLCJzY2hlbWEiLCJleHRlbnNpb25OYW1lIiwiZ2VvbWV0cnlDb2x1bW5OYW1lIiwiaW5kZXgiLCJmaWVsZHMiLCJmaW5kSW5kZXgiLCJmaWVsZCIsIm5hbWUiLCJtZXRhZGF0YSIsImlzQ29sdW1uUmVmZXJlbmNlIiwiaW5wdXQiLCJpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyIsImRhdGEiLCJ0eXBlIiwiRml4ZWRTaXplTGlzdCIsImlzRGF0YVNlcGFyYXRlZENvb3JkcyIsIlN0cnVjdCIsImNvbnZlcnRTdHJ1Y3RUb0ZpeGVkU2l6ZUxpc3QiLCJjb29yZHMiLCJpbnRlcmxlYXZlZENvb3JkcyIsIkZsb2F0NjRBcnJheSIsImxlbmd0aCIsIl9jb29yZHMkY2hpbGRyZW4iLCJfc2xpY2VkVG9BcnJheTIiLCJjaGlsZHJlbiIsInhDaGlsZCIsInlDaGlsZCIsInZhbHVlcyIsImNoaWxkRGF0YVR5cGUiLCJGbG9hdDY0IiwiZGF0YVR5cGUiLCJGaWVsZCIsImludGVybGVhdmVkQ29vcmRzRGF0YSIsIm1ha2VEYXRhIiwibnVsbENvdW50IiwibnVsbEJpdG1hcCIsImNoaWxkIiwiYXNzZXJ0Iiwid3JhcEFjY2Vzc29yRnVuY3Rpb24iLCJvYmplY3RJbmZvIiwidXNlckFjY2Vzc29yRnVuY3Rpb24iLCJiYXRjaE9mZnNldCIsIm5ld0luZGV4IiwiaW52ZXJ0ZWRHZW9tT2Zmc2V0cyIsInVuZGVmaW5lZCIsIm5ld09iamVjdERhdGEiLCJhdHRyaWJ1dGVzIiwibmV3T2JqZWN0SW5mbyIsInRhcmdldCIsImFzc2lnbkFjY2Vzc29yIiwiYXJncyIsInByb3BzIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJjaHVua0lkeCIsImdlb21Db29yZE9mZnNldHMiLCJfYXJncyRiYXRjaE9mZnNldCIsIlZlY3RvciIsImNvbHVtbkRhdGEiLCJEYXRhVHlwZSIsImlzRml4ZWRTaXplTGlzdCIsImV4cGFuZEFycmF5VG9Db29yZHMiLCJsaXN0U2l6ZSIsInZhbHVlIiwic2l6ZSIsIm5vcm1hbGl6ZWQiLCJpc0Zsb2F0Iiwib2JqZWN0IiwiZ2VvbU9mZnNldHMiLCJudW1Qb3NpdGlvbnMiLCJsYXN0SW5kZXgiLCJudW1Db29yZHMiLCJvdXRwdXRBcnJheSIsImNvbnN0cnVjdG9yIiwiZ2VvbUlkeCIsImxhc3RDb29yZElkeCIsIm5leHRDb29yZElkeCIsImNvb3JkSWR4IiwiZ2V0R2VvbWV0cnlWZWN0b3IiLCJ0YWJsZSIsImdlb2Fycm93VHlwZU5hbWUiLCJnZW9tZXRyeUNvbHVtbklkeCIsImdldENoaWxkQXQiLCJnZXRMaXN0TmVzdGluZ0xldmVscyIsIm5lc3RpbmdMZXZlbHMiLCJpc0xpc3QiLCJnZXRNdWx0aUxpbmVTdHJpbmdSZXNvbHZlZE9mZnNldHMiLCJ2YWx1ZU9mZnNldHMiLCJsaW5lU3RyaW5nRGF0YSIsImdldE11bHRpTGluZVN0cmluZ0NoaWxkIiwicmluZ09mZnNldHMiLCJyZXNvbHZlZFJpbmdPZmZzZXRzIiwiSW50MzJBcnJheSIsImdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMiLCJyaW5nRGF0YSIsImdldFBvbHlnb25DaGlsZCIsImdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyIsInBvbHlnb25EYXRhIiwiZ2V0TXVsdGlQb2x5Z29uQ2hpbGQiLCJwb2x5Z29uT2Zmc2V0cyIsImludmVydE9mZnNldHMiLCJvZmZzZXRzIiwibGFyZ2VzdE9mZnNldCIsImFycmF5Q29uc3RydWN0b3IiLCJNYXRoIiwicG93IiwiVWludDhBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJpbnZlcnRlZE9mZnNldHMiLCJhcnJheUlkeCIsInRoaXNPZmZzZXQiLCJuZXh0T2Zmc2V0Iiwib2Zmc2V0IiwiZXh0cmFjdEFjY2Vzc29yc0Zyb21Qcm9wcyIsImV4Y2x1ZGVLZXlzIiwiYWNjZXNzb3JzIiwib3RoZXJQcm9wcyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsImtleSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG4vLyBkZWNrLmdsLWNvbW11bml0eVxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IChjKSB2aXMuZ2wgY29udHJpYnV0b3JzXG5cbmltcG9ydCB7YXNzZXJ0fSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5pbXBvcnQgKiBhcyBnYSBmcm9tICdAZ2VvYXJyb3cvZ2VvYXJyb3ctanMnO1xuaW1wb3J0IHtBY2Nlc3NvckNvbnRleHQsIEFjY2Vzc29yRnVuY3Rpb24sIF9JbnRlcm5hbEFjY2Vzc29yQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cbiAgfCBVaW50OEFycmF5XG4gIHwgVWludDhDbGFtcGVkQXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBGbG9hdDMyQXJyYXlcbiAgfCBGbG9hdDY0QXJyYXk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kR2VvbWV0cnlDb2x1bW5JbmRleChcbiAgc2NoZW1hOiBhcnJvdy5TY2hlbWEsXG4gIGV4dGVuc2lvbk5hbWU6IHN0cmluZyxcbiAgZ2VvbWV0cnlDb2x1bW5OYW1lPzogc3RyaW5nIHwgbnVsbFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gc2NoZW1hLmZpZWxkcy5maW5kSW5kZXgoXG4gICAgZmllbGQgPT5cbiAgICAgIGZpZWxkLm5hbWUgPT09IGdlb21ldHJ5Q29sdW1uTmFtZSB8fFxuICAgICAgZmllbGQubWV0YWRhdGEuZ2V0KCdBUlJPVzpleHRlbnNpb246bmFtZScpID09PSBleHRlbnNpb25OYW1lXG4gICk7XG4gIHJldHVybiBpbmRleCAhPT0gLTEgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGlucHV0IGlzIGEgcmVmZXJlbmNlIHRvIGEgY29sdW1uIGluIHRoZSB0YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2x1bW5SZWZlcmVuY2UoaW5wdXQ6IGFueSk6IGlucHV0IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyhcbiAgZGF0YTogYXJyb3cuRGF0YVxuKTogZGF0YSBpcyBhcnJvdy5EYXRhPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuRmxvYXQ2ND4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayAyIG9yIDNkPyBGbG9hdDY0P1xuICByZXR1cm4gZGF0YS50eXBlIGluc3RhbmNlb2YgYXJyb3cuRml4ZWRTaXplTGlzdDtcbn1cblxuZnVuY3Rpb24gaXNEYXRhU2VwYXJhdGVkQ29vcmRzKFxuICBkYXRhOiBhcnJvdy5EYXRhXG4pOiBkYXRhIGlzIGFycm93LkRhdGE8YXJyb3cuU3RydWN0PHt4OiBhcnJvdy5GbG9hdDY0OyB5OiBhcnJvdy5GbG9hdDY0fT4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayBjaGlsZCBuYW1lcz8gRmxvYXQ2ND9cbiAgcmV0dXJuIGRhdGEudHlwZSBpbnN0YW5jZW9mIGFycm93LlN0cnVjdDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdlb2Fycm93IFN0cnVjdCBjb29yZGluYXRlcyB0byBGaXhlZFNpemVMaXN0IGNvb3Jkc1xuICpcbiAqIFRoZSBHZW9BcnJvdyBzcGVjIGFsbG93cyBmb3IgZWl0aGVyIHNlcGFyYXRlZCBvciBpbnRlcmxlYXZlZCBjb29yZHMsIGJ1dCBhdFxuICogdGhpcyB0aW1lIGRlY2suZ2wgb25seSBzdXBwb3J0cyBpbnRlcmxlYXZlZC5cbiAqL1xuLy8gVE9ETzogdGhpcyBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN0cnVjdFRvRml4ZWRTaXplTGlzdChcbiAgY29vcmRzOlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5GaXhlZFNpemVMaXN0PGFycm93LkZsb2F0NjQ+PlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5TdHJ1Y3Q8e3g6IGFycm93LkZsb2F0NjQ7IHk6IGFycm93LkZsb2F0NjR9Pj5cbik6IGFycm93LkRhdGE8YXJyb3cuRml4ZWRTaXplTGlzdDxhcnJvdy5GbG9hdDY0Pj4ge1xuICBpZiAoaXNEYXRhSW50ZXJsZWF2ZWRDb29yZHMoY29vcmRzKSkge1xuICAgIHJldHVybiBjb29yZHM7XG4gIH0gZWxzZSBpZiAoaXNEYXRhU2VwYXJhdGVkQ29vcmRzKGNvb3JkcykpIHtcbiAgICAvLyBUT0RPOiBzdXBwb3J0IDNkXG4gICAgY29uc3QgaW50ZXJsZWF2ZWRDb29yZHMgPSBuZXcgRmxvYXQ2NEFycmF5KGNvb3Jkcy5sZW5ndGggKiAyKTtcbiAgICBjb25zdCBbeENoaWxkLCB5Q2hpbGRdID0gY29vcmRzLmNoaWxkcmVuO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnRlcmxlYXZlZENvb3Jkc1tpICogMl0gPSB4Q2hpbGQudmFsdWVzW2ldO1xuICAgICAgaW50ZXJsZWF2ZWRDb29yZHNbaSAqIDIgKyAxXSA9IHlDaGlsZC52YWx1ZXNbaV07XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGREYXRhVHlwZSA9IG5ldyBhcnJvdy5GbG9hdDY0KCk7XG4gICAgY29uc3QgZGF0YVR5cGUgPSBuZXcgYXJyb3cuRml4ZWRTaXplTGlzdCgyLCBuZXcgYXJyb3cuRmllbGQoJ2Nvb3JkcycsIGNoaWxkRGF0YVR5cGUpKTtcblxuICAgIGNvbnN0IGludGVybGVhdmVkQ29vcmRzRGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGNoaWxkRGF0YVR5cGUsXG4gICAgICBsZW5ndGg6IGludGVybGVhdmVkQ29vcmRzLmxlbmd0aFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGRhdGFUeXBlLFxuICAgICAgbGVuZ3RoOiBjb29yZHMubGVuZ3RoLFxuICAgICAgbnVsbENvdW50OiBjb29yZHMubnVsbENvdW50LFxuICAgICAgbnVsbEJpdG1hcDogY29vcmRzLm51bGxCaXRtYXAsXG4gICAgICBjaGlsZDogaW50ZXJsZWF2ZWRDb29yZHNEYXRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3NlcnQoZmFsc2UpO1xufVxuXG50eXBlIEFzc2lnbkFjY2Vzc29yUHJvcHMgPSB7XG4gIC8qKiBUaGUgb2JqZWN0IG9uIHdoaWNoIHRvIGFzc2lnbiB0aGUgcmVzb2x2ZWQgYWNjZXNvciAqL1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIHRvIHNldCAqL1xuICBwcm9wTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHVzZXItc3VwcGxpZWQgaW5wdXQgdG8gdGhlIGxheWVyLiBNdXN0IGVpdGhlciBiZSBhIHNjYWxhciB2YWx1ZSBvciBhIHJlZmVyZW5jZSB0byBhIGNvbHVtbiBpbiB0aGUgdGFibGUuICovXG4gIHByb3BJbnB1dDogYW55O1xuICAvKiogTnVtZXJpYyBpbmRleCBpbiB0aGUgdGFibGUgKi9cbiAgY2h1bmtJZHg6IG51bWJlcjtcbiAgLyoqIGEgbWFwIGZyb20gdGhlIGdlb21ldHJ5IGluZGV4IHRvIHRoZSBjb29yZCBvZmZzZXRzIGZvciB0aGF0IGdlb21ldHJ5LiAqL1xuICBnZW9tQ29vcmRPZmZzZXRzPzogSW50MzJBcnJheSB8IG51bGw7XG4gIC8qKiBBYnNvbHV0ZSBvZmZzZXQgb2YgdGhlIGJhdGNoIGluIHRoZSB0YWJsZS92ZWN0b3IuIEFkZGVkIHRvIHRoZSBzYW1wbGluZyBpbmRleC4gKi9cbiAgYmF0Y2hPZmZzZXQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYSB1c2VyLXByb3ZpZGVkIGFjY2Vzc29yIGZ1bmN0aW9uXG4gKlxuICogRm9yIGxheWVycyBsaWtlIFNjYXR0ZXJwbG90LCBQYXRoLCBhbmQgUG9seWdvbiwgd2UgYXV0b21hdGljYWxseSBoYW5kbGVcbiAqIFwiZXhwbG9kaW5nXCIgdGhlIHRhYmxlIHdoZW4gbXVsdGktZ2VvbWV0cnkgaW5wdXQgYXJlIHByb3ZpZGVkLiBUaGlzIG1lYW5zIHRoYXRcbiAqIHRoZSB1cHN0cmVhbSBgaW5kZXhgIHZhbHVlIHBhc3NlZCB0byB0aGUgdXNlciB3aWxsIGJlIHRoZSBjb3JyZWN0IHJvdyBpbmRleFxuICogX29ubHlfIGZvciBub24tZXhwbG9kZWQgZGF0YS5cbiAqXG4gKiBXaXRoIHRoaXMgZnVuY3Rpb24sIHdlIHNpbXBsaWZ5IHRoZSB1c2VyIHVzYWdlIGJ5IGF1dG9tYXRpY2FsbHkgY29udmVydGluZ1xuICogYmFjayBmcm9tIFwiZXhwbG9kZWRcIiBpbmRleCBiYWNrIHRvIHRoZSBvcmlnaW5hbCByb3cgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIHdyYXBBY2Nlc3NvckZ1bmN0aW9uPEluLCBPdXQ+KFxuICBvYmplY3RJbmZvOiBfSW50ZXJuYWxBY2Nlc3NvckNvbnRleHQ8SW4+LFxuICB1c2VyQWNjZXNzb3JGdW5jdGlvbjogQWNjZXNzb3JGdW5jdGlvbjxJbiwgT3V0PixcbiAgYmF0Y2hPZmZzZXQ6IG51bWJlclxuKTogT3V0IHtcbiAgY29uc3Qge2luZGV4LCBkYXRhfSA9IG9iamVjdEluZm87XG4gIGxldCBuZXdJbmRleCA9IGluZGV4ICsgYmF0Y2hPZmZzZXQ7XG4gIGlmIChkYXRhLmludmVydGVkR2VvbU9mZnNldHMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5ld0luZGV4ID0gZGF0YS5pbnZlcnRlZEdlb21PZmZzZXRzW2luZGV4XTtcbiAgfVxuICBjb25zdCBuZXdPYmplY3REYXRhID0ge1xuICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxuICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICB9O1xuICBjb25zdCBuZXdPYmplY3RJbmZvID0ge1xuICAgIGluZGV4OiBuZXdJbmRleCxcbiAgICBkYXRhOiBuZXdPYmplY3REYXRhLFxuICAgIHRhcmdldDogb2JqZWN0SW5mby50YXJnZXRcbiAgfTtcbiAgcmV0dXJuIHVzZXJBY2Nlc3NvckZ1bmN0aW9uKG5ld09iamVjdEluZm8pO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYWNjZXNzb3IgYW5kIGFzc2lnbiB0byBwcm9wcyBvYmplY3RcbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBhcyBhIGhlbHBlciBmdW5jdGlvbiBiZWNhdXNlIGEgc2NhbGFyIHByb3AgaXMgc2V0IGF0IHRoZSB0b3BcbiAqIGxldmVsIHdoaWxlIGEgdmVjdG9yaXplZCBwcm9wIGlzIHNldCBpbnNpZGUgZGF0YS5hdHRyaWJ1dGVzXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduQWNjZXNzb3IoYXJnczogQXNzaWduQWNjZXNzb3JQcm9wcykge1xuICBjb25zdCB7cHJvcHMsIHByb3BOYW1lLCBwcm9wSW5wdXQsIGNodW5rSWR4LCBnZW9tQ29vcmRPZmZzZXRzLCBiYXRjaE9mZnNldCA9IDB9ID0gYXJncztcblxuICBpZiAocHJvcElucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvcElucHV0IGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgY29uc3QgY29sdW1uRGF0YSA9IHByb3BJbnB1dC5kYXRhW2NodW5rSWR4XTtcblxuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3QoY29sdW1uRGF0YSkpIHtcbiAgICAgIGFzc2VydChjb2x1bW5EYXRhLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS5jaGlsZHJlblswXS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsIGdlb21Db29yZE9mZnNldHMpO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5kYXRhLmF0dHJpYnV0ZXNbcHJvcE5hbWVdID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVzLFxuICAgICAgICBzaXplOiBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsXG4gICAgICAgIC8vIFNldCB0byBgdHJ1ZWAgdG8gc2lnbmlmeSB0aGF0IGNvbG9ycyBhcmUgYWxyZWFkeSAwLTI1NSwgYW5kIGRlY2svbHVtYVxuICAgICAgICAvLyBkb2VzIG5vdCBuZWVkIHRvIHJlc2NhbGVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi80MDFkNjI0YzA1MjlmYWFhNjIxMjU3MTRjMzc2YjNiYTNiOGYzNzlmL2RvY3MvYXBpLXJlZmVyZW5jZS9jb3JlL2F0dHJpYnV0ZS1tYW5hZ2VyLm1kP3BsYWluPTEjTDY2XG4gICAgICAgIG5vcm1hbGl6ZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0Zsb2F0KGNvbHVtbkRhdGEpKSB7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCAxLCBnZW9tQ29vcmRPZmZzZXRzKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMuZGF0YS5hdHRyaWJ1dGVzW3Byb3BOYW1lXSA9IHtcbiAgICAgICAgdmFsdWU6IHZhbHVlcyxcbiAgICAgICAgc2l6ZTogMVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3BJbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IDxJbj4ob2JqZWN0OiBhbnksIG9iamVjdEluZm86IEFjY2Vzc29yQ29udGV4dDxJbj4pID0+IHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocHJvcE5hbWUgPT09ICdnZXRQb2x5Z29uT2Zmc2V0Jykge1xuICAgICAgICByZXR1cm4gcHJvcElucHV0KG9iamVjdCwgb2JqZWN0SW5mbyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3cmFwQWNjZXNzb3JGdW5jdGlvbihvYmplY3RJbmZvLCBwcm9wSW5wdXQsIGJhdGNoT2Zmc2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IHByb3BJbnB1dDtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGFuZCBhbiBhcnJheSBmcm9tIFwib25lIGVsZW1lbnQgcGVyIGdlb21ldHJ5XCIgdG8gXCJvbmUgZWxlbWVudCBwZXIgY29vcmRpbmF0ZVwiXG4gKlxuICogQHBhcmFtIGlucHV0OiB0aGUgaW5wdXQgYXJyYXkgdG8gZXhwYW5kXG4gKiBAcGFyYW0gc2l6ZSA6IHRoZSBudW1iZXIgb2YgbmVzdGVkIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheSBwZXIgZ2VvbWV0cnkuIFNvIGZvciBleGFtcGxlLCBmb3IgUkdCIGRhdGEgdGhpcyB3b3VsZCBiZSAzLCBmb3IgUkdCQSB0aGlzIHdvdWxkIGJlIDQuIEZvciByYWRpdXMsIHRoaXMgd291bGQgYmUgMS5cbiAqIEBwYXJhbSBnZW9tT2Zmc2V0cyA6IGFuIG9mZnNldHMgYXJyYXkgbWFwcGluZyBmcm9tIHRoZSBnZW9tZXRyeSB0byB0aGUgY29vcmRpbmF0ZSBpbmRleGVzLiBTbyBpbiB0aGUgY2FzZSBvZiBhIExpbmVTdHJpbmdBcnJheSwgdGhpcyBpcyByZXRyaWV2ZWQgZGlyZWN0bHkgZnJvbSB0aGUgR2VvQXJyb3cgc3RvcmFnZS4gSW4gdGhlIGNhc2Ugb2YgYSBQb2x5Z29uQXJyYXksIHRoaXMgY29tZXMgZnJvbSB0aGUgcmVzb2x2ZWQgaW5kZXhlcyB0aGF0IG5lZWQgdG8gYmUgZ2l2ZW4gdG8gdGhlIFNvbGlkUG9seWdvbkxheWVyIGFueXdheXMuXG4gKiBAcGFyYW0gbnVtUG9zaXRpb25zIDogZW5kIHBvc2l0aW9uIGluIGdlb21PZmZzZXRzLCBhcyBnZW9tT2Zmc2V0cyBjYW4gcG90ZW50aWFsbHkgY29udGFpbiBwcmVhbGxvY2F0ZWQgemVyb2VzIGluIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci5cbiAqXG4gKiBAcmV0dXJuICB7VHlwZWRBcnJheX0gdmFsdWVzIGV4cGFuZGVkIHRvIGJlIHBlci1jb29yZGluYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRBcnJheVRvQ29vcmRzPFQgZXh0ZW5kcyBUeXBlZEFycmF5PihcbiAgaW5wdXQ6IFQsXG4gIHNpemU6IG51bWJlcixcbiAgZ2VvbU9mZnNldHM6IEludDMyQXJyYXksXG4gIG51bVBvc2l0aW9ucz86IG51bWJlclxuKTogVCB7XG4gIGNvbnN0IGxhc3RJbmRleCA9IG51bVBvc2l0aW9ucyB8fCBnZW9tT2Zmc2V0cy5sZW5ndGggLSAxO1xuICBjb25zdCBudW1Db29yZHMgPSBnZW9tT2Zmc2V0c1tsYXN0SW5kZXhdO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IG91dHB1dEFycmF5OiBUID0gbmV3IGlucHV0LmNvbnN0cnVjdG9yKG51bUNvb3JkcyAqIHNpemUpO1xuXG4gIC8vIGdlb21JZHggaXMgYW4gaW5kZXggaW50byB0aGUgZ2VvbU9mZnNldHMgYXJyYXlcbiAgLy8gZ2VvbUlkeCBpcyBhbHNvIHRoZSBnZW9tZXRyeS90YWJsZSBpbmRleFxuICBmb3IgKGxldCBnZW9tSWR4ID0gMDsgZ2VvbUlkeCA8IGxhc3RJbmRleDsgZ2VvbUlkeCsrKSB7XG4gICAgLy8gZ2VvbU9mZnNldHMgbWFwcyBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCB0byB0aGUgY29vcmQgaW5kZXhcbiAgICAvLyBTbyBoZXJlIHdlIGdldCB0aGUgcmFuZ2Ugb2YgY29vcmRzIHRoYXQgdGhpcyBnZW9tZXRyeSBjb3ZlcnNcbiAgICBjb25zdCBsYXN0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4XTtcbiAgICBjb25zdCBuZXh0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4ICsgMV07XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhpcyByYW5nZSBvZiBjb29yZCBpbmRpY2VzXG4gICAgZm9yIChsZXQgY29vcmRJZHggPSBsYXN0Q29vcmRJZHg7IGNvb3JkSWR4IDwgbmV4dENvb3JkSWR4OyBjb29yZElkeCsrKSB7XG4gICAgICAvLyBJdGVyYXRlIG92ZXIgc2l6ZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgLy8gQ29weSBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCBpbiBgaW5wdXRgIHRvIHRoZSBjb29yZCBpbmRleCBpblxuICAgICAgICAvLyBgb3V0cHV0YFxuICAgICAgICBvdXRwdXRBcnJheVtjb29yZElkeCAqIHNpemUgKyBpXSA9IGlucHV0W2dlb21JZHggKiBzaXplICsgaV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dEFycmF5O1xufVxuXG4vKipcbiAqIEdldCBhIGdlb21ldHJ5IHZlY3RvciB3aXRoIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uIHR5cGUgbmFtZSBmcm9tIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb21ldHJ5VmVjdG9yKFxuICB0YWJsZTogYXJyb3cuVGFibGUsXG4gIGdlb2Fycm93VHlwZU5hbWU6IHN0cmluZ1xuKTogYXJyb3cuVmVjdG9yIHwgbnVsbCB7XG4gIGNvbnN0IGdlb21ldHJ5Q29sdW1uSWR4ID0gZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgodGFibGUuc2NoZW1hLCBnZW9hcnJvd1R5cGVOYW1lKTtcblxuICBpZiAoZ2VvbWV0cnlDb2x1bW5JZHggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbHVtbiBmb3VuZCB3aXRoIGV4dGVuc2lvbiB0eXBlICR7Z2VvYXJyb3dUeXBlTmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZS5nZXRDaGlsZEF0KGdlb21ldHJ5Q29sdW1uSWR4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3ROZXN0aW5nTGV2ZWxzKGRhdGE6IGFycm93LkRhdGEpOiBudW1iZXIge1xuICBsZXQgbmVzdGluZ0xldmVscyA9IDA7XG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0xpc3QoZGF0YS50eXBlKSkge1xuICAgIG5lc3RpbmdMZXZlbHMgKz0gMTtcbiAgICBkYXRhID0gZGF0YS5jaGlsZHJlblswXTtcbiAgfVxuICByZXR1cm4gbmVzdGluZ0xldmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpTGluZVN0cmluZ1Jlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpTGluZVN0cmluZ0RhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgZ2VvbU9mZnNldHMgPSBkYXRhLnZhbHVlT2Zmc2V0cztcbiAgY29uc3QgbGluZVN0cmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aUxpbmVTdHJpbmdDaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSBsaW5lU3RyaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMoZGF0YTogZ2EuZGF0YS5Qb2x5Z29uRGF0YSk6IEludDMyQXJyYXkge1xuICBjb25zdCBnZW9tT2Zmc2V0cyA9IGRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nRGF0YSA9IGdhLmNoaWxkLmdldFBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSByaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpUG9seWdvbkRhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgcG9seWdvbkRhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aVBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRQb2x5Z29uQ2hpbGQocG9seWdvbkRhdGEpO1xuXG4gIGNvbnN0IGdlb21PZmZzZXRzID0gZGF0YS52YWx1ZU9mZnNldHM7XG4gIGNvbnN0IHBvbHlnb25PZmZzZXRzID0gcG9seWdvbkRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nT2Zmc2V0cyA9IHJpbmdEYXRhLnZhbHVlT2Zmc2V0cztcblxuICBjb25zdCByZXNvbHZlZFJpbmdPZmZzZXRzID0gbmV3IEludDMyQXJyYXkoZ2VvbU9mZnNldHMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFJpbmdPZmZzZXRzLmxlbmd0aDsgKytpKSB7XG4gICAgcmVzb2x2ZWRSaW5nT2Zmc2V0c1tpXSA9IHJpbmdPZmZzZXRzW3BvbHlnb25PZmZzZXRzW2dlb21PZmZzZXRzW2ldXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuLyoqXG4gKiBJbnZlcnQgb2Zmc2V0cyBzbyB0aGF0IGxvb2t1cCBjYW4gZ28gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0T2Zmc2V0cyhvZmZzZXRzOiBJbnQzMkFycmF5KTogVWludDhBcnJheSB8IFVpbnQxNkFycmF5IHwgVWludDMyQXJyYXkge1xuICBjb25zdCBsYXJnZXN0T2Zmc2V0ID0gb2Zmc2V0c1tvZmZzZXRzLmxlbmd0aCAtIDFdO1xuXG4gIGNvbnN0IGFycmF5Q29uc3RydWN0b3IgPVxuICAgIG9mZnNldHMubGVuZ3RoIDwgTWF0aC5wb3coMiwgOClcbiAgICAgID8gVWludDhBcnJheVxuICAgICAgOiBvZmZzZXRzLmxlbmd0aCA8IE1hdGgucG93KDIsIDE2KVxuICAgICAgPyBVaW50MTZBcnJheVxuICAgICAgOiBVaW50MzJBcnJheTtcblxuICBjb25zdCBpbnZlcnRlZE9mZnNldHMgPSBuZXcgYXJyYXlDb25zdHJ1Y3RvcihsYXJnZXN0T2Zmc2V0KTtcbiAgZm9yIChsZXQgYXJyYXlJZHggPSAwOyBhcnJheUlkeCA8IG9mZnNldHMubGVuZ3RoIC0gMTsgYXJyYXlJZHgrKykge1xuICAgIGNvbnN0IHRoaXNPZmZzZXQgPSBvZmZzZXRzW2FycmF5SWR4XTtcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0c1thcnJheUlkeCArIDFdO1xuICAgIGZvciAobGV0IG9mZnNldCA9IHRoaXNPZmZzZXQ7IG9mZnNldCA8IG5leHRPZmZzZXQ7IG9mZnNldCsrKSB7XG4gICAgICBpbnZlcnRlZE9mZnNldHNbb2Zmc2V0XSA9IGFycmF5SWR4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnZlcnRlZE9mZnNldHM7XG59XG5cbi8vIFRPRE86IGJldHRlciB0eXBpbmdcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzKFxuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXhjbHVkZUtleXM6IHN0cmluZ1tdXG4pOiBbUmVjb3JkPHN0cmluZywgYW55PiwgUmVjb3JkPHN0cmluZywgYW55Pl0ge1xuICBjb25zdCBhY2Nlc3NvcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3Qgb3RoZXJQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpIHtcbiAgICBpZiAoZXhjbHVkZUtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdnZXQnKSkge1xuICAgICAgYWNjZXNzb3JzW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3RoZXJQcm9wc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFthY2Nlc3NvcnMsIG90aGVyUHJvcHNdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEVBQUEsR0FBQUQsdUJBQUEsQ0FBQUYsT0FBQTtBQUE0QyxTQUFBSSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhC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
310
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImdhIiwiX3V0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgiLCJzY2hlbWEiLCJleHRlbnNpb25OYW1lIiwiZ2VvbWV0cnlDb2x1bW5OYW1lIiwiaW5kZXgiLCJmaWVsZHMiLCJmaW5kSW5kZXgiLCJmaWVsZCIsIm5hbWUiLCJtZXRhZGF0YSIsImlzQ29sdW1uUmVmZXJlbmNlIiwiaW5wdXQiLCJpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyIsImRhdGEiLCJpc0Fycm93Rml4ZWRTaXplTGlzdCIsInR5cGUiLCJpc0RhdGFTZXBhcmF0ZWRDb29yZHMiLCJpc0Fycm93U3RydWN0IiwiY29udmVydFN0cnVjdFRvRml4ZWRTaXplTGlzdCIsImNvb3JkcyIsImludGVybGVhdmVkQ29vcmRzIiwiRmxvYXQ2NEFycmF5IiwibGVuZ3RoIiwiX2Nvb3JkcyRjaGlsZHJlbiIsIl9zbGljZWRUb0FycmF5MiIsImNoaWxkcmVuIiwieENoaWxkIiwieUNoaWxkIiwidmFsdWVzIiwiY2hpbGREYXRhVHlwZSIsIkZsb2F0NjQiLCJkYXRhVHlwZSIsIkZpeGVkU2l6ZUxpc3QiLCJGaWVsZCIsImludGVybGVhdmVkQ29vcmRzRGF0YSIsIm1ha2VEYXRhIiwibnVsbENvdW50IiwibnVsbEJpdG1hcCIsImNoaWxkIiwiYXNzZXJ0Iiwid3JhcEFjY2Vzc29yRnVuY3Rpb24iLCJvYmplY3RJbmZvIiwidXNlckFjY2Vzc29yRnVuY3Rpb24iLCJiYXRjaE9mZnNldCIsIm5ld0luZGV4IiwiaW52ZXJ0ZWRHZW9tT2Zmc2V0cyIsInVuZGVmaW5lZCIsIm5ld09iamVjdERhdGEiLCJhdHRyaWJ1dGVzIiwibmV3T2JqZWN0SW5mbyIsInRhcmdldCIsImFzc2lnbkFjY2Vzc29yIiwiYXJncyIsInByb3BzIiwicHJvcE5hbWUiLCJwcm9wSW5wdXQiLCJjaHVua0lkeCIsImdlb21Db29yZE9mZnNldHMiLCJfYXJncyRiYXRjaE9mZnNldCIsImlzQXJyb3dWZWN0b3IiLCJjb2x1bW5EYXRhIiwiRGF0YVR5cGUiLCJpc0ZpeGVkU2l6ZUxpc3QiLCJleHBhbmRBcnJheVRvQ29vcmRzIiwibGlzdFNpemUiLCJ2YWx1ZSIsInNpemUiLCJub3JtYWxpemVkIiwiaXNGbG9hdCIsIm9iamVjdCIsImdlb21PZmZzZXRzIiwibnVtUG9zaXRpb25zIiwibGFzdEluZGV4IiwibnVtQ29vcmRzIiwib3V0cHV0QXJyYXkiLCJjb25zdHJ1Y3RvciIsImdlb21JZHgiLCJsYXN0Q29vcmRJZHgiLCJuZXh0Q29vcmRJZHgiLCJjb29yZElkeCIsImdldEdlb21ldHJ5VmVjdG9yIiwidGFibGUiLCJnZW9hcnJvd1R5cGVOYW1lIiwiZ2VvbWV0cnlDb2x1bW5JZHgiLCJnZXRDaGlsZEF0IiwiZ2V0TGlzdE5lc3RpbmdMZXZlbHMiLCJuZXN0aW5nTGV2ZWxzIiwiaXNMaXN0IiwiZ2V0TXVsdGlMaW5lU3RyaW5nUmVzb2x2ZWRPZmZzZXRzIiwidmFsdWVPZmZzZXRzIiwibGluZVN0cmluZ0RhdGEiLCJnZXRNdWx0aUxpbmVTdHJpbmdDaGlsZCIsInJpbmdPZmZzZXRzIiwicmVzb2x2ZWRSaW5nT2Zmc2V0cyIsIkludDMyQXJyYXkiLCJnZXRQb2x5Z29uUmVzb2x2ZWRPZmZzZXRzIiwicmluZ0RhdGEiLCJnZXRQb2x5Z29uQ2hpbGQiLCJnZXRNdWx0aVBvbHlnb25SZXNvbHZlZE9mZnNldHMiLCJwb2x5Z29uRGF0YSIsImdldE11bHRpUG9seWdvbkNoaWxkIiwicG9seWdvbk9mZnNldHMiLCJpbnZlcnRPZmZzZXRzIiwib2Zmc2V0cyIsImxhcmdlc3RPZmZzZXQiLCJhcnJheUNvbnN0cnVjdG9yIiwiTWF0aCIsInBvdyIsIlVpbnQ4QXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiaW52ZXJ0ZWRPZmZzZXRzIiwiYXJyYXlJZHgiLCJ0aGlzT2Zmc2V0IiwibmV4dE9mZnNldCIsIm9mZnNldCIsImV4dHJhY3RBY2Nlc3NvcnNGcm9tUHJvcHMiLCJleGNsdWRlS2V5cyIsImFjY2Vzc29ycyIsIm90aGVyUHJvcHMiLCJfaSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJrZXkiLCJpbmNsdWRlcyIsInN0YXJ0c1dpdGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gZGVjay5nbC1jb21tdW5pdHlcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0ICogYXMgZ2EgZnJvbSAnQGdlb2Fycm93L2dlb2Fycm93LWpzJztcbmltcG9ydCB7QWNjZXNzb3JDb250ZXh0LCBBY2Nlc3NvckZ1bmN0aW9uLCBfSW50ZXJuYWxBY2Nlc3NvckNvbnRleHR9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7aXNBcnJvd0ZpeGVkU2l6ZUxpc3QsIGlzQXJyb3dTdHJ1Y3QsIGlzQXJyb3dWZWN0b3J9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBUeXBlZEFycmF5ID1cbiAgfCBVaW50OEFycmF5XG4gIHwgVWludDhDbGFtcGVkQXJyYXlcbiAgfCBVaW50MTZBcnJheVxuICB8IFVpbnQzMkFycmF5XG4gIHwgSW50OEFycmF5XG4gIHwgSW50MTZBcnJheVxuICB8IEludDMyQXJyYXlcbiAgfCBGbG9hdDMyQXJyYXlcbiAgfCBGbG9hdDY0QXJyYXk7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kR2VvbWV0cnlDb2x1bW5JbmRleChcbiAgc2NoZW1hOiBhcnJvdy5TY2hlbWEsXG4gIGV4dGVuc2lvbk5hbWU6IHN0cmluZyxcbiAgZ2VvbWV0cnlDb2x1bW5OYW1lPzogc3RyaW5nIHwgbnVsbFxuKTogbnVtYmVyIHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gc2NoZW1hLmZpZWxkcy5maW5kSW5kZXgoXG4gICAgZmllbGQgPT5cbiAgICAgIGZpZWxkLm5hbWUgPT09IGdlb21ldHJ5Q29sdW1uTmFtZSB8fFxuICAgICAgZmllbGQubWV0YWRhdGEuZ2V0KCdBUlJPVzpleHRlbnNpb246bmFtZScpID09PSBleHRlbnNpb25OYW1lXG4gICk7XG4gIHJldHVybiBpbmRleCAhPT0gLTEgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGlucHV0IGlzIGEgcmVmZXJlbmNlIHRvIGEgY29sdW1uIGluIHRoZSB0YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2x1bW5SZWZlcmVuY2UoaW5wdXQ6IGFueSk6IGlucHV0IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0RhdGFJbnRlcmxlYXZlZENvb3JkcyhcbiAgZGF0YTogYXJyb3cuRGF0YVxuKTogZGF0YSBpcyBhcnJvdy5EYXRhPGFycm93LkZpeGVkU2l6ZUxpc3Q8YXJyb3cuRmxvYXQ2ND4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayAyIG9yIDNkPyBGbG9hdDY0P1xuICByZXR1cm4gaXNBcnJvd0ZpeGVkU2l6ZUxpc3QoZGF0YS50eXBlKTtcbn1cblxuZnVuY3Rpb24gaXNEYXRhU2VwYXJhdGVkQ29vcmRzKFxuICBkYXRhOiBhcnJvdy5EYXRhXG4pOiBkYXRhIGlzIGFycm93LkRhdGE8YXJyb3cuU3RydWN0PHt4OiBhcnJvdy5GbG9hdDY0OyB5OiBhcnJvdy5GbG9hdDY0fT4+IHtcbiAgLy8gVE9ETzogYWxzbyBjaGVjayBjaGlsZCBuYW1lcz8gRmxvYXQ2ND9cbiAgcmV0dXJuIGlzQXJyb3dTdHJ1Y3QoZGF0YS50eXBlKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGdlb2Fycm93IFN0cnVjdCBjb29yZGluYXRlcyB0byBGaXhlZFNpemVMaXN0IGNvb3Jkc1xuICpcbiAqIFRoZSBHZW9BcnJvdyBzcGVjIGFsbG93cyBmb3IgZWl0aGVyIHNlcGFyYXRlZCBvciBpbnRlcmxlYXZlZCBjb29yZHMsIGJ1dCBhdFxuICogdGhpcyB0aW1lIGRlY2suZ2wgb25seSBzdXBwb3J0cyBpbnRlcmxlYXZlZC5cbiAqL1xuLy8gVE9ETzogdGhpcyBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0XG5leHBvcnQgZnVuY3Rpb24gY29udmVydFN0cnVjdFRvRml4ZWRTaXplTGlzdChcbiAgY29vcmRzOlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5GaXhlZFNpemVMaXN0PGFycm93LkZsb2F0NjQ+PlxuICAgIHwgYXJyb3cuRGF0YTxhcnJvdy5TdHJ1Y3Q8e3g6IGFycm93LkZsb2F0NjQ7IHk6IGFycm93LkZsb2F0NjR9Pj5cbik6IGFycm93LkRhdGE8YXJyb3cuRml4ZWRTaXplTGlzdDxhcnJvdy5GbG9hdDY0Pj4ge1xuICBpZiAoaXNEYXRhSW50ZXJsZWF2ZWRDb29yZHMoY29vcmRzKSkge1xuICAgIHJldHVybiBjb29yZHM7XG4gIH0gZWxzZSBpZiAoaXNEYXRhU2VwYXJhdGVkQ29vcmRzKGNvb3JkcykpIHtcbiAgICAvLyBUT0RPOiBzdXBwb3J0IDNkXG4gICAgY29uc3QgaW50ZXJsZWF2ZWRDb29yZHMgPSBuZXcgRmxvYXQ2NEFycmF5KGNvb3Jkcy5sZW5ndGggKiAyKTtcbiAgICBjb25zdCBbeENoaWxkLCB5Q2hpbGRdID0gY29vcmRzLmNoaWxkcmVuO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29vcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnRlcmxlYXZlZENvb3Jkc1tpICogMl0gPSB4Q2hpbGQudmFsdWVzW2ldO1xuICAgICAgaW50ZXJsZWF2ZWRDb29yZHNbaSAqIDIgKyAxXSA9IHlDaGlsZC52YWx1ZXNbaV07XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGREYXRhVHlwZSA9IG5ldyBhcnJvdy5GbG9hdDY0KCk7XG4gICAgY29uc3QgZGF0YVR5cGUgPSBuZXcgYXJyb3cuRml4ZWRTaXplTGlzdCgyLCBuZXcgYXJyb3cuRmllbGQoJ2Nvb3JkcycsIGNoaWxkRGF0YVR5cGUpKTtcblxuICAgIGNvbnN0IGludGVybGVhdmVkQ29vcmRzRGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGNoaWxkRGF0YVR5cGUsXG4gICAgICBsZW5ndGg6IGludGVybGVhdmVkQ29vcmRzLmxlbmd0aFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IGFycm93Lm1ha2VEYXRhKHtcbiAgICAgIHR5cGU6IGRhdGFUeXBlLFxuICAgICAgbGVuZ3RoOiBjb29yZHMubGVuZ3RoLFxuICAgICAgbnVsbENvdW50OiBjb29yZHMubnVsbENvdW50LFxuICAgICAgbnVsbEJpdG1hcDogY29vcmRzLm51bGxCaXRtYXAsXG4gICAgICBjaGlsZDogaW50ZXJsZWF2ZWRDb29yZHNEYXRhXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3NlcnQoZmFsc2UpO1xufVxuXG50eXBlIEFzc2lnbkFjY2Vzc29yUHJvcHMgPSB7XG4gIC8qKiBUaGUgb2JqZWN0IG9uIHdoaWNoIHRvIGFzc2lnbiB0aGUgcmVzb2x2ZWQgYWNjZXNvciAqL1xuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBwcm9wIHRvIHNldCAqL1xuICBwcm9wTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHVzZXItc3VwcGxpZWQgaW5wdXQgdG8gdGhlIGxheWVyLiBNdXN0IGVpdGhlciBiZSBhIHNjYWxhciB2YWx1ZSBvciBhIHJlZmVyZW5jZSB0byBhIGNvbHVtbiBpbiB0aGUgdGFibGUuICovXG4gIHByb3BJbnB1dDogYW55O1xuICAvKiogTnVtZXJpYyBpbmRleCBpbiB0aGUgdGFibGUgKi9cbiAgY2h1bmtJZHg6IG51bWJlcjtcbiAgLyoqIGEgbWFwIGZyb20gdGhlIGdlb21ldHJ5IGluZGV4IHRvIHRoZSBjb29yZCBvZmZzZXRzIGZvciB0aGF0IGdlb21ldHJ5LiAqL1xuICBnZW9tQ29vcmRPZmZzZXRzPzogSW50MzJBcnJheSB8IG51bGw7XG4gIC8qKiBBYnNvbHV0ZSBvZmZzZXQgb2YgdGhlIGJhdGNoIGluIHRoZSB0YWJsZS92ZWN0b3IuIEFkZGVkIHRvIHRoZSBzYW1wbGluZyBpbmRleC4gKi9cbiAgYmF0Y2hPZmZzZXQ/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYSB1c2VyLXByb3ZpZGVkIGFjY2Vzc29yIGZ1bmN0aW9uXG4gKlxuICogRm9yIGxheWVycyBsaWtlIFNjYXR0ZXJwbG90LCBQYXRoLCBhbmQgUG9seWdvbiwgd2UgYXV0b21hdGljYWxseSBoYW5kbGVcbiAqIFwiZXhwbG9kaW5nXCIgdGhlIHRhYmxlIHdoZW4gbXVsdGktZ2VvbWV0cnkgaW5wdXQgYXJlIHByb3ZpZGVkLiBUaGlzIG1lYW5zIHRoYXRcbiAqIHRoZSB1cHN0cmVhbSBgaW5kZXhgIHZhbHVlIHBhc3NlZCB0byB0aGUgdXNlciB3aWxsIGJlIHRoZSBjb3JyZWN0IHJvdyBpbmRleFxuICogX29ubHlfIGZvciBub24tZXhwbG9kZWQgZGF0YS5cbiAqXG4gKiBXaXRoIHRoaXMgZnVuY3Rpb24sIHdlIHNpbXBsaWZ5IHRoZSB1c2VyIHVzYWdlIGJ5IGF1dG9tYXRpY2FsbHkgY29udmVydGluZ1xuICogYmFjayBmcm9tIFwiZXhwbG9kZWRcIiBpbmRleCBiYWNrIHRvIHRoZSBvcmlnaW5hbCByb3cgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIHdyYXBBY2Nlc3NvckZ1bmN0aW9uPEluLCBPdXQ+KFxuICBvYmplY3RJbmZvOiBfSW50ZXJuYWxBY2Nlc3NvckNvbnRleHQ8SW4+LFxuICB1c2VyQWNjZXNzb3JGdW5jdGlvbjogQWNjZXNzb3JGdW5jdGlvbjxJbiwgT3V0PixcbiAgYmF0Y2hPZmZzZXQ6IG51bWJlclxuKTogT3V0IHtcbiAgY29uc3Qge2luZGV4LCBkYXRhfSA9IG9iamVjdEluZm87XG4gIGxldCBuZXdJbmRleCA9IGluZGV4ICsgYmF0Y2hPZmZzZXQ7XG4gIGlmIChkYXRhLmludmVydGVkR2VvbU9mZnNldHMgIT09IHVuZGVmaW5lZCkge1xuICAgIG5ld0luZGV4ID0gZGF0YS5pbnZlcnRlZEdlb21PZmZzZXRzW2luZGV4XTtcbiAgfVxuICBjb25zdCBuZXdPYmplY3REYXRhID0ge1xuICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICBsZW5ndGg6IGRhdGEubGVuZ3RoLFxuICAgIGF0dHJpYnV0ZXM6IGRhdGEuYXR0cmlidXRlc1xuICB9O1xuICBjb25zdCBuZXdPYmplY3RJbmZvID0ge1xuICAgIGluZGV4OiBuZXdJbmRleCxcbiAgICBkYXRhOiBuZXdPYmplY3REYXRhLFxuICAgIHRhcmdldDogb2JqZWN0SW5mby50YXJnZXRcbiAgfTtcbiAgcmV0dXJuIHVzZXJBY2Nlc3NvckZ1bmN0aW9uKG5ld09iamVjdEluZm8pO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYWNjZXNzb3IgYW5kIGFzc2lnbiB0byBwcm9wcyBvYmplY3RcbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBhcyBhIGhlbHBlciBmdW5jdGlvbiBiZWNhdXNlIGEgc2NhbGFyIHByb3AgaXMgc2V0IGF0IHRoZSB0b3BcbiAqIGxldmVsIHdoaWxlIGEgdmVjdG9yaXplZCBwcm9wIGlzIHNldCBpbnNpZGUgZGF0YS5hdHRyaWJ1dGVzXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduQWNjZXNzb3IoYXJnczogQXNzaWduQWNjZXNzb3JQcm9wcykge1xuICBjb25zdCB7cHJvcHMsIHByb3BOYW1lLCBwcm9wSW5wdXQsIGNodW5rSWR4LCBnZW9tQ29vcmRPZmZzZXRzLCBiYXRjaE9mZnNldCA9IDB9ID0gYXJncztcblxuICBpZiAocHJvcElucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaXNBcnJvd1ZlY3Rvcihwcm9wSW5wdXQpKSB7XG4gICAgY29uc3QgY29sdW1uRGF0YSA9IHByb3BJbnB1dC5kYXRhW2NodW5rSWR4XTtcblxuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0ZpeGVkU2l6ZUxpc3QoY29sdW1uRGF0YSkpIHtcbiAgICAgIGFzc2VydChjb2x1bW5EYXRhLmNoaWxkcmVuLmxlbmd0aCA9PT0gMSk7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS5jaGlsZHJlblswXS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsIGdlb21Db29yZE9mZnNldHMpO1xuICAgICAgfVxuXG4gICAgICBwcm9wcy5kYXRhLmF0dHJpYnV0ZXNbcHJvcE5hbWVdID0ge1xuICAgICAgICB2YWx1ZTogdmFsdWVzLFxuICAgICAgICBzaXplOiBjb2x1bW5EYXRhLnR5cGUubGlzdFNpemUsXG4gICAgICAgIC8vIFNldCB0byBgdHJ1ZWAgdG8gc2lnbmlmeSB0aGF0IGNvbG9ycyBhcmUgYWxyZWFkeSAwLTI1NSwgYW5kIGRlY2svbHVtYVxuICAgICAgICAvLyBkb2VzIG5vdCBuZWVkIHRvIHJlc2NhbGVcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2RlY2suZ2wvYmxvYi80MDFkNjI0YzA1MjlmYWFhNjIxMjU3MTRjMzc2YjNiYTNiOGYzNzlmL2RvY3MvYXBpLXJlZmVyZW5jZS9jb3JlL2F0dHJpYnV0ZS1tYW5hZ2VyLm1kP3BsYWluPTEjTDY2XG4gICAgICAgIG5vcm1hbGl6ZWQ6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChhcnJvdy5EYXRhVHlwZS5pc0Zsb2F0KGNvbHVtbkRhdGEpKSB7XG4gICAgICBsZXQgdmFsdWVzID0gY29sdW1uRGF0YS52YWx1ZXM7XG5cbiAgICAgIGlmIChnZW9tQ29vcmRPZmZzZXRzKSB7XG4gICAgICAgIHZhbHVlcyA9IGV4cGFuZEFycmF5VG9Db29yZHModmFsdWVzLCAxLCBnZW9tQ29vcmRPZmZzZXRzKTtcbiAgICAgIH1cblxuICAgICAgcHJvcHMuZGF0YS5hdHRyaWJ1dGVzW3Byb3BOYW1lXSA9IHtcbiAgICAgICAgdmFsdWU6IHZhbHVlcyxcbiAgICAgICAgc2l6ZTogMVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHByb3BJbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IDxJbj4ob2JqZWN0OiBhbnksIG9iamVjdEluZm86IEFjY2Vzc29yQ29udGV4dDxJbj4pID0+IHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBpZiAocHJvcE5hbWUgPT09ICdnZXRQb2x5Z29uT2Zmc2V0Jykge1xuICAgICAgICByZXR1cm4gcHJvcElucHV0KG9iamVjdCwgb2JqZWN0SW5mbyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3cmFwQWNjZXNzb3JGdW5jdGlvbihvYmplY3RJbmZvLCBwcm9wSW5wdXQsIGJhdGNoT2Zmc2V0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHByb3BzW3Byb3BOYW1lXSA9IHByb3BJbnB1dDtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGFuZCBhbiBhcnJheSBmcm9tIFwib25lIGVsZW1lbnQgcGVyIGdlb21ldHJ5XCIgdG8gXCJvbmUgZWxlbWVudCBwZXIgY29vcmRpbmF0ZVwiXG4gKlxuICogQHBhcmFtIGlucHV0OiB0aGUgaW5wdXQgYXJyYXkgdG8gZXhwYW5kXG4gKiBAcGFyYW0gc2l6ZSA6IHRoZSBudW1iZXIgb2YgbmVzdGVkIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheSBwZXIgZ2VvbWV0cnkuIFNvIGZvciBleGFtcGxlLCBmb3IgUkdCIGRhdGEgdGhpcyB3b3VsZCBiZSAzLCBmb3IgUkdCQSB0aGlzIHdvdWxkIGJlIDQuIEZvciByYWRpdXMsIHRoaXMgd291bGQgYmUgMS5cbiAqIEBwYXJhbSBnZW9tT2Zmc2V0cyA6IGFuIG9mZnNldHMgYXJyYXkgbWFwcGluZyBmcm9tIHRoZSBnZW9tZXRyeSB0byB0aGUgY29vcmRpbmF0ZSBpbmRleGVzLiBTbyBpbiB0aGUgY2FzZSBvZiBhIExpbmVTdHJpbmdBcnJheSwgdGhpcyBpcyByZXRyaWV2ZWQgZGlyZWN0bHkgZnJvbSB0aGUgR2VvQXJyb3cgc3RvcmFnZS4gSW4gdGhlIGNhc2Ugb2YgYSBQb2x5Z29uQXJyYXksIHRoaXMgY29tZXMgZnJvbSB0aGUgcmVzb2x2ZWQgaW5kZXhlcyB0aGF0IG5lZWQgdG8gYmUgZ2l2ZW4gdG8gdGhlIFNvbGlkUG9seWdvbkxheWVyIGFueXdheXMuXG4gKiBAcGFyYW0gbnVtUG9zaXRpb25zIDogZW5kIHBvc2l0aW9uIGluIGdlb21PZmZzZXRzLCBhcyBnZW9tT2Zmc2V0cyBjYW4gcG90ZW50aWFsbHkgY29udGFpbiBwcmVhbGxvY2F0ZWQgemVyb2VzIGluIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci5cbiAqXG4gKiBAcmV0dXJuICB7VHlwZWRBcnJheX0gdmFsdWVzIGV4cGFuZGVkIHRvIGJlIHBlci1jb29yZGluYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBhbmRBcnJheVRvQ29vcmRzPFQgZXh0ZW5kcyBUeXBlZEFycmF5PihcbiAgaW5wdXQ6IFQsXG4gIHNpemU6IG51bWJlcixcbiAgZ2VvbU9mZnNldHM6IEludDMyQXJyYXksXG4gIG51bVBvc2l0aW9ucz86IG51bWJlclxuKTogVCB7XG4gIGNvbnN0IGxhc3RJbmRleCA9IG51bVBvc2l0aW9ucyB8fCBnZW9tT2Zmc2V0cy5sZW5ndGggLSAxO1xuICBjb25zdCBudW1Db29yZHMgPSBnZW9tT2Zmc2V0c1tsYXN0SW5kZXhdO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IG91dHB1dEFycmF5OiBUID0gbmV3IGlucHV0LmNvbnN0cnVjdG9yKG51bUNvb3JkcyAqIHNpemUpO1xuXG4gIC8vIGdlb21JZHggaXMgYW4gaW5kZXggaW50byB0aGUgZ2VvbU9mZnNldHMgYXJyYXlcbiAgLy8gZ2VvbUlkeCBpcyBhbHNvIHRoZSBnZW9tZXRyeS90YWJsZSBpbmRleFxuICBmb3IgKGxldCBnZW9tSWR4ID0gMDsgZ2VvbUlkeCA8IGxhc3RJbmRleDsgZ2VvbUlkeCsrKSB7XG4gICAgLy8gZ2VvbU9mZnNldHMgbWFwcyBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCB0byB0aGUgY29vcmQgaW5kZXhcbiAgICAvLyBTbyBoZXJlIHdlIGdldCB0aGUgcmFuZ2Ugb2YgY29vcmRzIHRoYXQgdGhpcyBnZW9tZXRyeSBjb3ZlcnNcbiAgICBjb25zdCBsYXN0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4XTtcbiAgICBjb25zdCBuZXh0Q29vcmRJZHggPSBnZW9tT2Zmc2V0c1tnZW9tSWR4ICsgMV07XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhpcyByYW5nZSBvZiBjb29yZCBpbmRpY2VzXG4gICAgZm9yIChsZXQgY29vcmRJZHggPSBsYXN0Q29vcmRJZHg7IGNvb3JkSWR4IDwgbmV4dENvb3JkSWR4OyBjb29yZElkeCsrKSB7XG4gICAgICAvLyBJdGVyYXRlIG92ZXIgc2l6ZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgLy8gQ29weSBmcm9tIHRoZSBnZW9tZXRyeSBpbmRleCBpbiBgaW5wdXRgIHRvIHRoZSBjb29yZCBpbmRleCBpblxuICAgICAgICAvLyBgb3V0cHV0YFxuICAgICAgICBvdXRwdXRBcnJheVtjb29yZElkeCAqIHNpemUgKyBpXSA9IGlucHV0W2dlb21JZHggKiBzaXplICsgaV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dEFycmF5O1xufVxuXG4vKipcbiAqIEdldCBhIGdlb21ldHJ5IHZlY3RvciB3aXRoIHRoZSBzcGVjaWZpZWQgZXh0ZW5zaW9uIHR5cGUgbmFtZSBmcm9tIHRoZSB0YWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdlb21ldHJ5VmVjdG9yKFxuICB0YWJsZTogYXJyb3cuVGFibGUsXG4gIGdlb2Fycm93VHlwZU5hbWU6IHN0cmluZ1xuKTogYXJyb3cuVmVjdG9yIHwgbnVsbCB7XG4gIGNvbnN0IGdlb21ldHJ5Q29sdW1uSWR4ID0gZmluZEdlb21ldHJ5Q29sdW1uSW5kZXgodGFibGUuc2NoZW1hLCBnZW9hcnJvd1R5cGVOYW1lKTtcblxuICBpZiAoZ2VvbWV0cnlDb2x1bW5JZHggPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYE5vIGNvbHVtbiBmb3VuZCB3aXRoIGV4dGVuc2lvbiB0eXBlICR7Z2VvYXJyb3dUeXBlTmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiB0YWJsZS5nZXRDaGlsZEF0KGdlb21ldHJ5Q29sdW1uSWR4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3ROZXN0aW5nTGV2ZWxzKGRhdGE6IGFycm93LkRhdGEpOiBudW1iZXIge1xuICBsZXQgbmVzdGluZ0xldmVscyA9IDA7XG4gIGlmIChhcnJvdy5EYXRhVHlwZS5pc0xpc3QoZGF0YS50eXBlKSkge1xuICAgIG5lc3RpbmdMZXZlbHMgKz0gMTtcbiAgICBkYXRhID0gZGF0YS5jaGlsZHJlblswXTtcbiAgfVxuICByZXR1cm4gbmVzdGluZ0xldmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpTGluZVN0cmluZ1Jlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpTGluZVN0cmluZ0RhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgZ2VvbU9mZnNldHMgPSBkYXRhLnZhbHVlT2Zmc2V0cztcbiAgY29uc3QgbGluZVN0cmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aUxpbmVTdHJpbmdDaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSBsaW5lU3RyaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvbHlnb25SZXNvbHZlZE9mZnNldHMoZGF0YTogZ2EuZGF0YS5Qb2x5Z29uRGF0YSk6IEludDMyQXJyYXkge1xuICBjb25zdCBnZW9tT2Zmc2V0cyA9IGRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nRGF0YSA9IGdhLmNoaWxkLmdldFBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ09mZnNldHMgPSByaW5nRGF0YS52YWx1ZU9mZnNldHM7XG5cbiAgY29uc3QgcmVzb2x2ZWRSaW5nT2Zmc2V0cyA9IG5ldyBJbnQzMkFycmF5KGdlb21PZmZzZXRzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzb2x2ZWRSaW5nT2Zmc2V0cy5sZW5ndGg7ICsraSkge1xuICAgIC8vIFBlcmZvcm0gdGhlIGxvb2t1cCBpbnRvIHRoZSByaW5nSW5kaWNlcyBhcnJheSB1c2luZyB0aGUgZ2VvbU9mZnNldHNcbiAgICAvLyBhcnJheVxuICAgIHJlc29sdmVkUmluZ09mZnNldHNbaV0gPSByaW5nT2Zmc2V0c1tnZW9tT2Zmc2V0c1tpXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpUG9seWdvblJlc29sdmVkT2Zmc2V0cyhkYXRhOiBnYS5kYXRhLk11bHRpUG9seWdvbkRhdGEpOiBJbnQzMkFycmF5IHtcbiAgY29uc3QgcG9seWdvbkRhdGEgPSBnYS5jaGlsZC5nZXRNdWx0aVBvbHlnb25DaGlsZChkYXRhKTtcbiAgY29uc3QgcmluZ0RhdGEgPSBnYS5jaGlsZC5nZXRQb2x5Z29uQ2hpbGQocG9seWdvbkRhdGEpO1xuXG4gIGNvbnN0IGdlb21PZmZzZXRzID0gZGF0YS52YWx1ZU9mZnNldHM7XG4gIGNvbnN0IHBvbHlnb25PZmZzZXRzID0gcG9seWdvbkRhdGEudmFsdWVPZmZzZXRzO1xuICBjb25zdCByaW5nT2Zmc2V0cyA9IHJpbmdEYXRhLnZhbHVlT2Zmc2V0cztcblxuICBjb25zdCByZXNvbHZlZFJpbmdPZmZzZXRzID0gbmV3IEludDMyQXJyYXkoZ2VvbU9mZnNldHMubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvbHZlZFJpbmdPZmZzZXRzLmxlbmd0aDsgKytpKSB7XG4gICAgcmVzb2x2ZWRSaW5nT2Zmc2V0c1tpXSA9IHJpbmdPZmZzZXRzW3BvbHlnb25PZmZzZXRzW2dlb21PZmZzZXRzW2ldXV07XG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZWRSaW5nT2Zmc2V0cztcbn1cblxuLyoqXG4gKiBJbnZlcnQgb2Zmc2V0cyBzbyB0aGF0IGxvb2t1cCBjYW4gZ28gaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJ0T2Zmc2V0cyhvZmZzZXRzOiBJbnQzMkFycmF5KTogVWludDhBcnJheSB8IFVpbnQxNkFycmF5IHwgVWludDMyQXJyYXkge1xuICBjb25zdCBsYXJnZXN0T2Zmc2V0ID0gb2Zmc2V0c1tvZmZzZXRzLmxlbmd0aCAtIDFdO1xuXG4gIGNvbnN0IGFycmF5Q29uc3RydWN0b3IgPVxuICAgIG9mZnNldHMubGVuZ3RoIDwgTWF0aC5wb3coMiwgOClcbiAgICAgID8gVWludDhBcnJheVxuICAgICAgOiBvZmZzZXRzLmxlbmd0aCA8IE1hdGgucG93KDIsIDE2KVxuICAgICAgPyBVaW50MTZBcnJheVxuICAgICAgOiBVaW50MzJBcnJheTtcblxuICBjb25zdCBpbnZlcnRlZE9mZnNldHMgPSBuZXcgYXJyYXlDb25zdHJ1Y3RvcihsYXJnZXN0T2Zmc2V0KTtcbiAgZm9yIChsZXQgYXJyYXlJZHggPSAwOyBhcnJheUlkeCA8IG9mZnNldHMubGVuZ3RoIC0gMTsgYXJyYXlJZHgrKykge1xuICAgIGNvbnN0IHRoaXNPZmZzZXQgPSBvZmZzZXRzW2FycmF5SWR4XTtcbiAgICBjb25zdCBuZXh0T2Zmc2V0ID0gb2Zmc2V0c1thcnJheUlkeCArIDFdO1xuICAgIGZvciAobGV0IG9mZnNldCA9IHRoaXNPZmZzZXQ7IG9mZnNldCA8IG5leHRPZmZzZXQ7IG9mZnNldCsrKSB7XG4gICAgICBpbnZlcnRlZE9mZnNldHNbb2Zmc2V0XSA9IGFycmF5SWR4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnZlcnRlZE9mZnNldHM7XG59XG5cbi8vIFRPRE86IGJldHRlciB0eXBpbmdcbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0QWNjZXNzb3JzRnJvbVByb3BzKFxuICBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXhjbHVkZUtleXM6IHN0cmluZ1tdXG4pOiBbUmVjb3JkPHN0cmluZywgYW55PiwgUmVjb3JkPHN0cmluZywgYW55Pl0ge1xuICBjb25zdCBhY2Nlc3NvcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3Qgb3RoZXJQcm9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wcykpIHtcbiAgICBpZiAoZXhjbHVkZUtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCdnZXQnKSkge1xuICAgICAgYWNjZXNzb3JzW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3RoZXJQcm9wc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFthY2Nlc3NvcnMsIG90aGVyUHJvcHNdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEVBQUEsR0FBQUQsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUFvRixTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUosd0JBQUFJLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENB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
@@ -10,6 +10,7 @@ exports.validateColorVector = validateColorVector;
10
10
  exports.validateVectorAccessors = validateVectorAccessors;
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _typed = require("@deck.gl/core/typed");
13
+ var _utils = require("@kepler.gl/utils");
13
14
  var arrow = _interopRequireWildcard(require("apache-arrow"));
14
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -30,7 +31,7 @@ function validateAccessors(props, table) {
30
31
  // Is it an accessor
31
32
  if (accessorName.startsWith('get')) {
32
33
  // Is it a vector accessor
33
- if (accessorValue instanceof arrow.Vector) {
34
+ if ((0, _utils.isArrowVector)(accessorValue)) {
34
35
  vectorAccessors.push(accessorValue);
35
36
 
36
37
  // Is it a color vector accessor
@@ -100,4 +101,4 @@ function validateColorVector(vector) {
100
101
  // Property 'type' does not exist on type 'Int_<Ints>'. Did you mean 'TType'?
101
102
  (0, _typed.assert)(vector.type.children[0].type.bitWidth === 8);
102
103
  }
103
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ2YWxpZGF0ZUFjY2Vzc29ycyIsInByb3BzIiwidGFibGUiLCJ2ZWN0b3JBY2Nlc3NvcnMiLCJjb2xvclZlY3RvckFjY2Vzc29ycyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImFjY2Vzc29yTmFtZSIsImFjY2Vzc29yVmFsdWUiLCJzdGFydHNXaXRoIiwiVmVjdG9yIiwicHVzaCIsImVuZHNXaXRoIiwidmFsaWRhdGVWZWN0b3JBY2Nlc3NvcnMiLCJfaTIiLCJfY29sb3JWZWN0b3JBY2Nlc3NvcnMiLCJjb2xvclZlY3RvckFjY2Vzc29yIiwidmFsaWRhdGVDb2xvclZlY3RvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwidmVjdG9yQWNjZXNzb3IiLCJhc3NlcnQiLCJiYXRjaGVzIiwiZGF0YSIsImVyciIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJudW1Sb3dzIiwidmVjdG9yIiwiRGF0YVR5cGUiLCJpc0ZpeGVkU2l6ZUxpc3QiLCJ0eXBlIiwibGlzdFNpemUiLCJpc0ludCIsImNoaWxkcmVuIiwiYml0V2lkdGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdmFsaWRhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gZGVjay5nbC1jb21tdW5pdHlcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCAoYykgdmlzLmdsIGNvbnRyaWJ1dG9yc1xuXG5pbXBvcnQge2Fzc2VydH0gZnJvbSAnQGRlY2suZ2wvY29yZS90eXBlZCc7XG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVBY2Nlc3NvcnMocHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIHRhYmxlOiBhcnJvdy5UYWJsZSk6IHZvaWQge1xuICBjb25zdCB2ZWN0b3JBY2Nlc3NvcnM6IGFycm93LlZlY3RvcltdID0gW107XG4gIGNvbnN0IGNvbG9yVmVjdG9yQWNjZXNzb3JzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFthY2Nlc3Nvck5hbWUsIGFjY2Vzc29yVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BzKSkge1xuICAgIC8vIElzIGl0IGFuIGFjY2Vzc29yXG4gICAgaWYgKGFjY2Vzc29yTmFtZS5zdGFydHNXaXRoKCdnZXQnKSkge1xuICAgICAgLy8gSXMgaXQgYSB2ZWN0b3IgYWNjZXNzb3JcbiAgICAgIGlmIChhY2Nlc3NvclZhbHVlIGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgICAgIHZlY3RvckFjY2Vzc29ycy5wdXNoKGFjY2Vzc29yVmFsdWUpO1xuXG4gICAgICAgIC8vIElzIGl0IGEgY29sb3IgdmVjdG9yIGFjY2Vzc29yXG4gICAgICAgIGlmIChhY2Nlc3Nvck5hbWUuZW5kc1dpdGgoJ0NvbG9yJykpIHtcbiAgICAgICAgICBjb2xvclZlY3RvckFjY2Vzc29ycy5wdXNoKGFjY2Vzc29yVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVWZWN0b3JBY2Nlc3NvcnModGFibGUsIHZlY3RvckFjY2Vzc29ycyk7XG4gIGZvciAoY29uc3QgY29sb3JWZWN0b3JBY2Nlc3NvciBvZiBjb2xvclZlY3RvckFjY2Vzc29ycykge1xuICAgIHZhbGlkYXRlQ29sb3JWZWN0b3IoY29sb3JWZWN0b3JBY2Nlc3Nvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm92aWRlIHZhbGlkYXRpb24gZm9yIGFjY2Vzc29ycyBwcm92aWRlZFxuICpcbiAqIC0gQXNzZXJ0IHRoYXQgYWxsIHZlY3RvcnMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgY2h1bmtzIGFzIHRoZSBtYWluIHRhYmxlXG4gKiAtIEFzc2VydCB0aGF0IGFsbCBjaHVua3MgaW4gZWFjaCB2ZWN0b3IgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygcm93cyBhcyB0aGVcbiAqICAgcmVsZXZhbnQgYmF0Y2ggaW4gdGhlIG1haW4gdGFibGUuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVWZWN0b3JBY2Nlc3NvcnModGFibGU6IGFycm93LlRhYmxlLCB2ZWN0b3JBY2Nlc3NvcnM6IGFycm93LlZlY3RvcltdKSB7XG4gIC8vIENoZWNrIHRoZSBzYW1lIG51bWJlciBvZiBjaHVua3MgYXMgdGhlIHRhYmxlJ3MgYmF0Y2hlc1xuICBmb3IgKGNvbnN0IHZlY3RvckFjY2Vzc29yIG9mIHZlY3RvckFjY2Vzc29ycykge1xuICAgIGFzc2VydCh0YWJsZS5iYXRjaGVzLmxlbmd0aCA9PT0gdmVjdG9yQWNjZXNzb3IuZGF0YS5sZW5ndGgpO1xuICB9XG5cbiAgLy8gQ2hlY2sgdGhhdCBlYWNoIHRhYmxlIGJhdGNoL3ZlY3RvciBkYXRhIGhhcyB0aGUgc2FtZSBudW1iZXIgb2Ygcm93c1xuICBmb3IgKGNvbnN0IHZlY3RvckFjY2Vzc29yIG9mIHZlY3RvckFjY2Vzc29ycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGUuYmF0Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgICAgYXNzZXJ0KHRhYmxlLmJhdGNoZXNbaV0ubnVtUm93cyA9PT0gdmVjdG9yQWNjZXNzb3IuZGF0YVtpXS5sZW5ndGgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDb2xvclZlY3Rvcih2ZWN0b3I6IGFycm93LlZlY3Rvcikge1xuICAvLyBBc3NlcnQgdGhlIGNvbG9yIHZlY3RvciBpcyBhIEZpeGVkU2l6ZUxpc3RcbiAgYXNzZXJ0KGFycm93LkRhdGFUeXBlLmlzRml4ZWRTaXplTGlzdCh2ZWN0b3IudHlwZSkpO1xuXG4gIC8vIEFzc2VydCBpdCBoYXMgMyBvciA0IHZhbHVlc1xuICBhc3NlcnQodmVjdG9yLnR5cGUubGlzdFNpemUgPT09IDMgfHwgdmVjdG9yLnR5cGUubGlzdFNpemUgPT09IDQpO1xuXG4gIC8vIEFzc2VydCB0aGUgY2hpbGQgdHlwZSBpcyBhbiBpbnRlZ2VyXG4gIGFzc2VydChhcnJvdy5EYXRhVHlwZS5pc0ludCh2ZWN0b3IudHlwZS5jaGlsZHJlblswXSkpO1xuXG4gIC8vIEFzc2VydCB0aGUgY2hpbGQgdHlwZSBpcyBhIFVpbnQ4XG4gIC8vIFByb3BlcnR5ICd0eXBlJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdJbnRfPEludHM+Jy4gRGlkIHlvdSBtZWFuICdUVHlwZSc/XG4gIGFzc2VydCh2ZWN0b3IudHlwZS5jaGlsZHJlblswXS50eXBlLmJpdFdpZHRoID09PSA4KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFDLHVC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QUFBO0lBQUFOLFNBQUEsQ0FBQS9ELENBQUEsQ0FBQXFFLEdBQUE7RUFBQTtJQUFBTixTQUFBLENBQUFoQyxDQUFBO0VBQUE7RUFBQSxJQUFBdUMsVUFBQSxHQUFBbkQsMEJBQUEsQ0FDNkIwQixlQUFlO0lBQUEwQixNQUFBO0VBQUE7SUFBNUMsS0FBQUQsVUFBQSxDQUFBMUMsQ0FBQSxNQUFBMkMsTUFBQSxHQUFBRCxVQUFBLENBQUE5RCxDQUFBLElBQUFxQixJQUFBLEdBQThDO01BQUEsSUFBbkNvQyxlQUFjLEdBQUFNLE1BQUEsQ0FBQXpDLEtBQUE7TUFDdkIsS0FBSyxJQUFJYixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcyQixLQUFLLENBQUN1QixPQUFPLENBQUMxQyxNQUFNLEVBQUVSLENBQUMsRUFBRSxFQUFFO1FBQzdDLElBQUFpRCxhQUFNLEVBQUN0QixLQUFLLENBQUN1QixPQUFPLENBQUNsRCxDQUFDLENBQUMsQ0FBQ3VELE9BQU8sS0FBS1AsZUFBYyxDQUFDRyxJQUFJLENBQUNuRCxDQUFDLENBQUMsQ0FBQ1EsTUFBTSxDQUFDO01BQ3BFO0lBQ0Y7RUFBQyxTQUFBNEMsR0FBQTtJQUFBQyxVQUFBLENBQUF0RSxDQUFBLENBQUFxRSxHQUFBO0VBQUE7SUFBQUMsVUFBQSxDQUFBdkMsQ0FBQTtFQUFBO0FBQ0g7QUFFTyxTQUFTK0IsbUJBQW1CQSxDQUFDVyxNQUFvQixFQUFFO0VBQ3hEO0VBQ0EsSUFBQVAsYUFBTSxFQUFDckUsS0FBSyxDQUFDNkUsUUFBUSxDQUFDQyxlQUFlLENBQUNGLE1BQU0sQ0FBQ0csSUFBSSxDQUFDLENBQUM7O0VBRW5EO0VBQ0EsSUFBQVYsYUFBTSxFQUFDTyxNQUFNLENBQUNHLElBQUksQ0FBQ0MsUUFBUSxLQUFLLENBQUMsSUFBSUosTUFBTSxDQUFDRyxJQUFJLENBQUNDLFFBQVEsS0FBSyxDQUFDLENBQUM7O0VBRWhFO0VBQ0EsSUFBQVgsYUFBTSxFQUFDckUsS0FBSyxDQUFDNkUsUUFBUSxDQUFDSSxLQUFLLENBQUNMLE1BQU0sQ0FBQ0csSUFBSSxDQUFDRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7RUFFckQ7RUFDQTtFQUNBLElBQUFiLGFBQU0sRUFBQ08sTUFBTSxDQUFDRyxJQUFJLENBQUNHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsSUFBSSxDQUFDSSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ3JEIiwiaWdub3JlTGlzdCI6W119
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX3V0aWxzIiwiYXJyb3ciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJ2YWxpZGF0ZUFjY2Vzc29ycyIsInByb3BzIiwidGFibGUiLCJ2ZWN0b3JBY2Nlc3NvcnMiLCJjb2xvclZlY3RvckFjY2Vzc29ycyIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsImFjY2Vzc29yTmFtZSIsImFjY2Vzc29yVmFsdWUiLCJzdGFydHNXaXRoIiwiaXNBcnJvd1ZlY3RvciIsInB1c2giLCJlbmRzV2l0aCIsInZhbGlkYXRlVmVjdG9yQWNjZXNzb3JzIiwiX2kyIiwiX2NvbG9yVmVjdG9yQWNjZXNzb3JzIiwiY29sb3JWZWN0b3JBY2Nlc3NvciIsInZhbGlkYXRlQ29sb3JWZWN0b3IiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInZlY3RvckFjY2Vzc29yIiwiYXNzZXJ0IiwiYmF0Y2hlcyIsImRhdGEiLCJlcnIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwibnVtUm93cyIsInZlY3RvciIsIkRhdGFUeXBlIiwiaXNGaXhlZFNpemVMaXN0IiwidHlwZSIsImxpc3RTaXplIiwiaXNJbnQiLCJjaGlsZHJlbiIsImJpdFdpZHRoIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3ZhbGlkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGRlY2suZ2wtY29tbXVuaXR5XG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnNcblxuaW1wb3J0IHthc3NlcnR9IGZyb20gJ0BkZWNrLmdsL2NvcmUvdHlwZWQnO1xuaW1wb3J0IHtpc0Fycm93VmVjdG9yfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFjY2Vzc29ycyhwcm9wczogUmVjb3JkPHN0cmluZywgYW55PiwgdGFibGU6IGFycm93LlRhYmxlKTogdm9pZCB7XG4gIGNvbnN0IHZlY3RvckFjY2Vzc29yczogYXJyb3cuVmVjdG9yW10gPSBbXTtcbiAgY29uc3QgY29sb3JWZWN0b3JBY2Nlc3NvcnM6IGFycm93LlZlY3RvcltdID0gW107XG4gIGZvciAoY29uc3QgW2FjY2Vzc29yTmFtZSwgYWNjZXNzb3JWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgLy8gSXMgaXQgYW4gYWNjZXNzb3JcbiAgICBpZiAoYWNjZXNzb3JOYW1lLnN0YXJ0c1dpdGgoJ2dldCcpKSB7XG4gICAgICAvLyBJcyBpdCBhIHZlY3RvciBhY2Nlc3NvclxuICAgICAgaWYgKGlzQXJyb3dWZWN0b3IoYWNjZXNzb3JWYWx1ZSkpIHtcbiAgICAgICAgdmVjdG9yQWNjZXNzb3JzLnB1c2goYWNjZXNzb3JWYWx1ZSk7XG5cbiAgICAgICAgLy8gSXMgaXQgYSBjb2xvciB2ZWN0b3IgYWNjZXNzb3JcbiAgICAgICAgaWYgKGFjY2Vzc29yTmFtZS5lbmRzV2l0aCgnQ29sb3InKSkge1xuICAgICAgICAgIGNvbG9yVmVjdG9yQWNjZXNzb3JzLnB1c2goYWNjZXNzb3JWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVZlY3RvckFjY2Vzc29ycyh0YWJsZSwgdmVjdG9yQWNjZXNzb3JzKTtcbiAgZm9yIChjb25zdCBjb2xvclZlY3RvckFjY2Vzc29yIG9mIGNvbG9yVmVjdG9yQWNjZXNzb3JzKSB7XG4gICAgdmFsaWRhdGVDb2xvclZlY3Rvcihjb2xvclZlY3RvckFjY2Vzc29yKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3ZpZGUgdmFsaWRhdGlvbiBmb3IgYWNjZXNzb3JzIHByb3ZpZGVkXG4gKlxuICogLSBBc3NlcnQgdGhhdCBhbGwgdmVjdG9ycyBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBjaHVua3MgYXMgdGhlIG1haW4gdGFibGVcbiAqIC0gQXNzZXJ0IHRoYXQgYWxsIGNodW5rcyBpbiBlYWNoIHZlY3RvciBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiByb3dzIGFzIHRoZVxuICogICByZWxldmFudCBiYXRjaCBpbiB0aGUgbWFpbiB0YWJsZS5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVZlY3RvckFjY2Vzc29ycyh0YWJsZTogYXJyb3cuVGFibGUsIHZlY3RvckFjY2Vzc29yczogYXJyb3cuVmVjdG9yW10pIHtcbiAgLy8gQ2hlY2sgdGhlIHNhbWUgbnVtYmVyIG9mIGNodW5rcyBhcyB0aGUgdGFibGUncyBiYXRjaGVzXG4gIGZvciAoY29uc3QgdmVjdG9yQWNjZXNzb3Igb2YgdmVjdG9yQWNjZXNzb3JzKSB7XG4gICAgYXNzZXJ0KHRhYmxlLmJhdGNoZXMubGVuZ3RoID09PSB2ZWN0b3JBY2Nlc3Nvci5kYXRhLmxlbmd0aCk7XG4gIH1cblxuICAvLyBDaGVjayB0aGF0IGVhY2ggdGFibGUgYmF0Y2gvdmVjdG9yIGRhdGEgaGFzIHRoZSBzYW1lIG51bWJlciBvZiByb3dzXG4gIGZvciAoY29uc3QgdmVjdG9yQWNjZXNzb3Igb2YgdmVjdG9yQWNjZXNzb3JzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJsZS5iYXRjaGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhc3NlcnQodGFibGUuYmF0Y2hlc1tpXS5udW1Sb3dzID09PSB2ZWN0b3JBY2Nlc3Nvci5kYXRhW2ldLmxlbmd0aCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvbG9yVmVjdG9yKHZlY3RvcjogYXJyb3cuVmVjdG9yKSB7XG4gIC8vIEFzc2VydCB0aGUgY29sb3IgdmVjdG9yIGlzIGEgRml4ZWRTaXplTGlzdFxuICBhc3NlcnQoYXJyb3cuRGF0YVR5cGUuaXNGaXhlZFNpemVMaXN0KHZlY3Rvci50eXBlKSk7XG5cbiAgLy8gQXNzZXJ0IGl0IGhhcyAzIG9yIDQgdmFsdWVzXG4gIGFzc2VydCh2ZWN0b3IudHlwZS5saXN0U2l6ZSA9PT0gMyB8fCB2ZWN0b3IudHlwZS5saXN0U2l6ZSA9PT0gNCk7XG5cbiAgLy8gQXNzZXJ0IHRoZSBjaGlsZCB0eXBlIGlzIGFuIGludGVnZXJcbiAgYXNzZXJ0KGFycm93LkRhdGFUeXBlLmlzSW50KHZlY3Rvci50eXBlLmNoaWxkcmVuWzBdKSk7XG5cbiAgLy8gQXNzZXJ0IHRoZSBjaGlsZCB0eXBlIGlzIGEgVWludDhcbiAgLy8gUHJvcGVydHkgJ3R5cGUnIGRvZXMgbm90IGV4aXN0IG9uIHR5cGUgJ0ludF88SW50cz4nLiBEaWQgeW91IG1lYW4gJ1RUeXBlJz9cbiAgYXNzZXJ0KHZlY3Rvci50eXBlLmNoaWxkcmVuWzBdLnR5cGUuYml0V2lkdGggPT09IDgpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7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QUFPLENBQUMxQyxNQUFNLEtBQUt3QyxjQUFjLENBQUNHLElBQUksQ0FBQzNDLE1BQU0sQ0FBQztJQUM3RDs7SUFFQTtFQUFBLFNBQUE0QyxHQUFBO0lBQUFOLFNBQUEsQ0FBQS9ELENBQUEsQ0FBQXFFLEdBQUE7RUFBQTtJQUFBTixTQUFBLENBQUFoQyxDQUFBO0VBQUE7RUFBQSxJQUFBdUMsVUFBQSxHQUFBbkQsMEJBQUEsQ0FDNkIwQixlQUFlO0lBQUEwQixNQUFBO0VBQUE7SUFBNUMsS0FBQUQsVUFBQSxDQUFBMUMsQ0FBQSxNQUFBMkMsTUFBQSxHQUFBRCxVQUFBLENBQUE5RCxDQUFBLElBQUFxQixJQUFBLEdBQThDO01BQUEsSUFBbkNvQyxlQUFjLEdBQUFNLE1BQUEsQ0FBQXpDLEtBQUE7TUFDdkIsS0FBSyxJQUFJYixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcyQixLQUFLLENBQUN1QixPQUFPLENBQUMxQyxNQUFNLEVBQUVSLENBQUMsRUFBRSxFQUFFO1FBQzdDLElBQUFpRCxhQUFNLEVBQUN0QixLQUFLLENBQUN1QixPQUFPLENBQUNsRCxDQUFDLENBQUMsQ0FBQ3VELE9BQU8sS0FBS1AsZUFBYyxDQUFDRyxJQUFJLENBQUNuRCxDQUFDLENBQUMsQ0FBQ1EsTUFBTSxDQUFDO01BQ3BFO0lBQ0Y7RUFBQyxTQUFBNEMsR0FBQTtJQUFBQyxVQUFBLENBQUF0RSxDQUFBLENBQUFxRSxHQUFBO0VBQUE7SUFBQUMsVUFBQSxDQUFBdkMsQ0FBQTtFQUFBO0FBQ0g7QUFFTyxTQUFTK0IsbUJBQW1CQSxDQUFDVyxNQUFvQixFQUFFO0VBQ3hEO0VBQ0EsSUFBQVAsYUFBTSxFQUFDckUsS0FBSyxDQUFDNkUsUUFBUSxDQUFDQyxlQUFlLENBQUNGLE1BQU0sQ0FBQ0csSUFBSSxDQUFDLENBQUM7O0VBRW5EO0VBQ0EsSUFBQVYsYUFBTSxFQUFDTyxNQUFNLENBQUNHLElBQUksQ0FBQ0MsUUFBUSxLQUFLLENBQUMsSUFBSUosTUFBTSxDQUFDRyxJQUFJLENBQUNDLFFBQVEsS0FBSyxDQUFDLENBQUM7O0VBRWhFO0VBQ0EsSUFBQVgsYUFBTSxFQUFDckUsS0FBSyxDQUFDNkUsUUFBUSxDQUFDSSxLQUFLLENBQUNMLE1BQU0sQ0FBQ0csSUFBSSxDQUFDRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7RUFFckQ7RUFDQTtFQUNBLElBQUFiLGFBQU0sRUFBQ08sTUFBTSxDQUFDRyxJQUFJLENBQUNHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsSUFBSSxDQUFDSSxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQ3JEIiwiaWdub3JlTGlzdCI6W119
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/deckgl-arrow-layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.2",
4
+ "version": "3.2.3",
5
5
  "description": "Deck.gl layers with GeoArrow and GeoParquet support",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -31,7 +31,8 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@geoarrow/geoarrow-js": "^0.3.0",
34
- "@kepler.gl/constants": "^3.2.2",
34
+ "@kepler.gl/constants": "^3.2.3",
35
+ "@kepler.gl/utils": "^3.2.3",
35
36
  "@math.gl/core": "^4.0.0",
36
37
  "@math.gl/polygon": "^4.0.0",
37
38
  "@math.gl/types": "^4.0.0",
@@ -9,6 +9,7 @@ import {assert} from '@deck.gl/core/typed';
9
9
  import * as arrow from 'apache-arrow';
10
10
  import * as ga from '@geoarrow/geoarrow-js';
11
11
  import {AccessorContext, AccessorFunction, _InternalAccessorContext} from '../types';
12
+ import {isArrowFixedSizeList, isArrowStruct, isArrowVector} from '@kepler.gl/utils';
12
13
 
13
14
  export type TypedArray =
14
15
  | Uint8Array
@@ -45,14 +46,14 @@ function isDataInterleavedCoords(
45
46
  data: arrow.Data
46
47
  ): data is arrow.Data<arrow.FixedSizeList<arrow.Float64>> {
47
48
  // TODO: also check 2 or 3d? Float64?
48
- return data.type instanceof arrow.FixedSizeList;
49
+ return isArrowFixedSizeList(data.type);
49
50
  }
50
51
 
51
52
  function isDataSeparatedCoords(
52
53
  data: arrow.Data
53
54
  ): data is arrow.Data<arrow.Struct<{x: arrow.Float64; y: arrow.Float64}>> {
54
55
  // TODO: also check child names? Float64?
55
- return data.type instanceof arrow.Struct;
56
+ return isArrowStruct(data.type);
56
57
  }
57
58
 
58
59
  /**
@@ -162,7 +163,7 @@ export function assignAccessor(args: AssignAccessorProps) {
162
163
  return;
163
164
  }
164
165
 
165
- if (propInput instanceof arrow.Vector) {
166
+ if (isArrowVector(propInput)) {
166
167
  const columnData = propInput.data[chunkIdx];
167
168
 
168
169
  if (arrow.DataType.isFixedSizeList(columnData)) {
@@ -6,6 +6,7 @@
6
6
  // Copyright (c) vis.gl contributors
7
7
 
8
8
  import {assert} from '@deck.gl/core/typed';
9
+ import {isArrowVector} from '@kepler.gl/utils';
9
10
  import * as arrow from 'apache-arrow';
10
11
 
11
12
  export function validateAccessors(props: Record<string, any>, table: arrow.Table): void {
@@ -15,7 +16,7 @@ export function validateAccessors(props: Record<string, any>, table: arrow.Table
15
16
  // Is it an accessor
16
17
  if (accessorName.startsWith('get')) {
17
18
  // Is it a vector accessor
18
- if (accessorValue instanceof arrow.Vector) {
19
+ if (isArrowVector(accessorValue)) {
19
20
  vectorAccessors.push(accessorValue);
20
21
 
21
22
  // Is it a color vector accessor
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/deckgl-layers",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.2",
4
+ "version": "3.2.3",
5
5
  "description": "kepler.gl constants used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -35,9 +35,9 @@
35
35
  "@deck.gl/core": "^8.9.27",
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
- "@kepler.gl/constants": "3.2.2",
39
- "@kepler.gl/types": "3.2.2",
40
- "@kepler.gl/utils": "3.2.2",
38
+ "@kepler.gl/constants": "3.2.3",
39
+ "@kepler.gl/types": "3.2.3",
40
+ "@kepler.gl/utils": "3.2.3",
41
41
  "@loaders.gl/wms": "4.3.2",
42
42
  "@luma.gl/constants": "^8.5.20",
43
43
  "@luma.gl/core": "^8.5.20",
@@ -160,7 +160,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
160
160
  _context3.prev = 2;
161
161
  // 1) data.rows contains an arrow table created by Add to Map data from DuckDb query.
162
162
  // 2) arrow table is in cols & fields when a file is dragged & dropped into Add Data To Map dialog.
163
- arrowTable = data.rows instanceof arrow.Table ? data.rows : (0, _duckdbTableUtils2.restoreArrowTable)(data.cols || [], data.fields, data.arrowSchema); // remove unsupported extensions from an arrow table that throw exceptions in DuckDB.
163
+ arrowTable = (0, _utils.isArrowTable)(data.rows) ? data.rows : (0, _duckdbTableUtils2.restoreArrowTable)(data.cols || [], data.fields, data.arrowSchema); // remove unsupported extensions from an arrow table that throw exceptions in DuckDB.
164
164
  adjustedMetadata = (0, _duckdbTableUtils2.removeUnsupportedExtensions)(arrowTable);
165
165
  setupSql = "\n install spatial;\n load spatial;\n ";
166
166
  _context3.next = 8;
@@ -241,7 +241,7 @@ var KeplerGlDuckDbTable = exports.KeplerGlDuckDbTable = /*#__PURE__*/function (_
241
241
  format = _constants.DATASET_FORMATS.row;
242
242
  } else if (((_data$rows3 = data.rows) === null || _data$rows3 === void 0 ? void 0 : _data$rows3.type) === 'FeatureCollection') {
243
243
  format = _constants.DATASET_FORMATS.geojson;
244
- } else if (((_data$cols = data.cols) === null || _data$cols === void 0 ? void 0 : _data$cols[0]) instanceof arrow.Vector) {
244
+ } else if ((0, _utils.isArrowVector)((_data$cols = data.cols) === null || _data$cols === void 0 ? void 0 : _data$cols[0])) {
245
245
  format = _constants.DATASET_FORMATS.arrow;
246
246
  }
247
247
  }
@@ -477,4 +477,4 @@ var restoreGeoarrowMetadata = exports.restoreGeoarrowMetadata = function restore
477
477
  }
478
478
  });
479
479
  };
480
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlRhYmxlIiwicmVzdG9yZUFycm93VGFibGUiLCJjb2xzIiwiYXJyb3dTY2hlbWEiLCJyZW1vdmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJpbnNlcnRBcnJvd1RhYmxlIiwicmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyIsInVzZU5ld0ZpZWxkcyIsImltcG9ydEFycm93RGF0YSIsIl94MyIsIl9jcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX2NhbGxlZTQiLCJ0YWJsZU5hbWUiLCJmb3JtYXQiLCJfZGF0YSRyb3dzIiwiX2RhdGEkcm93czIiLCJfZGF0YSRyb3dzMyIsIl9kYXRhJGNvbHMiLCJpbXBvcnREZXRhaWxzIiwiX2RhdGEkZmllbGRzIiwiX3JlZjQiLCJfcmVmNCRnZW9hcnJvd01ldGFkYXQiLCJfcmVmNCR1c2VOZXdGaWVsZHMiLCJkdWNrRGJDb2x1bW5zIiwidGFibGVEdWNrREJUeXBlcyIsImFkanVzdGVkUXVlcnkiLCJhcnJvd1Jlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZGF0YWJhc2UiLCJzZW50IiwiY29ubmVjdCIsImRyb3BUYWJsZUlmRXhpc3RzIiwibWV0YWRhdGEiLCJfdHlwZW9mMiIsIkRBVEFTRVRfRk9STUFUUyIsInR5cGUiLCJnZW9qc29uIiwiVmVjdG9yIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImNhc3REdWNrREJUeXBlc0ZvcktlcGxlciIsInJlc3RvcmVHZW9hcnJvd01ldGFkYXRhIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJudW1Db2xzIiwiZ2V0Q2hpbGRBdCIsImNvbCIsImNsb3NlIiwiY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl94NCIsIl9pbXBvcnREYXRhIiwiX2NhbGxlZTUiLCJfcmVmNSIsIl95aWVsZCR0aGlzJGNyZWF0ZVRhYiIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJpbXBvcnREYXRhIiwiX3g1IiwiX3VwZGF0ZSIsIl9jYWxsZWU2IiwiX3lpZWxkJHRoaXMkY3JlYXRlVGFiMiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInVwZGF0ZSIsIl94NiIsIktlcGxlclRhYmxlIiwiaW5wdXRGb3JtYXQiLCJwcm9jZXNzb3IiLCJpc0Fycm93RGF0YSIsInByb2Nlc3NBcnJvd0JhdGNoZXMiLCJrZXBsZXJnbCIsImlzS2VwbGVyR2xNYXAiLCJwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiIiwiaXNSb3dPYmplY3QiLCJwcm9jZXNzQ3N2Um93T2JqZWN0IiwiaXNHZW9Kc29uIiwicHJvY2Vzc0dlb2pzb24iLCJkIiwic2NoZW1hIiwiZiIsIkRhdGFUeXBlIiwiaXNCaW5hcnkiLCJHRU9BUlJPV19NRVRBREFUQV9LRVkiLCJpc0dlb0Fycm93UG9pbnQiLCJQT0lOVCIsImlzR2VvQXJyb3dMaW5lU3RyaW5nIiwiTElORVNUUklORyIsImlzR2VvQXJyb3dQb2x5Z29uIiwiUE9MWUdPTiIsImlzR2VvQXJyb3dNdWx0aVBvaW50IiwiTVVMVElQT0lOVCIsImlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmciLCJNVUxUSUxJTkVTVFJJTkciLCJpc0dlb0Fycm93TXVsdGlQb2x5Z29uIiwiTVVMVElQT0xZR09OIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RhYmxlL2R1Y2tkYi10YWJsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuXG5pbXBvcnQge1xuICBEYXRhc2V0VHlwZSxcbiAgREFUQVNFVF9GT1JNQVRTLFxuICBHRU9BUlJPV19FWFRFTlNJT05TLFxuICBHRU9BUlJPV19NRVRBREFUQV9LRVlcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgYXJyb3dTY2hlbWFUb0ZpZWxkcyxcbiAgaXNBcnJvd0RhdGEsXG4gIGlzR2VvSnNvbixcbiAgaXNLZXBsZXJHbE1hcCxcbiAgaXNSb3dPYmplY3QsXG4gIHByb2Nlc3NBcnJvd0JhdGNoZXNcbn0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2dldEFwcGxpY2F0aW9uQ29uZmlnLCBEYXRhYmFzZUFkYXB0ZXIsIERhdGFiYXNlQ29ubmVjdGlvbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7XG4gIHByb2Nlc3NDc3ZSb3dPYmplY3QsXG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiLFxuICBQcm9jZXNzb3JSZXN1bHRcbn0gZnJvbSAnLi4vcHJvY2Vzc29ycy9kYXRhLXByb2Nlc3Nvcic7XG5cbmltcG9ydCB7XG4gIGlzR2VvQXJyb3dQb2ludCxcbiAgaXNHZW9BcnJvd0xpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dQb2x5Z29uLFxuICBpc0dlb0Fycm93TXVsdGlQb2ludCxcbiAgaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyxcbiAgaXNHZW9BcnJvd011bHRpUG9seWdvblxufSBmcm9tICcuL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmltcG9ydCB7XG4gIGNhc3REdWNrREJUeXBlc0ZvcktlcGxlcixcbiAgZHJvcFRhYmxlSWZFeGlzdHMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlc01hcCxcbiAgcmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zLFxuICByZXN0b3JlQXJyb3dUYWJsZSxcbiAgcmVzdG9yZVVuc3VwcG9ydGVkRXh0ZW5zaW9uc1xufSBmcm9tICcuLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG4vLyBUT0RPIHVzZSBmaWxlcyBmcm9tIGRpc2sgb3IgdXJsIGRpcmVjdGx5LCB3aXRob3V0IHBhcnNpbmcgYnkgbG9hZGVycyBhbmQgdGhlbiBpbmdlY3Rpb24gaW50byBEZWNrRGJcblxuLyoqXG4gKiBEZWZhdWx0IER1Y2tEYiBnZW9tZXRyeSBjb2x1bW5zIGNyZWF0ZWQgYnkgU1RfUkVBRFxuICovXG5jb25zdCBEVUNLREJfR0VPTV9DT0xVTU4gPSAnZ2VvbSc7XG5jb25zdCBEVUNLREJfV0tCX0NPTFVNTiA9ICd3a2JfZ2VvbWV0cnknO1xuXG4vKipcbiBEZWZhdWx0IGNvbHVtbiBuYW1lIGZvciBwcm9jZXNzZWQgZ2VvanNvbiBpbiBLZXBsZXIuXG4gVXNlIHRoaXMgbmFtZSB0byByZW5hbWUgZGVmYXVsdCAnZ2VvbScgY29sdW1uIGZyb20gRHVja0RiXG4gaW4gb3JkZXIgdG8gc3VwcG9ydCBLZXBsZXIgbWFwcyBzYXZlZCBiZWZvcmUgaW50cm9kdWN0aW9uIG9mIER1Y2tEYiBwbHVnaW4uXG4gKi9cbmNvbnN0IEtFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU4gPSAnX2dlb2pzb24nO1xuXG4vKipcbiAqIE5hbWVzIG9mIGNvbHVtbnMgdGhhdCBtb3N0IGxpa2VseSBjb250YWluIGJpbmFyeSB3a2IgZ2VvbWV0cnlcbiAqL1xuY29uc3QgU1VHR0VTVEVEX0dFT01fQ09MVU1OUyA9IHtcbiAgW0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgW0RVQ0tEQl9HRU9NX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCLFxuICBnZW9tZXRyeTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0Jcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Byb3BzID0ge1xuICBkYXRhOiBQcm9jZXNzb3JSZXN1bHQgJiB7YXJyb3dTY2hlbWE6IGFycm93LlNjaGVtYX07XG4gIGRiOiBEYXRhYmFzZUFkYXB0ZXI7XG4gIGM6IERhdGFiYXNlQ29ubmVjdGlvbjtcbn07XG5cbnR5cGUgSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCA9IHtcbiAgLy8gRHVja0RiIGRyb3BzIGdlb2Fycm93IG1ldGFkYXRhLCBzbyB0cnkgdG8gcHJlc2VydmUgYW5kIHRoZW4gcmVzdG9yZSB0aGUgZXh0ZW5zaW9uIG5hbWVcbiAgZ2VvYXJyb3dNZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIFVzZSBmaWVsZHMgZnJvbSBhcnJvdyB0YWJsZSBldmVuIGlmIGZpZWxkcyBhcmUgcHJvdmlkZWRcbiAgdXNlTmV3RmllbGRzPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjbGFzcyBLZXBsZXJHbER1Y2tEYlRhYmxlIGV4dGVuZHMgS2VwbGVyVGFibGUge1xuICBkZWNsYXJlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIGRlY2xhcmUgbGFiZWw6IHN0cmluZztcbiAgZGVjbGFyZSB0eXBlOiBzdHJpbmc7XG4gIGRlY2xhcmUgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cblxuICBhc3luYyBpbXBvcnRSb3dEYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7ZmllbGRzLCByb3dzfSA9IGRhdGE7XG5cbiAgICAgIC8vIERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCBsb2FkcyBkYXRhIGFzIGFueVtdW10gaW5zdGVhZCBvZiBbe31dXG4gICAgICAvLyBUT0RPIHBvdGVudGlhbCBtZW1vcnkgdXNhZ2UgZXhwbG9zaW9uOiBvcmlnaW5hbCBkYXRhLCBuZXcgb2JqZWN0IGFuZCB0aGVuIER1Y2tEYiB0YWJsZVxuICAgICAgY29uc3Qgcm93c0ZvckRiID0gQXJyYXkuaXNBcnJheShyb3dzWzBdKVxuICAgICAgICA/IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdSb3cgPSB7fTtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgbmV3Um93W2ZpZWxkc1tpbmRleF0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1JvdztcbiAgICAgICAgICB9KVxuICAgICAgICA6IHJvd3M7XG5cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZVRleHQodGhpcy5pZCwgSlNPTi5zdHJpbmdpZnkocm93c0ZvckRiKSk7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBmaWVsZHMucmVkdWNlKChhY2MsIGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gZXh0ZW5kIGZpZWxkcyB0byBjb250YWluIGR1Y2tEQkNvbHVtblR5cGVcbiAgICAgICAgcmV0dXJuIGAke2FjY30ke2luZGV4ID4gMCA/ICcsJyA6ICcnfSAnJHtmaWVsZC5uYW1lfSc6ICcke2ZpZWxkLmR1Y2tEQkNvbHVtblR5cGV9J2A7XG4gICAgICB9LCAnJyk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTXG4gICAgICAgIFNFTEVDVCAqXG4gICAgICAgIEZST00gcmVhZF9qc29uKCcke3RoaXMuaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9IHske2NvbHVtbnN9fSk7XG4gICAgICBgO1xuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdpbXBvcnRSb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0R2VvSnNvbkRhdGEoe2RhdGEsIGRiLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtyb3dzfSA9IGRhdGE7XG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3MpKTtcblxuICAgICAgY29uc3QgY3JlYXRlVGFibGVTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgICBDUkVBVEUgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIEFTIFxuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIFNUX1JFQUQoJyR7dGhpcy5pZH0nLCBrZWVwX3drYiA9IFRSVUUpO1xuICAgICAgICBBTFRFUiBUQUJMRSAnJHt0aGlzLmxhYmVsfScgUkVOQU1FICcke0RVQ0tEQl9XS0JfQ09MVU1OfScgVE8gJyR7S0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTn0nO1xuICAgICAgYDtcblxuICAgICAgYXdhaXQgYy5xdWVyeShjcmVhdGVUYWJsZVNxbCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ltcG9ydEdlb0pzb25EYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIF9nZW9qc29uIGNvbHVtbiBpcyBjcmVhdGVkIGZyb20gZ2VvbWV0cnkgd2l0aCBrZWVwX3drYiBmbGFnIGFuZCBjb250YWlucyB2YWxpZCBXS0IgZGF0YS5cbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHtbS0VQTEVSX0dFT01fRlJPTV9HRU9KU09OX0NPTFVNTl06IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCfVxuICAgIH07XG4gIH1cblxuICBhc3luYyBpbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPEltcG9ydERhdGFUb0R1Y2tSZXN1bHQ+IHtcbiAgICBsZXQgYWRqdXN0ZWRNZXRhZGF0YSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyAxKSBkYXRhLnJvd3MgY29udGFpbnMgYW4gYXJyb3cgdGFibGUgY3JlYXRlZCBieSBBZGQgdG8gTWFwIGRhdGEgZnJvbSBEdWNrRGIgcXVlcnkuXG4gICAgICAvLyAyKSBhcnJvdyB0YWJsZSBpcyBpbiBjb2xzICYgZmllbGRzIHdoZW4gYSBmaWxlIGlzIGRyYWdnZWQgJiBkcm9wcGVkIGludG8gQWRkIERhdGEgVG8gTWFwIGRpYWxvZy5cbiAgICAgIGNvbnN0IGFycm93VGFibGUgPVxuICAgICAgICBkYXRhLnJvd3MgaW5zdGFuY2VvZiBhcnJvdy5UYWJsZVxuICAgICAgICAgID8gZGF0YS5yb3dzXG4gICAgICAgICAgOiByZXN0b3JlQXJyb3dUYWJsZShkYXRhLmNvbHMgfHwgW10sIGRhdGEuZmllbGRzLCBkYXRhLmFycm93U2NoZW1hKTtcblxuICAgICAgLy8gcmVtb3ZlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgZnJvbSBhbiBhcnJvdyB0YWJsZSB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RCLlxuICAgICAgYWRqdXN0ZWRNZXRhZGF0YSA9IHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlKTtcblxuICAgICAgY29uc3Qgc2V0dXBTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoc2V0dXBTcWwpO1xuICAgICAgYXdhaXQgYy5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHtuYW1lOiB0aGlzLmxhYmVsfSk7XG5cbiAgICAgIC8vIHJlc3RvcmUgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9ucyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RiXG4gICAgICByZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zKGFycm93VGFibGUsIGFkanVzdGVkTWV0YWRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBLbm93biBpc3N1ZXM6XG4gICAgICAvLyAxKSBBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93LnBvaW50IGFuZCBmb3JtYXQ6ICt3OjIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gRHVja0RCLlxuICAgICAgY29uc29sZS5lcnJvcignaW1wb3J0QXJyb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHsuLi5TVUdHRVNURURfR0VPTV9DT0xVTU5TLCAuLi5hZGp1c3RlZE1ldGFkYXRhfSxcbiAgICAgIC8vIHVzZSBmaWVsZHMgZ2VuZXJhdGVkIGZyb20gdGhlIGNyZWF0ZWQgYXJyb3cgdGFibGVcbiAgICAgIHVzZU5ld0ZpZWxkczogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhYmxlIGZyb20gZGF0YSwgcmV0dXJucyBhbiBhcnJvdyB0YWJsZSB3aXRoIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtmaWVsZHM6IEZpZWxkW10sIGNvbHM6IGFueVtdfT59XG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTogUHJvbWlzZTx7ZmllbGRzOiBhbnlbXTsgY29sczogYXJyb3cuVmVjdG9yW119PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRhdGFiYXNlO1xuICAgIGlmICghZGIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgICAgIHJldHVybiB7ZmllbGRzOiBbXSwgY29sczogW119O1xuICAgIH1cbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5sYWJlbDtcbiAgICBhd2FpdCBkcm9wVGFibGVJZkV4aXN0cyhjLCB0YWJsZU5hbWUpO1xuXG4gICAgbGV0IGZvcm1hdCA9IHRoaXMubWV0YWRhdGEuZm9ybWF0O1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICAvLyBmb3JtYXQgaXMgbWlzc2luZyB3aGVuIHdlIGxvYWQgS2VwbGVyLmdsIGV4YW1wbGVzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnJvd3M/LlswXSkgfHwgdHlwZW9mIGRhdGEucm93cz8uWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgfSBlbHNlIGlmIChkYXRhLnJvd3M/LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuY29scz8uWzBdIGluc3RhbmNlb2YgYXJyb3cuVmVjdG9yKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW1wb3J0RGV0YWlsczogSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMucm93KSB7XG4gICAgICBhd2FpdCB0aGlzLmltcG9ydFJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5nZW9qc29uKSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93KSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VucmVjb2duaXplZCBmb3JtYXQnLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGxldCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgICBsZXQgY29sczogYXJyb3cuVmVjdG9yW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7Z2VvYXJyb3dNZXRhZGF0YSA9IHt9LCB1c2VOZXdGaWVsZHMgPSBmYWxzZX0gPSBpbXBvcnREZXRhaWxzIHx8IHt9O1xuXG4gICAgICBjb25zdCBkdWNrRGJDb2x1bW5zID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoYywgdGFibGVOYW1lKTtcbiAgICAgIGNvbnN0IHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFkanVzdGVkUXVlcnkgPSBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIodGFibGVOYW1lLCBkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgYy5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgLy8gVE9ETyBpZiBmb3JtYXQgaXMgYW4gYXJyb3cgdGFibGUgdGhlbiBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgb25lLCBpbnN0ZWFkIG9mIHRoZSBuZXcgdGFibGUgZnJvbSB0aGUgcXVlcnk/XG5cbiAgICAgIHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhKGFycm93UmVzdWx0LCBnZW9hcnJvd01ldGFkYXRhKTtcblxuICAgICAgZmllbGRzID0gdXNlTmV3RmllbGRzXG4gICAgICAgID8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhhcnJvd1Jlc3VsdCwgdGFibGVEdWNrREJUeXBlcylcbiAgICAgICAgOiBkYXRhLmZpZWxkcyA/PyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKTtcbiAgICAgIGNvbHMgPSBbLi4uQXJyYXkoYXJyb3dSZXN1bHQubnVtQ29scykua2V5cygpXVxuICAgICAgICAubWFwKGkgPT4gYXJyb3dSZXN1bHQuZ2V0Q2hpbGRBdChpKSlcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sKSBhcyBhcnJvdy5WZWN0b3JbXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHVja0RCIHRhYmxlOiBjcmVhdGVUYWJsZUFuZEdldEFycm93JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxrQkFBQSxHQUFBUCxPQUFBO0FBUXFDLFNBQUFRLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxD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
480
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJfcHJvY2Vzc29ycyIsIl90YWJsZSIsIl91dGlscyIsIl9kYXRhUHJvY2Vzc29yIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJfZHVja2RiVGFibGVVdGlsczIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwiRFVDS0RCX0dFT01fQ09MVU1OIiwiRFVDS0RCX1dLQl9DT0xVTU4iLCJLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OIiwiU1VHR0VTVEVEX0dFT01fQ09MVU1OUyIsIkdFT0FSUk9XX0VYVEVOU0lPTlMiLCJXS0IiLCJLZXBsZXJHbER1Y2tEYlRhYmxlIiwiZXhwb3J0cyIsIl9LZXBsZXJUYWJsZSIsInByb3BzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJfaW1wb3J0Um93RGF0YSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZiIsImRhdGEiLCJkYiIsImMiLCJmaWVsZHMiLCJyb3dzIiwicm93c0ZvckRiIiwiY29sdW1ucyIsImNyZWF0ZVRhYmxlU3FsIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJvdyIsIm5ld1JvdyIsImluZGV4IiwibmFtZSIsInJlZ2lzdGVyRmlsZVRleHQiLCJpZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZWR1Y2UiLCJhY2MiLCJmaWVsZCIsImNvbmNhdCIsImR1Y2tEQkNvbHVtblR5cGUiLCJsYWJlbCIsInF1ZXJ5IiwidDAiLCJjb25zb2xlIiwibG9nIiwic3RvcCIsImltcG9ydFJvd0RhdGEiLCJfeCIsIl9pbXBvcnRHZW9Kc29uRGF0YSIsIl9jYWxsZWUyIiwiX3JlZjIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJlcnJvciIsImFicnVwdCIsImdlb2Fycm93TWV0YWRhdGEiLCJpbXBvcnRHZW9Kc29uRGF0YSIsIl94MiIsIl9pbXBvcnRBcnJvd0RhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwiYWRqdXN0ZWRNZXRhZGF0YSIsImFycm93VGFibGUiLCJzZXR1cFNxbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImlzQXJyb3dUYWJsZSIsInJlc3RvcmVBcnJvd1RhYmxlIiwiY29scyIsImFycm93U2NoZW1hIiwicmVtb3ZlVW5zdXBwb3J0ZWRFeHRlbnNpb25zIiwiaW5zZXJ0QXJyb3dUYWJsZSIsInJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnMiLCJ1c2VOZXdGaWVsZHMiLCJpbXBvcnRBcnJvd0RhdGEiLCJfeDMiLCJfY3JlYXRlVGFibGVBbmRHZXRBcnJvdyIsIl9jYWxsZWU0IiwidGFibGVOYW1lIiwiZm9ybWF0IiwiX2RhdGEkcm93cyIsIl9kYXRhJHJvd3MyIiwiX2RhdGEkcm93czMiLCJfZGF0YSRjb2xzIiwiaW1wb3J0RGV0YWlscyIsIl9kYXRhJGZpZWxkcyIsIl9yZWY0IiwiX3JlZjQkZ2VvYXJyb3dNZXRhZGF0IiwiX3JlZjQkdXNlTmV3RmllbGRzIiwiZHVja0RiQ29sdW1ucyIsInRhYmxlRHVja0RCVHlwZXMiLCJhZGp1c3RlZFF1ZXJ5IiwiYXJyb3dSZXN1bHQiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImRhdGFiYXNlIiwic2VudCIsImNvbm5lY3QiLCJkcm9wVGFibGVJZkV4aXN0cyIsIm1ldGFkYXRhIiwiX3R5cGVvZjIiLCJEQVRBU0VUX0ZPUk1BVFMiLCJ0eXBlIiwiZ2VvanNvbiIsImlzQXJyb3dWZWN0b3IiLCJnZXREdWNrREJDb2x1bW5UeXBlcyIsImdldER1Y2tEQkNvbHVtblR5cGVzTWFwIiwiY2FzdER1Y2tEQlR5cGVzRm9yS2VwbGVyIiwicmVzdG9yZUdlb2Fycm93TWV0YWRhdGEiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm51bUNvbHMiLCJnZXRDaGlsZEF0IiwiY29sIiwiY2xvc2UiLCJjcmVhdGVUYWJsZUFuZEdldEFycm93IiwiX3g0IiwiX2ltcG9ydERhdGEiLCJfY2FsbGVlNSIsIl9yZWY1IiwiX3lpZWxkJHRoaXMkY3JlYXRlVGFiIiwiX2NhbGxlZTUkIiwiX2NvbnRleHQ1IiwiRGF0YXNldFR5cGUiLCJWRUNUT1JfVElMRSIsImltcG9ydERhdGEiLCJfeDUiLCJfdXBkYXRlIiwiX2NhbGxlZTYiLCJfeWllbGQkdGhpcyRjcmVhdGVUYWIyIiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwidXBkYXRlIiwiX3g2IiwiS2VwbGVyVGFibGUiLCJpbnB1dEZvcm1hdCIsInByb2Nlc3NvciIsImlzQXJyb3dEYXRhIiwicHJvY2Vzc0Fycm93QmF0Y2hlcyIsImtlcGxlcmdsIiwiaXNLZXBsZXJHbE1hcCIsInByb2Nlc3NLZXBsZXJnbEpTT05mb3JEdWNrRGIiLCJpc1Jvd09iamVjdCIsInByb2Nlc3NDc3ZSb3dPYmplY3QiLCJpc0dlb0pzb24iLCJwcm9jZXNzR2VvanNvbiIsImQiLCJzY2hlbWEiLCJmIiwiRGF0YVR5cGUiLCJpc0JpbmFyeSIsIkdFT0FSUk9XX01FVEFEQVRBX0tFWSIsImlzR2VvQXJyb3dQb2ludCIsIlBPSU5UIiwiaXNHZW9BcnJvd0xpbmVTdHJpbmciLCJMSU5FU1RSSU5HIiwiaXNHZW9BcnJvd1BvbHlnb24iLCJQT0xZR09OIiwiaXNHZW9BcnJvd011bHRpUG9pbnQiLCJNVUxUSVBPSU5UIiwiaXNHZW9BcnJvd011bHRpTGluZVN0cmluZyIsIk1VTFRJTElORVNUUklORyIsImlzR2VvQXJyb3dNdWx0aVBvbHlnb24iLCJNVUxUSVBPTFlHT04iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFibGUvZHVja2RiLXRhYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCAqIGFzIGFycm93IGZyb20gJ2FwYWNoZS1hcnJvdyc7XG5cbmltcG9ydCB7XG4gIERhdGFzZXRUeXBlLFxuICBEQVRBU0VUX0ZPUk1BVFMsXG4gIEdFT0FSUk9XX0VYVEVOU0lPTlMsXG4gIEdFT0FSUk9XX01FVEFEQVRBX0tFWVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBhcnJvd1NjaGVtYVRvRmllbGRzLFxuICBpc0Fycm93RGF0YSxcbiAgaXNHZW9Kc29uLFxuICBpc0tlcGxlckdsTWFwLFxuICBpc1Jvd09iamVjdCxcbiAgcHJvY2Vzc0Fycm93QmF0Y2hlc1xufSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge0ZpZWxkfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIGdldEFwcGxpY2F0aW9uQ29uZmlnLFxuICBEYXRhYmFzZUFkYXB0ZXIsXG4gIERhdGFiYXNlQ29ubmVjdGlvbixcbiAgaXNBcnJvd1RhYmxlLFxuICBpc0Fycm93VmVjdG9yXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQ3N2Um93T2JqZWN0LFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTmZvckR1Y2tEYixcbiAgUHJvY2Vzc29yUmVzdWx0XG59IGZyb20gJy4uL3Byb2Nlc3NvcnMvZGF0YS1wcm9jZXNzb3InO1xuXG5pbXBvcnQge1xuICBpc0dlb0Fycm93UG9pbnQsXG4gIGlzR2VvQXJyb3dMaW5lU3RyaW5nLFxuICBpc0dlb0Fycm93UG9seWdvbixcbiAgaXNHZW9BcnJvd011bHRpUG9pbnQsXG4gIGlzR2VvQXJyb3dNdWx0aUxpbmVTdHJpbmcsXG4gIGlzR2VvQXJyb3dNdWx0aVBvbHlnb25cbn0gZnJvbSAnLi9kdWNrZGItdGFibGUtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIsXG4gIGRyb3BUYWJsZUlmRXhpc3RzLFxuICBnZXREdWNrREJDb2x1bW5UeXBlcyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAsXG4gIHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyxcbiAgcmVzdG9yZUFycm93VGFibGUsXG4gIHJlc3RvcmVVbnN1cHBvcnRlZEV4dGVuc2lvbnNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuLy8gVE9ETyB1c2UgZmlsZXMgZnJvbSBkaXNrIG9yIHVybCBkaXJlY3RseSwgd2l0aG91dCBwYXJzaW5nIGJ5IGxvYWRlcnMgYW5kIHRoZW4gaW5nZWN0aW9uIGludG8gRGVja0RiXG5cbi8qKlxuICogRGVmYXVsdCBEdWNrRGIgZ2VvbWV0cnkgY29sdW1ucyBjcmVhdGVkIGJ5IFNUX1JFQURcbiAqL1xuY29uc3QgRFVDS0RCX0dFT01fQ09MVU1OID0gJ2dlb20nO1xuY29uc3QgRFVDS0RCX1dLQl9DT0xVTU4gPSAnd2tiX2dlb21ldHJ5JztcblxuLyoqXG4gRGVmYXVsdCBjb2x1bW4gbmFtZSBmb3IgcHJvY2Vzc2VkIGdlb2pzb24gaW4gS2VwbGVyLlxuIFVzZSB0aGlzIG5hbWUgdG8gcmVuYW1lIGRlZmF1bHQgJ2dlb20nIGNvbHVtbiBmcm9tIER1Y2tEYlxuIGluIG9yZGVyIHRvIHN1cHBvcnQgS2VwbGVyIG1hcHMgc2F2ZWQgYmVmb3JlIGludHJvZHVjdGlvbiBvZiBEdWNrRGIgcGx1Z2luLlxuICovXG5jb25zdCBLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OID0gJ19nZW9qc29uJztcblxuLyoqXG4gKiBOYW1lcyBvZiBjb2x1bW5zIHRoYXQgbW9zdCBsaWtlbHkgY29udGFpbiBiaW5hcnkgd2tiIGdlb21ldHJ5XG4gKi9cbmNvbnN0IFNVR0dFU1RFRF9HRU9NX0NPTFVNTlMgPSB7XG4gIFtLRVBMRVJfR0VPTV9GUk9NX0dFT0pTT05fQ09MVU1OXTogR0VPQVJST1dfRVhURU5TSU9OUy5XS0IsXG4gIFtEVUNLREJfR0VPTV9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQixcbiAgZ2VvbWV0cnk6IEdFT0FSUk9XX0VYVEVOU0lPTlMuV0tCXG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tQcm9wcyA9IHtcbiAgZGF0YTogUHJvY2Vzc29yUmVzdWx0ICYge2Fycm93U2NoZW1hOiBhcnJvdy5TY2hlbWF9O1xuICBkYjogRGF0YWJhc2VBZGFwdGVyO1xuICBjOiBEYXRhYmFzZUNvbm5lY3Rpb247XG59O1xuXG50eXBlIEltcG9ydERhdGFUb0R1Y2tSZXN1bHQgPSB7XG4gIC8vIER1Y2tEYiBkcm9wcyBnZW9hcnJvdyBtZXRhZGF0YSwgc28gdHJ5IHRvIHByZXNlcnZlIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGV4dGVuc2lvbiBuYW1lXG4gIGdlb2Fycm93TWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvLyBVc2UgZmllbGRzIGZyb20gYXJyb3cgdGFibGUgZXZlbiBpZiBmaWVsZHMgYXJlIHByb3ZpZGVkXG4gIHVzZU5ld0ZpZWxkcz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgS2VwbGVyR2xEdWNrRGJUYWJsZSBleHRlbmRzIEtlcGxlclRhYmxlIHtcbiAgZGVjbGFyZSByZWFkb25seSBpZDogc3RyaW5nO1xuICBkZWNsYXJlIGxhYmVsOiBzdHJpbmc7XG4gIGRlY2xhcmUgdHlwZTogc3RyaW5nO1xuICBkZWNsYXJlIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0Um93RGF0YSh7ZGF0YSwgZGIsIGN9OiBJbXBvcnREYXRhVG9EdWNrUHJvcHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge2ZpZWxkcywgcm93c30gPSBkYXRhO1xuXG4gICAgICAvLyBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wgbG9hZHMgZGF0YSBhcyBhbnlbXVtdIGluc3RlYWQgb2YgW3t9XVxuICAgICAgLy8gVE9ETyBwb3RlbnRpYWwgbWVtb3J5IHVzYWdlIGV4cGxvc2lvbjogb3JpZ2luYWwgZGF0YSwgbmV3IG9iamVjdCBhbmQgdGhlbiBEdWNrRGIgdGFibGVcbiAgICAgIGNvbnN0IHJvd3NGb3JEYiA9IEFycmF5LmlzQXJyYXkocm93c1swXSlcbiAgICAgICAgPyByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Um93ID0ge307XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIG5ld1Jvd1tmaWVsZHNbaW5kZXhdLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSb3c7XG4gICAgICAgICAgfSlcbiAgICAgICAgOiByb3dzO1xuXG4gICAgICBhd2FpdCBkYi5yZWdpc3RlckZpbGVUZXh0KHRoaXMuaWQsIEpTT04uc3RyaW5naWZ5KHJvd3NGb3JEYikpO1xuXG4gICAgICBjb25zdCBjb2x1bW5zID0gZmllbGRzLnJlZHVjZSgoYWNjLCBmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIGV4dGVuZCBmaWVsZHMgdG8gY29udGFpbiBkdWNrREJDb2x1bW5UeXBlXG4gICAgICAgIHJldHVybiBgJHthY2N9JHtpbmRleCA+IDAgPyAnLCcgOiAnJ30gJyR7ZmllbGQubmFtZX0nOiAnJHtmaWVsZC5kdWNrREJDb2x1bW5UeXBlfSdgO1xuICAgICAgfSwgJycpO1xuXG4gICAgICBjb25zdCBjcmVhdGVUYWJsZVNxbCA9IGBcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBU1xuICAgICAgICBTRUxFQ1QgKlxuICAgICAgICBGUk9NIHJlYWRfanNvbignJHt0aGlzLmlkfScsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSB7JHtjb2x1bW5zfX0pO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoY3JlYXRlVGFibGVTcWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnaW1wb3J0Um93RGF0YScsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGltcG9ydEdlb0pzb25EYXRhKHtkYXRhLCBkYiwgY306IEltcG9ydERhdGFUb0R1Y2tQcm9wcyk6IFByb21pc2U8SW1wb3J0RGF0YVRvRHVja1Jlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7cm93c30gPSBkYXRhO1xuICAgICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlVGV4dCh0aGlzLmlkLCBKU09OLnN0cmluZ2lmeShyb3dzKSk7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZVRhYmxlU3FsID0gYFxuICAgICAgICBpbnN0YWxsIHNwYXRpYWw7XG4gICAgICAgIGxvYWQgc3BhdGlhbDtcbiAgICAgICAgQ1JFQVRFIFRBQkxFICcke3RoaXMubGFiZWx9JyBBUyBcbiAgICAgICAgU0VMRUNUICpcbiAgICAgICAgRlJPTSBTVF9SRUFEKCcke3RoaXMuaWR9Jywga2VlcF93a2IgPSBUUlVFKTtcbiAgICAgICAgQUxURVIgVEFCTEUgJyR7dGhpcy5sYWJlbH0nIFJFTkFNRSAnJHtEVUNLREJfV0tCX0NPTFVNTn0nIFRPICcke0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU59JztcbiAgICAgIGA7XG5cbiAgICAgIGF3YWl0IGMucXVlcnkoY3JlYXRlVGFibGVTcWwpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdpbXBvcnRHZW9Kc29uRGF0YScsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvLyBfZ2VvanNvbiBjb2x1bW4gaXMgY3JlYXRlZCBmcm9tIGdlb21ldHJ5IHdpdGgga2VlcF93a2IgZmxhZyBhbmQgY29udGFpbnMgdmFsaWQgV0tCIGRhdGEuXG4gICAgICBnZW9hcnJvd01ldGFkYXRhOiB7W0tFUExFUl9HRU9NX0ZST01fR0VPSlNPTl9DT0xVTU5dOiBHRU9BUlJPV19FWFRFTlNJT05TLldLQn1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0QXJyb3dEYXRhKHtkYXRhLCBjfTogSW1wb3J0RGF0YVRvRHVja1Byb3BzKTogUHJvbWlzZTxJbXBvcnREYXRhVG9EdWNrUmVzdWx0PiB7XG4gICAgbGV0IGFkanVzdGVkTWV0YWRhdGEgPSB7fTtcbiAgICB0cnkge1xuICAgICAgLy8gMSkgZGF0YS5yb3dzIGNvbnRhaW5zIGFuIGFycm93IHRhYmxlIGNyZWF0ZWQgYnkgQWRkIHRvIE1hcCBkYXRhIGZyb20gRHVja0RiIHF1ZXJ5LlxuICAgICAgLy8gMikgYXJyb3cgdGFibGUgaXMgaW4gY29scyAmIGZpZWxkcyB3aGVuIGEgZmlsZSBpcyBkcmFnZ2VkICYgZHJvcHBlZCBpbnRvIEFkZCBEYXRhIFRvIE1hcCBkaWFsb2cuXG4gICAgICBjb25zdCBhcnJvd1RhYmxlID0gaXNBcnJvd1RhYmxlKGRhdGEucm93cylcbiAgICAgICAgPyBkYXRhLnJvd3NcbiAgICAgICAgOiByZXN0b3JlQXJyb3dUYWJsZShkYXRhLmNvbHMgfHwgW10sIGRhdGEuZmllbGRzLCBkYXRhLmFycm93U2NoZW1hKTtcblxuICAgICAgLy8gcmVtb3ZlIHVuc3VwcG9ydGVkIGV4dGVuc2lvbnMgZnJvbSBhbiBhcnJvdyB0YWJsZSB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RCLlxuICAgICAgYWRqdXN0ZWRNZXRhZGF0YSA9IHJlbW92ZVVuc3VwcG9ydGVkRXh0ZW5zaW9ucyhhcnJvd1RhYmxlKTtcblxuICAgICAgY29uc3Qgc2V0dXBTcWwgPSBgXG4gICAgICAgIGluc3RhbGwgc3BhdGlhbDtcbiAgICAgICAgbG9hZCBzcGF0aWFsO1xuICAgICAgYDtcbiAgICAgIGF3YWl0IGMucXVlcnkoc2V0dXBTcWwpO1xuICAgICAgYXdhaXQgYy5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHtuYW1lOiB0aGlzLmxhYmVsfSk7XG5cbiAgICAgIC8vIHJlc3RvcmUgdW5zdXBwb3J0ZWQgZXh0ZW5zaW9ucyB0aGF0IHRocm93IGV4Y2VwdGlvbnMgaW4gRHVja0RiXG4gICAgICByZXN0b3JlVW5zdXBwb3J0ZWRFeHRlbnNpb25zKGFycm93VGFibGUsIGFkanVzdGVkTWV0YWRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBLbm93biBpc3N1ZXM6XG4gICAgICAvLyAxKSBBcnJvdyBUeXBlIHdpdGggZXh0ZW5zaW9uIG5hbWU6IGdlb2Fycm93LnBvaW50IGFuZCBmb3JtYXQ6ICt3OjIgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gRHVja0RCLlxuICAgICAgY29uc29sZS5lcnJvcignaW1wb3J0QXJyb3dEYXRhJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdlb2Fycm93TWV0YWRhdGE6IHsuLi5TVUdHRVNURURfR0VPTV9DT0xVTU5TLCAuLi5hZGp1c3RlZE1ldGFkYXRhfSxcbiAgICAgIC8vIHVzZSBmaWVsZHMgZ2VuZXJhdGVkIGZyb20gdGhlIGNyZWF0ZWQgYXJyb3cgdGFibGVcbiAgICAgIHVzZU5ld0ZpZWxkczogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHRhYmxlIGZyb20gZGF0YSwgcmV0dXJucyBhbiBhcnJvdyB0YWJsZSB3aXRoIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHtmaWVsZHM6IEZpZWxkW10sIGNvbHM6IGFueVtdfT59XG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTogUHJvbWlzZTx7ZmllbGRzOiBhbnlbXTsgY29sczogYXJyb3cuVmVjdG9yW119PiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmRhdGFiYXNlO1xuICAgIGlmICghZGIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBkYXRhYmFzZSBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4nKTtcbiAgICAgIHJldHVybiB7ZmllbGRzOiBbXSwgY29sczogW119O1xuICAgIH1cbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFibGVOYW1lID0gdGhpcy5sYWJlbDtcbiAgICBhd2FpdCBkcm9wVGFibGVJZkV4aXN0cyhjLCB0YWJsZU5hbWUpO1xuXG4gICAgbGV0IGZvcm1hdCA9IHRoaXMubWV0YWRhdGEuZm9ybWF0O1xuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICAvLyBmb3JtYXQgaXMgbWlzc2luZyB3aGVuIHdlIGxvYWQgS2VwbGVyLmdsIGV4YW1wbGVzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhLnJvd3M/LlswXSkgfHwgdHlwZW9mIGRhdGEucm93cz8uWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgfSBlbHNlIGlmIChkYXRhLnJvd3M/LnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICB9IGVsc2UgaWYgKGlzQXJyb3dWZWN0b3IoZGF0YS5jb2xzPy5bMF0pKSB7XG4gICAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5hcnJvdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW1wb3J0RGV0YWlsczogSW1wb3J0RGF0YVRvRHVja1Jlc3VsdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMucm93KSB7XG4gICAgICBhd2FpdCB0aGlzLmltcG9ydFJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5nZW9qc29uKSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRHZW9Kc29uRGF0YSh7ZGF0YSwgZGIsIGN9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93KSB7XG4gICAgICBpbXBvcnREZXRhaWxzID0gYXdhaXQgdGhpcy5pbXBvcnRBcnJvd0RhdGEoe2RhdGEsIGRiLCBjfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1VucmVjb2duaXplZCBmb3JtYXQnLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIGxldCBmaWVsZHM6IEZpZWxkW10gPSBbXTtcbiAgICBsZXQgY29sczogYXJyb3cuVmVjdG9yW10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7Z2VvYXJyb3dNZXRhZGF0YSA9IHt9LCB1c2VOZXdGaWVsZHMgPSBmYWxzZX0gPSBpbXBvcnREZXRhaWxzIHx8IHt9O1xuXG4gICAgICBjb25zdCBkdWNrRGJDb2x1bW5zID0gYXdhaXQgZ2V0RHVja0RCQ29sdW1uVHlwZXMoYywgdGFibGVOYW1lKTtcbiAgICAgIGNvbnN0IHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFkanVzdGVkUXVlcnkgPSBjYXN0RHVja0RCVHlwZXNGb3JLZXBsZXIodGFibGVOYW1lLCBkdWNrRGJDb2x1bW5zKTtcbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgYy5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgLy8gVE9ETyBpZiBmb3JtYXQgaXMgYW4gYXJyb3cgdGFibGUgdGhlbiBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgb25lLCBpbnN0ZWFkIG9mIHRoZSBuZXcgdGFibGUgZnJvbSB0aGUgcXVlcnk/XG5cbiAgICAgIHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhKGFycm93UmVzdWx0LCBnZW9hcnJvd01ldGFkYXRhKTtcblxuICAgICAgZmllbGRzID0gdXNlTmV3RmllbGRzXG4gICAgICAgID8gYXJyb3dTY2hlbWFUb0ZpZWxkcyhhcnJvd1Jlc3VsdCwgdGFibGVEdWNrREJUeXBlcylcbiAgICAgICAgOiBkYXRhLmZpZWxkcyA/PyBhcnJvd1NjaGVtYVRvRmllbGRzKGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzKTtcbiAgICAgIGNvbHMgPSBbLi4uQXJyYXkoYXJyb3dSZXN1bHQubnVtQ29scykua2V5cygpXVxuICAgICAgICAubWFwKGkgPT4gYXJyb3dSZXN1bHQuZ2V0Q2hpbGRBdChpKSlcbiAgICAgICAgLmZpbHRlcihjb2wgPT4gY29sKSBhcyBhcnJvdy5WZWN0b3JbXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRHVja0RCIHRhYmxlOiBjcmVhdGVUYWJsZUFuZEdldEFycm93JywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgYXdhaXQgYy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHtmaWVsZHMsIGNvbHN9O1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0RGF0YSh7ZGF0YX06IHtkYXRhOiBQcm9jZXNzb3JSZXN1bHR9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVmVjdG9yVGlsZSBpcyBhIHNwZWNpYWwgY2FzZSwgaWdub3JlIGZvciBub3dcbiAgICBpZiAodGhpcy50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YTogey4uLmRhdGEsIHJvd3M6IFtdfX0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHtmaWVsZHMsIGNvbHN9ID0gYXdhaXQgdGhpcy5jcmVhdGVUYWJsZUFuZEdldEFycm93KGRhdGEpO1xuXG4gICAgc3VwZXIuaW1wb3J0RGF0YSh7ZGF0YToge2ZpZWxkcywgY29scywgcm93czogW119fSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGUoZGF0YSkge1xuICAgIC8vIFZlY3RvclRpbGUgaXMgYSBzcGVjaWFsIGNhc2UsIGlnbm9yZSBmb3Igbm93XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHN1cGVyLmltcG9ydERhdGEoe2RhdGF9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IHtjb2xzfSA9IGF3YWl0IHRoaXMuY3JlYXRlVGFibGVBbmRHZXRBcnJvdyhkYXRhKTtcblxuICAgIHJldHVybiBzdXBlci51cGRhdGUoe2NvbHMsIHJvd3M6IFtdLCBmaWVsZHM6IFtdfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZVByb2Nlc3NvciA9IGZ1bmN0aW9uIChkYXRhOiBhbnksIGlucHV0Rm9ybWF0Pzogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NvcjtcbiAgICBsZXQgZm9ybWF0O1xuICAgIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmFycm93IHx8IGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCB8fCBpc0tlcGxlckdsTWFwKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2w7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzS2VwbGVyZ2xKU09OZm9yRHVja0RiO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRGb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5yb3cgfHwgaXNSb3dPYmplY3QoZGF0YSkpIHtcbiAgICAgIC8vIGNzdiBmaWxlIGdvZXMgaGVyZVxuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLnJvdztcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NDc3ZSb3dPYmplY3Q7IC8vIGRpcmVjdGx5IGltcG9ydCBqc29uIG9iamVjdCBpbnRvIGR1Y2tkYi13YXNtXG4gICAgfSBlbHNlIGlmIChpbnB1dEZvcm1hdCA9PT0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb24gfHwgaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgICByZXR1cm4ge3Byb2Nlc3NvciwgZm9ybWF0fTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0SW5wdXREYXRhVmFsaWRhdG9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIEluIER1Y2tEQiBtb2RlIGRhdGEgaXMgdmFsaWRhdGVkIGxhdGVyIGR1cmluZyBpbXBvcnQuXG4gICAgcmV0dXJuIGQgPT4gZDtcbiAgfTtcbn1cblxuLyoqXG4gKiBUcnkgdG8gcmVzdG9yZSBnZW9hcnJvdyBtZXRhZGF0YSBsb3N0IGR1cmluZyBEdWNrRGIgaW5nZXN0aW9uLlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY2FuIGdlbmVyYXRlIHdyb25nIGdlb21ldHJ5IHR5cGVzLlxuICogQHBhcmFtIGFycm93VGFibGUgQXJyb3cgdGFibGUgdG8gdXBkYXRlLlxuICogQHBhcmFtIGdlb2Fycm93TWV0YWRhdGEgQSBtYXAgd2l0aCBmaWVsZCBuYW1lcyB0aGF0IHVzdWFsbHkgdXNlZCB0byBzdG9yZSBnZW9hcnJvdyBnZW9tZXRyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlc3RvcmVHZW9hcnJvd01ldGFkYXRhID0gKFxuICBhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSxcbiAgZ2VvYXJyb3dNZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuKSA9PiB7XG4gIGFycm93VGFibGUuc2NoZW1hLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xuICAgIGlmIChhcnJvdy5EYXRhVHlwZS5pc0JpbmFyeShmLnR5cGUpICYmIGdlb2Fycm93TWV0YWRhdGFbZi5uYW1lXSkge1xuICAgICAgZi5tZXRhZGF0YS5zZXQoR0VPQVJST1dfTUVUQURBVEFfS0VZLCBnZW9hcnJvd01ldGFkYXRhW2YubmFtZV0pO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd1BvaW50KGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5QT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TGluZVN0cmluZyhmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTElORVNUUklORyk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93UG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuUE9MWUdPTik7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlQb2ludChmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0lOVCk7XG4gICAgfSBlbHNlIGlmIChpc0dlb0Fycm93TXVsdGlMaW5lU3RyaW5nKGYudHlwZSkpIHtcbiAgICAgIGYubWV0YWRhdGEuc2V0KEdFT0FSUk9XX01FVEFEQVRBX0tFWSwgR0VPQVJST1dfRVhURU5TSU9OUy5NVUxUSUxJTkVTVFJJTkcpO1xuICAgIH0gZWxzZSBpZiAoaXNHZW9BcnJvd011bHRpUG9seWdvbihmLnR5cGUpKSB7XG4gICAgICBmLm1ldGFkYXRhLnNldChHRU9BUlJPV19NRVRBREFUQV9LRVksIEdFT0FSUk9XX0VYVEVOU0lPTlMuTVVMVElQT0xZR09OKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQU1BLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQVFBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLE1BQUEsR0FBQUosT0FBQTtBQVFBLElBQUFLLGNBQUEsR0FBQUwsT0FBQTtBQU9BLElBQUFNLGlCQUFBLEdBQUFOLE9BQUE7QUFTQSxJQUFBTyxrQkFBQSxHQUFBUCxPQUFBO0FBUXFDLFNBQUFRLHlC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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/duckdb",
3
3
  "author": "Shan He <heshan0131@gmail.com>",
4
- "version": "3.2.2",
4
+ "version": "3.2.3",
5
5
  "description": "DuckDB plugin for Kepler.gl",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -26,11 +26,12 @@
26
26
  ],
27
27
  "dependencies": {
28
28
  "@duckdb/duckdb-wasm": "^1.28.0",
29
- "@kepler.gl/common-utils": "3.2.2",
30
- "@kepler.gl/constants": "3.2.2",
31
- "@kepler.gl/processors": "3.2.2",
32
- "@kepler.gl/table": "3.2.2",
33
- "@kepler.gl/types": "3.2.2",
29
+ "@kepler.gl/common-utils": "3.2.3",
30
+ "@kepler.gl/constants": "3.2.3",
31
+ "@kepler.gl/processors": "3.2.3",
32
+ "@kepler.gl/table": "3.2.3",
33
+ "@kepler.gl/types": "3.2.3",
34
+ "@kepler.gl/utils": "3.2.3",
34
35
  "@monaco-editor/react": "^4.6.0",
35
36
  "@radix-ui/react-collapsible": "^1.1.0",
36
37
  "apache-arrow": ">=15.0.0",