kepler.gl 3.1.7 → 3.1.8

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 (136) hide show
  1. package/dist/src/actions/src/ui-state-actions.d.ts +0 -16
  2. package/dist/src/actions/src/vis-state-actions.d.ts +26 -0
  3. package/dist/src/ai-assistant/src/constants.d.ts +2 -5
  4. package/dist/src/ai-assistant/src/tools/geo-tools.d.ts +76 -25
  5. package/dist/src/ai-assistant/src/tools/tools.d.ts +76 -25
  6. package/dist/src/components/src/side-panel/add-by-dataset-button.d.ts +0 -1
  7. package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +8 -9
  8. package/dist/src/localization/src/translations/ca.d.ts +2 -0
  9. package/dist/src/localization/src/translations/cn.d.ts +2 -0
  10. package/dist/src/localization/src/translations/en.d.ts +2 -0
  11. package/dist/src/localization/src/translations/es.d.ts +2 -0
  12. package/dist/src/localization/src/translations/fi.d.ts +2 -0
  13. package/dist/src/localization/src/translations/ja.d.ts +2 -0
  14. package/dist/src/localization/src/translations/pt.d.ts +2 -0
  15. package/dist/src/localization/src/translations/ru.d.ts +2 -0
  16. package/dist/src/reducers/src/ui-state-updaters.d.ts +0 -10
  17. package/dist/src/reducers/src/vis-state-updaters.d.ts +16 -1
  18. package/dist/src/reducers/src/vis-state.d.ts +4 -0
  19. package/dist/src/schemas/src/vis-state-schema.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/actions/dist/ui-state-actions.d.ts +0 -16
  22. package/src/actions/dist/ui-state-actions.js +2 -17
  23. package/src/actions/dist/vis-state-actions.d.ts +26 -0
  24. package/src/actions/dist/vis-state-actions.js +25 -1
  25. package/src/actions/package.json +8 -8
  26. package/src/actions/src/ui-state-actions.ts +0 -22
  27. package/src/actions/src/vis-state-actions.ts +30 -0
  28. package/src/ai-assistant/dist/components/ai-assistant-component.js +63 -4
  29. package/src/ai-assistant/dist/components/ai-assistant-config.js +55 -17
  30. package/src/ai-assistant/dist/constants.d.ts +2 -5
  31. package/src/ai-assistant/dist/constants.js +3 -21
  32. package/src/ai-assistant/dist/reducers/index.js +2 -2
  33. package/src/ai-assistant/dist/tools/geo-tools.d.ts +76 -25
  34. package/src/ai-assistant/dist/tools/geo-tools.js +44 -8
  35. package/src/ai-assistant/dist/tools/lisa-tool.js +17 -6
  36. package/src/ai-assistant/dist/tools/tools.d.ts +76 -25
  37. package/src/ai-assistant/package.json +19 -14
  38. package/src/ai-assistant/src/components/ai-assistant-component.tsx +34 -4
  39. package/src/ai-assistant/src/components/ai-assistant-config.tsx +64 -18
  40. package/src/ai-assistant/src/config/models.json +5 -24
  41. package/src/ai-assistant/src/constants.ts +21 -26
  42. package/src/ai-assistant/src/reducers/index.ts +1 -1
  43. package/src/ai-assistant/src/tools/geo-tools.tsx +70 -9
  44. package/src/ai-assistant/src/tools/lisa-tool.tsx +15 -4
  45. package/src/cloud-providers/package.json +2 -2
  46. package/src/common-utils/package.json +3 -3
  47. package/src/components/dist/kepler-gl.js +2 -2
  48. package/src/components/dist/map/map-popover.js +2 -2
  49. package/src/components/dist/map-container.js +2 -2
  50. package/src/components/dist/side-panel/add-by-dataset-button.d.ts +0 -1
  51. package/src/components/dist/side-panel/add-by-dataset-button.js +1 -3
  52. package/src/components/dist/side-panel/filter-panel/add-filter-button.js +1 -2
  53. package/src/components/dist/side-panel/layer-panel/add-layer-button.js +1 -2
  54. package/src/components/dist/side-panel/layer-panel/custom-picker.js +18 -5
  55. package/src/components/package.json +15 -15
  56. package/src/components/src/kepler-gl.tsx +1 -1
  57. package/src/components/src/map/map-popover.tsx +1 -1
  58. package/src/components/src/map-container.tsx +1 -1
  59. package/src/components/src/side-panel/add-by-dataset-button.tsx +0 -3
  60. package/src/components/src/side-panel/filter-panel/add-filter-button.tsx +0 -1
  61. package/src/components/src/side-panel/layer-panel/add-layer-button.tsx +0 -1
  62. package/src/components/src/side-panel/layer-panel/custom-picker.tsx +15 -1
  63. package/src/constants/dist/default-settings.js +1 -1
  64. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/e6/16/9fd3750f7cfc51cf980ec6937f88e24e5b03b144d0439efabdec6a028ce7442883abce42b76f97bffa8d37bfb65c10508e48d68a2b019c4b750a48374080 +1 -0
  65. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b6/51/9b3488269917e0404a46b4db6235f226deef2d5b5b5ffb7414dafaa60b52 +2 -0
  66. package/src/constants/package.json +2 -2
  67. package/src/constants/umd/keplergl.min.js +1 -1
  68. package/src/deckgl-arrow-layers/package.json +2 -2
  69. package/src/deckgl-layers/package.json +4 -4
  70. package/src/duckdb/dist/components/sql-panel.js +34 -33
  71. package/src/duckdb/dist/table/duckdb-table-utils.d.ts +8 -9
  72. package/src/duckdb/dist/table/duckdb-table-utils.js +21 -23
  73. package/src/duckdb/dist/table/duckdb-table.js +20 -17
  74. package/src/duckdb/package.json +6 -6
  75. package/src/duckdb/src/components/sql-panel.tsx +3 -5
  76. package/src/duckdb/src/table/duckdb-table-utils.ts +19 -18
  77. package/src/duckdb/src/table/duckdb-table.ts +7 -4
  78. package/src/effects/package.json +5 -5
  79. package/src/layers/dist/geojson-layer/geojson-layer.js +5 -2
  80. package/src/layers/package.json +9 -9
  81. package/src/layers/src/geojson-layer/geojson-layer.ts +4 -1
  82. package/src/localization/dist/translations/ca.d.ts +2 -0
  83. package/src/localization/dist/translations/ca.js +3 -1
  84. package/src/localization/dist/translations/cn.d.ts +2 -0
  85. package/src/localization/dist/translations/cn.js +3 -1
  86. package/src/localization/dist/translations/en.d.ts +2 -0
  87. package/src/localization/dist/translations/en.js +4 -2
  88. package/src/localization/dist/translations/es.d.ts +2 -0
  89. package/src/localization/dist/translations/es.js +3 -1
  90. package/src/localization/dist/translations/fi.d.ts +2 -0
  91. package/src/localization/dist/translations/fi.js +3 -1
  92. package/src/localization/dist/translations/ja.d.ts +2 -0
  93. package/src/localization/dist/translations/ja.js +3 -1
  94. package/src/localization/dist/translations/pt.d.ts +2 -0
  95. package/src/localization/dist/translations/pt.js +3 -1
  96. package/src/localization/dist/translations/ru.d.ts +2 -0
  97. package/src/localization/dist/translations/ru.js +3 -1
  98. package/src/localization/package.json +1 -1
  99. package/src/localization/src/translations/ca.ts +2 -0
  100. package/src/localization/src/translations/cn.ts +2 -0
  101. package/src/localization/src/translations/en.ts +4 -2
  102. package/src/localization/src/translations/es.ts +2 -0
  103. package/src/localization/src/translations/fi.ts +2 -0
  104. package/src/localization/src/translations/ja.ts +2 -0
  105. package/src/localization/src/translations/pt.ts +2 -0
  106. package/src/localization/src/translations/ru.ts +2 -0
  107. package/src/processors/dist/file-handler.js +13 -14
  108. package/src/processors/package.json +7 -7
  109. package/src/processors/src/file-handler.ts +0 -1
  110. package/src/reducers/dist/combined-updaters.js +4 -2
  111. package/src/reducers/dist/ui-state-updaters.d.ts +0 -10
  112. package/src/reducers/dist/ui-state-updaters.js +2 -22
  113. package/src/reducers/dist/ui-state.js +2 -2
  114. package/src/reducers/dist/vis-state-updaters.d.ts +16 -1
  115. package/src/reducers/dist/vis-state-updaters.js +79 -45
  116. package/src/reducers/dist/vis-state.d.ts +4 -0
  117. package/src/reducers/dist/vis-state.js +2 -2
  118. package/src/reducers/package.json +16 -16
  119. package/src/reducers/src/combined-updaters.ts +1 -0
  120. package/src/reducers/src/ui-state-updaters.ts +0 -24
  121. package/src/reducers/src/ui-state.ts +1 -3
  122. package/src/reducers/src/vis-state-updaters.ts +74 -22
  123. package/src/reducers/src/vis-state.ts +3 -1
  124. package/src/schemas/dist/vis-state-schema.d.ts +1 -0
  125. package/src/schemas/dist/vis-state-schema.js +1 -1
  126. package/src/schemas/package.json +7 -7
  127. package/src/schemas/src/vis-state-schema.ts +1 -0
  128. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/f9/fc/86ccce4fa2c3e73042785814bc24476cb7cc9531d16a7c2ecb66bfc154f7b35d7416d852faa175d172da177931675cd2ba82e3b7898e8f4bf499921b00c2 +1 -0
  129. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/ba/31/d609a3a75657c3640471d5a925a4a64689ea3853d9379bdcd675dba816a2 +2 -0
  130. package/src/styles/package.json +2 -2
  131. package/src/styles/umd/keplergl.min.js +1 -1
  132. package/src/table/package.json +5 -5
  133. package/src/tasks/package.json +2 -2
  134. package/src/types/package.json +1 -1
  135. package/src/utils/package.json +4 -4
  136. package/umd/keplergl.min.js +1350 -1312
