mxcad-app 1.0.32 → 1.0.33

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 (64) hide show
  1. package/dist/chunks/en-US.js.gz +0 -0
  2. package/dist/chunks/identificationFrame.js.gz +0 -0
  3. package/dist/chunks/index10.js.gz +0 -0
  4. package/dist/chunks/index11.js.gz +0 -0
  5. package/dist/chunks/index12.js.gz +0 -0
  6. package/dist/chunks/index18.js.gz +0 -0
  7. package/dist/chunks/index2.js.gz +0 -0
  8. package/dist/chunks/index21.js.gz +0 -0
  9. package/dist/chunks/index25.js.gz +0 -0
  10. package/dist/chunks/index28.js.gz +0 -0
  11. package/dist/chunks/index29.js.gz +0 -0
  12. package/dist/chunks/index30.js.gz +0 -0
  13. package/dist/chunks/index36.js.gz +0 -0
  14. package/dist/chunks/index37.js.gz +0 -0
  15. package/dist/chunks/index38.js.gz +0 -0
  16. package/dist/chunks/index4.js.gz +0 -0
  17. package/dist/chunks/index40.js.gz +0 -0
  18. package/dist/chunks/index41.js.gz +0 -0
  19. package/dist/chunks/index42.js.gz +0 -0
  20. package/dist/chunks/index43.js.gz +0 -0
  21. package/dist/chunks/index5.js.gz +0 -0
  22. package/dist/chunks/index6.js.gz +0 -0
  23. package/dist/chunks/index9.js.gz +0 -0
  24. package/dist/chunks/ko-KR.js.gz +0 -0
  25. package/dist/chunks/lib.js.gz +0 -0
  26. package/dist/chunks/mapbox-gl.js.gz +0 -0
  27. package/dist/chunks/mapbox.js.gz +0 -0
  28. package/dist/chunks/mxcad.js.gz +0 -0
  29. package/dist/chunks/mxdraw.js.gz +0 -0
  30. package/dist/chunks/sandbox.js.gz +0 -0
  31. package/dist/chunks/zh-TW.js.gz +0 -0
  32. package/dist/index.cjs.gz +0 -0
  33. package/dist/index.d.ts +26 -26
  34. package/dist/index.umd.js.gz +0 -0
  35. package/dist/mxcad.d.ts +110 -0
  36. package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/en-US.ts +9 -5
  37. package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/idMap.json.gz +0 -0
  38. package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/ko-KR.ts +9 -5
  39. package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/zh-CN.ts +9 -5
  40. package/dist/mxcadAppAssets/languages/mx-cad-app-vuetify3__1_0_0/messages/zh-TW.ts +9 -5
  41. package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/en-US.ts +5 -1
  42. package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/idMap.json.gz +0 -0
  43. package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/ko-KR.ts +5 -1
  44. package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/zh-CN.ts +5 -1
  45. package/dist/mxcadAppAssets/languages/pluginIdentifyPattern__1_0_0/messages/zh-TW.ts +5 -1
  46. package/dist/mxcadAppAssets/mxcad.umd.js.gz +0 -0
  47. package/dist/mxcadAppAssets/mxdraw.umd.js.gz +0 -0
  48. package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.js.gz +0 -0
  49. package/dist/mxcadAppAssets/wasm/2d/mxdrawassembly_min.wasm.gz +0 -0
  50. package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_min.js.gz +0 -0
  51. package/dist/mxcadAppAssets/wasm/2d-st/mxdrawassembly_minst.wasm.gz +0 -0
  52. package/dist/mxdraw.d.ts +1 -1
  53. package/dist/styles/style.css.gz +0 -0
  54. package/packToolPlugin/api-map.json.d.ts +6 -0
  55. package/packToolPlugin/{index-BjWOMSdo.mjs → index-Da3ocqZH.mjs} +18 -34
  56. package/packToolPlugin/{index-COZtdG6B.js → index-diNswxuk.js} +19 -35
  57. package/packToolPlugin/rollup/index.cjs +1 -1
  58. package/packToolPlugin/rollup/index.mjs +1 -1
  59. package/packToolPlugin/vite/index.cjs +1 -1
  60. package/packToolPlugin/vite/index.mjs +1 -1
  61. package/packToolPlugin/webpack/index.cjs +6 -3
  62. package/packToolPlugin/webpack/index.d.ts.map +1 -1
  63. package/packToolPlugin/webpack/index.mjs +6 -3
  64. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const path = require("path");
4
4
  const fs = require("fs");
