kepler.gl 3.1.6 → 3.1.7

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 (157) hide show
  1. package/dist/src/actions/src/action-types.d.ts +2 -2
  2. package/dist/src/actions/src/action-wrapper.d.ts +2 -2
  3. package/dist/src/actions/src/actions.d.ts +3 -3
  4. package/dist/src/actions/src/map-state-actions.d.ts +4 -4
  5. package/dist/src/actions/src/vis-state-actions.d.ts +2 -2
  6. package/dist/src/ai-assistant/src/tools/kepler-tools/index.d.ts +1 -1
  7. package/dist/src/ai-assistant/src/tools/tools.d.ts +1 -1
  8. package/dist/src/components/src/kepler-gl.d.ts +1 -1
  9. package/dist/src/components/src/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  10. package/dist/src/constants/src/default-settings.d.ts +8 -6
  11. package/dist/src/duckdb/src/table/duckdb-table.d.ts +1 -1
  12. package/dist/src/effects/src/effect.d.ts +1 -0
  13. package/dist/src/reducers/src/index.d.ts +1 -0
  14. package/dist/src/reducers/src/layer-utils.d.ts +2 -0
  15. package/dist/src/reducers/src/map-style-updaters.d.ts +1 -0
  16. package/dist/src/reducers/src/vis-state.d.ts +4 -4
  17. package/dist/src/styles/src/base.d.ts +4 -0
  18. package/dist/src/table/src/kepler-table.d.ts +2 -2
  19. package/dist/src/utils/src/application-config.d.ts +1 -0
  20. package/package.json +2 -2
  21. package/src/actions/dist/action-types.d.ts +2 -2
  22. package/src/actions/dist/action-types.js +3 -3
  23. package/src/actions/dist/action-wrapper.d.ts +2 -2
  24. package/src/actions/dist/action-wrapper.js +3 -3
  25. package/src/actions/dist/actions.d.ts +3 -3
  26. package/src/actions/dist/actions.js +4 -4
  27. package/src/actions/dist/map-state-actions.d.ts +4 -4
  28. package/src/actions/dist/map-state-actions.js +5 -5
  29. package/src/actions/dist/vis-state-actions.d.ts +2 -2
  30. package/src/actions/dist/vis-state-actions.js +3 -3
  31. package/src/actions/package.json +8 -8
  32. package/src/actions/src/action-types.ts +2 -2
  33. package/src/actions/src/action-wrapper.ts +2 -2
  34. package/src/actions/src/actions.ts +3 -3
  35. package/src/actions/src/map-state-actions.ts +4 -4
  36. package/src/actions/src/vis-state-actions.ts +2 -2
  37. package/src/ai-assistant/dist/tools/kepler-tools/index.d.ts +1 -1
  38. package/src/ai-assistant/dist/tools/tools.d.ts +1 -1
  39. package/src/ai-assistant/package.json +7 -7
  40. package/src/cloud-providers/package.json +2 -2
  41. package/src/common-utils/package.json +3 -3
  42. package/src/components/dist/effects/effect-type-list-item.js +4 -8
  43. package/src/components/dist/kepler-gl.d.ts +1 -1
  44. package/src/components/dist/loading-indicator.js +7 -3
  45. package/src/components/dist/map-container.js +18 -3
  46. package/src/components/dist/modals/add-map-style-modal.js +2 -2
  47. package/src/components/dist/modals/export-image-modal.js +1 -2
  48. package/src/components/dist/plot-container.js +15 -1
  49. package/src/components/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -4
  50. package/src/components/dist/side-panel/layer-panel/layer-list.js +2 -4
  51. package/src/components/dist/side-panel/layer-panel/layer-type-list-item.js +8 -5
  52. package/src/components/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +2 -3
  53. package/src/components/dist/side-panel/layer-panel/vis-config-slider.js +10 -5
  54. package/src/components/dist/side-panel/map-style-panel/map-style-selector.js +3 -2
  55. package/src/components/package.json +15 -15
  56. package/src/components/src/effects/effect-type-list-item.tsx +2 -5
  57. package/src/components/src/loading-indicator.tsx +13 -3
  58. package/src/components/src/map-container.tsx +20 -6
  59. package/src/components/src/modals/add-map-style-modal.tsx +1 -1
  60. package/src/components/src/modals/export-image-modal.tsx +0 -1
  61. package/src/components/src/plot-container.tsx +19 -2
  62. package/src/components/src/side-panel/layer-panel/layer-list.tsx +0 -1
  63. package/src/components/src/side-panel/layer-panel/layer-type-list-item.tsx +11 -4
  64. package/src/components/src/side-panel/layer-panel/raster-tile-colormap-list-item.tsx +2 -3
  65. package/src/components/src/side-panel/layer-panel/vis-config-slider.tsx +12 -5
  66. package/src/components/src/side-panel/map-style-panel/map-style-selector.tsx +7 -1
  67. package/src/constants/dist/default-settings.d.ts +8 -6
  68. package/src/constants/dist/default-settings.js +9 -13
  69. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/14/ab/1fbe8d595eaf6f179613022ba62b99ba41fe2f6b8061293406468a705d53002cfb0ba12e6833df2aa9c4c55b7061e239395129a1515da317d57e518b1dc7 +1 -0
  70. package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/37/b0/3745c4bb4b6114fa3433e4871042f7db966b48b29cde3301afe38370cecfe41f5aac801adc6fa93f6cd05411c521215e58542853414a81c0904ba4291e09 +1 -0
  71. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/68/bb/2c3d5cb60ef7b9e6d889b7d9b75b05761c58ee43b954df1a262102d3a106 +2 -0
  72. package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/93/38/f167b214acd87fc28cf533f463b7423ce65340878809b494323fae359cb4 +2 -0
  73. package/src/constants/package.json +2 -2
  74. package/src/constants/src/default-settings.ts +5 -10
  75. package/src/constants/umd/keplergl.min.js +1 -1
  76. package/src/deckgl-arrow-layers/package.json +2 -2
  77. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.d.ts +1 -1
  78. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +2 -2
  79. package/src/deckgl-layers/dist/raster/raster-mesh-layer/raster-mesh-layer.js +3 -9
  80. package/src/deckgl-layers/package.json +4 -4
  81. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.ts +12 -33
  82. package/src/deckgl-layers/src/raster/raster-mesh-layer/raster-mesh-layer.ts +2 -5
  83. package/src/duckdb/dist/table/duckdb-table.d.ts +1 -1
  84. package/src/duckdb/package.json +6 -6
  85. package/src/effects/dist/effect.d.ts +1 -0
  86. package/src/effects/dist/effect.js +7 -1
  87. package/src/effects/package.json +5 -5
  88. package/src/effects/src/effect.ts +5 -0
  89. package/src/layers/dist/base-layer.d.ts +1 -1
  90. package/src/layers/dist/geojson-layer/geojson-layer.d.ts +1 -1
  91. package/src/layers/dist/geojson-layer/geojson-utils.d.ts +3 -3
  92. package/src/layers/dist/icon-layer/icon-layer.d.ts +0 -1
  93. package/src/layers/dist/icon-layer/icon-layer.js +3 -4
  94. package/src/layers/dist/index.d.ts +2 -1
  95. package/src/layers/dist/index.js +16 -8
  96. package/src/layers/dist/raster-tile/image.d.ts +6 -0
  97. package/src/layers/dist/raster-tile/image.js +37 -20
  98. package/src/layers/dist/raster-tile/raster-tile-layer.d.ts +2 -8
  99. package/src/layers/dist/raster-tile/raster-tile-layer.js +18 -33
  100. package/src/layers/dist/raster-tile/types.d.ts +1 -0
  101. package/src/layers/dist/raster-tile/types.js +1 -1
  102. package/src/layers/dist/raster-tile/url.d.ts +3 -0
  103. package/src/layers/dist/raster-tile/url.js +7 -1
  104. package/src/layers/dist/trip-layer/trip-layer.d.ts +1 -1
  105. package/src/layers/package.json +9 -9
  106. package/src/layers/src/icon-layer/icon-layer.ts +3 -5
  107. package/src/layers/src/index.ts +2 -1
  108. package/src/layers/src/raster-tile/image.ts +16 -4
  109. package/src/layers/src/raster-tile/raster-tile-layer.ts +17 -28
  110. package/src/layers/src/raster-tile/types.ts +1 -0
  111. package/src/layers/src/raster-tile/url.ts +6 -0
  112. package/src/localization/package.json +1 -1
  113. package/src/processors/package.json +7 -7
  114. package/src/reducers/dist/index.d.ts +1 -0
  115. package/src/reducers/dist/index.js +8 -1
  116. package/src/reducers/dist/layer-utils.d.ts +2 -0
  117. package/src/reducers/dist/layer-utils.js +23 -4
  118. package/src/reducers/dist/map-style-updaters.d.ts +1 -0
  119. package/src/reducers/dist/map-style-updaters.js +10 -5
  120. package/src/reducers/dist/vis-state.d.ts +4 -4
  121. package/src/reducers/package.json +16 -16
  122. package/src/reducers/src/index.ts +1 -0
  123. package/src/reducers/src/layer-utils.ts +22 -4
  124. package/src/reducers/src/map-style-updaters.ts +16 -8
  125. package/src/schemas/package.json +7 -7
  126. package/src/styles/dist/base.d.ts +4 -0
  127. package/src/styles/dist/base.js +10 -5
  128. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/4b/ee/673360e4b8362fe8483486f8fa132c6b9d9abf45a240d54f76bc3d60d2b01e530c4efd92baad3479d54e7fa48474cb9d52e633ceb9dfec546588b6981cfc +1 -0
  129. package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a5/1f/7149cdcef3cb8e64025c197e3a6a47482bf1027c0991969349c7f1ec68e76f091966010bb72674850b48ed8361c1953b1b08da7dd66143642b32ce467635 +1 -0
  130. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/b7/6d/49546dbc3e903a5e6771b0ead707e4f4605454ac2bc718d0f0bf801b96a7 +2 -0
  131. package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c3/91/45735456a88c6ecc20a341b94971da9d02562b936da95a407f157b2f0ece +2 -0
  132. package/src/styles/package.json +2 -2
  133. package/src/styles/src/base.ts +6 -0
  134. package/src/styles/umd/keplergl.min.js +1 -1
  135. package/src/table/dist/{src/table/src/kepler-table.d.ts → kepler-table.d.ts} +2 -2
  136. package/src/table/dist/kepler-table.js +6 -4
  137. package/src/table/dist/tileset/vector-tile-utils.js +2 -2
  138. package/src/table/package.json +5 -5
  139. package/src/table/src/kepler-table.ts +4 -3
  140. package/src/table/src/tileset/vector-tile-utils.ts +1 -1
  141. package/src/table/tsconfig.production.json +2 -1
  142. package/src/tasks/package.json +2 -2
  143. package/src/types/effects.d.ts +1 -0
  144. package/src/types/package.json +1 -1
  145. package/src/utils/dist/application-config.d.ts +1 -0
  146. package/src/utils/dist/application-config.js +4 -4
  147. package/src/utils/package.json +4 -4
  148. package/src/utils/src/application-config.ts +6 -0
  149. package/umd/keplergl.min.js +1069 -1094
  150. package/src/table/dist/src/table/src/tileset/vector-tile-utils.spec.d.ts +0 -1
  151. package/src/table/dist/test/fixtures/tile-metadata.d.ts +0 -65
  152. /package/src/table/dist/{src/table/src/dataset-utils.d.ts → dataset-utils.d.ts} +0 -0
  153. /package/src/table/dist/{src/table/src/gpu-filter-utils.d.ts → gpu-filter-utils.d.ts} +0 -0
  154. /package/src/table/dist/{src/table/src/index.d.ts → index.d.ts} +0 -0
  155. /package/src/table/dist/{src/table/src/tileset → tileset}/raster-tile-utils.d.ts +0 -0
  156. /package/src/table/dist/{src/table/src/tileset → tileset}/tileset-utils.d.ts +0 -0
  157. /package/src/table/dist/{src/table/src/tileset → tileset}/vector-tile-utils.d.ts +0 -0
@@ -43,7 +43,7 @@ var _toolkit = require("@reduxjs/toolkit");
43
43
  * @example
44
44
  *
45
45
  * // app.js
46
- * import {addDataToMap} from 'kepler.gl/actions';
46
+ * import {addDataToMap} from '@kepler.gl/actions';
47
47
  *
