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
@@ -66,7 +66,7 @@ var formatTextLabelData = exports.formatTextLabelData = function formatTextLabel
66
66
  getText = oldLayerData.textLabels[i].getText;
67
67
  rebuildArrowTextVector = false;
68
68
  } else {
69
- if (data instanceof arrow.Table) {
69
+ if ((0, _utils.isArrowTable)(data)) {
70
70
  // we don't filter out arrow tables,
71
71
  // so we use filteredIndex array instead
72
72
  var allLabels = [];
@@ -94,7 +94,7 @@ var formatTextLabelData = exports.formatTextLabelData = function formatTextLabel
94
94
 
95
95
  // For Arrow Layers getText has to be an arrow vector.
96
96
  // For now check here for ArrowTable, not ArrowDataContainer.
97
- if (rebuildArrowTextVector && data instanceof arrow.Table && dataContainer instanceof _utils.ArrowDataContainer) {
97
+ if (rebuildArrowTextVector && (0, _utils.isArrowTable)(data) && dataContainer instanceof _utils.ArrowDataContainer) {
98
98
  getText = dataContainer.getColumn(tl.field.fieldIdx);
99
99
  try {
100
100
  getText = getArrowTextVector(getText, getTextAccessor);
@@ -146,4 +146,4 @@ var getArrowTextVector = exports.getArrowTextVector = function getArrowTextVecto
146
146
  }).flat(Number.POSITIVE_INFINITY);
147
147
  return new arrow.Vector(input);
148
148
  };
149
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl92aWV3cG9ydE1lcmNhdG9yUHJvamVjdCIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIl91bmlxIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImRlZmF1bHRQYWRkaW5nIiwiZXhwb3J0cyIsImdldFRleHRPZmZzZXRCeVJhZGl1cyIsInJhZGl1c1NjYWxlIiwiZ2V0UmFkaXVzIiwibWFwU3RhdGUiLCJ0ZXh0TGFiZWwiLCJkaXN0YW5jZVNjYWxlIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJ4TXVsdCIsImFuY2hvciIsInlNdWx0IiwiYWxpZ25tZW50Iiwic2l6ZU9mZnNldCIsInNpemUiLCJwaXhlbFJhZGl1cyIsInBpeGVsc1Blck1ldGVyIiwicGFkZGluZyIsImQiLCJ0ZXh0TGFiZWxBY2Nlc3NvciIsImRjIiwidmFsIiwiZmllbGQiLCJ2YWx1ZUFjY2Vzc29yIiwibm90TnVsbG9yVW5kZWZpbmVkIiwiU3RyaW5nIiwiZm9ybWF0VGV4dExhYmVsRGF0YSIsIl9yZWYiLCJ0cmlnZ2VyQ2hhbmdlZCIsIm9sZExheWVyRGF0YSIsImRhdGEiLCJkYXRhQ29udGFpbmVyIiwiZmlsdGVyZWRJbmRleCIsIm1hcCIsInRsIiwiZ2V0VGV4dCIsImNoYXJhY3RlclNldCIsImdldFRleHRBY2Nlc3NvciIsInJlYnVpbGRBcnJvd1RleHRWZWN0b3IiLCJjb25jYXQiLCJ0ZXh0TGFiZWxzIiwiVGFibGUiLCJhbGxMYWJlbHMiLCJmb3JFYWNoIiwidmFsdWUiLCJpbmRleCIsInB1c2giLCJudW1Sb3dzIiwidW5pcSIsImpvaW4iLCJBcnJvd0RhdGFDb250YWluZXIiLCJnZXRDb2x1bW4iLCJmaWVsZElkeCIsImdldEFycm93VGV4dFZlY3RvciIsImVycm9yIiwiY2FuZGlkYXRlVGV4dFZlY3RvciIsIkRhdGFUeXBlIiwiaXNVdGY4IiwidHlwZSIsIm9mZnNldHMiLCJfb2Zmc2V0cyIsIm51bU9mZnNldHMiLCJsZW5ndGgiLCJiYXRjaFZlY3RvcnMiLCJkYXR1bSIsImJhdGNoSW5kZXgiLCJiYXRjaFN0YXJ0IiwiYmF0Y2hFbmQiLCJiYXRjaExhYmVscyIsInJvd0luZGV4IiwidmVjdG9yRnJvbUFycmF5IiwiVXRmOCIsImlucHV0IiwiZmxhdE1hcCIsIngiLCJmbGF0IiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJWZWN0b3IiXSwic291cmNlcyI6WyIuLi9zcmMvbGF5ZXItdGV4dC1sYWJlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IHtnZXREaXN0YW5jZVNjYWxlc30gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2UsIEFycm93RGF0YUNvbnRhaW5lcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFBhZGRpbmcgPSAyMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRPZmZzZXRCeVJhZGl1cyhyYWRpdXNTY2FsZSwgZ2V0UmFkaXVzLCBtYXBTdGF0ZSkge1xuICByZXR1cm4gdGV4dExhYmVsID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXMobWFwU3RhdGUpO1xuICAgIGNvbnN0IHhNdWx0ID0gdGV4dExhYmVsLmFuY2hvciA9PT0gJ21pZGRsZScgPyAwIDogdGV4dExhYmVsLmFuY2hvciA9PT0gJ3N0YXJ0JyA/IDEgOiAtMTtcbiAgICBjb25zdCB5TXVsdCA9IHRleHRMYWJlbC5hbGlnbm1lbnQgPT09ICdjZW50ZXInID8gMCA6IHRleHRMYWJlbC5hbGlnbm1lbnQgPT09ICdib3R0b20nID8gMSA6IC0xO1xuXG4gICAgY29uc3Qgc2l6ZU9mZnNldCA9XG4gICAgICB0ZXh0TGFiZWwuYWxpZ25tZW50ID09PSAnY2VudGVyJ1xuICAgICAgICA/IDBcbiAgICAgICAgOiB0ZXh0TGFiZWwuYWxpZ25tZW50ID09PSAnYm90dG9tJ1xuICAgICAgICA/IHRleHRMYWJlbC5zaXplXG4gICAgICAgIDogdGV4dExhYmVsLnNpemU7XG5cbiAgICBjb25zdCBwaXhlbFJhZGl1cyA9IHJhZGl1c1NjYWxlICogZGlzdGFuY2VTY2FsZS5waXhlbHNQZXJNZXRlclswXTtcbiAgICBjb25zdCBwYWRkaW5nID0gZGVmYXVsdFBhZGRpbmc7XG5cbiAgICByZXR1cm4gdHlwZW9mIGdldFJhZGl1cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBkID0+IFtcbiAgICAgICAgICB4TXVsdCAqIChnZXRSYWRpdXMoZCkgKiBwaXhlbFJhZGl1cyArIHBhZGRpbmcpLFxuICAgICAgICAgIHlNdWx0ICogKGdldFJhZGl1cyhkKSAqIHBpeGVsUmFkaXVzICsgcGFkZGluZyArIHNpemVPZmZzZXQpXG4gICAgICAgIF1cbiAgICAgIDogW1xuICAgICAgICAgIHhNdWx0ICogKGdldFJhZGl1cyAqIHBpeGVsUmFkaXVzICsgcGFkZGluZyksXG4gICAgICAgICAgeU11bHQgKiAoZ2V0UmFkaXVzICogcGl4ZWxSYWRpdXMgKyBwYWRkaW5nICsgc2l6ZU9mZnNldClcbiAgICAgICAgXTtcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZXhwb3J0IGNvbnN0IHRleHRMYWJlbEFjY2Vzc29yID0gdGV4dExhYmVsID0+IGRjID0+IGQgPT4ge1xuICBjb25zdCB2YWwgPSB0ZXh0TGFiZWwuZmllbGQudmFsdWVBY2Nlc3NvcihkKTtcbiAgcmV0dXJuIG5vdE51bGxvclVuZGVmaW5lZCh2YWwpID8gU3RyaW5nKHZhbCkgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUZXh0TGFiZWxEYXRhID0gKHtcbiAgdGV4dExhYmVsLFxuICB0cmlnZ2VyQ2hhbmdlZCxcbiAgb2xkTGF5ZXJEYXRhLFxuICBkYXRhLFxuICBkYXRhQ29udGFpbmVyLFxuICBmaWx0ZXJlZEluZGV4XG59OiB7XG4gIHRleHRMYWJlbDogYW55O1xuICB0cmlnZ2VyQ2hhbmdlZD86IGJvb2xlYW4gfCB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIG9sZExheWVyRGF0YTogYW55O1xuICBkYXRhOiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2U7XG4gIGZpbHRlcmVkSW5kZXg/OiBVaW50OENsYW1wZWRBcnJheSB8IG51bGw7XG59KSA9PiB7XG4gIHJldHVybiB0ZXh0TGFiZWwubWFwKCh0bCwgaSkgPT4ge1xuICAgIGlmICghdGwuZmllbGQpIHtcbiAgICAgIC8vIGlmIG5vIGZpZWxkIHNlbGVjdGVkLFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0VGV4dDogbnVsbCxcbiAgICAgICAgY2hhcmFjdGVyU2V0OiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRUZXh0QWNjZXNzb3I6IChkOiB7aW5kZXg6IG51bWJlcn0pID0+IHN0cmluZyA9IHRleHRMYWJlbEFjY2Vzc29yKHRsKShkYXRhQ29udGFpbmVyKTtcbiAgICBsZXQgY2hhcmFjdGVyU2V0O1xuICAgIGxldCBnZXRUZXh0OiB0eXBlb2YgZ2V0VGV4dEFjY2Vzc29yIHwgYXJyb3cuVmVjdG9yID0gZ2V0VGV4dEFjY2Vzc29yO1xuXG4gICAgbGV0IHJlYnVpbGRBcnJvd1RleHRWZWN0b3IgPSB0cnVlO1xuICAgIGlmIChcbiAgICAgICF0cmlnZ2VyQ2hhbmdlZD8uW2BnZXRMYWJlbENoYXJhY3RlclNldC0ke2l9YF0gJiZcbiAgICAgIG9sZExheWVyRGF0YSAmJlxuICAgICAgb2xkTGF5ZXJEYXRhLnRleHRMYWJlbHMgJiZcbiAgICAgIG9sZExheWVyRGF0YS50ZXh0TGFiZWxzW2ldXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXJTZXQgPSBvbGRMYXllckRhdGEudGV4dExhYmVsc1tpXS5jaGFyYWN0ZXJTZXQ7XG4gICAgICBnZXRUZXh0ID0gb2xkTGF5ZXJEYXRhLnRleHRMYWJlbHNbaV0uZ2V0VGV4dDtcbiAgICAgIHJlYnVpbGRBcnJvd1RleHRWZWN0b3IgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBhcnJvdy5UYWJsZSkge1xuICAgICAgICAvLyB3ZSBkb24ndCBmaWx0ZXIgb3V0IGFycm93IHRhYmxlcyxcbiAgICAgICAgLy8gc28gd2UgdXNlIGZpbHRlcmVkSW5kZXggYXJyYXkgaW5zdGVhZFxuICAgICAgICBjb25zdCBhbGxMYWJlbHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmICh0bC5maWVsZCkge1xuICAgICAgICAgIGlmIChmaWx0ZXJlZEluZGV4KSB7XG4gICAgICAgICAgICBmaWx0ZXJlZEluZGV4LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgPiAwKSBhbGxMYWJlbHMucHVzaChnZXRUZXh0QWNjZXNzb3Ioe2luZGV4fSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTsgKytpbmRleCkge1xuICAgICAgICAgICAgICBhbGxMYWJlbHMucHVzaChnZXRUZXh0QWNjZXNzb3Ioe2luZGV4fSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGFyYWN0ZXJTZXQgPSB1bmlxKGFsbExhYmVscy5qb2luKCcnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxMYWJlbHMgPSB0bC5maWVsZCA/IGRhdGEubWFwKGdldFRleHRBY2Nlc3NvcikgOiBbXTtcbiAgICAgICAgY2hhcmFjdGVyU2V0ID0gdW5pcShhbGxMYWJlbHMuam9pbignJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBBcnJvdyBMYXllcnMgZ2V0VGV4dCBoYXMgdG8gYmUgYW4gYXJyb3cgdmVjdG9yLlxuICAgIC8vIEZvciBub3cgY2hlY2sgaGVyZSBmb3IgQXJyb3dUYWJsZSwgbm90IEFycm93RGF0YUNvbnRhaW5lci5cbiAgICBpZiAoXG4gICAgICByZWJ1aWxkQXJyb3dUZXh0VmVjdG9yICYmXG4gICAgICBkYXRhIGluc3RhbmNlb2YgYXJyb3cuVGFibGUgJiZcbiAgICAgIGRhdGFDb250YWluZXIgaW5zdGFuY2VvZiBBcnJvd0RhdGFDb250YWluZXJcbiAgICApIHtcbiAgICAgIGdldFRleHQgPSBkYXRhQ29udGFpbmVyLmdldENvbHVtbih0bC5maWVsZC5maWVsZElkeCk7XG4gICAgICB0cnkge1xuICAgICAgICBnZXRUZXh0ID0gZ2V0QXJyb3dUZXh0VmVjdG9yKGdldFRleHQgYXMgYXJyb3cuVmVjdG9yLCBnZXRUZXh0QWNjZXNzb3IpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZW1wdHkgdGV4dCBsYWJlbHNcbiAgICAgICAgZ2V0VGV4dCA9IGdldEFycm93VGV4dFZlY3RvcihnZXRUZXh0LCAoKSA9PiAnICcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjaGFyYWN0ZXJTZXQsXG4gICAgICBnZXRUZXh0XG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEdldCBhbiBhcnJvdyB2ZWN0b3Igc3VpdGFibGUgdG8gcmVuZGVyIHRleHQgbGFiZWxzIHdpdGggYXJyb3cgbGF5ZXJzLlxuICogQHBhcmFtIGdldFRleHQgQSBjYW5kaWRhdGUgYXJyb3cgdmVjdG9yIHRvIHVzZSBmb3IgdGV4dCBsYWJlbHMuXG4gKiBAcGFyYW0gZ2V0VGV4dEFjY2Vzc29yIFRleHQgbGFiZWwgYWNjZXNzb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBcnJvd1RleHRWZWN0b3IgPSAoXG4gIGNhbmRpZGF0ZVRleHRWZWN0b3I6IGFycm93LlZlY3RvcixcbiAgZ2V0VGV4dEFjY2Vzc29yOiAoe2luZGV4fToge2luZGV4OiBudW1iZXJ9KSA9PiBzdHJpbmdcbik6IGFycm93LlZlY3RvciA9PiB7XG4gIC8vIGlmIHRoZSBwYXNzZWQgdmVjdG9yIGlzIHN1aXRhYmxlIGZvciB0ZXh0IGxhYmVsc1xuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGNhbmRpZGF0ZVRleHRWZWN0b3I/LnR5cGUpKSB7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZVRleHRWZWN0b3I7XG4gIH1cblxuICAvLyBjcmVhdGUgdXRmOCB2ZWN0b3IgZnJvbSBzb3VyY2UgdmVjdG9yIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGJhdGNoZXMuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3Qgb2Zmc2V0cyA9IGNhbmRpZGF0ZVRleHRWZWN0b3IuX29mZnNldHM7XG4gIGNvbnN0IG51bU9mZnNldHMgPSBvZmZzZXRzLmxlbmd0aDtcbiAgY29uc3QgYmF0Y2hWZWN0b3JzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuICBjb25zdCBkYXR1bSA9IHtpbmRleDogMH07XG4gIGZvciAobGV0IGJhdGNoSW5kZXggPSAwOyBiYXRjaEluZGV4IDwgbnVtT2Zmc2V0cyAtIDE7IGJhdGNoSW5kZXgrKykge1xuICAgIGNvbnN0IGJhdGNoU3RhcnQgPSBvZmZzZXRzW2JhdGNoSW5kZXhdO1xuICAgIGNvbnN0IGJhdGNoRW5kID0gb2Zmc2V0c1tiYXRjaEluZGV4ICsgMV07XG5cbiAgICBjb25zdCBiYXRjaExhYmVsczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IGJhdGNoU3RhcnQ7IHJvd0luZGV4IDwgYmF0Y2hFbmQ7ICsrcm93SW5kZXgpIHtcbiAgICAgIGRhdHVtLmluZGV4ID0gcm93SW5kZXg7XG4gICAgICBiYXRjaExhYmVscy5wdXNoKGdldFRleHRBY2Nlc3NvcihkYXR1bSkpO1xuICAgIH1cblxuICAgIGJhdGNoVmVjdG9ycy5wdXNoKGFycm93LnZlY3RvckZyb21BcnJheShiYXRjaExhYmVscywgbmV3IGFycm93LlV0ZjgoKSkpO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSBiYXRjaFZlY3RvcnMuZmxhdE1hcCh4ID0+IHguZGF0YSkuZmxhdChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gIHJldHVybiBuZXcgYXJyb3cuVmVjdG9yKGlucHV0KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyx3QkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQStCLFNBQUFNLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBRSxDQUFBLFNB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
149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl92aWV3cG9ydE1lcmNhdG9yUHJvamVjdCIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIl91bmlxIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImRlZmF1bHRQYWRkaW5nIiwiZXhwb3J0cyIsImdldFRleHRPZmZzZXRCeVJhZGl1cyIsInJhZGl1c1NjYWxlIiwiZ2V0UmFkaXVzIiwibWFwU3RhdGUiLCJ0ZXh0TGFiZWwiLCJkaXN0YW5jZVNjYWxlIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJ4TXVsdCIsImFuY2hvciIsInlNdWx0IiwiYWxpZ25tZW50Iiwic2l6ZU9mZnNldCIsInNpemUiLCJwaXhlbFJhZGl1cyIsInBpeGVsc1Blck1ldGVyIiwicGFkZGluZyIsImQiLCJ0ZXh0TGFiZWxBY2Nlc3NvciIsImRjIiwidmFsIiwiZmllbGQiLCJ2YWx1ZUFjY2Vzc29yIiwibm90TnVsbG9yVW5kZWZpbmVkIiwiU3RyaW5nIiwiZm9ybWF0VGV4dExhYmVsRGF0YSIsIl9yZWYiLCJ0cmlnZ2VyQ2hhbmdlZCIsIm9sZExheWVyRGF0YSIsImRhdGEiLCJkYXRhQ29udGFpbmVyIiwiZmlsdGVyZWRJbmRleCIsIm1hcCIsInRsIiwiZ2V0VGV4dCIsImNoYXJhY3RlclNldCIsImdldFRleHRBY2Nlc3NvciIsInJlYnVpbGRBcnJvd1RleHRWZWN0b3IiLCJjb25jYXQiLCJ0ZXh0TGFiZWxzIiwiaXNBcnJvd1RhYmxlIiwiYWxsTGFiZWxzIiwiZm9yRWFjaCIsInZhbHVlIiwiaW5kZXgiLCJwdXNoIiwibnVtUm93cyIsInVuaXEiLCJqb2luIiwiQXJyb3dEYXRhQ29udGFpbmVyIiwiZ2V0Q29sdW1uIiwiZmllbGRJZHgiLCJnZXRBcnJvd1RleHRWZWN0b3IiLCJlcnJvciIsImNhbmRpZGF0ZVRleHRWZWN0b3IiLCJEYXRhVHlwZSIsImlzVXRmOCIsInR5cGUiLCJvZmZzZXRzIiwiX29mZnNldHMiLCJudW1PZmZzZXRzIiwibGVuZ3RoIiwiYmF0Y2hWZWN0b3JzIiwiZGF0dW0iLCJiYXRjaEluZGV4IiwiYmF0Y2hTdGFydCIsImJhdGNoRW5kIiwiYmF0Y2hMYWJlbHMiLCJyb3dJbmRleCIsInZlY3RvckZyb21BcnJheSIsIlV0ZjgiLCJpbnB1dCIsImZsYXRNYXAiLCJ4IiwiZmxhdCIsIk51bWJlciIsIlBPU0lUSVZFX0lORklOSVRZIiwiVmVjdG9yIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xheWVyLXRleHQtbGFiZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7Z2V0RGlzdGFuY2VTY2FsZXN9IGZyb20gJ3ZpZXdwb3J0LW1lcmNhdG9yLXByb2plY3QnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlLCBBcnJvd0RhdGFDb250YWluZXIsIGlzQXJyb3dUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFBhZGRpbmcgPSAyMDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRPZmZzZXRCeVJhZGl1cyhyYWRpdXNTY2FsZSwgZ2V0UmFkaXVzLCBtYXBTdGF0ZSkge1xuICByZXR1cm4gdGV4dExhYmVsID0+IHtcbiAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXMobWFwU3RhdGUpO1xuICAgIGNvbnN0IHhNdWx0ID0gdGV4dExhYmVsLmFuY2hvciA9PT0gJ21pZGRsZScgPyAwIDogdGV4dExhYmVsLmFuY2hvciA9PT0gJ3N0YXJ0JyA/IDEgOiAtMTtcbiAgICBjb25zdCB5TXVsdCA9IHRleHRMYWJlbC5hbGlnbm1lbnQgPT09ICdjZW50ZXInID8gMCA6IHRleHRMYWJlbC5hbGlnbm1lbnQgPT09ICdib3R0b20nID8gMSA6IC0xO1xuXG4gICAgY29uc3Qgc2l6ZU9mZnNldCA9XG4gICAgICB0ZXh0TGFiZWwuYWxpZ25tZW50ID09PSAnY2VudGVyJ1xuICAgICAgICA/IDBcbiAgICAgICAgOiB0ZXh0TGFiZWwuYWxpZ25tZW50ID09PSAnYm90dG9tJ1xuICAgICAgICA/IHRleHRMYWJlbC5zaXplXG4gICAgICAgIDogdGV4dExhYmVsLnNpemU7XG5cbiAgICBjb25zdCBwaXhlbFJhZGl1cyA9IHJhZGl1c1NjYWxlICogZGlzdGFuY2VTY2FsZS5waXhlbHNQZXJNZXRlclswXTtcbiAgICBjb25zdCBwYWRkaW5nID0gZGVmYXVsdFBhZGRpbmc7XG5cbiAgICByZXR1cm4gdHlwZW9mIGdldFJhZGl1cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBkID0+IFtcbiAgICAgICAgICB4TXVsdCAqIChnZXRSYWRpdXMoZCkgKiBwaXhlbFJhZGl1cyArIHBhZGRpbmcpLFxuICAgICAgICAgIHlNdWx0ICogKGdldFJhZGl1cyhkKSAqIHBpeGVsUmFkaXVzICsgcGFkZGluZyArIHNpemVPZmZzZXQpXG4gICAgICAgIF1cbiAgICAgIDogW1xuICAgICAgICAgIHhNdWx0ICogKGdldFJhZGl1cyAqIHBpeGVsUmFkaXVzICsgcGFkZGluZyksXG4gICAgICAgICAgeU11bHQgKiAoZ2V0UmFkaXVzICogcGl4ZWxSYWRpdXMgKyBwYWRkaW5nICsgc2l6ZU9mZnNldClcbiAgICAgICAgXTtcbiAgfTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZXhwb3J0IGNvbnN0IHRleHRMYWJlbEFjY2Vzc29yID0gdGV4dExhYmVsID0+IGRjID0+IGQgPT4ge1xuICBjb25zdCB2YWwgPSB0ZXh0TGFiZWwuZmllbGQudmFsdWVBY2Nlc3NvcihkKTtcbiAgcmV0dXJuIG5vdE51bGxvclVuZGVmaW5lZCh2YWwpID8gU3RyaW5nKHZhbCkgOiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUZXh0TGFiZWxEYXRhID0gKHtcbiAgdGV4dExhYmVsLFxuICB0cmlnZ2VyQ2hhbmdlZCxcbiAgb2xkTGF5ZXJEYXRhLFxuICBkYXRhLFxuICBkYXRhQ29udGFpbmVyLFxuICBmaWx0ZXJlZEluZGV4XG59OiB7XG4gIHRleHRMYWJlbDogYW55O1xuICB0cmlnZ2VyQ2hhbmdlZD86IGJvb2xlYW4gfCB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG4gIG9sZExheWVyRGF0YTogYW55O1xuICBkYXRhOiBhbnk7XG4gIGRhdGFDb250YWluZXI6IERhdGFDb250YWluZXJJbnRlcmZhY2U7XG4gIGZpbHRlcmVkSW5kZXg/OiBVaW50OENsYW1wZWRBcnJheSB8IG51bGw7XG59KSA9PiB7XG4gIHJldHVybiB0ZXh0TGFiZWwubWFwKCh0bCwgaSkgPT4ge1xuICAgIGlmICghdGwuZmllbGQpIHtcbiAgICAgIC8vIGlmIG5vIGZpZWxkIHNlbGVjdGVkLFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0VGV4dDogbnVsbCxcbiAgICAgICAgY2hhcmFjdGVyU2V0OiBbXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRUZXh0QWNjZXNzb3I6IChkOiB7aW5kZXg6IG51bWJlcn0pID0+IHN0cmluZyA9IHRleHRMYWJlbEFjY2Vzc29yKHRsKShkYXRhQ29udGFpbmVyKTtcbiAgICBsZXQgY2hhcmFjdGVyU2V0O1xuICAgIGxldCBnZXRUZXh0OiB0eXBlb2YgZ2V0VGV4dEFjY2Vzc29yIHwgYXJyb3cuVmVjdG9yID0gZ2V0VGV4dEFjY2Vzc29yO1xuXG4gICAgbGV0IHJlYnVpbGRBcnJvd1RleHRWZWN0b3IgPSB0cnVlO1xuICAgIGlmIChcbiAgICAgICF0cmlnZ2VyQ2hhbmdlZD8uW2BnZXRMYWJlbENoYXJhY3RlclNldC0ke2l9YF0gJiZcbiAgICAgIG9sZExheWVyRGF0YSAmJlxuICAgICAgb2xkTGF5ZXJEYXRhLnRleHRMYWJlbHMgJiZcbiAgICAgIG9sZExheWVyRGF0YS50ZXh0TGFiZWxzW2ldXG4gICAgKSB7XG4gICAgICBjaGFyYWN0ZXJTZXQgPSBvbGRMYXllckRhdGEudGV4dExhYmVsc1tpXS5jaGFyYWN0ZXJTZXQ7XG4gICAgICBnZXRUZXh0ID0gb2xkTGF5ZXJEYXRhLnRleHRMYWJlbHNbaV0uZ2V0VGV4dDtcbiAgICAgIHJlYnVpbGRBcnJvd1RleHRWZWN0b3IgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQXJyb3dUYWJsZShkYXRhKSkge1xuICAgICAgICAvLyB3ZSBkb24ndCBmaWx0ZXIgb3V0IGFycm93IHRhYmxlcyxcbiAgICAgICAgLy8gc28gd2UgdXNlIGZpbHRlcmVkSW5kZXggYXJyYXkgaW5zdGVhZFxuICAgICAgICBjb25zdCBhbGxMYWJlbHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmICh0bC5maWVsZCkge1xuICAgICAgICAgIGlmIChmaWx0ZXJlZEluZGV4KSB7XG4gICAgICAgICAgICBmaWx0ZXJlZEluZGV4LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgPiAwKSBhbGxMYWJlbHMucHVzaChnZXRUZXh0QWNjZXNzb3Ioe2luZGV4fSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhQ29udGFpbmVyLm51bVJvd3MoKTsgKytpbmRleCkge1xuICAgICAgICAgICAgICBhbGxMYWJlbHMucHVzaChnZXRUZXh0QWNjZXNzb3Ioe2luZGV4fSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjaGFyYWN0ZXJTZXQgPSB1bmlxKGFsbExhYmVscy5qb2luKCcnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhbGxMYWJlbHMgPSB0bC5maWVsZCA/IGRhdGEubWFwKGdldFRleHRBY2Nlc3NvcikgOiBbXTtcbiAgICAgICAgY2hhcmFjdGVyU2V0ID0gdW5pcShhbGxMYWJlbHMuam9pbignJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBBcnJvdyBMYXllcnMgZ2V0VGV4dCBoYXMgdG8gYmUgYW4gYXJyb3cgdmVjdG9yLlxuICAgIC8vIEZvciBub3cgY2hlY2sgaGVyZSBmb3IgQXJyb3dUYWJsZSwgbm90IEFycm93RGF0YUNvbnRhaW5lci5cbiAgICBpZiAoXG4gICAgICByZWJ1aWxkQXJyb3dUZXh0VmVjdG9yICYmXG4gICAgICBpc0Fycm93VGFibGUoZGF0YSkgJiZcbiAgICAgIGRhdGFDb250YWluZXIgaW5zdGFuY2VvZiBBcnJvd0RhdGFDb250YWluZXJcbiAgICApIHtcbiAgICAgIGdldFRleHQgPSBkYXRhQ29udGFpbmVyLmdldENvbHVtbih0bC5maWVsZC5maWVsZElkeCk7XG4gICAgICB0cnkge1xuICAgICAgICBnZXRUZXh0ID0gZ2V0QXJyb3dUZXh0VmVjdG9yKGdldFRleHQgYXMgYXJyb3cuVmVjdG9yLCBnZXRUZXh0QWNjZXNzb3IpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gZW1wdHkgdGV4dCBsYWJlbHNcbiAgICAgICAgZ2V0VGV4dCA9IGdldEFycm93VGV4dFZlY3RvcihnZXRUZXh0LCAoKSA9PiAnICcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjaGFyYWN0ZXJTZXQsXG4gICAgICBnZXRUZXh0XG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEdldCBhbiBhcnJvdyB2ZWN0b3Igc3VpdGFibGUgdG8gcmVuZGVyIHRleHQgbGFiZWxzIHdpdGggYXJyb3cgbGF5ZXJzLlxuICogQHBhcmFtIGdldFRleHQgQSBjYW5kaWRhdGUgYXJyb3cgdmVjdG9yIHRvIHVzZSBmb3IgdGV4dCBsYWJlbHMuXG4gKiBAcGFyYW0gZ2V0VGV4dEFjY2Vzc29yIFRleHQgbGFiZWwgYWNjZXNzb3IuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBcnJvd1RleHRWZWN0b3IgPSAoXG4gIGNhbmRpZGF0ZVRleHRWZWN0b3I6IGFycm93LlZlY3RvcixcbiAgZ2V0VGV4dEFjY2Vzc29yOiAoe2luZGV4fToge2luZGV4OiBudW1iZXJ9KSA9PiBzdHJpbmdcbik6IGFycm93LlZlY3RvciA9PiB7XG4gIC8vIGlmIHRoZSBwYXNzZWQgdmVjdG9yIGlzIHN1aXRhYmxlIGZvciB0ZXh0IGxhYmVsc1xuICBpZiAoYXJyb3cuRGF0YVR5cGUuaXNVdGY4KGNhbmRpZGF0ZVRleHRWZWN0b3I/LnR5cGUpKSB7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZVRleHRWZWN0b3I7XG4gIH1cblxuICAvLyBjcmVhdGUgdXRmOCB2ZWN0b3IgZnJvbSBzb3VyY2UgdmVjdG9yIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGJhdGNoZXMuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3Qgb2Zmc2V0cyA9IGNhbmRpZGF0ZVRleHRWZWN0b3IuX29mZnNldHM7XG4gIGNvbnN0IG51bU9mZnNldHMgPSBvZmZzZXRzLmxlbmd0aDtcbiAgY29uc3QgYmF0Y2hWZWN0b3JzOiBhcnJvdy5WZWN0b3JbXSA9IFtdO1xuICBjb25zdCBkYXR1bSA9IHtpbmRleDogMH07XG4gIGZvciAobGV0IGJhdGNoSW5kZXggPSAwOyBiYXRjaEluZGV4IDwgbnVtT2Zmc2V0cyAtIDE7IGJhdGNoSW5kZXgrKykge1xuICAgIGNvbnN0IGJhdGNoU3RhcnQgPSBvZmZzZXRzW2JhdGNoSW5kZXhdO1xuICAgIGNvbnN0IGJhdGNoRW5kID0gb2Zmc2V0c1tiYXRjaEluZGV4ICsgMV07XG5cbiAgICBjb25zdCBiYXRjaExhYmVsczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IGJhdGNoU3RhcnQ7IHJvd0luZGV4IDwgYmF0Y2hFbmQ7ICsrcm93SW5kZXgpIHtcbiAgICAgIGRhdHVtLmluZGV4ID0gcm93SW5kZXg7XG4gICAgICBiYXRjaExhYmVscy5wdXNoKGdldFRleHRBY2Nlc3NvcihkYXR1bSkpO1xuICAgIH1cblxuICAgIGJhdGNoVmVjdG9ycy5wdXNoKGFycm93LnZlY3RvckZyb21BcnJheShiYXRjaExhYmVscywgbmV3IGFycm93LlV0ZjgoKSkpO1xuICB9XG5cbiAgY29uc3QgaW5wdXQgPSBiYXRjaFZlY3RvcnMuZmxhdE1hcCh4ID0+IHguZGF0YSkuZmxhdChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gIHJldHVybiBuZXcgYXJyb3cuVmVjdG9yKGlucHV0KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyx3QkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBQyxzQkFBQSxDQUFBTCxPQUFBO0FBQStCLFNBQUFNLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUix3QkFBQVEsQ0FBQSxFQUFBRSxDQUFB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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/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",
@@ -36,14 +36,14 @@
36
36
  "@deck.gl/geo-layers": "^8.9.27",
37
37
  "@deck.gl/layers": "^8.9.27",
38
38
  "@deck.gl/mesh-layers": "^8.9.27",
39
- "@kepler.gl/common-utils": "3.2.2",
40
- "@kepler.gl/constants": "3.2.2",
41
- "@kepler.gl/deckgl-arrow-layers": "3.2.2",
42
- "@kepler.gl/deckgl-layers": "3.2.2",
43
- "@kepler.gl/localization": "3.2.2",
44
- "@kepler.gl/table": "3.2.2",
45
- "@kepler.gl/types": "3.2.2",
46
- "@kepler.gl/utils": "3.2.2",
39
+ "@kepler.gl/common-utils": "3.2.3",
40
+ "@kepler.gl/constants": "3.2.3",
41
+ "@kepler.gl/deckgl-arrow-layers": "3.2.3",
42
+ "@kepler.gl/deckgl-layers": "3.2.3",
43
+ "@kepler.gl/localization": "3.2.3",
44
+ "@kepler.gl/table": "3.2.3",
45
+ "@kepler.gl/types": "3.2.3",
46
+ "@kepler.gl/utils": "3.2.3",
47
47
  "@loaders.gl/arrow": "^4.3.2",
48
48
  "@loaders.gl/core": "^4.3.2",
49
49
  "@loaders.gl/gis": "^4.3.2",
@@ -41,7 +41,8 @@ import {
41
41
  hexToRgb,
42
42
  isPlainObject,
43
43
  isDomainStops,
44
- updateColorRangeByMatchingPalette
44
+ updateColorRangeByMatchingPalette,
45
+ isArrowTable
45
46
  } from '@kepler.gl/utils';
46
47
  import {generateHashId, toArray, notNullorUndefined} from '@kepler.gl/common-utils';
47
48
  import {Datasets, GpuFilter, KeplerTable} from '@kepler.gl/table';
@@ -1585,7 +1586,7 @@ class Layer implements KeplerLayer {
1585
1586
  const {data, mapState} = renderOpts;
1586
1587
  const {textLabel} = this.config;
1587
1588
 
1588
- const TextLayerClass = data.data instanceof arrow.Table ? GeoArrowTextLayer : TextLayer;
1589
+ const TextLayerClass = isArrowTable(data.data) ? GeoArrowTextLayer : TextLayer;
1589
1590
 
1590
1591
  return data.textLabels.reduce((accu, d, i) => {
1591
1592
  if (d.getText) {
@@ -3,7 +3,7 @@
3
3
 
4
4
  import * as arrow from 'apache-arrow';
5
5
  import {getDistanceScales} from 'viewport-mercator-project';
6
- import {DataContainerInterface, ArrowDataContainer} from '@kepler.gl/utils';
6
+ import {DataContainerInterface, ArrowDataContainer, isArrowTable} from '@kepler.gl/utils';
7
7
  import {notNullorUndefined} from '@kepler.gl/common-utils';
8
8
  import uniq from 'lodash/uniq';
9
9
 
@@ -82,7 +82,7 @@ export const formatTextLabelData = ({
82
82
  getText = oldLayerData.textLabels[i].getText;
83
83
  rebuildArrowTextVector = false;
84
84
  } else {
85
- if (data instanceof arrow.Table) {
85
+ if (isArrowTable(data)) {
86
86
  // we don't filter out arrow tables,
87
87
  // so we use filteredIndex array instead
88
88
  const allLabels: string[] = [];
@@ -108,7 +108,7 @@ export const formatTextLabelData = ({
108
108
  // For now check here for ArrowTable, not ArrowDataContainer.
109
109
  if (
110
110
  rebuildArrowTextVector &&
111
- data instanceof arrow.Table &&
111
+ isArrowTable(data) &&
112
112
  dataContainer instanceof ArrowDataContainer
113
113
  ) {
114
114
  getText = dataContainer.getColumn(tl.field.fieldIdx);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/localization",
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",
@@ -1,5 +1,5 @@
1
- import * as arrow from 'apache-arrow';
2
1
  import { Loader } from '@loaders.gl/loader-utils';
2
+ import { isArrowTable } from '@kepler.gl/utils';
3
3
  import { AddDataToMapPayload, Feature } from '@kepler.gl/types';
4
4
  import { FeatureCollection } from '@turf/helpers';
5
5
  import { FileCacheItem, ValidKeplerGlMap } from './types';
@@ -15,12 +15,7 @@ export declare type ProcessFileDataContent = {
15
15
  /** metadata e.g. for arrow data, metadata could be the schema.fields */
16
16
  metadata?: Map<string, string>;
17
17
  };
18
- /**
19
- * check if table is an ArrowTable object
20
- * @param table - object to check
21
- * @returns {boolean} - true if table is an ArrowTable object type guarded
22
- */
23
- export declare function isArrowTable(table: any): table is arrow.Table;
18
+ export { isArrowTable };
24
19
  /**
25
20
  * check if data is an ArrowData object, which is an array of RecordBatch
26
21
  * @param data - object to check
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.filesToDataPayload = filesToDataPayload;
9
8
  exports.isArrowData = isArrowData;
10
- exports.isArrowTable = isArrowTable;
9
+ Object.defineProperty(exports, "isArrowTable", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _utils.isArrowTable;
13
+ }
14
+ });
11
15
  exports.isFeature = isFeature;
12
16
  exports.isFeatureCollection = isFeatureCollection;
13
17
  exports.isGeoJson = isGeoJson;
@@ -23,7 +27,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
23
27
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
24
28
  var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
25
29
  var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
26
- var arrow = _interopRequireWildcard(require("apache-arrow"));
27
30
  var _core = require("@loaders.gl/core");
28
31
  var _json = require("@loaders.gl/json");
29
32
  var _csv = require("@loaders.gl/csv");
@@ -34,8 +37,6 @@ var _commonUtils = require("@kepler.gl/common-utils");
34
37
  var _constants = require("@kepler.gl/constants");
35
38
  var _table = require("@kepler.gl/table");
36
39
  var _dataProcessor = require("./data-processor");
37
- 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); }
38
- 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; }
39
40
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
40
41
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
41
42
  function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
@@ -67,15 +68,6 @@ var JSON_LOADER_OPTIONS = {
67
68
  '$.datasets' // KeplerGL JSON
68
69
  ]
69
70
  };
70
- /**
71
- * check if table is an ArrowTable object
72
- * @param table - object to check
73
- * @returns {boolean} - true if table is an ArrowTable object type guarded
74
- */
75
- function isArrowTable(table) {
76
- return Boolean(table instanceof arrow.Table);
77
- }
78
-
79
71
  /**
80
72
  * check if data is an ArrowData object, which is an array of RecordBatch
81
73
  * @param data - object to check
@@ -220,7 +212,7 @@ function _readBatch() {
220
212
  result = batches;
221
213
  }
222
214
  } else {
223
- batchData = isArrowTable(batch.data) ? batch.data.batches : batch.data;
215
+ batchData = (0, _utils.isArrowTable)(batch.data) ? batch.data.batches : batch.data;
224
216
  for (i = 0; i < (batchData === null || batchData === void 0 ? void 0 : batchData.length); i++) {
225
217
  batches.push(batchData[i]);
226
218
  }
@@ -412,4 +404,4 @@ function filesToDataPayload(fileCache) {
412
404
  datasets: collection.datasets
413
405
  });
414
406
  }
415
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcnJvdyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9jb3JlIiwiX2pzb24iLCJfY3N2IiwiX2Fycm93IiwiX3BhcnF1ZXQiLCJfdXRpbHMiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwiX2RhdGFQcm9jZXNzb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfYXN5bmNJdGVyYXRvciIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJpdGVyYXRvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvciIsIlR5cGVFcnJvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbiIsIlByb21pc2UiLCJyZWplY3QiLCJkb25lIiwicmVzb2x2ZSIsInZhbHVlIiwidGhlbiIsInMiLCJuZXh0IiwicHJvdG90eXBlIiwiX3JldHVybiIsIl90aHJvdyIsIkJBVENIX1RZUEUiLCJNRVRBREFUQSIsIlBBUlRJQUxfUkVTVUxUIiwiRklOQUxfUkVTVUxUIiwiQ1NWX0xPQURFUl9PUFRJT05TIiwic2hhcGUiLCJkeW5hbWljVHlwaW5nIiwiQVJST1dfTE9BREVSX09QVElPTlMiLCJiYXRjaERlYm91bmNlTXMiLCJQQVJRVUVUX0xPQURFUl9PUFRJT05TIiwiSlNPTl9MT0FERVJfT1BUSU9OUyIsImpzb25wYXRocyIsImlzQXJyb3dUYWJsZSIsInRhYmxlIiwiQm9vbGVhbiIsIlRhYmxlIiwiaXNBcnJvd0RhdGEiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5Iiwic2NoZW1hIiwiaXNHZW9Kc29uIiwianNvbiIsImlzUGxhaW5PYmplY3QiLCJpc0ZlYXR1cmUiLCJpc0ZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsImdlb21ldHJ5IiwiZmVhdHVyZXMiLCJpc1Jvd09iamVjdCIsImlzS2VwbGVyR2xNYXAiLCJkYXRhc2V0cyIsImNvbmZpZyIsImluZm8iLCJhcHAiLCJtYWtlUHJvZ3Jlc3NJdGVyYXRvciIsIl94IiwiX3gyIiwiX21ha2VQcm9ncmVzc0l0ZXJhdG9yIiwiX3dyYXBBc3luY0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInJvd0NvdW50IiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbiIsIl9kaWRJdGVyYXRvckVycm9yIiwiX2l0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImJhdGNoIiwicm93Q291bnRJbkJhdGNoIiwicGVyY2VudCIsInByb2dyZXNzIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwiX2F3YWl0QXN5bmNHZW5lcmF0b3IyIiwic2VudCIsIk51bWJlciIsImlzRmluaXRlIiwiYnl0ZXNVc2VkIiwic2l6ZSIsInQwIiwiZmluaXNoIiwic3RvcCIsInJlYWRCYXRjaCIsIl94MyIsIl94NCIsIl9yZWFkQmF0Y2giLCJfY2FsbGVlMiIsImZpbGVOYW1lIiwicmVzdWx0IiwiYmF0Y2hlcyIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb24yIiwiX2RpZEl0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yRXJyb3IyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsInN0cmVhbWluZ1BhdGgiLCJiYXRjaERhdGEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsIl9KU09OUGF0aCIsInNldEZpZWxkQXRQYXRoIiwiaGVhZGVycyIsInJlYWRGaWxlSW5CYXRjaGVzIiwiX3g1IiwiX3JlYWRGaWxlSW5CYXRjaGVzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX2NhbGxlZTMiLCJfcmVmIiwiZmlsZSIsIl9yZWYkbG9hZGVycyIsImxvYWRlcnMiLCJfcmVmJGxvYWRPcHRpb25zIiwibG9hZE9wdGlvbnMiLCJiYXRjaEl0ZXJhdG9yIiwicHJvZ3Jlc3NJdGVyYXRvciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIkpTT05Mb2FkZXIiLCJDU1ZMb2FkZXIiLCJHZW9BcnJvd0xvYWRlciIsIlBhcnF1ZXRXYXNtTG9hZGVyIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNzdiIsInBhcnF1ZXQiLCJtZXRhZGF0YSIsInBhcnNlSW5CYXRjaGVzIiwiYWJydXB0IiwibmFtZSIsInByb2Nlc3NGaWxlRGF0YSIsIl94NiIsIl9wcm9jZXNzRmlsZURhdGEiLCJfY2FsbGVlNCIsIl9yZWYyIiwiX2dldEFwcGxpY2F0aW9uQ29uZmlnIiwiY29udGVudCIsImZpbGVDYWNoZSIsImZvcm1hdCIsInByb2Nlc3NvciIsImlkIiwicHJvY2Vzc29yUmVzdWx0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwiZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJLZXBsZXJUYWJsZSIsImdldEZpbGVQcm9jZXNzb3IiLCJEQVRBU0VUX0ZPUk1BVFMiLCJwcm9jZXNzQXJyb3dCYXRjaGVzIiwia2VwbGVyZ2wiLCJwcm9jZXNzS2VwbGVyZ2xKU09OIiwicm93IiwicHJvY2Vzc1Jvd09iamVjdCIsImdlb2pzb24iLCJwcm9jZXNzR2VvanNvbiIsIkVycm9yIiwiZ2V0RXJyb3IiLCJsYWJlbCIsImZpbGVzVG9EYXRhUGF5bG9hZCIsImNvbGxlY3Rpb24iLCJyZWR1Y2UiLCJhY2N1Iiwia2VwbGVyTWFwcyIsIm9wdGlvbnMiLCJjZW50ZXJNYXAiLCJtYXBTdGF0ZSIsIm5ld0RhdGFzZXQiLCJnZW5lcmF0ZUhhc2hJZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9maWxlLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCB7cGFyc2VJbkJhdGNoZXN9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtKU09OTG9hZGVyLCBfSlNPTlBhdGh9IGZyb20gJ0Bsb2FkZXJzLmdsL2pzb24nO1xuaW1wb3J0IHtDU1ZMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2Nzdic7XG5pbXBvcnQge0dlb0Fycm93TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5pbXBvcnQge1BhcnF1ZXRXYXNtTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9wYXJxdWV0JztcbmltcG9ydCB7TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9sb2FkZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgaXNQbGFpbk9iamVjdCxcbiAgZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0RXJyb3Jcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0RBVEFTRVRfRk9STUFUU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtBZGREYXRhVG9NYXBQYXlsb2FkLCBGZWF0dXJlLCBMb2FkZWRNYXAsIFByb2Nlc3NvclJlc3VsdH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7RmVhdHVyZUNvbGxlY3Rpb259IGZyb20gJ0B0dXJmL2hlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBwcm9jZXNzQXJyb3dCYXRjaGVzLFxuICBwcm9jZXNzR2VvanNvbixcbiAgcHJvY2Vzc0tlcGxlcmdsSlNPTixcbiAgcHJvY2Vzc1Jvd09iamVjdFxufSBmcm9tICcuL2RhdGEtcHJvY2Vzc29yJztcblxuaW1wb3J0IHtGaWxlQ2FjaGVJdGVtLCBWYWxpZEtlcGxlckdsTWFwfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQkFUQ0hfVFlQRSA9IHtcbiAgTUVUQURBVEE6ICdtZXRhZGF0YScsXG4gIFBBUlRJQUxfUkVTVUxUOiAncGFydGlhbC1yZXN1bHQnLFxuICBGSU5BTF9SRVNVTFQ6ICdmaW5hbC1yZXN1bHQnXG59O1xuXG5jb25zdCBDU1ZfTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnb2JqZWN0LXJvdy10YWJsZScsXG4gIGR5bmFtaWNUeXBpbmc6IGZhbHNlIC8vIG5vdCB3b3JraW5nIGZvciBub3dcbn07XG5cbmNvbnN0IEFSUk9XX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ2Fycm93LXRhYmxlJyxcbiAgYmF0Y2hEZWJvdW5jZU1zOiAxMCAvLyB0aW1lIHRvIGRlbGF5IGJldHdlZW4gYmF0Y2hlcywgZm9yIGluY3JlbWVudGFsIGxvYWRpbmdcbn07XG5cbmNvbnN0IFBBUlFVRVRfTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnYXJyb3ctdGFibGUnXG59O1xuXG5jb25zdCBKU09OX0xPQURFUl9PUFRJT05TID0ge1xuICBzaGFwZTogJ29iamVjdC1yb3ctdGFibGUnLFxuICAvLyBpbnN0cnVjdCBsb2FkZXJzLmdsIG9uIHdoYXQganNvbiBwYXRocyB0byBzdHJlYW1cbiAganNvbnBhdGhzOiBbXG4gICAgJyQnLCAvLyBKU09OIFJvdyBhcnJheVxuICAgICckLmZlYXR1cmVzJywgLy8gR2VvSlNPTlxuICAgICckLmRhdGFzZXRzJyAvLyBLZXBsZXJHTCBKU09OXG4gIF1cbn07XG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NGaWxlRGF0YUNvbnRlbnQgPSB7XG4gIGRhdGE6IHVua25vd247XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGxlbmd0aD86IG51bWJlcjtcbiAgcHJvZ3Jlc3M/OiB7cm93Q291bnQ/OiBudW1iZXI7IHJvd0NvdW50SW5CYXRjaD86IG51bWJlcjsgcGVyY2VudD86IG51bWJlcn07XG4gIC8qKiAgbWV0YWRhdGEgZS5nLiBmb3IgYXJyb3cgZGF0YSwgbWV0YWRhdGEgY291bGQgYmUgdGhlIHNjaGVtYS5maWVsZHMgKi9cbiAgbWV0YWRhdGE/OiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xufTtcblxuLyoqXG4gKiBjaGVjayBpZiB0YWJsZSBpcyBhbiBBcnJvd1RhYmxlIG9iamVjdFxuICogQHBhcmFtIHRhYmxlIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRhYmxlIGlzIGFuIEFycm93VGFibGUgb2JqZWN0IHR5cGUgZ3VhcmRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd1RhYmxlKHRhYmxlOiBhbnkpOiB0YWJsZSBpcyBhcnJvdy5UYWJsZSB7XG4gIHJldHVybiBCb29sZWFuKHRhYmxlIGluc3RhbmNlb2YgYXJyb3cuVGFibGUpO1xufVxuXG4vKipcbiAqIGNoZWNrIGlmIGRhdGEgaXMgYW4gQXJyb3dEYXRhIG9iamVjdCwgd2hpY2ggaXMgYW4gYXJyYXkgb2YgUmVjb3JkQmF0Y2hcbiAqIEBwYXJhbSBkYXRhIC0gb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0cnVlIGlmIGRhdGEgaXMgYW4gQXJyb3dEYXRhIG9iamVjdCB0eXBlIGd1YXJkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyb3dEYXRhKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkYXRhKSAmJiBCb29sZWFuKGRhdGEubGVuZ3RoICYmIGRhdGFbMF0uZGF0YSAmJiBkYXRhWzBdLnNjaGVtYSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0dlb0pzb24oanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB8IEZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgLy8ganNvbiBjYW4gYmUgZmVhdHVyZSBjb2xsZWN0aW9uXG4gIC8vIG9yIHNpbmdsZSBmZWF0dXJlXG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIChpc0ZlYXR1cmUoanNvbikgfHwgaXNGZWF0dXJlQ29sbGVjdGlvbihqc29uKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmUoanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZSB7XG4gIHJldHVybiBpc1BsYWluT2JqZWN0KGpzb24pICYmIGpzb24udHlwZSA9PT0gJ0ZlYXR1cmUnICYmIEJvb2xlYW4oanNvbi5nZW9tZXRyeSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZlYXR1cmVDb2xsZWN0aW9uKGpzb246IHVua25vd24pOiBqc29uIGlzIEZlYXR1cmVDb2xsZWN0aW9uIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYganNvbi50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nICYmIEJvb2xlYW4oanNvbi5mZWF0dXJlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Jvd09iamVjdChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoanNvbikgJiYgaXNQbGFpbk9iamVjdChqc29uWzBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzS2VwbGVyR2xNYXAoanNvbjogdW5rbm93bik6IGpzb24gaXMgVmFsaWRLZXBsZXJHbE1hcCB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGlzUGxhaW5PYmplY3QoanNvbikgJiZcbiAgICAgIGpzb24uZGF0YXNldHMgJiZcbiAgICAgIGpzb24uY29uZmlnICYmXG4gICAgICBqc29uLmluZm8gJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoanNvbi5pbmZvKSAmJlxuICAgICAganNvbi5pbmZvLmFwcCA9PT0gJ2tlcGxlci5nbCdcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBpbmZvOiB7c2l6ZTogbnVtYmVyfVxuKTogQXN5bmNHZW5lcmF0b3Ige1xuICBsZXQgcm93Q291bnQgPSAwO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgYmF0Y2ggb2YgYXN5bmNJdGVyYXRvcikge1xuICAgIC8vIHRoZSBsZW5ndGggY291bGQgYmUgc3RvcmVkIGluIGBiYXRjaC5sZW5ndGhgIGZvciBhcnJvdyBiYXRjaFxuICAgIGNvbnN0IHJvd0NvdW50SW5CYXRjaCA9IChiYXRjaC5kYXRhICYmIChiYXRjaC5kYXRhLmxlbmd0aCB8fCBiYXRjaC5sZW5ndGgpKSB8fCAwO1xuICAgIHJvd0NvdW50ICs9IHJvd0NvdW50SW5CYXRjaDtcbiAgICBjb25zdCBwZXJjZW50ID0gTnVtYmVyLmlzRmluaXRlKGJhdGNoLmJ5dGVzVXNlZCkgPyBiYXRjaC5ieXRlc1VzZWQgLyBpbmZvLnNpemUgOiBudWxsO1xuXG4gICAgLy8gVXBkYXRlIHByb2dyZXNzIG9iamVjdFxuICAgIGNvbnN0IHByb2dyZXNzID0ge1xuICAgICAgcm93Q291bnQsXG4gICAgICByb3dDb3VudEluQmF0Y2gsXG4gICAgICAuLi4oTnVtYmVyLmlzRmluaXRlKHBlcmNlbnQpID8ge3BlcmNlbnR9IDoge30pXG4gICAgfTtcblxuICAgIHlpZWxkIHsuLi5iYXRjaCwgcHJvZ3Jlc3N9O1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHJlYWRCYXRjaChcbiAgYXN5bmNJdGVyYXRvcjogQXN5bmNJdGVyYWJsZTxhbnk+LFxuICBmaWxlTmFtZTogc3RyaW5nXG4pOiBBc3luY0dlbmVyYXRvciB7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuICBjb25zdCBiYXRjaGVzID0gPGFueT5bXTtcbiAgZm9yIGF3YWl0IChjb25zdCBiYXRjaCBvZiBhc3luY0l0ZXJhdG9yKSB7XG4gICAgLy8gTGFzdCBiYXRjaCB3aWxsIGhhdmUgdGhpcyBzcGVjaWFsIHR5cGUgYW5kIHdpbGwgcHJvdmlkZSBhbGwgdGhlIHJvb3RcbiAgICAvLyBwcm9wZXJ0aWVzIG9mIHRoZSBwYXJzZWQgZG9jdW1lbnQuXG4gICAgLy8gT25seSBqc29uIHBhcnNlIHdpbGwgaGF2ZSBgRklOQUxfUkVTVUxUYFxuICAgIGlmIChiYXRjaC5iYXRjaFR5cGUgPT09IEJBVENIX1RZUEUuRklOQUxfUkVTVUxUKSB7XG4gICAgICBpZiAoYmF0Y2guY29udGFpbmVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHsuLi5iYXRjaC5jb250YWluZXJ9O1xuICAgICAgfVxuICAgICAgLy8gU2V0IHRoZSBzdHJlYW1lZCBkYXRhIGNvcnJlY3RseSBpcyBCYXRjaCBqc29uIHBhdGggaXMgc2V0XG4gICAgICAvLyBhbmQgdGhlIHBhdGggc3RyZWFtZWQgaXMgbm90IHRoZSB0b3AgbGV2ZWwgb2JqZWN0IChqc29ucGF0aCA9ICckJylcbiAgICAgIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHN0cmVhbWluZ1BhdGggPSBuZXcgX0pTT05QYXRoKGJhdGNoLmpzb25wYXRoKTtcbiAgICAgICAgc3RyZWFtaW5nUGF0aC5zZXRGaWVsZEF0UGF0aChyZXN1bHQsIGJhdGNoZXMpO1xuICAgICAgfSBlbHNlIGlmIChiYXRjaC5qc29ucGF0aCAmJiBiYXRjaC5qc29ucGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgLy8gVGhlIHN0cmVhbWVkIG9iamVjdCBpcyBhIFJPVyBKU09OLWJhdGNoIChqc29ucGF0aCA9ICckJylcbiAgICAgICAgLy8gcm93IG9iamVjdHNcbiAgICAgICAgcmVzdWx0ID0gYmF0Y2hlcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmF0Y2hEYXRhID0gaXNBcnJvd1RhYmxlKGJhdGNoLmRhdGEpID8gYmF0Y2guZGF0YS5iYXRjaGVzIDogYmF0Y2guZGF0YTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmF0Y2hEYXRhPy5sZW5ndGg7IGkrKykge1xuICAgICAgICBiYXRjaGVzLnB1c2goYmF0Y2hEYXRhW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB5aWVsZCB7XG4gICAgICAuLi5iYXRjaCxcbiAgICAgIC4uLihiYXRjaC5zY2hlbWEgPyB7aGVhZGVyczogT2JqZWN0LmtleXMoYmF0Y2guc2NoZW1hKX0gOiB7fSksXG4gICAgICBmaWxlTmFtZSxcbiAgICAgIC8vIGlmIGRhdGFzZXQgaXMgQ1NWLCBkYXRhIGlzIHNldCB0byB0aGUgcmF3IGJhdGNoZXNcbiAgICAgIGRhdGE6IHJlc3VsdCA/IHJlc3VsdCA6IGJhdGNoZXNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkRmlsZUluQmF0Y2hlcyh7XG4gIGZpbGUsXG4gIGxvYWRlcnMgPSBbXSxcbiAgbG9hZE9wdGlvbnMgPSB7fVxufToge1xuICBmaWxlOiBGaWxlO1xuICBmaWxlQ2FjaGU6IEZpbGVDYWNoZUl0ZW1bXTtcbiAgbG9hZGVyczogTG9hZGVyW107XG4gIGxvYWRPcHRpb25zOiBhbnk7XG59KTogUHJvbWlzZTxBc3luY0dlbmVyYXRvcj4ge1xuICBsb2FkZXJzID0gW0pTT05Mb2FkZXIsIENTVkxvYWRlciwgR2VvQXJyb3dMb2FkZXIsIFBhcnF1ZXRXYXNtTG9hZGVyLCAuLi5sb2FkZXJzXTtcbiAgbG9hZE9wdGlvbnMgPSB7XG4gICAgY3N2OiBDU1ZfTE9BREVSX09QVElPTlMsXG4gICAgYXJyb3c6IEFSUk9XX0xPQURFUl9PUFRJT05TLFxuICAgIGpzb246IEpTT05fTE9BREVSX09QVElPTlMsXG4gICAgcGFycXVldDogUEFSUVVFVF9MT0FERVJfT1BUSU9OUyxcbiAgICBtZXRhZGF0YTogdHJ1ZSxcbiAgICAuLi5sb2FkT3B0aW9uc1xuICB9O1xuXG4gIGNvbnN0IGJhdGNoSXRlcmF0b3IgPSBhd2FpdCBwYXJzZUluQmF0Y2hlcyhmaWxlLCBsb2FkZXJzLCBsb2FkT3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyZXNzSXRlcmF0b3IgPSBtYWtlUHJvZ3Jlc3NJdGVyYXRvcihiYXRjaEl0ZXJhdG9yLCB7c2l6ZTogZmlsZS5zaXplfSk7XG5cbiAgcmV0dXJuIHJlYWRCYXRjaChwcm9ncmVzc0l0ZXJhdG9yLCBmaWxlLm5hbWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZpbGVEYXRhKHtcbiAgY29udGVudCxcbiAgZmlsZUNhY2hlXG59OiB7XG4gIGNvbnRlbnQ6IFByb2Nlc3NGaWxlRGF0YUNvbnRlbnQ7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufSk6IFByb21pc2U8RmlsZUNhY2hlSXRlbVtdPiB7XG4gIGNvbnN0IHtmaWxlTmFtZSwgZGF0YX0gPSBjb250ZW50O1xuICBsZXQgZm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBwcm9jZXNzb3I6ICgoZGF0YTogYW55KSA9PiBQcm9jZXNzb3JSZXN1bHQgfCBMb2FkZWRNYXAgfCBudWxsKSB8IHVuZGVmaW5lZDtcbiAgLy8gZ2VuZXJhdGUgdW5pcXVlIGlkIHdpdGggbGVuZ3RoIG9mIDQgdXNpbmcgZmlsZU5hbWUgc3RyaW5nXG4gIGNvbnN0IGlkID0gZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nKGZpbGVOYW1lKTtcbiAgLy8gZGVjaWRlIG9uIHdoaWNoIHRhYmxlIGNsYXNzIHRvIHVzZSBiYXNlZCBvbiBhcHBsaWNhdGlvbiBjb25maWdcbiAgY29uc3QgdGFibGUgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuXG4gIGlmICh0eXBlb2YgdGFibGUuZ2V0RmlsZVByb2Nlc3NvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIHVzZSBjdXN0b20gcHJvY2Vzc29ycyBmcm9tIHRhYmxlIGNsYXNzXG4gICAgY29uc3QgcHJvY2Vzc29yUmVzdWx0ID0gdGFibGUuZ2V0RmlsZVByb2Nlc3NvcihkYXRhKTtcbiAgICBmb3JtYXQgPSBwcm9jZXNzb3JSZXN1bHQuZm9ybWF0O1xuICAgIHByb2Nlc3NvciA9IHByb2Nlc3NvclJlc3VsdC5wcm9jZXNzb3I7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXNlIGRlZmF1bHQgcHJvY2Vzc29yc1xuICAgIGlmIChpc0Fycm93RGF0YShkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmFycm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0Fycm93QmF0Y2hlcztcbiAgICB9IGVsc2UgaWYgKGlzS2VwbGVyR2xNYXAoZGF0YSkpIHtcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbDtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NLZXBsZXJnbEpTT047XG4gICAgfSBlbHNlIGlmIChpc1Jvd09iamVjdChkYXRhKSkge1xuICAgICAgLy8gY3N2IGZpbGUgZ29lcyBoZXJlXG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMucm93O1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc1Jvd09iamVjdDtcbiAgICB9IGVsc2UgaWYgKGlzR2VvSnNvbihkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmdlb2pzb247XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzR2VvanNvbjtcbiAgICB9XG4gIH1cbiAgaWYgKGZvcm1hdCAmJiBwcm9jZXNzb3IpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYXRjaFxuICAgIGxldCByZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHByb2Nlc3NvcihkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IHByb2Nlc3MgdXBsb2FkZWQgZmlsZSwgJHtnZXRFcnJvcihlcnJvciBhcyBFcnJvcil9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmZpbGVDYWNoZSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgbGFiZWw6IGNvbnRlbnQuZmlsZU5hbWUsXG4gICAgICAgICAgZm9ybWF0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBwcm9jZXNzIHVwbG9hZGVkIGZpbGUsIHVua25vd24gZmlsZSBmb3JtYXQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZXNUb0RhdGFQYXlsb2FkKGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdKTogQWRkRGF0YVRvTWFwUGF5bG9hZFtdIHtcbiAgLy8gc2VwZXJhdGUgb3V0IGZpbGVzIHdoaWNoIGNvdWxkIGJlIGEgc2luZ2xlIGRhdGFzZXRzLiBvciBhIGtlcGxlcmdsIG1hcCBqc29uXG4gIGNvbnN0IGNvbGxlY3Rpb24gPSBmaWxlQ2FjaGUucmVkdWNlPHtcbiAgICBkYXRhc2V0czogRmlsZUNhY2hlSXRlbVtdO1xuICAgIGtlcGxlck1hcHM6IEFkZERhdGFUb01hcFBheWxvYWRbXTtcbiAgfT4oXG4gICAgKGFjY3UsIGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IHtkYXRhLCBpbmZvfSA9IGZpbGU7XG4gICAgICBpZiAoaW5mbz8uZm9ybWF0ID09PSBEQVRBU0VUX0ZPUk1BVFMua2VwbGVyZ2wpIHtcbiAgICAgICAgLy8gaWYgZmlsZSBjb250YWlucyBhIHNpbmdsZSBrZXBsZXIgbWFwIGRhdGFzZXQgJiBjb25maWdcbiAgICAgICAgYWNjdS5rZXBsZXJNYXBzLnB1c2goe1xuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgY2VudGVyTWFwOiAhKGRhdGEuY29uZmlnICYmIGRhdGEuY29uZmlnLm1hcFN0YXRlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKERBVEFTRVRfRk9STUFUU1tpbmZvPy5mb3JtYXRdKSB7XG4gICAgICAgIC8vIGlmIGZpbGUgY29udGFpbnMgb25seSBkYXRhXG4gICAgICAgIGNvbnN0IG5ld0RhdGFzZXQgPSB7XG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICBpZDogaW5mbz8uaWQgfHwgZ2VuZXJhdGVIYXNoSWQoNCksXG4gICAgICAgICAgICAuLi4oaW5mbyB8fCB7fSlcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGFjY3UuZGF0YXNldHMucHVzaChuZXdEYXRhc2V0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1O1xuICAgIH0sXG4gICAge2RhdGFzZXRzOiBbXSwga2VwbGVyTWFwczogW119XG4gICk7XG5cbiAgLy8gYWRkIGtlcGxlciBtYXAgZmlyc3Qgd2l0aCBjb25maWdcbiAgLy8gYWRkIGRhdGFzZXRzIGxhdGVyIGluIG9uZSBhZGQgZGF0YSBjYWxsXG4gIHJldHVybiBjb2xsZWN0aW9uLmtlcGxlck1hcHMuY29uY2F0KHtkYXRhc2V0czogY29sbGVjdGlvbi5kYXRhc2V0c30pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsSUFBQSxHQUFBSCxPQUFBO0FBQ0Es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
407
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfanNvbiIsIl9jc3YiLCJfYXJyb3ciLCJfcGFycXVldCIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIl9jb25zdGFudHMiLCJfdGFibGUiLCJfZGF0YVByb2Nlc3NvciIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2FzeW5jSXRlcmF0b3IiLCJuIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsIml0ZXJhdG9yIiwiY2FsbCIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvciIsIlR5cGVFcnJvciIsIkFzeW5jRnJvbVN5bmNJdGVyYXRvckNvbnRpbnVhdGlvbiIsIlByb21pc2UiLCJyZWplY3QiLCJkb25lIiwicmVzb2x2ZSIsInZhbHVlIiwidGhlbiIsInMiLCJuZXh0IiwicHJvdG90eXBlIiwiX3JldHVybiIsIl90aHJvdyIsIkJBVENIX1RZUEUiLCJNRVRBREFUQSIsIlBBUlRJQUxfUkVTVUxUIiwiRklOQUxfUkVTVUxUIiwiQ1NWX0xPQURFUl9PUFRJT05TIiwic2hhcGUiLCJkeW5hbWljVHlwaW5nIiwiQVJST1dfTE9BREVSX09QVElPTlMiLCJiYXRjaERlYm91bmNlTXMiLCJQQVJRVUVUX0xPQURFUl9PUFRJT05TIiwiSlNPTl9MT0FERVJfT1BUSU9OUyIsImpzb25wYXRocyIsImlzQXJyb3dEYXRhIiwiZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIkJvb2xlYW4iLCJzY2hlbWEiLCJpc0dlb0pzb24iLCJqc29uIiwiaXNQbGFpbk9iamVjdCIsImlzRmVhdHVyZSIsImlzRmVhdHVyZUNvbGxlY3Rpb24iLCJ0eXBlIiwiZ2VvbWV0cnkiLCJmZWF0dXJlcyIsImlzUm93T2JqZWN0IiwiaXNLZXBsZXJHbE1hcCIsImRhdGFzZXRzIiwiY29uZmlnIiwiaW5mbyIsImFwcCIsIm1ha2VQcm9ncmVzc0l0ZXJhdG9yIiwiX3giLCJfeDIiLCJfbWFrZVByb2dyZXNzSXRlcmF0b3IiLCJfd3JhcEFzeW5jR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicm93Q291bnQiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uIiwiX2RpZEl0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3JFcnJvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiYmF0Y2giLCJyb3dDb3VudEluQmF0Y2giLCJwZXJjZW50IiwicHJvZ3Jlc3MiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJfYXdhaXRBc3luY0dlbmVyYXRvcjIiLCJzZW50IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJieXRlc1VzZWQiLCJzaXplIiwidDAiLCJmaW5pc2giLCJzdG9wIiwicmVhZEJhdGNoIiwiX3gzIiwiX3g0IiwiX3JlYWRCYXRjaCIsIl9jYWxsZWUyIiwiZmlsZU5hbWUiLCJyZXN1bHQiLCJiYXRjaGVzIiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbjIiLCJfZGlkSXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwic3RyZWFtaW5nUGF0aCIsImJhdGNoRGF0YSIsImkiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJiYXRjaFR5cGUiLCJjb250YWluZXIiLCJqc29ucGF0aCIsIl9KU09OUGF0aCIsInNldEZpZWxkQXRQYXRoIiwiaXNBcnJvd1RhYmxlIiwiaGVhZGVycyIsInJlYWRGaWxlSW5CYXRjaGVzIiwiX3g1IiwiX3JlYWRGaWxlSW5CYXRjaGVzIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX2NhbGxlZTMiLCJfcmVmIiwiZmlsZSIsIl9yZWYkbG9hZGVycyIsImxvYWRlcnMiLCJfcmVmJGxvYWRPcHRpb25zIiwibG9hZE9wdGlvbnMiLCJiYXRjaEl0ZXJhdG9yIiwicHJvZ3Jlc3NJdGVyYXRvciIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIkpTT05Mb2FkZXIiLCJDU1ZMb2FkZXIiLCJHZW9BcnJvd0xvYWRlciIsIlBhcnF1ZXRXYXNtTG9hZGVyIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNzdiIsImFycm93IiwicGFycXVldCIsIm1ldGFkYXRhIiwicGFyc2VJbkJhdGNoZXMiLCJhYnJ1cHQiLCJuYW1lIiwicHJvY2Vzc0ZpbGVEYXRhIiwiX3g2IiwiX3Byb2Nlc3NGaWxlRGF0YSIsIl9jYWxsZWU0IiwiX3JlZjIiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJjb250ZW50IiwiZmlsZUNhY2hlIiwiZm9ybWF0IiwicHJvY2Vzc29yIiwiaWQiLCJ0YWJsZSIsInByb2Nlc3NvclJlc3VsdCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImdlbmVyYXRlSGFzaElkRnJvbVN0cmluZyIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiS2VwbGVyVGFibGUiLCJnZXRGaWxlUHJvY2Vzc29yIiwiREFUQVNFVF9GT1JNQVRTIiwicHJvY2Vzc0Fycm93QmF0Y2hlcyIsImtlcGxlcmdsIiwicHJvY2Vzc0tlcGxlcmdsSlNPTiIsInJvdyIsInByb2Nlc3NSb3dPYmplY3QiLCJnZW9qc29uIiwicHJvY2Vzc0dlb2pzb24iLCJFcnJvciIsImdldEVycm9yIiwibGFiZWwiLCJmaWxlc1RvRGF0YVBheWxvYWQiLCJjb2xsZWN0aW9uIiwicmVkdWNlIiwiYWNjdSIsImtlcGxlck1hcHMiLCJvcHRpb25zIiwiY2VudGVyTWFwIiwibWFwU3RhdGUiLCJuZXdEYXRhc2V0IiwiZ2VuZXJhdGVIYXNoSWQiXSwic291cmNlcyI6WyIuLi9zcmMvZmlsZS1oYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7cGFyc2VJbkJhdGNoZXN9IGZyb20gJ0Bsb2FkZXJzLmdsL2NvcmUnO1xuaW1wb3J0IHtKU09OTG9hZGVyLCBfSlNPTlBhdGh9IGZyb20gJ0Bsb2FkZXJzLmdsL2pzb24nO1xuaW1wb3J0IHtDU1ZMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2Nzdic7XG5pbXBvcnQge0dlb0Fycm93TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9hcnJvdyc7XG5pbXBvcnQge1BhcnF1ZXRXYXNtTG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9wYXJxdWV0JztcbmltcG9ydCB7TG9hZGVyfSBmcm9tICdAbG9hZGVycy5nbC9sb2FkZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgaXNQbGFpbk9iamVjdCxcbiAgZ2VuZXJhdGVIYXNoSWRGcm9tU3RyaW5nLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0RXJyb3IsXG4gIGlzQXJyb3dUYWJsZVxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7REFUQVNFVF9GT1JNQVRTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FkZERhdGFUb01hcFBheWxvYWQsIEZlYXR1cmUsIExvYWRlZE1hcCwgUHJvY2Vzc29yUmVzdWx0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtGZWF0dXJlQ29sbGVjdGlvbn0gZnJvbSAnQHR1cmYvaGVscGVycyc7XG5cbmltcG9ydCB7XG4gIHByb2Nlc3NBcnJvd0JhdGNoZXMsXG4gIHByb2Nlc3NHZW9qc29uLFxuICBwcm9jZXNzS2VwbGVyZ2xKU09OLFxuICBwcm9jZXNzUm93T2JqZWN0XG59IGZyb20gJy4vZGF0YS1wcm9jZXNzb3InO1xuXG5pbXBvcnQge0ZpbGVDYWNoZUl0ZW0sIFZhbGlkS2VwbGVyR2xNYXB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBCQVRDSF9UWVBFID0ge1xuICBNRVRBREFUQTogJ21ldGFkYXRhJyxcbiAgUEFSVElBTF9SRVNVTFQ6ICdwYXJ0aWFsLXJlc3VsdCcsXG4gIEZJTkFMX1JFU1VMVDogJ2ZpbmFsLXJlc3VsdCdcbn07XG5cbmNvbnN0IENTVl9MT0FERVJfT1BUSU9OUyA9IHtcbiAgc2hhcGU6ICdvYmplY3Qtcm93LXRhYmxlJyxcbiAgZHluYW1pY1R5cGluZzogZmFsc2UgLy8gbm90IHdvcmtpbmcgZm9yIG5vd1xufTtcblxuY29uc3QgQVJST1dfTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnYXJyb3ctdGFibGUnLFxuICBiYXRjaERlYm91bmNlTXM6IDEwIC8vIHRpbWUgdG8gZGVsYXkgYmV0d2VlbiBiYXRjaGVzLCBmb3IgaW5jcmVtZW50YWwgbG9hZGluZ1xufTtcblxuY29uc3QgUEFSUVVFVF9MT0FERVJfT1BUSU9OUyA9IHtcbiAgc2hhcGU6ICdhcnJvdy10YWJsZSdcbn07XG5cbmNvbnN0IEpTT05fTE9BREVSX09QVElPTlMgPSB7XG4gIHNoYXBlOiAnb2JqZWN0LXJvdy10YWJsZScsXG4gIC8vIGluc3RydWN0IGxvYWRlcnMuZ2wgb24gd2hhdCBqc29uIHBhdGhzIHRvIHN0cmVhbVxuICBqc29ucGF0aHM6IFtcbiAgICAnJCcsIC8vIEpTT04gUm93IGFycmF5XG4gICAgJyQuZmVhdHVyZXMnLCAvLyBHZW9KU09OXG4gICAgJyQuZGF0YXNldHMnIC8vIEtlcGxlckdMIEpTT05cbiAgXVxufTtcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0ZpbGVEYXRhQ29udGVudCA9IHtcbiAgZGF0YTogdW5rbm93bjtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBwcm9ncmVzcz86IHtyb3dDb3VudD86IG51bWJlcjsgcm93Q291bnRJbkJhdGNoPzogbnVtYmVyOyBwZXJjZW50PzogbnVtYmVyfTtcbiAgLyoqICBtZXRhZGF0YSBlLmcuIGZvciBhcnJvdyBkYXRhLCBtZXRhZGF0YSBjb3VsZCBiZSB0aGUgc2NoZW1hLmZpZWxkcyAqL1xuICBtZXRhZGF0YT86IE1hcDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5leHBvcnQge2lzQXJyb3dUYWJsZX07XG5cbi8qKlxuICogY2hlY2sgaWYgZGF0YSBpcyBhbiBBcnJvd0RhdGEgb2JqZWN0LCB3aGljaCBpcyBhbiBhcnJheSBvZiBSZWNvcmRCYXRjaFxuICogQHBhcmFtIGRhdGEgLSBvYmplY3QgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHRydWUgaWYgZGF0YSBpcyBhbiBBcnJvd0RhdGEgb2JqZWN0IHR5cGUgZ3VhcmRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcnJvd0RhdGEoZGF0YTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpICYmIEJvb2xlYW4oZGF0YS5sZW5ndGggJiYgZGF0YVswXS5kYXRhICYmIGRhdGFbMF0uc2NoZW1hKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2VvSnNvbihqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlIHwgRmVhdHVyZUNvbGxlY3Rpb24ge1xuICAvLyBqc29uIGNhbiBiZSBmZWF0dXJlIGNvbGxlY3Rpb25cbiAgLy8gb3Igc2luZ2xlIGZlYXR1cmVcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYgKGlzRmVhdHVyZShqc29uKSB8fCBpc0ZlYXR1cmVDb2xsZWN0aW9uKGpzb24pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmVhdHVyZShqc29uOiB1bmtub3duKToganNvbiBpcyBGZWF0dXJlIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoanNvbikgJiYganNvbi50eXBlID09PSAnRmVhdHVyZScgJiYgQm9vbGVhbihqc29uLmdlb21ldHJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmVhdHVyZUNvbGxlY3Rpb24oanNvbjogdW5rbm93bik6IGpzb24gaXMgRmVhdHVyZUNvbGxlY3Rpb24ge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChqc29uKSAmJiBqc29uLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicgJiYgQm9vbGVhbihqc29uLmZlYXR1cmVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUm93T2JqZWN0KGpzb246IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShqc29uKSAmJiBpc1BsYWluT2JqZWN0KGpzb25bMF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLZXBsZXJHbE1hcChqc29uOiB1bmtub3duKToganNvbiBpcyBWYWxpZEtlcGxlckdsTWFwIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgaXNQbGFpbk9iamVjdChqc29uKSAmJlxuICAgICAganNvbi5kYXRhc2V0cyAmJlxuICAgICAganNvbi5jb25maWcgJiZcbiAgICAgIGpzb24uaW5mbyAmJlxuICAgICAgaXNQbGFpbk9iamVjdChqc29uLmluZm8pICYmXG4gICAgICBqc29uLmluZm8uYXBwID09PSAna2VwbGVyLmdsJ1xuICApO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIG1ha2VQcm9ncmVzc0l0ZXJhdG9yKFxuICBhc3luY0l0ZXJhdG9yOiBBc3luY0l0ZXJhYmxlPGFueT4sXG4gIGluZm86IHtzaXplOiBudW1iZXJ9XG4pOiBBc3luY0dlbmVyYXRvciB7XG4gIGxldCByb3dDb3VudCA9IDA7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBiYXRjaCBvZiBhc3luY0l0ZXJhdG9yKSB7XG4gICAgLy8gdGhlIGxlbmd0aCBjb3VsZCBiZSBzdG9yZWQgaW4gYGJhdGNoLmxlbmd0aGAgZm9yIGFycm93IGJhdGNoXG4gICAgY29uc3Qgcm93Q291bnRJbkJhdGNoID0gKGJhdGNoLmRhdGEgJiYgKGJhdGNoLmRhdGEubGVuZ3RoIHx8IGJhdGNoLmxlbmd0aCkpIHx8IDA7XG4gICAgcm93Q291bnQgKz0gcm93Q291bnRJbkJhdGNoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSBOdW1iZXIuaXNGaW5pdGUoYmF0Y2guYnl0ZXNVc2VkKSA/IGJhdGNoLmJ5dGVzVXNlZCAvIGluZm8uc2l6ZSA6IG51bGw7XG5cbiAgICAvLyBVcGRhdGUgcHJvZ3Jlc3Mgb2JqZWN0XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSB7XG4gICAgICByb3dDb3VudCxcbiAgICAgIHJvd0NvdW50SW5CYXRjaCxcbiAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUocGVyY2VudCkgPyB7cGVyY2VudH0gOiB7fSlcbiAgICB9O1xuXG4gICAgeWllbGQgey4uLmJhdGNoLCBwcm9ncmVzc307XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogcmVhZEJhdGNoKFxuICBhc3luY0l0ZXJhdG9yOiBBc3luY0l0ZXJhYmxlPGFueT4sXG4gIGZpbGVOYW1lOiBzdHJpbmdcbik6IEFzeW5jR2VuZXJhdG9yIHtcbiAgbGV0IHJlc3VsdCA9IG51bGw7XG4gIGNvbnN0IGJhdGNoZXMgPSA8YW55PltdO1xuICBmb3IgYXdhaXQgKGNvbnN0IGJhdGNoIG9mIGFzeW5jSXRlcmF0b3IpIHtcbiAgICAvLyBMYXN0IGJhdGNoIHdpbGwgaGF2ZSB0aGlzIHNwZWNpYWwgdHlwZSBhbmQgd2lsbCBwcm92aWRlIGFsbCB0aGUgcm9vdFxuICAgIC8vIHByb3BlcnRpZXMgb2YgdGhlIHBhcnNlZCBkb2N1bWVudC5cbiAgICAvLyBPbmx5IGpzb24gcGFyc2Ugd2lsbCBoYXZlIGBGSU5BTF9SRVNVTFRgXG4gICAgaWYgKGJhdGNoLmJhdGNoVHlwZSA9PT0gQkFUQ0hfVFlQRS5GSU5BTF9SRVNVTFQpIHtcbiAgICAgIGlmIChiYXRjaC5jb250YWluZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gey4uLmJhdGNoLmNvbnRhaW5lcn07XG4gICAgICB9XG4gICAgICAvLyBTZXQgdGhlIHN0cmVhbWVkIGRhdGEgY29ycmVjdGx5IGlzIEJhdGNoIGpzb24gcGF0aCBpcyBzZXRcbiAgICAgIC8vIGFuZCB0aGUgcGF0aCBzdHJlYW1lZCBpcyBub3QgdGhlIHRvcCBsZXZlbCBvYmplY3QgKGpzb25wYXRoID0gJyQnKVxuICAgICAgaWYgKGJhdGNoLmpzb25wYXRoICYmIGJhdGNoLmpzb25wYXRoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3Qgc3RyZWFtaW5nUGF0aCA9IG5ldyBfSlNPTlBhdGgoYmF0Y2guanNvbnBhdGgpO1xuICAgICAgICBzdHJlYW1pbmdQYXRoLnNldEZpZWxkQXRQYXRoKHJlc3VsdCwgYmF0Y2hlcyk7XG4gICAgICB9IGVsc2UgaWYgKGJhdGNoLmpzb25wYXRoICYmIGJhdGNoLmpzb25wYXRoLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAvLyBUaGUgc3RyZWFtZWQgb2JqZWN0IGlzIGEgUk9XIEpTT04tYmF0Y2ggKGpzb25wYXRoID0gJyQnKVxuICAgICAgICAvLyByb3cgb2JqZWN0c1xuICAgICAgICByZXN1bHQgPSBiYXRjaGVzO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBiYXRjaERhdGEgPSBpc0Fycm93VGFibGUoYmF0Y2guZGF0YSkgPyBiYXRjaC5kYXRhLmJhdGNoZXMgOiBiYXRjaC5kYXRhO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiYXRjaERhdGE/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJhdGNoZXMucHVzaChiYXRjaERhdGFbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHlpZWxkIHtcbiAgICAgIC4uLmJhdGNoLFxuICAgICAgLi4uKGJhdGNoLnNjaGVtYSA/IHtoZWFkZXJzOiBPYmplY3Qua2V5cyhiYXRjaC5zY2hlbWEpfSA6IHt9KSxcbiAgICAgIGZpbGVOYW1lLFxuICAgICAgLy8gaWYgZGF0YXNldCBpcyBDU1YsIGRhdGEgaXMgc2V0IHRvIHRoZSByYXcgYmF0Y2hlc1xuICAgICAgZGF0YTogcmVzdWx0ID8gcmVzdWx0IDogYmF0Y2hlc1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlSW5CYXRjaGVzKHtcbiAgZmlsZSxcbiAgbG9hZGVycyA9IFtdLFxuICBsb2FkT3B0aW9ucyA9IHt9XG59OiB7XG4gIGZpbGU6IEZpbGU7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xuICBsb2FkZXJzOiBMb2FkZXJbXTtcbiAgbG9hZE9wdGlvbnM6IGFueTtcbn0pOiBQcm9taXNlPEFzeW5jR2VuZXJhdG9yPiB7XG4gIGxvYWRlcnMgPSBbSlNPTkxvYWRlciwgQ1NWTG9hZGVyLCBHZW9BcnJvd0xvYWRlciwgUGFycXVldFdhc21Mb2FkZXIsIC4uLmxvYWRlcnNdO1xuICBsb2FkT3B0aW9ucyA9IHtcbiAgICBjc3Y6IENTVl9MT0FERVJfT1BUSU9OUyxcbiAgICBhcnJvdzogQVJST1dfTE9BREVSX09QVElPTlMsXG4gICAganNvbjogSlNPTl9MT0FERVJfT1BUSU9OUyxcbiAgICBwYXJxdWV0OiBQQVJRVUVUX0xPQURFUl9PUFRJT05TLFxuICAgIG1ldGFkYXRhOiB0cnVlLFxuICAgIC4uLmxvYWRPcHRpb25zXG4gIH07XG5cbiAgY29uc3QgYmF0Y2hJdGVyYXRvciA9IGF3YWl0IHBhcnNlSW5CYXRjaGVzKGZpbGUsIGxvYWRlcnMsIGxvYWRPcHRpb25zKTtcbiAgY29uc3QgcHJvZ3Jlc3NJdGVyYXRvciA9IG1ha2VQcm9ncmVzc0l0ZXJhdG9yKGJhdGNoSXRlcmF0b3IsIHtzaXplOiBmaWxlLnNpemV9KTtcblxuICByZXR1cm4gcmVhZEJhdGNoKHByb2dyZXNzSXRlcmF0b3IsIGZpbGUubmFtZSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRmlsZURhdGEoe1xuICBjb250ZW50LFxuICBmaWxlQ2FjaGVcbn06IHtcbiAgY29udGVudDogUHJvY2Vzc0ZpbGVEYXRhQ29udGVudDtcbiAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG59KTogUHJvbWlzZTxGaWxlQ2FjaGVJdGVtW10+IHtcbiAgY29uc3Qge2ZpbGVOYW1lLCBkYXRhfSA9IGNvbnRlbnQ7XG4gIGxldCBmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHByb2Nlc3NvcjogKChkYXRhOiBhbnkpID0+IFByb2Nlc3NvclJlc3VsdCB8IExvYWRlZE1hcCB8IG51bGwpIHwgdW5kZWZpbmVkO1xuICAvLyBnZW5lcmF0ZSB1bmlxdWUgaWQgd2l0aCBsZW5ndGggb2YgNCB1c2luZyBmaWxlTmFtZSBzdHJpbmdcbiAgY29uc3QgaWQgPSBnZW5lcmF0ZUhhc2hJZEZyb21TdHJpbmcoZmlsZU5hbWUpO1xuICAvLyBkZWNpZGUgb24gd2hpY2ggdGFibGUgY2xhc3MgdG8gdXNlIGJhc2VkIG9uIGFwcGxpY2F0aW9uIGNvbmZpZ1xuICBjb25zdCB0YWJsZSA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkudGFibGUgPz8gS2VwbGVyVGFibGU7XG5cbiAgaWYgKHR5cGVvZiB0YWJsZS5nZXRGaWxlUHJvY2Vzc29yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gdXNlIGN1c3RvbSBwcm9jZXNzb3JzIGZyb20gdGFibGUgY2xhc3NcbiAgICBjb25zdCBwcm9jZXNzb3JSZXN1bHQgPSB0YWJsZS5nZXRGaWxlUHJvY2Vzc29yKGRhdGEpO1xuICAgIGZvcm1hdCA9IHByb2Nlc3NvclJlc3VsdC5mb3JtYXQ7XG4gICAgcHJvY2Vzc29yID0gcHJvY2Vzc29yUmVzdWx0LnByb2Nlc3NvcjtcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBwcm9jZXNzb3JzXG4gICAgaWYgKGlzQXJyb3dEYXRhKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuYXJyb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzQXJyb3dCYXRjaGVzO1xuICAgIH0gZWxzZSBpZiAoaXNLZXBsZXJHbE1hcChkYXRhKSkge1xuICAgICAgZm9ybWF0ID0gREFUQVNFVF9GT1JNQVRTLmtlcGxlcmdsO1xuICAgICAgcHJvY2Vzc29yID0gcHJvY2Vzc0tlcGxlcmdsSlNPTjtcbiAgICB9IGVsc2UgaWYgKGlzUm93T2JqZWN0KGRhdGEpKSB7XG4gICAgICAvLyBjc3YgZmlsZSBnb2VzIGhlcmVcbiAgICAgIGZvcm1hdCA9IERBVEFTRVRfRk9STUFUUy5yb3c7XG4gICAgICBwcm9jZXNzb3IgPSBwcm9jZXNzUm93T2JqZWN0O1xuICAgIH0gZWxzZSBpZiAoaXNHZW9Kc29uKGRhdGEpKSB7XG4gICAgICBmb3JtYXQgPSBEQVRBU0VUX0ZPUk1BVFMuZ2VvanNvbjtcbiAgICAgIHByb2Nlc3NvciA9IHByb2Nlc3NHZW9qc29uO1xuICAgIH1cbiAgfVxuICBpZiAoZm9ybWF0ICYmIHByb2Nlc3Nvcikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhdGNoXG4gICAgbGV0IHJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcHJvY2Vzc29yKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbiBub3QgcHJvY2VzcyB1cGxvYWRlZCBmaWxlLCAke2dldEVycm9yKGVycm9yIGFzIEVycm9yKX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uZmlsZUNhY2hlLFxuICAgICAge1xuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICAgIGluZm86IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBsYWJlbDogY29udGVudC5maWxlTmFtZSxcbiAgICAgICAgICBmb3JtYXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gbm90IHByb2Nlc3MgdXBsb2FkZWQgZmlsZSwgdW5rbm93biBmaWxlIGZvcm1hdCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlc1RvRGF0YVBheWxvYWQoZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW10pOiBBZGREYXRhVG9NYXBQYXlsb2FkW10ge1xuICAvLyBzZXBlcmF0ZSBvdXQgZmlsZXMgd2hpY2ggY291bGQgYmUgYSBzaW5nbGUgZGF0YXNldHMuIG9yIGEga2VwbGVyZ2wgbWFwIGpzb25cbiAgY29uc3QgY29sbGVjdGlvbiA9IGZpbGVDYWNoZS5yZWR1Y2U8e1xuICAgIGRhdGFzZXRzOiBGaWxlQ2FjaGVJdGVtW107XG4gICAga2VwbGVyTWFwczogQWRkRGF0YVRvTWFwUGF5bG9hZFtdO1xuICB9PihcbiAgICAoYWNjdSwgZmlsZSkgPT4ge1xuICAgICAgY29uc3Qge2RhdGEsIGluZm99ID0gZmlsZTtcbiAgICAgIGlmIChpbmZvPy5mb3JtYXQgPT09IERBVEFTRVRfRk9STUFUUy5rZXBsZXJnbCkge1xuICAgICAgICAvLyBpZiBmaWxlIGNvbnRhaW5zIGEgc2luZ2xlIGtlcGxlciBtYXAgZGF0YXNldCAmIGNvbmZpZ1xuICAgICAgICBhY2N1LmtlcGxlck1hcHMucHVzaCh7XG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBjZW50ZXJNYXA6ICEoZGF0YS5jb25maWcgJiYgZGF0YS5jb25maWcubWFwU3RhdGUpXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoREFUQVNFVF9GT1JNQVRTW2luZm8/LmZvcm1hdF0pIHtcbiAgICAgICAgLy8gaWYgZmlsZSBjb250YWlucyBvbmx5IGRhdGFcbiAgICAgICAgY29uc3QgbmV3RGF0YXNldCA9IHtcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgIGlkOiBpbmZvPy5pZCB8fCBnZW5lcmF0ZUhhc2hJZCg0KSxcbiAgICAgICAgICAgIC4uLihpbmZvIHx8IHt9KVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYWNjdS5kYXRhc2V0cy5wdXNoKG5ld0RhdGFzZXQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3U7XG4gICAgfSxcbiAgICB7ZGF0YXNldHM6IFtdLCBrZXBsZXJNYXBzOiBbXX1cbiAgKTtcblxuICAvLyBhZGQga2VwbGVyIG1hcCBmaXJzdCB3aXRoIGNvbmZpZ1xuICAvLyBhZGQgZGF0YXNldHMgbGF0ZXIgaW4gb25lIGFkZCBkYXRhIGNhbGxcbiAgcmV0dXJuIGNvbGxlY3Rpb24ua2VwbGVyTWFwcy5jb25jYXQoe2RhdGFzZXRzOiBjb2xsZWN0aW9uLmRhdGFzZXRzfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsSUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBR0EsSUFBQVMsY0FBQSxHQUFBVCxPQUFBO0FBSzBCLFNBQUFVLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENB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LFNBQUEsQ0FBQXBFLElBQUE7TUFBQTtJQUFBLEdBQUF5RCxRQUFBO0VBQUEsQ0FFeEU7RUFBQSxPQUFBRCxnQkFBQSxDQUFBbkosS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFFTSxTQUFTNkssa0JBQWtCQSxDQUFDdkIsU0FBMEIsRUFBeUI7RUFDcEY7RUFDQSxJQUFNd0IsVUFBVSxHQUFHeEIsU0FBUyxDQUFDeUIsTUFBTSxDQUlqQyxVQUFDQyxJQUFJLEVBQUV2RCxJQUFJLEVBQUs7SUFDZCxJQUFPakYsSUFBSSxHQUFVaUYsSUFBSSxDQUFsQmpGLElBQUk7TUFBRWlCLElBQUksR0FBSWdFLElBQUksQ0FBWmhFLElBQUk7SUFDakIsSUFBSSxDQUFBQSxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRThGLE1BQU0sTUFBS1csMEJBQWUsQ0FBQ0UsUUFBUSxFQUFFO01BQzdDO01BQ0FZLElBQUksQ0FBQ0MsVUFBVSxDQUFDcEwsSUFBSSxDQUFBRSxhQUFBLENBQUFBLGFBQUEsS0FDZnlDLElBQUk7UUFDUDBJLE9BQU8sRUFBRTtVQUNQQyxTQUFTLEVBQUUsRUFBRTNJLElBQUksQ0FBQ2dCLE1BQU0sSUFBSWhCLElBQUksQ0FBQ2dCLE1BQU0sQ0FBQzRILFFBQVE7UUFDbEQ7TUFBQyxFQUNGLENBQUM7SUFDSixDQUFDLE1BQU0sSUFBSWxCLDBCQUFlLENBQUN6RyxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRThGLE1BQU0sQ0FBQyxFQUFFO01BQ3hDO01BQ0EsSUFBTThCLFVBQVUsR0FBRztRQUNqQjdJLElBQUksRUFBSkEsSUFBSTtRQUNKaUIsSUFBSSxFQUFBMUQsYUFBQTtVQUNGMEosRUFBRSxFQUFFLENBQUFoRyxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRWdHLEVBQUUsS0FBSSxJQUFBNkIsMkJBQWMsRUFBQyxDQUFDO1FBQUMsR0FDN0I3SCxJQUFJLElBQUksQ0FBQyxDQUFDO01BRWxCLENBQUM7TUFDRHVILElBQUksQ0FBQ3pILFFBQVEsQ0FBQzFELElBQUksQ0FBQ3dMLFVBQVUsQ0FBQztJQUNoQztJQUNBLE9BQU9MLElBQUk7RUFDYixDQUFDLEVBQ0Q7SUFBQ3pILFFBQVEsRUFBRSxFQUFFO0lBQUUwSCxVQUFVLEVBQUU7RUFBRSxDQUMvQixDQUFDOztFQUVEO0VBQ0E7RUFDQSxPQUFPSCxVQUFVLENBQUNHLFVBQVUsQ0FBQzNDLE1BQU0sQ0FBQztJQUFDL0UsUUFBUSxFQUFFdUgsVUFBVSxDQUFDdkg7RUFBUSxDQUFDLENBQUM7QUFDdEUiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/processors",
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",
@@ -31,12 +31,12 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@danmarshall/deckgl-typings": "4.9.22",
34
- "@kepler.gl/common-utils": "3.2.2",
35
- "@kepler.gl/constants": "3.2.2",
36
- "@kepler.gl/schemas": "3.2.2",
37
- "@kepler.gl/table": "3.2.2",
38
- "@kepler.gl/types": "3.2.2",
39
- "@kepler.gl/utils": "3.2.2",
34
+ "@kepler.gl/common-utils": "3.2.3",
35
+ "@kepler.gl/constants": "3.2.3",
36
+ "@kepler.gl/schemas": "3.2.3",
37
+ "@kepler.gl/table": "3.2.3",
38
+ "@kepler.gl/types": "3.2.3",
39
+ "@kepler.gl/utils": "3.2.3",
40
40
  "@loaders.gl/arrow": "^4.3.2",
41
41
  "@loaders.gl/core": "^4.3.2",
42
42
  "@loaders.gl/csv": "^4.3.2",
@@ -1,7 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
  // Copyright contributors to the kepler.gl project
3
3
 
4
- import * as arrow from 'apache-arrow';
5
4
  import {parseInBatches} from '@loaders.gl/core';
6
5
  import {JSONLoader, _JSONPath} from '@loaders.gl/json';
7
6
  import {CSVLoader} from '@loaders.gl/csv';
@@ -12,7 +11,8 @@ import {
12
11
  isPlainObject,
13
12
  generateHashIdFromString,
14
13
  getApplicationConfig,
15
- getError
14
+ getError,
15
+ isArrowTable
16
16
  } from '@kepler.gl/utils';
17
17
  import {generateHashId} from '@kepler.gl/common-utils';
18
18
  import {DATASET_FORMATS} from '@kepler.gl/constants';
@@ -68,14 +68,7 @@ export type ProcessFileDataContent = {
68
68
  metadata?: Map<string, string>;
69
69
  };
70
70
 
71
- /**
72
- * check if table is an ArrowTable object
73
- * @param table - object to check
74
- * @returns {boolean} - true if table is an ArrowTable object type guarded
75
- */
76
- export function isArrowTable(table: any): table is arrow.Table {
77
- return Boolean(table instanceof arrow.Table);
78
- }
71
+ export {isArrowTable};
79
72
 
80
73
  /**
81
74
  * check if data is an ArrowData object, which is an array of RecordBatch
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/reducers",
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",
@@ -30,21 +30,21 @@
30
30
  "umd"
31
31
  ],
32
32
  "dependencies": {
33
- "@kepler.gl/actions": "3.2.2",
34
- "@kepler.gl/cloud-providers": "3.2.2",
35
- "@kepler.gl/common-utils": "3.2.2",
36
- "@kepler.gl/constants": "3.2.2",
37
- "@kepler.gl/deckgl-arrow-layers": "3.2.2",
38
- "@kepler.gl/deckgl-layers": "3.2.2",
39
- "@kepler.gl/effects": "3.2.2",
40
- "@kepler.gl/layers": "3.2.2",
41
- "@kepler.gl/localization": "3.2.2",
42
- "@kepler.gl/processors": "3.2.2",
43
- "@kepler.gl/schemas": "3.2.2",
44
- "@kepler.gl/table": "3.2.2",
45
- "@kepler.gl/tasks": "3.2.2",
46
- "@kepler.gl/types": "3.2.2",
47
- "@kepler.gl/utils": "3.2.2",
33
+ "@kepler.gl/actions": "3.2.3",
34
+ "@kepler.gl/cloud-providers": "3.2.3",
35
+ "@kepler.gl/common-utils": "3.2.3",
36
+ "@kepler.gl/constants": "3.2.3",
37
+ "@kepler.gl/deckgl-arrow-layers": "3.2.3",
38
+ "@kepler.gl/deckgl-layers": "3.2.3",
39
+ "@kepler.gl/effects": "3.2.3",
40
+ "@kepler.gl/layers": "3.2.3",
41
+ "@kepler.gl/localization": "3.2.3",
42
+ "@kepler.gl/processors": "3.2.3",
43
+ "@kepler.gl/schemas": "3.2.3",
44
+ "@kepler.gl/table": "3.2.3",
45
+ "@kepler.gl/tasks": "3.2.3",
46
+ "@kepler.gl/types": "3.2.3",
47
+ "@kepler.gl/utils": "3.2.3",
48
48
  "@loaders.gl/loader-utils": "^4.3.2",
49
49
  "@mapbox/geo-viewport": "^0.4.1",
50
50
  "@math.gl/web-mercator": "^3.6.2",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/schemas",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.2.2",
4
+ "version": "3.2.3",
5
5
  "description": "kepler.gl schemas used by kepler.gl components, actions and reducers",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
@@ -30,12 +30,12 @@
30
30
  "umd"
31
31
  ],
32
32
  "dependencies": {
33
- "@kepler.gl/common-utils": "3.2.2",
34
- "@kepler.gl/constants": "3.2.2",
35
- "@kepler.gl/layers": "3.2.2",
36
- "@kepler.gl/table": "3.2.2",
37
- "@kepler.gl/types": "3.2.2",
38
- "@kepler.gl/utils": "3.2.2",
33
+ "@kepler.gl/common-utils": "3.2.3",
34
+ "@kepler.gl/constants": "3.2.3",
35
+ "@kepler.gl/layers": "3.2.3",
36
+ "@kepler.gl/table": "3.2.3",
37
+ "@kepler.gl/types": "3.2.3",
38
+ "@kepler.gl/utils": "3.2.3",
39
39
  "@loaders.gl/loader-utils": "^4.3.2",
40
40
  "@types/keymirror": "^0.1.1",
41
41
  "@types/lodash": "4.17.5",