5
- const index = require("../index-COZtdG6B.js");
5
+ const index = require("../index-diNswxuk.js");
6
6
  function _interopNamespaceDefault(e) {
7
7
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
8
  if (e) {
@@ -1,6 +1,6 @@
1
1
  import { resolve } from "path";
2
2
  import * as fs from "fs";
3
- import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-BjWOMSdo.mjs";
3
+ import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, f as generateRuntimeConfigScript, c as copyDir, h as getContentType, b as createGlobalUniversalMiddleware, e as getApiMap } from "../index-Da3ocqZH.mjs";
4
4
  function mxcadAssetsPlugin(options = {}) {
5
5
  const resolvedOptions = resolveOptions(options);
6
6
  const sourceAssetsPath = getSourceAssetsPath();
@@ -2,7 +2,7 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const path = require("path");
4
4
  const fs = require("fs");
5
- const index = require("../index-COZtdG6B.js");
5
+ const index = require("../index-diNswxuk.js");
6
6
  function _interopNamespaceDefault(e) {
7
7
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
8
  if (e) {
@@ -1,6 +1,6 @@
1
1
  import { resolve } from "path";
2
2
  import * as fs from "fs";
3
- import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-BjWOMSdo.mjs";
3
+ import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, c as copyDir, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, e as getApiMap, f as generateRuntimeConfigScript } from "../index-Da3ocqZH.mjs";
4
4
  function mxcadAssetsPlugin(options = {}) {
5
5
  let config;
6
6
  const resolvedOptions = resolveOptions(options);
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const webpack = require("webpack");
4
4
  const fs = require("fs");
5
5
  const path = require("path");
6
- const index = require("../index-COZtdG6B.js");
6
+ const index = require("../index-diNswxuk.js");
7
7
  function _interopNamespaceDefault(e) {
8
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
9
9
  if (e) {
@@ -200,7 +200,10 @@ class MxCadAssetsWebpackPlugin {
200
200
  } else {
201
201
  logger.info(`[mxcad-assets] ✅ Copied to ${targetAssetsPath}`);
202
202
  }
203
- callback(err2);
203
+ try {
204
+ callback(err2);
205
+ } catch (e) {
206
+ }
204
207
  });
205
208
  });
206
209
  }
@@ -250,4 +253,4 @@ function isSource(asset) {
250
253
  }
251
254
  exports.MxCadAssetsWebpackPlugin = MxCadAssetsWebpackPlugin;
252
255
  exports.default = MxCadAssetsWebpackPlugin;
253
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtSW5kZXhIdG1sKGNvbXBpbGVyOiBDb21waWxlciwgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IGluamVjdFNjcmlwdCA9IChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMucmVzb2x2ZWRDb25maWc/LnB1YmxpY1BhdGggfHwgYC4vJHt0aGlzLm9wdGlvbnMub3V0cHV0RGlyfS9gO1xyXG4gICAgICBjb25zdCBzY3JpcHQgPSBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aCk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFtmaWxlbmFtZSwgYXNzZXRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbXBpbGF0aW9uLmFzc2V0cykpIHtcclxuICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5odG1sJykgJiYgaXNTb3VyY2UoYXNzZXQpKSB7XHJcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhc3NldC5zb3VyY2UoKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHNvdXJjZS5pbmNsdWRlcygnPC9oZWFkPicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gc291cmNlLnJlcGxhY2UoJzwvaGVhZD4nLCBgJHtzY3JpcHR9PC9oZWFkPmApO1xyXG4gICAgICAgICAgICBjb21waWxhdGlvbi5hc3NldHNbZmlsZW5hbWVdID0ge1xyXG4gICAgICAgICAgICAgIHNvdXJjZTogKCkgPT4gbW9kaWZpZWQsXHJcbiAgICAgICAgICAgICAgc2l6ZTogKCkgPT4gQnVmZmVyLmJ5dGVMZW5ndGgobW9kaWZpZWQsICd1dGY4JyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgSW5qZWN0ZWQgaW50byAke2ZpbGVuYW1lfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmlK/mjIEgcHJvY2Vzc0Fzc2V0c++8iFdlYnBhY2sgNSvvvIlcclxuICAgIGlmICgncHJvY2Vzc0Fzc2V0cycgaW4gY29tcGlsZXIuaG9va3MpIHtcclxuICAgICAgY29tcGlsZXIuaG9va3MuY29tcGlsYXRpb24udGFwKCdNeENhZEFzc2V0c1BsdWdpbicsIChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgICAvLyDinIUg5L2/55So5q2j56Gu55qE6Zi25q615bi46YeP77yaQURESVRJT05BTO+8iOS4jeaYryBBRERJVElPTlPvvIlcclxuICAgICAgICBjb21waWxhdGlvbi5ob29rcy5wcm9jZXNzQXNzZXRzLnRhcChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ014Q2FkQXNzZXRzUGx1Z2luJyxcclxuICAgICAgICAgICAgc3RhZ2U6IENvbXBpbGF0aW9uLlBST0NFU1NfQVNTRVRTX1NUQUdFX0FERElUSU9OQUwsIC8vIOKchSDpnZnmgIHlsZ7mgKfvvIznm7TmjqXpgJrov4fnsbvorr/pl65cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBpbmplY3RTY3JpcHRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyDlj6/pgInvvJrmt7vliqDnsbvlnovkv6Hmga/vvIhXZWJwYWNrIOexu+Wei++8iVxyXG4gICAgICAgIC8vIGNvbXBpbGF0aW9uOiBDb21waWxhdGlvblxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFdlYnBhY2sgNCDlhbzlrrnvvJrkvb/nlKggZW1pdCDpkqnlrZBcclxuICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBBc3luYygnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uLCBjYikgPT4ge1xyXG4gICAgICAgIGluamVjdFNjcmlwdChjb21waWxhdGlvbik7XHJcbiAgICAgICAgY2IoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyDlt6Xlhbflh73mlbBcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1NvdXJjZShhc3NldDogYW55KTogYXNzZXQgaXMgeyBzb3VyY2UoKTogc3RyaW5nIHwgQnVmZmVyIH0ge1xyXG4gIHJldHVybiBhc3NldCAmJiB0eXBlb2YgYXNzZXQuc291cmNlID09PSAnZnVuY3Rpb24nO1xyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbjsiXSwibmFtZXMiOlsicmVzb2x2ZU9wdGlvbnMiLCJnZXRTb3VyY2VBc3NldHNQYXRoIiwiZnMiLCJnZXRFeHRlcm5hbHMiLCJwYXRoIiwiY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSIsImNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSIsInNoYXJlZENvcHlEaXIiLCJlcnIiLCJnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQiLCJDb21waWxhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7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
256
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb25zdCBpbmplY3RTY3JpcHQgPSAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSB0aGlzLnJlc29sdmVkQ29uZmlnPy5wdWJsaWNQYXRoIHx8IGAuLyR7dGhpcy5vcHRpb25zLm91dHB1dERpcn0vYDtcclxuICAgICAgY29uc3Qgc2NyaXB0ID0gZ2VuZXJhdGVSdW50aW1lQ29uZmlnU2NyaXB0KHB1YmxpY1BhdGgpO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBbZmlsZW5hbWUsIGFzc2V0XSBvZiBPYmplY3QuZW50cmllcyhjb21waWxhdGlvbi5hc3NldHMpKSB7XHJcbiAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuaHRtbCcpICYmIGlzU291cmNlKGFzc2V0KSkge1xyXG4gICAgICAgICAgY29uc3Qgc291cmNlID0gYXNzZXQuc291cmNlKCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChzb3VyY2UuaW5jbHVkZXMoJzwvaGVhZD4nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllZCA9IHNvdXJjZS5yZXBsYWNlKCc8L2hlYWQ+JywgYCR7c2NyaXB0fTwvaGVhZD5gKTtcclxuICAgICAgICAgICAgY29tcGlsYXRpb24uYXNzZXRzW2ZpbGVuYW1lXSA9IHtcclxuICAgICAgICAgICAgICBzb3VyY2U6ICgpID0+IG1vZGlmaWVkLFxyXG4gICAgICAgICAgICAgIHNpemU6ICgpID0+IEJ1ZmZlci5ieXRlTGVuZ3RoKG1vZGlmaWVkLCAndXRmOCcpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g4pyFIEluamVjdGVkIGludG8gJHtmaWxlbmFtZX1gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5qOA5p+l5piv5ZCm5pSv5oyBIHByb2Nlc3NBc3NldHPvvIhXZWJwYWNrIDUr77yJXHJcbiAgICBpZiAoJ3Byb2Nlc3NBc3NldHMnIGluIGNvbXBpbGVyLmhvb2tzKSB7XHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmNvbXBpbGF0aW9uLnRhcCgnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgICAgLy8g4pyFIOS9v+eUqOato+ehrueahOmYtuauteW4uOmHj++8mkFERElUSU9OQUzvvIjkuI3mmK8gQURESVRJT05T77yJXHJcbiAgICAgICAgY29tcGlsYXRpb24uaG9va3MucHJvY2Vzc0Fzc2V0cy50YXAoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdNeENhZEFzc2V0c1BsdWdpbicsXHJcbiAgICAgICAgICAgIHN0YWdlOiBDb21waWxhdGlvbi5QUk9DRVNTX0FTU0VUU19TVEFHRV9BRERJVElPTkFMLCAvLyDinIUg6Z2Z5oCB5bGe5oCn77yM55u05o6l6YCa6L+H57G76K6/6ZeuXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaW5qZWN0U2NyaXB0XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8g5Y+v6YCJ77ya5re75Yqg57G75Z6L5L+h5oGv77yIV2VicGFjayDnsbvlnovvvIlcclxuICAgICAgICAvLyBjb21waWxhdGlvbjogQ29tcGlsYXRpb25cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBXZWJwYWNrIDQg5YW85a6577ya5L2/55SoIGVtaXQg6ZKp5a2QXHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwQXN5bmMoJ014Q2FkQXNzZXRzUGx1Z2luJywgKGNvbXBpbGF0aW9uOiBDb21waWxhdGlvbiwgY2IpID0+IHtcclxuICAgICAgICBpbmplY3RTY3JpcHQoY29tcGlsYXRpb24pO1xyXG4gICAgICAgIGNiKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8g5bel5YW35Ye95pWwXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5mdW5jdGlvbiBlbnN1cmVMZWFkaW5nU2xhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzdHJcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTb3VyY2UoYXNzZXQ6IGFueSk6IGFzc2V0IGlzIHsgc291cmNlKCk6IHN0cmluZyB8IEJ1ZmZlciB9IHtcclxuICByZXR1cm4gYXNzZXQgJiYgdHlwZW9mIGFzc2V0LnNvdXJjZSA9PT0gJ2Z1bmN0aW9uJztcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBNeENhZEFzc2V0c1dlYnBhY2tQbHVnaW47Il0sIm5hbWVzIjpbInJlc29sdmVPcHRpb25zIiwiZ2V0U291cmNlQXNzZXRzUGF0aCIsImZzIiwiZ2V0RXh0ZXJuYWxzIiwicGF0aCIsImNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUiLCJjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUiLCJzaGFyZWRDb3B5RGlyIiwiZXJyIiwi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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packToolPluginSrc/webpack/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAIhD,OAAO,EACL,wBAAwB,EAWzB,MAAM,WAAW,CAAC;AAEnB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAKrB;gBAEU,OAAO,CAAC,EAAE,wBAAwB;IAU9C,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwB/B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,wBAAwB;IAiFhC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,kBAAkB;CA2C3B;AAgBD,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packToolPluginSrc/webpack/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAIhD,OAAO,EACL,wBAAwB,EAWzB,MAAM,WAAW,CAAC;AAEnB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAC,CAKrB;gBAEU,OAAO,CAAC,EAAE,wBAAwB;IAU9C,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAwB/B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,wBAAwB;IAiFhC,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,kBAAkB;CA2C3B;AAgBD,eAAe,wBAAwB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Compilation } from "webpack";
2
2
  import * as fs from "fs";