48
48
  * const sampleTripData = {
49
49
  * fields: [
@@ -128,8 +128,8 @@ var resetMapConfig = exports.resetMapConfig = (0, _toolkit.createAction)(_action
128
128
  * @param {boolean} options.autoCreateLayers whether to automatically create layers based on dataset columns `default: true`.
129
129
  * @public
130
130
  * @example
131
- * import {receiveMapConfig} from 'kepler.gl/actions';
132
- * import KeplerGlSchema from 'kepler.gl/schemas';
131
+ * import {receiveMapConfig} from '@kepler.gl/actions';
132
+ * import KeplerGlSchema from '@kepler.gl/schemas';
133
133
  *
134
134
  * const parsedConfig = KeplerGlSchema.parseSavedConfig(config);
135
135
  * this.props.dispatch(receiveMapConfig(parsedConfig));
@@ -184,4 +184,4 @@ var replaceDataInMap = exports.replaceDataInMap = (0, _toolkit.createAction)(_ac
184
184
  // @ts-ignore
185
185
  var main = null;
186
186
  /* eslint-enable @typescript-eslint/no-unused-vars */
187
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYWRkRGF0YVRvTWFwIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiQUREX0RBVEFfVE9fTUFQIiwiZGF0YSIsInBheWxvYWQiLCJyZXNldE1hcENvbmZpZyIsIlJFU0VUX01BUF9DT05GSUciLCJyZWNlaXZlTWFwQ29uZmlnIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwiY29uZmlnIiwib3B0aW9ucyIsImtlcGxlckdsSW5pdCIsIklOSVQiLCJyZXBsYWNlRGF0YUluTWFwIiwiUkVQTEFDRV9EQVRBX0lOX01BUCIsIm1haW4iXSwic291cmNlcyI6WyIuLi9zcmMvYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2RlZmF1bHQgYXMgQWN0aW9uVHlwZXN9IGZyb20gJy4vYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuaW1wb3J0IHtcbiAgQWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgQWRkRGF0YVRvTWFwUGF5bG9hZCxcbiAgQm91bmRzLFxuICBVaVN0YXRlLFxuICBQYXJzZWRDb25maWcsXG4gIFByb3RvRGF0YXNldFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxudHlwZSBIYW5kbGVyID0gKC4uLmFyZ3M6IGFueSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25IYW5kbGVyPEEgZXh0ZW5kcyBIYW5kbGVyPiA9ICguLi5hcmdzOiBQYXJhbWV0ZXJzPEE+KSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25IYW5kbGVyczxUIGV4dGVuZHMge1trOiBzdHJpbmddOiBIYW5kbGVyfT4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBBY3Rpb25IYW5kbGVyPFRbS10+O1xufTtcblxuLyoqXG4gKiBBZGQgZGF0YSB0byBrZXBsZXIuZ2wgcmVkdWNlciwgcHJlcGFyZSBtYXAgd2l0aCBwcmVzZXQgY29uZmlndXJhdGlvbiBpZiBjb25maWcgaXMgcGFzc2VkLlxuICogS2VwbGVyLmdsIHByb3ZpZGVzIGEgaGFuZHkgc2V0IG9mIHV0aWxzIHRvIHBhcnNlIGRhdGEgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cyB0byB0aGUgYGRhdGFgIG9iamVjdCByZXF1aXJlZCBpbiBkYXRhc2V0LiBZb3UgcmFyZWx5IG5lZWQgdG8gbWFudWFsbHkgZm9ybWF0IHRoZSBkYXRhIG9iZWpjdC5cbiAqXG4gKiBVc2UgYEtlcGxlckdsU2NoZW1hLmdldENvbmZpZ1RvU2F2ZWAgdG8gZ2VuZXJhdGUgYSBqc29uIGJsb2Igb2YgdGhlIGN1cnJlbnRzIGluc3RhbmNlIGNvbmZpZy5cbiAqIFRoZSBjb25maWcgb2JqZWN0IHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiB0aGUgb3B0aW9ucyBwcm9wZXJ0aWVzLlxuICpcbiAqIEtlcGxlci5nbCB1c2VzIGBkYXRhSWRgIGluIHRoZSBjb25maWcgdG8gbWF0Y2ggd2l0aCBsb2FkZWQgZGF0YXNldC4gSWYgeW91IHBhc3MgYSBjb25maWcgb2JqZWN0LCB5b3UgbmVlZFxuICogdG8gbWF0Y2ggdGhlIGBpbmZvLmlkYCBvZiB5b3VyIGRhdGFzZXQgdG8gdGhlIGBkYXRhSWRgIGluIGVhY2ggYGxheWVyYCwgYGZpbHRlcmAgYW5kIGBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwcy5maWVsZHNUb1Nob3dgXG4gKlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD58T2JqZWN0fSBkYXRhLmRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5kYXRhc2V0cy5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuZGF0YXNldHMuaW5mby5pZCAtIGlkIG9mIHRoaXMgZGF0YXNldC4gSWYgY29uZmlnIGlzIGRlZmluZWQsIGBpZGAgc2hvdWxkIG1hdGNoZXMgdGhlIGBkYXRhSWRgIGluIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLmRhdGFzZXRzLmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGRhdGEuZGF0YXNldHMuZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuICogQHBhcmFtIHtBcnJheTxBcnJheT59IGRhdGEuZGF0YXNldHMuZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLm9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0YS5vcHRpb25zLmNlbnRlck1hcCBgZGVmYXVsdDogdHJ1ZWAgaWYgYGNlbnRlck1hcGAgaXMgc2V0IHRvIGB0cnVlYCBrZXBsZXIuZ2wgd2lsbFxuICogcGxhY2UgdGhlIG1hcCB2aWV3IHdpdGhpbiB0aGUgZGF0YSBwb2ludHMgYm91bmRhcmllcy4gIGBvcHRpb25zLmNlbnRlck1hcGAgd2lsbCBvdmVycmlkZSBgY29uZmlnLm1hcFN0YXRlYCBpZiBwYXNzZWQgaW4uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRhdGEub3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIHtib29sZWFufSBkYXRhLm9wdGlvbnMua2VlcEV4aXN0aW5nQ29uZmlnIHdoZXRoZXIgdG8ga2VlcCBleGl0aW5nIG1hcCBkYXRhIGFuZCBhc3NvY2lhdGVkIGxheWVyIGZpbHRlciAgaW50ZXJhY3Rpb24gY29uZmlnIGBkZWZhdWx0OiBmYWxzZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5jb25maWcgdGhpcyBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBmdWxsIGtlcGxlci5nbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHttYXBTdGF0ZSwgbWFwU3R5bGUsIHZpc1N0YXRlfVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBhcHAuanNcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKlxuICogY29uc3Qgc2FtcGxlVHJpcERhdGEgPSB7XG4gKiAgZmllbGRzOiBbXG4gKiAgICB7bmFtZTogJ3RwZXBfcGlja3VwX2RhdGV0aW1lJywgZm9ybWF0OiAnWVlZWS1NLUQgSDptOnMnLCB0eXBlOiAndGltZXN0YW1wJ30sXG4gKiAgICB7bmFtZTogJ3BpY2t1cF9sb25naXR1ZGUnLCBmb3JtYXQ6ICcnLCB0eXBlOiAncmVhbCd9LFxuICogICAge25hbWU6ICdwaWNrdXBfbGF0aXR1ZGUnLCBmb3JtYXQ6ICcnLCB0eXBlOiAncmVhbCd9XG4gKiAgXSxcbiAqICByb3dzOiBbXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6MzkgKzAwOjAwJywgLTczLjk5Mzg5NjQ4LCA0MC43NTAxMTA2M10sXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6MzkgKzAwOjAwJywgLTczLjk3NjQyNTE3LCA0MC43Mzk4MTA5NF0sXG4gKiAgICBbJzIwMTUtMDEtMTUgMTk6MDU6NDAgKzAwOjAwJywgLTczLjk2ODcwNDIyLCA0MC43NTQyNDU3Nl0sXG4gKiAgXVxuICogfTtcbiAqXG4gKiBjb25zdCBzYW1wbGVDb25maWcgPSB7XG4gKiAgIHZpc1N0YXRlOiB7XG4gKiAgICAgZmlsdGVyczogW1xuICogICAgICAge1xuICogICAgICAgICBpZDogJ21lJyxcbiAqICAgICAgICAgZGF0YUlkOiAndGVzdF90cmlwX2RhdGEnLFxuICogICAgICAgICBuYW1lOiAndHBlcF9waWNrdXBfZGF0ZXRpbWUnLFxuICogICAgICAgICB0eXBlOiAndGltZVJhbmdlJyxcbiAqICAgICAgICAgdmlldzogJ2VubGFyZ2VkJ1xuICogICAgICAgfVxuICogICAgIF1cbiAqICAgfVxuICogfVxuICpcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2goXG4gKiAgIGFkZERhdGFUb01hcCh7XG4gKiAgICAgZGF0YXNldHM6IHtcbiAqICAgICAgIGluZm86IHtcbiAqICAgICAgICAgbGFiZWw6ICdTYW1wbGUgVGF4aSBUcmlwcyBpbiBOZXcgWW9yayBDaXR5JyxcbiAqICAgICAgICAgaWQ6ICd0ZXN0X3RyaXBfZGF0YSdcbiAqICAgICAgIH0sXG4gKiAgICAgICBkYXRhOiBzYW1wbGVUcmlwRGF0YVxuICogICAgIH0sXG4gKiAgICAgb3B0aW9uczoge1xuICogICAgICAgY2VudGVyTWFwOiB0cnVlLFxuICogICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICogICAgICAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZVxuICogICAgIH0sXG4gKiAgICAgaW5mbzoge1xuICogICAgICAgdGl0bGU6ICdUYXJvIGFuZCBCbHVlJyxcbiAqICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyBteSBtYXAnXG4gKiAgICAgfSxcbiAqICAgICBjb25maWc6IHNhbXBsZUNvbmZpZ1xuICogICB9KVxuICogKTtcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcDogKGRhdGE6IEFkZERhdGFUb01hcFBheWxvYWQpID0+IHtcbiAgdHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9EQVRBX1RPX01BUDtcbiAgcGF5bG9hZDogQWRkRGF0YVRvTWFwUGF5bG9hZDtcbn0gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuQUREX0RBVEFfVE9fTUFQLCAoZGF0YTogQWRkRGF0YVRvTWFwUGF5bG9hZCkgPT4gKHtwYXlsb2FkOiBkYXRhfSkpO1xuXG4vKipcbiAqIFJlc2V0IGFsbCBzdWItcmVkdWNlcnMgdG8gaXRzIGluaXRpYWwgc3RhdGUuIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2xlYXIgb3V0IGFsbCBjb25maWd1cmF0aW9uIGluIHRoZSByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnOiAoKSA9PiB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlJFU0VUX01BUF9DT05GSUd9ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5SRVNFVF9NQVBfQ09ORklHXG4pO1xuXG5leHBvcnQgdHlwZSBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCA9IHtcbiAgY29uZmlnOiBQYXJzZWRDb25maWc7XG4gIG9wdGlvbnM/OiBBZGREYXRhVG9NYXBPcHRpb25zO1xuICBib3VuZHM/OiBCb3VuZHM7XG59O1xuLyoqXG4gKiBQYXNzIGNvbmZpZyB0byBrZXBsZXIuZ2wgaW5zdGFuY2UsIHByZXBhcmUgdGhlIHN0YXRlIHdpdGggcHJlc2V0IGNvbmZpZ3MuXG4gKiBDYWxsaW5nIGBLZXBsZXJHbFNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnYCB0byBjb252ZXJ0IHNhdmVkIGNvbmZpZyBiZWZvcmUgcGFzc2luZyBpdCBpbiBpcyByZXF1aXJlZC5cbiAqXG4gKiBZb3UgY2FuIGNhbGwgYHJlY2VpdmVNYXBDb25maWdgIGJlZm9yZSBwYXNzaW5nIGluIGFueSBkYXRhLiBUaGUgcmVkdWNlciB3aWxsIHN0b3JlIGxheWVyIGFuZCBmaWx0ZXIgY29uZmlnLCB3YWl0aW5nIGZvclxuICogZGF0YSB0byBjb21lIGluLiBXaGVuIGRhdGEgYXJyaXZlcywgeW91IGNhbiBjYWxsIGBhZGREYXRhVG9NYXBgIHdpdGhvdXQgcGFzc2luZyBhbnkgY29uZmlnLCBhbmQgdGhlIHJlZHVjZXIgd2lsbCB0cnkgdG8gbWF0Y2hcbiAqIHByZWxvYWRlZCBjb25maWdzLiBUaGlzIGJlaGF2aW9yIGlzIGRlc2lnbmVkIHRvIGFsbG93IGFzeW5jaHJvbm91cyBkYXRhIGxvYWRpbmcuXG4gKlxuICogSXQgaXMgYWxzbyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBwcmVwYXJlIHRoZSBrZXBsZXIuZ2wgaW5zdGFuY2Ugd2l0aCBzb21lIHByZXNldCBsYXllciBhbmQgZmlsdGVyIHNldHRpbmdzLlxuICogKipOb3RlKiogU2VxdWVuY2UgaXMgaW1wb3J0YW50LCBgcmVjZWl2ZU1hcENvbmZpZ2AgbmVlZHMgdG8gYmUgY2FsbGVkIF9fYmVmb3JlX18gZGF0YSBpcyBsb2FkZWQuIEN1cnJlbnRseSBrZXBsZXIuZ2wgZG9lc24ndCBhbGxvdyBjYWxsaW5nIGByZWNlaXZlTWFwQ29uZmlnYCBhZnRlciBkYXRhIGlzIGxvYWRlZC5cbiAqIEl0IHdpbGwgcmVzZXQgY3VycmVudCBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gYXBwbHkgY29uZmlnIHRvIGl0LlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSAqKipyZXF1aXJlZCoqIFRoZSBDb25maWcgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtICoqKm9wdGlvbmFsKiogVGhlIE9wdGlvbiBvYmplY3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5jZW50ZXJNYXAgYGRlZmF1bHQ6IHRydWVgIGlmIGBjZW50ZXJNYXBgIGlzIHNldCB0byBgdHJ1ZWAga2VwbGVyLmdsIHdpbGxcbiAqIHBsYWNlIHRoZSBtYXAgdmlldyB3aXRoaW4gdGhlIGRhdGEgcG9pbnRzIGJvdW5kYXJpZXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmtlZXBFeGlzdGluZ0NvbmZpZyB3aGV0aGVyIHRvIGtlZXAgZXhpdGluZyBsYXllciBmaWx0ZXIgYW5kIGludGVyYWN0aW9uIGNvbmZpZyBgZGVmYXVsdDogZmFsc2VgLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmF1dG9DcmVhdGVMYXllcnMgd2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBsYXllcnMgYmFzZWQgb24gZGF0YXNldCBjb2x1bW5zIGBkZWZhdWx0OiB0cnVlYC5cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge3JlY2VpdmVNYXBDb25maWd9IGZyb20gJ2tlcGxlci5nbC9hY3Rpb25zJztcbiAqIGltcG9ydCBLZXBsZXJHbFNjaGVtYSBmcm9tICdrZXBsZXIuZ2wvc2NoZW1hcyc7XG4gKlxuICogY29uc3QgcGFyc2VkQ29uZmlnID0gS2VwbGVyR2xTY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICogdGhpcy5wcm9wcy5kaXNwYXRjaChyZWNlaXZlTWFwQ29uZmlnKHBhcnNlZENvbmZpZykpO1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZzogKFxuICBjb25maWc6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkWydjb25maWcnXSxcbiAgb3B0aW9uczogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWRbJ29wdGlvbnMnXVxuKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xufSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHLFxuICAoY29uZmlnOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZFsnY29uZmlnJ10sIG9wdGlvbnM6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkWydvcHRpb25zJ10pID0+ICh7XG4gICAgcGF5bG9hZDoge1xuICAgICAgY29uZmlnLFxuICAgICAgb3B0aW9uc1xuICAgIH1cbiAgfSlcbik7XG5cbmV4cG9ydCB0eXBlIEtlcGxlckdsSW5pdFBheWxvYWQgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0PzogYm9vbGVhbjtcbiAgaW5pdGlhbFVpU3RhdGU/OiBQYXJ0aWFsPFVpU3RhdGU+O1xufTtcbi8qKlxuICogSW5pdGlhbGl6ZSBrZXBsZXIuZ2wgcmVkdWNlci4gSXQgaXMgdXNlZCB0byBwYXNzIGluIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgdG8gYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXlsb2FkXG4gKiBAcGFyYW0gcGF5bG9hZC5tYXBib3hBcGlBY2Nlc3NUb2tlbiAtIG1hcGJveEFwaUFjY2Vzc1Rva2VuIHRvIGJlIHNhdmVkIHRvIG1hcFN0eWxlIHJlZHVjZXJcbiAqIEBwYXJhbSBwYXlsb2FkLm1hcGJveEFwaVVybCAtIG1hcGJveEFwaVVybCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyLlxuICogQHBhcmFtIHBheWxvYWQubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyXG4gKiBAcGFyYW0gcGF5bG9hZC5pbml0aWFsVWlTdGF0ZSAtIGluaXRpYWwgdWkgc3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuZXhwb3J0IGNvbnN0IGtlcGxlckdsSW5pdDogKG9wdGlvbnM/OiBLZXBsZXJHbEluaXRQYXlsb2FkKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5JTklUO1xuICBwYXlsb2FkOiBLZXBsZXJHbEluaXRQYXlsb2FkO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5JTklULCAocGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZCkgPT4gKHtwYXlsb2FkfSkpO1xuXG5leHBvcnQgdHlwZSBSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucyA9IHtcbiAgY2VudGVyTWFwPzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbiAgYXV0b0NyZWF0ZUxheWVycz86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQgPSB7XG4gIGRhdGFzZXRUb1JlcGxhY2VJZDogc3RyaW5nO1xuICBkYXRhc2V0VG9Vc2U6IFByb3RvRGF0YXNldDtcbiAgb3B0aW9ucz86IFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGtlcGxlci5nbCByZWR1Y2VyLiBJdCBpcyB1c2VkIHRvIHBhc3MgaW4gYG1hcGJveEFwaUFjY2Vzc1Rva2VuYCB0byBgbWFwU3R5bGVgIHJlZHVjZXIuXG4gKiBAbWVtYmVyb2YgbWFpblxuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSBwYXlsb2FkLmRhdGFzZXRUb1JlcGxhY2VJZCAtIG1hcGJveEFwaUFjY2Vzc1Rva2VuIHRvIGJlIHNhdmVkIHRvIG1hcFN0eWxlIHJlZHVjZXJcbiAqIEBwYXJhbSBwYXlsb2FkLmRhdGFzZXRUb1VzZSAtIG1hcGJveEFwaVVybCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZURhdGFJbk1hcDogKHBheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRVBMQUNFX0RBVEFfSU5fTUFQO1xuICBwYXlsb2FkOiBSZXBsYWNlRGF0YUluTWFwUGF5bG9hZDtcbn0gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuUkVQTEFDRV9EQVRBX0lOX01BUCwgKHBheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkKSA9PiAoe1xuICBwYXlsb2FkXG59KSk7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogTWFpbiBrZXBsZXIuZ2wgYWN0aW9ucywgdGhlc2UgYWN0aW9ucyBoYW5kbGVzIGxvYWRpbmcgZGF0YSBhbmQgY29uZmlnIGludG8ga2VwbGVyLmdsIHJlZHVjZXIuIFRoZXNlIGFjdGlvbnNcbiAqIGlzIGxpc3RlbmVkIGJ5IGFsbCBzdWJyZWR1Y2VycyxcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYWluID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFKQTtBQUNBOztBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRSxZQUdaLEdBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFHLElBQUFFLHFCQUFZLEVBQUNDLHVCQUFXLENBQUNDLGVBQWUsRUFBRSxVQUFDQyxJQUF5QjtFQUFBLE9BQU07SUFBQ0MsT0FBTyxFQUFFRDtFQUFJLENBQUM7QUFBQSxDQUFDLENBQUM7O0FBRS9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRSxjQUFpRSxHQUFBTixPQUFBLENBQUFNLGNBQUEsR0FBRyxJQUFBTCxxQkFBWSxFQUMzRkMsdUJBQVcsQ0FBQ0ssZ0JBQ2QsQ0FBQztBQU9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZ0JBTVosR0FBQVIsT0FBQSxDQUFBUSxnQkFBQSxHQUFHLElBQUFQLHFCQUFZLEVBQ2RDLHVCQUFXLENBQUNPLGtCQUFrQixFQUM5QixVQUFDQyxNQUF5QyxFQUFFQyxPQUEyQztFQUFBLE9BQU07SUFDM0ZOLE9BQU8sRUFBRTtNQUNQSyxNQUFNLEVBQU5BLE1BQU07TUFDTkMsT0FBTyxFQUFQQTtJQUNGO0VBQ0YsQ0FBQztBQUFBLENBQ0gsQ0FBQztBQVFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxZQUdaLEdBQUFaLE9BQUEsQ0FBQVksWUFBQSxHQUFHLElBQUFYLHFCQUFZLEVBQUNDLHVCQUFXLENBQUNXLElBQUksRUFBRSxVQUFDUixPQUE0QjtFQUFBLE9BQU07SUFBQ0EsT0FBTyxFQUFQQTtFQUFPLENBQUM7QUFBQSxDQUFDLENBQUM7QUFhakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1TLGdCQUdaLEdBQUFkLE9BQUEsQ0FBQWMsZ0JBQUEsR0FBRyxJQUFBYixxQkFBWSxFQUFDQyx1QkFBVyxDQUFDYSxtQkFBbUIsRUFBRSxVQUFDVixPQUFnQztFQUFBLE9BQU07SUFDdkZBLE9BQU8sRUFBUEE7RUFDRixDQUFDO0FBQUEsQ0FBQyxDQUFDOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTVcsSUFBSSxHQUFHLElBQUk7QUFDakIiLCJpZ25vcmVMaXN0IjpbXX0=
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYWRkRGF0YVRvTWFwIiwiZXhwb3J0cyIsImNyZWF0ZUFjdGlvbiIsIkFjdGlvblR5cGVzIiwiQUREX0RBVEFfVE9fTUFQIiwiZGF0YSIsInBheWxvYWQiLCJyZXNldE1hcENvbmZpZyIsIlJFU0VUX01BUF9DT05GSUciLCJyZWNlaXZlTWFwQ29uZmlnIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwiY29uZmlnIiwib3B0aW9ucyIsImtlcGxlckdsSW5pdCIsIklOSVQiLCJyZXBsYWNlRGF0YUluTWFwIiwiUkVQTEFDRV9EQVRBX0lOX01BUCIsIm1haW4iXSwic291cmNlcyI6WyIuLi9zcmMvYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2RlZmF1bHQgYXMgQWN0aW9uVHlwZXN9IGZyb20gJy4vYWN0aW9uLXR5cGVzJztcbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuaW1wb3J0IHtcbiAgQWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgQWRkRGF0YVRvTWFwUGF5bG9hZCxcbiAgQm91bmRzLFxuICBVaVN0YXRlLFxuICBQYXJzZWRDb25maWcsXG4gIFByb3RvRGF0YXNldFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxudHlwZSBIYW5kbGVyID0gKC4uLmFyZ3M6IGFueSkgPT4gYW55O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25IYW5kbGVyPEEgZXh0ZW5kcyBIYW5kbGVyPiA9ICguLi5hcmdzOiBQYXJhbWV0ZXJzPEE+KSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25IYW5kbGVyczxUIGV4dGVuZHMge1trOiBzdHJpbmddOiBIYW5kbGVyfT4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBBY3Rpb25IYW5kbGVyPFRbS10+O1xufTtcblxuLyoqXG4gKiBBZGQgZGF0YSB0byBrZXBsZXIuZ2wgcmVkdWNlciwgcHJlcGFyZSBtYXAgd2l0aCBwcmVzZXQgY29uZmlndXJhdGlvbiBpZiBjb25maWcgaXMgcGFzc2VkLlxuICogS2VwbGVyLmdsIHByb3ZpZGVzIGEgaGFuZHkgc2V0IG9mIHV0aWxzIHRvIHBhcnNlIGRhdGEgZnJvbSBkaWZmZXJlbnQgZm9ybWF0cyB0byB0aGUgYGRhdGFgIG9iamVjdCByZXF1aXJlZCBpbiBkYXRhc2V0LiBZb3UgcmFyZWx5IG5lZWQgdG8gbWFudWFsbHkgZm9ybWF0IHRoZSBkYXRhIG9iZWpjdC5cbiAqXG4gKiBVc2UgYEtlcGxlckdsU2NoZW1hLmdldENvbmZpZ1RvU2F2ZWAgdG8gZ2VuZXJhdGUgYSBqc29uIGJsb2Igb2YgdGhlIGN1cnJlbnRzIGluc3RhbmNlIGNvbmZpZy5cbiAqIFRoZSBjb25maWcgb2JqZWN0IHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiB0aGUgb3B0aW9ucyBwcm9wZXJ0aWVzLlxuICpcbiAqIEtlcGxlci5nbCB1c2VzIGBkYXRhSWRgIGluIHRoZSBjb25maWcgdG8gbWF0Y2ggd2l0aCBsb2FkZWQgZGF0YXNldC4gSWYgeW91IHBhc3MgYSBjb25maWcgb2JqZWN0LCB5b3UgbmVlZFxuICogdG8gbWF0Y2ggdGhlIGBpbmZvLmlkYCBvZiB5b3VyIGRhdGFzZXQgdG8gdGhlIGBkYXRhSWRgIGluIGVhY2ggYGxheWVyYCwgYGZpbHRlcmAgYW5kIGBpbnRlcmFjdGlvbkNvbmZpZy50b29sdGlwcy5maWVsZHNUb1Nob3dgXG4gKlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD58T2JqZWN0fSBkYXRhLmRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5kYXRhc2V0cy5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEuZGF0YXNldHMuaW5mby5pZCAtIGlkIG9mIHRoaXMgZGF0YXNldC4gSWYgY29uZmlnIGlzIGRlZmluZWQsIGBpZGAgc2hvdWxkIG1hdGNoZXMgdGhlIGBkYXRhSWRgIGluIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLmRhdGFzZXRzLmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGRhdGEuZGF0YXNldHMuZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLmRhdGFzZXRzLmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuICogQHBhcmFtIHtBcnJheTxBcnJheT59IGRhdGEuZGF0YXNldHMuZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhLm9wdGlvbnNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGF0YS5vcHRpb25zLmNlbnRlck1hcCBgZGVmYXVsdDogdHJ1ZWAgaWYgYGNlbnRlck1hcGAgaXMgc2V0IHRvIGB0cnVlYCBrZXBsZXIuZ2wgd2lsbFxuICogcGxhY2UgdGhlIG1hcCB2aWV3IHdpdGhpbiB0aGUgZGF0YSBwb2ludHMgYm91bmRhcmllcy4gIGBvcHRpb25zLmNlbnRlck1hcGAgd2lsbCBvdmVycmlkZSBgY29uZmlnLm1hcFN0YXRlYCBpZiBwYXNzZWQgaW4uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRhdGEub3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIHtib29sZWFufSBkYXRhLm9wdGlvbnMua2VlcEV4aXN0aW5nQ29uZmlnIHdoZXRoZXIgdG8ga2VlcCBleGl0aW5nIG1hcCBkYXRhIGFuZCBhc3NvY2lhdGVkIGxheWVyIGZpbHRlciAgaW50ZXJhY3Rpb24gY29uZmlnIGBkZWZhdWx0OiBmYWxzZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YS5jb25maWcgdGhpcyBvYmplY3Qgd2lsbCBjb250YWluIHRoZSBmdWxsIGtlcGxlci5nbCBpbnN0YW5jZSBjb25maWd1cmF0aW9uIHttYXBTdGF0ZSwgbWFwU3R5bGUsIHZpc1N0YXRlfVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBhcHAuanNcbiAqIGltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuICpcbiAqIGNvbnN0IHNhbXBsZVRyaXBEYXRhID0ge1xuICogIGZpZWxkczogW1xuICogICAge25hbWU6ICd0cGVwX3BpY2t1cF9kYXRldGltZScsIGZvcm1hdDogJ1lZWVktTS1EIEg6bTpzJywgdHlwZTogJ3RpbWVzdGFtcCd9LFxuICogICAge25hbWU6ICdwaWNrdXBfbG9uZ2l0dWRlJywgZm9ybWF0OiAnJywgdHlwZTogJ3JlYWwnfSxcbiAqICAgIHtuYW1lOiAncGlja3VwX2xhdGl0dWRlJywgZm9ybWF0OiAnJywgdHlwZTogJ3JlYWwnfVxuICogIF0sXG4gKiAgcm93czogW1xuICogICAgWycyMDE1LTAxLTE1IDE5OjA1OjM5ICswMDowMCcsIC03My45OTM4OTY0OCwgNDAuNzUwMTEwNjNdLFxuICogICAgWycyMDE1LTAxLTE1IDE5OjA1OjM5ICswMDowMCcsIC03My45NzY0MjUxNywgNDAuNzM5ODEwOTRdLFxuICogICAgWycyMDE1LTAxLTE1IDE5OjA1OjQwICswMDowMCcsIC03My45Njg3MDQyMiwgNDAuNzU0MjQ1NzZdLFxuICogIF1cbiAqIH07XG4gKlxuICogY29uc3Qgc2FtcGxlQ29uZmlnID0ge1xuICogICB2aXNTdGF0ZToge1xuICogICAgIGZpbHRlcnM6IFtcbiAqICAgICAgIHtcbiAqICAgICAgICAgaWQ6ICdtZScsXG4gKiAgICAgICAgIGRhdGFJZDogJ3Rlc3RfdHJpcF9kYXRhJyxcbiAqICAgICAgICAgbmFtZTogJ3RwZXBfcGlja3VwX2RhdGV0aW1lJyxcbiAqICAgICAgICAgdHlwZTogJ3RpbWVSYW5nZScsXG4gKiAgICAgICAgIHZpZXc6ICdlbmxhcmdlZCdcbiAqICAgICAgIH1cbiAqICAgICBdXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKFxuICogICBhZGREYXRhVG9NYXAoe1xuICogICAgIGRhdGFzZXRzOiB7XG4gKiAgICAgICBpbmZvOiB7XG4gKiAgICAgICAgIGxhYmVsOiAnU2FtcGxlIFRheGkgVHJpcHMgaW4gTmV3IFlvcmsgQ2l0eScsXG4gKiAgICAgICAgIGlkOiAndGVzdF90cmlwX2RhdGEnXG4gKiAgICAgICB9LFxuICogICAgICAgZGF0YTogc2FtcGxlVHJpcERhdGFcbiAqICAgICB9LFxuICogICAgIG9wdGlvbnM6IHtcbiAqICAgICAgIGNlbnRlck1hcDogdHJ1ZSxcbiAqICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAqICAgICAgIGtlZXBFeGlzdGluZ0NvbmZpZzogZmFsc2VcbiAqICAgICB9LFxuICogICAgIGluZm86IHtcbiAqICAgICAgIHRpdGxlOiAnVGFybyBhbmQgQmx1ZScsXG4gKiAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgbXkgbWFwJ1xuICogICAgIH0sXG4gKiAgICAgY29uZmlnOiBzYW1wbGVDb25maWdcbiAqICAgfSlcbiAqICk7XG4gKi9cbmV4cG9ydCBjb25zdCBhZGREYXRhVG9NYXA6IChkYXRhOiBBZGREYXRhVG9NYXBQYXlsb2FkKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BRERfREFUQV9UT19NQVA7XG4gIHBheWxvYWQ6IEFkZERhdGFUb01hcFBheWxvYWQ7XG59ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkFERF9EQVRBX1RPX01BUCwgKGRhdGE6IEFkZERhdGFUb01hcFBheWxvYWQpID0+ICh7cGF5bG9hZDogZGF0YX0pKTtcblxuLyoqXG4gKiBSZXNldCBhbGwgc3ViLXJlZHVjZXJzIHRvIGl0cyBpbml0aWFsIHN0YXRlLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGNsZWFyIG91dCBhbGwgY29uZmlndXJhdGlvbiBpbiB0aGUgcmVkdWNlci5cbiAqIEBtZW1iZXJvZiBtYWluXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZzogKCkgPT4ge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRVNFVF9NQVBfQ09ORklHfSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR1xuKTtcblxuZXhwb3J0IHR5cGUgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQgPSB7XG4gIGNvbmZpZzogUGFyc2VkQ29uZmlnO1xuICBvcHRpb25zPzogQWRkRGF0YVRvTWFwT3B0aW9ucztcbiAgYm91bmRzPzogQm91bmRzO1xufTtcbi8qKlxuICogUGFzcyBjb25maWcgdG8ga2VwbGVyLmdsIGluc3RhbmNlLCBwcmVwYXJlIHRoZSBzdGF0ZSB3aXRoIHByZXNldCBjb25maWdzLlxuICogQ2FsbGluZyBgS2VwbGVyR2xTY2hlbWEucGFyc2VTYXZlZENvbmZpZ2AgdG8gY29udmVydCBzYXZlZCBjb25maWcgYmVmb3JlIHBhc3NpbmcgaXQgaW4gaXMgcmVxdWlyZWQuXG4gKlxuICogWW91IGNhbiBjYWxsIGByZWNlaXZlTWFwQ29uZmlnYCBiZWZvcmUgcGFzc2luZyBpbiBhbnkgZGF0YS4gVGhlIHJlZHVjZXIgd2lsbCBzdG9yZSBsYXllciBhbmQgZmlsdGVyIGNvbmZpZywgd2FpdGluZyBmb3JcbiAqIGRhdGEgdG8gY29tZSBpbi4gV2hlbiBkYXRhIGFycml2ZXMsIHlvdSBjYW4gY2FsbCBgYWRkRGF0YVRvTWFwYCB3aXRob3V0IHBhc3NpbmcgYW55IGNvbmZpZywgYW5kIHRoZSByZWR1Y2VyIHdpbGwgdHJ5IHRvIG1hdGNoXG4gKiBwcmVsb2FkZWQgY29uZmlncy4gVGhpcyBiZWhhdmlvciBpcyBkZXNpZ25lZCB0byBhbGxvdyBhc3luY2hyb25vdXMgZGF0YSBsb2FkaW5nLlxuICpcbiAqIEl0IGlzIGFsc28gdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcHJlcGFyZSB0aGUga2VwbGVyLmdsIGluc3RhbmNlIHdpdGggc29tZSBwcmVzZXQgbGF5ZXIgYW5kIGZpbHRlciBzZXR0aW5ncy5cbiAqICoqTm90ZSoqIFNlcXVlbmNlIGlzIGltcG9ydGFudCwgYHJlY2VpdmVNYXBDb25maWdgIG5lZWRzIHRvIGJlIGNhbGxlZCBfX2JlZm9yZV9fIGRhdGEgaXMgbG9hZGVkLiBDdXJyZW50bHkga2VwbGVyLmdsIGRvZXNuJ3QgYWxsb3cgY2FsbGluZyBgcmVjZWl2ZU1hcENvbmZpZ2AgYWZ0ZXIgZGF0YSBpcyBsb2FkZWQuXG4gKiBJdCB3aWxsIHJlc2V0IGN1cnJlbnQgY29uZmlndXJhdGlvbiBmaXJzdCB0aGVuIGFwcGx5IGNvbmZpZyB0byBpdC5cbiAqIEBtZW1iZXJvZiBtYWluXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gKioqcmVxdWlyZWQqKiBUaGUgQ29uZmlnIE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSAqKipvcHRpb25hbCoqIFRoZSBPcHRpb24gb2JqZWN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuY2VudGVyTWFwIGBkZWZhdWx0OiB0cnVlYCBpZiBgY2VudGVyTWFwYCBpcyBzZXQgdG8gYHRydWVgIGtlcGxlci5nbCB3aWxsXG4gKiBwbGFjZSB0aGUgbWFwIHZpZXcgd2l0aGluIHRoZSBkYXRhIHBvaW50cyBib3VuZGFyaWVzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucmVhZE9ubHkgYGRlZmF1bHQ6IGZhbHNlYCBpZiBgcmVhZE9ubHlgIGlzIHNldCB0byBgdHJ1ZWBcbiAqIHRoZSBsZWZ0IHNldHRpbmcgcGFuZWwgd2lsbCBiZSBoaWRkZW5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5rZWVwRXhpc3RpbmdDb25maWcgd2hldGhlciB0byBrZWVwIGV4aXRpbmcgbGF5ZXIgZmlsdGVyIGFuZCBpbnRlcmFjdGlvbiBjb25maWcgYGRlZmF1bHQ6IGZhbHNlYC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5hdXRvQ3JlYXRlTGF5ZXJzIHdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgbGF5ZXJzIGJhc2VkIG9uIGRhdGFzZXQgY29sdW1ucyBgZGVmYXVsdDogdHJ1ZWAuXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHtyZWNlaXZlTWFwQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IEtlcGxlckdsU2NoZW1hIGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG4gKlxuICogY29uc3QgcGFyc2VkQ29uZmlnID0gS2VwbGVyR2xTY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICogdGhpcy5wcm9wcy5kaXNwYXRjaChyZWNlaXZlTWFwQ29uZmlnKHBhcnNlZENvbmZpZykpO1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZzogKFxuICBjb25maWc6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkWydjb25maWcnXSxcbiAgb3B0aW9uczogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWRbJ29wdGlvbnMnXVxuKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xufSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHLFxuICAoY29uZmlnOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZFsnY29uZmlnJ10sIG9wdGlvbnM6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkWydvcHRpb25zJ10pID0+ICh7XG4gICAgcGF5bG9hZDoge1xuICAgICAgY29uZmlnLFxuICAgICAgb3B0aW9uc1xuICAgIH1cbiAgfSlcbik7XG5cbmV4cG9ydCB0eXBlIEtlcGxlckdsSW5pdFBheWxvYWQgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICBtYXBib3hBcGlVcmw/OiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0PzogYm9vbGVhbjtcbiAgaW5pdGlhbFVpU3RhdGU/OiBQYXJ0aWFsPFVpU3RhdGU+O1xufTtcbi8qKlxuICogSW5pdGlhbGl6ZSBrZXBsZXIuZ2wgcmVkdWNlci4gSXQgaXMgdXNlZCB0byBwYXNzIGluIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgdG8gYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1haW5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXlsb2FkXG4gKiBAcGFyYW0gcGF5bG9hZC5tYXBib3hBcGlBY2Nlc3NUb2tlbiAtIG1hcGJveEFwaUFjY2Vzc1Rva2VuIHRvIGJlIHNhdmVkIHRvIG1hcFN0eWxlIHJlZHVjZXJcbiAqIEBwYXJhbSBwYXlsb2FkLm1hcGJveEFwaVVybCAtIG1hcGJveEFwaVVybCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyLlxuICogQHBhcmFtIHBheWxvYWQubWFwU3R5bGVzUmVwbGFjZURlZmF1bHQgLSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyXG4gKiBAcGFyYW0gcGF5bG9hZC5pbml0aWFsVWlTdGF0ZSAtIGluaXRpYWwgdWkgc3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuZXhwb3J0IGNvbnN0IGtlcGxlckdsSW5pdDogKG9wdGlvbnM/OiBLZXBsZXJHbEluaXRQYXlsb2FkKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5JTklUO1xuICBwYXlsb2FkOiBLZXBsZXJHbEluaXRQYXlsb2FkO1xufSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5JTklULCAocGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZCkgPT4gKHtwYXlsb2FkfSkpO1xuXG5leHBvcnQgdHlwZSBSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucyA9IHtcbiAgY2VudGVyTWFwPzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbiAgYXV0b0NyZWF0ZUxheWVycz86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQgPSB7XG4gIGRhdGFzZXRUb1JlcGxhY2VJZDogc3RyaW5nO1xuICBkYXRhc2V0VG9Vc2U6IFByb3RvRGF0YXNldDtcbiAgb3B0aW9ucz86IFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGtlcGxlci5nbCByZWR1Y2VyLiBJdCBpcyB1c2VkIHRvIHBhc3MgaW4gYG1hcGJveEFwaUFjY2Vzc1Rva2VuYCB0byBgbWFwU3R5bGVgIHJlZHVjZXIuXG4gKiBAbWVtYmVyb2YgbWFpblxuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSBwYXlsb2FkLmRhdGFzZXRUb1JlcGxhY2VJZCAtIG1hcGJveEFwaUFjY2Vzc1Rva2VuIHRvIGJlIHNhdmVkIHRvIG1hcFN0eWxlIHJlZHVjZXJcbiAqIEBwYXJhbSBwYXlsb2FkLmRhdGFzZXRUb1VzZSAtIG1hcGJveEFwaVVybCB0byBiZSBzYXZlZCB0byBtYXBTdHlsZSByZWR1Y2VyLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVwbGFjZURhdGFJbk1hcDogKHBheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkKSA9PiB7XG4gIHR5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRVBMQUNFX0RBVEFfSU5fTUFQO1xuICBwYXlsb2FkOiBSZXBsYWNlRGF0YUluTWFwUGF5bG9hZDtcbn0gPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuUkVQTEFDRV9EQVRBX0lOX01BUCwgKHBheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkKSA9PiAoe1xuICBwYXlsb2FkXG59KSk7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogTWFpbiBrZXBsZXIuZ2wgYWN0aW9ucywgdGhlc2UgYWN0aW9ucyBoYW5kbGVzIGxvYWRpbmcgZGF0YSBhbmQgY29uZmlnIGludG8ga2VwbGVyLmdsIHJlZHVjZXIuIFRoZXNlIGFjdGlvbnNcbiAqIGlzIGxpc3RlbmVkIGJ5IGFsbCBzdWJyZWR1Y2VycyxcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYWluID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFKQTtBQUNBOztBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRSxZQUdaLEdBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFHLElBQUFFLHFCQUFZLEVBQUNDLHVCQUFXLENBQUNDLGVBQWUsRUFBRSxVQUFDQyxJQUF5QjtFQUFBLE9BQU07SUFBQ0MsT0FBTyxFQUFFRDtFQUFJLENBQUM7QUFBQSxDQUFDLENBQUM7O0FBRS9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNRSxjQUFpRSxHQUFBTixPQUFBLENBQUFNLGNBQUEsR0FBRyxJQUFBTCxxQkFBWSxFQUMzRkMsdUJBQVcsQ0FBQ0ssZ0JBQ2QsQ0FBQztBQU9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZ0JBTVosR0FBQVIsT0FBQSxDQUFBUSxnQkFBQSxHQUFHLElBQUFQLHFCQUFZLEVBQ2RDLHVCQUFXLENBQUNPLGtCQUFrQixFQUM5QixVQUFDQyxNQUF5QyxFQUFFQyxPQUEyQztFQUFBLE9BQU07SUFDM0ZOLE9BQU8sRUFBRTtNQUNQSyxNQUFNLEVBQU5BLE1BQU07TUFDTkMsT0FBTyxFQUFQQTtJQUNGO0VBQ0YsQ0FBQztBQUFBLENBQ0gsQ0FBQztBQVFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxZQUdaLEdBQUFaLE9BQUEsQ0FBQVksWUFBQSxHQUFHLElBQUFYLHFCQUFZLEVBQUNDLHVCQUFXLENBQUNXLElBQUksRUFBRSxVQUFDUixPQUE0QjtFQUFBLE9BQU07SUFBQ0EsT0FBTyxFQUFQQTtFQUFPLENBQUM7QUFBQSxDQUFDLENBQUM7QUFhakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1TLGdCQUdaLEdBQUFkLE9BQUEsQ0FBQWMsZ0JBQUEsR0FBRyxJQUFBYixxQkFBWSxFQUFDQyx1QkFBVyxDQUFDYSxtQkFBbUIsRUFBRSxVQUFDVixPQUFnQztFQUFBLE9BQU07SUFDdkZBLE9BQU8sRUFBUEE7RUFDRixDQUFDO0FBQUEsQ0FBQyxDQUFDOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTVcsSUFBSSxHQUFHLElBQUk7QUFDakIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -7,7 +7,7 @@ export declare type TogglePerspectiveUpdaterAction = void;
7
7
  * @memberof mapStateActions
8
8
  * @public
9
9
  * @example
10
- * import {togglePerspective} from 'kepler.gl/actions';
10
+ * import {togglePerspective} from '@kepler.gl/actions';
11
11
  * this.props.dispatch(togglePerspective());
12
12
  */
13
13
  export declare const togglePerspective: () => Merge<TogglePerspectiveUpdaterAction, {
@@ -22,7 +22,7 @@ export declare type FitBoundsUpdaterAction = {
22
22
  * @param {Array<Number>} bounds as `[lngMin, latMin, lngMax, latMax]`
23
23
  * @public
24
24
  * @example
25
- * import {fitBounds} from 'kepler.gl/actions';
25
+ * import {fitBounds} from '@kepler.gl/actions';
26
26
  * this.props.dispatch(fitBounds([-122.23, 37.127, -122.11, 37.456]));
27
27
  */
28
28
  export declare const fitBounds: (payload: Bounds) => Merge<FitBoundsUpdaterAction, {
@@ -49,7 +49,7 @@ export declare type UpdateMapUpdaterAction = {
49
49
  * @param {number} mapIndex Index of which map to update the viewport of
50
50
  * @public
51
51
  * @example
52
- * import {updateMap} from 'kepler.gl/actions';
52
+ * import {updateMap} from '@kepler.gl/actions';
53
53
  * this.props.dispatch(updateMap({latitude: 37.75043, longitude: -122.34679, width: 800, height: 1200}, 0));
54
54
  */
55
55
  export declare const updateMap: (viewport: Viewport, mapIndex?: number) => Merge<UpdateMapUpdaterAction, {
@@ -64,7 +64,7 @@ export declare type ToggleSplitMapUpdaterAction = {
64
64
  * @param {Number} [index] index is provided, close split map at index
65
65
  * @public
66
66
  * @example
67
- * import {toggleSplitMap} from 'kepler.gl/actions';
67
+ * import {toggleSplitMap} from '@kepler.gl/actions';
68
68
  * this.props.dispatch(toggleSplitMap());
69
69
  */
70
70
  export declare const toggleSplitMap: (payload: number) => Merge<ToggleSplitMapUpdaterAction, {
@@ -16,7 +16,7 @@ var _actionTypes = _interopRequireDefault(require("./action-types"));
16
16
  * @memberof mapStateActions
17
17
  * @public
18
18
  * @example
19
- * import {togglePerspective} from 'kepler.gl/actions';
19
+ * import {togglePerspective} from '@kepler.gl/actions';
20
20
  * this.props.dispatch(togglePerspective());
21
21
  */
22
22
  var togglePerspective = exports.togglePerspective = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_PERSPECTIVE);
@@ -26,7 +26,7 @@ var togglePerspective = exports.togglePerspective = (0, _toolkit.createAction)(_
26
26
  * @param {Array<Number>} bounds as `[lngMin, latMin, lngMax, latMax]`
27
27
  * @public
28
28
  * @example
29
- * import {fitBounds} from 'kepler.gl/actions';
29
+ * import {fitBounds} from '@kepler.gl/actions';
30
30
  * this.props.dispatch(fitBounds([-122.23, 37.127, -122.11, 37.456]));
31
31
  */
32
32
  var fitBounds = exports.fitBounds = (0, _toolkit.createAction)(_actionTypes["default"].FIT_BOUNDS, function (bounds) {
@@ -49,7 +49,7 @@ var fitBounds = exports.fitBounds = (0, _toolkit.createAction)(_actionTypes["def
49
49
  * @param {number} mapIndex Index of which map to update the viewport of
50
50
  * @public
51
51
  * @example
52
- * import {updateMap} from 'kepler.gl/actions';
52
+ * import {updateMap} from '@kepler.gl/actions';
53
53
  * this.props.dispatch(updateMap({latitude: 37.75043, longitude: -122.34679, width: 800, height: 1200}, 0));
54
54
  */
55
55
 
@@ -67,7 +67,7 @@ var updateMap = exports.updateMap = (0, _toolkit.createAction)(_actionTypes["def
67
67
  * @param {Number} [index] index is provided, close split map at index
68
68
  * @public
69
69
  * @example
70
- * import {toggleSplitMap} from 'kepler.gl/actions';
70
+ * import {toggleSplitMap} from '@kepler.gl/actions';
71
71
  * this.props.dispatch(toggleSplitMap());
72
72
  */
73
73
  var toggleSplitMap = exports.toggleSplitMap = (0, _toolkit.createAction)(_actionTypes["default"].TOGGLE_SPLIT_MAP, function (index) {
@@ -102,4 +102,4 @@ var toggleSplitMapViewport = exports.toggleSplitMapViewport = (0, _toolkit.creat
102
102
  // @ts-ignore
103
103
  var mapStateActions = null;
104
104
  /* eslint-enable @typescript-eslint/no-unused-vars */
105
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJleHBvcnRzIiwiY3JlYXRlQWN0aW9uIiwiQWN0aW9uVHlwZXMiLCJUT0dHTEVfUEVSU1BFQ1RJVkUiLCJmaXRCb3VuZHMiLCJGSVRfQk9VTkRTIiwiYm91bmRzIiwicGF5bG9hZCIsInVwZGF0ZU1hcCIsIlVQREFURV9NQVAiLCJ2aWV3cG9ydCIsIm1hcEluZGV4IiwidG9nZ2xlU3BsaXRNYXAiLCJUT0dHTEVfU1BMSVRfTUFQIiwiaW5kZXgiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0IiwiVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVCIsInN5bmNJbmZvIiwibWFwU3RhdGVBY3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCB7ZGVmYXVsdCBhcyBBY3Rpb25UeXBlc30gZnJvbSAnLi9hY3Rpb24tdHlwZXMnO1xuaW1wb3J0IHtCb3VuZHMsIE1lcmdlLCBWaWV3cG9ydH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7dG9nZ2xlUGVyc3BlY3RpdmV9IGZyb20gJ2tlcGxlci5nbC9hY3Rpb25zJztcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2godG9nZ2xlUGVyc3BlY3RpdmUoKSk7XG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQZXJzcGVjdGl2ZTogKCkgPT4gTWVyZ2U8XG4gIFRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfUEVSU1BFQ1RJVkV9XG4+ID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlRPR0dMRV9QRVJTUEVDVElWRSk7XG5cbmV4cG9ydCB0eXBlIEZpdEJvdW5kc1VwZGF0ZXJBY3Rpb24gPSB7cGF5bG9hZDogQm91bmRzfTtcbi8qKlxuICogRml0IG1hcCB2aWV3cG9ydCB0byBib3VuZHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7QXJyYXk8TnVtYmVyPn0gYm91bmRzIGFzIGBbbG5nTWluLCBsYXRNaW4sIGxuZ01heCwgbGF0TWF4XWBcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAna2VwbGVyLmdsL2FjdGlvbnMnO1xuICogdGhpcy5wcm9wcy5kaXNwYXRjaChmaXRCb3VuZHMoWy0xMjIuMjMsIDM3LjEyNywgLTEyMi4xMSwgMzcuNDU2XSkpO1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzOiAoXG4gIHBheWxvYWQ6IEJvdW5kc1xuKSA9PiBNZXJnZTxGaXRCb3VuZHNVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkZJVF9CT1VORFN9PiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuRklUX0JPVU5EUyxcbiAgKGJvdW5kczogQm91bmRzKSA9PiAoe3BheWxvYWQ6IGJvdW5kc30pXG4pO1xuXG5leHBvcnQgdHlwZSBVcGRhdGVNYXBVcGRhdGVyQWN0aW9uID0ge3BheWxvYWQ6IHt2aWV3cG9ydDogVmlld3BvcnQ7IG1hcEluZGV4PzogbnVtYmVyfX07XG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB7T2JqZWN0fSB2aWV3cG9ydCB2aWV3cG9ydCBvYmplY3QgY29udGFpbmVyIG9uZSBvciBhbnkgb2YgdGhlc2UgcHJvcGVydGllcyBgd2lkdGhgLCBgaGVpZ2h0YCwgYGxhdGl0dWRlYCBgbG9uZ2l0dWRlYCwgYHpvb21gLCBgcGl0Y2hgLCBgYmVhcmluZ2AsIGBkcmFnUm90YXRlYFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC53aWR0aF0gV2lkdGggb2Ygdmlld3BvcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmlld3BvcnQuaGVpZ2h0XSBIZWlnaHQgb2Ygdmlld3BvcnRcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmlld3BvcnQuem9vbV0gWm9vbSBvZiB2aWV3cG9ydFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC5waXRjaF0gQ2FtZXJhIGFuZ2xlIGluIGRlZ3JlZXMgKDAgaXMgc3RyYWlnaHQgZG93bilcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmlld3BvcnQuYmVhcmluZ10gTWFwIHJvdGF0aW9uIGluIGRlZ3JlZXMgKDAgbWVhbnMgbm9ydGggaXMgdXApXG4gKiBAcGFyYW0ge051bWJlcn0gW3ZpZXdwb3J0LmxhdGl0dWRlXSBMYXRpdHVkZSBjZW50ZXIgb2Ygdmlld3BvcnQgb24gbWFwIGluIG1lcmNhdG9yIHByb2plY3Rpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmlld3BvcnQubG9uZ2l0dWRlXSBMb25naXR1ZGUgQ2VudGVyIG9mIHZpZXdwb3J0IG9uIG1hcCBpbiBtZXJjYXRvciBwcm9qZWN0aW9uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt2aWV3cG9ydC5kcmFnUm90YXRlXSBXaGV0aGVyIHRvIGVuYWJsZSBkcmFnIGFuZCByb3RhdGUgbWFwIGludG8gcGVyc3BlY3RpdmUgdmlld3BvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBtYXBJbmRleCBJbmRleCBvZiB3aGljaCBtYXAgdG8gdXBkYXRlIHRoZSB2aWV3cG9ydCBvZlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7dXBkYXRlTWFwfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHVwZGF0ZU1hcCh7bGF0aXR1ZGU6IDM3Ljc1MDQzLCBsb25naXR1ZGU6IC0xMjIuMzQ2NzksIHdpZHRoOiA4MDAsIGhlaWdodDogMTIwMH0sIDApKTtcbiAqL1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWFwOiAoXG4gIHZpZXdwb3J0OiBWaWV3cG9ydCxcbiAgbWFwSW5kZXg/OiBudW1iZXJcbikgPT4gTWVyZ2U8VXBkYXRlTWFwVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfTUFQfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlVQREFURV9NQVAsXG4gICh2aWV3cG9ydDogVmlld3BvcnQsIG1hcEluZGV4PzogbnVtYmVyKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgbWFwSW5kZXhcbiAgICB9XG4gIH0pXG4pO1xuXG5leHBvcnQgdHlwZSBUb2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IG51bWJlcjtcbn07XG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIHNpbmdsZSBtYXAgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRleF0gaW5kZXggaXMgcHJvdmlkZWQsIGNsb3NlIHNwbGl0IG1hcCBhdCBpbmRleFxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7dG9nZ2xlU3BsaXRNYXB9IGZyb20gJ2tlcGxlci5nbC9hY3Rpb25zJztcbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2godG9nZ2xlU3BsaXRNYXAoKSk7XG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcDogKFxuICBwYXlsb2FkOiBudW1iZXJcbikgPT4gTWVyZ2U8VG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9TUExJVF9NQVB9PiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUCxcbiAgKGluZGV4OiBudW1iZXIpID0+ICh7cGF5bG9hZDogaW5kZXh9KVxuKTtcblxuZXhwb3J0IHR5cGUgVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBpc1ZpZXdwb3J0U3luY2VkPzogYm9vbGVhbjtcbiAgICBpc1pvb21Mb2NrZWQ/OiBib29sZWFuO1xuICB9O1xufTtcblxuLyoqXG4gKiBGb3Igc3BsaXQgbWFwcywgdG9nZ2xlIGJldHdlZW4gaGF2aW5nICh1bilzeW5jZWQgdmlld3BvcnRzIGFuZCAodW4pbG9ja2VkIHpvb21zXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge09iamVjdH0gc3luY0luZm9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N5bmNJbmZvLmlzVmlld3BvcnRTeW5jZWRdIEFyZSB0aGUgMiBzcGxpdCBtYXBzIGhhdmluZyBzeW5jZWQgdmlld3BvcnRzP1xuICogQHBhcmFtIHtib29sZWFufSBbc3luY0luZm8uaXNab29tTG9ja2VkXSBJZiBzcGxpdCwgYXJlIHRoZSB6b29tcyBsb2NrZWQgdG8gZWFjaCBvdGhlciBvciBpbmRlcGVuZGVudD9cbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnQ6IChwYXlsb2FkOiB7XG4gIGlzVmlld3BvcnRTeW5jZWQ/OiBib29sZWFuO1xuICBpc1pvb21Mb2NrZWQ/OiBib29sZWFuO1xufSkgPT4gTWVyZ2U8XG4gIFRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9TUExJVF9NQVBfVklFV1BPUlR9XG4+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JULFxuICAoc3luY0luZm86IFRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ10pID0+ICh7cGF5bG9hZDogc3luY0luZm99KVxuKTtcblxuLyoqXG4gKiBUaGlzIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCB0byBncm91cCBhY3Rpb25zIGluIGRvY3NcbiAqL1xuLyoqXG4gKiBBY3Rpb25zIGhhbmRsZWQgbW9zdGx5IGJ5ICBgbWFwU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBtYXAgdmlld3BvcnQgdXBkYXRlLCB0b2dnbGUgYmV0d2VlbiAyZCBhbmQgM2QgbWFwLFxuICogdG9nZ2xlIGJldHdlZW4gc2luZ2xlIGFuZCBzcGxpdCBtYXBzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZUFjdGlvbnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUpBO0FBQ0E7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUcsaUJBR1osR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxHQUFHLElBQUFFLHFCQUFZLEVBQUNDLHVCQUFXLENBQUNDLGtCQUFrQixDQUFDO0FBR2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLFNBRTRELEdBQUFKLE9BQUEsQ0FBQUksU0FBQSxHQUFHLElBQUFILHFCQUFZLEVBQ3RGQyx1QkFBVyxDQUFDRyxVQUFVLEVBQ3RCLFVBQUNDLE1BQWM7RUFBQSxPQUFNO0lBQUNDLE9BQU8sRUFBRUQ7RUFBTSxDQUFDO0FBQUEsQ0FDeEMsQ0FBQztBQUdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxJQUFNRSxTQUc0RCxHQUFBUixPQUFBLENBQUFRLFNBQUEsR0FBRyxJQUFBUCxxQkFBWSxFQUN0RkMsdUJBQVcsQ0FBQ08sVUFBVSxFQUN0QixVQUFDQyxRQUFrQixFQUFFQyxRQUFpQjtFQUFBLE9BQU07SUFDMUNKLE9BQU8sRUFBRTtNQUNQRyxRQUFRLEVBQVJBLFFBQVE7TUFDUkMsUUFBUSxFQUFSQTtJQUNGO0VBQ0YsQ0FBQztBQUFBLENBQ0gsQ0FBQztBQUtEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLGNBRXVFLEdBQUFaLE9BQUEsQ0FBQVksY0FBQSxHQUFHLElBQUFYLHFCQUFZLEVBQ2pHQyx1QkFBVyxDQUFDVyxnQkFBZ0IsRUFDNUIsVUFBQ0MsS0FBYTtFQUFBLE9BQU07SUFBQ1AsT0FBTyxFQUFFTztFQUFLLENBQUM7QUFBQSxDQUN0QyxDQUFDO0FBU0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxzQkFNWixHQUFBZixPQUFBLENBQUFlLHNCQUFBLEdBQUcsSUFBQWQscUJBQVksRUFDZEMsdUJBQVcsQ0FBQ2MseUJBQXlCLEVBQ3JDLFVBQUNDLFFBQXdEO0VBQUEsT0FBTTtJQUFDVixPQUFPLEVBQUVVO0VBQVEsQ0FBQztBQUFBLENBQ3BGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsZUFBZSxHQUFHLElBQUk7QUFDNUIiLCJpZ25vcmVMaXN0IjpbXX0=
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9vbGtpdCIsInJlcXVpcmUiLCJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidG9nZ2xlUGVyc3BlY3RpdmUiLCJleHBvcnRzIiwiY3JlYXRlQWN0aW9uIiwiQWN0aW9uVHlwZXMiLCJUT0dHTEVfUEVSU1BFQ1RJVkUiLCJmaXRCb3VuZHMiLCJGSVRfQk9VTkRTIiwiYm91bmRzIiwicGF5bG9hZCIsInVwZGF0ZU1hcCIsIlVQREFURV9NQVAiLCJ2aWV3cG9ydCIsIm1hcEluZGV4IiwidG9nZ2xlU3BsaXRNYXAiLCJUT0dHTEVfU1BMSVRfTUFQIiwiaW5kZXgiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0IiwiVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVCIsInN5bmNJbmZvIiwibWFwU3RhdGVBY3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL21hcC1zdGF0ZS1hY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Y3JlYXRlQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCB7ZGVmYXVsdCBhcyBBY3Rpb25UeXBlc30gZnJvbSAnLi9hY3Rpb24tdHlwZXMnO1xuaW1wb3J0IHtCb3VuZHMsIE1lcmdlLCBWaWV3cG9ydH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7dG9nZ2xlUGVyc3BlY3RpdmV9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHRvZ2dsZVBlcnNwZWN0aXZlKCkpO1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGVyc3BlY3RpdmU6ICgpID0+IE1lcmdlPFxuICBUb2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFfVxuPiA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5UT0dHTEVfUEVSU1BFQ1RJVkUpO1xuXG5leHBvcnQgdHlwZSBGaXRCb3VuZHNVcGRhdGVyQWN0aW9uID0ge3BheWxvYWQ6IEJvdW5kc307XG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge0FycmF5PE51bWJlcj59IGJvdW5kcyBhcyBgW2xuZ01pbiwgbGF0TWluLCBsbmdNYXgsIGxhdE1heF1gXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKGZpdEJvdW5kcyhbLTEyMi4yMywgMzcuMTI3LCAtMTIyLjExLCAzNy40NTZdKSk7XG4gKi9cbmV4cG9ydCBjb25zdCBmaXRCb3VuZHM6IChcbiAgcGF5bG9hZDogQm91bmRzXG4pID0+IE1lcmdlPEZpdEJvdW5kc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuRklUX0JPVU5EU30+ID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5GSVRfQk9VTkRTLFxuICAoYm91bmRzOiBCb3VuZHMpID0+ICh7cGF5bG9hZDogYm91bmRzfSlcbik7XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb24gPSB7cGF5bG9hZDoge3ZpZXdwb3J0OiBWaWV3cG9ydDsgbWFwSW5kZXg/OiBudW1iZXJ9fTtcbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IHZpZXdwb3J0IHZpZXdwb3J0IG9iamVjdCBjb250YWluZXIgb25lIG9yIGFueSBvZiB0aGVzZSBwcm9wZXJ0aWVzIGB3aWR0aGAsIGBoZWlnaHRgLCBgbGF0aXR1ZGVgIGBsb25naXR1ZGVgLCBgem9vbWAsIGBwaXRjaGAsIGBiZWFyaW5nYCwgYGRyYWdSb3RhdGVgXG4gKiBAcGFyYW0ge051bWJlcn0gW3ZpZXdwb3J0LndpZHRoXSBXaWR0aCBvZiB2aWV3cG9ydFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC5oZWlnaHRdIEhlaWdodCBvZiB2aWV3cG9ydFxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC56b29tXSBab29tIG9mIHZpZXdwb3J0XG4gKiBAcGFyYW0ge051bWJlcn0gW3ZpZXdwb3J0LnBpdGNoXSBDYW1lcmEgYW5nbGUgaW4gZGVncmVlcyAoMCBpcyBzdHJhaWdodCBkb3duKVxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC5iZWFyaW5nXSBNYXAgcm90YXRpb24gaW4gZGVncmVlcyAoMCBtZWFucyBub3J0aCBpcyB1cClcbiAqIEBwYXJhbSB7TnVtYmVyfSBbdmlld3BvcnQubGF0aXR1ZGVdIExhdGl0dWRlIGNlbnRlciBvZiB2aWV3cG9ydCBvbiBtYXAgaW4gbWVyY2F0b3IgcHJvamVjdGlvblxuICogQHBhcmFtIHtOdW1iZXJ9IFt2aWV3cG9ydC5sb25naXR1ZGVdIExvbmdpdHVkZSBDZW50ZXIgb2Ygdmlld3BvcnQgb24gbWFwIGluIG1lcmNhdG9yIHByb2plY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ZpZXdwb3J0LmRyYWdSb3RhdGVdIFdoZXRoZXIgdG8gZW5hYmxlIGRyYWcgYW5kIHJvdGF0ZSBtYXAgaW50byBwZXJzcGVjdGl2ZSB2aWV3cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IG1hcEluZGV4IEluZGV4IG9mIHdoaWNoIG1hcCB0byB1cGRhdGUgdGhlIHZpZXdwb3J0IG9mXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHt1cGRhdGVNYXB9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHVwZGF0ZU1hcCh7bGF0aXR1ZGU6IDM3Ljc1MDQzLCBsb25naXR1ZGU6IC0xMjIuMzQ2NzksIHdpZHRoOiA4MDAsIGhlaWdodDogMTIwMH0sIDApKTtcbiAqL1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWFwOiAoXG4gIHZpZXdwb3J0OiBWaWV3cG9ydCxcbiAgbWFwSW5kZXg/OiBudW1iZXJcbikgPT4gTWVyZ2U8VXBkYXRlTWFwVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5VUERBVEVfTUFQfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlVQREFURV9NQVAsXG4gICh2aWV3cG9ydDogVmlld3BvcnQsIG1hcEluZGV4PzogbnVtYmVyKSA9PiAoe1xuICAgIHBheWxvYWQ6IHtcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgbWFwSW5kZXhcbiAgICB9XG4gIH0pXG4pO1xuXG5leHBvcnQgdHlwZSBUb2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IG51bWJlcjtcbn07XG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIHNpbmdsZSBtYXAgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRleF0gaW5kZXggaXMgcHJvdmlkZWQsIGNsb3NlIHNwbGl0IG1hcCBhdCBpbmRleFxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7dG9nZ2xlU3BsaXRNYXB9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHRvZ2dsZVNwbGl0TWFwKCkpO1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXA6IChcbiAgcGF5bG9hZDogbnVtYmVyXG4pID0+IE1lcmdlPFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQfT4gPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlRPR0dMRV9TUExJVF9NQVAsXG4gIChpbmRleDogbnVtYmVyKSA9PiAoe3BheWxvYWQ6IGluZGV4fSlcbik7XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgaXNWaWV3cG9ydFN5bmNlZD86IGJvb2xlYW47XG4gICAgaXNab29tTG9ja2VkPzogYm9vbGVhbjtcbiAgfTtcbn07XG5cbi8qKlxuICogRm9yIHNwbGl0IG1hcHMsIHRvZ2dsZSBiZXR3ZWVuIGhhdmluZyAodW4pc3luY2VkIHZpZXdwb3J0cyBhbmQgKHVuKWxvY2tlZCB6b29tc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlQWN0aW9uc1xuICogQHBhcmFtIHtPYmplY3R9IHN5bmNJbmZvXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzeW5jSW5mby5pc1ZpZXdwb3J0U3luY2VkXSBBcmUgdGhlIDIgc3BsaXQgbWFwcyBoYXZpbmcgc3luY2VkIHZpZXdwb3J0cz9cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3N5bmNJbmZvLmlzWm9vbUxvY2tlZF0gSWYgc3BsaXQsIGFyZSB0aGUgem9vbXMgbG9ja2VkIHRvIGVhY2ggb3RoZXIgb3IgaW5kZXBlbmRlbnQ/XG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0OiAocGF5bG9hZDoge1xuICBpc1ZpZXdwb3J0U3luY2VkPzogYm9vbGVhbjtcbiAgaXNab29tTG9ja2VkPzogYm9vbGVhbjtcbn0pID0+IE1lcmdlPFxuICBUb2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JUfVxuPiA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVCxcbiAgKHN5bmNJbmZvOiBUb2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlckFjdGlvblsncGF5bG9hZCddKSA9PiAoe3BheWxvYWQ6IHN5bmNJbmZvfSlcbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSAgYG1hcFN0YXRlYCByZWR1Y2VyLlxuICogVGhleSBtYW5hZ2UgbWFwIHZpZXdwb3J0IHVwZGF0ZSwgdG9nZ2xlIGJldHdlZW4gMmQgYW5kIDNkIG1hcCxcbiAqIHRvZ2dsZSBiZXR3ZWVuIHNpbmdsZSBhbmQgc3BsaXQgbWFwcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFKQTtBQUNBOztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1HLGlCQUdaLEdBQUFDLE9BQUEsQ0FBQUQsaUJBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUFDQyx1QkFBVyxDQUFDQyxrQkFBa0IsQ0FBQztBQUdoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxTQUU0RCxHQUFBSixPQUFBLENBQUFJLFNBQUEsR0FBRyxJQUFBSCxxQkFBWSxFQUN0RkMsdUJBQVcsQ0FBQ0csVUFBVSxFQUN0QixVQUFDQyxNQUFjO0VBQUEsT0FBTTtJQUFDQyxPQUFPLEVBQUVEO0VBQU0sQ0FBQztBQUFBLENBQ3hDLENBQUM7QUFHRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBTUUsU0FHNEQsR0FBQVIsT0FBQSxDQUFBUSxTQUFBLEdBQUcsSUFBQVAscUJBQVksRUFDdEZDLHVCQUFXLENBQUNPLFVBQVUsRUFDdEIsVUFBQ0MsUUFBa0IsRUFBRUMsUUFBaUI7RUFBQSxPQUFNO0lBQzFDSixPQUFPLEVBQUU7TUFDUEcsUUFBUSxFQUFSQSxRQUFRO01BQ1JDLFFBQVEsRUFBUkE7SUFDRjtFQUNGLENBQUM7QUFBQSxDQUNILENBQUM7QUFLRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxjQUV1RSxHQUFBWixPQUFBLENBQUFZLGNBQUEsR0FBRyxJQUFBWCxxQkFBWSxFQUNqR0MsdUJBQVcsQ0FBQ1csZ0JBQWdCLEVBQzVCLFVBQUNDLEtBQWE7RUFBQSxPQUFNO0lBQUNQLE9BQU8sRUFBRU87RUFBSyxDQUFDO0FBQUEsQ0FDdEMsQ0FBQztBQVNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsc0JBTVosR0FBQWYsT0FBQSxDQUFBZSxzQkFBQSxHQUFHLElBQUFkLHFCQUFZLEVBQ2RDLHVCQUFXLENBQUNjLHlCQUF5QixFQUNyQyxVQUFDQyxRQUF3RDtFQUFBLE9BQU07SUFBQ1YsT0FBTyxFQUFFVTtFQUFRLENBQUM7QUFBQSxDQUNwRixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGVBQWUsR0FBRyxJQUFJO0FBQzVCIiwiaWdub3JlTGlzdCI6W119
@@ -919,8 +919,8 @@ export declare type SetEditorModeUpdaterAction = {
919
919
  * @returns action
920
920
  * @public
921
921
  * @example
922
- * import {setMapMode} from 'kepler.gl/actions';
923
- * import {EDITOR_MODES} from 'kepler.gl/constants';
922
+ * import {setMapMode} from '@kepler.gl/actions';
923
+ * import {EDITOR_MODES} from '@kepler.gl/constants';
924
924
  *
925
925
  * this.props.dispatch(setMapMode(EDITOR_MODES.DRAW_POLYGON));
926
926
  */
@@ -993,8 +993,8 @@ function deleteFeature(feature) {
993
993
  * @returns action
994
994
  * @public
995
995
  * @example
996
- * import {setMapMode} from 'kepler.gl/actions';
997
- * import {EDITOR_MODES} from 'kepler.gl/constants';
996
+ * import {setMapMode} from '@kepler.gl/actions';
997
+ * import {EDITOR_MODES} from '@kepler.gl/constants';
998
998
  *
999
999
  * this.props.dispatch(setMapMode(EDITOR_MODES.DRAW_POLYGON));
1000
1000
  */
@@ -1129,4 +1129,4 @@ var createNewDatasetSuccess = exports.createNewDatasetSuccess = (0, _toolkit.cre
1129
1129
  // @ts-ignore
1130
1130
  var visStateActions = null;
1131
1131
  /* eslint-enable @typescript-eslint/no-unused-vars */
1132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYXBwbHlMYXllckNvbmZpZyIsIm9sZExheWVySWQiLCJuZXdMYXllckNvbmZpZyIsImxheWVySW5kZXgiLCJ0eXBlIiwiQWN0aW9uVHlwZXMiLCJBUFBMWV9MQVlFUl9DT05GSUciLCJsYXllckNvbmZpZ0NoYW5nZSIsIm9sZExheWVyIiwibmV3Q29uZmlnIiwiTEFZRVJfQ09ORklHX0NIQU5HRSIsImxheWVyVG9nZ2xlVmlzaWJpbGl0eSIsImxheWVySWQiLCJpc1Zpc2libGUiLCJzcGxpdE1hcElkIiwiTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFkiLCJsYXllclRleHRMYWJlbENoYW5nZSIsImlkeCIsInByb3AiLCJ2YWx1ZSIsIkxBWUVSX1RFWFRfTEFCRUxfQ0hBTkdFIiwibGF5ZXJTZXRJc1ZhbGlkIiwiaXNWYWxpZCIsIkxBWUVSX1NFVF9JU19WQUxJRCIsImxheWVyVHlwZUNoYW5nZSIsIm5ld1R5cGUiLCJMQVlFUl9UWVBFX0NIQU5HRSIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsImNoYW5uZWwiLCJuZXdWaXNDb25maWciLCJMQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0UiLCJsYXllclZpc0NvbmZpZ0NoYW5nZSIsIkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFIiwibGF5ZXJDb2xvclVJQ2hhbmdlIiwiTEFZRVJfQ09MT1JfVUlfQ0hBTkdFIiwidXBkYXRlTGF5ZXJCbGVuZGluZyIsIm1vZGUiLCJVUERBVEVfTEFZRVJfQkxFTkRJTkciLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJVUERBVEVfT1ZFUkxBWV9CTEVORElORyIsImludGVyYWN0aW9uQ29uZmlnQ2hhbmdlIiwiY29uZmlnIiwiSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRSIsImFwcGx5RmlsdGVyQ29uZmlnIiwiZmlsdGVySWQiLCJuZXdGaWx0ZXIiLCJBUFBMWV9GSUxURVJfQ09ORklHIiwic2V0RmlsdGVyIiwidmFsdWVJbmRleCIsIlNFVF9GSUxURVIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSIsInNldEZpbHRlckFuaW1hdGlvbldpbmRvdyIsIl9yZWYiLCJpZCIsImFuaW1hdGlvbldpbmRvdyIsIlNFVF9GSUxURVJfQU5JTUFUSU9OX1dJTkRPVyIsImFkZEZpbHRlciIsImRhdGFJZCIsIkFERF9GSUxURVIiLCJjcmVhdGVPclVwZGF0ZUZpbHRlciIsImZpZWxkIiwiQ1JFQVRFX09SX1VQREFURV9GSUxURVIiLCJhZGRMYXllciIsImRhdGFzZXRJZCIsIkFERF9MQVlFUiIsInJlb3JkZXJMYXllciIsIm9yZGVyIiwiUkVPUkRFUl9MQVlFUiIsInJlbW92ZUZpbHRlciIsIlJFTU9WRV9GSUxURVIiLCJyZW1vdmVMYXllciIsIlJFTU9WRV9MQVlFUiIsImR1cGxpY2F0ZUxheWVyIiwiRFVQTElDQVRFX0xBWUVSIiwiYWRkRWZmZWN0IiwiQUREX0VGRkVDVCIsInJlb3JkZXJFZmZlY3QiLCJSRU9SREVSX0VGRkVDVCIsInJlbW92ZUVmZmVjdCIsIlJFTU9WRV9FRkZFQ1QiLCJ1cGRhdGVFZmZlY3QiLCJwcm9wcyIsIlVQREFURV9FRkZFQ1QiLCJyZW1vdmVEYXRhc2V0IiwiUkVNT1ZFX0RBVEFTRVQiLCJzaG93RGF0YXNldFRhYmxlIiwiU0hPV19EQVRBU0VUX1RBQkxFIiwidXBkYXRlVGFibGVDb2xvciIsIm5ld0NvbG9yIiwiVVBEQVRFX1RBQkxFX0NPTE9SIiwic29ydFRhYmxlQ29sdW1uIiwiY29sdW1uIiwiU09SVF9UQUJMRV9DT0xVTU4iLCJwaW5UYWJsZUNvbHVtbiIsIlBJTl9UQUJMRV9DT0xVTU4iLCJjb3B5VGFibGVDb2x1bW4iLCJDT1BZX1RBQkxFX0NPTFVNTiIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJmb3JtYXRzIiwiU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVCIsInVwZGF0ZVZpc0RhdGEiLCJkYXRhc2V0cyIsIm9wdGlvbnMiLCJVUERBVEVfVklTX0RBVEEiLCJyZW5hbWVEYXRhc2V0IiwibGFiZWwiLCJSRU5BTUVfREFUQVNFVCIsInVwZGF0ZURhdGFzZXRQcm9wcyIsIlVQREFURV9EQVRBU0VUX1BST1BTIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwiVE9HR0xFX0ZJTFRFUl9BTklNQVRJT04iLCJ1cGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZCIsInNwZWVkIiwiVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQiLCJzZXRBbmltYXRpb25Db25maWciLCJTRVRfQU5JTUFUSU9OX0NPTkZJRyIsInNldExheWVyQW5pbWF0aW9uVGltZSIsIlNFVF9MQVlFUl9BTklNQVRJT05fVElNRSIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWQiLCJVUERBVEVfTEFZRVJfQU5JTUFUSU9OX1NQRUVEIiwidG9nZ2xlTGF5ZXJBbmltYXRpb24iLCJUT0dHTEVfTEFZRVJfQU5JTUFUSU9OIiwidG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sIiwiVE9HR0xFX0xBWUVSX0FOSU1BVElPTl9DT05UUk9MIiwic2V0RmlsdGVyVmlldyIsInZpZXciLCJTRVRfRklMVEVSX1ZJRVciLCJ0b2dnbGVGaWx0ZXJGZWF0dXJlIiwiVE9HR0xFX0ZJTFRFUl9GRUFUVVJFIiwib25MYXllckhvdmVyIiwiaW5mbyIsIm1hcEluZGV4IiwiTEFZRVJfSE9WRVIiLCJvbkxheWVyQ2xpY2siLCJMQVlFUl9DTElDSyIsIm9uTWFwQ2xpY2siLCJNQVBfQ0xJQ0siLCJvbk1vdXNlTW92ZSIsImV2dCIsIk1PVVNFX01PVkUiLCJ0b2dnbGVMYXllckZvck1hcCIsIlRPR0dMRV9MQVlFUl9GT1JfTUFQIiwic2V0RmlsdGVyUGxvdCIsIm5ld1Byb3AiLCJTRVRfRklMVEVSX1BMT1QiLCJzZXRNYXBJbmZvIiwiU0VUX01BUF9JTkZPIiwibG9hZEZpbGVzIiwiZmlsZXMiLCJvbkZpbmlzaCIsIkxPQURfRklMRVMiLCJsb2FkTmV4dEZpbGUiLCJMT0FEX05FWFRfRklMRSIsImxvYWRGaWxlc1N1Y2Nlc3MiLCJyZXN1bHQiLCJMT0FEX0ZJTEVTX1NVQ0NFU1MiLCJsb2FkRmlsZVN0ZXBTdWNjZXNzIiwiX3JlZjIiLCJmaWxlTmFtZSIsImZpbGVDYWNoZSIsIkxPQURfRklMRV9TVEVQX1NVQ0NFU1MiLCJsb2FkRmlsZXNFcnIiLCJlcnJvciIsIkxPQURfRklMRVNfRVJSIiwic2V0RmVhdHVyZXMiLCJmZWF0dXJlcyIsIlNFVF9GRUFUVVJFUyIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsImxheWVyIiwiZmVhdHVyZSIsIlNFVF9QT0xZR09OX0ZJTFRFUl9MQVlFUiIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNlbGVjdGlvbkNvbnRleHQiLCJTRVRfU0VMRUNURURfRkVBVFVSRSIsImRlbGV0ZUZlYXR1cmUiLCJERUxFVEVfRkVBVFVSRSIsInNldEVkaXRvck1vZGUiLCJTRVRfRURJVE9SX01PREUiLCJhcHBseUNQVUZpbHRlciIsIkFQUExZX0NQVV9GSUxURVIiLCJ0b2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwiVE9HR0xFX0VESVRPUl9WSVNJQklMSVRZIiwibmV4dEZpbGVCYXRjaCIsInBheWxvYWQiLCJORVhUX0ZJTEVfQkFUQ0giLCJwcm9jZXNzRmlsZUNvbnRlbnQiLCJQUk9DRVNTX0ZJTEVfQ09OVEVOVCIsInNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZyIsIlNFVF9MQVlFUl9BTklNQVRJT05fVElNRV9DT05GSUciLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRV9DT05GSUciLCJsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UiLCJldmVudCIsIkxBWUVSX0ZJTFRFUkVEX0lURU1TX0NIQU5HRSIsInN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmUiLCJlbmFibGUiLCJTWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkUiLCJzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZSIsIl9yZWYzIiwiU1lOQ19USU1FX0ZJTFRFUl9USU1FTElORV9NT0RFIiwiY3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3MiLCJleHBvcnRzIiwiY3JlYXRlQWN0aW9uIiwiQ1JFQVRFX05FV19EQVRBU0VUX1NVQ0NFU1MiLCJ2aXNTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi9zcmMvdmlzLXN0YXRlLWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gdmlzLXN0YXRlLXJlZHVjZXJcbmltcG9ydCB7UGlja0luZm99IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2RlY2snO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEFjdGlvblR5cGVzfSBmcm9tICcuL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge0ZpbGVDYWNoZUl0ZW19IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge0xheWVyLCBMYXllckJhc2VDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtcbiAgQWRkRGF0YVRvTWFwUGF5bG9hZCxcbiAgVmFsdWVPZixcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBOZXN0ZWRQYXJ0aWFsLFxuICBMYXllclZpc0NvbmZpZyxcbiAgQ29sb3JVSSxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIEludGVyYWN0aW9uQ29uZmlnLFxuICBGaWx0ZXIsXG4gIFBhcnNlZENvbmZpZyxcbiAgUGFyc2VkTGF5ZXIsXG4gIEVmZmVjdFByb3BzUGFydGlhbCxcbiAgU3luY1RpbWVsaW5lTW9kZSxcbiAgQW5pbWF0aW9uQ29uZmlnLFxuICBGaWx0ZXJBbmltYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2NyZWF0ZUFjdGlvbn0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5cbi8vIFRPRE8gLSBpbXBvcnQgTG9hZGVyT2JqZWN0IHR5cGUgZnJvbSBAbG9hZGVycy5nbC9jb3JlIHdoZW4gc3VwcG9ydGVkXG4vLyBUT0RPIC0gaW1wb3J0IExvYWRPcHRpb25zIHR5cGUgZnJvbSBAbG9hZGVycy5nbC9jb3JlIHdoZW4gc3VwcG9ydGVkXG5cbmV4cG9ydCB0eXBlIEFwcGx5TGF5ZXJDb25maWdVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcklkOiBzdHJpbmc7XG4gIG5ld0xheWVyQ29uZmlnOiBQYXJzZWRMYXllcjtcbiAgbGF5ZXJJbmRleD86IG51bWJlcjtcbn07XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGJhc2UgY29uZmlnOiBkYXRhSWQsIGxhYmVsLCBjb2x1bW4sIGlzVmlzaWJsZVxuICogQHBhcmFtIG9sZExheWVySWQgLSBsYXllciBpZCB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3TGF5ZXJDb25maWcgLSBuZXcgbGF5ZXIgY29uZmlnXG4gKiBAcGFyYW0gbGF5ZXJJbmRleCAtIChPcHRpb25hbCkgSW5kZXggb2YgdGhlIGxheWVyIHRvIGJlIHVwZGF0ZWQgKGNhbiBiZSB1c2VmdWwgaW4gc29tZSBjYXNlcywgYmVjYXVzZVxuICogICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgaWQgbWlnaHQgY2hhbmdlIGR1cmluZyB1cGRhdGUsIGUuZy4gd2hlbiB0aGUgdHlwZSBvZiB0aGUgbGF5ZXIgY2hhbmdlcylcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlMYXllckNvbmZpZyhcbiAgb2xkTGF5ZXJJZDogc3RyaW5nLFxuICBuZXdMYXllckNvbmZpZzogUGFyc2VkTGF5ZXIsXG4gIGxheWVySW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPEFwcGx5TGF5ZXJDb25maWdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFQUExZX0xBWUVSX0NPTkZJR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BUFBMWV9MQVlFUl9DT05GSUcsXG4gICAgb2xkTGF5ZXJJZCxcbiAgICBuZXdMYXllckNvbmZpZyxcbiAgICBsYXllckluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBuZXdDb25maWc6IFBhcnRpYWw8TGF5ZXJbJ2NvbmZpZyddPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciBiYXNlIGNvbmZpZzogZGF0YUlkLCBsYWJlbCwgY29sdW1uLCBpc1Zpc2libGVcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdDb25maWcgLSBuZXcgY29uZmlnIHRvIGJlIG1lcmdlZCB3aXRoIG9sZCBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz5cbik6IE1lcmdlPExheWVyQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9DT05GSUdfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0NPTkZJR19DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyVG9nZ2xlVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGxheWVySWQ6IHN0cmluZztcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBzcGxpdE1hcElkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIHNwbGl0TWFwIHNpbmdsZSBvciBkdWFsXG4gKiBAcGFyYW0gbGF5ZXJJZCAtIGxheWVySWQgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIGlzVmlzaWJsZSAtIHdoZXRoZXIgdGhpcyBsYXllciBpcyB2aXNpYmxlIGdsb2JhbGx5XG4gKiBAcGFyYW0gc3BsaXRNYXBJZCAtIGlkIGZvciB0aGlzIHNwbGl0TWFwXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVG9nZ2xlVmlzaWJpbGl0eShcbiAgbGF5ZXJJZDogc3RyaW5nLFxuICBpc1Zpc2libGU6IGJvb2xlYW4sXG4gIHNwbGl0TWFwSWQ/OiBzdHJpbmdcbik6IE1lcmdlPExheWVyVG9nZ2xlVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFl9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFksXG4gICAgbGF5ZXJJZCxcbiAgICBpc1Zpc2libGUsXG4gICAgc3BsaXRNYXBJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgaWR4OiBudW1iZXIgfCAnYWxsJztcbiAgcHJvcDogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufTtcblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdGV4dCBsYWJlbFxuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIGlkeCAtYGlkeGAgb2YgdGV4dCBsYWJlbCB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIGBwcm9wYCBvZiB0ZXh0IGxhYmVsLCBlLGcsIGBhbmNob3JgLCBgYWxpZ25tZW50YCwgYGNvbG9yYCwgYHNpemVgLCBgZmllbGRgLCBgb3V0bGluZVdpZHRoYCwgYG91dGxpbmVDb2xvcmBcbiAqIEBwYXJhbSB2YWx1ZSAtIG5ldyB2YWx1ZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclRleHRMYWJlbENoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBpZHg6IG51bWJlciB8ICdhbGwnLFxuICBwcm9wOiBzdHJpbmcsXG4gIHZhbHVlOiBhbnlcbik6IE1lcmdlPExheWVyVGV4dExhYmVsQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9URVhUX0xBQkVMX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9URVhUX0xBQkVMX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclNldElzVmFsaWRVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIGlzVmFsaWQ6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIENoYW5nZXMgdmFsdWUgb2YgaXNWYWxpZCBmbGFnIGZvciBhIGxheWVyLlxuICogVGhlIGFjdGlvbiBhbHNvIHVwZGF0ZXMgdmlzaWJpbGl0eSBvZiB0aGUgbGF5ZXIgYmFzZWQgb24gaXNWYWxpZC5cbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBpc1ZhbGlkIC0gbmV3IHZhbHVlIGZvciBpc1ZhbGlkIGZsYWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJTZXRJc1ZhbGlkKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIGlzVmFsaWQ6IGJvb2xlYW5cbik6IE1lcmdlPExheWVyU2V0SXNWYWxpZFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfU0VUX0lTX1ZBTElEfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1NFVF9JU19WQUxJRCxcbiAgICBvbGRMYXllcixcbiAgICBpc1ZhbGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3VHlwZTogc3RyaW5nO1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIHR5cGUuIFByZXZpZXdzIGxheWVyIGNvbmZpZyB3aWxsIGJlIGNvcGllZCBpZiBhcHBsaWNhYmxlLlxuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld1R5cGUgLSBuZXcgdHlwZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclR5cGVDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3VHlwZTogc3RyaW5nXG4pOiBNZXJnZTxMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld1R5cGVcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIExheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyWydjb25maWcnXT47XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgbmV3VmlzQ29uZmlnPzogUGFydGlhbDxMYXllclZpc0NvbmZpZz47XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzdWFsIGNoYW5uZWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdDb25maWcgLSBuZXcgdmlzdWFsIGNoYW5uZWwgY29uZmlnXG4gKiBAcGFyYW0gY2hhbm5lbCAtIGNoYW5uZWwgdG8gYmUgdXBkYXRlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4sXG4gIGNoYW5uZWw6IHN0cmluZyxcbiAgbmV3VmlzQ29uZmlnPzogUGFydGlhbDxMYXllclZpc0NvbmZpZz5cbik6IE1lcmdlPFxuICBMYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBuZXdDb25maWcsXG4gICAgY2hhbm5lbCxcbiAgICBuZXdWaXNDb25maWdcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIExheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIGB2aXNDb25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3VmlzQ29uZmlnIC0gbmV3IHZpc0NvbmZpZyBhcyBhIGtleSB2YWx1ZSBtYXA6IGUuZy4gYHtvcGFjaXR5OiAwLjh9YFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclZpc0NvbmZpZ0NoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+XG4pOiBNZXJnZTxMYXllclZpc0NvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVklTX0NPTkZJR19DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVklTX0NPTkZJR19DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3VmlzQ29uZmlnXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIHByb3A6IHN0cmluZztcbiAgbmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+O1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIGNvbG9yIHBhbGV0dGUgdWkgZm9yIGxheWVyIGNvbG9yXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIHdoaWNoIGNvbG9yIHByb3BcbiAqIEBwYXJhbSBuZXdDb25maWcgLSB0byBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJDb2xvclVJQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIHByb3A6IHN0cmluZyxcbiAgbmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+XG4pOiBNZXJnZTxMYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0NPTE9SX1VJX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9DT0xPUl9VSV9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgcHJvcCxcbiAgICBuZXdDb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIG1vZGU6ICdhZGRpdGl2ZScgfCAnbm9ybWFsJyB8ICdzdWJ0cmFjdGl2ZSc7XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmxlbmRpbmcgbW9kZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG1vZGUgb25lIG9mIGBhZGRpdGl2ZWAsIGBub3JtYWxgIGFuZCBgc3VidHJhY3RpdmVgXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyQmxlbmRpbmcoXG4gIG1vZGU6ICdhZGRpdGl2ZScgfCAnbm9ybWFsJyB8ICdzdWJ0cmFjdGl2ZSdcbik6IE1lcmdlPFVwZGF0ZUxheWVyQmxlbmRpbmdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9CTEVORElOR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQkxFTkRJTkcsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVPdmVybGF5QmxlbmRpbmdVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiAnc2NyZWVuJyB8ICdub3JtYWwnIHwgJ2Rhcmtlbic7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBvdmVybGF5IGJsZW5kaW5nIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBgc2NyZWVuYCwgYG5vcm1hbGAgYW5kIGBkYXJrZW5gXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhcbiAgbW9kZTogJ3NjcmVlbicgfCAnbm9ybWFsJyB8ICdkYXJrZW4nXG4pOiBNZXJnZTxVcGRhdGVPdmVybGF5QmxlbmRpbmdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9PVkVSTEFZX0JMRU5ESU5HfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9PVkVSTEFZX0JMRU5ESU5HLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBjb25maWc6IFZhbHVlT2Y8SW50ZXJhY3Rpb25Db25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGBpbnRlcmFjdGlvbkNvbmZpZ2BcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBjb25maWcgLSBuZXcgY29uZmlnIGFzIGtleSB2YWx1ZSBtYXA6IGB7dG9vbHRpcDoge2VuYWJsZWQ6IHRydWV9fWBcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UoXG4gIGNvbmZpZzogVmFsdWVPZjxJbnRlcmFjdGlvbkNvbmZpZz5cbik6IE1lcmdlPFxuICBJbnRlcmFjdGlvbkNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLklOVEVSQUNUSU9OX0NPTkZJR19DSEFOR0UsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFwcGx5RmlsdGVyQ29uZmlnVXBkYXRlckFjdGlvbiA9IHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgbmV3RmlsdGVyOiBGaWx0ZXI7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgY29uZmlnXG4gKiBAcGFyYW0gZmlsdGVySWQgLSBpZCBvZiB0aGUgZmlsdGVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdGaWx0ZXIgLSBuZXcgZmlsdGVyIGNvbmZpZ1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckNvbmZpZyhcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgbmV3RmlsdGVyOiBGaWx0ZXJcbik6IE1lcmdlPEFwcGx5RmlsdGVyQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BUFBMWV9GSUxURVJfQ09ORklHfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFQUExZX0ZJTFRFUl9DT05GSUcsXG4gICAgZmlsdGVySWQsXG4gICAgbmV3RmlsdGVyXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBwcm9wOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmFsdWU6IGFueTtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgcHJvcGVydHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLWBpZHhgIG9mIGZpbHRlciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIGBwcm9wYCBvZiBmaWx0ZXIsIGUsZywgYGRhdGFJZGAsIGBuYW1lYCwgYHZhbHVlYFxuICogICAgICAgICAgICAgICAgb3IgYW4gYXJyYXkgZS5nLiBbJ2lkeCcsICduYW1lJ10uIGluIHRoYXQgY2FzZSB0aGUgdmFsdWVcbiAqICAgICAgICAgICAgICAgIHNob3VsZCBhbHNvIGJlIGFuIGFycmF5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyAoYnkgaW5kZXgpXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlcihcbiAgaWR4OiBudW1iZXIsXG4gIHByb3A6IHN0cmluZyB8IHN0cmluZ1tdLFxuICB2YWx1ZTogYW55LFxuICB2YWx1ZUluZGV4PzogbnVtYmVyXG4pOiBNZXJnZTxTZXRGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUixcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZSxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgcHJvcDogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICB2YWx1ZUluZGV4PzogbnVtYmVyO1xufTtcbi8qKlxuICogU2FtZSBhcyBVcGRhdGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC1gaWR4YCBvZiBmaWx0ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgZmlsdGVyLCBlLGcsIGBkYXRhSWRgLCBgbmFtZWAsIGB2YWx1ZWBcbiAqIEBwYXJhbSB2YWx1ZSAtIG5ldyB2YWx1ZVxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBkYXRhSWQgaW5kZXhcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZShcbiAgaWR4OiBudW1iZXIsXG4gIHByb3A6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJfQU5JTUFUSU9OX1RJTUV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FLFxuICAgIGlkeCxcbiAgICBwcm9wLFxuICAgIHZhbHVlLFxuICAgIHZhbHVlSW5kZXhcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYW5pbWF0aW9uV2luZG93OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBTYW1lIGFzIFVwZGF0ZSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvbldpbmRvdyh7XG4gIGlkLFxuICBhbmltYXRpb25XaW5kb3dcbn06IFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24pOiBNZXJnZTxcbiAgU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9XSU5ET1d9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9XSU5ET1csXG4gICAgaWQsXG4gICAgYW5pbWF0aW9uV2luZG93XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZEZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbDtcbiAgaWQ/OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBBZGQgYSBuZXcgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gZGF0YXNldCBgaWRgIHRoaXMgbmV3IGZpbHRlciBpcyBhc3NvY2lhdGVkIHdpdGhcbiAqIEBwYXJhbSBpZCAtIGBpZGAgZm9yIHRoZSBuZXcgZmlsdGVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpbHRlcihcbiAgZGF0YUlkOiBzdHJpbmcgfCBudWxsLFxuICBpZD86IHN0cmluZ1xuKTogTWVyZ2U8QWRkRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BRERfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9GSUxURVIsXG4gICAgZGF0YUlkLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU9yVXBkYXRlRmlsdGVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmaWVsZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB2YWx1ZT86IGFueTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIG9yIHVwZGF0ZXMgYSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgLSBkYXRhc2V0IGBpZGAgdGhpcyBuZXcgZmlsdGVyIGlzIGFzc29jaWF0ZWQgd2l0aFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPclVwZGF0ZUZpbHRlcihcbiAgaWQ/OiBzdHJpbmcsXG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdLFxuICBmaWVsZD86IHN0cmluZyB8IHN0cmluZ1tdLFxuICB2YWx1ZT86IGFueVxuKTogTWVyZ2U8Q3JlYXRlT3JVcGRhdGVGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNSRUFURV9PUl9VUERBVEVfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkNSRUFURV9PUl9VUERBVEVfRklMVEVSLFxuICAgIGlkLFxuICAgIGRhdGFJZCxcbiAgICBmaWVsZCxcbiAgICB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBZGRMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZz86IG9iamVjdDtcbiAgZGF0YXNldElkPzogc3RyaW5nO1xufTtcbi8qKlxuICogQWRkIGEgbmV3IGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGxheWVyIGNvbmZpZ1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWQgdXNlZCBmb3IgY3JlYXRpbmcgYW4gZW1wdHkgbGF5ZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXIoXG4gIGNvbmZpZz86IG9iamVjdCxcbiAgZGF0YXNldElkPzogc3RyaW5nXG4pOiBNZXJnZTxBZGRMYXllclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQUREX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9MQVlFUixcbiAgICBjb25maWcsXG4gICAgZGF0YXNldElkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlb3JkZXJMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9yZGVyOiBzdHJpbmdbXTtcbn07XG4vKipcbiAqIFJlb3JkZXIgbGF5ZXIsIG9yZGVyIGlzIGFuIGFycmF5IG9mIGxheWVyIGluZGV4ZXMsIGluZGV4IDAgd2lsbCBiZSB0aGUgb25lIGF0IHRoZSBib3R0b21cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBvcmRlciBhbiBhcnJheSBvZiBsYXllciBpbmRleGVzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogYnJpbmcgYGxheWVyc1sxXWAgYmVsb3cgYGxheWVyc1swXWAsIHRoZSBzZXF1ZW5jZSBsYXllcnMgd2lsbCBiZSByZW5kZXJlZCBpcyBgbGF5ZXJzWzFdLmlkYCwgYGxheWVyc1swXS5pZGAsIGBsYXllcnNbMl0uaWRgLCBgbGF5ZXJzWzNdLmlkYC5cbiAqIGBsYXllcnNbMV1gIHdpbGwgYmUgYXQgdGhlIGJvdHRvbSwgYGxheWVyc1sxM11gIHdpbGwgYmUgYXQgdGhlIHRvcC5cbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2gocmVvcmRlckxheWVyKFtgbGF5ZXJzWzFdLmlkYCwgYGxheWVyc1swXS5pZGAsIGBsYXllcnNbMl0uaWRgLCBgbGF5ZXJzWzNdLmlkYF0pKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlb3JkZXJMYXllcihcbiAgb3JkZXI6IHN0cmluZ1tdXG4pOiBNZXJnZTxSZW9yZGVyTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlJFT1JERVJfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVPUkRFUl9MQVlFUixcbiAgICBvcmRlclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbn07XG4vKipcbiAqIFJlbW92ZSBhIGZpbHRlciBmcm9tIGB2aXNTdGF0ZS5maWx0ZXJzYCwgb25jZSBhIGZpbHRlciBpcyByZW1vdmVkLCBkYXRhIHdpbGwgYmUgcmUtZmlsdGVyZWQgYW5kIGxheWVyIHdpbGwgYmUgdXBkYXRlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCBpZHggb2YgZmlsdGVyIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyKFxuICBpZHg6IG51bWJlclxuKTogTWVyZ2U8UmVtb3ZlRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9GSUxURVIsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWR4IG9mIGxheWVyIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGF5ZXIoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPFJlbW92ZUxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVNT1ZFX0xBWUVSLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIER1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG4vKipcbiAqIER1cGxpY2F0ZSBhIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWQgb2YgbGF5ZXIgdG8gYmUgZHVwbGljYXRlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXBsaWNhdGVMYXllcihcbiAgaWQ6IHN0cmluZ1xuKTogTWVyZ2U8RHVwbGljYXRlTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkRVUExJQ0FURV9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5EVVBMSUNBVEVfTEFZRVIsXG4gICAgaWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkRWZmZWN0VXBkYXRlckFjdGlvbiA9IHtcbiAgY29uZmlnOiBFZmZlY3RQcm9wc1BhcnRpYWw7XG59O1xuXG4vKipcbiAqIEFkZCBhIG5ldyBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBjb25maWcgLSBuZXcgZWZmZWN0IGNvbmZpZ1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRFZmZlY3QoXG4gIGNvbmZpZzogRWZmZWN0UHJvcHNQYXJ0aWFsXG4pOiBNZXJnZTxBZGRFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9FRkZFQ1R9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQUREX0VGRkVDVCxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVvcmRlckVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9yZGVyOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogUmVvcmRlciBlZmZlY3RzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb3JkZXIgYW4gYXJyYXkgb2YgZWZmZWN0IGlkc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyRWZmZWN0KFxuICBvcmRlcjogc3RyaW5nW11cbik6IE1lcmdlPFJlb3JkZXJFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlJFT1JERVJfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFT1JERVJfRUZGRUNULFxuICAgIG9yZGVyXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCBpZHggb2YgdGhlIGVmZmVjdCB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVmZmVjdChcbiAgaWQ6IHN0cmluZ1xuKTogTWVyZ2U8UmVtb3ZlRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9FRkZFQ1QsXG4gICAgaWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRWZmZWN0VXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcHM6IEVmZmVjdFByb3BzUGFydGlhbDtcbn07XG5cbi8qKlxuICogVXBkYXRlIGFuIGVmZmVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHByb3BzIGlkeCBvZiB0aGUgZWZmZWN0IHRvIGJlIHVwZGF0ZWQgd2l0aCBzcGVjaWZpZWQgcHJvcHNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRWZmZWN0KFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogRWZmZWN0UHJvcHNQYXJ0aWFsXG4pOiBNZXJnZTxVcGRhdGVFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9FRkZFQ1R9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0VGRkVDVCxcbiAgICBpZCxcbiAgICBwcm9wc1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBkYXRhc2V0IGFuZCBhbGwgbGF5ZXJzLCBmaWx0ZXJzLCB0b29sdGlwIGNvbmZpZ3MgdGhhdCBiYXNlZCBvbiBpdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBNZXJnZTxSZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfREFUQVNFVCxcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xufTtcbi8qKlxuICogRGlzcGxheSBkYXRhc2V0IHRhYmxlIGluIGEgbW9kYWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBpZCB0byBzaG93IGluIHRhYmxlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3dEYXRhc2V0VGFibGUoXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBNZXJnZTxTaG93RGF0YXNldFRhYmxlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TSE9XX0RBVEFTRVRfVEFCTEV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0hPV19EQVRBU0VUX1RBQkxFLFxuICAgIGRhdGFJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgbmV3Q29sb3I6IFJHQkNvbG9yO1xufTtcbi8qKlxuICogVXBkYXRlIGRhdGFzZXQgY29sb3IgdG8gY3VzdG9tIGJ5IG1lYW5zIG9mIGNvbG9yIHBpY2tlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCBkYXRhc2V0IGBpZGAgdGhpcyBjdXN0b20gY29sb3IgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKiBAcGFyYW0gbmV3Q29sb3IgY3VzdG9tIGNvbG9yIGluIFJHQmZvcm1hdFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVUYWJsZUNvbG9yKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgbmV3Q29sb3I6IFJHQkNvbG9yXG4pOiBNZXJnZTxVcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9UQUJMRV9DT0xPUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfVEFCTEVfQ09MT1IsXG4gICAgZGF0YUlkLFxuICAgIG5ld0NvbG9yXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xuICBjb2x1bW46IHN0cmluZztcbiAgbW9kZT86IHN0cmluZztcbn07XG4vKipcbiAqIFNvcnQgZGF0YXNldCBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcGFyYW0gbW9kZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VGFibGVDb2x1bW4oXG4gIGRhdGFJZDogc3RyaW5nLFxuICBjb2x1bW46IHN0cmluZyxcbiAgbW9kZT86IHN0cmluZ1xuKTogTWVyZ2U8U29ydFRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TT1JUX1RBQkxFX0NPTFVNTn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TT1JUX1RBQkxFX0NPTFVNTixcbiAgICBkYXRhSWQsXG4gICAgY29sdW1uLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUGluVGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBQaW4gZGF0YXNldCBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpblRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmdcbik6IE1lcmdlPFBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5QSU5fVEFCTEVfQ09MVU1OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlBJTl9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtblxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDb3B5VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBDb3B5IGNvbHVtbiwgZm9yIHRhYmxlIGRpc3BsYXlcbiAqIEBwYXJhbSBkYXRhSWRcbiAqIEBwYXJhbSBjb2x1bW5cbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmdcbik6IE1lcmdlPENvcHlUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQ09QWV9UQUJMRV9DT0xVTU59PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQ09QWV9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtblxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRDb2x1bW5EaXNwbGF5Rm9ybWF0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGZvcm1hdHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFNldCBjb2x1bW4gZGlzcGxheSBmb3JtYXRcbiAqIEBwYXJhbSBkYXRhSWRcbiAqIEBwYXJhbSBmb3JtYXRzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbHVtbkRpc3BsYXlGb3JtYXQoXG4gIGRhdGFJZDogU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb25bJ2RhdGFJZCddLFxuICBmb3JtYXRzOiBTZXRDb2x1bW5EaXNwbGF5Rm9ybWF0VXBkYXRlckFjdGlvblsnZm9ybWF0cyddXG4pOiBNZXJnZTxcbiAgU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DT0xVTU5fRElTUExBWV9GT1JNQVQsXG4gICAgZGF0YUlkLFxuICAgIGZvcm1hdHNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkRGF0YVRvTWFwVXBkYXRlck9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcD86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZVZpc0RhdGFVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhc2V0czogQWRkRGF0YVRvTWFwUGF5bG9hZFsnZGF0YXNldHMnXTtcbiAgb3B0aW9uczogQWRkRGF0YVRvTWFwUGF5bG9hZFsnb3B0aW9ucyddO1xuICBjb25maWc/OiBQYXJzZWRDb25maWc7XG59O1xuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmxhYmVsIC0gQSBkaXNwbGF5IG5hbWUgb2YgdGhpcyBkYXRhc2V0XG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuLy8gKiBAcGFyYW0gZGF0YXNldC5kYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4vKipcbiAqIEFkZCBuZXcgZGF0YXNldCB0byBgdmlzU3RhdGVgLCB3aXRoIG9wdGlvbiB0byBsb2FkIGEgbWFwIGNvbmZpZyBhbG9uZyB3aXRoIHRoZSBkYXRhc2V0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnMuY2VudGVyTWFwIGBkZWZhdWx0OiB0cnVlYCBpZiBgY2VudGVyTWFwYCBpcyBzZXQgdG8gYHRydWVgIGtlcGxlci5nbCB3aWxsXG4gKiBwbGFjZSB0aGUgbWFwIHZpZXcgd2l0aGluIHRoZSBkYXRhIHBvaW50cyBib3VuZGFyaWVzXG4gKiBAcGFyYW0gb3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIGNvbmZpZyB0aGlzIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwga2VwbGVyLmdsIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24ge21hcFN0YXRlLCBtYXBTdHlsZSwgdmlzU3RhdGV9XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc0RhdGEoXG4gIGRhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddLFxuICBvcHRpb25zOiBBZGREYXRhVG9NYXBQYXlsb2FkWydvcHRpb25zJ10sXG4gIGNvbmZpZz86IFBhcnNlZENvbmZpZ1xuKTogTWVyZ2U8VXBkYXRlVmlzRGF0YVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX1ZJU19EQVRBfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9WSVNfREFUQSxcbiAgICBkYXRhc2V0cyxcbiAgICBvcHRpb25zLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gKioqcmVxdWlyZWQqKiBJZCBvZiB0aGUgZGF0YXNldCB0byB1cGRhdGVcbiAqIEBwYXJhbSBsYWJlbCAtICoqKnJlcXVpcmVkKiogTmV3IG5hbWUgZm9yIHRoZSBkYXRhc2V0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nXG4pOiBNZXJnZTxSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldFByb3BzVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIHByb3BzOiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xufTtcbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIGRhdGFzZXQgcHJvcHMgaW4gYHZpc1N0YXRlYFxuICogQHBhcmFtIGRhdGFJZCAtICoqKnJlcXVpcmVkKiogSWQgb2YgdGhlIGRhdGFzZXQgdG8gdXBkYXRlXG4gKiBAcGFyYW0gcHJvcHMgLSAqKipyZXF1aXJlZCoqIE5ldyBwcm9wcyB0byB1cGRhdGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRGF0YXNldFByb3BzKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgcHJvcHM6IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cbik6IE1lcmdlPFVwZGF0ZURhdGFzZXRQcm9wc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFN9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFMsXG4gICAgZGF0YUlkLFxuICAgIHByb3BzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xufTtcbi8qKlxuICogU3RhcnQgYW5kIGVuZCBmaWx0ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaWR4IG9mIGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJBbmltYXRpb24oXG4gIGlkeDogbnVtYmVyXG4pOiBNZXJnZTxUb2dnbGVGaWx0ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogQ2hhbmdlIGZpbHRlciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSAgYGlkeGAgb2YgZmlsdGVyXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQoXG4gIGlkeDogbnVtYmVyLFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9GSUxURVJfQU5JTUFUSU9OX1NQRUVEfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgaWR4LFxuICAgIHNwZWVkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEFuaW1hdGlvbkNvbmZpZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZzogQW5pbWF0aW9uQ29uZmlnIHwgRmlsdGVyQW5pbWF0aW9uQ29uZmlnO1xufTtcbi8qKlxuICogU2V0IGFuaW1hdGlvbiBjb25maWc6IHdvcmtzIHdpdGggYm90aCBsYXllciBhbmltYXRpb24gYW5kIGZpbHRlciBhbmltYXRpb25cbiAqIEBwYXJhbSBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5pbWF0aW9uQ29uZmlnKFxuICBjb25maWc6IEFuaW1hdGlvbkNvbmZpZyB8IEZpbHRlckFuaW1hdGlvbkNvbmZpZ1xuKTogTWVyZ2U8U2V0QW5pbWF0aW9uQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfQU5JTUFUSU9OX0NPTkZJR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfQU5JTUFUSU9OX0NPTkZJRyxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiA9IHtcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG59O1xuLyoqXG4gKiBSZXNldCBhbmltYXRpb25cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB2YWx1ZSAtICBDdXJyZW50IHZhbHVlIG9mIHRoZSBzbGlkZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TGF5ZXJBbmltYXRpb25UaW1lKFxuICB2YWx1ZTogbnVtYmVyXG4pOiBNZXJnZTxTZXRMYXllckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9MQVlFUl9BTklNQVRJT05fVElNRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUUsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHNwZWVkOiBudW1iZXI7XG59O1xuLyoqXG4gKiB1cGRhdGUgdHJpcCBsYXllciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBzcGVlZCAtIGBzcGVlZGAgdG8gY2hhbmdlIGl0IHRvLiBgc3BlZWRgIGlzIGEgbXVsdGlwbGllclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXllckFuaW1hdGlvblNwZWVkKFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0xBWUVSX0FOSU1BVElPTl9TUEVFRH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgc3BlZWRcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIFRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIHN0YXJ0IGVuZCBlbmQgbGF5ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyQW5pbWF0aW9uKCk6IE1lcmdlPFxuICBUb2dnbGVMYXllckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0FOSU1BVElPTn1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIGhpZGUgYW5kIHNob3cgbGF5ZXIgYW5pbWF0aW9uIGNvbnRyb2xcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sKCk6IE1lcmdlPFxuICBUb2dnbGVMYXllckFuaW1hdGlvbkNvbnRyb2xVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJWaWV3VXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIHZpZXc6IEZpbHRlclsndmlldyddO1xufTtcbi8qKlxuICogU2hvdyBsYXJnZXIgdGltZSBmaWx0ZXIgYXQgYm90dG9tIGZvciB0aW1lIHBsYXliYWNrIChhcHBseSB0byB0aW1lIGZpbHRlciBvbmx5KVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCAtIGluZGV4IG9mIGZpbHRlciB0byBlbmxhcmdlXG4gKiBAcGFyYW0gdmlldyAtIHR5cGUgb2YgZmlsdGVyIHZpZXdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyVmlldyhcbiAgaWR4OiBudW1iZXIsXG4gIHZpZXc6IEZpbHRlclsndmlldyddXG4pOiBNZXJnZTxTZXRGaWx0ZXJWaWV3VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX1ZJRVd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9WSUVXLFxuICAgIGlkeCxcbiAgICB2aWV3XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbn07XG4vKipcbiAqIFNob3cvaGlkZSBmaWx0ZXIgZmVhdHVyZSBvbiBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSBpbmRleCBvZiBmaWx0ZXIgZmVhdHVyZSB0byBzaG93L2hpZGVcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJGZWF0dXJlKFxuICBpZHg6IG51bWJlclxuKTogTWVyZ2U8VG9nZ2xlRmlsdGVyRmVhdHVyZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0ZJTFRFUl9GRUFUVVJFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfRkVBVFVSRSxcbiAgICBpZHhcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25MYXllckhvdmVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaW5mbzogUGlja0luZm88YW55PiB8IG51bGw7XG4gIG1hcEluZGV4PzogbnVtYmVyO1xufTtcbi8qKlxuICogVHJpZ2dlciBsYXllciBob3ZlciBldmVudCB3aXRoIGhvdmVyZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mbyAtIE9iamVjdCBob3ZlcmVkLCByZXR1cm5lZCBieSBkZWNrLmdsLlxuICogQHBhcmFtIG1hcEluZGV4IC0gT3B0aW9uYWwgcHJvcGVydHkgZm9yIGxpbWl0aW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBgPE1hcFBvcG92ZXI+YCB0byB0aGUgYDxNYXBDb250YWluZXI+YCB0aGUgdXNlciBpcyBpbnRlcmFjdGluZyB3aXRoLlxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkxheWVySG92ZXIoXG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsLFxuICBtYXBJbmRleD86IG51bWJlclxuKTogTWVyZ2U8T25MYXllckhvdmVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9IT1ZFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9IT1ZFUixcbiAgICBpbmZvLFxuICAgIG1hcEluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTGF5ZXJDbGlja1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsO1xufTtcbi8qKlxuICogVHJpZ2dlciBsYXllciBjbGljayBldmVudCB3aXRoIGNsaWNrZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mbyAtIE9iamVjdCBjbGlja2VkLCByZXR1cm5lZCBieSBkZWNrLmdsXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uTGF5ZXJDbGljayhcbiAgaW5mbzogUGlja0luZm88YW55PiB8IG51bGxcbik6IE1lcmdlPE9uTGF5ZXJDbGlja1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfQ0xJQ0t9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfQ0xJQ0ssXG4gICAgaW5mb1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBPbk1hcENsaWNrVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIFRyaWdnZXIgbWFwIGNsaWNrIGV2ZW50LCB1bnNlbGVjdCBjbGlja2VkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbk1hcENsaWNrKCk6IE1lcmdlPE9uTWFwQ2xpY2tVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLk1BUF9DTElDS30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5NQVBfQ0xJQ0tcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25Nb3VzZU1vdmVVcGRhdGVyQWN0aW9uID0ge1xuICBldnQ7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIG1hcCBtb3VzZSBtb3ZlZXZlbnQsIHBheWxvYWQgd291bGQgYmVcbiAqIFJlYWN0LW1hcC1nbCBNYXBMYXllck1vdXNlRXZlbnRcbiAqIGh0dHBzOi8vdmlzZ2wuZ2l0aHViLmlvL3JlYWN0LW1hcC1nbC9kb2NzL2FwaS1yZWZlcmVuY2UvdHlwZXMjbWFwbGF5ZXJtb3VzZWV2ZW50XG4gKlxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGV2dCAtIE1hcExheWVyTW91c2VFdmVudFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbk1vdXNlTW92ZShcbiAgZXZ0XG4pOiBNZXJnZTxPbk1vdXNlTW92ZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTU9VU0VfTU9WRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5NT1VTRV9NT1ZFLFxuICAgIGV2dFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllckZvck1hcFVwZGF0ZXJBY3Rpb24gPSB7XG4gIG1hcEluZGV4OiBudW1iZXI7XG4gIGxheWVySWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9mIGEgbGF5ZXIgaW4gYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtYXBJbmRleCAtIGluZGV4IG9mIHRoZSBzcGxpdCBtYXBcbiAqIEBwYXJhbSBsYXllcklkIC0gaWQgb2YgdGhlIGxheWVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyRm9yTWFwKFxuICBtYXBJbmRleDogbnVtYmVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IE1lcmdlPFRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfRk9SX01BUH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfRk9SX01BUCxcbiAgICBtYXBJbmRleCxcbiAgICBsYXllcklkXG4gIH07XG59XG5cbnR5cGUgRmlsdGVyUGxvdE5ld1Byb3AgPSB7XG4gIHlBeGlzPzogbnVsbCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHBsb3RUeXBlPzoge3R5cGU6IHN0cmluZ307XG59O1xuZXhwb3J0IHR5cGUgU2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBuZXdQcm9wOiBGaWx0ZXJQbG90TmV3UHJvcDtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFNldCB0aGUgcHJvcGVydHkgb2YgYSBmaWx0ZXIgcGxvdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeFxuICogQHBhcmFtIG5ld1Byb3Aga2V5IHZhbHVlIG1hcHBpbmcgb2YgbmV3IHByb3AgYHt5QXhpczogJ2hpc3RvZ3JhbSd9YFxuICogQHBhcmFtIHZhbHVlSW5kZXggZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlclBsb3QoXG4gIGlkeDogbnVtYmVyLFxuICBuZXdQcm9wOiBGaWx0ZXJQbG90TmV3UHJvcCxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8U2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9QTE9UfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVJfUExPVCxcbiAgICBpZHgsXG4gICAgbmV3UHJvcCxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldE1hcEluZm9VcGRhdGVyQWN0aW9uID0ge1xuICBpbmZvOiBhbnk7XG59O1xuLyoqXG4gKiBTZXQgdGhlIHByb3BlcnR5IG9mIGEgZmlsdGVyIHBsb3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpbmZvXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE1hcEluZm8oXG4gIGluZm86IGFueVxuKTogTWVyZ2U8U2V0TWFwSW5mb1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX01BUF9JTkZPfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9NQVBfSU5GTyxcbiAgICBpbmZvXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlc1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGZpbGVzOiBGaWxlW107XG4gIG9uRmluaXNoPyhyZXN1bHQ6IGFueSk6IGFueTtcbn07XG4vKipcbiAqIFRyaWdnZXIgZmlsZSBsb2FkaW5nIGRpc3BhdGNoIGBhZGREYXRhVG9NYXBgIGlmIHN1Y2NlZWQsIG9yIGBsb2FkRmlsZXNFcnJgIGlmIGZhaWxlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZpbGVzIGFycmF5IG9mIGZpbGVibG9iXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhcbiAgZmlsZXM6IEZpbGVbXSxcbiAgb25GaW5pc2g/OiAocmVzdWx0OiBhbnkpID0+IGFueVxuKTogTWVyZ2U8TG9hZEZpbGVzVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRVMsXG4gICAgZmlsZXMsXG4gICAgb25GaW5pc2hcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxsZWQgd2l0aCBuZXh0IGZpbGUgdG8gbG9hZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkTmV4dEZpbGUoKToge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX05FWFRfRklMRX0ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfTkVYVF9GSUxFXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uID0ge1xuICByZXN1bHQ6IEZpbGVDYWNoZUl0ZW1bXTtcbn07XG4vKipcbiAqIGNhbGxlZCB3aGVuIGFsbCBmaWxlcyBhcmUgcHJvY2Vzc2VkIGFuZCBsb2FkZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSByZXN1bHRcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVzU3VjY2VzcyhcbiAgcmVzdWx0OiBGaWxlQ2FjaGVJdGVtW11cbik6IE1lcmdlPGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxPQURfRklMRVNfU1VDQ0VTU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX1NVQ0NFU1MsXG4gICAgcmVzdWx0XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlU3RlcFN1Y2Nlc3NBY3Rpb24gPSB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufTtcbi8qKlxuICogY2FsbGVkIHdoZW4gc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmUgZmlsZSwgcmVhZHkgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBvbmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSByZXN1bHRcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVTdGVwU3VjY2Vzcyh7XG4gIGZpbGVOYW1lLFxuICBmaWxlQ2FjaGVcbn06IHtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG59KTogTWVyZ2U8TG9hZEZpbGVTdGVwU3VjY2Vzc0FjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVfU1RFUF9TVUNDRVNTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRV9TVEVQX1NVQ0NFU1MsXG4gICAgZmlsZU5hbWUsXG4gICAgZmlsZUNhY2hlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGVycm9yOiBhbnk7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIGxvYWRpbmcgZmlsZSBlcnJvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtICBlcnJvclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlc0VycihcbiAgZmlsZU5hbWU6IHN0cmluZyxcbiAgZXJyb3I6IGFueVxuKTogTWVyZ2U8TG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX0VSUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX0VSUixcbiAgICBmaWxlTmFtZSxcbiAgICBlcnJvclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGZlYXR1cmVzOiBGZWF0dXJlW107XG59O1xuLyoqXG4gKiBTdG9yZSBmZWF0dXJlcyB0byBzdGF0ZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZlYXR1cmVzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZlYXR1cmVzKFxuICBmZWF0dXJlczogRmVhdHVyZVtdXG4pOiBNZXJnZTxTZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZFQVRVUkVTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GRUFUVVJFUyxcbiAgICBmZWF0dXJlc1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRQb2x5Z29uRmlsdGVyTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIGZlYXR1cmU6IEZlYXR1cmU7XG59O1xuLyoqXG4gKiBJdCB3aWxsIGFwcGx5IHRoZSBwcm92aWRlIGZlYXR1cmUgYXMgZmlsdGVyIHRvIHRoZSBnaXZlbiBsYXllci5cbiAqIElmIHRoZSBnaXZlbiBmZWF0dXJlIGlzIGFscmVhZHkgYXBwbGllZCBhcyBmaWx0ZXIgdG8gdGhlIGxheWVyLCBpdCB3aWxsIHJlbW92ZSB0aGUgbGF5ZXIgZnJvbSB0aGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbGF5ZXJcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFBvbHlnb25GaWx0ZXJMYXllcihcbiAgbGF5ZXI6IExheWVyLFxuICBmZWF0dXJlOiBGZWF0dXJlXG4pOiBNZXJnZTxTZXRQb2x5Z29uRmlsdGVyTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9QT0xZR09OX0ZJTFRFUl9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfUE9MWUdPTl9GSUxURVJfTEFZRVIsXG4gICAgbGF5ZXIsXG4gICAgZmVhdHVyZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRTZWxlY3RlZEZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlOiBGZWF0dXJlIHwgbnVsbDtcbiAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0O1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIGN1cnJlbnQgZmVhdHVyZSB0byBiZSBlZGl0ZWQvZGVsZXRlZCxcbiAqIGFuZCB0aGUgY29udGV4dCBvZiBob3cgdGhlIGZlYXR1cmUgd2FzIHNlbGVjdGVkLlxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBzZWxlY3Rpb25Db250ZXh0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGVkRmVhdHVyZShcbiAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGwsXG4gIHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dFxuKTogTWVyZ2U8U2V0U2VsZWN0ZWRGZWF0dXJlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfRkVBVFVSRSxcbiAgICBmZWF0dXJlLFxuICAgIHNlbGVjdGlvbkNvbnRleHRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGVsZXRlRmVhdHVyZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGZlYXR1cmU6IEZlYXR1cmU7XG59O1xuLyoqXG4gKiBEZWxldGUgdGhlIGdpdmVuIGZlYXR1cmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZlYXR1cmUoXG4gIGZlYXR1cmU6IEZlYXR1cmVcbik6IE1lcmdlPERlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkRFTEVURV9GRUFUVVJFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkRFTEVURV9GRUFUVVJFLFxuICAgIGZlYXR1cmVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RWRpdG9yTW9kZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG1vZGU6IHN0cmluZztcbn07XG4vKiogU2V0IHRoZSBtYXAgbW9kZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG1vZGUgb25lIG9mIEVESVRPUl9NT0RFU1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHtzZXRNYXBNb2RlfSBmcm9tICdrZXBsZXIuZ2wvYWN0aW9ucyc7XG4gKiBpbXBvcnQge0VESVRPUl9NT0RFU30gZnJvbSAna2VwbGVyLmdsL2NvbnN0YW50cyc7XG4gKlxuICogdGhpcy5wcm9wcy5kaXNwYXRjaChzZXRNYXBNb2RlKEVESVRPUl9NT0RFUy5EUkFXX1BPTFlHT04pKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVkaXRvck1vZGUoXG4gIG1vZGU6IHN0cmluZ1xuKTogTWVyZ2U8U2V0RWRpdG9yTW9kZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0VESVRPUl9NT0RFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9FRElUT1JfTU9ERSxcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFwcGx5Q1BVRmlsdGVyVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn07XG4vKipcbiAqIFRyaWdnZXIgQ1BVIGZpbHRlciBvZiBzZWxlY3RlZCBkYXRhc2V0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gc2luZ2xlIGRhdGFJZCBvciBhbiBhcnJheSBvZiBkYXRhSWRzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Q1BVRmlsdGVyKFxuICBkYXRhSWQ6IHN0cmluZyB8IHN0cmluZ1tdXG4pOiBNZXJnZTxBcHBseUNQVUZpbHRlclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQVBQTFlfQ1BVX0ZJTFRFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BUFBMWV9DUFVfRklMVEVSLFxuICAgIGRhdGFJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBUb2dnbGVFZGl0b3JWaXNpYmlsaXR5VXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIFRvZ2dsZSBlZGl0b3IgbGF5ZXIgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUVkaXRvclZpc2liaWxpdHkoKTogTWVyZ2U8XG4gIFRvZ2dsZUVkaXRvclZpc2liaWxpdHlVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9FRElUT1JfVklTSUJJTElUWX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9FRElUT1JfVklTSUJJTElUWVxuICB9O1xufVxuXG50eXBlIEZpbGVDb250ZW50ID0ge1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBoZWFkZXI6IHN0cmluZ1tdO1xuICBkYXRhOiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgTmV4dEZpbGVCYXRjaFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHBheWxvYWQ6IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuICAgIGdlbjogQXN5bmNHZW5lcmF0b3I8RmlsZUNvbnRlbnQ+O1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gICAgcHJvZ3Jlc3M/OiBhbnk7XG4gICAgYWNjdW11bGF0ZWQ/OiBhbnk7XG4gICAgb25GaW5pc2g6IChyZXN1bHQ6IGFueSkgPT4gYW55O1xuICB9O1xufTtcbi8qKlxuICogUHJvY2VzcyB0aGUgbmV4dCBmaWxlIGJhdGNoXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcGF5bG9hZCAtIGJhdGNoIHBheWxvYWRcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0RmlsZUJhdGNoKFxuICBwYXlsb2FkOiBOZXh0RmlsZUJhdGNoVXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pOiBNZXJnZTxOZXh0RmlsZUJhdGNoVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5ORVhUX0ZJTEVfQkFUQ0h9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTkVYVF9GSUxFX0JBVENILFxuICAgIHBheWxvYWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0ZpbGVDb250ZW50VXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDoge1xuICAgIGNvbnRlbnQ6IEZpbGVDb250ZW50O1xuICAgIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xuICB9O1xufTtcbi8qKlxuICogUHJvY2VzcyB0aGUgZmlsZSBjb250ZW50XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gcGF5bG9hZCAtIHRoZSBmaWxlIGNvbnRlbnRcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzRmlsZUNvbnRlbnQoXG4gIHBheWxvYWQ6IFByb2Nlc3NGaWxlQ29udGVudFVwZGF0ZXJBY3Rpb25bJ3BheWxvYWQnXVxuKTogTWVyZ2U8UHJvY2Vzc0ZpbGVDb250ZW50VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5QUk9DRVNTX0ZJTEVfQ09OVEVOVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5QUk9DRVNTX0ZJTEVfQ09OVEVOVCxcbiAgICBwYXlsb2FkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvbiA9IHtcbiAgY29uZmlnOiB7XG4gICAgdGltZXpvbmU/OiBzdHJpbmc7XG4gICAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgfTtcbn07XG4vKipcbiAqIFNldCBsYXllciBhbmltYXRpb24gdGltZSBmb3JtYXQgYW5kIHRpbWV6b25lXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0ge3RpbWVGb3JtYXQ6IHN0cmluZywgdGltZXpvbmU6IHN0cmluZ31cbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRMYXllckFuaW1hdGlvblRpbWVDb25maWcoXG4gIGNvbmZpZzogU2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uWydjb25maWcnXVxuKTogTWVyZ2U8XG4gIFNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUVfQ09ORklHfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0xBWUVSX0FOSU1BVElPTl9USU1FX0NPTkZJRyxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIGNvbmZpZzoge1xuICAgIHRpbWV6b25lPzogc3RyaW5nO1xuICAgIHRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIH07XG59O1xuLyoqXG4gKiBTZXQgRmlsdGVyIGFuaW1hdGlvbiB0aW1lIGZvcm1hdCBhbmQgdGltZXpvbmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHhcbiAqIEBwYXJhbSBjb25maWdcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnKFxuICBpZHg6IFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb25bJ2lkeCddLFxuICBjb25maWc6IFNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb25bJ2NvbmZpZyddXG4pOiBNZXJnZTxcbiAgU2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FX0NPTkZJR31cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVJfQU5JTUFUSU9OX1RJTUVfQ09ORklHLFxuICAgIGlkeCxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlQWN0aW9uID0ge1xuICBldmVudDoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY291bnQ6IG51bWJlcjtcbiAgfTtcbiAgbGF5ZXI6IExheWVyO1xufTtcblxuLyoqXG4gKiBkZWNrLmdsIGxheWVyIGdwdSBmaWx0ZXIgY2FsbGJhY2tcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBsYXllclxuICogQHBhcmFtIGV2ZW50XG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlKFxuICBsYXllcjogTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlQWN0aW9uWydsYXllciddLFxuICBldmVudDogTGF5ZXJGaWx0ZXJlZEl0ZW1zQ2hhbmdlQWN0aW9uWydldmVudCddXG4pOiBNZXJnZTxMYXllckZpbHRlcmVkSXRlbXNDaGFuZ2VBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfRklMVEVSRURfSVRFTVNfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0ZJTFRFUkVEX0lURU1TX0NIQU5HRSxcbiAgICBsYXllcixcbiAgICBldmVudFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgZW5hYmxlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmUoXG4gIGlkeDogU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvblsnaWR4J10sXG4gIGVuYWJsZTogU3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZUFjdGlvblsnZW5hYmxlJ11cbik6IE1lcmdlPFxuICBTeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNZTkNfVElNRV9GSUxURVJfV0lUSF9MQVlFUl9USU1FTElORX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNZTkNfVElNRV9GSUxURVJfV0lUSF9MQVlFUl9USU1FTElORSxcbiAgICBpZHgsXG4gICAgZW5hYmxlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlQWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBtb2RlOiBTeW5jVGltZWxpbmVNb2RlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlKHtcbiAgaWQsXG4gIG1vZGVcbn06IHNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlQWN0aW9uKTogTWVyZ2U8XG4gIHNldFRpbWVGaWx0ZXJTeW5jVGltZWxpbmVNb2RlQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNZTkNfVElNRV9GSUxURVJfVElNRUxJTkVfTU9ERX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNZTkNfVElNRV9GSUxURVJfVElNRUxJTkVfTU9ERSxcbiAgICBpZCxcbiAgICBtb2RlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU5ld0RhdGFzZXRTdWNjZXNzUGF5bG9hZCA9IHtcbiAgcmVzdWx0czogKFByb21pc2VGdWxmaWxsZWRSZXN1bHQ8S2VwbGVyVGFibGU+IHwgUHJvbWlzZVJlamVjdGVkUmVzdWx0KVtdO1xuICBhZGRUb01hcE9wdGlvbnM6IEFkZERhdGFUb01hcFBheWxvYWRbJ29wdGlvbnMnXTtcbn07XG5cbi8qKlxuICogQ2FsbGVkIHdoZW4gYSBuZXcgZGF0YXNldCBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSB2aWEgYXN5bmMgdGFibGUgbWV0aG9kc1xuICogQHBhcmFtIHBheWxvYWRcbiAqIEBwYXJhbSBwYXlsb2FkLnJlc3VsdHMgLSByZXN1bHRzIG9mIHByb21pc2VzLmFsbFNldHRsdGVkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb248Q3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3NQYXlsb2FkPihcbiAgQWN0aW9uVHlwZXMuQ1JFQVRFX05FV19EQVRBU0VUX1NVQ0NFU1Ncbik7XG5cbi8qKlxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgdG8gZ3JvdXAgYWN0aW9ucyBpbiBkb2NzXG4gKi9cbi8qKlxuICogQWN0aW9ucyBoYW5kbGVkIG1vc3RseSBieSBgdmlzU3RhdGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSBob3cgZGF0YSBpcyBwcm9jZXNzZWQsIGZpbHRlcmVkIGFuZCBkaXNwbGF5ZWQgb24gdGhlIG1hcCBieSBvcGVyYXRlcyBvbiBsYXllcnMsXG4gKiBmaWx0ZXJzIGFuZCBpbnRlcmFjdGlvbiBzZXR0aW5ncy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdmlzU3RhdGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUF1QkEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBNUJBO0FBQ0E7O0FBRUE7O0FBMkJBO0FBQ0E7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZ0JBQWdCQSxDQUM5QkMsVUFBa0IsRUFDbEJDLGNBQTJCLEVBQzNCQyxVQUFtQixFQUNrRTtFQUNyRixPQUFPO0lBQ0xDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ0Msa0JBQWtCO0lBQ3BDTCxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLFVBQVUsRUFBVkE7RUFDRixDQUFDO0FBQ0g7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLGlCQUFpQkEsQ0FDL0JDLFFBQWUsRUFDZkMsU0FBbUMsRUFDb0Q7RUFDdkYsT0FBTztJQUNMTCxJQUFJLEVBQUVDLHVCQUFXLENBQUNLLG1CQUFtQjtJQUNyQ0YsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLFNBQVMsRUFBVEE7RUFDRixDQUFDO0FBQ0g7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UscUJBQXFCQSxDQUNuQ0MsT0FB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QUFvQjtJQUN0Q0gsT0FBTyxFQUFQQTtFQUNGLENBQUM7QUFDSDtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLDJCQUEyQkEsQ0FDekNuSixNQUFtRCxFQUluRDtFQUNBLE9BQU87SUFDTHJDLElBQUksRUFBRUMsdUJBQVcsQ0FBQ3dMLCtCQUErQjtJQUNqRHBKLE1BQU0sRUFBTkE7RUFDRixDQUFDO0FBQ0g7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNxSiw0QkFBNEJBLENBQzFDN0ssR0FBOEMsRUFDOUN3QixNQUFvRCxFQUlwRDtFQUNBLE9BQU87SUFDTHJDLElBQUksRUFBRUMsdUJBQVcsQ0FBQzBMLGdDQUFnQztJQUNsRDlLLEdBQUcsRUFBSEEsR0FBRztJQUNId0IsTUFBTSxFQUFOQTtFQUNGLENBQUM7QUFDSDtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU3VKLHdCQUF3QkEsQ0FDdEN2QixLQUE4QyxFQUM5Q3dCLEtBQThDLEVBQ2lEO0VBQy9GLE9BQU87SUFDTDdMLElBQUksRUFBRUMsdUJBQVcsQ0FBQzZMLDJCQUEyQjtJQUM3Q3pCLEtBQUssRUFBTEEsS0FBSztJQUNMd0IsS0FBSyxFQUFMQTtFQUNGLENBQUM7QUFDSDtBQU9PLFNBQVNFLCtCQUErQkEsQ0FDN0NsTCxHQUFpRCxFQUNqRG1MLE1BQXVELEVBSXZEO0VBQ0EsT0FBTztJQUNMaE0sSUFBSSxFQUFFQyx1QkFBVyxDQUFDZ00sb0NBQW9DO0lBQ3REcEwsR0FBRyxFQUFIQSxHQUFHO0lBQ0htTCxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztBQUNIO0FBT08sU0FBU0UsNkJBQTZCQSxDQUFBQyxLQUFBLEVBTTNDO0VBQUEsSUFMQWpKLEVBQUUsR0FBQWlKLEtBQUEsQ0FBRmpKLEVBQUU7SUFDRmxCLElBQUksR0FBQW1LLEtBQUEsQ0FBSm5LLElBQUk7RUFLSixPQUFPO0lBQ0xoQyxJQUFJLEVBQUVDLHVCQUFXLENBQUNtTSw4QkFBOEI7SUFDaERsSixFQUFFLEVBQUZBLEVBQUU7SUFDRmxCLElBQUksRUFBSkE7RUFDRixDQUFDO0FBQ0g7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNcUssdUJBQXVCLEdBQUFDLE9BQUEsQ0FBQUQsdUJBQUEsR0FBRyxJQUFBRSxxQkFBWSxFQUNqRHRNLHVCQUFXLENBQUN1TSwwQkFDZCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGVBQWUsR0FBRyxJQUFJO0FBQzVCIiwiaWdub3JlTGlzdCI6W119
1132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYWN0aW9uVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90b29sa2l0IiwiYXBwbHlMYXllckNvbmZpZyIsIm9sZExheWVySWQiLCJuZXdMYXllckNvbmZpZyIsImxheWVySW5kZXgiLCJ0eXBlIiwiQWN0aW9uVHlwZXMiLCJBUFBMWV9MQVlFUl9DT05GSUciLCJsYXllckNvbmZpZ0NoYW5nZSIsIm9sZExheWVyIiwibmV3Q29uZmlnIiwiTEFZRVJfQ09ORklHX0NIQU5HRSIsImxheWVyVG9nZ2xlVmlzaWJpbGl0eSIsImxheWVySWQiLCJpc1Zpc2libGUiLCJzcGxpdE1hcElkIiwiTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFkiLCJsYXllclRleHRMYWJlbENoYW5nZSIsImlkeCIsInByb3AiLCJ2YWx1ZSIsIkxBWUVSX1RFWFRfTEFCRUxfQ0hBTkdFIiwibGF5ZXJTZXRJc1ZhbGlkIiwiaXNWYWxpZCIsIkxBWUVSX1NFVF9JU19WQUxJRCIsImxheWVyVHlwZUNoYW5nZSIsIm5ld1R5cGUiLCJMQVlFUl9UWVBFX0NIQU5HRSIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsImNoYW5uZWwiLCJuZXdWaXNDb25maWciLCJMQVlFUl9WSVNVQUxfQ0hBTk5FTF9DSEFOR0UiLCJsYXllclZpc0NvbmZpZ0NoYW5nZSIsIkxBWUVSX1ZJU19DT05GSUdfQ0hBTkdFIiwibGF5ZXJDb2xvclVJQ2hhbmdlIiwiTEFZRVJfQ09MT1JfVUlfQ0hBTkdFIiwidXBkYXRlTGF5ZXJCbGVuZGluZyIsIm1vZGUiLCJVUERBVEVfTEFZRVJfQkxFTkRJTkciLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJVUERBVEVfT1ZFUkxBWV9CTEVORElORyIsImludGVyYWN0aW9uQ29uZmlnQ2hhbmdlIiwiY29uZmlnIiwiSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRSIsImFwcGx5RmlsdGVyQ29uZmlnIiwiZmlsdGVySWQiLCJuZXdGaWx0ZXIiLCJBUFBMWV9GSUxURVJfQ09ORklHIiwic2V0RmlsdGVyIiwidmFsdWVJbmRleCIsIlNFVF9GSUxURVIiLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRSIsInNldEZpbHRlckFuaW1hdGlvbldpbmRvdyIsIl9yZWYiLCJpZCIsImFuaW1hdGlvbldpbmRvdyIsIlNFVF9GSUxURVJfQU5JTUFUSU9OX1dJTkRPVyIsImFkZEZpbHRlciIsImRhdGFJZCIsIkFERF9GSUxURVIiLCJjcmVhdGVPclVwZGF0ZUZpbHRlciIsImZpZWxkIiwiQ1JFQVRFX09SX1VQREFURV9GSUxURVIiLCJhZGRMYXllciIsImRhdGFzZXRJZCIsIkFERF9MQVlFUiIsInJlb3JkZXJMYXllciIsIm9yZGVyIiwiUkVPUkRFUl9MQVlFUiIsInJlbW92ZUZpbHRlciIsIlJFTU9WRV9GSUxURVIiLCJyZW1vdmVMYXllciIsIlJFTU9WRV9MQVlFUiIsImR1cGxpY2F0ZUxheWVyIiwiRFVQTElDQVRFX0xBWUVSIiwiYWRkRWZmZWN0IiwiQUREX0VGRkVDVCIsInJlb3JkZXJFZmZlY3QiLCJSRU9SREVSX0VGRkVDVCIsInJlbW92ZUVmZmVjdCIsIlJFTU9WRV9FRkZFQ1QiLCJ1cGRhdGVFZmZlY3QiLCJwcm9wcyIsIlVQREFURV9FRkZFQ1QiLCJyZW1vdmVEYXRhc2V0IiwiUkVNT1ZFX0RBVEFTRVQiLCJzaG93RGF0YXNldFRhYmxlIiwiU0hPV19EQVRBU0VUX1RBQkxFIiwidXBkYXRlVGFibGVDb2xvciIsIm5ld0NvbG9yIiwiVVBEQVRFX1RBQkxFX0NPTE9SIiwic29ydFRhYmxlQ29sdW1uIiwiY29sdW1uIiwiU09SVF9UQUJMRV9DT0xVTU4iLCJwaW5UYWJsZUNvbHVtbiIsIlBJTl9UQUJMRV9DT0xVTU4iLCJjb3B5VGFibGVDb2x1bW4iLCJDT1BZX1RBQkxFX0NPTFVNTiIsInNldENvbHVtbkRpc3BsYXlGb3JtYXQiLCJmb3JtYXRzIiwiU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVCIsInVwZGF0ZVZpc0RhdGEiLCJkYXRhc2V0cyIsIm9wdGlvbnMiLCJVUERBVEVfVklTX0RBVEEiLCJyZW5hbWVEYXRhc2V0IiwibGFiZWwiLCJSRU5BTUVfREFUQVNFVCIsInVwZGF0ZURhdGFzZXRQcm9wcyIsIlVQREFURV9EQVRBU0VUX1BST1BTIiwidG9nZ2xlRmlsdGVyQW5pbWF0aW9uIiwiVE9HR0xFX0ZJTFRFUl9BTklNQVRJT04iLCJ1cGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZCIsInNwZWVkIiwiVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQiLCJzZXRBbmltYXRpb25Db25maWciLCJTRVRfQU5JTUFUSU9OX0NPTkZJRyIsInNldExheWVyQW5pbWF0aW9uVGltZSIsIlNFVF9MQVlFUl9BTklNQVRJT05fVElNRSIsInVwZGF0ZUxheWVyQW5pbWF0aW9uU3BlZWQiLCJVUERBVEVfTEFZRVJfQU5JTUFUSU9OX1NQRUVEIiwidG9nZ2xlTGF5ZXJBbmltYXRpb24iLCJUT0dHTEVfTEFZRVJfQU5JTUFUSU9OIiwidG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sIiwiVE9HR0xFX0xBWUVSX0FOSU1BVElPTl9DT05UUk9MIiwic2V0RmlsdGVyVmlldyIsInZpZXciLCJTRVRfRklMVEVSX1ZJRVciLCJ0b2dnbGVGaWx0ZXJGZWF0dXJlIiwiVE9HR0xFX0ZJTFRFUl9GRUFUVVJFIiwib25MYXllckhvdmVyIiwiaW5mbyIsIm1hcEluZGV4IiwiTEFZRVJfSE9WRVIiLCJvbkxheWVyQ2xpY2siLCJMQVlFUl9DTElDSyIsIm9uTWFwQ2xpY2siLCJNQVBfQ0xJQ0siLCJvbk1vdXNlTW92ZSIsImV2dCIsIk1PVVNFX01PVkUiLCJ0b2dnbGVMYXllckZvck1hcCIsIlRPR0dMRV9MQVlFUl9GT1JfTUFQIiwic2V0RmlsdGVyUGxvdCIsIm5ld1Byb3AiLCJTRVRfRklMVEVSX1BMT1QiLCJzZXRNYXBJbmZvIiwiU0VUX01BUF9JTkZPIiwibG9hZEZpbGVzIiwiZmlsZXMiLCJvbkZpbmlzaCIsIkxPQURfRklMRVMiLCJsb2FkTmV4dEZpbGUiLCJMT0FEX05FWFRfRklMRSIsImxvYWRGaWxlc1N1Y2Nlc3MiLCJyZXN1bHQiLCJMT0FEX0ZJTEVTX1NVQ0NFU1MiLCJsb2FkRmlsZVN0ZXBTdWNjZXNzIiwiX3JlZjIiLCJmaWxlTmFtZSIsImZpbGVDYWNoZSIsIkxPQURfRklMRV9TVEVQX1NVQ0NFU1MiLCJsb2FkRmlsZXNFcnIiLCJlcnJvciIsIkxPQURfRklMRVNfRVJSIiwic2V0RmVhdHVyZXMiLCJmZWF0dXJlcyIsIlNFVF9GRUFUVVJFUyIsInNldFBvbHlnb25GaWx0ZXJMYXllciIsImxheWVyIiwiZmVhdHVyZSIsIlNFVF9QT0xZR09OX0ZJTFRFUl9MQVlFUiIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNlbGVjdGlvbkNvbnRleHQiLCJTRVRfU0VMRUNURURfRkVBVFVSRSIsImRlbGV0ZUZlYXR1cmUiLCJERUxFVEVfRkVBVFVSRSIsInNldEVkaXRvck1vZGUiLCJTRVRfRURJVE9SX01PREUiLCJhcHBseUNQVUZpbHRlciIsIkFQUExZX0NQVV9GSUxURVIiLCJ0b2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwiVE9HR0xFX0VESVRPUl9WSVNJQklMSVRZIiwibmV4dEZpbGVCYXRjaCIsInBheWxvYWQiLCJORVhUX0ZJTEVfQkFUQ0giLCJwcm9jZXNzRmlsZUNvbnRlbnQiLCJQUk9DRVNTX0ZJTEVfQ09OVEVOVCIsInNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZyIsIlNFVF9MQVlFUl9BTklNQVRJT05fVElNRV9DT05GSUciLCJzZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnIiwiU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRV9DT05GSUciLCJsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UiLCJldmVudCIsIkxBWUVSX0ZJTFRFUkVEX0lURU1TX0NIQU5HRSIsInN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmUiLCJlbmFibGUiLCJTWU5DX1RJTUVfRklMVEVSX1dJVEhfTEFZRVJfVElNRUxJTkUiLCJzZXRUaW1lRmlsdGVyU3luY1RpbWVsaW5lTW9kZSIsIl9yZWYzIiwiU1lOQ19USU1FX0ZJTFRFUl9USU1FTElORV9NT0RFIiwiY3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3MiLCJleHBvcnRzIiwiY3JlYXRlQWN0aW9uIiwiQ1JFQVRFX05FV19EQVRBU0VUX1NVQ0NFU1MiLCJ2aXNTdGF0ZUFjdGlvbnMiXSwic291cmNlcyI6WyIuLi9zcmMvdmlzLXN0YXRlLWFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gdmlzLXN0YXRlLXJlZHVjZXJcbmltcG9ydCB7UGlja0luZm99IGZyb20gJ0BkZWNrLmdsL2NvcmUvbGliL2RlY2snO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEFjdGlvblR5cGVzfSBmcm9tICcuL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge0ZpbGVDYWNoZUl0ZW19IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge0xheWVyLCBMYXllckJhc2VDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtcbiAgQWRkRGF0YVRvTWFwUGF5bG9hZCxcbiAgVmFsdWVPZixcbiAgTWVyZ2UsXG4gIFJHQkNvbG9yLFxuICBOZXN0ZWRQYXJ0aWFsLFxuICBMYXllclZpc0NvbmZpZyxcbiAgQ29sb3JVSSxcbiAgRmVhdHVyZSxcbiAgRmVhdHVyZVNlbGVjdGlvbkNvbnRleHQsXG4gIEludGVyYWN0aW9uQ29uZmlnLFxuICBGaWx0ZXIsXG4gIFBhcnNlZENvbmZpZyxcbiAgUGFyc2VkTGF5ZXIsXG4gIEVmZmVjdFByb3BzUGFydGlhbCxcbiAgU3luY1RpbWVsaW5lTW9kZSxcbiAgQW5pbWF0aW9uQ29uZmlnLFxuICBGaWx0ZXJBbmltYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge2NyZWF0ZUFjdGlvbn0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5cbi8vIFRPRE8gLSBpbXBvcnQgTG9hZGVyT2JqZWN0IHR5cGUgZnJvbSBAbG9hZGVycy5nbC9jb3JlIHdoZW4gc3VwcG9ydGVkXG4vLyBUT0RPIC0gaW1wb3J0IExvYWRPcHRpb25zIHR5cGUgZnJvbSBAbG9hZGVycy5nbC9jb3JlIHdoZW4gc3VwcG9ydGVkXG5cbmV4cG9ydCB0eXBlIEFwcGx5TGF5ZXJDb25maWdVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcklkOiBzdHJpbmc7XG4gIG5ld0xheWVyQ29uZmlnOiBQYXJzZWRMYXllcjtcbiAgbGF5ZXJJbmRleD86IG51bWJlcjtcbn07XG5cbi8qKlxuICogVXBkYXRlIGxheWVyIGJhc2UgY29uZmlnOiBkYXRhSWQsIGxhYmVsLCBjb2x1bW4sIGlzVmlzaWJsZVxuICogQHBhcmFtIG9sZExheWVySWQgLSBsYXllciBpZCB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3TGF5ZXJDb25maWcgLSBuZXcgbGF5ZXIgY29uZmlnXG4gKiBAcGFyYW0gbGF5ZXJJbmRleCAtIChPcHRpb25hbCkgSW5kZXggb2YgdGhlIGxheWVyIHRvIGJlIHVwZGF0ZWQgKGNhbiBiZSB1c2VmdWwgaW4gc29tZSBjYXNlcywgYmVjYXVzZVxuICogICAgICAgICAgICAgICAgICAgICB0aGUgbGF5ZXIgaWQgbWlnaHQgY2hhbmdlIGR1cmluZyB1cGRhdGUsIGUuZy4gd2hlbiB0aGUgdHlwZSBvZiB0aGUgbGF5ZXIgY2hhbmdlcylcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlMYXllckNvbmZpZyhcbiAgb2xkTGF5ZXJJZDogc3RyaW5nLFxuICBuZXdMYXllckNvbmZpZzogUGFyc2VkTGF5ZXIsXG4gIGxheWVySW5kZXg/OiBudW1iZXJcbik6IE1lcmdlPEFwcGx5TGF5ZXJDb25maWdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFQUExZX0xBWUVSX0NPTkZJR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5BUFBMWV9MQVlFUl9DT05GSUcsXG4gICAgb2xkTGF5ZXJJZCxcbiAgICBuZXdMYXllckNvbmZpZyxcbiAgICBsYXllckluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBuZXdDb25maWc6IFBhcnRpYWw8TGF5ZXJbJ2NvbmZpZyddPjtcbn07XG4vKipcbiAqIFVwZGF0ZSBsYXllciBiYXNlIGNvbmZpZzogZGF0YUlkLCBsYWJlbCwgY29sdW1uLCBpc1Zpc2libGVcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdDb25maWcgLSBuZXcgY29uZmlnIHRvIGJlIG1lcmdlZCB3aXRoIG9sZCBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz5cbik6IE1lcmdlPExheWVyQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9DT05GSUdfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX0NPTkZJR19DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3Q29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyVG9nZ2xlVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGxheWVySWQ6IHN0cmluZztcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBzcGxpdE1hcElkPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIHNwbGl0TWFwIHNpbmdsZSBvciBkdWFsXG4gKiBAcGFyYW0gbGF5ZXJJZCAtIGxheWVySWQgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIGlzVmlzaWJsZSAtIHdoZXRoZXIgdGhpcyBsYXllciBpcyB2aXNpYmxlIGdsb2JhbGx5XG4gKiBAcGFyYW0gc3BsaXRNYXBJZCAtIGlkIGZvciB0aGlzIHNwbGl0TWFwXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVyVG9nZ2xlVmlzaWJpbGl0eShcbiAgbGF5ZXJJZDogc3RyaW5nLFxuICBpc1Zpc2libGU6IGJvb2xlYW4sXG4gIHNwbGl0TWFwSWQ/OiBzdHJpbmdcbik6IE1lcmdlPExheWVyVG9nZ2xlVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFl9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVE9HR0xFX1ZJU0lCSUxJVFksXG4gICAgbGF5ZXJJZCxcbiAgICBpc1Zpc2libGUsXG4gICAgc3BsaXRNYXBJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclRleHRMYWJlbENoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgaWR4OiBudW1iZXIgfCAnYWxsJztcbiAgcHJvcDogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufTtcblxuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdGV4dCBsYWJlbFxuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIGlkeCAtYGlkeGAgb2YgdGV4dCBsYWJlbCB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIGBwcm9wYCBvZiB0ZXh0IGxhYmVsLCBlLGcsIGBhbmNob3JgLCBgYWxpZ25tZW50YCwgYGNvbG9yYCwgYHNpemVgLCBgZmllbGRgLCBgb3V0bGluZVdpZHRoYCwgYG91dGxpbmVDb2xvcmBcbiAqIEBwYXJhbSB2YWx1ZSAtIG5ldyB2YWx1ZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclRleHRMYWJlbENoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBpZHg6IG51bWJlciB8ICdhbGwnLFxuICBwcm9wOiBzdHJpbmcsXG4gIHZhbHVlOiBhbnlcbik6IE1lcmdlPExheWVyVGV4dExhYmVsQ2hhbmdlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9URVhUX0xBQkVMX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9URVhUX0xBQkVMX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllclNldElzVmFsaWRVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIGlzVmFsaWQ6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIENoYW5nZXMgdmFsdWUgb2YgaXNWYWxpZCBmbGFnIGZvciBhIGxheWVyLlxuICogVGhlIGFjdGlvbiBhbHNvIHVwZGF0ZXMgdmlzaWJpbGl0eSBvZiB0aGUgbGF5ZXIgYmFzZWQgb24gaXNWYWxpZC5cbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBpc1ZhbGlkIC0gbmV3IHZhbHVlIGZvciBpc1ZhbGlkIGZsYWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJTZXRJc1ZhbGlkKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIGlzVmFsaWQ6IGJvb2xlYW5cbik6IE1lcmdlPExheWVyU2V0SXNWYWxpZFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfU0VUX0lTX1ZBTElEfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1NFVF9JU19WQUxJRCxcbiAgICBvbGRMYXllcixcbiAgICBpc1ZhbGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3VHlwZTogc3RyaW5nO1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIHR5cGUuIFByZXZpZXdzIGxheWVyIGNvbmZpZyB3aWxsIGJlIGNvcGllZCBpZiBhcHBsaWNhYmxlLlxuICogQHBhcmFtIG9sZExheWVyIC0gbGF5ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIG5ld1R5cGUgLSBuZXcgdHlwZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclR5cGVDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3VHlwZTogc3RyaW5nXG4pOiBNZXJnZTxMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1RZUEVfQ0hBTkdFLFxuICAgIG9sZExheWVyLFxuICAgIG5ld1R5cGVcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIExheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9sZExheWVyOiBMYXllcjtcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyWydjb25maWcnXT47XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgbmV3VmlzQ29uZmlnPzogUGFydGlhbDxMYXllclZpc0NvbmZpZz47XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgdmlzdWFsIGNoYW5uZWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBvbGRMYXllciAtIGxheWVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdDb25maWcgLSBuZXcgdmlzdWFsIGNoYW5uZWwgY29uZmlnXG4gKiBAcGFyYW0gY2hhbm5lbCAtIGNoYW5uZWwgdG8gYmUgdXBkYXRlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2UoXG4gIG9sZExheWVyOiBMYXllcixcbiAgbmV3Q29uZmlnOiBQYXJ0aWFsPExheWVyQmFzZUNvbmZpZz4sXG4gIGNoYW5uZWw6IHN0cmluZyxcbiAgbmV3VmlzQ29uZmlnPzogUGFydGlhbDxMYXllclZpc0NvbmZpZz5cbik6IE1lcmdlPFxuICBMYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxBWUVSX1ZJU1VBTF9DSEFOTkVMX0NIQU5HRSxcbiAgICBvbGRMYXllcixcbiAgICBuZXdDb25maWcsXG4gICAgY2hhbm5lbCxcbiAgICBuZXdWaXNDb25maWdcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIExheWVyVmlzQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvbiA9IHtcbiAgb2xkTGF5ZXI6IExheWVyO1xuICBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGxheWVyIGB2aXNDb25maWdgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gbmV3VmlzQ29uZmlnIC0gbmV3IHZpc0NvbmZpZyBhcyBhIGtleSB2YWx1ZSBtYXA6IGUuZy4gYHtvcGFjaXR5OiAwLjh9YFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllclZpc0NvbmZpZ0NoYW5nZShcbiAgb2xkTGF5ZXI6IExheWVyLFxuICBuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+XG4pOiBNZXJnZTxMYXllclZpc0NvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfVklTX0NPTkZJR19DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfVklTX0NPTkZJR19DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgbmV3VmlzQ29uZmlnXG4gIH07XG59XG5leHBvcnQgdHlwZSBMYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBvbGRMYXllcjogTGF5ZXI7XG4gIHByb3A6IHN0cmluZztcbiAgbmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+O1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIGNvbG9yIHBhbGV0dGUgdWkgZm9yIGxheWVyIGNvbG9yXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb2xkTGF5ZXIgLSBsYXllciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIHdoaWNoIGNvbG9yIHByb3BcbiAqIEBwYXJhbSBuZXdDb25maWcgLSB0byBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJDb2xvclVJQ2hhbmdlKFxuICBvbGRMYXllcjogTGF5ZXIsXG4gIHByb3A6IHN0cmluZyxcbiAgbmV3Q29uZmlnOiBOZXN0ZWRQYXJ0aWFsPENvbG9yVUk+XG4pOiBNZXJnZTxMYXllckNvbG9yVUlDaGFuZ2VVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxBWUVSX0NPTE9SX1VJX0NIQU5HRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9DT0xPUl9VSV9DSEFOR0UsXG4gICAgb2xkTGF5ZXIsXG4gICAgcHJvcCxcbiAgICBuZXdDb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlTGF5ZXJCbGVuZGluZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIG1vZGU6ICdhZGRpdGl2ZScgfCAnbm9ybWFsJyB8ICdzdWJ0cmFjdGl2ZSc7XG59O1xuLyoqXG4gKiBVcGRhdGUgbGF5ZXIgYmxlbmRpbmcgbW9kZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG1vZGUgb25lIG9mIGBhZGRpdGl2ZWAsIGBub3JtYWxgIGFuZCBgc3VidHJhY3RpdmVgXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUxheWVyQmxlbmRpbmcoXG4gIG1vZGU6ICdhZGRpdGl2ZScgfCAnbm9ybWFsJyB8ICdzdWJ0cmFjdGl2ZSdcbik6IE1lcmdlPFVwZGF0ZUxheWVyQmxlbmRpbmdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9CTEVORElOR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfTEFZRVJfQkxFTkRJTkcsXG4gICAgbW9kZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVPdmVybGF5QmxlbmRpbmdVcGRhdGVyQWN0aW9uID0ge1xuICBtb2RlOiAnc2NyZWVuJyB8ICdub3JtYWwnIHwgJ2Rhcmtlbic7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBvdmVybGF5IGJsZW5kaW5nIG1vZGVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtb2RlIG9uZSBvZiBgc2NyZWVuYCwgYG5vcm1hbGAgYW5kIGBkYXJrZW5gXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhcbiAgbW9kZTogJ3NjcmVlbicgfCAnbm9ybWFsJyB8ICdkYXJrZW4nXG4pOiBNZXJnZTxVcGRhdGVPdmVybGF5QmxlbmRpbmdVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9PVkVSTEFZX0JMRU5ESU5HfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9PVkVSTEFZX0JMRU5ESU5HLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgSW50ZXJhY3Rpb25Db25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uID0ge1xuICBjb25maWc6IFZhbHVlT2Y8SW50ZXJhY3Rpb25Db25maWc+O1xufTtcbi8qKlxuICogVXBkYXRlIGBpbnRlcmFjdGlvbkNvbmZpZ2BcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBjb25maWcgLSBuZXcgY29uZmlnIGFzIGtleSB2YWx1ZSBtYXA6IGB7dG9vbHRpcDoge2VuYWJsZWQ6IHRydWV9fWBcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZXJhY3Rpb25Db25maWdDaGFuZ2UoXG4gIGNvbmZpZzogVmFsdWVPZjxJbnRlcmFjdGlvbkNvbmZpZz5cbik6IE1lcmdlPFxuICBJbnRlcmFjdGlvbkNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuSU5URVJBQ1RJT05fQ09ORklHX0NIQU5HRX1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLklOVEVSQUNUSU9OX0NPTkZJR19DSEFOR0UsXG4gICAgY29uZmlnXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFwcGx5RmlsdGVyQ29uZmlnVXBkYXRlckFjdGlvbiA9IHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgbmV3RmlsdGVyOiBGaWx0ZXI7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgY29uZmlnXG4gKiBAcGFyYW0gZmlsdGVySWQgLSBpZCBvZiB0aGUgZmlsdGVyIHRvIGJlIHVwZGF0ZWRcbiAqIEBwYXJhbSBuZXdGaWx0ZXIgLSBuZXcgZmlsdGVyIGNvbmZpZ1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUZpbHRlckNvbmZpZyhcbiAgZmlsdGVySWQ6IHN0cmluZyxcbiAgbmV3RmlsdGVyOiBGaWx0ZXJcbik6IE1lcmdlPEFwcGx5RmlsdGVyQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BUFBMWV9GSUxURVJfQ09ORklHfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFQUExZX0ZJTFRFUl9DT05GSUcsXG4gICAgZmlsdGVySWQsXG4gICAgbmV3RmlsdGVyXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBwcm9wOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdmFsdWU6IGFueTtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFVwZGF0ZSBmaWx0ZXIgcHJvcGVydHlcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLWBpZHhgIG9mIGZpbHRlciB0byBiZSB1cGRhdGVkXG4gKiBAcGFyYW0gcHJvcCAtIGBwcm9wYCBvZiBmaWx0ZXIsIGUsZywgYGRhdGFJZGAsIGBuYW1lYCwgYHZhbHVlYFxuICogICAgICAgICAgICAgICAgb3IgYW4gYXJyYXkgZS5nLiBbJ2lkeCcsICduYW1lJ10uIGluIHRoYXQgY2FzZSB0aGUgdmFsdWVcbiAqICAgICAgICAgICAgICAgIHNob3VsZCBhbHNvIGJlIGFuIGFycmF5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyAoYnkgaW5kZXgpXG4gKiBAcGFyYW0gdmFsdWUgLSBuZXcgdmFsdWVcbiAqIEBwYXJhbSB2YWx1ZUluZGV4IC0gZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlcihcbiAgaWR4OiBudW1iZXIsXG4gIHByb3A6IHN0cmluZyB8IHN0cmluZ1tdLFxuICB2YWx1ZTogYW55LFxuICB2YWx1ZUluZGV4PzogbnVtYmVyXG4pOiBNZXJnZTxTZXRGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUixcbiAgICBpZHgsXG4gICAgcHJvcCxcbiAgICB2YWx1ZSxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgcHJvcDogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICB2YWx1ZUluZGV4PzogbnVtYmVyO1xufTtcbi8qKlxuICogU2FtZSBhcyBVcGRhdGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWR4IC1gaWR4YCBvZiBmaWx0ZXIgdG8gYmUgdXBkYXRlZFxuICogQHBhcmFtIHByb3AgLSBgcHJvcGAgb2YgZmlsdGVyLCBlLGcsIGBkYXRhSWRgLCBgbmFtZWAsIGB2YWx1ZWBcbiAqIEBwYXJhbSB2YWx1ZSAtIG5ldyB2YWx1ZVxuICogQHBhcmFtIHZhbHVlSW5kZXggLSBkYXRhSWQgaW5kZXhcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyQW5pbWF0aW9uVGltZShcbiAgaWR4OiBudW1iZXIsXG4gIHByb3A6IHN0cmluZyxcbiAgdmFsdWU6IGFueSxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8XG4gIFNldEZpbHRlckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJfQU5JTUFUSU9OX1RJTUV9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9USU1FLFxuICAgIGlkeCxcbiAgICBwcm9wLFxuICAgIHZhbHVlLFxuICAgIHZhbHVlSW5kZXhcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYW5pbWF0aW9uV2luZG93OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBTYW1lIGFzIFVwZGF0ZSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvbldpbmRvdyh7XG4gIGlkLFxuICBhbmltYXRpb25XaW5kb3dcbn06IFNldEZpbHRlckFuaW1hdGlvbldpbmRvd1VwZGF0ZXJBY3Rpb24pOiBNZXJnZTxcbiAgU2V0RmlsdGVyQW5pbWF0aW9uV2luZG93VXBkYXRlckFjdGlvbixcbiAge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9XSU5ET1d9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX0FOSU1BVElPTl9XSU5ET1csXG4gICAgaWQsXG4gICAgYW5pbWF0aW9uV2luZG93XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIEFkZEZpbHRlclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbDtcbiAgaWQ/OiBzdHJpbmc7XG59O1xuLyoqXG4gKiBBZGQgYSBuZXcgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gZGF0YXNldCBgaWRgIHRoaXMgbmV3IGZpbHRlciBpcyBhc3NvY2lhdGVkIHdpdGhcbiAqIEBwYXJhbSBpZCAtIGBpZGAgZm9yIHRoZSBuZXcgZmlsdGVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEZpbHRlcihcbiAgZGF0YUlkOiBzdHJpbmcgfCBudWxsLFxuICBpZD86IHN0cmluZ1xuKTogTWVyZ2U8QWRkRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BRERfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9GSUxURVIsXG4gICAgZGF0YUlkLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU9yVXBkYXRlRmlsdGVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ/OiBzdHJpbmc7XG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBmaWVsZD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB2YWx1ZT86IGFueTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIG9yIHVwZGF0ZXMgYSBmaWx0ZXJcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgLSBkYXRhc2V0IGBpZGAgdGhpcyBuZXcgZmlsdGVyIGlzIGFzc29jaWF0ZWQgd2l0aFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVPclVwZGF0ZUZpbHRlcihcbiAgaWQ/OiBzdHJpbmcsXG4gIGRhdGFJZD86IHN0cmluZyB8IHN0cmluZ1tdLFxuICBmaWVsZD86IHN0cmluZyB8IHN0cmluZ1tdLFxuICB2YWx1ZT86IGFueVxuKTogTWVyZ2U8Q3JlYXRlT3JVcGRhdGVGaWx0ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkNSRUFURV9PUl9VUERBVEVfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkNSRUFURV9PUl9VUERBVEVfRklMVEVSLFxuICAgIGlkLFxuICAgIGRhdGFJZCxcbiAgICBmaWVsZCxcbiAgICB2YWx1ZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBBZGRMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZz86IG9iamVjdDtcbiAgZGF0YXNldElkPzogc3RyaW5nO1xufTtcbi8qKlxuICogQWRkIGEgbmV3IGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gY29uZmlnIC0gbmV3IGxheWVyIGNvbmZpZ1xuICogQHBhcmFtIGRhdGFzZXRJZCAtIGRhdGFzZXQgaWQgdXNlZCBmb3IgY3JlYXRpbmcgYW4gZW1wdHkgbGF5ZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTGF5ZXIoXG4gIGNvbmZpZz86IG9iamVjdCxcbiAgZGF0YXNldElkPzogc3RyaW5nXG4pOiBNZXJnZTxBZGRMYXllclVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQUREX0xBWUVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFERF9MQVlFUixcbiAgICBjb25maWcsXG4gICAgZGF0YXNldElkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlb3JkZXJMYXllclVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9yZGVyOiBzdHJpbmdbXTtcbn07XG4vKipcbiAqIFJlb3JkZXIgbGF5ZXIsIG9yZGVyIGlzIGFuIGFycmF5IG9mIGxheWVyIGluZGV4ZXMsIGluZGV4IDAgd2lsbCBiZSB0aGUgb25lIGF0IHRoZSBib3R0b21cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBvcmRlciBhbiBhcnJheSBvZiBsYXllciBpbmRleGVzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogYnJpbmcgYGxheWVyc1sxXWAgYmVsb3cgYGxheWVyc1swXWAsIHRoZSBzZXF1ZW5jZSBsYXllcnMgd2lsbCBiZSByZW5kZXJlZCBpcyBgbGF5ZXJzWzFdLmlkYCwgYGxheWVyc1swXS5pZGAsIGBsYXllcnNbMl0uaWRgLCBgbGF5ZXJzWzNdLmlkYC5cbiAqIGBsYXllcnNbMV1gIHdpbGwgYmUgYXQgdGhlIGJvdHRvbSwgYGxheWVyc1sxM11gIHdpbGwgYmUgYXQgdGhlIHRvcC5cbiAqIHRoaXMucHJvcHMuZGlzcGF0Y2gocmVvcmRlckxheWVyKFtgbGF5ZXJzWzFdLmlkYCwgYGxheWVyc1swXS5pZGAsIGBsYXllcnNbMl0uaWRgLCBgbGF5ZXJzWzNdLmlkYF0pKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlb3JkZXJMYXllcihcbiAgb3JkZXI6IHN0cmluZ1tdXG4pOiBNZXJnZTxSZW9yZGVyTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlJFT1JERVJfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVPUkRFUl9MQVlFUixcbiAgICBvcmRlclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbn07XG4vKipcbiAqIFJlbW92ZSBhIGZpbHRlciBmcm9tIGB2aXNTdGF0ZS5maWx0ZXJzYCwgb25jZSBhIGZpbHRlciBpcyByZW1vdmVkLCBkYXRhIHdpbGwgYmUgcmUtZmlsdGVyZWQgYW5kIGxheWVyIHdpbGwgYmUgdXBkYXRlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCBpZHggb2YgZmlsdGVyIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyKFxuICBpZHg6IG51bWJlclxuKTogTWVyZ2U8UmVtb3ZlRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9GSUxURVIsXG4gICAgaWR4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFJlbW92ZSBhIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWR4IG9mIGxheWVyIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGF5ZXIoXG4gIGlkOiBzdHJpbmdcbik6IE1lcmdlPFJlbW92ZUxheWVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfTEFZRVJ9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuUkVNT1ZFX0xBWUVSLFxuICAgIGlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIER1cGxpY2F0ZUxheWVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbn07XG4vKipcbiAqIER1cGxpY2F0ZSBhIGxheWVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaWQgaWQgb2YgbGF5ZXIgdG8gYmUgZHVwbGljYXRlZFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkdXBsaWNhdGVMYXllcihcbiAgaWQ6IHN0cmluZ1xuKTogTWVyZ2U8RHVwbGljYXRlTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkRVUExJQ0FURV9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5EVVBMSUNBVEVfTEFZRVIsXG4gICAgaWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkRWZmZWN0VXBkYXRlckFjdGlvbiA9IHtcbiAgY29uZmlnOiBFZmZlY3RQcm9wc1BhcnRpYWw7XG59O1xuXG4vKipcbiAqIEFkZCBhIG5ldyBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBjb25maWcgLSBuZXcgZWZmZWN0IGNvbmZpZ1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRFZmZlY3QoXG4gIGNvbmZpZzogRWZmZWN0UHJvcHNQYXJ0aWFsXG4pOiBNZXJnZTxBZGRFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkFERF9FRkZFQ1R9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQUREX0VGRkVDVCxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUmVvcmRlckVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIG9yZGVyOiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogUmVvcmRlciBlZmZlY3RzXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gb3JkZXIgYW4gYXJyYXkgb2YgZWZmZWN0IGlkc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW9yZGVyRWZmZWN0KFxuICBvcmRlcjogc3RyaW5nW11cbik6IE1lcmdlPFJlb3JkZXJFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlJFT1JERVJfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFT1JERVJfRUZGRUNULFxuICAgIG9yZGVyXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUVmZmVjdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBlZmZlY3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZCBpZHggb2YgdGhlIGVmZmVjdCB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVmZmVjdChcbiAgaWQ6IHN0cmluZ1xuKTogTWVyZ2U8UmVtb3ZlRWZmZWN0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfRUZGRUNUfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlJFTU9WRV9FRkZFQ1QsXG4gICAgaWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRWZmZWN0VXBkYXRlckFjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvcHM6IEVmZmVjdFByb3BzUGFydGlhbDtcbn07XG5cbi8qKlxuICogVXBkYXRlIGFuIGVmZmVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIHByb3BzIGlkeCBvZiB0aGUgZWZmZWN0IHRvIGJlIHVwZGF0ZWQgd2l0aCBzcGVjaWZpZWQgcHJvcHNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRWZmZWN0KFxuICBpZDogc3RyaW5nLFxuICBwcm9wczogRWZmZWN0UHJvcHNQYXJ0aWFsXG4pOiBNZXJnZTxVcGRhdGVFZmZlY3RVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9FRkZFQ1R9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0VGRkVDVCxcbiAgICBpZCxcbiAgICBwcm9wc1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW1vdmUgYSBkYXRhc2V0IGFuZCBhbGwgbGF5ZXJzLCBmaWx0ZXJzLCB0b29sdGlwIGNvbmZpZ3MgdGhhdCBiYXNlZCBvbiBpdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBNZXJnZTxSZW1vdmVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU1PVkVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU1PVkVfREFUQVNFVCxcbiAgICBkYXRhSWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xufTtcbi8qKlxuICogRGlzcGxheSBkYXRhc2V0IHRhYmxlIGluIGEgbW9kYWxcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgZGF0YXNldCBpZCB0byBzaG93IGluIHRhYmxlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3dEYXRhc2V0VGFibGUoXG4gIGRhdGFJZDogc3RyaW5nXG4pOiBNZXJnZTxTaG93RGF0YXNldFRhYmxlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TSE9XX0RBVEFTRVRfVEFCTEV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0hPV19EQVRBU0VUX1RBQkxFLFxuICAgIGRhdGFJZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgbmV3Q29sb3I6IFJHQkNvbG9yO1xufTtcbi8qKlxuICogVXBkYXRlIGRhdGFzZXQgY29sb3IgdG8gY3VzdG9tIGJ5IG1lYW5zIG9mIGNvbG9yIHBpY2tlclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFJZCBkYXRhc2V0IGBpZGAgdGhpcyBjdXN0b20gY29sb3IgaXMgYXNzb2NpYXRlZCB3aXRoXG4gKiBAcGFyYW0gbmV3Q29sb3IgY3VzdG9tIGNvbG9yIGluIFJHQmZvcm1hdFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVUYWJsZUNvbG9yKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgbmV3Q29sb3I6IFJHQkNvbG9yXG4pOiBNZXJnZTxVcGRhdGVEYXRhc2V0Q29sb3JVcGRhdGVyLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9UQUJMRV9DT0xPUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5VUERBVEVfVEFCTEVfQ09MT1IsXG4gICAgZGF0YUlkLFxuICAgIG5ld0NvbG9yXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNvcnRUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGRhdGFJZDogc3RyaW5nO1xuICBjb2x1bW46IHN0cmluZztcbiAgbW9kZT86IHN0cmluZztcbn07XG4vKipcbiAqIFNvcnQgZGF0YXNldCBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcGFyYW0gbW9kZVxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VGFibGVDb2x1bW4oXG4gIGRhdGFJZDogc3RyaW5nLFxuICBjb2x1bW46IHN0cmluZyxcbiAgbW9kZT86IHN0cmluZ1xuKTogTWVyZ2U8U29ydFRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TT1JUX1RBQkxFX0NPTFVNTn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TT1JUX1RBQkxFX0NPTFVNTixcbiAgICBkYXRhSWQsXG4gICAgY29sdW1uLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUGluVGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBQaW4gZGF0YXNldCBjb2x1bW4sIGZvciB0YWJsZSBkaXNwbGF5XG4gKiBAcGFyYW0gZGF0YUlkXG4gKiBAcGFyYW0gY29sdW1uXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpblRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmdcbik6IE1lcmdlPFBpblRhYmxlQ29sdW1uVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5QSU5fVEFCTEVfQ09MVU1OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlBJTl9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtblxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDb3B5VGFibGVDb2x1bW5VcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZztcbiAgY29sdW1uOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBDb3B5IGNvbHVtbiwgZm9yIHRhYmxlIGRpc3BsYXlcbiAqIEBwYXJhbSBkYXRhSWRcbiAqIEBwYXJhbSBjb2x1bW5cbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRhYmxlQ29sdW1uKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgY29sdW1uOiBzdHJpbmdcbik6IE1lcmdlPENvcHlUYWJsZUNvbHVtblVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuQ09QWV9UQUJMRV9DT0xVTU59PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuQ09QWV9UQUJMRV9DT0xVTU4sXG4gICAgZGF0YUlkLFxuICAgIGNvbHVtblxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRDb2x1bW5EaXNwbGF5Rm9ybWF0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGZvcm1hdHM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIFNldCBjb2x1bW4gZGlzcGxheSBmb3JtYXRcbiAqIEBwYXJhbSBkYXRhSWRcbiAqIEBwYXJhbSBmb3JtYXRzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbHVtbkRpc3BsYXlGb3JtYXQoXG4gIGRhdGFJZDogU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb25bJ2RhdGFJZCddLFxuICBmb3JtYXRzOiBTZXRDb2x1bW5EaXNwbGF5Rm9ybWF0VXBkYXRlckFjdGlvblsnZm9ybWF0cyddXG4pOiBNZXJnZTxcbiAgU2V0Q29sdW1uRGlzcGxheUZvcm1hdFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0NPTFVNTl9ESVNQTEFZX0ZPUk1BVH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9DT0xVTU5fRElTUExBWV9GT1JNQVQsXG4gICAgZGF0YUlkLFxuICAgIGZvcm1hdHNcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQWRkRGF0YVRvTWFwVXBkYXRlck9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcD86IGJvb2xlYW47XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAga2VlcEV4aXN0aW5nQ29uZmlnPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFVwZGF0ZVZpc0RhdGFVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhc2V0czogQWRkRGF0YVRvTWFwUGF5bG9hZFsnZGF0YXNldHMnXTtcbiAgb3B0aW9uczogQWRkRGF0YVRvTWFwUGF5bG9hZFsnb3B0aW9ucyddO1xuICBjb25maWc/OiBQYXJzZWRDb25maWc7XG59O1xuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuLy8gKiBAcGFyYW0gZGF0YXNldC5pbmZvLmxhYmVsIC0gQSBkaXNwbGF5IG5hbWUgb2YgdGhpcyBkYXRhc2V0XG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4vLyAqIEBwYXJhbSBkYXRhc2V0LmRhdGEuZmllbGRzLm5hbWUgLSAqKipyZXF1aXJlZCoqIE5hbWUgb2YgdGhlIGZpZWxkLFxuLy8gKiBAcGFyYW0gZGF0YXNldC5kYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4vKipcbiAqIEFkZCBuZXcgZGF0YXNldCB0byBgdmlzU3RhdGVgLCB3aXRoIG9wdGlvbiB0byBsb2FkIGEgbWFwIGNvbmZpZyBhbG9uZyB3aXRoIHRoZSBkYXRhc2V0c1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGRhdGFzZXRzIC0gKioqcmVxdWlyZWQqKiBkYXRhc2V0cyBjYW4gYmUgYSBkYXRhc2V0IG9yIGFuIGFycmF5IG9mIGRhdGFzZXRzXG4gKiBFYWNoIGRhdGFzZXQgb2JqZWN0IG5lZWRzIHRvIGhhdmUgYGluZm9gIGFuZCBgZGF0YWAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIG9wdGlvbnMuY2VudGVyTWFwIGBkZWZhdWx0OiB0cnVlYCBpZiBgY2VudGVyTWFwYCBpcyBzZXQgdG8gYHRydWVgIGtlcGxlci5nbCB3aWxsXG4gKiBwbGFjZSB0aGUgbWFwIHZpZXcgd2l0aGluIHRoZSBkYXRhIHBvaW50cyBib3VuZGFyaWVzXG4gKiBAcGFyYW0gb3B0aW9ucy5yZWFkT25seSBgZGVmYXVsdDogZmFsc2VgIGlmIGByZWFkT25seWAgaXMgc2V0IHRvIGB0cnVlYFxuICogdGhlIGxlZnQgc2V0dGluZyBwYW5lbCB3aWxsIGJlIGhpZGRlblxuICogQHBhcmFtIGNvbmZpZyB0aGlzIG9iamVjdCB3aWxsIGNvbnRhaW4gdGhlIGZ1bGwga2VwbGVyLmdsIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24ge21hcFN0YXRlLCBtYXBTdHlsZSwgdmlzU3RhdGV9XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVZpc0RhdGEoXG4gIGRhdGFzZXRzOiBBZGREYXRhVG9NYXBQYXlsb2FkWydkYXRhc2V0cyddLFxuICBvcHRpb25zOiBBZGREYXRhVG9NYXBQYXlsb2FkWydvcHRpb25zJ10sXG4gIGNvbmZpZz86IFBhcnNlZENvbmZpZ1xuKTogTWVyZ2U8VXBkYXRlVmlzRGF0YVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX1ZJU19EQVRBfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9WSVNfREFUQSxcbiAgICBkYXRhc2V0cyxcbiAgICBvcHRpb25zLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59O1xuLyoqXG4gKiBSZW5hbWUgYW4gZXhpc3RpbmcgZGF0YXNldCBpbiBgdmlzU3RhdGVgXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gZGF0YUlkIC0gKioqcmVxdWlyZWQqKiBJZCBvZiB0aGUgZGF0YXNldCB0byB1cGRhdGVcbiAqIEBwYXJhbSBsYWJlbCAtICoqKnJlcXVpcmVkKiogTmV3IG5hbWUgZm9yIHRoZSBkYXRhc2V0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURhdGFzZXQoXG4gIGRhdGFJZDogc3RyaW5nLFxuICBsYWJlbDogc3RyaW5nXG4pOiBNZXJnZTxSZW5hbWVEYXRhc2V0VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRU5BTUVfREFUQVNFVCxcbiAgICBkYXRhSWQsXG4gICAgbGFiZWxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlRGF0YXNldFByb3BzVXBkYXRlckFjdGlvbiA9IHtcbiAgZGF0YUlkOiBzdHJpbmc7XG4gIHByb3BzOiB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBSR0JDb2xvcjtcbiAgICBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9O1xufTtcbi8qKlxuICogVXBkYXRlIGFuIGV4aXN0aW5nIGRhdGFzZXQgcHJvcHMgaW4gYHZpc1N0YXRlYFxuICogQHBhcmFtIGRhdGFJZCAtICoqKnJlcXVpcmVkKiogSWQgb2YgdGhlIGRhdGFzZXQgdG8gdXBkYXRlXG4gKiBAcGFyYW0gcHJvcHMgLSAqKipyZXF1aXJlZCoqIE5ldyBwcm9wcyB0byB1cGRhdGVcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRGF0YXNldFByb3BzKFxuICBkYXRhSWQ6IHN0cmluZyxcbiAgcHJvcHM6IHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBjb2xvcj86IFJHQkNvbG9yO1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cbik6IE1lcmdlPFVwZGF0ZURhdGFzZXRQcm9wc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFN9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0RBVEFTRVRfUFJPUFMsXG4gICAgZGF0YUlkLFxuICAgIHByb3BzXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xufTtcbi8qKlxuICogU3RhcnQgYW5kIGVuZCBmaWx0ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaWR4IG9mIGZpbHRlclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJBbmltYXRpb24oXG4gIGlkeDogbnVtYmVyXG4pOiBNZXJnZTxUb2dnbGVGaWx0ZXJBbmltYXRpb25VcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfQU5JTUFUSU9OLFxuICAgIGlkeFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVGaWx0ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBzcGVlZDogbnVtYmVyO1xufTtcbi8qKlxuICogQ2hhbmdlIGZpbHRlciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSAgYGlkeGAgb2YgZmlsdGVyXG4gKiBAcGFyYW0gc3BlZWQgLSBgc3BlZWRgIHRvIGNoYW5nZSBpdCB0by4gYHNwZWVkYCBpcyBhIG11bHRpcGxpZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWQoXG4gIGlkeDogbnVtYmVyLFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlRmlsdGVyQW5pbWF0aW9uU3BlZWRVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlVQREFURV9GSUxURVJfQU5JTUFUSU9OX1NQRUVEfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVVBEQVRFX0ZJTFRFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgaWR4LFxuICAgIHNwZWVkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldEFuaW1hdGlvbkNvbmZpZ1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGNvbmZpZzogQW5pbWF0aW9uQ29uZmlnIHwgRmlsdGVyQW5pbWF0aW9uQ29uZmlnO1xufTtcbi8qKlxuICogU2V0IGFuaW1hdGlvbiBjb25maWc6IHdvcmtzIHdpdGggYm90aCBsYXllciBhbmltYXRpb24gYW5kIGZpbHRlciBhbmltYXRpb25cbiAqIEBwYXJhbSBjb25maWdcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5pbWF0aW9uQ29uZmlnKFxuICBjb25maWc6IEFuaW1hdGlvbkNvbmZpZyB8IEZpbHRlckFuaW1hdGlvbkNvbmZpZ1xuKTogTWVyZ2U8U2V0QW5pbWF0aW9uQ29uZmlnVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfQU5JTUFUSU9OX0NPTkZJR30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfQU5JTUFUSU9OX0NPTkZJRyxcbiAgICBjb25maWdcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0TGF5ZXJBbmltYXRpb25UaW1lVXBkYXRlckFjdGlvbiA9IHtcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG59O1xuLyoqXG4gKiBSZXNldCBhbmltYXRpb25cbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSB2YWx1ZSAtICBDdXJyZW50IHZhbHVlIG9mIHRoZSBzbGlkZXJcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TGF5ZXJBbmltYXRpb25UaW1lKFxuICB2YWx1ZTogbnVtYmVyXG4pOiBNZXJnZTxTZXRMYXllckFuaW1hdGlvblRpbWVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9MQVlFUl9BTklNQVRJT05fVElNRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUUsXG4gICAgdmFsdWVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24gPSB7XG4gIHNwZWVkOiBudW1iZXI7XG59O1xuLyoqXG4gKiB1cGRhdGUgdHJpcCBsYXllciBhbmltYXRpb24gc3BlZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBzcGVlZCAtIGBzcGVlZGAgdG8gY2hhbmdlIGl0IHRvLiBgc3BlZWRgIGlzIGEgbXVsdGlwbGllclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVMYXllckFuaW1hdGlvblNwZWVkKFxuICBzcGVlZDogbnVtYmVyXG4pOiBNZXJnZTxcbiAgVXBkYXRlTGF5ZXJBbmltYXRpb25TcGVlZFVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVVBEQVRFX0xBWUVSX0FOSU1BVElPTl9TUEVFRH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlVQREFURV9MQVlFUl9BTklNQVRJT05fU1BFRUQsXG4gICAgc3BlZWRcbiAgfTtcbn1cbmV4cG9ydCB0eXBlIFRvZ2dsZUxheWVyQW5pbWF0aW9uVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIHN0YXJ0IGVuZCBlbmQgbGF5ZXIgYW5pbWF0aW9uXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyQW5pbWF0aW9uKCk6IE1lcmdlPFxuICBUb2dnbGVMYXllckFuaW1hdGlvblVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0xBWUVSX0FOSU1BVElPTn1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIGhpZGUgYW5kIHNob3cgbGF5ZXIgYW5pbWF0aW9uIGNvbnRyb2xcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlTGF5ZXJBbmltYXRpb25Db250cm9sKCk6IE1lcmdlPFxuICBUb2dnbGVMYXllckFuaW1hdGlvbkNvbnRyb2xVcGRhdGVyQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTH1cbj4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9MQVlFUl9BTklNQVRJT05fQ09OVFJPTFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJWaWV3VXBkYXRlckFjdGlvbiA9IHtcbiAgaWR4OiBudW1iZXI7XG4gIHZpZXc6IEZpbHRlclsndmlldyddO1xufTtcbi8qKlxuICogU2hvdyBsYXJnZXIgdGltZSBmaWx0ZXIgYXQgYm90dG9tIGZvciB0aW1lIHBsYXliYWNrIChhcHBseSB0byB0aW1lIGZpbHRlciBvbmx5KVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeCAtIGluZGV4IG9mIGZpbHRlciB0byBlbmxhcmdlXG4gKiBAcGFyYW0gdmlldyAtIHR5cGUgb2YgZmlsdGVyIHZpZXdcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RmlsdGVyVmlldyhcbiAgaWR4OiBudW1iZXIsXG4gIHZpZXc6IEZpbHRlclsndmlldyddXG4pOiBNZXJnZTxTZXRGaWx0ZXJWaWV3VXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRklMVEVSX1ZJRVd9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9WSUVXLFxuICAgIGlkeCxcbiAgICB2aWV3XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUZpbHRlckZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbn07XG4vKipcbiAqIFNob3cvaGlkZSBmaWx0ZXIgZmVhdHVyZSBvbiBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpZHggLSBpbmRleCBvZiBmaWx0ZXIgZmVhdHVyZSB0byBzaG93L2hpZGVcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVGaWx0ZXJGZWF0dXJlKFxuICBpZHg6IG51bWJlclxuKTogTWVyZ2U8VG9nZ2xlRmlsdGVyRmVhdHVyZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0ZJTFRFUl9GRUFUVVJFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlRPR0dMRV9GSUxURVJfRkVBVFVSRSxcbiAgICBpZHhcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25MYXllckhvdmVyVXBkYXRlckFjdGlvbiA9IHtcbiAgaW5mbzogUGlja0luZm88YW55PiB8IG51bGw7XG4gIG1hcEluZGV4PzogbnVtYmVyO1xufTtcbi8qKlxuICogVHJpZ2dlciBsYXllciBob3ZlciBldmVudCB3aXRoIGhvdmVyZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mbyAtIE9iamVjdCBob3ZlcmVkLCByZXR1cm5lZCBieSBkZWNrLmdsLlxuICogQHBhcmFtIG1hcEluZGV4IC0gT3B0aW9uYWwgcHJvcGVydHkgZm9yIGxpbWl0aW5nIHRoZSBkaXNwbGF5IG9mIHRoZSBgPE1hcFBvcG92ZXI+YCB0byB0aGUgYDxNYXBDb250YWluZXI+YCB0aGUgdXNlciBpcyBpbnRlcmFjdGluZyB3aXRoLlxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkxheWVySG92ZXIoXG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsLFxuICBtYXBJbmRleD86IG51bWJlclxuKTogTWVyZ2U8T25MYXllckhvdmVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9IT1ZFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MQVlFUl9IT1ZFUixcbiAgICBpbmZvLFxuICAgIG1hcEluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIE9uTGF5ZXJDbGlja1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGluZm86IFBpY2tJbmZvPGFueT4gfCBudWxsO1xufTtcbi8qKlxuICogVHJpZ2dlciBsYXllciBjbGljayBldmVudCB3aXRoIGNsaWNrZWQgb2JqZWN0XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5mbyAtIE9iamVjdCBjbGlja2VkLCByZXR1cm5lZCBieSBkZWNrLmdsXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uTGF5ZXJDbGljayhcbiAgaW5mbzogUGlja0luZm88YW55PiB8IG51bGxcbik6IE1lcmdlPE9uTGF5ZXJDbGlja1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTEFZRVJfQ0xJQ0t9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfQ0xJQ0ssXG4gICAgaW5mb1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBPbk1hcENsaWNrVXBkYXRlckFjdGlvbiA9IHZvaWQ7XG4vKipcbiAqIFRyaWdnZXIgbWFwIGNsaWNrIGV2ZW50LCB1bnNlbGVjdCBjbGlja2VkIG9iamVjdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbk1hcENsaWNrKCk6IE1lcmdlPE9uTWFwQ2xpY2tVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLk1BUF9DTElDS30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5NQVBfQ0xJQ0tcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgT25Nb3VzZU1vdmVVcGRhdGVyQWN0aW9uID0ge1xuICBldnQ7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIG1hcCBtb3VzZSBtb3ZlZXZlbnQsIHBheWxvYWQgd291bGQgYmVcbiAqIFJlYWN0LW1hcC1nbCBNYXBMYXllck1vdXNlRXZlbnRcbiAqIGh0dHBzOi8vdmlzZ2wuZ2l0aHViLmlvL3JlYWN0LW1hcC1nbC9kb2NzL2FwaS1yZWZlcmVuY2UvdHlwZXMjbWFwbGF5ZXJtb3VzZWV2ZW50XG4gKlxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGV2dCAtIE1hcExheWVyTW91c2VFdmVudFxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbk1vdXNlTW92ZShcbiAgZXZ0XG4pOiBNZXJnZTxPbk1vdXNlTW92ZVVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuTU9VU0VfTU9WRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5NT1VTRV9NT1ZFLFxuICAgIGV2dFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBUb2dnbGVMYXllckZvck1hcFVwZGF0ZXJBY3Rpb24gPSB7XG4gIG1hcEluZGV4OiBudW1iZXI7XG4gIGxheWVySWQ6IHN0cmluZztcbn07XG4vKipcbiAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9mIGEgbGF5ZXIgaW4gYSBzcGxpdCBtYXBcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBtYXBJbmRleCAtIGluZGV4IG9mIHRoZSBzcGxpdCBtYXBcbiAqIEBwYXJhbSBsYXllcklkIC0gaWQgb2YgdGhlIGxheWVyXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvZ2dsZUxheWVyRm9yTWFwKFxuICBtYXBJbmRleDogbnVtYmVyLFxuICBsYXllcklkOiBzdHJpbmdcbik6IE1lcmdlPFRvZ2dsZUxheWVyRm9yTWFwVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfRk9SX01BUH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5UT0dHTEVfTEFZRVJfRk9SX01BUCxcbiAgICBtYXBJbmRleCxcbiAgICBsYXllcklkXG4gIH07XG59XG5cbnR5cGUgRmlsdGVyUGxvdE5ld1Byb3AgPSB7XG4gIHlBeGlzPzogbnVsbCB8IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHBsb3RUeXBlPzoge3R5cGU6IHN0cmluZ307XG59O1xuZXhwb3J0IHR5cGUgU2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBuZXdQcm9wOiBGaWx0ZXJQbG90TmV3UHJvcDtcbiAgdmFsdWVJbmRleD86IG51bWJlcjtcbn07XG4vKipcbiAqIFNldCB0aGUgcHJvcGVydHkgb2YgYSBmaWx0ZXIgcGxvdFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeFxuICogQHBhcmFtIG5ld1Byb3Aga2V5IHZhbHVlIG1hcHBpbmcgb2YgbmV3IHByb3AgYHt5QXhpczogJ2hpc3RvZ3JhbSd9YFxuICogQHBhcmFtIHZhbHVlSW5kZXggZGF0YUlkIGluZGV4XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlclBsb3QoXG4gIGlkeDogbnVtYmVyLFxuICBuZXdQcm9wOiBGaWx0ZXJQbG90TmV3UHJvcCxcbiAgdmFsdWVJbmRleD86IG51bWJlclxuKTogTWVyZ2U8U2V0RmlsdGVyUGxvdFVwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9QTE9UfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GSUxURVJfUExPVCxcbiAgICBpZHgsXG4gICAgbmV3UHJvcCxcbiAgICB2YWx1ZUluZGV4XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFNldE1hcEluZm9VcGRhdGVyQWN0aW9uID0ge1xuICBpbmZvOiBhbnk7XG59O1xuLyoqXG4gKiBTZXQgdGhlIHByb3BlcnR5IG9mIGEgZmlsdGVyIHBsb3RcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBpbmZvXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE1hcEluZm8oXG4gIGluZm86IGFueVxuKTogTWVyZ2U8U2V0TWFwSW5mb1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX01BUF9JTkZPfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9NQVBfSU5GTyxcbiAgICBpbmZvXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlc1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGZpbGVzOiBGaWxlW107XG4gIG9uRmluaXNoPyhyZXN1bHQ6IGFueSk6IGFueTtcbn07XG4vKipcbiAqIFRyaWdnZXIgZmlsZSBsb2FkaW5nIGRpc3BhdGNoIGBhZGREYXRhVG9NYXBgIGlmIHN1Y2NlZWQsIG9yIGBsb2FkRmlsZXNFcnJgIGlmIGZhaWxlZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZpbGVzIGFycmF5IG9mIGZpbGVibG9iXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlcyhcbiAgZmlsZXM6IEZpbGVbXSxcbiAgb25GaW5pc2g/OiAocmVzdWx0OiBhbnkpID0+IGFueVxuKTogTWVyZ2U8TG9hZEZpbGVzVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRVMsXG4gICAgZmlsZXMsXG4gICAgb25GaW5pc2hcbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxsZWQgd2l0aCBuZXh0IGZpbGUgdG8gbG9hZFxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkTmV4dEZpbGUoKToge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX05FWFRfRklMRX0ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfTkVYVF9GSUxFXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uID0ge1xuICByZXN1bHQ6IEZpbGVDYWNoZUl0ZW1bXTtcbn07XG4vKipcbiAqIGNhbGxlZCB3aGVuIGFsbCBmaWxlcyBhcmUgcHJvY2Vzc2VkIGFuZCBsb2FkZWRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSByZXN1bHRcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVzU3VjY2VzcyhcbiAgcmVzdWx0OiBGaWxlQ2FjaGVJdGVtW11cbik6IE1lcmdlPGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkxPQURfRklMRVNfU1VDQ0VTU30+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX1NVQ0NFU1MsXG4gICAgcmVzdWx0XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlU3RlcFN1Y2Nlc3NBY3Rpb24gPSB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZpbGVDYWNoZTogRmlsZUNhY2hlSXRlbVtdO1xufTtcbi8qKlxuICogY2FsbGVkIHdoZW4gc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmUgZmlsZSwgcmVhZHkgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBvbmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSByZXN1bHRcbiAqIEByZXR1cm5zIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEZpbGVTdGVwU3VjY2Vzcyh7XG4gIGZpbGVOYW1lLFxuICBmaWxlQ2FjaGVcbn06IHtcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG59KTogTWVyZ2U8TG9hZEZpbGVTdGVwU3VjY2Vzc0FjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVfU1RFUF9TVUNDRVNTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkxPQURfRklMRV9TVEVQX1NVQ0NFU1MsXG4gICAgZmlsZU5hbWUsXG4gICAgZmlsZUNhY2hlXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24gPSB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGVycm9yOiBhbnk7XG59O1xuLyoqXG4gKiBUcmlnZ2VyIGxvYWRpbmcgZmlsZSBlcnJvclxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtICBlcnJvclxuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRGaWxlc0VycihcbiAgZmlsZU5hbWU6IHN0cmluZyxcbiAgZXJyb3I6IGFueVxuKTogTWVyZ2U8TG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX0VSUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5MT0FEX0ZJTEVTX0VSUixcbiAgICBmaWxlTmFtZSxcbiAgICBlcnJvclxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb24gPSB7XG4gIGZlYXR1cmVzOiBGZWF0dXJlW107XG59O1xuLyoqXG4gKiBTdG9yZSBmZWF0dXJlcyB0byBzdGF0ZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZlYXR1cmVzXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZlYXR1cmVzKFxuICBmZWF0dXJlczogRmVhdHVyZVtdXG4pOiBNZXJnZTxTZXRGZWF0dXJlc1VwZGF0ZXJBY3Rpb24sIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU0VUX0ZFQVRVUkVTfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlNFVF9GRUFUVVJFUyxcbiAgICBmZWF0dXJlc1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRQb2x5Z29uRmlsdGVyTGF5ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBsYXllcjogTGF5ZXI7XG4gIGZlYXR1cmU6IEZlYXR1cmU7XG59O1xuLyoqXG4gKiBJdCB3aWxsIGFwcGx5IHRoZSBwcm92aWRlIGZlYXR1cmUgYXMgZmlsdGVyIHRvIHRoZSBnaXZlbiBsYXllci5cbiAqIElmIHRoZSBnaXZlbiBmZWF0dXJlIGlzIGFscmVhZHkgYXBwbGllZCBhcyBmaWx0ZXIgdG8gdGhlIGxheWVyLCBpdCB3aWxsIHJlbW92ZSB0aGUgbGF5ZXIgZnJvbSB0aGUgZmlsdGVyXG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcGFyYW0gbGF5ZXJcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFBvbHlnb25GaWx0ZXJMYXllcihcbiAgbGF5ZXI6IExheWVyLFxuICBmZWF0dXJlOiBGZWF0dXJlXG4pOiBNZXJnZTxTZXRQb2x5Z29uRmlsdGVyTGF5ZXJVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9QT0xZR09OX0ZJTFRFUl9MQVlFUn0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfUE9MWUdPTl9GSUxURVJfTEFZRVIsXG4gICAgbGF5ZXIsXG4gICAgZmVhdHVyZVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRTZWxlY3RlZEZlYXR1cmVVcGRhdGVyQWN0aW9uID0ge1xuICBmZWF0dXJlOiBGZWF0dXJlIHwgbnVsbDtcbiAgc2VsZWN0aW9uQ29udGV4dD86IEZlYXR1cmVTZWxlY3Rpb25Db250ZXh0O1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIGN1cnJlbnQgZmVhdHVyZSB0byBiZSBlZGl0ZWQvZGVsZXRlZCxcbiAqIGFuZCB0aGUgY29udGV4dCBvZiBob3cgdGhlIGZlYXR1cmUgd2FzIHNlbGVjdGVkLlxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBzZWxlY3Rpb25Db250ZXh0XG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFNlbGVjdGVkRmVhdHVyZShcbiAgZmVhdHVyZTogRmVhdHVyZSB8IG51bGwsXG4gIHNlbGVjdGlvbkNvbnRleHQ/OiBGZWF0dXJlU2VsZWN0aW9uQ29udGV4dFxuKTogTWVyZ2U8U2V0U2VsZWN0ZWRGZWF0dXJlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfRkVBVFVSRX0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfU0VMRUNURURfRkVBVFVSRSxcbiAgICBmZWF0dXJlLFxuICAgIHNlbGVjdGlvbkNvbnRleHRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGVsZXRlRmVhdHVyZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIGZlYXR1cmU6IEZlYXR1cmU7XG59O1xuLyoqXG4gKiBEZWxldGUgdGhlIGdpdmVuIGZlYXR1cmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcmV0dXJucyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUZlYXR1cmUoXG4gIGZlYXR1cmU6IEZlYXR1cmVcbik6IE1lcmdlPERlbGV0ZUZlYXR1cmVVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLkRFTEVURV9GRUFUVVJFfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkRFTEVURV9GRUFUVVJFLFxuICAgIGZlYXR1cmVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0RWRpdG9yTW9kZVVwZGF0ZXJBY3Rpb24gPSB7XG4gIG1vZGU6IHN0cmluZztcbn07XG4vKiogU2V0IHRoZSBtYXAgbW9kZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIG1vZGUgb25lIG9mIEVESVRPUl9NT0RFU1xuICogQHJldHVybnMgYWN0aW9uXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHtzZXRNYXBNb2RlfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuICogaW1wb3J0IHtFRElUT1JfTU9ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbiAqXG4gKiB0aGlzLnByb3BzLmRpc3BhdGNoKHNldE1hcE1vZGUoRURJVE9SX01PREVTLkRSQVdfUE9MWUdPTikpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RWRpdG9yTW9kZShcbiAgbW9kZTogc3RyaW5nXG4pOiBNZXJnZTxTZXRFZGl0b3JNb2RlVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5TRVRfRURJVE9SX01PREV9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0VESVRPUl9NT0RFLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQXBwbHlDUFVGaWx0ZXJVcGRhdGVyQWN0aW9uID0ge1xuICBkYXRhSWQ6IHN0cmluZyB8IHN0cmluZ1tdO1xufTtcbi8qKlxuICogVHJpZ2dlciBDUFUgZmlsdGVyIG9mIHNlbGVjdGVkIGRhdGFzZXRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBkYXRhSWQgLSBzaW5nbGUgZGF0YUlkIG9yIGFuIGFycmF5IG9mIGRhdGFJZHNcbiAqIEByZXR1cm5zIGFjdGlvblxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDUFVGaWx0ZXIoXG4gIGRhdGFJZDogc3RyaW5nIHwgc3RyaW5nW11cbik6IE1lcmdlPEFwcGx5Q1BVRmlsdGVyVXBkYXRlckFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5BUFBMWV9DUFVfRklMVEVSfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLkFQUExZX0NQVV9GSUxURVIsXG4gICAgZGF0YUlkXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFRvZ2dsZUVkaXRvclZpc2liaWxpdHlVcGRhdGVyQWN0aW9uID0gdm9pZDtcbi8qKlxuICogVG9nZ2xlIGVkaXRvciBsYXllciB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdmlzU3RhdGVBY3Rpb25zXG4gKiBAcmV0dXJuIGFjdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSgpOiBNZXJnZTxcbiAgVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuVE9HR0xFX0VESVRPUl9WSVNJQklMSVRZfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuVE9HR0xFX0VESVRPUl9WSVNJQklMSVRZXG4gIH07XG59XG5cbnR5cGUgRmlsZUNvbnRlbnQgPSB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGhlYWRlcjogc3RyaW5nW107XG4gIGRhdGE6IGFueTtcbn07XG5leHBvcnQgdHlwZSBOZXh0RmlsZUJhdGNoVXBkYXRlckFjdGlvbiA9IHtcbiAgcGF5bG9hZDoge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4gICAgZ2VuOiBBc3luY0dlbmVyYXRvcjxGaWxlQ29udGVudD47XG4gICAgZmlsZU5hbWU6IHN0cmluZztcbiAgICBwcm9ncmVzcz86IGFueTtcbiAgICBhY2N1bXVsYXRlZD86IGFueTtcbiAgICBvbkZpbmlzaDogKHJlc3VsdDogYW55KSA9PiBhbnk7XG4gIH07XG59O1xuLyoqXG4gKiBQcm9jZXNzIHRoZSBuZXh0IGZpbGUgYmF0Y2hcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gYmF0Y2ggcGF5bG9hZFxuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRGaWxlQmF0Y2goXG4gIHBheWxvYWQ6IE5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uWydwYXlsb2FkJ11cbik6IE1lcmdlPE5leHRGaWxlQmF0Y2hVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLk5FWFRfRklMRV9CQVRDSH0+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5ORVhUX0ZJTEVfQkFUQ0gsXG4gICAgcGF5bG9hZFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBQcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyQWN0aW9uID0ge1xuICBwYXlsb2FkOiB7XG4gICAgY29udGVudDogRmlsZUNvbnRlbnQ7XG4gICAgZmlsZUNhY2hlOiBGaWxlQ2FjaGVJdGVtW107XG4gIH07XG59O1xuLyoqXG4gKiBQcm9jZXNzIHRoZSBmaWxlIGNvbnRlbnRcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBwYXlsb2FkIC0gdGhlIGZpbGUgY29udGVudFxuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NGaWxlQ29udGVudChcbiAgcGF5bG9hZDogUHJvY2Vzc0ZpbGVDb250ZW50VXBkYXRlckFjdGlvblsncGF5bG9hZCddXG4pOiBNZXJnZTxQcm9jZXNzRmlsZUNvbnRlbnRVcGRhdGVyQWN0aW9uLCB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlBST0NFU1NfRklMRV9DT05URU5UfT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFjdGlvblR5cGVzLlBST0NFU1NfRklMRV9DT05URU5ULFxuICAgIHBheWxvYWRcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uID0ge1xuICBjb25maWc6IHtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgICB0aW1lRm9ybWF0Pzogc3RyaW5nO1xuICB9O1xufTtcbi8qKlxuICogU2V0IGxheWVyIGFuaW1hdGlvbiB0aW1lIGZvcm1hdCBhbmQgdGltZXpvbmVcbiAqIEBtZW1iZXJvZiB2aXNTdGF0ZUFjdGlvbnNcbiAqIEBwYXJhbSBjb25maWcgLSB7dGltZUZvcm1hdDogc3RyaW5nLCB0aW1lem9uZTogc3RyaW5nfVxuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldExheWVyQW5pbWF0aW9uVGltZUNvbmZpZyhcbiAgY29uZmlnOiBTZXRMYXllckFuaW1hdGlvblRpbWVDb25maWdBY3Rpb25bJ2NvbmZpZyddXG4pOiBNZXJnZTxcbiAgU2V0TGF5ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9MQVlFUl9BTklNQVRJT05fVElNRV9DT05GSUd9XG4+IHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBBY3Rpb25UeXBlcy5TRVRfTEFZRVJfQU5JTUFUSU9OX1RJTUVfQ09ORklHLFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uID0ge1xuICBpZHg6IG51bWJlcjtcbiAgY29uZmlnOiB7XG4gICAgdGltZXpvbmU/OiBzdHJpbmc7XG4gICAgdGltZUZvcm1hdD86IHN0cmluZztcbiAgfTtcbn07XG4vKipcbiAqIFNldCBGaWx0ZXIgYW5pbWF0aW9uIHRpbWUgZm9ybWF0IGFuZCB0aW1lem9uZVxuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGlkeFxuICogQHBhcmFtIGNvbmZpZ1xuICogQHJldHVybiBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZpbHRlckFuaW1hdGlvblRpbWVDb25maWcoXG4gIGlkeDogU2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvblsnaWR4J10sXG4gIGNvbmZpZzogU2V0RmlsdGVyQW5pbWF0aW9uVGltZUNvbmZpZ0FjdGlvblsnY29uZmlnJ11cbik6IE1lcmdlPFxuICBTZXRGaWx0ZXJBbmltYXRpb25UaW1lQ29uZmlnQWN0aW9uLFxuICB7dHlwZTogdHlwZW9mIEFjdGlvblR5cGVzLlNFVF9GSUxURVJfQU5JTUFUSU9OX1RJTUVfQ09ORklHfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU0VUX0ZJTFRFUl9BTklNQVRJT05fVElNRV9DT05GSUcsXG4gICAgaWR4LFxuICAgIGNvbmZpZ1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBMYXllckZpbHRlcmVkSXRlbXNDaGFuZ2VBY3Rpb24gPSB7XG4gIGV2ZW50OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb3VudDogbnVtYmVyO1xuICB9O1xuICBsYXllcjogTGF5ZXI7XG59O1xuXG4vKipcbiAqIGRlY2suZ2wgbGF5ZXIgZ3B1IGZpbHRlciBjYWxsYmFja1xuICogQG1lbWJlcm9mIHZpc1N0YXRlQWN0aW9uc1xuICogQHBhcmFtIGxheWVyXG4gKiBAcGFyYW0gZXZlbnRcbiAqIEByZXR1cm4gYWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXllckZpbHRlcmVkSXRlbXNDaGFuZ2UoXG4gIGxheWVyOiBMYXllckZpbHRlcmVkSXRlbXNDaGFuZ2VBY3Rpb25bJ2xheWVyJ10sXG4gIGV2ZW50OiBMYXllckZpbHRlcmVkSXRlbXNDaGFuZ2VBY3Rpb25bJ2V2ZW50J11cbik6IE1lcmdlPExheWVyRmlsdGVyZWRJdGVtc0NoYW5nZUFjdGlvbiwge3R5cGU6IHR5cGVvZiBBY3Rpb25UeXBlcy5MQVlFUl9GSUxURVJFRF9JVEVNU19DSEFOR0V9PiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfRklMVEVSRURfSVRFTVNfQ0hBTkdFLFxuICAgIGxheWVyLFxuICAgIGV2ZW50XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb24gPSB7XG4gIGlkeDogbnVtYmVyO1xuICBlbmFibGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc3luY1RpbWVGaWx0ZXJXaXRoTGF5ZXJUaW1lbGluZShcbiAgaWR4OiBTeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lQWN0aW9uWydpZHgnXSxcbiAgZW5hYmxlOiBTeW5jVGltZUZpbHRlcldpdGhMYXllclRpbWVsaW5lQWN0aW9uWydlbmFibGUnXVxuKTogTWVyZ2U8XG4gIFN5bmNUaW1lRmlsdGVyV2l0aExheWVyVGltZWxpbmVBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU1lOQ19USU1FX0ZJTFRFUl9XSVRIX0xBWUVSX1RJTUVMSU5FfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU1lOQ19USU1FX0ZJTFRFUl9XSVRIX0xBWUVSX1RJTUVMSU5FLFxuICAgIGlkeCxcbiAgICBlbmFibGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgc2V0VGltZUZpbHRlclN5bmNUaW1lbGluZU1vZGVBY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1vZGU6IFN5bmNUaW1lbGluZU1vZGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0VGltZUZpbHRlclN5bmNUaW1lbGluZU1vZGUoe1xuICBpZCxcbiAgbW9kZVxufTogc2V0VGltZUZpbHRlclN5bmNUaW1lbGluZU1vZGVBY3Rpb24pOiBNZXJnZTxcbiAgc2V0VGltZUZpbHRlclN5bmNUaW1lbGluZU1vZGVBY3Rpb24sXG4gIHt0eXBlOiB0eXBlb2YgQWN0aW9uVHlwZXMuU1lOQ19USU1FX0ZJTFRFUl9USU1FTElORV9NT0RFfVxuPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuU1lOQ19USU1FX0ZJTFRFUl9USU1FTElORV9NT0RFLFxuICAgIGlkLFxuICAgIG1vZGVcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlTmV3RGF0YXNldFN1Y2Nlc3NQYXlsb2FkID0ge1xuICByZXN1bHRzOiAoUHJvbWlzZUZ1bGZpbGxlZFJlc3VsdDxLZXBsZXJUYWJsZT4gfCBQcm9taXNlUmVqZWN0ZWRSZXN1bHQpW107XG4gIGFkZFRvTWFwT3B0aW9uczogQWRkRGF0YVRvTWFwUGF5bG9hZFsnb3B0aW9ucyddO1xufTtcblxuLyoqXG4gKiBDYWxsZWQgd2hlbiBhIG5ldyBkYXRhc2V0IGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IHZpYSBhc3luYyB0YWJsZSBtZXRob2RzXG4gKiBAcGFyYW0gcGF5bG9hZFxuICogQHBhcmFtIHBheWxvYWQucmVzdWx0cyAtIHJlc3VsdHMgb2YgcHJvbWlzZXMuYWxsU2V0dGx0ZWRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVOZXdEYXRhc2V0U3VjY2VzcyA9IGNyZWF0ZUFjdGlvbjxDcmVhdGVOZXdEYXRhc2V0U3VjY2Vzc1BheWxvYWQ+KFxuICBBY3Rpb25UeXBlcy5DUkVBVEVfTkVXX0RBVEFTRVRfU1VDQ0VTU1xuKTtcblxuLyoqXG4gKiBUaGlzIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCB0byBncm91cCBhY3Rpb25zIGluIGRvY3NcbiAqL1xuLyoqXG4gKiBBY3Rpb25zIGhhbmRsZWQgbW9zdGx5IGJ5IGB2aXNTdGF0ZWAgcmVkdWNlci5cbiAqIFRoZXkgbWFuYWdlIGhvdyBkYXRhIGlzIHByb2Nlc3NlZCwgZmlsdGVyZWQgYW5kIGRpc3BsYXllZCBvbiB0aGUgbWFwIGJ5IG9wZXJhdGVzIG9uIGxheWVycyxcbiAqIGZpbHRlcnMgYW5kIGludGVyYWN0aW9uIHNldHRpbmdzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCB2aXNTdGF0ZUFjdGlvbnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQXVCQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUE1QkE7QUFDQTs7QUFFQTs7QUEyQkE7QUFDQTs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxnQkFBZ0JBLENBQzlCQyxVQUFrQixFQUNsQkMsY0FBMkIsRUFDM0JDLFVBQW1CLEVBQ2tFO0VBQ3JGLE9BQU87SUFDTEMsSUFBSSxFQUFFQyx1QkFBVyxDQUFDQyxrQkFBa0I7SUFDcENMLFVBQVUsRUFBVkEsVUFBVTtJQUNWQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsVUFBVSxFQUFWQTtFQUNGLENBQUM7QUFDSDtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0ksaUJBQWlCQSxDQUMvQkMsUUFBZSxFQUNmQyxTQUFtQyxFQUNvRDtFQUN2RixPQUFPO0lBQ0xMLElBQUksRUFBRUMsdUJBQVcsQ0FBQ0ssbUJBQW1CO0lBQ3JDRixRQUFRLEVBQVJBLFFBQVE7SUFDUkMsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSDtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxxQkFBcUJBLENBQ25DQyxP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