@@ -995,4 +995,4 @@ var visStateSchema = exports.visStateSchema = (0, _defineProperty2["default"])((
995
995
 
996
996
  // test load v0
997
997
  var _default = exports["default"] = visStateSchema;
998
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGljayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3ZlcnNpb25zIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIl9zY2hlbWEiLCJfY2xvbmVEZWVwIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJkaW1lbnNpb25Qcm9wc1YwIiwiZXhwb3J0cyIsImdlb2pzb25TaXplRmllbGRWMFRvVjEiLCJjb25maWciLCJkZWZhdWx0UmFpdWRzIiwiZGVmYXVsdFJhZGl1c1JhbmdlIiwidmlzQ29uZmlnIiwiZXh0cnVkZWQiLCJzdHJva2VkIiwicmFkaXVzIiwicmFkaXVzUmFuZ2UiLCJzb21lIiwiZCIsImkiLCJEaW1lbnNpb25GaWVsZFNjaGVtYVYwIiwiX1NjaGVtYSIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiVkVSU0lPTlMiLCJ2MCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJzYXZlIiwiZmllbGQiLCJzYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEiLCJsb2FkIiwicGFyZW50cyIsImFjY3VtdWxhdGVkIiwiX3BhcmVudHMkc2xpY2UiLCJzbGljZSIsIl9wYXJlbnRzJHNsaWNlMiIsIl9zbGljZWRUb0FycmF5MiIsImZpZWxkTmFtZSIsInR5cGUiLCJ2aXN1YWxDaGFubmVscyIsIlNjaGVtYSIsIkRpbWVuc2lvblNjYWxlU2NoZW1hVjAiLCJfU2NoZW1hMiIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJzY2FsZSIsIl9wYXJlbnRzJHNsaWNlMyIsIl9wYXJlbnRzJHNsaWNlNCIsIkxheWVyQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hMyIsIl90aGlzMyIsIl9sZW4zIiwiX2tleTMiLCJzYXZlZCIsIkxheWVyQ29sdW1uc1NjaGVtYVYwIiwiX1NjaGVtYTQiLCJfdGhpczQiLCJfbGVuNCIsIl9rZXk0IiwiY29sdW1ucyIsInJlZHVjZSIsImFjY3UiLCJMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hNSIsIl90aGlzNSIsIl9sZW41IiwiX2tleTUiLCJhY2N1bXVsYXRlZENvbmZpZyIsIkxheWVyVmlzQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hNiIsIl90aGlzNiIsIl9sZW42IiwiX2tleTYiLCJhY2N1bXVsYXRvciIsIl9wYXJlbnRzJHNsaWNlNSIsIl9wYXJlbnRzJHNsaWNlNiIsInJlbmFtZSIsImdlb2pzb24iLCJlbGV2YXRpb25SYW5nZSIsInByb3BUb1JlbmFtZSIsIkxheWVyQ29uZmlnU2NoZW1hRGVsZXRlVjAiLCJfU2NoZW1hNyIsIl90aGlzNyIsIl9sZW43IiwiX2tleTciLCJsYXllclByb3BzVjAiLCJpZCIsImRhdGFJZCIsImxhYmVsIiwiY29sb3IiLCJpc1Zpc2libGUiLCJoaWRkZW4iLCJjb2xvckZpZWxkIiwicHJvcGVydGllcyIsImNvbG9yU2NhbGUiLCJzaXplRmllbGQiLCJzaXplU2NhbGUiLCJlbmFibGUzZCIsImNvbG9yQWdncmVnYXRpb24iLCJzaXplQWdncmVnYXRpb24iLCJpc0FnZ3JlZ2F0ZWQiLCJDb2x1bW5TY2hlbWFWMSIsIl9TY2hlbWE4IiwiY2tleSIsIl9jb2x1bW5zJGNrZXkiLCJUZXh0TGFiZWxTY2hlbWFWMSIsIl9TY2hlbWE5IiwidGV4dExhYmVsIiwibWFwIiwidGwiLCJwaWNrIiwiaXNBcnJheSIsInZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMSIsInZjIiwiX0xBWUVSX1ZJU19DT05GSUdTJHJhIiwiX3BhcmVudHMkc2xpY2U3IiwiX3BhcmVudHMkc2xpY2U4IiwibGF5ZXIiLCJpc09sZCIsImhhc093blByb3BlcnR5IiwiaXNQb2ludCIsInJhZGl1c0ZpZWxkIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JTY2FsZSIsIlZpc3VhbENoYW5uZWxTY2hlbWFWMSIsIl9TY2hlbWExMCIsIl9wYXJlbnRzJHNsaWNlOSIsIl9wYXJlbnRzJHNsaWNlMTAiLCJfcGFyZW50cyRzbGljZTExIiwiX3BhcmVudHMkc2xpY2UxMiIsIm1vZGlmaWVkIiwidmlzQ29uZmlnTW9kaWZpY2F0aW9uVjEiLCJwb2ludCIsIl9wYXJlbnRzJHNsaWNlMTMiLCJfcGFyZW50cyRzbGljZTE0Iiwic3Ryb2tlQ29sb3IiLCJzdHJva2VDb2xvclJhbmdlIiwiY2xvbmVEZWVwIiwiY29sb3JSYW5nZSIsIm91dGxpbmUiLCJmaWxsZWQiLCJfTEFZRVJfVklTX0NPTkZJR1MkcmEyIiwiX3BhcmVudHMkc2xpY2UxNSIsIl9wYXJlbnRzJHNsaWNlMTYiLCJWaXNDb25maWdTY2hlbWFWMSIsIl9TY2hlbWExMSIsIl90aGlzOCIsIl9sZW44IiwiX2tleTgiLCJfcGFyZW50cyRzbGljZTE3IiwiX3BhcmVudHMkc2xpY2UxOCIsImxvYWRlZFZpc0NvbmZpZyIsInByb3AiLCJjb2xvclJhbmdlQmFja3dhcmRDb21wYXRpYmlsaXR5IiwibGF5ZXJQcm9wc1YxIiwidmVyc2lvbiIsInYxIiwiY29sdW1uTW9kZSIsImhpZ2hsaWdodENvbG9yIiwiTGF5ZXJTY2hlbWFWMCIsIl9TY2hlbWExMiIsIl90aGlzOSIsIl9sZW45IiwiX2tleTkiLCJsYXllcnMiLCJfdGhpczEwIiwiX3BhcmVudHMkc2xpY2UxOSIsIl9wYXJlbnRzJHNsaWNlMjAiLCJ2aXNTdGF0ZSIsImxheWVyT3JkZXIiLCJsYXllcklkIiwiZmluZEJ5SWQiLCJpc1ZhbGlkVG9TYXZlIiwiX3RoaXMxMSIsImxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsIkZpbHRlclNjaGVtYVYwIiwiX1NjaGVtYTEzIiwiX3RoaXMxMiIsIl9sZW4xMCIsIl9rZXkxMCIsImZpbHRlcnMiLCJfdGhpczEzIiwiaXNGaWx0ZXJWYWxpZFRvU2F2ZSIsIl90aGlzMTQiLCJlbmxhcmdlZCIsInZpZXciLCJmaWx0ZXJQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJuZXdGaWx0ZXIiLCJGSUxURVJfVklFV19UWVBFUyIsInNpZGUiLCJpbnRlcmFjdGlvblByb3BzVjAiLCJJbnRlcmFjdGlvblNjaGVtYVYwIiwiX1NjaGVtYTE0IiwiX3RoaXMxNSIsIl9sZW4xMSIsIl9rZXkxMSIsImludGVyYWN0aW9uQ29uZmlnIiwiZW5hYmxlZCIsImludGVyYWN0aW9uUHJvcHNWMSIsIkludGVyYWN0aW9uU2NoZW1hVjEiLCJfU2NoZW1hMTUiLCJfdGhpczE2IiwiX2xlbjEyIiwiX2tleTEyIiwiX3RoaXMxNyIsIm1vZGlmaWVkQ29uZmlnIiwiY29uZmlnVHlwZSIsImZpZWxkc1RvU2hvdyIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpZWxkRGF0YSIsIm5hbWUiLCJmb3JtYXQiLCJmaWx0ZXJQcm9wc1YwIiwiRGltZW5zaW9uRmllbGRTY2hlbWEiLCJfU2NoZW1hMTYiLCJTcGxpdE1hcHNTY2hlbWEiLCJfU2NoZW1hMTciLCJjb252ZXJ0TGF5ZXJTZXR0aW5ncyIsIl9yZWYxOSIsIl9yZWYyMCIsIl90eXBlb2YyIiwiaXNBdmFpbGFibGUiLCJzcGxpdE1hcHMiLCJfdGhpczE4Iiwic2V0dGluZ3MiLCJlbnRyaWVzIiwiUGxvdFR5cGVTY2hlbWEiLCJfU2NoZW1hMTgiLCJfdGhpczE5IiwiX2xlbjEzIiwiX2tleTEzIiwicGxvdFR5cGUiLCJlZmZlY3RQcm9wc1YxIiwiaXNFbmFibGVkIiwicGFyYW1ldGVycyIsIkVmZmVjdHNTY2hlbWEiLCJfU2NoZW1hMTkiLCJfdGhpczIwIiwiX2xlbjE0IiwiX2tleTE0IiwiZWZmZWN0cyIsIl90aGlzMjEiLCJfcGFyZW50cyRzbGljZTIxIiwiX3BhcmVudHMkc2xpY2UyMiIsImVmZmVjdE9yZGVyIiwiZWZmZWN0SWQiLCJlZmZlY3QiLCJfdGhpczIyIiwib3V0RWZmZWN0IiwicGFyYW1zIiwiZmlsdGVyUHJvcHNWMSIsImFuaW1hdGlvbldpbmRvdyIsInlBeGlzIiwic3BlZWQiLCJzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSIsInN5bmNUaW1lbGluZU1vZGUiLCJpbnZlcnRUcmVuZENvbG9yIiwidGltZXpvbmUiLCJwcm9wZXJ0aWVzVjAiLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwicHJvcGVydGllc1YxIiwiYW5pbWF0aW9uQ29uZmlnIiwiY3VycmVudFRpbWUiLCJlZGl0b3IiLCJmZWF0dXJlcyIsInZpc2libGUiLCJWaXNTdGF0ZVNjaGVtYVYxIiwiX1NjaGVtYTIwIiwibm9kZSIsInVuZGVmaW5lZCIsInZpc1N0YXRlU2NoZW1hVjAiLCJ2aXNTdGF0ZVNjaGVtYVYxIiwidmlzU3RhdGVTY2hlbWEiLCJ0b1NhdmUiLCJ0b0xvYWQiLCJfdmlzU3RhdGVTY2hlbWFWMCRsb2EiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy92aXMtc3RhdGUtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCB7VkVSU0lPTlN9IGZyb20gJy4vdmVyc2lvbnMnO1xuaW1wb3J0IHtMQVlFUl9WSVNfQ09ORklHUywgRklMVEVSX1ZJRVdfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Y29sb3JSYW5nZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSwgaXNGaWx0ZXJWYWxpZFRvU2F2ZSwgZmluZEJ5SWR9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCBTY2hlbWEgZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7XG4gIEFkZERhdGFUb01hcE9wdGlvbnMsXG4gIEFuaW1hdGlvbkNvbmZpZyxcbiAgRWRpdG9yLFxuICBGaWxlTG9hZGluZyxcbiAgRmlsZUxvYWRpbmdQcm9ncmVzcyxcbiAgRmlsdGVyLFxuICBJbnRlcmFjdGlvbkNvbmZpZyxcbiAgTWFwSW5mbyxcbiAgUGFyc2VkRmlsdGVyLFxuICBQYXJzZWRMYXllcixcbiAgUGFyc2VkVmlzU3RhdGUsXG4gIFNhdmVkRmlsdGVyLFxuICBNaW5TYXZlZEZpbHRlcixcbiAgU2F2ZWRJbnRlcmFjdGlvbkNvbmZpZyxcbiAgU2F2ZWRMYXllcixcbiAgTWluU2F2ZWRMYXllcixcbiAgU2F2ZWRWaXNTdGF0ZSxcbiAgU3BsaXRNYXAsXG4gIFZhbHVlT2YsXG4gIEVmZmVjdFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtMYXllciwgTGF5ZXJDbGFzc2VzVHlwZX0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscyc7XG5pbXBvcnQgS2VwbGVyR0xTY2hlbWEgZnJvbSAnLi9zY2hlbWEtbWFuYWdlcic7XG5cbi8qKlxuICogVjAgU2NoZW1hXG4gKi9cblxuZXhwb3J0IGNvbnN0IGRpbWVuc2lvblByb3BzVjAgPSBbJ25hbWUnLCAndHlwZSddO1xuXG5leHBvcnQgdHlwZSBtb2RpZmllZFR5cGUgPSB7XG4gIHN0cm9rZUNvbG9yPzogYW55O1xuICBzdHJva2VDb2xvclJhbmdlPzogYW55O1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlzU3RhdGUge1xuICBtYXBJbmZvOiBNYXBJbmZvO1xuICBsYXllcnM6IExheWVyW107XG4gIGxheWVyRGF0YTogYW55W107XG4gIGxheWVyVG9CZU1lcmdlZDogYW55W107XG4gIGxheWVyT3JkZXI6IHN0cmluZ1tdO1xuICBlZmZlY3RzOiBFZmZlY3RbXTtcbiAgZWZmZWN0T3JkZXI6IHN0cmluZ1tdO1xuICBmaWx0ZXJzOiBGaWx0ZXJbXTtcbiAgZmlsdGVyVG9CZU1lcmdlZDogYW55W107XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgZWRpdGluZ0RhdGFzZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnO1xuICBpbnRlcmFjdGlvblRvQmVNZXJnZWQ6IGFueTtcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICBvdmVybGF5QmxlbmRpbmc/OiBzdHJpbmc7XG4gIGhvdmVySW5mbzogYW55O1xuICBjbGlja2VkOiBhbnk7XG4gIG1vdXNlUG9zOiBhbnk7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xuICBsYXllckNsYXNzZXM6IExheWVyQ2xhc3Nlc1R5cGU7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgc3BsaXRNYXBzOiBTcGxpdE1hcFtdO1xuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBTcGxpdE1hcFtdO1xuICBmaWxlTG9hZGluZzogRmlsZUxvYWRpbmcgfCBmYWxzZTtcbiAgZmlsZUxvYWRpbmdQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgbG9hZGVyczogTG9hZGVyW107XG4gIGxvYWRPcHRpb25zOiBvYmplY3Q7XG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8VmlzU3RhdGU+O1xuICBtZXJnZXJzOiBWaXNTdGF0ZU1lcmdlcnM8YW55PjtcbiAgc2NoZW1hOiB0eXBlb2YgS2VwbGVyR0xTY2hlbWE7XG4gIHByZXNlcnZlTGF5ZXJPcmRlcj86IHN0cmluZ1tdO1xuICBwcmVzZXJ2ZUZpbHRlck9yZGVyPzogc3RyaW5nW107XG4gIHByZXNlcnZlRGF0YXNldE9yZGVyPzogc3RyaW5nW107XG4gIGlzTWVyZ2luZ0RhdGFzZXRzOiB7XG4gICAgW2RhdGFzZXRJZDogc3RyaW5nXTogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUG9zdE1lcmdlclBheWxvYWQgPSB7XG4gIG5ld0RhdGFJZHM6IHN0cmluZ1tdO1xuICBvcHRpb25zPzogQWRkRGF0YVRvTWFwT3B0aW9ucztcbiAgbGF5ZXJNZXJnZXJzPzogTWVyZ2VyPGFueT5bXTtcbn07XG5leHBvcnQgdHlwZSBNZXJnZXJBY3Rpb25QYXlsb2FkPFMgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBtZXJnZXJzOiBNZXJnZXI8Uz5bXTtcbiAgcG9zdE1lcmdlclBheWxvYWQ6IFBvc3RNZXJnZXJQYXlsb2FkO1xufTtcbmV4cG9ydCB0eXBlIE1lcmdlck1lcmdlRnVuYzxTIGV4dGVuZHMgb2JqZWN0PiA9IChcbiAgc3RhdGU6IFMsXG4gIGNvbmZpZzogYW55LFxuICBmcm9tQ29uZmlnOiBib29sZWFuLFxuICBtZXJnZXJBY3Rpb25QYXlsb2FkPzogTWVyZ2VyQWN0aW9uUGF5bG9hZDxTPlxuKSA9PiBTO1xuZXhwb3J0IHR5cGUgUmVwbGFjZVBhcmVudERhdGFzZXRJZHNGdW5jPFQ+ID0gKFxuICBpdGVtOiBULFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgZGF0YUlkVG9SZXBsYWNlOiBzdHJpbmdcbikgPT4gVCB8IG51bGw7XG5leHBvcnQgdHlwZSBNZXJnZXI8UyBleHRlbmRzIG9iamVjdD4gPSB7XG4gIG1lcmdlOiBNZXJnZXJNZXJnZUZ1bmM8Uz47XG4gIHByb3A6IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0b01lcmdlUHJvcD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwcmVzZXJ2ZU9yZGVyPzogc3RyaW5nO1xuICB3YWl0VG9GaW5pc2g/OiBib29sZWFuO1xuICB3YWl0Rm9yTGF5ZXJEYXRhPzogYm9vbGVhbjtcbiAgcmVwbGFjZVBhcmVudERhdGFzZXRJZHM/OiBSZXBsYWNlUGFyZW50RGF0YXNldElkc0Z1bmM8VmFsdWVPZjxTPj47XG4gIHNhdmVVbm1lcmdlZD86IChzdGF0ZTogUywgdW5tZXJnZWQ6IGFueSkgPT4gUztcbiAgY29tYmluZUNvbmZpZ3M/OiAoY29uZmlnczogU1tdKSA9PiBTO1xuICBnZXRDaGlsZERhdGFzZXRJZHM/OiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgVmlzU3RhdGVNZXJnZXJzPFMgZXh0ZW5kcyBvYmplY3Q+ID0gTWVyZ2VyPFM+W107XG5cbi8vIGluIHYwIGdlb2pzb24gdGhlcmUgaXMgb25seSBzaXplRmllbGRcblxuLy8gaW4gdjEgZ2VvanNvblxuLy8gc3Ryb2tlIGJhc2Ugb24gLT4gc2l6ZUZpZWxkXG4vLyBoZWlnaHQgYmFzZWQgb24gLT4gaGVpZ2h0RmllbGRcbi8vIHJhZGl1cyBiYXNlZCBvbiAtPiByYWRpdXNGaWVsZFxuLy8gaGVyZSB3ZSBtYWtlIG91ciB3aXJlZHN0IGd1ZXNzIG9uIHdoaWNoIGNoYW5uZWwgc2l6ZUZpZWxkIGJlbG9uZ3MgdG9cbmZ1bmN0aW9uIGdlb2pzb25TaXplRmllbGRWMFRvVjEoY29uZmlnKSB7XG4gIGNvbnN0IGRlZmF1bHRSYWl1ZHMgPSAxMDtcbiAgY29uc3QgZGVmYXVsdFJhZGl1c1JhbmdlID0gWzAsIDUwXTtcblxuICAvLyBpZiBleHRydWRlZCwgc2l6ZUZpZWxkIGlzIG1vc3QgbGlrZWx5IHVzZWQgZm9yIGhlaWdodFxuICBpZiAoY29uZmlnLnZpc0NvbmZpZy5leHRydWRlZCkge1xuICAgIHJldHVybiAnaGVpZ2h0RmllbGQnO1xuICB9XG5cbiAgLy8gaWYgc2hvdyBzdHJva2UgZW5hYmxlZCwgc2l6ZUZpZWxkIGlzIG1vc3QgbGlrZWx5IHVzZWQgZm9yIHN0cm9rZVxuICBpZiAoY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkKSB7XG4gICAgcmV0dXJuICdzaXplRmllbGQnO1xuICB9XG5cbiAgLy8gaWYgcmFkaXVzIGNoYW5nZWQsIG9yIHJhZGl1cyBSYW5nZSBDaGFuZ2VkLCBzaXplRmllbGQgaXMgbW9zdCBsaWtlbHkgdXNlZCBmb3IgcmFkaXVzXG4gIC8vIHRoaXMgaXMgdGhlIG1vc3QgdW5yZWxpYWJsZSBndWVzcywgdGhhdCdzIHdoeSB3ZSBwdXQgaXQgaW4gdGhlIGVuZFxuICBpZiAoXG4gICAgY29uZmlnLnZpc0NvbmZpZy5yYWRpdXMgIT09IGRlZmF1bHRSYWl1ZHMgfHxcbiAgICBjb25maWcudmlzQ29uZmlnLnJhZGl1c1JhbmdlLnNvbWUoKGQsIGkpID0+IGQgIT09IGRlZmF1bHRSYWRpdXNSYW5nZVtpXSlcbiAgKSB7XG4gICAgcmV0dXJuICdyYWRpdXNGaWVsZCc7XG4gIH1cblxuICByZXR1cm4gJ3NpemVGaWVsZCc7XG59XG5cbi8vIGNvbnZlcnQgdjAgdG8gdjEgbGF5ZXIgY29uZmlnXG5jbGFzcyBEaW1lbnNpb25GaWVsZFNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBzYXZlKGZpZWxkKSB7XG4gICAgLy8gc2hvdWxkIG5vdCBiZSBjYWxsZWQgYW55bW9yZVxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBmaWVsZCAhPT0gbnVsbCA/IHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGZpZWxkKVt0aGlzLmtleV0gOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoZmllbGQsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSB7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBsZXQgZmllbGROYW1lID0gdGhpcy5rZXk7XG4gICAgaWYgKGNvbmZpZy50eXBlID09PSAnZ2VvanNvbicgJiYgdGhpcy5rZXkgPT09ICdzaXplRmllbGQnICYmIGZpZWxkKSB7XG4gICAgICBmaWVsZE5hbWUgPSBnZW9qc29uU2l6ZUZpZWxkVjBUb1YxKGNvbmZpZyk7XG4gICAgfVxuICAgIC8vIGZvbGQgaW50byB2aXN1YWxDaGFubmVscyB0byBiZSBsb2FkIGJ5IFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICAgIHJldHVybiB7XG4gICAgICB2aXN1YWxDaGFubmVsczoge1xuICAgICAgICAuLi4oYWNjdW11bGF0ZWQudmlzdWFsQ2hhbm5lbHMgfHwge30pLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIERpbWVuc2lvblNjYWxlU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIHNhdmUoc2NhbGUpIHtcbiAgICByZXR1cm4ge1t0aGlzLmtleV06IHNjYWxlfTtcbiAgfVxuICBsb2FkKHNjYWxlLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIGNvbnN0IFtjb25maWddID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgLy8gZm9sZCBpbnRvIHZpc3VhbENoYW5uZWxzIHRvIGJlIGxvYWQgYnkgVmlzdWFsQ2hhbm5lbFNjaGVtYVYxXG4gICAgaWYgKHRoaXMua2V5ID09PSAnc2l6ZVNjYWxlJyAmJiBjb25maWcudHlwZSA9PT0gJ2dlb2pzb24nKSB7XG4gICAgICAvLyBzaXplU2NhbGUgbm93IHNwbGl0IGludG8gcmFkaXVzU2NhbGUsIGhlaWdodFNjYWxlXG4gICAgICAvLyBubyB1c2VyIGN1c3RvbWl6YXRpb24sIGp1c3QgdXNlIGRlZmF1bHRcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzdWFsQ2hhbm5lbHM6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdGVkLnZpc3VhbENoYW5uZWxzIHx8IHt9KSxcbiAgICAgICAgW3RoaXMua2V5XTogc2NhbGVcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbi8vIHVzZWQgdG8gY29udmVydCB2MCB0byB2MSBsYXllciBjb25maWdcbmNsYXNzIExheWVyQ29uZmlnU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIGxvYWQoc2F2ZWQsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSB7XG4gICAgLy8gZm9sZCB2MCBsYXllciBwcm9wZXJ0eSBpbnRvIGNvbmZpZy5rZXlcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRlZC5jb25maWcgfHwge30pLFxuICAgICAgICBbdGhpcy5rZXldOiBzYXZlZFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuLy8gdXNlZCB0byBjb252ZXJ0IHYwIHRvIHYxIGxheWVyIGNvbHVtbnNcbi8vIG9ubHkgcmV0dXJuIGNvbHVtbiB2YWx1ZSBmb3IgZWFjaCBjb2x1bW5cbmNsYXNzIExheWVyQ29sdW1uc1NjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBsb2FkKHNhdmVkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIC8vIGZvbGQgdjAgbGF5ZXIgcHJvcGVydHkgaW50byBjb25maWcua2V5LCBmbGF0dGVuIGNvbHVtbnNcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRlZC5jb25maWcgfHwge30pLFxuICAgICAgICBjb2x1bW5zOiBPYmplY3Qua2V5cyhzYXZlZCkucmVkdWNlKFxuICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgW2tleV06IHNhdmVkW2tleV0udmFsdWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyB1c2VkIHRvIGNvbnZlcnQgdjAgdG8gdjEgbGF5ZXIgY29uZmlnLnZpc0NvbmZpZ1xuY2xhc3MgTGF5ZXJDb25maWdUb1Zpc0NvbmZpZ1NjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBsb2FkKHNhdmVkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIC8vIGZvbGQgdjAgbGF5ZXIgcHJvcGVydHkgaW50byBjb25maWcudmlzQ29uZmlnXG4gICAgY29uc3QgYWNjdW11bGF0ZWRDb25maWcgPSBhY2N1bXVsYXRlZC5jb25maWcgfHwge307XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5hY2N1bXVsYXRlZENvbmZpZyxcbiAgICAgICAgdmlzQ29uZmlnOiB7XG4gICAgICAgICAgLi4uKGFjY3VtdWxhdGVkQ29uZmlnLnZpc0NvbmZpZyB8fCB7fSksXG4gICAgICAgICAgW3RoaXMua2V5XTogc2F2ZWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgTGF5ZXJWaXNDb25maWdTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAga2V5ID0gJ3Zpc0NvbmZpZyc7XG5cbiAgbG9hZCh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdG9yKSB7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBjb25zdCByZW5hbWUgPSB7XG4gICAgICBnZW9qc29uOiB7XG4gICAgICAgIGV4dHJ1ZGVkOiAnZW5hYmxlM2QnLFxuICAgICAgICBlbGV2YXRpb25SYW5nZTogJ2hlaWdodFJhbmdlJ1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLnR5cGUgaW4gcmVuYW1lKSB7XG4gICAgICBjb25zdCBwcm9wVG9SZW5hbWUgPSByZW5hbWVbY29uZmlnLnR5cGVdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgLi4uKGFjY3VtdWxhdG9yLmNvbmZpZyB8fCB7fSksXG4gICAgICAgICAgdmlzQ29uZmlnOiBPYmplY3Qua2V5cyh2aXNDb25maWcpLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLihwcm9wVG9SZW5hbWVba2V5XVxuICAgICAgICAgICAgICAgID8ge1twcm9wVG9SZW5hbWVba2V5XV06IHZpc0NvbmZpZ1trZXldfVxuICAgICAgICAgICAgICAgIDoge1trZXldOiB2aXNDb25maWdba2V5XX0pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdG9yLmNvbmZpZyB8fCB7fSksXG4gICAgICAgIHZpc0NvbmZpZ1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgTGF5ZXJDb25maWdTY2hlbWFEZWxldGVWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAgbG9hZCgpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqXG4gKiBWMCAtPiBWMSBDaGFuZ2VzXG4gKiAtIGxheWVyIGlzIG5vdyBhIGNsYXNzXG4gKiAtIGNvbmZpZyBzYXZlZCBpbiBhIGNvbmZpZyBvYmplY3RcbiAqIC0gaWQsIHR5cGUsIGlzQWdncmVnYXRlZCBpcyBvdXRzaWRlIGxheWVyLmNvbmZpZ1xuICogLSB2aXN1YWxDaGFubmVscyBpcyBvdXRzaWRlIGNvbmZpZywgaXQgZGVmaW5lcyBhdmFpbGFibGUgdmlzdWFsIGNoYW5uZWwgYW5kXG4gKiAgIHByb3BlcnR5IG5hbWVzIGZvciBmaWVsZCwgc2NhbGUsIGRvbWFpbiBhbmQgcmFuZ2Ugb2YgZWFjaCB2aXN1YWwgY2hhbmVsLlxuICogLSBlbmFibGUzZCwgY29sb3JBZ2dyZWdhdGlvbiBhbmQgc2l6ZUFnZ3JlZ2F0aW9uIGFyZSBtb3ZlZCBpbnRvIHZpc0NvbmZpZ1xuICogLSBHZW9qc29uTGF5ZXIgLSBhZGRlZCBoZWlnaHQsIHJhZGl1cyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cblxuZXhwb3J0IGNvbnN0IGxheWVyUHJvcHNWMCA9IHtcbiAgaWQ6IG51bGwsXG4gIHR5cGU6IG51bGwsXG5cbiAgLy8gbW92ZSBpbnRvIGxheWVyLmNvbmZpZ1xuICBkYXRhSWQ6IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICdkYXRhSWQnfSksXG4gIGxhYmVsOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFWMCh7a2V5OiAnbGFiZWwnfSksXG4gIGNvbG9yOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFWMCh7a2V5OiAnY29sb3InfSksXG4gIGlzVmlzaWJsZTogbmV3IExheWVyQ29uZmlnU2NoZW1hVjAoe2tleTogJ2lzVmlzaWJsZSd9KSxcbiAgaGlkZGVuOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFWMCh7a2V5OiAnaGlkZGVuJ30pLFxuXG4gIC8vIGNvbnZlcnQgdmlzQ29uZmlnXG4gIHZpc0NvbmZpZzogbmV3IExheWVyVmlzQ29uZmlnU2NoZW1hVjAoe2tleTogJ3Zpc0NvbmZpZyd9KSxcblxuICAvLyBtb3ZlIGludG8gbGF5ZXIuY29uZmlnXG4gIC8vIGZsYXR0ZW5cbiAgY29sdW1uczogbmV3IExheWVyQ29sdW1uc1NjaGVtYVYwKCksXG5cbiAgLy8gc2F2ZSBpbnRvIHZpc3VhbENoYW5uZWxzXG4gIGNvbG9yRmllbGQ6IG5ldyBEaW1lbnNpb25GaWVsZFNjaGVtYVYwKHtcbiAgICBwcm9wZXJ0aWVzOiBkaW1lbnNpb25Qcm9wc1YwLFxuICAgIGtleTogJ2NvbG9yRmllbGQnXG4gIH0pLFxuICBjb2xvclNjYWxlOiBuZXcgRGltZW5zaW9uU2NhbGVTY2hlbWFWMCh7XG4gICAga2V5OiAnY29sb3JTY2FsZSdcbiAgfSksXG4gIHNpemVGaWVsZDogbmV3IERpbWVuc2lvbkZpZWxkU2NoZW1hVjAoe1xuICAgIHByb3BlcnRpZXM6IGRpbWVuc2lvblByb3BzVjAsXG4gICAga2V5OiAnc2l6ZUZpZWxkJ1xuICB9KSxcbiAgc2l6ZVNjYWxlOiBuZXcgRGltZW5zaW9uU2NhbGVTY2hlbWFWMCh7XG4gICAga2V5OiAnc2l6ZVNjYWxlJ1xuICB9KSxcblxuICAvLyBtb3ZlIGludG8gY29uZmlnLnZpc0NvbmZpZ1xuICBlbmFibGUzZDogbmV3IExheWVyQ29uZmlnVG9WaXNDb25maWdTY2hlbWFWMCh7a2V5OiAnZW5hYmxlM2QnfSksXG4gIGNvbG9yQWdncmVnYXRpb246IG5ldyBMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAoe1xuICAgIGtleTogJ2NvbG9yQWdncmVnYXRpb24nXG4gIH0pLFxuICBzaXplQWdncmVnYXRpb246IG5ldyBMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAoe2tleTogJ3NpemVBZ2dyZWdhdGlvbid9KSxcblxuICAvLyBkZWxldGVcbiAgaXNBZ2dyZWdhdGVkOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFEZWxldGVWMCgpXG59O1xuXG4vKipcbiAqIFYxIFNjaGVtYVxuICovXG5jbGFzcyBDb2x1bW5TY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIHNhdmUoY29sdW1ucykge1xuICAgIC8vIHN0YXJ0aW5nIGZyb20gdjEsIG9ubHkgc2F2ZSBjb2x1bW4gdmFsdWVcbiAgICAvLyBmaWVsZElkeCB3aWxsIGJlIGNhbGN1bGF0ZWQgZHVyaW5nIG1lcmdlXG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IE9iamVjdC5rZXlzKGNvbHVtbnMpLnJlZHVjZShcbiAgICAgICAgKGFjY3UsIGNrZXkpID0+ICh7XG4gICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAvLyBpZiB2YWx1ZSBpcyBudWxsLCBkb24ndCBzYXZlIGl0XG4gICAgICAgICAgLi4uKGNvbHVtbnNbY2tleV0/LnZhbHVlID8ge1tja2V5XTogY29sdW1uc1tja2V5XS52YWx1ZX0gOiB7fSlcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoY29sdW1ucykge1xuICAgIHJldHVybiB7Y29sdW1uc307XG4gIH1cbn1cblxuY2xhc3MgVGV4dExhYmVsU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBzYXZlKHRleHRMYWJlbCkge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiB0ZXh0TGFiZWwubWFwKHRsID0+ICh7XG4gICAgICAgIC4uLnRsLFxuICAgICAgICBmaWVsZDogdGwuZmllbGQgPyBwaWNrKHRsLmZpZWxkLCBbJ25hbWUnLCAndHlwZSddKSA6IG51bGxcbiAgICAgIH0pKVxuICAgIH07XG4gIH1cblxuICBsb2FkKHRleHRMYWJlbCkge1xuICAgIHJldHVybiB7dGV4dExhYmVsOiBBcnJheS5pc0FycmF5KHRleHRMYWJlbCkgPyB0ZXh0TGFiZWwgOiBbdGV4dExhYmVsXX07XG4gIH1cbn1cblxuY29uc3QgdmlzdWFsQ2hhbm5lbE1vZGlmaWNhdGlvblYxID0ge1xuICBnZW9qc29uOiAodmMsIHBhcmVudHMpID0+IHtcbiAgICBjb25zdCBbbGF5ZXJdID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgY29uc3QgaXNPbGQgPSAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZjLCAnc3Ryb2tlQ29sb3JGaWVsZCcpO1xuICAgIC8vIG1ha2Ugb3VyIGJlc3QgZ3Vlc3MgaWYgdGhpcyBnZW9qc29uIGxheWVyIGNvbnRhaW5zIHBvaW50XG4gICAgY29uc3QgaXNQb2ludCA9XG4gICAgICB2Yy5yYWRpdXNGaWVsZCB8fCBsYXllci5jb25maWcudmlzQ29uZmlnLnJhZGl1cyAhPT0gTEFZRVJfVklTX0NPTkZJR1MucmFkaXVzPy5kZWZhdWx0VmFsdWU7XG5cbiAgICBpZiAoaXNPbGQgJiYgIWlzUG9pbnQgJiYgbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkKSB7XG4gICAgICAvLyBpZiBzdHJva2VkIGlzIHRydWUsIGNvcHkgY29sb3IgY29uZmlnIHRvIHN0cm9rZSBjb2xvciBjb25maWdcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IHZjLmNvbG9yRmllbGQsXG4gICAgICAgIHN0cm9rZUNvbG9yU2NhbGU6IHZjLmNvbG9yU2NhbGVcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufTtcbi8qKlxuICogVjE6IHNhdmUgW2ZpZWxkXToge25hbWUsIHR5cGV9LCBbc2NhbGVdOiAnJyBmb3IgZWFjaCBjaGFubmVsXG4gKi9cbmNsYXNzIFZpc3VhbENoYW5uZWxTY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIHNhdmUodmlzdWFsQ2hhbm5lbHMsIHBhcmVudHMpIHtcbiAgICAvLyBvbmx5IHNhdmUgZmllbGQgYW5kIHNjYWxlIG9mIGVhY2ggY2hhbm5lbFxuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogT2JqZWN0LmtleXModmlzdWFsQ2hhbm5lbHMpLnJlZHVjZShcbiAgICAgICAgLy8gIHNhdmUgY2hhbm5lbCB0byBudWxsIGlmIGRpZG4ndCBzZWxlY3QgYW55IGZpZWxkXG4gICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICBbdmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF06IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXVxuICAgICAgICAgICAgPyBwaWNrKGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsc1trZXldLmZpZWxkXSwgWyduYW1lJywgJ3R5cGUnXSlcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBbdmlzdWFsQ2hhbm5lbHNba2V5XS5zY2FsZV06IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsc1trZXldLnNjYWxlXVxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICB9O1xuICB9XG4gIGxvYWQodmMsIHBhcmVudHMsIGFjY3VtdWxhdG9yKSB7XG4gICAgLy8gZm9sZCBjaGFubmVscyBpbnRvIGNvbmZpZ1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0xKTtcbiAgICBjb25zdCBtb2RpZmllZCA9IHZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMVtsYXllci50eXBlXVxuICAgICAgPyB2aXN1YWxDaGFubmVsTW9kaWZpY2F0aW9uVjFbbGF5ZXIudHlwZV0odmMsIHBhcmVudHMsIGFjY3VtdWxhdG9yKVxuICAgICAgOiB7fTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY2N1bXVsYXRvcixcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi4oYWNjdW11bGF0b3IuY29uZmlnIHx8IHt9KSxcbiAgICAgICAgLi4udmMsXG4gICAgICAgIC4uLm1vZGlmaWVkXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuY29uc3QgdmlzQ29uZmlnTW9kaWZpY2F0aW9uVjEgPSB7XG4gIHBvaW50OiAodmlzQ29uZmlnLCBwYXJlbnRzKSA9PiB7XG4gICAgY29uc3QgbW9kaWZpZWQ6IG1vZGlmaWVkVHlwZSA9IHt9O1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0yLCAtMSk7XG4gICAgY29uc3QgaXNPbGQgPVxuICAgICAgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2aXNDb25maWcsICdmaWxsZWQnKSAmJlxuICAgICAgIXZpc0NvbmZpZy5zdHJva2VDb2xvciAmJlxuICAgICAgIXZpc0NvbmZpZy5zdHJva2VDb2xvclJhbmdlO1xuICAgIGlmIChpc09sZCkge1xuICAgICAgLy8gY29sb3IgY29sb3IgJiBjb2xvciByYW5nZSB0byBzdHJva2UgY29sb3JcbiAgICAgIG1vZGlmaWVkLnN0cm9rZUNvbG9yID0gbGF5ZXIuY29uZmlnLmNvbG9yO1xuICAgICAgbW9kaWZpZWQuc3Ryb2tlQ29sb3JSYW5nZSA9IGNsb25lRGVlcCh2aXNDb25maWcuY29sb3JSYW5nZSk7XG4gICAgICBpZiAodmlzQ29uZmlnLm91dGxpbmUpIHtcbiAgICAgICAgLy8gcG9pbnQgbGF5ZXIgbm93IHN1cHBvcnRzIGJvdGggb3V0bGluZSBhbmQgZmlsbFxuICAgICAgICAvLyBmb3Igb2xkZXIgc2NoZW1hIHdoZXJlIGZpbGxlZCBoYXMgbm90IGJlZW4gYWRkZWQgdG8gcG9pbnQgbGF5ZXJcbiAgICAgICAgLy8gc2V0IGl0IHRvIGZhbHNlXG4gICAgICAgIG1vZGlmaWVkLmZpbGxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RpZmllZDtcbiAgfSxcbiAgZ2VvanNvbjogKHZpc0NvbmZpZywgcGFyZW50cykgPT4ge1xuICAgIC8vIGlzIHBvaW50cz9cbiAgICBjb25zdCBtb2RpZmllZDogbW9kaWZpZWRUeXBlID0ge307XG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTIsIC0xKTtcbiAgICBjb25zdCBpc09sZCA9XG4gICAgICBsYXllci52aXN1YWxDaGFubmVscyAmJlxuICAgICAgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXN1YWxDaGFubmVscywgJ3N0cm9rZUNvbG9yRmllbGQnKSAmJlxuICAgICAgIXZpc0NvbmZpZy5zdHJva2VDb2xvciAmJlxuICAgICAgIXZpc0NvbmZpZy5zdHJva2VDb2xvclJhbmdlO1xuICAgIC8vIG1ha2Ugb3VyIGJlc3QgZ3Vlc3MgaWYgdGhpcyBnZW9qc29uIGxheWVyIGNvbnRhaW5zIHBvaW50XG4gICAgY29uc3QgaXNQb2ludCA9XG4gICAgICAobGF5ZXIudmlzdWFsQ2hhbm5lbHMgJiYgbGF5ZXIudmlzdWFsQ2hhbm5lbHMucmFkaXVzRmllbGQpIHx8XG4gICAgICAodmlzQ29uZmlnICYmIHZpc0NvbmZpZy5yYWRpdXMgIT09IExBWUVSX1ZJU19DT05GSUdTLnJhZGl1cz8uZGVmYXVsdFZhbHVlKTtcblxuICAgIGlmIChpc09sZCkge1xuICAgICAgLy8gY29sb3IgY29sb3IgJiBjb2xvciByYW5nZSB0byBzdHJva2UgY29sb3JcbiAgICAgIG1vZGlmaWVkLnN0cm9rZUNvbG9yID0gbGF5ZXIuY29uZmlnLmNvbG9yO1xuICAgICAgbW9kaWZpZWQuc3Ryb2tlQ29sb3JSYW5nZSA9IGNsb25lRGVlcCh2aXNDb25maWcuY29sb3JSYW5nZSk7XG4gICAgICBpZiAoaXNQb2ludCkge1xuICAgICAgICAvLyBpZiBpcyBwb2ludCwgc2V0IHN0cm9rZSB0byBmYWxzZVxuICAgICAgICBtb2RpZmllZC5maWxsZWQgPSB0cnVlO1xuICAgICAgICBtb2RpZmllZC5zdHJva2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkO1xuICB9XG59O1xuXG5jbGFzcyBWaXNDb25maWdTY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICd2aXNDb25maWcnO1xuICAvLyBsYXllci5jb25maWcudmlzQ29uZmlnXG4gIC8vIGNvbG9yUmFuZ2VcbiAgbG9hZCh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdGVkKSB7XG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTIsIC0xKTtcbiAgICBjb25zdCBtb2RpZmllZCA9IHZpc0NvbmZpZ01vZGlmaWNhdGlvblYxW2xheWVyLnR5cGVdXG4gICAgICA/IHZpc0NvbmZpZ01vZGlmaWNhdGlvblYxW2xheWVyLnR5cGVdKHZpc0NvbmZpZywgcGFyZW50cywgYWNjdW11bGF0ZWQpXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IGxvYWRlZFZpc0NvbmZpZyA9IHsuLi52aXNDb25maWcsIC4uLm1vZGlmaWVkfTtcblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGxvYWQgY29sb3JSYW5nZSBhbmQgY2hhbmdlIHRoZSBuYW1lIHRvIG1hdGNoIG5ldyBjb2xvciBQYWxldHRlXG4gICAgWydjb2xvclJhbmdlJywgJ3N0cm9rZUNvbG9yUmFuZ2UnXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgaWYgKGxvYWRlZFZpc0NvbmZpZz8uW3Byb3BdKSB7XG4gICAgICAgIGxvYWRlZFZpc0NvbmZpZ1twcm9wXSA9IGNvbG9yUmFuZ2VCYWNrd2FyZENvbXBhdGliaWxpdHkobG9hZGVkVmlzQ29uZmlnW3Byb3BdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB2aXNDb25maWc6IGxvYWRlZFZpc0NvbmZpZ1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxheWVyUHJvcHNWMSA9IHtcbiAgaWQ6IG51bGwsXG4gIHR5cGU6IG51bGwsXG4gIGNvbmZpZzogbmV3IFNjaGVtYSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAga2V5OiAnY29uZmlnJyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBkYXRhSWQ6IG51bGwsXG4gICAgICBjb2x1bW5Nb2RlOiBudWxsLFxuICAgICAgbGFiZWw6IG51bGwsXG4gICAgICBjb2xvcjogbnVsbCxcbiAgICAgIGhpZ2hsaWdodENvbG9yOiBudWxsLFxuICAgICAgY29sdW1uczogbmV3IENvbHVtblNjaGVtYVYxKHtcbiAgICAgICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgICAgIGtleTogJ2NvbHVtbnMnXG4gICAgICB9KSxcbiAgICAgIGlzVmlzaWJsZTogbnVsbCxcbiAgICAgIHZpc0NvbmZpZzogbmV3IFZpc0NvbmZpZ1NjaGVtYVYxKHtcbiAgICAgICAgdmVyc2lvbjogVkVSU0lPTlMudjFcbiAgICAgIH0pLFxuICAgICAgaGlkZGVuOiBudWxsLFxuICAgICAgdGV4dExhYmVsOiBuZXcgVGV4dExhYmVsU2NoZW1hVjEoe1xuICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICAgICAga2V5OiAndGV4dExhYmVsJ1xuICAgICAgfSlcbiAgICB9XG4gIH0pLFxuICB2aXN1YWxDaGFubmVsczogbmV3IFZpc3VhbENoYW5uZWxTY2hlbWFWMSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAga2V5OiAndmlzdWFsQ2hhbm5lbHMnXG4gIH0pXG59O1xuXG5leHBvcnQgY2xhc3MgTGF5ZXJTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdsYXllcnMnO1xuXG4gIHNhdmUobGF5ZXJzOiBMYXllcltdLCBwYXJlbnRzOiBbVmlzU3RhdGVdKToge2xheWVyczogU2F2ZWRMYXllcltdfSB7XG4gICAgY29uc3QgW3Zpc1N0YXRlXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleSBhcyAnbGF5ZXJzJ106IHZpc1N0YXRlLmxheWVyT3JkZXIucmVkdWNlKChzYXZlZCwgbGF5ZXJJZCkgPT4ge1xuICAgICAgICAvLyBzYXZlIGxheWVycyBhY2NvcmRpbmcgdG8gdGhlaXIgcmVuZGVyaW5nIG9yZGVyXG4gICAgICAgIGNvbnN0IGxheWVyID0gZmluZEJ5SWQobGF5ZXJJZCkobGF5ZXJzKTtcbiAgICAgICAgaWYgKGxheWVyPy5pc1ZhbGlkVG9TYXZlKCkpIHtcbiAgICAgICAgICBzYXZlZC5wdXNoKHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGxheWVyKS5sYXllcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzYXZlZDtcbiAgICAgIH0sIFtdIGFzIFNhdmVkTGF5ZXJbXSlcbiAgICB9O1xuICB9XG5cbiAgbG9hZChsYXllcnM6IFNhdmVkTGF5ZXJbXSB8IE1pblNhdmVkTGF5ZXJbXSB8IHVuZGVmaW5lZCk6IHtcbiAgICBsYXllcnM6IFBhcnNlZExheWVyW10gfCB1bmRlZmluZWQ7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXkgYXMgJ2xheWVycyddOiBsYXllcnNcbiAgICAgICAgPyBsYXllcnMubWFwKGxheWVyID0+IHRoaXMubG9hZFByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGxheWVyLCBsYXllcnMpLmxheWVycylcbiAgICAgICAgOiBbXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpbHRlclNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAga2V5ID0gJ2ZpbHRlcnMnO1xuICBzYXZlKGZpbHRlcnM6IEZpbHRlcltdKToge2ZpbHRlcnM6IFNhdmVkRmlsdGVyW119IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyczogZmlsdGVyc1xuICAgICAgICAuZmlsdGVyKGlzRmlsdGVyVmFsaWRUb1NhdmUpXG4gICAgICAgIC5tYXAoZmlsdGVyID0+IHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGZpbHRlcikuZmlsdGVycylcbiAgICB9O1xuICB9XG4gIGxvYWQoZmlsdGVyczogU2F2ZWRGaWx0ZXJbXSB8IE1pblNhdmVkRmlsdGVyW10gfCB1bmRlZmluZWQpOiB7XG4gICAgZmlsdGVyczogUGFyc2VkRmlsdGVyW10gfCB1bmRlZmluZWQ7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXJzOiBmaWx0ZXJzXG4gICAgICAgID8ubWFwKGZpbHRlciA9PiB0aGlzLmxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmaWx0ZXIpLmZpbHRlcnMpXG4gICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGlibGUgY29udmVydCBlbmxhcmdlZCB0byB2aWV3XG4gICAgICAgIC5tYXAoZmlsdGVyID0+IHtcbiAgICAgICAgICBjb25zdCB7ZW5sYXJnZWQsIHZpZXcsIC4uLmZpbHRlclByb3BzfSA9IGZpbHRlcjtcblxuICAgICAgICAgIGNvbnN0IG5ld0ZpbHRlciA9IHtcbiAgICAgICAgICAgIC4uLmZpbHRlclByb3BzLFxuICAgICAgICAgICAgLy8gaWYgdmlldyBleGlzdCB1c2UgaXQgb3RoZXJ3aXNlIGNoZWNrIGZvciBlbmxhcmdlZFxuICAgICAgICAgICAgdmlldzogdmlldyA/IHZpZXcgOiBlbmxhcmdlZCA/IEZJTFRFUl9WSUVXX1RZUEVTLmVubGFyZ2VkIDogRklMVEVSX1ZJRVdfVFlQRVMuc2lkZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gbmV3RmlsdGVyO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgaW50ZXJhY3Rpb25Qcm9wc1YwID0gWyd0b29sdGlwJywgJ2JydXNoJ107XG5cbmNsYXNzIEludGVyYWN0aW9uU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnaW50ZXJhY3Rpb25Db25maWcnO1xuXG4gIHNhdmUoaW50ZXJhY3Rpb25Db25maWcpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnByb3BlcnRpZXMpXG4gICAgICA/IHtcbiAgICAgICAgICBbdGhpcy5rZXldOiB0aGlzLnByb3BlcnRpZXMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgICAgLi4uKGludGVyYWN0aW9uQ29uZmlnW2tleV0uZW5hYmxlZCA/IHtba2V5XTogaW50ZXJhY3Rpb25Db25maWdba2V5XS5jb25maWd9IDoge30pXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICA6IHt9O1xuICB9XG5cbiAgbG9hZChpbnRlcmFjdGlvbkNvbmZpZykge1xuICAgIC8vIGNvbnZlcnQgdjAgLT4gdjFcbiAgICAvLyByZXR1cm4gZW5hYmxlZDogZmFsc2UgaWYgZGlzYWJsZWQsXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0aWVzKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMua2V5XTogdGhpcy5wcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICBba2V5XToge1xuICAgICAgICAgICAgICAgICAgLi4uKGludGVyYWN0aW9uQ29uZmlnW2tleV0gfHwge30pLFxuICAgICAgICAgICAgICAgICAgZW5hYmxlZDogQm9vbGVhbihpbnRlcmFjdGlvbkNvbmZpZ1trZXldKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgfVxufVxuXG5jb25zdCBpbnRlcmFjdGlvblByb3BzVjEgPSBbLi4uaW50ZXJhY3Rpb25Qcm9wc1YwLCAnZ2VvY29kZXInLCAnY29vcmRpbmF0ZSddO1xuXG5leHBvcnQgY2xhc3MgSW50ZXJhY3Rpb25TY2hlbWFWMSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdpbnRlcmFjdGlvbkNvbmZpZyc7XG5cbiAgc2F2ZShpbnRlcmFjdGlvbkNvbmZpZzogSW50ZXJhY3Rpb25Db25maWcpOlxuICAgIHwge1xuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZzogU2F2ZWRJbnRlcmFjdGlvbkNvbmZpZztcbiAgICAgIH1cbiAgICB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIC8vIHNhdmUgY29uZmlnIGV2ZW4gaWYgZGlzYWJsZWQsXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0aWVzKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMua2V5XTogdGhpcy5wcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgLi4uaW50ZXJhY3Rpb25Db25maWdba2V5XS5jb25maWcsXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogaW50ZXJhY3Rpb25Db25maWdba2V5XS5lbmFibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIDoge307XG4gIH1cbiAgbG9hZChpbnRlcmFjdGlvbkNvbmZpZzogU2F2ZWRJbnRlcmFjdGlvbkNvbmZpZyk6IHtcbiAgICBpbnRlcmFjdGlvbkNvbmZpZzogUGFydGlhbDxTYXZlZEludGVyYWN0aW9uQ29uZmlnPjtcbiAgfSB7XG4gICAgY29uc3QgbW9kaWZpZWRDb25maWcgPSBjbG9uZURlZXAoaW50ZXJhY3Rpb25Db25maWcpO1xuICAgIE9iamVjdC5rZXlzKGludGVyYWN0aW9uQ29uZmlnKS5mb3JFYWNoKGNvbmZpZ1R5cGUgPT4ge1xuICAgICAgaWYgKGNvbmZpZ1R5cGUgPT09ICd0b29sdGlwJykge1xuICAgICAgICBjb25zdCBmaWVsZHNUb1Nob3cgPSBtb2RpZmllZENvbmZpZ1tjb25maWdUeXBlXS5maWVsZHNUb1Nob3c7XG4gICAgICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGZpZWxkc1RvU2hvdykpIHtcbiAgICAgICAgICByZXR1cm4ge1t0aGlzLmtleV06IG1vZGlmaWVkQ29uZmlnfTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNUb1Nob3cpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG5hbWU6IGZpZWxkRGF0YSBzaG91bGQgYmUgc3RyaW5nXG4gICAgICAgICAgZmllbGRzVG9TaG93W2tleV0gPSBmaWVsZHNUb1Nob3dba2V5XS5tYXAoZmllbGREYXRhID0+IHtcbiAgICAgICAgICAgIGlmICghZmllbGREYXRhLm5hbWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZERhdGEsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBudWxsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmllbGREYXRhO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9KTtcbiAgICByZXR1cm4ge1t0aGlzLmtleSBhcyAnaW50ZXJhY3Rpb25Db25maWcnXTogbW9kaWZpZWRDb25maWd9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQcm9wc1YwID0ge1xuICBkYXRhSWQ6IG51bGwsXG4gIGlkOiBudWxsLFxuICBuYW1lOiBudWxsLFxuICB0eXBlOiBudWxsLFxuICB2YWx1ZTogbnVsbCxcbiAgLy8gZGVwcmVjYXRlZFxuICBlbmxhcmdlZDogbnVsbFxufTtcblxuZXhwb3J0IGNsYXNzIERpbWVuc2lvbkZpZWxkU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZShmaWVsZCkge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBmaWVsZCA/IHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGZpZWxkKVt0aGlzLmtleV0gOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoZmllbGQpIHtcbiAgICByZXR1cm4ge1t0aGlzLmtleV06IGZpZWxkfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3BsaXRNYXBzU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHtcbiAgY29udmVydExheWVyU2V0dGluZ3MoYWNjdSwgW2tleSwgdmFsdWVdKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogdmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5hY2N1LFxuICAgICAgICBba2V5XTogQm9vbGVhbih2YWx1ZS5pc1Zpc2libGUpXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYWNjdTtcbiAgfVxuXG4gIGxvYWQoc3BsaXRNYXBzKSB7XG4gICAgLy8gcHJldmlvdXMgc3BsaXRNYXBzIFNjaGVtYSB7bGF5ZXJzOiB7bGF5ZXJJZDoge2lzVmlzaWJsZSwgaXNBdmFpbGFibGV9fX1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShzcGxpdE1hcHMpIHx8ICFzcGxpdE1hcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3NwbGl0TWFwczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzcGxpdE1hcHM6IHNwbGl0TWFwcy5tYXAoc2V0dGluZ3MgPT4gKHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGxheWVyczogT2JqZWN0LmVudHJpZXMoc2V0dGluZ3MubGF5ZXJzIHx8IHt9KS5yZWR1Y2UodGhpcy5jb252ZXJ0TGF5ZXJTZXR0aW5ncywge30pXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG59XG5leHBvcnQgY2xhc3MgUGxvdFR5cGVTY2hlbWEgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAncGxvdFR5cGUnO1xuICBsb2FkKHBsb3RUeXBlKSB7XG4gICAgaWYgKHR5cGVvZiBwbG90VHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsb3RUeXBlOiB7XG4gICAgICAgICAgdHlwZTogcGxvdFR5cGVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtwbG90VHlwZX07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGVmZmVjdFByb3BzVjEgPSB7XG4gIGlkOiBudWxsLFxuICB0eXBlOiBudWxsLFxuICBpc0VuYWJsZWQ6IG51bGwsXG4gIHBhcmFtZXRlcnM6IG51bGxcbn07XG5leHBvcnQgY2xhc3MgRWZmZWN0c1NjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdlZmZlY3RzJztcblxuICBzYXZlKGVmZmVjdHMsIHBhcmVudHMpIHtcbiAgICBjb25zdCBbdmlzU3RhdGVdID0gcGFyZW50cy5zbGljZSgtMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogdmlzU3RhdGUuZWZmZWN0T3JkZXIucmVkdWNlKChzYXZlZCwgZWZmZWN0SWQpID0+IHtcbiAgICAgICAgLy8gc2F2ZSBlZmZlY3RzIGFjY29yZGluZyB0byB0aGVpciByZW5kZXJpbmcgb3JkZXJcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHtFZmZlY3QgfCB1bmRlZmluZWR9XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBlZmZlY3QgPSBmaW5kQnlJZChlZmZlY3RJZCkoZWZmZWN0cyBhcyBFZmZlY3RbXSk7XG4gICAgICAgIGlmIChlZmZlY3Q/LmlzVmFsaWRUb1NhdmUoKSkge1xuICAgICAgICAgIHNhdmVkLnB1c2godGhpcy5zYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEoZWZmZWN0KS5lZmZlY3RzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2F2ZWQ7XG4gICAgICB9LCBbXSlcbiAgICB9O1xuICB9XG5cbiAgbG9hZChlZmZlY3RzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IGVmZmVjdHMubWFwKGVmZmVjdCA9PiB7XG4gICAgICAgIC8vIGhhbmRsZSBvbGRlciBjb25maWdzXG4gICAgICAgIGNvbnN0IG91dEVmZmVjdCA9IGVmZmVjdC5jb25maWdcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaWQ6IGVmZmVjdC5pZCxcbiAgICAgICAgICAgICAgLi4uZWZmZWN0LmNvbmZpZyxcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczogey4uLihlZmZlY3QuY29uZmlnLnBhcmFtcyB8fCB7fSl9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBlZmZlY3Q7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShvdXRFZmZlY3QsIGVmZmVjdHMpLmVmZmVjdHM7XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGZpbHRlclByb3BzVjEgPSB7XG4gIC4uLmZpbHRlclByb3BzVjAsXG4gIHBsb3RUeXBlOiBuZXcgUGxvdFR5cGVTY2hlbWEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxXG4gIH0pLFxuICBhbmltYXRpb25XaW5kb3c6IG51bGwsXG4gIHlBeGlzOiBuZXcgRGltZW5zaW9uRmllbGRTY2hlbWEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIGtleTogJ3lBeGlzJyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgdHlwZTogbnVsbFxuICAgIH1cbiAgfSksXG4gIC8vIHRoaXMgcmVwbGFjZWQgZW5sYXJnZWRcbiAgdmlldzogbnVsbCxcblxuICAvLyBwb2x5Z29uIGZpbHRlciBwcm9wZXJ0aWVzXG4gIGxheWVySWQ6IG51bGwsXG4gIHNwZWVkOiBudWxsLFxuXG4gIC8vIGxheWVyIHRpbWVsaW5lXG4gIHN5bmNlZFdpdGhMYXllclRpbWVsaW5lOiBudWxsLFxuICBzeW5jVGltZWxpbmVNb2RlOiBudWxsLFxuXG4gIGVuYWJsZWQ6IG51bGwsXG5cbiAgaW52ZXJ0VHJlbmRDb2xvcjogbnVsbCxcbiAgdGltZXpvbmU6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0aWVzVjAgPSB7XG4gIGZpbHRlcnM6IG5ldyBGaWx0ZXJTY2hlbWFWMCh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gICAgcHJvcGVydGllczogZmlsdGVyUHJvcHNWMFxuICB9KSxcbiAgbGF5ZXJzOiBuZXcgTGF5ZXJTY2hlbWFWMCh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gICAgcHJvcGVydGllczogbGF5ZXJQcm9wc1YwXG4gIH0pLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogbmV3IEludGVyYWN0aW9uU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICAgIHByb3BlcnRpZXM6IGludGVyYWN0aW9uUHJvcHNWMFxuICB9KSxcbiAgbGF5ZXJCbGVuZGluZzogbnVsbCxcbiAgb3ZlcmxheUJsZW5kaW5nOiBudWxsXG59O1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllc1YxID0ge1xuICBmaWx0ZXJzOiBuZXcgRmlsdGVyU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IGZpbHRlclByb3BzVjFcbiAgfSksXG4gIGxheWVyczogbmV3IExheWVyU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IGxheWVyUHJvcHNWMVxuICB9KSxcbiAgZWZmZWN0czogbmV3IEVmZmVjdHNTY2hlbWEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IGVmZmVjdFByb3BzVjFcbiAgfSksXG4gIGludGVyYWN0aW9uQ29uZmlnOiBuZXcgSW50ZXJhY3Rpb25TY2hlbWFWMSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgcHJvcGVydGllczogaW50ZXJhY3Rpb25Qcm9wc1YxXG4gIH0pLFxuICBsYXllckJsZW5kaW5nOiBudWxsLFxuICBvdmVybGF5QmxlbmRpbmc6IG51bGwsXG4gIHNwbGl0TWFwczogbmV3IFNwbGl0TWFwc1NjaGVtYSh7XG4gICAga2V5OiAnc3BsaXRNYXBzJyxcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MVxuICB9KSxcbiAgYW5pbWF0aW9uQ29uZmlnOiBuZXcgU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBjdXJyZW50VGltZTogbnVsbCxcbiAgICAgIHNwZWVkOiBudWxsXG4gICAgfSxcbiAgICBrZXk6ICdhbmltYXRpb25Db25maWcnXG4gIH0pLFxuICBlZGl0b3I6IG5ldyBTY2hlbWEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGZlYXR1cmVzOiBudWxsLFxuICAgICAgdmlzaWJsZTogbnVsbFxuICAgIH0sXG4gICAga2V5OiAnZWRpdG9yJ1xuICB9KVxufTtcblxuZXhwb3J0IGNsYXNzIFZpc1N0YXRlU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBzYXZlKG5vZGU6IFZpc1N0YXRlLCBwYXJlbnRzOiBhbnlbXSA9IFtdLCBhY2N1bXVsYXRvcj86IGFueSk6IHt2aXNTdGF0ZTogU2F2ZWRWaXNTdGF0ZX0ge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXR1cm4gdGhpcy5zYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEobm9kZSwgcGFyZW50cywgYWNjdW11bGF0b3IpO1xuICB9XG5cbiAgbG9hZChub2RlPzogU2F2ZWRWaXNTdGF0ZSk6IHtcbiAgICB2aXNTdGF0ZTogUGFyc2VkVmlzU3RhdGUgfCB1bmRlZmluZWQ7XG4gIH0ge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXR1cm4gdGhpcy5sb2FkUHJvcGVydGllc09yQXBwbHlTY2hlbWEobm9kZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHZpc1N0YXRlU2NoZW1hVjAgPSBuZXcgU2NoZW1hKHtcbiAgdmVyc2lvbjogVkVSU0lPTlMudjAsXG4gIHByb3BlcnRpZXM6IHByb3BlcnRpZXNWMCxcbiAga2V5OiAndmlzU3RhdGUnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpc1N0YXRlU2NoZW1hVjEgPSBuZXcgVmlzU3RhdGVTY2hlbWFWMSh7XG4gIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzVjEsXG4gIGtleTogJ3Zpc1N0YXRlJ1xufSk7XG5cbmV4cG9ydCBjb25zdCB2aXNTdGF0ZVNjaGVtYToge1xuICB2MDogdHlwZW9mIHZpc1N0YXRlU2NoZW1hVjA7XG4gIHYxOiB0eXBlb2YgdmlzU3RhdGVTY2hlbWFWMTtcbn0gPSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgW1ZFUlNJT05TLnYwXToge1xuICAgIHNhdmU6IHRvU2F2ZSA9PiB2aXNTdGF0ZVNjaGVtYVYwLnNhdmUodG9TYXZlKSxcbiAgICBsb2FkOiB0b0xvYWQgPT4gdmlzU3RhdGVTY2hlbWFWMS5sb2FkKHZpc1N0YXRlU2NoZW1hVjAubG9hZCh0b0xvYWQpPy52aXNTdGF0ZSlcbiAgfSxcbiAgW1ZFUlNJT05TLnYxXTogdmlzU3RhdGVTY2hlbWFWMVxufTtcblxuLy8gdGVzdCBsb2FkIHYwXG5leHBvcnQgZGVmYXVsdCB2aXNTdGF0ZVNjaGVtYTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUF5QyxJQUFBTyxTQUFBO0FBQUEsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVB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
998
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGljayIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3ZlcnNpb25zIiwiX2NvbnN0YW50cyIsIl91dGlscyIsIl9jb21tb25VdGlscyIsIl9zY2hlbWEiLCJfY2xvbmVEZWVwIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJkaW1lbnNpb25Qcm9wc1YwIiwiZXhwb3J0cyIsImdlb2pzb25TaXplRmllbGRWMFRvVjEiLCJjb25maWciLCJkZWZhdWx0UmFpdWRzIiwiZGVmYXVsdFJhZGl1c1JhbmdlIiwidmlzQ29uZmlnIiwiZXh0cnVkZWQiLCJzdHJva2VkIiwicmFkaXVzIiwicmFkaXVzUmFuZ2UiLCJzb21lIiwiZCIsImkiLCJEaW1lbnNpb25GaWVsZFNjaGVtYVYwIiwiX1NjaGVtYSIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiVkVSU0lPTlMiLCJ2MCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJzYXZlIiwiZmllbGQiLCJzYXZlUHJvcGVydGllc09yQXBwbHlTY2hlbWEiLCJsb2FkIiwicGFyZW50cyIsImFjY3VtdWxhdGVkIiwiX3BhcmVudHMkc2xpY2UiLCJzbGljZSIsIl9wYXJlbnRzJHNsaWNlMiIsIl9zbGljZWRUb0FycmF5MiIsImZpZWxkTmFtZSIsInR5cGUiLCJ2aXN1YWxDaGFubmVscyIsIlNjaGVtYSIsIkRpbWVuc2lvblNjYWxlU2NoZW1hVjAiLCJfU2NoZW1hMiIsIl90aGlzMiIsIl9sZW4yIiwiX2tleTIiLCJzY2FsZSIsIl9wYXJlbnRzJHNsaWNlMyIsIl9wYXJlbnRzJHNsaWNlNCIsIkxheWVyQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hMyIsIl90aGlzMyIsIl9sZW4zIiwiX2tleTMiLCJzYXZlZCIsIkxheWVyQ29sdW1uc1NjaGVtYVYwIiwiX1NjaGVtYTQiLCJfdGhpczQiLCJfbGVuNCIsIl9rZXk0IiwiY29sdW1ucyIsInJlZHVjZSIsImFjY3UiLCJMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hNSIsIl90aGlzNSIsIl9sZW41IiwiX2tleTUiLCJhY2N1bXVsYXRlZENvbmZpZyIsIkxheWVyVmlzQ29uZmlnU2NoZW1hVjAiLCJfU2NoZW1hNiIsIl90aGlzNiIsIl9sZW42IiwiX2tleTYiLCJhY2N1bXVsYXRvciIsIl9wYXJlbnRzJHNsaWNlNSIsIl9wYXJlbnRzJHNsaWNlNiIsInJlbmFtZSIsImdlb2pzb24iLCJlbGV2YXRpb25SYW5nZSIsInByb3BUb1JlbmFtZSIsIkxheWVyQ29uZmlnU2NoZW1hRGVsZXRlVjAiLCJfU2NoZW1hNyIsIl90aGlzNyIsIl9sZW43IiwiX2tleTciLCJsYXllclByb3BzVjAiLCJpZCIsImRhdGFJZCIsImxhYmVsIiwiY29sb3IiLCJpc1Zpc2libGUiLCJoaWRkZW4iLCJjb2xvckZpZWxkIiwicHJvcGVydGllcyIsImNvbG9yU2NhbGUiLCJzaXplRmllbGQiLCJzaXplU2NhbGUiLCJlbmFibGUzZCIsImNvbG9yQWdncmVnYXRpb24iLCJzaXplQWdncmVnYXRpb24iLCJpc0FnZ3JlZ2F0ZWQiLCJDb2x1bW5TY2hlbWFWMSIsIl9TY2hlbWE4IiwiY2tleSIsIl9jb2x1bW5zJGNrZXkiLCJUZXh0TGFiZWxTY2hlbWFWMSIsIl9TY2hlbWE5IiwidGV4dExhYmVsIiwibWFwIiwidGwiLCJwaWNrIiwiaXNBcnJheSIsInZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMSIsInZjIiwiX0xBWUVSX1ZJU19DT05GSUdTJHJhIiwiX3BhcmVudHMkc2xpY2U3IiwiX3BhcmVudHMkc2xpY2U4IiwibGF5ZXIiLCJpc09sZCIsImhhc093blByb3BlcnR5IiwiaXNQb2ludCIsInJhZGl1c0ZpZWxkIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJkZWZhdWx0VmFsdWUiLCJzdHJva2VDb2xvckZpZWxkIiwic3Ryb2tlQ29sb3JTY2FsZSIsIlZpc3VhbENoYW5uZWxTY2hlbWFWMSIsIl9TY2hlbWExMCIsIl9wYXJlbnRzJHNsaWNlOSIsIl9wYXJlbnRzJHNsaWNlMTAiLCJfcGFyZW50cyRzbGljZTExIiwiX3BhcmVudHMkc2xpY2UxMiIsIm1vZGlmaWVkIiwidmlzQ29uZmlnTW9kaWZpY2F0aW9uVjEiLCJwb2ludCIsIl9wYXJlbnRzJHNsaWNlMTMiLCJfcGFyZW50cyRzbGljZTE0Iiwic3Ryb2tlQ29sb3IiLCJzdHJva2VDb2xvclJhbmdlIiwiY2xvbmVEZWVwIiwiY29sb3JSYW5nZSIsIm91dGxpbmUiLCJmaWxsZWQiLCJfTEFZRVJfVklTX0NPTkZJR1MkcmEyIiwiX3BhcmVudHMkc2xpY2UxNSIsIl9wYXJlbnRzJHNsaWNlMTYiLCJWaXNDb25maWdTY2hlbWFWMSIsIl9TY2hlbWExMSIsIl90aGlzOCIsIl9sZW44IiwiX2tleTgiLCJfcGFyZW50cyRzbGljZTE3IiwiX3BhcmVudHMkc2xpY2UxOCIsImxvYWRlZFZpc0NvbmZpZyIsInByb3AiLCJjb2xvclJhbmdlQmFja3dhcmRDb21wYXRpYmlsaXR5IiwibGF5ZXJQcm9wc1YxIiwidmVyc2lvbiIsInYxIiwiY29sdW1uTW9kZSIsImhpZ2hsaWdodENvbG9yIiwiTGF5ZXJTY2hlbWFWMCIsIl9TY2hlbWExMiIsIl90aGlzOSIsIl9sZW45IiwiX2tleTkiLCJsYXllcnMiLCJfdGhpczEwIiwiX3BhcmVudHMkc2xpY2UxOSIsIl9wYXJlbnRzJHNsaWNlMjAiLCJ2aXNTdGF0ZSIsImxheWVyT3JkZXIiLCJsYXllcklkIiwiZmluZEJ5SWQiLCJpc1ZhbGlkVG9TYXZlIiwiX3RoaXMxMSIsImxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYSIsIkZpbHRlclNjaGVtYVYwIiwiX1NjaGVtYTEzIiwiX3RoaXMxMiIsIl9sZW4xMCIsIl9rZXkxMCIsImZpbHRlcnMiLCJfdGhpczEzIiwiaXNGaWx0ZXJWYWxpZFRvU2F2ZSIsIl90aGlzMTQiLCJlbmxhcmdlZCIsInZpZXciLCJmaWx0ZXJQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJuZXdGaWx0ZXIiLCJGSUxURVJfVklFV19UWVBFUyIsInNpZGUiLCJpbnRlcmFjdGlvblByb3BzVjAiLCJJbnRlcmFjdGlvblNjaGVtYVYwIiwiX1NjaGVtYTE0IiwiX3RoaXMxNSIsIl9sZW4xMSIsIl9rZXkxMSIsImludGVyYWN0aW9uQ29uZmlnIiwiZW5hYmxlZCIsImludGVyYWN0aW9uUHJvcHNWMSIsIkludGVyYWN0aW9uU2NoZW1hVjEiLCJfU2NoZW1hMTUiLCJfdGhpczE2IiwiX2xlbjEyIiwiX2tleTEyIiwiX3RoaXMxNyIsIm1vZGlmaWVkQ29uZmlnIiwiY29uZmlnVHlwZSIsImZpZWxkc1RvU2hvdyIsIm5vdE51bGxvclVuZGVmaW5lZCIsImZpZWxkRGF0YSIsIm5hbWUiLCJmb3JtYXQiLCJmaWx0ZXJQcm9wc1YwIiwiRGltZW5zaW9uRmllbGRTY2hlbWEiLCJfU2NoZW1hMTYiLCJTcGxpdE1hcHNTY2hlbWEiLCJfU2NoZW1hMTciLCJjb252ZXJ0TGF5ZXJTZXR0aW5ncyIsIl9yZWYxOSIsIl9yZWYyMCIsIl90eXBlb2YyIiwiaXNBdmFpbGFibGUiLCJzcGxpdE1hcHMiLCJfdGhpczE4Iiwic2V0dGluZ3MiLCJlbnRyaWVzIiwiUGxvdFR5cGVTY2hlbWEiLCJfU2NoZW1hMTgiLCJfdGhpczE5IiwiX2xlbjEzIiwiX2tleTEzIiwicGxvdFR5cGUiLCJlZmZlY3RQcm9wc1YxIiwiaXNFbmFibGVkIiwicGFyYW1ldGVycyIsIkVmZmVjdHNTY2hlbWEiLCJfU2NoZW1hMTkiLCJfdGhpczIwIiwiX2xlbjE0IiwiX2tleTE0IiwiZWZmZWN0cyIsIl90aGlzMjEiLCJfcGFyZW50cyRzbGljZTIxIiwiX3BhcmVudHMkc2xpY2UyMiIsImVmZmVjdE9yZGVyIiwiZWZmZWN0SWQiLCJlZmZlY3QiLCJfdGhpczIyIiwib3V0RWZmZWN0IiwicGFyYW1zIiwiZmlsdGVyUHJvcHNWMSIsImFuaW1hdGlvbldpbmRvdyIsInlBeGlzIiwic3BlZWQiLCJzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZSIsInN5bmNUaW1lbGluZU1vZGUiLCJpbnZlcnRUcmVuZENvbG9yIiwidGltZXpvbmUiLCJwcm9wZXJ0aWVzVjAiLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwicHJvcGVydGllc1YxIiwiYW5pbWF0aW9uQ29uZmlnIiwiY3VycmVudFRpbWUiLCJlZGl0b3IiLCJmZWF0dXJlcyIsInZpc2libGUiLCJWaXNTdGF0ZVNjaGVtYVYxIiwiX1NjaGVtYTIwIiwibm9kZSIsInVuZGVmaW5lZCIsInZpc1N0YXRlU2NoZW1hVjAiLCJ2aXNTdGF0ZVNjaGVtYVYxIiwidmlzU3RhdGVTY2hlbWEiLCJ0b1NhdmUiLCJ0b0xvYWQiLCJfdmlzU3RhdGVTY2hlbWFWMCRsb2EiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy92aXMtc3RhdGUtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcbmltcG9ydCB7VkVSU0lPTlN9IGZyb20gJy4vdmVyc2lvbnMnO1xuaW1wb3J0IHtMQVlFUl9WSVNfQ09ORklHUywgRklMVEVSX1ZJRVdfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Y29sb3JSYW5nZUJhY2t3YXJkQ29tcGF0aWJpbGl0eSwgaXNGaWx0ZXJWYWxpZFRvU2F2ZSwgZmluZEJ5SWR9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCBTY2hlbWEgZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCB7XG4gIEFkZERhdGFUb01hcE9wdGlvbnMsXG4gIEFuaW1hdGlvbkNvbmZpZyxcbiAgRWRpdG9yLFxuICBGaWxlTG9hZGluZyxcbiAgRmlsZUxvYWRpbmdQcm9ncmVzcyxcbiAgRmlsdGVyLFxuICBJbnRlcmFjdGlvbkNvbmZpZyxcbiAgTWFwSW5mbyxcbiAgUGFyc2VkRmlsdGVyLFxuICBQYXJzZWRMYXllcixcbiAgUGFyc2VkVmlzU3RhdGUsXG4gIFNhdmVkRmlsdGVyLFxuICBNaW5TYXZlZEZpbHRlcixcbiAgU2F2ZWRJbnRlcmFjdGlvbkNvbmZpZyxcbiAgU2F2ZWRMYXllcixcbiAgTWluU2F2ZWRMYXllcixcbiAgU2F2ZWRWaXNTdGF0ZSxcbiAgU3BsaXRNYXAsXG4gIFZhbHVlT2YsXG4gIEVmZmVjdFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7RGF0YXNldHN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtMYXllciwgTGF5ZXJDbGFzc2VzVHlwZX0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtMb2FkZXJ9IGZyb20gJ0Bsb2FkZXJzLmdsL2xvYWRlci11dGlscyc7XG5pbXBvcnQgS2VwbGVyR0xTY2hlbWEgZnJvbSAnLi9zY2hlbWEtbWFuYWdlcic7XG5cbi8qKlxuICogVjAgU2NoZW1hXG4gKi9cblxuZXhwb3J0IGNvbnN0IGRpbWVuc2lvblByb3BzVjAgPSBbJ25hbWUnLCAndHlwZSddO1xuXG5leHBvcnQgdHlwZSBtb2RpZmllZFR5cGUgPSB7XG4gIHN0cm9rZUNvbG9yPzogYW55O1xuICBzdHJva2VDb2xvclJhbmdlPzogYW55O1xuICBmaWxsZWQ/OiBib29sZWFuO1xuICBzdHJva2VkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlzU3RhdGUge1xuICBtYXBJbmZvOiBNYXBJbmZvO1xuICBsYXllcnM6IExheWVyW107XG4gIGxheWVyRGF0YTogYW55W107XG4gIGxheWVyVG9CZU1lcmdlZDogYW55W107XG4gIGxheWVyT3JkZXI6IHN0cmluZ1tdO1xuICBlZmZlY3RzOiBFZmZlY3RbXTtcbiAgZWZmZWN0T3JkZXI6IHN0cmluZ1tdO1xuICBmaWx0ZXJzOiBGaWx0ZXJbXTtcbiAgZmlsdGVyVG9CZU1lcmdlZDogYW55W107XG4gIGRhdGFzZXRzOiBEYXRhc2V0cztcbiAgZWRpdGluZ0RhdGFzZXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnO1xuICBpbnRlcmFjdGlvblRvQmVNZXJnZWQ6IGFueTtcbiAgbGF5ZXJCbGVuZGluZzogc3RyaW5nO1xuICBvdmVybGF5QmxlbmRpbmc/OiBzdHJpbmc7XG4gIGhvdmVySW5mbzogYW55O1xuICBjbGlja2VkOiBhbnk7XG4gIG1vdXNlUG9zOiBhbnk7XG4gIG1heERlZmF1bHRUb29sdGlwczogbnVtYmVyO1xuICBsYXllckNsYXNzZXM6IExheWVyQ2xhc3Nlc1R5cGU7XG4gIGFuaW1hdGlvbkNvbmZpZzogQW5pbWF0aW9uQ29uZmlnO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgc3BsaXRNYXBzOiBTcGxpdE1hcFtdO1xuICBzcGxpdE1hcHNUb0JlTWVyZ2VkOiBTcGxpdE1hcFtdO1xuICBmaWxlTG9hZGluZzogRmlsZUxvYWRpbmcgfCBmYWxzZTtcbiAgZmlsZUxvYWRpbmdQcm9ncmVzczogRmlsZUxvYWRpbmdQcm9ncmVzcztcbiAgbG9hZGluZ0luZGljYXRvclZhbHVlOiBudW1iZXI7XG4gIGxvYWRlcnM6IExvYWRlcltdO1xuICBsb2FkT3B0aW9uczogb2JqZWN0O1xuICBpbml0aWFsU3RhdGU/OiBQYXJ0aWFsPFZpc1N0YXRlPjtcbiAgbWVyZ2VyczogVmlzU3RhdGVNZXJnZXJzPGFueT47XG4gIHNjaGVtYTogdHlwZW9mIEtlcGxlckdMU2NoZW1hO1xuICBwcmVzZXJ2ZUxheWVyT3JkZXI/OiBzdHJpbmdbXTtcbiAgcHJlc2VydmVGaWx0ZXJPcmRlcj86IHN0cmluZ1tdO1xuICBwcmVzZXJ2ZURhdGFzZXRPcmRlcj86IHN0cmluZ1tdO1xuICBpc01lcmdpbmdEYXRhc2V0czoge1xuICAgIFtkYXRhc2V0SWQ6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFBvc3RNZXJnZXJQYXlsb2FkID0ge1xuICBuZXdEYXRhSWRzOiBzdHJpbmdbXTtcbiAgb3B0aW9ucz86IEFkZERhdGFUb01hcE9wdGlvbnM7XG4gIGxheWVyTWVyZ2Vycz86IE1lcmdlcjxhbnk+W107XG59O1xuZXhwb3J0IHR5cGUgTWVyZ2VyQWN0aW9uUGF5bG9hZDxTIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgbWVyZ2VyczogTWVyZ2VyPFM+W107XG4gIHBvc3RNZXJnZXJQYXlsb2FkOiBQb3N0TWVyZ2VyUGF5bG9hZDtcbn07XG5leHBvcnQgdHlwZSBNZXJnZXJNZXJnZUZ1bmM8UyBleHRlbmRzIG9iamVjdD4gPSAoXG4gIHN0YXRlOiBTLFxuICBjb25maWc6IGFueSxcbiAgZnJvbUNvbmZpZzogYm9vbGVhbixcbiAgbWVyZ2VyQWN0aW9uUGF5bG9hZD86IE1lcmdlckFjdGlvblBheWxvYWQ8Uz5cbikgPT4gUztcbmV4cG9ydCB0eXBlIFJlcGxhY2VQYXJlbnREYXRhc2V0SWRzRnVuYzxUPiA9IChcbiAgaXRlbTogVCxcbiAgZGF0YUlkOiBzdHJpbmcsXG4gIGRhdGFJZFRvUmVwbGFjZTogc3RyaW5nXG4pID0+IFQgfCBudWxsO1xuZXhwb3J0IHR5cGUgTWVyZ2VyPFMgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBtZXJnZTogTWVyZ2VyTWVyZ2VGdW5jPFM+O1xuICBwcm9wOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdG9NZXJnZVByb3A/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJlc2VydmVPcmRlcj86IHN0cmluZztcbiAgd2FpdFRvRmluaXNoPzogYm9vbGVhbjtcbiAgd2FpdEZvckxheWVyRGF0YT86IGJvb2xlYW47XG4gIHJlcGxhY2VQYXJlbnREYXRhc2V0SWRzPzogUmVwbGFjZVBhcmVudERhdGFzZXRJZHNGdW5jPFZhbHVlT2Y8Uz4+O1xuICBzYXZlVW5tZXJnZWQ/OiAoc3RhdGU6IFMsIHVubWVyZ2VkOiBhbnkpID0+IFM7XG4gIGNvbWJpbmVDb25maWdzPzogKGNvbmZpZ3M6IFNbXSkgPT4gUztcbiAgZ2V0Q2hpbGREYXRhc2V0SWRzPzogYW55O1xufTtcbmV4cG9ydCB0eXBlIFZpc1N0YXRlTWVyZ2VyczxTIGV4dGVuZHMgb2JqZWN0PiA9IE1lcmdlcjxTPltdO1xuXG4vLyBpbiB2MCBnZW9qc29uIHRoZXJlIGlzIG9ubHkgc2l6ZUZpZWxkXG5cbi8vIGluIHYxIGdlb2pzb25cbi8vIHN0cm9rZSBiYXNlIG9uIC0+IHNpemVGaWVsZFxuLy8gaGVpZ2h0IGJhc2VkIG9uIC0+IGhlaWdodEZpZWxkXG4vLyByYWRpdXMgYmFzZWQgb24gLT4gcmFkaXVzRmllbGRcbi8vIGhlcmUgd2UgbWFrZSBvdXIgd2lyZWRzdCBndWVzcyBvbiB3aGljaCBjaGFubmVsIHNpemVGaWVsZCBiZWxvbmdzIHRvXG5mdW5jdGlvbiBnZW9qc29uU2l6ZUZpZWxkVjBUb1YxKGNvbmZpZykge1xuICBjb25zdCBkZWZhdWx0UmFpdWRzID0gMTA7XG4gIGNvbnN0IGRlZmF1bHRSYWRpdXNSYW5nZSA9IFswLCA1MF07XG5cbiAgLy8gaWYgZXh0cnVkZWQsIHNpemVGaWVsZCBpcyBtb3N0IGxpa2VseSB1c2VkIGZvciBoZWlnaHRcbiAgaWYgKGNvbmZpZy52aXNDb25maWcuZXh0cnVkZWQpIHtcbiAgICByZXR1cm4gJ2hlaWdodEZpZWxkJztcbiAgfVxuXG4gIC8vIGlmIHNob3cgc3Ryb2tlIGVuYWJsZWQsIHNpemVGaWVsZCBpcyBtb3N0IGxpa2VseSB1c2VkIGZvciBzdHJva2VcbiAgaWYgKGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCkge1xuICAgIHJldHVybiAnc2l6ZUZpZWxkJztcbiAgfVxuXG4gIC8vIGlmIHJhZGl1cyBjaGFuZ2VkLCBvciByYWRpdXMgUmFuZ2UgQ2hhbmdlZCwgc2l6ZUZpZWxkIGlzIG1vc3QgbGlrZWx5IHVzZWQgZm9yIHJhZGl1c1xuICAvLyB0aGlzIGlzIHRoZSBtb3N0IHVucmVsaWFibGUgZ3Vlc3MsIHRoYXQncyB3aHkgd2UgcHV0IGl0IGluIHRoZSBlbmRcbiAgaWYgKFxuICAgIGNvbmZpZy52aXNDb25maWcucmFkaXVzICE9PSBkZWZhdWx0UmFpdWRzIHx8XG4gICAgY29uZmlnLnZpc0NvbmZpZy5yYWRpdXNSYW5nZS5zb21lKChkLCBpKSA9PiBkICE9PSBkZWZhdWx0UmFkaXVzUmFuZ2VbaV0pXG4gICkge1xuICAgIHJldHVybiAncmFkaXVzRmllbGQnO1xuICB9XG5cbiAgcmV0dXJuICdzaXplRmllbGQnO1xufVxuXG4vLyBjb252ZXJ0IHYwIHRvIHYxIGxheWVyIGNvbmZpZ1xuY2xhc3MgRGltZW5zaW9uRmllbGRTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAgc2F2ZShmaWVsZCkge1xuICAgIC8vIHNob3VsZCBub3QgYmUgY2FsbGVkIGFueW1vcmVcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogZmllbGQgIT09IG51bGwgPyB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmaWVsZClbdGhpcy5rZXldIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBsb2FkKGZpZWxkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIGNvbnN0IFtjb25maWddID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgbGV0IGZpZWxkTmFtZSA9IHRoaXMua2V5O1xuICAgIGlmIChjb25maWcudHlwZSA9PT0gJ2dlb2pzb24nICYmIHRoaXMua2V5ID09PSAnc2l6ZUZpZWxkJyAmJiBmaWVsZCkge1xuICAgICAgZmllbGROYW1lID0gZ2VvanNvblNpemVGaWVsZFYwVG9WMShjb25maWcpO1xuICAgIH1cbiAgICAvLyBmb2xkIGludG8gdmlzdWFsQ2hhbm5lbHMgdG8gYmUgbG9hZCBieSBWaXN1YWxDaGFubmVsU2NoZW1hVjFcbiAgICByZXR1cm4ge1xuICAgICAgdmlzdWFsQ2hhbm5lbHM6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdGVkLnZpc3VhbENoYW5uZWxzIHx8IHt9KSxcbiAgICAgICAgW2ZpZWxkTmFtZV06IGZpZWxkXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBEaW1lbnNpb25TY2FsZVNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBzYXZlKHNjYWxlKSB7XG4gICAgcmV0dXJuIHtbdGhpcy5rZXldOiBzY2FsZX07XG4gIH1cbiAgbG9hZChzY2FsZSwgcGFyZW50cywgYWNjdW11bGF0ZWQpIHtcbiAgICBjb25zdCBbY29uZmlnXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuICAgIC8vIGZvbGQgaW50byB2aXN1YWxDaGFubmVscyB0byBiZSBsb2FkIGJ5IFZpc3VhbENoYW5uZWxTY2hlbWFWMVxuICAgIGlmICh0aGlzLmtleSA9PT0gJ3NpemVTY2FsZScgJiYgY29uZmlnLnR5cGUgPT09ICdnZW9qc29uJykge1xuICAgICAgLy8gc2l6ZVNjYWxlIG5vdyBzcGxpdCBpbnRvIHJhZGl1c1NjYWxlLCBoZWlnaHRTY2FsZVxuICAgICAgLy8gbm8gdXNlciBjdXN0b21pemF0aW9uLCBqdXN0IHVzZSBkZWZhdWx0XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc3VhbENoYW5uZWxzOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRlZC52aXN1YWxDaGFubmVscyB8fCB7fSksXG4gICAgICAgIFt0aGlzLmtleV06IHNjYWxlXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyB1c2VkIHRvIGNvbnZlcnQgdjAgdG8gdjEgbGF5ZXIgY29uZmlnXG5jbGFzcyBMYXllckNvbmZpZ1NjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAgdmVyc2lvbiA9IFZFUlNJT05TLnYwO1xuICBsb2FkKHNhdmVkLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIC8vIGZvbGQgdjAgbGF5ZXIgcHJvcGVydHkgaW50byBjb25maWcua2V5XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi4oYWNjdW11bGF0ZWQuY29uZmlnIHx8IHt9KSxcbiAgICAgICAgW3RoaXMua2V5XTogc2F2ZWRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbi8vIHVzZWQgdG8gY29udmVydCB2MCB0byB2MSBsYXllciBjb2x1bW5zXG4vLyBvbmx5IHJldHVybiBjb2x1bW4gdmFsdWUgZm9yIGVhY2ggY29sdW1uXG5jbGFzcyBMYXllckNvbHVtbnNTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAgbG9hZChzYXZlZCwgcGFyZW50cywgYWNjdW11bGF0ZWQpIHtcbiAgICAvLyBmb2xkIHYwIGxheWVyIHByb3BlcnR5IGludG8gY29uZmlnLmtleSwgZmxhdHRlbiBjb2x1bW5zXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi4oYWNjdW11bGF0ZWQuY29uZmlnIHx8IHt9KSxcbiAgICAgICAgY29sdW1uczogT2JqZWN0LmtleXMoc2F2ZWQpLnJlZHVjZShcbiAgICAgICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgICAgIFtrZXldOiBzYXZlZFtrZXldLnZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuLy8gdXNlZCB0byBjb252ZXJ0IHYwIHRvIHYxIGxheWVyIGNvbmZpZy52aXNDb25maWdcbmNsYXNzIExheWVyQ29uZmlnVG9WaXNDb25maWdTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIHZlcnNpb24gPSBWRVJTSU9OUy52MDtcbiAgbG9hZChzYXZlZCwgcGFyZW50cywgYWNjdW11bGF0ZWQpIHtcbiAgICAvLyBmb2xkIHYwIGxheWVyIHByb3BlcnR5IGludG8gY29uZmlnLnZpc0NvbmZpZ1xuICAgIGNvbnN0IGFjY3VtdWxhdGVkQ29uZmlnID0gYWNjdW11bGF0ZWQuY29uZmlnIHx8IHt9O1xuICAgIHJldHVybiB7XG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uYWNjdW11bGF0ZWRDb25maWcsXG4gICAgICAgIHZpc0NvbmZpZzoge1xuICAgICAgICAgIC4uLihhY2N1bXVsYXRlZENvbmZpZy52aXNDb25maWcgfHwge30pLFxuICAgICAgICAgIFt0aGlzLmtleV06IHNhdmVkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIExheWVyVmlzQ29uZmlnU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIGtleSA9ICd2aXNDb25maWcnO1xuXG4gIGxvYWQodmlzQ29uZmlnLCBwYXJlbnRzLCBhY2N1bXVsYXRvcikge1xuICAgIGNvbnN0IFtjb25maWddID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgY29uc3QgcmVuYW1lID0ge1xuICAgICAgZ2VvanNvbjoge1xuICAgICAgICBleHRydWRlZDogJ2VuYWJsZTNkJyxcbiAgICAgICAgZWxldmF0aW9uUmFuZ2U6ICdoZWlnaHRSYW5nZSdcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGNvbmZpZy50eXBlIGluIHJlbmFtZSkge1xuICAgICAgY29uc3QgcHJvcFRvUmVuYW1lID0gcmVuYW1lW2NvbmZpZy50eXBlXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIC4uLihhY2N1bXVsYXRvci5jb25maWcgfHwge30pLFxuICAgICAgICAgIHZpc0NvbmZpZzogT2JqZWN0LmtleXModmlzQ29uZmlnKS5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICAuLi4ocHJvcFRvUmVuYW1lW2tleV1cbiAgICAgICAgICAgICAgICA/IHtbcHJvcFRvUmVuYW1lW2tleV1dOiB2aXNDb25maWdba2V5XX1cbiAgICAgICAgICAgICAgICA6IHtba2V5XTogdmlzQ29uZmlnW2tleV19KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLihhY2N1bXVsYXRvci5jb25maWcgfHwge30pLFxuICAgICAgICB2aXNDb25maWdcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIExheWVyQ29uZmlnU2NoZW1hRGVsZXRlVjAgZXh0ZW5kcyBTY2hlbWEge1xuICB2ZXJzaW9uID0gVkVSU0lPTlMudjA7XG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbi8qKlxuICogVjAgLT4gVjEgQ2hhbmdlc1xuICogLSBsYXllciBpcyBub3cgYSBjbGFzc1xuICogLSBjb25maWcgc2F2ZWQgaW4gYSBjb25maWcgb2JqZWN0XG4gKiAtIGlkLCB0eXBlLCBpc0FnZ3JlZ2F0ZWQgaXMgb3V0c2lkZSBsYXllci5jb25maWdcbiAqIC0gdmlzdWFsQ2hhbm5lbHMgaXMgb3V0c2lkZSBjb25maWcsIGl0IGRlZmluZXMgYXZhaWxhYmxlIHZpc3VhbCBjaGFubmVsIGFuZFxuICogICBwcm9wZXJ0eSBuYW1lcyBmb3IgZmllbGQsIHNjYWxlLCBkb21haW4gYW5kIHJhbmdlIG9mIGVhY2ggdmlzdWFsIGNoYW5lbC5cbiAqIC0gZW5hYmxlM2QsIGNvbG9yQWdncmVnYXRpb24gYW5kIHNpemVBZ2dyZWdhdGlvbiBhcmUgbW92ZWQgaW50byB2aXNDb25maWdcbiAqIC0gR2VvanNvbkxheWVyIC0gYWRkZWQgaGVpZ2h0LCByYWRpdXMgc3BlY2lmaWMgcHJvcGVydGllc1xuICovXG5cbmV4cG9ydCBjb25zdCBsYXllclByb3BzVjAgPSB7XG4gIGlkOiBudWxsLFxuICB0eXBlOiBudWxsLFxuXG4gIC8vIG1vdmUgaW50byBsYXllci5jb25maWdcbiAgZGF0YUlkOiBuZXcgTGF5ZXJDb25maWdTY2hlbWFWMCh7a2V5OiAnZGF0YUlkJ30pLFxuICBsYWJlbDogbmV3IExheWVyQ29uZmlnU2NoZW1hVjAoe2tleTogJ2xhYmVsJ30pLFxuICBjb2xvcjogbmV3IExheWVyQ29uZmlnU2NoZW1hVjAoe2tleTogJ2NvbG9yJ30pLFxuICBpc1Zpc2libGU6IG5ldyBMYXllckNvbmZpZ1NjaGVtYVYwKHtrZXk6ICdpc1Zpc2libGUnfSksXG4gIGhpZGRlbjogbmV3IExheWVyQ29uZmlnU2NoZW1hVjAoe2tleTogJ2hpZGRlbid9KSxcblxuICAvLyBjb252ZXJ0IHZpc0NvbmZpZ1xuICB2aXNDb25maWc6IG5ldyBMYXllclZpc0NvbmZpZ1NjaGVtYVYwKHtrZXk6ICd2aXNDb25maWcnfSksXG5cbiAgLy8gbW92ZSBpbnRvIGxheWVyLmNvbmZpZ1xuICAvLyBmbGF0dGVuXG4gIGNvbHVtbnM6IG5ldyBMYXllckNvbHVtbnNTY2hlbWFWMCgpLFxuXG4gIC8vIHNhdmUgaW50byB2aXN1YWxDaGFubmVsc1xuICBjb2xvckZpZWxkOiBuZXcgRGltZW5zaW9uRmllbGRTY2hlbWFWMCh7XG4gICAgcHJvcGVydGllczogZGltZW5zaW9uUHJvcHNWMCxcbiAgICBrZXk6ICdjb2xvckZpZWxkJ1xuICB9KSxcbiAgY29sb3JTY2FsZTogbmV3IERpbWVuc2lvblNjYWxlU2NoZW1hVjAoe1xuICAgIGtleTogJ2NvbG9yU2NhbGUnXG4gIH0pLFxuICBzaXplRmllbGQ6IG5ldyBEaW1lbnNpb25GaWVsZFNjaGVtYVYwKHtcbiAgICBwcm9wZXJ0aWVzOiBkaW1lbnNpb25Qcm9wc1YwLFxuICAgIGtleTogJ3NpemVGaWVsZCdcbiAgfSksXG4gIHNpemVTY2FsZTogbmV3IERpbWVuc2lvblNjYWxlU2NoZW1hVjAoe1xuICAgIGtleTogJ3NpemVTY2FsZSdcbiAgfSksXG5cbiAgLy8gbW92ZSBpbnRvIGNvbmZpZy52aXNDb25maWdcbiAgZW5hYmxlM2Q6IG5ldyBMYXllckNvbmZpZ1RvVmlzQ29uZmlnU2NoZW1hVjAoe2tleTogJ2VuYWJsZTNkJ30pLFxuICBjb2xvckFnZ3JlZ2F0aW9uOiBuZXcgTGF5ZXJDb25maWdUb1Zpc0NvbmZpZ1NjaGVtYVYwKHtcbiAgICBrZXk6ICdjb2xvckFnZ3JlZ2F0aW9uJ1xuICB9KSxcbiAgc2l6ZUFnZ3JlZ2F0aW9uOiBuZXcgTGF5ZXJDb25maWdUb1Zpc0NvbmZpZ1NjaGVtYVYwKHtrZXk6ICdzaXplQWdncmVnYXRpb24nfSksXG5cbiAgLy8gZGVsZXRlXG4gIGlzQWdncmVnYXRlZDogbmV3IExheWVyQ29uZmlnU2NoZW1hRGVsZXRlVjAoKVxufTtcblxuLyoqXG4gKiBWMSBTY2hlbWFcbiAqL1xuY2xhc3MgQ29sdW1uU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBzYXZlKGNvbHVtbnMpIHtcbiAgICAvLyBzdGFydGluZyBmcm9tIHYxLCBvbmx5IHNhdmUgY29sdW1uIHZhbHVlXG4gICAgLy8gZmllbGRJZHggd2lsbCBiZSBjYWxjdWxhdGVkIGR1cmluZyBtZXJnZVxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBPYmplY3Qua2V5cyhjb2x1bW5zKS5yZWR1Y2UoXG4gICAgICAgIChhY2N1LCBja2V5KSA9PiAoe1xuICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgLy8gaWYgdmFsdWUgaXMgbnVsbCwgZG9uJ3Qgc2F2ZSBpdFxuICAgICAgICAgIC4uLihjb2x1bW5zW2NrZXldPy52YWx1ZSA/IHtbY2tleV06IGNvbHVtbnNbY2tleV0udmFsdWV9IDoge30pXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBsb2FkKGNvbHVtbnMpIHtcbiAgICByZXR1cm4ge2NvbHVtbnN9O1xuICB9XG59XG5cbmNsYXNzIFRleHRMYWJlbFNjaGVtYVYxIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZSh0ZXh0TGFiZWwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogdGV4dExhYmVsLm1hcCh0bCA9PiAoe1xuICAgICAgICAuLi50bCxcbiAgICAgICAgZmllbGQ6IHRsLmZpZWxkID8gcGljayh0bC5maWVsZCwgWyduYW1lJywgJ3R5cGUnXSkgOiBudWxsXG4gICAgICB9KSlcbiAgICB9O1xuICB9XG5cbiAgbG9hZCh0ZXh0TGFiZWwpIHtcbiAgICByZXR1cm4ge3RleHRMYWJlbDogQXJyYXkuaXNBcnJheSh0ZXh0TGFiZWwpID8gdGV4dExhYmVsIDogW3RleHRMYWJlbF19O1xuICB9XG59XG5cbmNvbnN0IHZpc3VhbENoYW5uZWxNb2RpZmljYXRpb25WMSA9IHtcbiAgZ2VvanNvbjogKHZjLCBwYXJlbnRzKSA9PiB7XG4gICAgY29uc3QgW2xheWVyXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuICAgIGNvbnN0IGlzT2xkID0gIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YywgJ3N0cm9rZUNvbG9yRmllbGQnKTtcbiAgICAvLyBtYWtlIG91ciBiZXN0IGd1ZXNzIGlmIHRoaXMgZ2VvanNvbiBsYXllciBjb250YWlucyBwb2ludFxuICAgIGNvbnN0IGlzUG9pbnQgPVxuICAgICAgdmMucmFkaXVzRmllbGQgfHwgbGF5ZXIuY29uZmlnLnZpc0NvbmZpZy5yYWRpdXMgIT09IExBWUVSX1ZJU19DT05GSUdTLnJhZGl1cz8uZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKGlzT2xkICYmICFpc1BvaW50ICYmIGxheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCkge1xuICAgICAgLy8gaWYgc3Ryb2tlZCBpcyB0cnVlLCBjb3B5IGNvbG9yIGNvbmZpZyB0byBzdHJva2UgY29sb3IgY29uZmlnXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdHJva2VDb2xvckZpZWxkOiB2Yy5jb2xvckZpZWxkLFxuICAgICAgICBzdHJva2VDb2xvclNjYWxlOiB2Yy5jb2xvclNjYWxlXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cbn07XG4vKipcbiAqIFYxOiBzYXZlIFtmaWVsZF06IHtuYW1lLCB0eXBlfSwgW3NjYWxlXTogJycgZm9yIGVhY2ggY2hhbm5lbFxuICovXG5jbGFzcyBWaXN1YWxDaGFubmVsU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBzYXZlKHZpc3VhbENoYW5uZWxzLCBwYXJlbnRzKSB7XG4gICAgLy8gb25seSBzYXZlIGZpZWxkIGFuZCBzY2FsZSBvZiBlYWNoIGNoYW5uZWxcbiAgICBjb25zdCBbbGF5ZXJdID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IE9iamVjdC5rZXlzKHZpc3VhbENoYW5uZWxzKS5yZWR1Y2UoXG4gICAgICAgIC8vICBzYXZlIGNoYW5uZWwgdG8gbnVsbCBpZiBkaWRuJ3Qgc2VsZWN0IGFueSBmaWVsZFxuICAgICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgW3Zpc3VhbENoYW5uZWxzW2tleV0uZmllbGRdOiBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF1cbiAgICAgICAgICAgID8gcGljayhsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbHNba2V5XS5maWVsZF0sIFsnbmFtZScsICd0eXBlJ10pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgW3Zpc3VhbENoYW5uZWxzW2tleV0uc2NhbGVdOiBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbHNba2V5XS5zY2FsZV1cbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgICApXG4gICAgfTtcbiAgfVxuICBsb2FkKHZjLCBwYXJlbnRzLCBhY2N1bXVsYXRvcikge1xuICAgIC8vIGZvbGQgY2hhbm5lbHMgaW50byBjb25maWdcbiAgICBjb25zdCBbbGF5ZXJdID0gcGFyZW50cy5zbGljZSgtMSk7XG4gICAgY29uc3QgbW9kaWZpZWQgPSB2aXN1YWxDaGFubmVsTW9kaWZpY2F0aW9uVjFbbGF5ZXIudHlwZV1cbiAgICAgID8gdmlzdWFsQ2hhbm5lbE1vZGlmaWNhdGlvblYxW2xheWVyLnR5cGVdKHZjLCBwYXJlbnRzLCBhY2N1bXVsYXRvcilcbiAgICAgIDoge307XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWNjdW11bGF0b3IsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uKGFjY3VtdWxhdG9yLmNvbmZpZyB8fCB7fSksXG4gICAgICAgIC4uLnZjLFxuICAgICAgICAuLi5tb2RpZmllZFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbmNvbnN0IHZpc0NvbmZpZ01vZGlmaWNhdGlvblYxID0ge1xuICBwb2ludDogKHZpc0NvbmZpZywgcGFyZW50cykgPT4ge1xuICAgIGNvbnN0IG1vZGlmaWVkOiBtb2RpZmllZFR5cGUgPSB7fTtcbiAgICBjb25zdCBbbGF5ZXJdID0gcGFyZW50cy5zbGljZSgtMiwgLTEpO1xuICAgIGNvbnN0IGlzT2xkID1cbiAgICAgICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmlzQ29uZmlnLCAnZmlsbGVkJykgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3IgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3JSYW5nZTtcbiAgICBpZiAoaXNPbGQpIHtcbiAgICAgIC8vIGNvbG9yIGNvbG9yICYgY29sb3IgcmFuZ2UgdG8gc3Ryb2tlIGNvbG9yXG4gICAgICBtb2RpZmllZC5zdHJva2VDb2xvciA9IGxheWVyLmNvbmZpZy5jb2xvcjtcbiAgICAgIG1vZGlmaWVkLnN0cm9rZUNvbG9yUmFuZ2UgPSBjbG9uZURlZXAodmlzQ29uZmlnLmNvbG9yUmFuZ2UpO1xuICAgICAgaWYgKHZpc0NvbmZpZy5vdXRsaW5lKSB7XG4gICAgICAgIC8vIHBvaW50IGxheWVyIG5vdyBzdXBwb3J0cyBib3RoIG91dGxpbmUgYW5kIGZpbGxcbiAgICAgICAgLy8gZm9yIG9sZGVyIHNjaGVtYSB3aGVyZSBmaWxsZWQgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIHBvaW50IGxheWVyXG4gICAgICAgIC8vIHNldCBpdCB0byBmYWxzZVxuICAgICAgICBtb2RpZmllZC5maWxsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kaWZpZWQ7XG4gIH0sXG4gIGdlb2pzb246ICh2aXNDb25maWcsIHBhcmVudHMpID0+IHtcbiAgICAvLyBpcyBwb2ludHM/XG4gICAgY29uc3QgbW9kaWZpZWQ6IG1vZGlmaWVkVHlwZSA9IHt9O1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0yLCAtMSk7XG4gICAgY29uc3QgaXNPbGQgPVxuICAgICAgbGF5ZXIudmlzdWFsQ2hhbm5lbHMgJiZcbiAgICAgICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobGF5ZXIudmlzdWFsQ2hhbm5lbHMsICdzdHJva2VDb2xvckZpZWxkJykgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3IgJiZcbiAgICAgICF2aXNDb25maWcuc3Ryb2tlQ29sb3JSYW5nZTtcbiAgICAvLyBtYWtlIG91ciBiZXN0IGd1ZXNzIGlmIHRoaXMgZ2VvanNvbiBsYXllciBjb250YWlucyBwb2ludFxuICAgIGNvbnN0IGlzUG9pbnQgPVxuICAgICAgKGxheWVyLnZpc3VhbENoYW5uZWxzICYmIGxheWVyLnZpc3VhbENoYW5uZWxzLnJhZGl1c0ZpZWxkKSB8fFxuICAgICAgKHZpc0NvbmZpZyAmJiB2aXNDb25maWcucmFkaXVzICE9PSBMQVlFUl9WSVNfQ09ORklHUy5yYWRpdXM/LmRlZmF1bHRWYWx1ZSk7XG5cbiAgICBpZiAoaXNPbGQpIHtcbiAgICAgIC8vIGNvbG9yIGNvbG9yICYgY29sb3IgcmFuZ2UgdG8gc3Ryb2tlIGNvbG9yXG4gICAgICBtb2RpZmllZC5zdHJva2VDb2xvciA9IGxheWVyLmNvbmZpZy5jb2xvcjtcbiAgICAgIG1vZGlmaWVkLnN0cm9rZUNvbG9yUmFuZ2UgPSBjbG9uZURlZXAodmlzQ29uZmlnLmNvbG9yUmFuZ2UpO1xuICAgICAgaWYgKGlzUG9pbnQpIHtcbiAgICAgICAgLy8gaWYgaXMgcG9pbnQsIHNldCBzdHJva2UgdG8gZmFsc2VcbiAgICAgICAgbW9kaWZpZWQuZmlsbGVkID0gdHJ1ZTtcbiAgICAgICAgbW9kaWZpZWQuc3Ryb2tlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RpZmllZDtcbiAgfVxufTtcblxuY2xhc3MgVmlzQ29uZmlnU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAndmlzQ29uZmlnJztcbiAgLy8gbGF5ZXIuY29uZmlnLnZpc0NvbmZpZ1xuICAvLyBjb2xvclJhbmdlXG4gIGxvYWQodmlzQ29uZmlnLCBwYXJlbnRzLCBhY2N1bXVsYXRlZCkge1xuICAgIGNvbnN0IFtsYXllcl0gPSBwYXJlbnRzLnNsaWNlKC0yLCAtMSk7XG4gICAgY29uc3QgbW9kaWZpZWQgPSB2aXNDb25maWdNb2RpZmljYXRpb25WMVtsYXllci50eXBlXVxuICAgICAgPyB2aXNDb25maWdNb2RpZmljYXRpb25WMVtsYXllci50eXBlXSh2aXNDb25maWcsIHBhcmVudHMsIGFjY3VtdWxhdGVkKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBsb2FkZWRWaXNDb25maWcgPSB7Li4udmlzQ29uZmlnLCAuLi5tb2RpZmllZH07XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBsb2FkIGNvbG9yUmFuZ2UgYW5kIGNoYW5nZSB0aGUgbmFtZSB0byBtYXRjaCBuZXcgY29sb3IgUGFsZXR0ZVxuICAgIFsnY29sb3JSYW5nZScsICdzdHJva2VDb2xvclJhbmdlJ10uZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGlmIChsb2FkZWRWaXNDb25maWc/Lltwcm9wXSkge1xuICAgICAgICBsb2FkZWRWaXNDb25maWdbcHJvcF0gPSBjb2xvclJhbmdlQmFja3dhcmRDb21wYXRpYmlsaXR5KGxvYWRlZFZpc0NvbmZpZ1twcm9wXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzQ29uZmlnOiBsb2FkZWRWaXNDb25maWdcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBsYXllclByb3BzVjEgPSB7XG4gIGlkOiBudWxsLFxuICB0eXBlOiBudWxsLFxuICBjb25maWc6IG5ldyBTY2hlbWEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIGtleTogJ2NvbmZpZycsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgZGF0YUlkOiBudWxsLFxuICAgICAgY29sdW1uTW9kZTogbnVsbCxcbiAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgY29sb3I6IG51bGwsXG4gICAgICBoaWdobGlnaHRDb2xvcjogbnVsbCxcbiAgICAgIGNvbHVtbnM6IG5ldyBDb2x1bW5TY2hlbWFWMSh7XG4gICAgICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgICAgICBrZXk6ICdjb2x1bW5zJ1xuICAgICAgfSksXG4gICAgICBpc1Zpc2libGU6IG51bGwsXG4gICAgICB2aXNDb25maWc6IG5ldyBWaXNDb25maWdTY2hlbWFWMSh7XG4gICAgICAgIHZlcnNpb246IFZFUlNJT05TLnYxXG4gICAgICB9KSxcbiAgICAgIGhpZGRlbjogbnVsbCxcbiAgICAgIHRleHRMYWJlbDogbmV3IFRleHRMYWJlbFNjaGVtYVYxKHtcbiAgICAgICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgICAgIGtleTogJ3RleHRMYWJlbCdcbiAgICAgIH0pXG4gICAgfVxuICB9KSxcbiAgdmlzdWFsQ2hhbm5lbHM6IG5ldyBWaXN1YWxDaGFubmVsU2NoZW1hVjEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIGtleTogJ3Zpc3VhbENoYW5uZWxzJ1xuICB9KVxufTtcblxuZXhwb3J0IGNsYXNzIExheWVyU2NoZW1hVjAgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnbGF5ZXJzJztcblxuICBzYXZlKGxheWVyczogTGF5ZXJbXSwgcGFyZW50czogW1Zpc1N0YXRlXSk6IHtsYXllcnM6IFNhdmVkTGF5ZXJbXX0ge1xuICAgIGNvbnN0IFt2aXNTdGF0ZV0gPSBwYXJlbnRzLnNsaWNlKC0xKTtcblxuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXkgYXMgJ2xheWVycyddOiB2aXNTdGF0ZS5sYXllck9yZGVyLnJlZHVjZSgoc2F2ZWQsIGxheWVySWQpID0+IHtcbiAgICAgICAgLy8gc2F2ZSBsYXllcnMgYWNjb3JkaW5nIHRvIHRoZWlyIHJlbmRlcmluZyBvcmRlclxuICAgICAgICBjb25zdCBsYXllciA9IGZpbmRCeUlkKGxheWVySWQpKGxheWVycyk7XG4gICAgICAgIGlmIChsYXllcj8uaXNWYWxpZFRvU2F2ZSgpKSB7XG4gICAgICAgICAgc2F2ZWQucHVzaCh0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShsYXllcikubGF5ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2F2ZWQ7XG4gICAgICB9LCBbXSBhcyBTYXZlZExheWVyW10pXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQobGF5ZXJzOiBTYXZlZExheWVyW10gfCBNaW5TYXZlZExheWVyW10gfCB1bmRlZmluZWQpOiB7XG4gICAgbGF5ZXJzOiBQYXJzZWRMYXllcltdIHwgdW5kZWZpbmVkO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5IGFzICdsYXllcnMnXTogbGF5ZXJzXG4gICAgICAgID8gbGF5ZXJzLm1hcChsYXllciA9PiB0aGlzLmxvYWRQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShsYXllciwgbGF5ZXJzKS5sYXllcnMpXG4gICAgICAgIDogW11cbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJTY2hlbWFWMCBleHRlbmRzIFNjaGVtYSB7XG4gIGtleSA9ICdmaWx0ZXJzJztcbiAgc2F2ZShmaWx0ZXJzOiBGaWx0ZXJbXSk6IHtmaWx0ZXJzOiBTYXZlZEZpbHRlcltdfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnNcbiAgICAgICAgLmZpbHRlcihpc0ZpbHRlclZhbGlkVG9TYXZlKVxuICAgICAgICAubWFwKGZpbHRlciA9PiB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmaWx0ZXIpLmZpbHRlcnMpXG4gICAgfTtcbiAgfVxuICBsb2FkKGZpbHRlcnM6IFNhdmVkRmlsdGVyW10gfCBNaW5TYXZlZEZpbHRlcltdIHwgdW5kZWZpbmVkKToge1xuICAgIGZpbHRlcnM6IFBhcnNlZEZpbHRlcltdIHwgdW5kZWZpbmVkO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsdGVyczogZmlsdGVyc1xuICAgICAgICA/Lm1hcChmaWx0ZXIgPT4gdGhpcy5sb2FkUHJvcGVydGllc09yQXBwbHlTY2hlbWEoZmlsdGVyKS5maWx0ZXJzKVxuICAgICAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmxlIGNvbnZlcnQgZW5sYXJnZWQgdG8gdmlld1xuICAgICAgICAubWFwKGZpbHRlciA9PiB7XG4gICAgICAgICAgY29uc3Qge2VubGFyZ2VkLCB2aWV3LCAuLi5maWx0ZXJQcm9wc30gPSBmaWx0ZXI7XG5cbiAgICAgICAgICBjb25zdCBuZXdGaWx0ZXIgPSB7XG4gICAgICAgICAgICAuLi5maWx0ZXJQcm9wcyxcbiAgICAgICAgICAgIC8vIGlmIHZpZXcgZXhpc3QgdXNlIGl0IG90aGVyd2lzZSBjaGVjayBmb3IgZW5sYXJnZWRcbiAgICAgICAgICAgIHZpZXc6IHZpZXcgPyB2aWV3IDogZW5sYXJnZWQgPyBGSUxURVJfVklFV19UWVBFUy5lbmxhcmdlZCA6IEZJTFRFUl9WSUVXX1RZUEVTLnNpZGVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmV0dXJuIG5ld0ZpbHRlcjtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IGludGVyYWN0aW9uUHJvcHNWMCA9IFsndG9vbHRpcCcsICdicnVzaCddO1xuXG5jbGFzcyBJbnRlcmFjdGlvblNjaGVtYVYwIGV4dGVuZHMgU2NoZW1hIHtcbiAga2V5ID0gJ2ludGVyYWN0aW9uQ29uZmlnJztcblxuICBzYXZlKGludGVyYWN0aW9uQ29uZmlnKSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGhpcy5wcm9wZXJ0aWVzKVxuICAgICAgPyB7XG4gICAgICAgICAgW3RoaXMua2V5XTogdGhpcy5wcm9wZXJ0aWVzLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjY3UsXG4gICAgICAgICAgICAgIC4uLihpbnRlcmFjdGlvbkNvbmZpZ1trZXldLmVuYWJsZWQgPyB7W2tleV06IGludGVyYWN0aW9uQ29uZmlnW2tleV0uY29uZmlnfSA6IHt9KVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcbiAgfVxuXG4gIGxvYWQoaW50ZXJhY3Rpb25Db25maWcpIHtcbiAgICAvLyBjb252ZXJ0IHYwIC0+IHYxXG4gICAgLy8gcmV0dXJuIGVuYWJsZWQ6IGZhbHNlIGlmIGRpc2FibGVkLFxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcGVydGllcylcbiAgICAgID8ge1xuICAgICAgICAgIFt0aGlzLmtleV06IHRoaXMucHJvcGVydGllcy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgW2tleV06IHtcbiAgICAgICAgICAgICAgICAgIC4uLihpbnRlcmFjdGlvbkNvbmZpZ1trZXldIHx8IHt9KSxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IEJvb2xlYW4oaW50ZXJhY3Rpb25Db25maWdba2V5XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIDoge307XG4gIH1cbn1cblxuY29uc3QgaW50ZXJhY3Rpb25Qcm9wc1YxID0gWy4uLmludGVyYWN0aW9uUHJvcHNWMCwgJ2dlb2NvZGVyJywgJ2Nvb3JkaW5hdGUnXTtcblxuZXhwb3J0IGNsYXNzIEludGVyYWN0aW9uU2NoZW1hVjEgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnaW50ZXJhY3Rpb25Db25maWcnO1xuXG4gIHNhdmUoaW50ZXJhY3Rpb25Db25maWc6IEludGVyYWN0aW9uQ29uZmlnKTpcbiAgICB8IHtcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWc6IFNhdmVkSW50ZXJhY3Rpb25Db25maWc7XG4gICAgICB9XG4gICAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAvLyBzYXZlIGNvbmZpZyBldmVuIGlmIGRpc2FibGVkLFxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRoaXMucHJvcGVydGllcylcbiAgICAgID8ge1xuICAgICAgICAgIFt0aGlzLmtleV06IHRoaXMucHJvcGVydGllcy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdSwga2V5KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICBba2V5XToge1xuICAgICAgICAgICAgICAgIC4uLmludGVyYWN0aW9uQ29uZmlnW2tleV0uY29uZmlnLFxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGludGVyYWN0aW9uQ29uZmlnW2tleV0uZW5hYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICA6IHt9O1xuICB9XG4gIGxvYWQoaW50ZXJhY3Rpb25Db25maWc6IFNhdmVkSW50ZXJhY3Rpb25Db25maWcpOiB7XG4gICAgaW50ZXJhY3Rpb25Db25maWc6IFBhcnRpYWw8U2F2ZWRJbnRlcmFjdGlvbkNvbmZpZz47XG4gIH0ge1xuICAgIGNvbnN0IG1vZGlmaWVkQ29uZmlnID0gY2xvbmVEZWVwKGludGVyYWN0aW9uQ29uZmlnKTtcbiAgICBPYmplY3Qua2V5cyhpbnRlcmFjdGlvbkNvbmZpZykuZm9yRWFjaChjb25maWdUeXBlID0+IHtcbiAgICAgIGlmIChjb25maWdUeXBlID09PSAndG9vbHRpcCcpIHtcbiAgICAgICAgY29uc3QgZmllbGRzVG9TaG93ID0gbW9kaWZpZWRDb25maWdbY29uZmlnVHlwZV0uZmllbGRzVG9TaG93O1xuICAgICAgICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZChmaWVsZHNUb1Nob3cpKSB7XG4gICAgICAgICAgcmV0dXJuIHtbdGhpcy5rZXldOiBtb2RpZmllZENvbmZpZ307XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzVG9TaG93KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBuYW1lOiBmaWVsZERhdGEgc2hvdWxkIGJlIHN0cmluZ1xuICAgICAgICAgIGZpZWxkc1RvU2hvd1trZXldID0gZmllbGRzVG9TaG93W2tleV0ubWFwKGZpZWxkRGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpZWxkRGF0YS5uYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogZmllbGREYXRhLFxuICAgICAgICAgICAgICAgIGZvcm1hdDogbnVsbFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpZWxkRGF0YTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSk7XG4gICAgcmV0dXJuIHtbdGhpcy5rZXkgYXMgJ2ludGVyYWN0aW9uQ29uZmlnJ106IG1vZGlmaWVkQ29uZmlnfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZmlsdGVyUHJvcHNWMCA9IHtcbiAgZGF0YUlkOiBudWxsLFxuICBpZDogbnVsbCxcbiAgbmFtZTogbnVsbCxcbiAgdHlwZTogbnVsbCxcbiAgdmFsdWU6IG51bGwsXG4gIC8vIGRlcHJlY2F0ZWRcbiAgZW5sYXJnZWQ6IG51bGxcbn07XG5cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25GaWVsZFNjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIHNhdmUoZmllbGQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMua2V5XTogZmllbGQgPyB0aGlzLnNhdmVQcm9wZXJ0aWVzT3JBcHBseVNjaGVtYShmaWVsZClbdGhpcy5rZXldIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBsb2FkKGZpZWxkKSB7XG4gICAgcmV0dXJuIHtbdGhpcy5rZXldOiBmaWVsZH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwbGl0TWFwc1NjaGVtYSBleHRlbmRzIFNjaGVtYSB7XG4gIGNvbnZlcnRMYXllclNldHRpbmdzKGFjY3UsIFtrZXksIHZhbHVlXSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IHZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2tleV06IEJvb2xlYW4odmFsdWUuaXNWaXNpYmxlKVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3U7XG4gIH1cblxuICBsb2FkKHNwbGl0TWFwcykge1xuICAgIC8vIHByZXZpb3VzIHNwbGl0TWFwcyBTY2hlbWEge2xheWVyczoge2xheWVySWQ6IHtpc1Zpc2libGUsIGlzQXZhaWxhYmxlfX19XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3BsaXRNYXBzKSB8fCAhc3BsaXRNYXBzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtzcGxpdE1hcHM6IFtdfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3BsaXRNYXBzOiBzcGxpdE1hcHMubWFwKHNldHRpbmdzID0+ICh7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBsYXllcnM6IE9iamVjdC5lbnRyaWVzKHNldHRpbmdzLmxheWVycyB8fCB7fSkucmVkdWNlKHRoaXMuY29udmVydExheWVyU2V0dGluZ3MsIHt9KVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFBsb3RUeXBlU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHtcbiAga2V5ID0gJ3Bsb3RUeXBlJztcbiAgbG9hZChwbG90VHlwZSkge1xuICAgIGlmICh0eXBlb2YgcGxvdFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwbG90VHlwZToge1xuICAgICAgICAgIHR5cGU6IHBsb3RUeXBlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7cGxvdFR5cGV9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBlZmZlY3RQcm9wc1YxID0ge1xuICBpZDogbnVsbCxcbiAgdHlwZTogbnVsbCxcbiAgaXNFbmFibGVkOiBudWxsLFxuICBwYXJhbWV0ZXJzOiBudWxsXG59O1xuZXhwb3J0IGNsYXNzIEVmZmVjdHNTY2hlbWEgZXh0ZW5kcyBTY2hlbWEge1xuICBrZXkgPSAnZWZmZWN0cyc7XG5cbiAgc2F2ZShlZmZlY3RzLCBwYXJlbnRzKSB7XG4gICAgY29uc3QgW3Zpc1N0YXRlXSA9IHBhcmVudHMuc2xpY2UoLTEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmtleV06IHZpc1N0YXRlLmVmZmVjdE9yZGVyLnJlZHVjZSgoc2F2ZWQsIGVmZmVjdElkKSA9PiB7XG4gICAgICAgIC8vIHNhdmUgZWZmZWN0cyBhY2NvcmRpbmcgdG8gdGhlaXIgcmVuZGVyaW5nIG9yZGVyXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7RWZmZWN0IHwgdW5kZWZpbmVkfVxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgZWZmZWN0ID0gZmluZEJ5SWQoZWZmZWN0SWQpKGVmZmVjdHMgYXMgRWZmZWN0W10pO1xuICAgICAgICBpZiAoZWZmZWN0Py5pc1ZhbGlkVG9TYXZlKCkpIHtcbiAgICAgICAgICBzYXZlZC5wdXNoKHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKGVmZmVjdCkuZWZmZWN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhdmVkO1xuICAgICAgfSwgW10pXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoZWZmZWN0cykge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5rZXldOiBlZmZlY3RzLm1hcChlZmZlY3QgPT4ge1xuICAgICAgICAvLyBoYW5kbGUgb2xkZXIgY29uZmlnc1xuICAgICAgICBjb25zdCBvdXRFZmZlY3QgPSBlZmZlY3QuY29uZmlnXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGlkOiBlZmZlY3QuaWQsXG4gICAgICAgICAgICAgIC4uLmVmZmVjdC5jb25maWcsXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsuLi4oZWZmZWN0LmNvbmZpZy5wYXJhbXMgfHwge30pfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogZWZmZWN0O1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUHJvcGVydGllc09yQXBwbHlTY2hlbWEob3V0RWZmZWN0LCBlZmZlY3RzKS5lZmZlY3RzO1xuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJQcm9wc1YxID0ge1xuICAuLi5maWx0ZXJQcm9wc1YwLFxuICBwbG90VHlwZTogbmV3IFBsb3RUeXBlU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MVxuICB9KSxcbiAgYW5pbWF0aW9uV2luZG93OiBudWxsLFxuICB5QXhpczogbmV3IERpbWVuc2lvbkZpZWxkU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBrZXk6ICd5QXhpcycsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgbmFtZTogbnVsbCxcbiAgICAgIHR5cGU6IG51bGxcbiAgICB9XG4gIH0pLFxuICAvLyB0aGlzIHJlcGxhY2VkIGVubGFyZ2VkXG4gIHZpZXc6IG51bGwsXG5cbiAgLy8gcG9seWdvbiBmaWx0ZXIgcHJvcGVydGllc1xuICBsYXllcklkOiBudWxsLFxuICBzcGVlZDogbnVsbCxcblxuICAvLyBsYXllciB0aW1lbGluZVxuICBzeW5jZWRXaXRoTGF5ZXJUaW1lbGluZTogbnVsbCxcbiAgc3luY1RpbWVsaW5lTW9kZTogbnVsbCxcblxuICBlbmFibGVkOiBudWxsLFxuXG4gIGludmVydFRyZW5kQ29sb3I6IG51bGwsXG4gIHRpbWV6b25lOiBudWxsXG59O1xuXG5leHBvcnQgY29uc3QgcHJvcGVydGllc1YwID0ge1xuICBmaWx0ZXJzOiBuZXcgRmlsdGVyU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICAgIHByb3BlcnRpZXM6IGZpbHRlclByb3BzVjBcbiAgfSksXG4gIGxheWVyczogbmV3IExheWVyU2NoZW1hVjAoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICAgIHByb3BlcnRpZXM6IGxheWVyUHJvcHNWMFxuICB9KSxcbiAgaW50ZXJhY3Rpb25Db25maWc6IG5ldyBJbnRlcmFjdGlvblNjaGVtYVYwKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MCxcbiAgICBwcm9wZXJ0aWVzOiBpbnRlcmFjdGlvblByb3BzVjBcbiAgfSksXG4gIGxheWVyQmxlbmRpbmc6IG51bGwsXG4gIG92ZXJsYXlCbGVuZGluZzogbnVsbFxufTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnRpZXNWMSA9IHtcbiAgZmlsdGVyczogbmV3IEZpbHRlclNjaGVtYVYwKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBmaWx0ZXJQcm9wc1YxXG4gIH0pLFxuICBsYXllcnM6IG5ldyBMYXllclNjaGVtYVYwKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBsYXllclByb3BzVjFcbiAgfSksXG4gIGVmZmVjdHM6IG5ldyBFZmZlY3RzU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiBlZmZlY3RQcm9wc1YxXG4gIH0pLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogbmV3IEludGVyYWN0aW9uU2NoZW1hVjEoe1xuICAgIHZlcnNpb246IFZFUlNJT05TLnYxLFxuICAgIHByb3BlcnRpZXM6IGludGVyYWN0aW9uUHJvcHNWMVxuICB9KSxcbiAgbGF5ZXJCbGVuZGluZzogbnVsbCxcbiAgb3ZlcmxheUJsZW5kaW5nOiBudWxsLFxuICBzcGxpdE1hcHM6IG5ldyBTcGxpdE1hcHNTY2hlbWEoe1xuICAgIGtleTogJ3NwbGl0TWFwcycsXG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjFcbiAgfSksXG4gIGFuaW1hdGlvbkNvbmZpZzogbmV3IFNjaGVtYSh7XG4gICAgdmVyc2lvbjogVkVSU0lPTlMudjEsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY3VycmVudFRpbWU6IG51bGwsXG4gICAgICBzcGVlZDogbnVsbFxuICAgIH0sXG4gICAga2V5OiAnYW5pbWF0aW9uQ29uZmlnJ1xuICB9KSxcbiAgZWRpdG9yOiBuZXcgU2NoZW1hKHtcbiAgICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBmZWF0dXJlczogbnVsbCxcbiAgICAgIHZpc2libGU6IG51bGxcbiAgICB9LFxuICAgIGtleTogJ2VkaXRvcidcbiAgfSlcbn07XG5cbmV4cG9ydCBjbGFzcyBWaXNTdGF0ZVNjaGVtYVYxIGV4dGVuZHMgU2NoZW1hIHtcbiAgc2F2ZShub2RlOiBWaXNTdGF0ZSwgcGFyZW50czogYW55W10gPSBbXSwgYWNjdW11bGF0b3I/OiBhbnkpOiB7dmlzU3RhdGU6IFNhdmVkVmlzU3RhdGV9IHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcmV0dXJuIHRoaXMuc2F2ZVByb3BlcnRpZXNPckFwcGx5U2NoZW1hKG5vZGUsIHBhcmVudHMsIGFjY3VtdWxhdG9yKTtcbiAgfVxuXG4gIGxvYWQobm9kZT86IFNhdmVkVmlzU3RhdGUpOiB7XG4gICAgdmlzU3RhdGU6IFBhcnNlZFZpc1N0YXRlIHwgdW5kZWZpbmVkO1xuICB9IHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcmV0dXJuIHRoaXMubG9hZFByb3BlcnRpZXNPckFwcGx5U2NoZW1hKG5vZGUpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB2aXNTdGF0ZVNjaGVtYVYwID0gbmV3IFNjaGVtYSh7XG4gIHZlcnNpb246IFZFUlNJT05TLnYwLFxuICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzVjAsXG4gIGtleTogJ3Zpc1N0YXRlJ1xufSk7XG5cbmV4cG9ydCBjb25zdCB2aXNTdGF0ZVNjaGVtYVYxID0gbmV3IFZpc1N0YXRlU2NoZW1hVjEoe1xuICB2ZXJzaW9uOiBWRVJTSU9OUy52MSxcbiAgcHJvcGVydGllczogcHJvcGVydGllc1YxLFxuICBrZXk6ICd2aXNTdGF0ZSdcbn0pO1xuXG5leHBvcnQgY29uc3QgdmlzU3RhdGVTY2hlbWE6IHtcbiAgdjA6IHR5cGVvZiB2aXNTdGF0ZVNjaGVtYVYwO1xuICB2MTogdHlwZW9mIHZpc1N0YXRlU2NoZW1hVjE7XG59ID0ge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIFtWRVJTSU9OUy52MF06IHtcbiAgICBzYXZlOiB0b1NhdmUgPT4gdmlzU3RhdGVTY2hlbWFWMC5zYXZlKHRvU2F2ZSksXG4gICAgbG9hZDogdG9Mb2FkID0+IHZpc1N0YXRlU2NoZW1hVjEubG9hZCh2aXNTdGF0ZVNjaGVtYVYwLmxvYWQodG9Mb2FkKT8udmlzU3RhdGUpXG4gIH0sXG4gIFtWRVJTSU9OUy52MV06IHZpc1N0YXRlU2NoZW1hVjFcbn07XG5cbi8vIHRlc3QgbG9hZCB2MFxuZXhwb3J0IGRlZmF1bHQgdmlzU3RhdGVTY2hlbWE7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFBeUMsSUFBQU8sU0FBQTtBQUFBLFNBQUFDLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdB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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kepler.gl/schemas",
3
3
  "author": "Shan He <shan@uber.com>",
4
- "version": "3.1.7",
4
+ "version": "3.1.8",
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.1.7",
34
- "@kepler.gl/constants": "3.1.7",
35
- "@kepler.gl/layers": "3.1.7",
36
- "@kepler.gl/table": "3.1.7",
37
- "@kepler.gl/types": "3.1.7",
38
- "@kepler.gl/utils": "3.1.7",
33
+ "@kepler.gl/common-utils": "3.1.8",
34
+ "@kepler.gl/constants": "3.1.8",
35
+ "@kepler.gl/layers": "3.1.8",
36
+ "@kepler.gl/table": "3.1.8",
37
+ "@kepler.gl/types": "3.1.8",
38
+ "@kepler.gl/utils": "3.1.8",
39
39
  "@loaders.gl/loader-utils": "^4.3.2",
40
40
  "@types/keymirror": "^0.1.1",
41
41
  "@types/lodash": "4.17.5",
@@ -75,6 +75,7 @@ export interface VisState {
75
75
  splitMapsToBeMerged: SplitMap[];
76
76
  fileLoading: FileLoading | false;
77
77
  fileLoadingProgress: FileLoadingProgress;
78
+ loadingIndicatorValue: number;
78
79
  loaders: Loader[];
79
80
  loadOptions: object;
80
81
  initialState?: Partial<VisState>;