3
3
  import * as path from "path";
4
- import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, c as copyDir, f as generateRuntimeConfigScript } from "../index-BjWOMSdo.mjs";
4
+ import { r as resolveOptions, g as getSourceAssetsPath, a as getExternals, b as createGlobalUniversalMiddleware, d as createMxCadAssetsMiddleware, c as copyDir, f as generateRuntimeConfigScript } from "../index-Da3ocqZH.mjs";
5
5
  class MxCadAssetsWebpackPlugin {
6
6
  options;
7
7
  sourceAssetsPath;
@@ -180,7 +180,10 @@ class MxCadAssetsWebpackPlugin {
180
180
  } else {
181
181
  logger.info(`[mxcad-assets] ✅ Copied to ${targetAssetsPath}`);
182
182
  }
183
- callback(err2);
183
+ try {
184
+ callback(err2);
185
+ } catch (e) {
186
+ }
184
187
  });
185
188
  });
186
189
  }
@@ -232,4 +235,4 @@ export {
232
235
  MxCadAssetsWebpackPlugin,
233
236
  MxCadAssetsWebpackPlugin as default
234
237
  };
235
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtSW5kZXhIdG1sKGNvbXBpbGVyOiBDb21waWxlciwgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IGluamVjdFNjcmlwdCA9IChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMucmVzb2x2ZWRDb25maWc/LnB1YmxpY1BhdGggfHwgYC4vJHt0aGlzLm9wdGlvbnMub3V0cHV0RGlyfS9gO1xyXG4gICAgICBjb25zdCBzY3JpcHQgPSBnZW5lcmF0ZVJ1bnRpbWVDb25maWdTY3JpcHQocHVibGljUGF0aCk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IFtmaWxlbmFtZSwgYXNzZXRdIG9mIE9iamVjdC5lbnRyaWVzKGNvbXBpbGF0aW9uLmFzc2V0cykpIHtcclxuICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5odG1sJykgJiYgaXNTb3VyY2UoYXNzZXQpKSB7XHJcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhc3NldC5zb3VyY2UoKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgaWYgKHNvdXJjZS5pbmNsdWRlcygnPC9oZWFkPicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gc291cmNlLnJlcGxhY2UoJzwvaGVhZD4nLCBgJHtzY3JpcHR9PC9oZWFkPmApO1xyXG4gICAgICAgICAgICBjb21waWxhdGlvbi5hc3NldHNbZmlsZW5hbWVdID0ge1xyXG4gICAgICAgICAgICAgIHNvdXJjZTogKCkgPT4gbW9kaWZpZWQsXHJcbiAgICAgICAgICAgICAgc2l6ZTogKCkgPT4gQnVmZmVyLmJ5dGVMZW5ndGgobW9kaWZpZWQsICd1dGY4JyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgSW5qZWN0ZWQgaW50byAke2ZpbGVuYW1lfWApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmlK/mjIEgcHJvY2Vzc0Fzc2V0c++8iFdlYnBhY2sgNSvvvIlcclxuICAgIGlmICgncHJvY2Vzc0Fzc2V0cycgaW4gY29tcGlsZXIuaG9va3MpIHtcclxuICAgICAgY29tcGlsZXIuaG9va3MuY29tcGlsYXRpb24udGFwKCdNeENhZEFzc2V0c1BsdWdpbicsIChjb21waWxhdGlvbjogQ29tcGlsYXRpb24pID0+IHtcclxuICAgICAgICAvLyDinIUg5L2/55So5q2j56Gu55qE6Zi25q615bi46YeP77yaQURESVRJT05BTO+8iOS4jeaYryBBRERJVElPTlPvvIlcclxuICAgICAgICBjb21waWxhdGlvbi5ob29rcy5wcm9jZXNzQXNzZXRzLnRhcChcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ014Q2FkQXNzZXRzUGx1Z2luJyxcclxuICAgICAgICAgICAgc3RhZ2U6IENvbXBpbGF0aW9uLlBST0NFU1NfQVNTRVRTX1NUQUdFX0FERElUSU9OQUwsIC8vIOKchSDpnZnmgIHlsZ7mgKfvvIznm7TmjqXpgJrov4fnsbvorr/pl65cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBpbmplY3RTY3JpcHRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICAvLyDlj6/pgInvvJrmt7vliqDnsbvlnovkv6Hmga/vvIhXZWJwYWNrIOexu+Wei++8iVxyXG4gICAgICAgIC8vIGNvbXBpbGF0aW9uOiBDb21waWxhdGlvblxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFdlYnBhY2sgNCDlhbzlrrnvvJrkvb/nlKggZW1pdCDpkqnlrZBcclxuICAgICAgY29tcGlsZXIuaG9va3MuZW1pdC50YXBBc3luYygnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uLCBjYikgPT4ge1xyXG4gICAgICAgIGluamVjdFNjcmlwdChjb21waWxhdGlvbik7XHJcbiAgICAgICAgY2IoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyDlt6Xlhbflh73mlbBcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmZ1bmN0aW9uIGVuc3VyZUxlYWRpbmdTbGFzaChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHN0clxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1NvdXJjZShhc3NldDogYW55KTogYXNzZXQgaXMgeyBzb3VyY2UoKTogc3RyaW5nIHwgQnVmZmVyIH0ge1xyXG4gIHJldHVybiBhc3NldCAmJiB0eXBlb2YgYXNzZXQuc291cmNlID09PSAnZnVuY3Rpb24nO1xyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbjsiXSwibmFtZXMiOlsic2hhcmVkQ29weURpciIsImVyciJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CTyxNQUFNLHlCQUF5QjtBQUFBLEVBQzVCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQU9SLFlBQVksU0FBb0M7QUFDOUMsU0FBSyxVQUFVLGVBQWUsT0FBTztBQUNyQyxTQUFLLG1CQUFtQixvQkFBQTtBQUd4QixRQUFJLENBQUMsR0FBRyxXQUFXLEtBQUssZ0JBQWdCLEdBQUc7QUFDekMsWUFBTSxJ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
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrVG9vbFBsdWdpblNyYy93ZWJwYWNrL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE14Q2FkQXNzZXRzV2VicGFja1BsdWdpbi50c1xyXG4vLyBAdHMtaWdub3JlXHJcbmltcG9ydCB7IENvbXBpbGVyLCBDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xyXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucyxcclxuICByZXNvbHZlT3B0aW9ucyxcclxuICBnZXRTb3VyY2VBc3NldHNQYXRoLFxyXG4gIGdlbmVyYXRlUnVudGltZUNvbmZpZ1NjcmlwdCxcclxuICBnZXRDb250ZW50VHlwZSxcclxuICBjb3B5RGlyIGFzIHNoYXJlZENvcHlEaXIsXHJcbiAgZ2V0RXh0ZXJuYWxzLFxyXG4gIGhhbmRsZUNvbmZpZ1JlcXVlc3QsXHJcbiAgcmVzb2x2ZVNhZmVQYXRoLFxyXG4gIGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUsXHJcbiAgY3JlYXRlTXhDYWRBc3NldHNNaWRkbGV3YXJlLFxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcblxyXG5leHBvcnQgY2xhc3MgTXhDYWRBc3NldHNXZWJwYWNrUGx1Z2luIHtcclxuICBwcml2YXRlIG9wdGlvbnM6IFJlcXVpcmVkPE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucz47XHJcbiAgcHJpdmF0ZSBzb3VyY2VBc3NldHNQYXRoOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXNvbHZlZENvbmZpZz86IHtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHB1YmxpY1BhdGg6IHN0cmluZztcclxuICAgIG91dHB1dERpcjogc3RyaW5nO1xyXG4gICAgbG9nZ2VyOiBhbnk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IE14Q2FkQXNzZXRzUGx1Z2luT3B0aW9ucykge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICB0aGlzLnNvdXJjZUFzc2V0c1BhdGggPSBnZXRTb3VyY2VBc3NldHNQYXRoKCk7XHJcblxyXG4gICAgLy8g8J+UpSDlvLrliLbpqozor4Egc291cmNlQXNzZXRzUGF0aCDlrZjlnKhcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW214Y2FkLWFzc2V0c10gU291cmNlIGFzc2V0cyBub3QgZm91bmQ6ICR7dGhpcy5zb3VyY2VBc3NldHNQYXRofWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHkoY29tcGlsZXI6IENvbXBpbGVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBsb2dnZXIgPSBjb21waWxlci5nZXRJbmZyYXN0cnVjdHVyZUxvZ2dlcignTXhDYWRBc3NldHNQbHVnaW4nKTtcclxuICAgIC8vIPCfjLEgMS4gY29uZmlnUmVzb2x2ZWRcclxuICAgIHRoaXMuY29uZmlnUmVzb2x2ZWQoY29tcGlsZXIsIGxvZ2dlcik7XHJcbiAgICBjb25zdCBpc0RldlNlcnZlck1vZGUgPSBjb21waWxlci5vcHRpb25zLm1vZGUgIT09ICdwcm9kdWN0aW9uJ1xyXG5cclxuICAgIC8vIPCflKcgMi4g5by65Yi25rOo5YWlIGRldlNlcnZlcu+8iOaguOW/g++8iVxyXG4gICAgaWYgKGlzRGV2U2VydmVyTW9kZSkge1xyXG4gICAgICB0aGlzLmZvcmNlQ29uZmlndXJlRGV2U2VydmVyKGNvbXBpbGVyLCBsb2dnZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWcqOi/memHjOiuv+mXruWSjOS/ruaUuSB3ZWJwYWNrIOmFjee9rlxyXG4gICAgaWYgKCFjb21waWxlci5vcHRpb25zLmV4dGVybmFscykge1xyXG4gICAgICBjb21waWxlci5vcHRpb25zLmV4dGVybmFscyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8g5re75Yqg5oiW6KaG55uWIGV4dGVybmFscyDphY3nva5cclxuICAgIE9iamVjdC5hc3NpZ24oY29tcGlsZXIub3B0aW9ucy5leHRlcm5hbHMsIGdldEV4dGVybmFscyh0aGlzLm9wdGlvbnMubGlicmFyeU5hbWVzKSk7XHJcbiAgICAvLyDwn5OmIDMuIOaehOW7uuaXtuWkjeWItlxyXG4gICAgdGhpcy5jbG9zZUJ1bmRsZShjb21waWxlciwgbG9nZ2VyKTtcclxuXHJcbiAgICAvLyDwn46oIDQuIEhUTUwg5rOo5YWlXHJcbiAgICB0aGlzLnRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlciwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlnUmVzb2x2ZWQoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGlzUHJvZHVjdGlvbiA9IGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nO1xyXG4gICAgY29uc3QgcHVibGljUGF0aCA9IHRoaXMuaW5mZXJQdWJsaWNQYXRoKGNvbXBpbGVyKTtcclxuXHJcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnID0ge1xyXG4gICAgICBpc1Byb2R1Y3Rpb24sXHJcbiAgICAgIHB1YmxpY1BhdGgsXHJcbiAgICAgIG91dHB1dERpcixcclxuICAgICAgbG9nZ2VyLFxyXG4gICAgfTtcclxuXHJcbiAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+agCBSZXNvbHZlZDogcHVibGljUGF0aD0ke3B1YmxpY1BhdGh9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluZmVyUHVibGljUGF0aChjb21waWxlcjogQ29tcGlsZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IG91dHB1dE9wdGlvbnMgPSBjb21waWxlci5vcHRpb25zLm91dHB1dCB8fCB7fTtcclxuICAgIGNvbnN0IGRldlNlcnZlciA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICh0eXBlb2Ygb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBiYXNlID0gb3V0cHV0T3B0aW9ucy5wdWJsaWNQYXRoID09PSAnYXV0bycgPyAnLycgOiBvdXRwdXRPcHRpb25zLnB1YmxpY1BhdGg7XHJcbiAgICAgIHJldHVybiBlbnN1cmVMZWFkaW5nU2xhc2goYmFzZSkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRldlNlcnZlcikge1xyXG4gICAgICBpZiAodHlwZW9mIChkZXZTZXJ2ZXIgYXMgYW55KS5wdWJsaWNQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGJhc2UgPSAoZGV2U2VydmVyIGFzIGFueSkucHVibGljUGF0aCA9PT0gJ2F1dG8nID8gJy8nIDogKGRldlNlcnZlciBhcyBhbnkpLnB1YmxpY1BhdGg7XHJcbiAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChiYXNlKSArIG91dHB1dERpciArICcvJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCdzdGF0aWMnIGluIGRldlNlcnZlcikge1xyXG4gICAgICAgIGNvbnN0IHN0YXRpY0l0ZW1zID0gQXJyYXkuaXNBcnJheShkZXZTZXJ2ZXIuc3RhdGljKVxyXG4gICAgICAgICAgPyBkZXZTZXJ2ZXIuc3RhdGljXHJcbiAgICAgICAgICA6IChkZXZTZXJ2ZXIuc3RhdGljID8gW2RldlNlcnZlci5zdGF0aWNdIDogW10pO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGljSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyA/IGl0ZW0gOiB7IGRpcmVjdG9yeTogaXRlbSB9O1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb25maWcucHVibGljUGF0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUxlYWRpbmdTbGFzaChjb25maWcucHVibGljUGF0aCkgKyBvdXRwdXREaXIgKyAnLyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGAke291dHB1dERpcn0vYDtcclxuICB9XHJcblxyXG4gIC8vIPCflKUg5qC45b+D77ya5by65Yi25rOo5YWlIGRldlNlcnZlclxyXG4gIHByaXZhdGUgZm9yY2VDb25maWd1cmVEZXZTZXJ2ZXIoY29tcGlsZXI6IENvbXBpbGVyLCBsb2dnZXI6IGFueSkge1xyXG4gICAgY29uc3QgeyBvdXRwdXREaXIgfSA9IHRoaXMub3B0aW9ucztcclxuICAgIGNvbnN0IGJhc2VQYXRoID0gYC8ke291dHB1dERpci5yZXBsYWNlKC9eXFwvKy8sICcnKX1gO1xyXG4gICAgbGV0IGRldlNlcnZlckNvbmZpZyA9IGNvbXBpbGVyLm9wdGlvbnMuZGV2U2VydmVyO1xyXG5cclxuICAgIGlmICghZGV2U2VydmVyQ29uZmlnKSB7XHJcbiAgICAgIChjb21waWxlci5vcHRpb25zIGFzIGFueSkuZGV2U2VydmVyID0gZGV2U2VydmVyQ29uZmlnID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIDEuIOWFiOWkhOeQhiBXRFMgdjTvvIjkv53mjIHkuI3lj5jvvIlcclxuICAgIGNvbnN0IGhhc1NldHVwTWlkZGxld2FyZXMgPSAnc2V0dXBNaWRkbGV3YXJlcycgaW4gZGV2U2VydmVyQ29uZmlnO1xyXG5cclxuICAgIGlmIChoYXNTZXR1cE1pZGRsZXdhcmVzKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsID0gZGV2U2VydmVyQ29uZmlnLnNldHVwTWlkZGxld2FyZXM7XHJcbiAgICAgIGRldlNlcnZlckNvbmZpZy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgIHNlcnZlci5hcHAudXNlKGNyZWF0ZUdsb2JhbFVuaXZlcnNhbE1pZGRsZXdhcmUodGhpcy5vcHRpb25zKSk7XHJcbiAgICAgICAgc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzLnNvdXJjZUFzc2V0c1BhdGgsIHRoaXMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpciwgbG9nZ2VyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbD8uKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDwn5SlIDIuIFdEUyB2M++8muWKq+aMgSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlblxyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyLCBiYXNlUGF0aCwgbG9nZ2VyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0TWlkZGxld2FyZUZvcldEU3YzKGNvbXBpbGVyOiBDb21waWxlciwgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBhbnkpIHtcclxuICAgIGNvbnN0IHRoaXNPcHRpb25zID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgIGNvbnN0IGRlZmF1bHRQdWJsaWNEaXIgPSBwYXRoLmpvaW4oY29udGV4dCwgJ3B1YmxpYycsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgLy8gV0RTIHYzIOS8muWcqCBjb21waWxhdGlvbiDml7bmmrTpnLIgZGV2U2VydmVyXHJcbiAgICBjb25zdCBkZXZTZXJ2ZXIgPSBjb21waWxlci5kZXZTZXJ2ZXI7XHJcbiAgICBpZiAoZGV2U2VydmVyKSB7XHJcbiAgICAgIC8vIOKchSDmlrnms5UgMe+8muWmguaenCBkZXZTZXJ2ZXIuc2VydmVyIOWtmOWcqO+8iOW3suWIm+W7uu+8iVxyXG4gICAgICBpZiAoZGV2U2VydmVyLnNlcnZlciAmJiBkZXZTZXJ2ZXIuc2VydmVyLmFwcCkge1xyXG4gICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+iIEluamVjdGluZyBtaWRkbGV3YXJlIGRpcmVjdGx5IGludG8gZGV2U2VydmVyLnNlcnZlci5hcHBgKTtcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoY3JlYXRlR2xvYmFsVW5pdmVyc2FsTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5vcHRpb25zKSlcclxuICAgICAgICBkZXZTZXJ2ZXIuc2VydmVyLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8g4pyFIOaWueazlSAy77ya55uR5ZCsIHNlcnZlciDnmoQgJ2xpc3RlbmluZycg5LqL5Lu2XHJcbiAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuID0gZGV2U2VydmVyLmxpc3RlbjtcclxuICAgICAgZGV2U2VydmVyLmxpc3RlbiA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9yaWdpbmFsTGlzdGVuLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG5cclxuICAgICAgICAvLyDnrYnlvoUgc2VydmVyIOWQr+WKqFxyXG4gICAgICAgIHRoaXMub24oJ2xpc3RlbmluZycsICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5qAIEluamVjdGluZyBtaWRkbGV3YXJlIHZpYSBkZXZTZXJ2ZXIubGlzdGVuIG92ZXJyaWRlYCk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5ug77iPIFBhdGNoZWQgZGV2U2VydmVyLmxpc3RlbiBmb3IgV0RTIHYzYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIOaWueazlSAz77ya5aaC5p6c5LiK6Z2i5LiN6KGM77yM5bCd6K+V5Yqr5oyBIFNlcnZlci5wcm90b3R5cGUubGlzdGVu77yI5aSH55So77yJXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDkvb/nlKggcmVxdWlyZS5jYWNoZSDliqjmgIHmn6Xmib4gU2VydmVyIOWunuS+i1xyXG4gICAgICBjb25zdCBzZXJ2ZXJQYXRoID0gJ3dlYnBhY2stZGV2LXNlcnZlci9saWIvU2VydmVyJztcclxuICAgICAgY29uc3QgY2FjaGVkTW9kdWxlID0gcmVxdWlyZS5jYWNoZVtyZXF1aXJlLnJlc29sdmUoc2VydmVyUGF0aCldO1xyXG5cclxuICAgICAgaWYgKGNhY2hlZE1vZHVsZSkge1xyXG4gICAgICAgIGNvbnN0IFNlcnZlciA9IGNhY2hlZE1vZHVsZS5leHBvcnRzO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcyA9IFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlc1xyXG4gICAgICAgIFNlcnZlci5wcm90b3R5cGUuc2V0dXBNaWRkbGV3YXJlcyA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsU2V0dXBNaWRkbGV3YXJlcyA9IHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zZXR1cE1pZGRsZXdhcmVzID0gKG1pZGRsZXdhcmVzLCBzZXJ2ZXIpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgW214Y2FkLWFzc2V0c10g8J+foiBJbmplY3RpbmcgbWlkZGxld2FyZSB2aWEgc2V0dXBNaWRkbGV3YXJlc2ApO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICAgIHNlcnZlci5hcHAudXNlKGJhc2VQYXRoLCBjcmVhdGVNeENhZEFzc2V0c01pZGRsZXdhcmUodGhpc09wdGlvbnMuc291cmNlQXNzZXRzUGF0aCwgdGhpc09wdGlvbnMub3B0aW9ucywgZGVmYXVsdFB1YmxpY0RpcikpO1xyXG4gICAgICAgICAgICAgIHJldHVybiAob3JpZ2luYWxTZXR1cE1pZGRsZXdhcmVzID09IG51bGwgPyB2b2lkIDAgOiBvcmlnaW5hbFNldHVwTWlkZGxld2FyZXMobWlkZGxld2FyZXMsIHNlcnZlcikpIHx8IG1pZGRsZXdhcmVzO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLl9teGNhZF9pbmplY3RlZCA9IHRydWVcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdGVuU2V0dXBNaWRkbGV3YXJlcy5hcHBseSh0aGlzLCAuLi5hcmdzKTs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxMaXN0ZW4gPSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbjtcclxuXHJcbiAgICAgICAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gPSBmdW5jdGlvbiAodGhpczogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIPCfmoAgU2VydmVyLnByb3RvdHlwZS5saXN0ZW4gY2FsbGVkIChmcm9tIGNhY2hlKWApO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmFwcCAmJiAhdGhpcy5hcHAuX214Y2FkX2luamVjdGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLnVzZShjcmVhdGVHbG9iYWxVbml2ZXJzYWxNaWRkbGV3YXJlKHRoaXNPcHRpb25zLm9wdGlvbnMpKVxyXG4gICAgICAgICAgICB0aGlzLmFwcC51c2UoYmFzZVBhdGgsIGNyZWF0ZU14Q2FkQXNzZXRzTWlkZGxld2FyZSh0aGlzT3B0aW9ucy5zb3VyY2VBc3NldHNQYXRoLCB0aGlzT3B0aW9ucy5vcHRpb25zLCBkZWZhdWx0UHVibGljRGlyLCBsb2dnZXIpKTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuX214Y2FkX2luamVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYFtteGNhZC1hc3NldHNdIOKchSBNaWRkbGV3YXJlIGluamVjdGVkIHZpYSBTZXJ2ZXIucHJvdG90eXBlLmxpc3RlbmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybiBvcmlnaW5hbExpc3Rlbi5hcHBseSh0aGlzLCBhcmdzKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g8J+boO+4jyBQYXRjaGVkIFNlcnZlci5wcm90b3R5cGUubGlzdGVuIHZpYSByZXF1aXJlLmNhY2hlYCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbG9nZ2VyLndhcm4oYFtteGNhZC1hc3NldHNdIOKaoO+4jyBTZXJ2ZXIgbW9kdWxlIG5vdCBjYWNoZWQgeWV0LCBwYXRjaCBtYXkgZmFpbGApO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDwn5+hIENvdWxkIG5vdCBwYXRjaCB2aWEgcmVxdWlyZS5jYWNoZTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBjbG9zZUJ1bmRsZShjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb21waWxlci5ob29rcy5kb25lLnRhcEFzeW5jKCdNeENhZEFzc2V0c1BsdWdpbicsIChzdGF0cywgY2FsbGJhY2spID0+IHtcclxuICAgICAgaWYgKGNvbXBpbGVyLm9wdGlvbnMubW9kZSA9PT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5jb3B5QXNzZXRzVG9PdXRwdXQoY29tcGlsZXIsIGxvZ2dlciwgY2FsbGJhY2spO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb3B5QXNzZXRzVG9PdXRwdXQoXHJcbiAgICBjb21waWxlcjogQ29tcGlsZXIsXHJcbiAgICBsb2dnZXI6IGFueSxcclxuICAgIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IpID0+IHZvaWRcclxuICApIHtcclxuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLnNvdXJjZUFzc2V0c1BhdGgpKSB7XHJcbiAgICAgIGxvZ2dlci53YXJuKGBbbXhjYWQtYXNzZXRzXSDimqDvuI8gU291cmNlIG5vdCBmb3VuZDogJHt0aGlzLnNvdXJjZUFzc2V0c1BhdGh9YCk7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG91dHB1dFBhdGggPSBjb21waWxlci5vcHRpb25zLm91dHB1dD8ucGF0aCB8fCAnZGlzdCc7XHJcbiAgICBjb25zdCB0YXJnZXRBc3NldHNQYXRoID0gcGF0aC5qb2luKG91dHB1dFBhdGgsIHRoaXMub3B0aW9ucy5vdXRwdXREaXIpO1xyXG4gICAgY29uc3Qgb3V0cHV0RnMgPSBjb21waWxlci5vdXRwdXRGaWxlU3lzdGVtIHx8IGZzO1xyXG5cclxuICAgIG91dHB1dEZzLm1rZGlyKHRhcmdldEFzc2V0c1BhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0sIChlcnIpID0+IHtcclxuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XHJcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBjb21waWxlci5vcHRpb25zLmNvbnRleHQgfHwgcHJvY2Vzcy5jd2QoKTtcclxuICAgICAgY29uc3QgZGVmYXVsdFB1YmxpY0RpciA9IHBhdGguam9pbihjb250ZXh0LCAncHVibGljJywgdGhpcy5vcHRpb25zLm91dHB1dERpcik7XHJcblxyXG4gICAgICBzaGFyZWRDb3B5RGlyKHRoaXMuc291cmNlQXNzZXRzUGF0aCwgdGFyZ2V0QXNzZXRzUGF0aCwgZGVmYXVsdFB1YmxpY0RpciwgdGhpcy5vcHRpb25zLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgbG9nZ2VyLmVycm9yKGBbbXhjYWQtYXNzZXRzXSDinYwgQ29weSBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxvZ2dlci5pbmZvKGBbbXhjYWQtYXNzZXRzXSDinIUgQ29waWVkIHRvICR7dGFyZ2V0QXNzZXRzUGF0aH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybUluZGV4SHRtbChjb21waWxlcjogQ29tcGlsZXIsIGxvZ2dlcjogYW55KSB7XHJcbiAgICBjb25zdCBpbmplY3RTY3JpcHQgPSAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSB0aGlzLnJlc29sdmVkQ29uZmlnPy5wdWJsaWNQYXRoIHx8IGAuLyR7dGhpcy5vcHRpb25zLm91dHB1dERpcn0vYDtcclxuICAgICAgY29uc3Qgc2NyaXB0ID0gZ2VuZXJhdGVSdW50aW1lQ29uZmlnU2NyaXB0KHB1YmxpY1BhdGgpO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBbZmlsZW5hbWUsIGFzc2V0XSBvZiBPYmplY3QuZW50cmllcyhjb21waWxhdGlvbi5hc3NldHMpKSB7XHJcbiAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuaHRtbCcpICYmIGlzU291cmNlKGFzc2V0KSkge1xyXG4gICAgICAgICAgY29uc3Qgc291cmNlID0gYXNzZXQuc291cmNlKCkudG9TdHJpbmcoKTtcclxuICAgICAgICAgIGlmIChzb3VyY2UuaW5jbHVkZXMoJzwvaGVhZD4nKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtb2RpZmllZCA9IHNvdXJjZS5yZXBsYWNlKCc8L2hlYWQ+JywgYCR7c2NyaXB0fTwvaGVhZD5gKTtcclxuICAgICAgICAgICAgY29tcGlsYXRpb24uYXNzZXRzW2ZpbGVuYW1lXSA9IHtcclxuICAgICAgICAgICAgICBzb3VyY2U6ICgpID0+IG1vZGlmaWVkLFxyXG4gICAgICAgICAgICAgIHNpemU6ICgpID0+IEJ1ZmZlci5ieXRlTGVuZ3RoKG1vZGlmaWVkLCAndXRmOCcpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgW214Y2FkLWFzc2V0c10g4pyFIEluamVjdGVkIGludG8gJHtmaWxlbmFtZX1gKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8g5qOA5p+l5piv5ZCm5pSv5oyBIHByb2Nlc3NBc3NldHPvvIhXZWJwYWNrIDUr77yJXHJcbiAgICBpZiAoJ3Byb2Nlc3NBc3NldHMnIGluIGNvbXBpbGVyLmhvb2tzKSB7XHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmNvbXBpbGF0aW9uLnRhcCgnTXhDYWRBc3NldHNQbHVnaW4nLCAoY29tcGlsYXRpb246IENvbXBpbGF0aW9uKSA9PiB7XHJcbiAgICAgICAgLy8g4pyFIOS9v+eUqOato+ehrueahOmYtuauteW4uOmHj++8mkFERElUSU9OQUzvvIjkuI3mmK8gQURESVRJT05T77yJXHJcbiAgICAgICAgY29tcGlsYXRpb24uaG9va3MucHJvY2Vzc0Fzc2V0cy50YXAoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdNeENhZEFzc2V0c1BsdWdpbicsXHJcbiAgICAgICAgICAgIHN0YWdlOiBDb21waWxhdGlvbi5QUk9DRVNTX0FTU0VUU19TVEFHRV9BRERJVElPTkFMLCAvLyDinIUg6Z2Z5oCB5bGe5oCn77yM55u05o6l6YCa6L+H57G76K6/6ZeuXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgaW5qZWN0U2NyaXB0XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8g5Y+v6YCJ77ya5re75Yqg57G75Z6L5L+h5oGv77yIV2VicGFjayDnsbvlnovvvIlcclxuICAgICAgICAvLyBjb21waWxhdGlvbjogQ29tcGlsYXRpb25cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBXZWJwYWNrIDQg5YW85a6577ya5L2/55SoIGVtaXQg6ZKp5a2QXHJcbiAgICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwQXN5bmMoJ014Q2FkQXNzZXRzUGx1Z2luJywgKGNvbXBpbGF0aW9uOiBDb21waWxhdGlvbiwgY2IpID0+IHtcclxuICAgICAgICBpbmplY3RTY3JpcHQoY29tcGlsYXRpb24pO1xyXG4gICAgICAgIGNiKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8g5bel5YW35Ye95pWwXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5mdW5jdGlvbiBlbnN1cmVMZWFkaW5nU2xhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzdHJcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTb3VyY2UoYXNzZXQ6IGFueSk6IGFzc2V0IGlzIHsgc291cmNlKCk6IHN0cmluZyB8IEJ1ZmZlciB9IHtcclxuICByZXR1cm4gYXNzZXQgJiYgdHlwZW9mIGFzc2V0LnNvdXJjZSA9PT0gJ2Z1bmN0aW9uJztcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgZGVmYXVsdCBNeENhZEFzc2V0c1dlYnBhY2tQbHVnaW47Il0sIm5hbWVzIjpbInNoYXJlZENvcHlEaXIiLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7QUFvQk8sTUFBTSx5QkFBeUI7QUFBQSxFQUM1QjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFPUixZQUFZLFNBQW9DO0FBQzlDLFNBQUssVUFBVSxlQUFlLE9BQU87QUFDckMsU0FBSyxtQkFBbUIs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mxcad-app",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",