vite-plugin-opencode-assistant 1.0.0 → 1.0.2

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Plugin } from 'vite';
2
- import { OpenCodeOptions } from './types';
2
+ import { OpenCodeOptions } from './types.js';
3
3
  /**
4
4
  * OpenCode Vite 插件
5
5
  * @param options - 插件配置选项
package/dist/index.js CHANGED
@@ -1,10 +1,13 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import http from 'http';
4
- import { startOpenCodeWeb } from './web';
5
- import { injectWidget } from './injector';
6
- import { checkOpenCodeInstalled, findAvailablePort, killProcessOnPort, checkOpenCodeProcess } from './utils';
7
- import { DEFAULT_CONFIG, DEFAULT_RETRIES, RETRY_DELAY, PROCESS_KILL_DELAY, LOG_PREFIX, WIDGET_SCRIPT_PATH, CONTEXT_API_PATH, START_API_PATH, SESSIONS_API_PATH, } from './constants';
4
+ import { fileURLToPath } from 'url';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+ import { startOpenCodeWeb } from './web.js';
8
+ import { injectWidget } from './injector.js';
9
+ import { checkOpenCodeInstalled, findAvailablePort, killProcessOnPort, checkOpenCodeProcess } from './utils.js';
10
+ import { DEFAULT_CONFIG, DEFAULT_RETRIES, RETRY_DELAY, PROCESS_KILL_DELAY, LOG_PREFIX, WIDGET_SCRIPT_PATH, CONTEXT_API_PATH, START_API_PATH, SESSIONS_API_PATH, } from './constants.js';
8
11
  /**
9
12
  * OpenCode Vite 插件
10
13
  * @param options - 插件配置选项
@@ -445,4 +448,4 @@ Please install OpenCode first:
445
448
  },
446
449
  };
447
450
  }
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDekMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRTVHLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQTtBQUVwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsY0FBYyxDQUFDLFVBQTJCLEVBQUU7SUFDbEUsSUFBSSxVQUFVLEdBQXdCLElBQUksQ0FBQTtJQUMxQyxJQUFJLFVBQVUsR0FBa0IsSUFBSSxDQUFBO0lBQ3BDLElBQUksYUFBYSxHQUFXLGNBQWMsQ0FBQyxPQUFPLENBQUE7SUFDbEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLElBQUksWUFBWSxHQUF5QixJQUFJLENBQUE7SUFDN0MsSUFBSSxXQUFXLEdBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFFckQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBO0lBRWhEOztPQUVHO0lBQ0gsU0FBUyxHQUFHLENBQUMsT0FB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Q0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luLCBWaXRlRGV2U2VydmVyIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBzdGFydE9wZW5Db2RlV2ViIH0gZnJvbSAnLi93ZWInXG5pbXBvcnQgeyBpbmplY3RXaWRnZXQgfSBmcm9tICcuL2luamVjdG9yJ1xuaW1wb3J0IHsgY2hlY2tPcGVuQ29kZUluc3RhbGxlZCwgZmluZEF2YWlsYWJsZVBvcnQsIGtpbGxQcm9jZXNzT25Qb3J0LCBjaGVja09wZW5Db2RlUHJvY2VzcyB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBPcGVuQ29kZU9wdGlvbnMsIFNlc3Npb25JbmZvLCBQYWdlQ29udGV4dCB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQge1xuICBERUZBVUxUX0NPTkZJRyxcbiAgREVGQVVMVF9SRVRSSUVTLFxuICBSRVRSWV9ERUxBWSxcbiAgUFJPQ0VTU19LSUxMX0RFTEFZLFxuICBMT0dfUFJFRklYLFxuICBXSURHRVRfU0NSSVBUX1BBVEgsXG4gIENPTlRFWFRfQVBJX1BBVEgsXG4gIFNUQVJUX0FQSV9QQVRILFxuICBTRVNTSU9OU19BUElfUEFUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnXG5cbi8qKlxuICogT3BlbkNvZGUgVml0ZSDmj5Lku7ZcbiAqIEBwYXJhbSBvcHRpb25zIC0g5o+S5Lu26YWN572u6YCJ6aG5XG4gKiBAcmV0dXJucyBWaXRlIOaPkuS7tuWunuS+i1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2aXRlLmNvbmZpZy50c1xuICogaW1wb3J0IG9wZW5jb2RlIGZyb20gJ3ZpdGUtcGx1Z2luLW9wZW5jb2RlJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IHtcbiAqICAgcGx1Z2luczogW1xuICogICAgIG9wZW5jb2RlKHtcbiAqICAgICAgIHdlYlBvcnQ6IDQwOTcsXG4gKiAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1yaWdodCcsXG4gKiAgICAgICB0aGVtZTogJ2F1dG8nXG4gKiAgICAgfSlcbiAqICAgXVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wZW5jb2RlUGx1Z2luKG9wdGlvbnM6IE9wZW5Db2RlT3B0aW9ucyA9IHt9KTogUGx1Z2luIHtcbiAgbGV0IHdlYlByb2Nlc3M6IENoaWxkUHJvY2VzcyB8IG51bGwgPSBudWxsXG4gIGxldCBzZXNzaW9uVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgYWN0dWFsV2ViUG9ydDogbnVtYmVyID0gREVGQVVMVF9DT05GSUcud2ViUG9ydFxuICBsZXQgaXNTdGFydGVkID0gZmFsc2VcbiAgbGV0IHN0YXJ0UHJvbWlzZTogUHJvbWlzZTx2b2lkPiB8IG51bGwgPSBudWxsXG4gIGxldCBwYWdlQ29udGV4dDogUGFnZUNvbnRleHQgPSB7IHVybDogJycsIHRpdGxlOiAnJyB9XG5cbiAgY29uc3QgY29uZmlnID0geyAuLi5ERUZBVUxUX0NPTkZJRywgLi4ub3B0aW9ucyB9XG5cbiAgLyoqXG4gICAqIOi+k+WHuuaXpeW/l++8iOS7heWcqCB2ZXJib3NlIOaooeW8j+S4i++8iVxuICAgKi9cbiAgZnVuY3Rpb24gbG9nKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKGNvbmZpZy52ZXJib3NlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtMT0dfUFJFRklYfSAke21lc3NhZ2V9YCwgLi4uYXJncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6L6T5Ye66ZSZ6K+v5pel5b+XXG4gICAqL1xuICBmdW5jdGlvbiBsb2dFcnJvcihtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7TE9HX1BSRUZJWH0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpXG4gIH1cblxuICAvKipcbiAgICogQmFzZTY0IOe8lueggeWtl+espuS4slxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZTY0RW5jb2RlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyKS50b1N0cmluZygnYmFzZTY0JylcbiAgfVxuXG4gIC8qKlxuICAgKiDlu7bov5/miafooYxcbiAgICovXG4gIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7ogSFRUUCDor7fmsYIgUHJvbWlzZVxuICAgKi9cbiAgZnVuY3Rpb24gY3JlYXRlSHR0cFJlcXVlc3Q8VD4ob3B0aW9uczogaHR0cC5SZXF1ZXN0T3B0aW9ucywgYm9keT86IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXEgPSBodHRwLnJlcXVlc3Qob3B0aW9ucywgKHJlcykgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9ICcnXG4gICAgICAgIHJlcy5vbignZGF0YScsIGNodW5rID0+IGRhdGEgKz0gY2h1bmspXG4gICAgICAgIHJlcy5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXNvbHZlKEpTT04ucGFyc2UoZGF0YSkpXG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBKU09OIHBhcnNlIGVycm9yOiAke2RhdGEuc3Vic3RyaW5nKDAsIDEwMCl9YCkpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICAgIHJlcS5vbignZXJyb3InLCByZWplY3QpXG4gICAgICBpZiAoYm9keSkgcmVxLndyaXRlKGJvZHkpXG4gICAgICByZXEuZW5kKClcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluS8muivneWIl+ihqFxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvbnMocmV0cmllcyA9IERFRkFVTFRfUkVUUklFUyk6IFByb21pc2U8U2Vzc2lvbkluZm9bXT4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY3JlYXRlSHR0cFJlcXVlc3Q8U2Vzc2lvbkluZm9bXT4oe1xuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBwYXRoOiAnL3Nlc3Npb24nLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65paw5Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBjcmVhdGVTZXNzaW9uKHJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVMpOiBQcm9taXNlPFNlc3Npb25JbmZvPiB7XG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRyaWVzOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjcmVhdGVIdHRwUmVxdWVzdDxTZXNzaW9uSW5mbz4oe1xuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBwYXRoOiAnL3Nlc3Npb24nLFxuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog5Yig6Zmk5Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uKHNlc3Npb25JZDogc3RyaW5nLCByZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXRyaWVzOyBpKyspIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGNyZWF0ZUh0dHBSZXF1ZXN0PHZvaWQ+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogYC9zZXNzaW9uLyR7c2Vzc2lvbklkfWAsXG4gICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxhc3RFcnJvciA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUgOiBuZXcgRXJyb3IoU3RyaW5nKGUpKVxuICAgICAgICBpZiAoaSA8IHJldHJpZXMgLSAxKSBhd2FpdCBzbGVlcChSRVRSWV9ERUxBWSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBsYXN0RXJyb3JcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bmiJbliJvlu7rkvJror51cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldE9yQ3JlYXRlU2Vzc2lvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBwcm9jZXNzLmN3ZCgpXG4gICAgbG9nKCdHZXR0aW5nIHNlc3Npb25zLi4uJylcbiAgICBjb25zdCBzZXNzaW9ucyA9IGF3YWl0IGdldFNlc3Npb25zKClcbiAgICBsb2coYEZvdW5kICR7c2Vzc2lvbnMubGVuZ3RofSBzZXNzaW9uc2ApXG5cbiAgICBjb25zdCBtYXRjaGluZ1Nlc3Npb24gPSBzZXNzaW9ucy5maW5kKHMgPT4gcy5kaXJlY3RvcnkgPT09IHByb2plY3REaXIpXG5cbiAgICBpZiAobWF0Y2hpbmdTZXNzaW9uKSB7XG4gICAgICByZXR1cm4gYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fS8ke2Jhc2U2NEVuY29kZShwcm9qZWN0RGlyKX0vc2Vzc2lvbi8ke21hdGNoaW5nU2Vzc2lvbi5pZH1gXG4gICAgfVxuXG4gICAgbG9nKCdDcmVhdGluZyBuZXcgc2Vzc2lvbi4uLicpXG4gICAgY29uc3QgbmV3U2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZVNlc3Npb24oKVxuICAgIHJldHVybiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9LyR7YmFzZTY0RW5jb2RlKHByb2plY3REaXIpfS9zZXNzaW9uLyR7bmV3U2Vzc2lvbi5pZH1gXG4gIH1cblxuICAvKipcbiAgICog6K6+572uIE9wZW5Db2RlIOaPkuS7tlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0dXBPcGVuQ29kZVBsdWdpbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb2plY3REaXIgPSBwcm9jZXNzLmN3ZCgpXG4gICAgY29uc3QgY2FjaGVEaXIgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgJ25vZGVfbW9kdWxlcycsICcuY2FjaGUnLCAnb3BlbmNvZGUnKVxuICAgIGNvbnN0IHBsdWdpbnNEaXIgPSBwYXRoLmpvaW4oY2FjaGVEaXIsICdwbHVnaW5zJylcblxuICAgIGlmICghZnMuZXhpc3RzU3luYyhwbHVnaW5zRGlyKSkge1xuICAgICAgZnMubWtkaXJTeW5jKHBsdWdpbnNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcGx1Z2luU291cmNlUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICdwbHVnaW5zJywgJ3BhZ2UtY29udGV4dC5qcycpXG4gICAgY29uc3QgcGx1Z2luVGFyZ2V0UGF0aCA9IHBhdGguam9pbihwbHVnaW5zRGlyLCAncGFnZS1jb250ZXh0LmpzJylcblxuICAgIGlmIChmcy5leGlzdHNTeW5jKHBsdWdpblNvdXJjZVBhdGgpKSB7XG4gICAgICBmcy5jb3B5RmlsZVN5bmMocGx1Z2luU291cmNlUGF0aCwgcGx1Z2luVGFyZ2V0UGF0aClcbiAgICAgIGxvZyhgUGx1Z2luIGluc3RhbGxlZCB0byAke3BsdWdpblRhcmdldFBhdGh9YClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKGAke0xPR19QUkVGSVh9IFBsdWdpbiBzb3VyY2Ugbm90IGZvdW5kOiAke3BsdWdpblNvdXJjZVBhdGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gY2FjaGVEaXJcbiAgfVxuXG4gIC8qKlxuICAgKiDlkK/liqjmnI3liqFcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmljZXMoY29yc09yaWdpbnM/OiBzdHJpbmdbXSwgY29udGV4dEFwaVVybD86IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChpc1N0YXJ0ZWQpIHJldHVyblxuICAgIGlmIChzdGFydFByb21pc2UpIHJldHVybiBzdGFydFByb21pc2VcblxuICAgIHN0YXJ0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBsb2coJ1N0YXJ0aW5nIE9wZW5Db2RlIHNlcnZpY2VzLi4uJylcblxuICAgICAgaWYgKCFhd2FpdCBjaGVja09wZW5Db2RlSW5zdGFsbGVkKCkpIHtcbiAgICAgICAgbG9nRXJyb3IoYE9wZW5Db2RlIGlzIG5vdCBpbnN0YWxsZWQhXG5cblBsZWFzZSBpbnN0YWxsIE9wZW5Db2RlIGZpcnN0OlxuXG4gICMgVXNpbmcgSG9tZWJyZXcgKG1hY09TKVxuICBicmV3IGluc3RhbGwgb3BlbmNvZGUtYWkvdGFwL29wZW5jb2RlXG5cbiAgIyBPciB1c2luZyB0aGUgaW5zdGFsbCBzY3JpcHRcbiAgY3VybCAtZnNTTCBodHRwczovL29wZW5jb2RlLmFpL2luc3RhbGwgfCBiYXNoXG4gICAgICAgIGApXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBhY3R1YWxXZWJQb3J0ID0gYXdhaXQgZmluZEF2YWlsYWJsZVBvcnQoY29uZmlnLndlYlBvcnQsIGNvbmZpZy5ob3N0bmFtZSlcbiAgICAgIGlmIChhY3R1YWxXZWJQb3J0ICE9PSBjb25maWcud2ViUG9ydCkge1xuICAgICAgICBsb2coYFBvcnQgJHtjb25maWcud2ViUG9ydH0gaXMgaW4gdXNlLCB1c2luZyAke2FjdHVhbFdlYlBvcnR9IGluc3RlYWRgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBleGlzdGluZ1Byb2Nlc3MgPSBhd2FpdCBjaGVja09wZW5Db2RlUHJvY2VzcyhhY3R1YWxXZWJQb3J0KVxuICAgICAgaWYgKGV4aXN0aW5nUHJvY2Vzcykge1xuICAgICAgICBsb2coYEZvdW5kIGV4aXN0aW5nIE9wZW5Db2RlIHByb2Nlc3Mgb24gcG9ydCAke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGtpbGxlZCA9IGF3YWl0IGtpbGxQcm9jZXNzT25Qb3J0KGFjdHVhbFdlYlBvcnQsIGNvbmZpZy5ob3N0bmFtZSlcbiAgICAgICAgaWYgKGtpbGxlZCkge1xuICAgICAgICAgIGxvZyhgS2lsbGVkIHN0YWxlIHByb2Nlc3Mgb24gcG9ydCAke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgICAgICBhd2FpdCBzbGVlcChQUk9DRVNTX0tJTExfREVMQVkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY29uZmlnRGlyID0gc2V0dXBPcGVuQ29kZVBsdWdpbigpXG5cbiAgICAgIGlmICghZXhpc3RpbmdQcm9jZXNzKSB7XG4gICAgICAgIHdlYlByb2Nlc3MgPSBhd2FpdCBzdGFydE9wZW5Db2RlV2ViKHtcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIGhvc3RuYW1lOiBjb25maWcuaG9zdG5hbWUsXG4gICAgICAgICAgc2VydmVyVXJsOiAnJyxcbiAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgY29uZmlnRGlyLFxuICAgICAgICAgIGNvcnNPcmlnaW5zLFxuICAgICAgICAgIGNvbnRleHRBcGlVcmwsXG4gICAgICAgIH0pXG4gICAgICAgIGxvZyhgT3BlbkNvZGUgV2ViIHN0YXJ0ZWQgYXQgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YClcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgc2Vzc2lvblVybCA9IGF3YWl0IGdldE9yQ3JlYXRlU2Vzc2lvbigpXG4gICAgICAgIGxvZyhgU2Vzc2lvbiBVUkw6ICR7c2Vzc2lvblVybH1gKVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7TE9HX1BSRUZJWH0gRmFpbGVkIHRvIGdldC9jcmVhdGUgc2Vzc2lvbjpgLCBlKVxuICAgICAgfVxuXG4gICAgICBpc1N0YXJ0ZWQgPSB0cnVlXG4gICAgfSkoKVxuXG4gICAgcmV0dXJuIHN0YXJ0UHJvbWlzZVxuICB9XG5cbiAgLyoqXG4gICAqIOWBnOatouacjeWKoVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gc3RvcFNlcnZpY2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZygnU3RvcHBpbmcgT3BlbkNvZGUgc2VydmljZXMuLi4nKVxuICAgIFxuICAgIGlmICh3ZWJQcm9jZXNzKSB7XG4gICAgICB3ZWJQcm9jZXNzLmtpbGwoJ1NJR1RFUk0nKVxuICAgICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgIHdlYlByb2Nlc3M/Lm9uKCdleGl0JywgKCkgPT4gcmVzb2x2ZSgpKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB3ZWJQcm9jZXNzPy5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSwgMzAwMClcbiAgICAgIH0pXG4gICAgICB3ZWJQcm9jZXNzID0gbnVsbFxuICAgIH1cbiAgICBcbiAgICBpZiAoaXNTdGFydGVkKSB7XG4gICAgICBhd2FpdCBraWxsUHJvY2Vzc09uUG9ydChhY3R1YWxXZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgfVxuICAgIFxuICAgIGlzU3RhcnRlZCA9IGZhbHNlXG4gICAgc3RhcnRQcm9taXNlID0gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhuS4iuS4i+aWhyBBUEkg6K+35rGCXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVDb250ZXh0UmVxdWVzdChyZXE6IGh0dHAuSW5jb21pbmdNZXNzYWdlLCByZXM6IGh0dHAuU2VydmVyUmVzcG9uc2UpOiB2b2lkIHtcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlMnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ29udGVudC1UeXBlJylcblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnT1BUSU9OUycpIHtcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShwYWdlQ29udGV4dCkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICAgIHBhZ2VDb250ZXh0LnNlbGVjdGVkRWxlbWVudHMgPSBbXVxuICAgICAgbG9nKCdTZWxlY3RlZCBlbGVtZW50cyBjbGVhcmVkJylcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICBsZXQgYm9keSA9ICcnXG4gICAgICByZXEub24oJ2RhdGEnLCBjaHVuayA9PiBib2R5ICs9IGNodW5rKVxuICAgICAgcmVxLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoYm9keSlcbiAgICAgICAgICBwYWdlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIHVybDogZGF0YS51cmwgfHwgJycsXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudHM6IGRhdGEuc2VsZWN0ZWRFbGVtZW50cyB8fCBbXSxcbiAgICAgICAgICB9XG4gICAgICAgICAgbG9nKGBDb250ZXh0IHVwZGF0ZWQ6ICR7cGFnZUNvbnRleHQudXJsfWAsIGRhdGEuc2VsZWN0ZWRFbGVtZW50cz8ubGVuZ3RoID8gYGVsZW1lbnRzOiAke2RhdGEuc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGh9YCA6ICcnKVxuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlIH0pKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDQwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdJbnZhbGlkIEpTT04nIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmVzLndyaXRlSGVhZCg0MDUpXG4gICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnTWV0aG9kIG5vdCBhbGxvd2VkJyB9KSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ZpdGUtcGx1Z2luLW9wZW5jb2RlJyxcblxuICAgIGFzeW5jIGNvbmZpZ3VyZVNlcnZlcihzZXJ2ZXI6IFZpdGVEZXZTZXJ2ZXIpIHtcbiAgICAgIGlmICghY29uZmlnLmVuYWJsZWQpIHJldHVyblxuXG4gICAgICBjb25zdCB2aXRlUG9ydCA9IHNlcnZlci5jb25maWcuc2VydmVyLnBvcnQgfHwgNTE3M1xuICAgICAgY29uc3Qgdml0ZUhvc3QgPSBzZXJ2ZXIuY29uZmlnLnNlcnZlci5ob3N0IHx8ICdsb2NhbGhvc3QnXG4gICAgICBjb25zdCB2aXRlT3JpZ2luID0gYGh0dHA6Ly8ke3ZpdGVIb3N0fToke3ZpdGVQb3J0fWBcbiAgICAgIGNvbnN0IGNvbnRleHRBcGlVcmwgPSBgaHR0cDovLyR7dml0ZUhvc3R9OiR7dml0ZVBvcnR9JHtDT05URVhUX0FQSV9QQVRIfWBcblxuICAgICAgaWYgKCFjb25maWcubGF6eSkge1xuICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgIH1cblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShXSURHRVRfU0NSSVBUX1BBVEgsIGFzeW5jIChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnY2xpZW50LmpzJylcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMod2lkZ2V0UGF0aCkpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcpXG4gICAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIGZzLmNyZWF0ZVJlYWRTdHJlYW0od2lkZ2V0UGF0aCkucGlwZShyZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpXG4gICAgICAgICAgcmVzLmVuZCgnV2lkZ2V0IHNjcmlwdCBub3QgZm91bmQnKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKENPTlRFWFRfQVBJX1BBVEgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICB9XG4gICAgICAgIGhhbmRsZUNvbnRleHRSZXF1ZXN0KHJlcSBhcyBodHRwLkluY29taW5nTWVzc2FnZSwgcmVzKVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShTVEFSVF9BUElfUEFUSCwgYXN5bmMgKF9yZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcblxuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIHNlc3Npb25VcmwgfSkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg1MDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFN0cmluZyhlKSB9KSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUsIHNlc3Npb25VcmwgfSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoU0VTU0lPTlNfQVBJX1BBVEgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsIFBPU1QsIERFTEVURSwgT1BUSU9OUycpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnQ29udGVudC1UeXBlJylcblxuICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgcmVzLmVuZCgpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZmlnLmxhenkgJiYgIWlzU3RhcnRlZCkge1xuICAgICAgICAgIGF3YWl0IHN0YXJ0U2VydmljZXMoW3ZpdGVPcmlnaW5dLCBjb250ZXh0QXBpVXJsKVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25zID0gYXdhaXQgZ2V0U2Vzc2lvbnMoKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHNlc3Npb25zKSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2Vzc2lvbiA9IGF3YWl0IGNyZWF0ZVNlc3Npb24oKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KG5ld1Nlc3Npb24pKVxuICAgICAgICAgIH0gZWxzZSBpZiAocmVxLm1ldGhvZCA9PT0gJ0RFTEVURScpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybCB8fCAnJywgYGh0dHA6Ly8ke3JlcS5oZWFkZXJzLmhvc3R9YClcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25JZCA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KCdpZCcpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDAwKVxuICAgICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdTZXNzaW9uIElEIGlzIHJlcXVpcmVkJyB9KSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDApXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSB9KSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDUpXG4gICAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6ICdNZXRob2Qgbm90IGFsbG93ZWQnIH0pKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNTAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogU3RyaW5nKGUpIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIuaHR0cFNlcnZlcj8ub24oJ2Nsb3NlJywgc3RvcFNlcnZpY2VzKVxuICAgICAgXG4gICAgICBjb25zdCBjbGVhbnVwID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBzdG9wU2VydmljZXMoKVxuICAgICAgICBwcm9jZXNzLmV4aXQoMClcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcHJvY2Vzcy5vbignU0lHSU5UJywgY2xlYW51cClcbiAgICAgIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBjbGVhbnVwKVxuICAgICAgcHJvY2Vzcy5vbignZXhpdCcsICgpID0+IHtcbiAgICAgICAgd2ViUHJvY2Vzcz8ua2lsbCgnU0lHS0lMTCcpXG4gICAgICB9KVxuICAgIH0sXG5cbiAgICB0cmFuc2Zvcm1JbmRleEh0bWwoaHRtbCkge1xuICAgICAgY29uc3Qgd2lkZ2V0ID0gaW5qZWN0V2lkZ2V0KHtcbiAgICAgICAgd2ViVXJsOiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YCxcbiAgICAgICAgc2VydmVyVXJsOiBgaHR0cDovLyR7Y29uZmlnLmhvc3RuYW1lfToke2FjdHVhbFdlYlBvcnR9YCxcbiAgICAgICAgcG9zaXRpb246IGNvbmZpZy5wb3NpdGlvbixcbiAgICAgICAgdGhlbWU6IGNvbmZpZy50aGVtZSxcbiAgICAgICAgb3BlbjogY29uZmlnLm9wZW4sXG4gICAgICAgIGF1dG9SZWxvYWQ6IGNvbmZpZy5hdXRvUmVsb2FkLFxuICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgIHNlc3Npb25Vcmw6IHNlc3Npb25VcmwgfHwgdW5kZWZpbmVkLFxuICAgICAgICBsYXp5OiBjb25maWcubGF6eSxcbiAgICAgICAgaG90a2V5OiBjb25maWcuaG90a2V5LFxuICAgICAgfSlcbiAgICAgIHJldHVybiBodG1sLnJlcGxhY2UoJzwvYm9keT4nLCBgJHt3aWRnZXR9PC9ib2R5PmApXG4gICAgfSxcbiAgfVxufVxuIl19
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUVuQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUvRyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxpQkFBaUIsR0FDbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsY0FBYyxDQUFDLFVBQTJCLEVBQUU7SUFDbEUsSUFBSSxVQUFVLEdBQXdCLElBQUksQ0FBQTtJQUMxQyxJQUFJLFVBQVUsR0FBa0IsSUFBSSxDQUFBO0lBQ3BDLElBQUksYUFBYSxHQUFXLGNBQWMsQ0FBQyxPQUFPLENBQUE7SUFDbEQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLElBQUksWUFBWSxHQUF5QixJQUFJLENBQUE7SUFD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Q25DLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3RCLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxDQUFBO1FBQ3BELENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGx1Z2luLCBWaXRlRGV2U2VydmVyIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSAndXJsJ1xuXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSlcblxuaW1wb3J0IHsgc3RhcnRPcGVuQ29kZVdlYiB9IGZyb20gJy4vd2ViLmpzJ1xuaW1wb3J0IHsgaW5qZWN0V2lkZ2V0IH0gZnJvbSAnLi9pbmplY3Rvci5qcydcbmltcG9ydCB7IGNoZWNrT3BlbkNvZGVJbnN0YWxsZWQsIGZpbmRBdmFpbGFibGVQb3J0LCBraWxsUHJvY2Vzc09uUG9ydCwgY2hlY2tPcGVuQ29kZVByb2Nlc3MgfSBmcm9tICcuL3V0aWxzLmpzJ1xuaW1wb3J0IHsgT3BlbkNvZGVPcHRpb25zLCBTZXNzaW9uSW5mbywgUGFnZUNvbnRleHQgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHtcbiAgREVGQVVMVF9DT05GSUcsXG4gIERFRkFVTFRfUkVUUklFUyxcbiAgUkVUUllfREVMQVksXG4gIFBST0NFU1NfS0lMTF9ERUxBWSxcbiAgTE9HX1BSRUZJWCxcbiAgV0lER0VUX1NDUklQVF9QQVRILFxuICBDT05URVhUX0FQSV9QQVRILFxuICBTVEFSVF9BUElfUEFUSCxcbiAgU0VTU0lPTlNfQVBJX1BBVEgsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIE9wZW5Db2RlIFZpdGUg5o+S5Lu2XG4gKiBAcGFyYW0gb3B0aW9ucyAtIOaPkuS7tumFjee9rumAiemhuVxuICogQHJldHVybnMgVml0ZSDmj5Lku7blrp7kvotcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gdml0ZS5jb25maWcudHNcbiAqIGltcG9ydCBvcGVuY29kZSBmcm9tICd2aXRlLXBsdWdpbi1vcGVuY29kZSdcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCB7XG4gKiAgIHBsdWdpbnM6IFtcbiAqICAgICBvcGVuY29kZSh7XG4gKiAgICAgICB3ZWJQb3J0OiA0MDk3LFxuICogICAgICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLFxuICogICAgICAgdGhlbWU6ICdhdXRvJ1xuICogICAgIH0pXG4gKiAgIF1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcGVuY29kZVBsdWdpbihvcHRpb25zOiBPcGVuQ29kZU9wdGlvbnMgPSB7fSk6IFBsdWdpbiB7XG4gIGxldCB3ZWJQcm9jZXNzOiBDaGlsZFByb2Nlc3MgfCBudWxsID0gbnVsbFxuICBsZXQgc2Vzc2lvblVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IGFjdHVhbFdlYlBvcnQ6IG51bWJlciA9IERFRkFVTFRfQ09ORklHLndlYlBvcnRcbiAgbGV0IGlzU3RhcnRlZCA9IGZhbHNlXG4gIGxldCBzdGFydFByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbFxuICBsZXQgcGFnZUNvbnRleHQ6IFBhZ2VDb250ZXh0ID0geyB1cmw6ICcnLCB0aXRsZTogJycgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuXG4gIC8qKlxuICAgKiDovpPlh7rml6Xlv5fvvIjku4XlnKggdmVyYm9zZSDmqKHlvI/kuIvvvIlcbiAgICovXG4gIGZ1bmN0aW9uIGxvZyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmIChjb25maWcudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coYCR7TE9HX1BSRUZJWH0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOi+k+WHuumUmeivr+aXpeW/l1xuICAgKi9cbiAgZnVuY3Rpb24gbG9nRXJyb3IobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKGAke0xPR19QUkVGSVh9ICR7bWVzc2FnZX1gLCAuLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIEJhc2U2NCDnvJbnoIHlrZfnrKbkuLJcbiAgICovXG4gIGZ1bmN0aW9uIGJhc2U2NEVuY29kZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0cikudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gIH1cblxuICAvKipcbiAgICog5bu26L+f5omn6KGMXG4gICAqL1xuICBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpXG4gIH1cblxuICAvKipcbiAgICog5Yib5bu6IEhUVFAg6K+35rGCIFByb21pc2VcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUh0dHBSZXF1ZXN0PFQ+KG9wdGlvbnM6IGh0dHAuUmVxdWVzdE9wdGlvbnMsIGJvZHk/OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVxID0gaHR0cC5yZXF1ZXN0KG9wdGlvbnMsIChyZXMpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSAnJ1xuICAgICAgICByZXMub24oJ2RhdGEnLCBjaHVuayA9PiBkYXRhICs9IGNodW5rKVxuICAgICAgICByZXMub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzb2x2ZShKU09OLnBhcnNlKGRhdGEpKVxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgSlNPTiBwYXJzZSBlcnJvcjogJHtkYXRhLnN1YnN0cmluZygwLCAxMDApfWApKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgICByZXEub24oJ2Vycm9yJywgcmVqZWN0KVxuICAgICAgaWYgKGJvZHkpIHJlcS53cml0ZShib2R5KVxuICAgICAgcmVxLmVuZCgpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bkvJror53liJfooahcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFNlc3Npb25zKHJldHJpZXMgPSBERUZBVUxUX1JFVFJJRVMpOiBQcm9taXNlPFNlc3Npb25JbmZvW10+IHtcbiAgICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IG51bGwgPSBudWxsXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUh0dHBSZXF1ZXN0PFNlc3Npb25JbmZvW10+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogJy9zZXNzaW9uJyxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpXG4gICAgICAgIGlmIChpIDwgcmV0cmllcyAtIDEpIGF3YWl0IHNsZWVwKFJFVFJZX0RFTEFZKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uuaWsOS8muivnVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbihyZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTKTogUHJvbWlzZTxTZXNzaW9uSW5mbz4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgY3JlYXRlSHR0cFJlcXVlc3Q8U2Vzc2lvbkluZm8+KHtcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IGFjdHVhbFdlYlBvcnQsXG4gICAgICAgICAgcGF0aDogJy9zZXNzaW9uJyxcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbGFzdEVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpXG4gICAgICAgIGlmIChpIDwgcmV0cmllcyAtIDEpIGF3YWl0IHNsZWVwKFJFVFJZX0RFTEFZKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IGxhc3RFcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpOS8muivnVxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZywgcmV0cmllcyA9IERFRkFVTFRfUkVUUklFUyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCBsYXN0RXJyb3I6IEVycm9yIHwgbnVsbCA9IG51bGxcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmV0cmllczsgaSsrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBjcmVhdGVIdHRwUmVxdWVzdDx2b2lkPih7XG4gICAgICAgICAgaG9zdG5hbWU6IGNvbmZpZy5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiBhY3R1YWxXZWJQb3J0LFxuICAgICAgICAgIHBhdGg6IGAvc2Vzc2lvbi8ke3Nlc3Npb25JZH1gLFxuICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsYXN0RXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSlcbiAgICAgICAgaWYgKGkgPCByZXRyaWVzIC0gMSkgYXdhaXQgc2xlZXAoUkVUUllfREVMQVkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgbGFzdEVycm9yXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oiW5Yib5bu65Lya6K+dXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRPckNyZWF0ZVNlc3Npb24oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gcHJvY2Vzcy5jd2QoKVxuICAgIGxvZygnR2V0dGluZyBzZXNzaW9ucy4uLicpXG4gICAgY29uc3Qgc2Vzc2lvbnMgPSBhd2FpdCBnZXRTZXNzaW9ucygpXG4gICAgbG9nKGBGb3VuZCAke3Nlc3Npb25zLmxlbmd0aH0gc2Vzc2lvbnNgKVxuXG4gICAgY29uc3QgbWF0Y2hpbmdTZXNzaW9uID0gc2Vzc2lvbnMuZmluZChzID0+IHMuZGlyZWN0b3J5ID09PSBwcm9qZWN0RGlyKVxuXG4gICAgaWYgKG1hdGNoaW5nU2Vzc2lvbikge1xuICAgICAgcmV0dXJuIGBodHRwOi8vJHtjb25maWcuaG9zdG5hbWV9OiR7YWN0dWFsV2ViUG9ydH0vJHtiYXNlNjRFbmNvZGUocHJvamVjdERpcil9L3Nlc3Npb24vJHttYXRjaGluZ1Nlc3Npb24uaWR9YFxuICAgIH1cblxuICAgIGxvZygnQ3JlYXRpbmcgbmV3IHNlc3Npb24uLi4nKVxuICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBhd2FpdCBjcmVhdGVTZXNzaW9uKClcbiAgICByZXR1cm4gYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fS8ke2Jhc2U2NEVuY29kZShwcm9qZWN0RGlyKX0vc2Vzc2lvbi8ke25ld1Nlc3Npb24uaWR9YFxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9riBPcGVuQ29kZSDmj5Lku7ZcbiAgICovXG4gIGZ1bmN0aW9uIHNldHVwT3BlbkNvZGVQbHVnaW4oKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9qZWN0RGlyID0gcHJvY2Vzcy5jd2QoKVxuICAgIGNvbnN0IGNhY2hlRGlyID0gcGF0aC5qb2luKHByb2plY3REaXIsICdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ29wZW5jb2RlJylcbiAgICBjb25zdCBwbHVnaW5zRGlyID0gcGF0aC5qb2luKGNhY2hlRGlyLCAncGx1Z2lucycpXG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMocGx1Z2luc0RpcikpIHtcbiAgICAgIGZzLm1rZGlyU3luYyhwbHVnaW5zRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGNvbnN0IHBsdWdpblNvdXJjZVBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAncGx1Z2lucycsICdwYWdlLWNvbnRleHQuanMnKVxuICAgIGNvbnN0IHBsdWdpblRhcmdldFBhdGggPSBwYXRoLmpvaW4ocGx1Z2luc0RpciwgJ3BhZ2UtY29udGV4dC5qcycpXG5cbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwbHVnaW5Tb3VyY2VQYXRoKSkge1xuICAgICAgZnMuY29weUZpbGVTeW5jKHBsdWdpblNvdXJjZVBhdGgsIHBsdWdpblRhcmdldFBhdGgpXG4gICAgICBsb2coYFBsdWdpbiBpbnN0YWxsZWQgdG8gJHtwbHVnaW5UYXJnZXRQYXRofWApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtMT0dfUFJFRklYfSBQbHVnaW4gc291cmNlIG5vdCBmb3VuZDogJHtwbHVnaW5Tb3VyY2VQYXRofWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGNhY2hlRGlyXG4gIH1cblxuICAvKipcbiAgICog5ZCv5Yqo5pyN5YqhXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBzdGFydFNlcnZpY2VzKGNvcnNPcmlnaW5zPzogc3RyaW5nW10sIGNvbnRleHRBcGlVcmw/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoaXNTdGFydGVkKSByZXR1cm5cbiAgICBpZiAoc3RhcnRQcm9taXNlKSByZXR1cm4gc3RhcnRQcm9taXNlXG5cbiAgICBzdGFydFByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgbG9nKCdTdGFydGluZyBPcGVuQ29kZSBzZXJ2aWNlcy4uLicpXG5cbiAgICAgIGlmICghYXdhaXQgY2hlY2tPcGVuQ29kZUluc3RhbGxlZCgpKSB7XG4gICAgICAgIGxvZ0Vycm9yKGBPcGVuQ29kZSBpcyBub3QgaW5zdGFsbGVkIVxuXG5QbGVhc2UgaW5zdGFsbCBPcGVuQ29kZSBmaXJzdDpcblxuICAjIFVzaW5nIEhvbWVicmV3IChtYWNPUylcbiAgYnJldyBpbnN0YWxsIG9wZW5jb2RlLWFpL3RhcC9vcGVuY29kZVxuXG4gICMgT3IgdXNpbmcgdGhlIGluc3RhbGwgc2NyaXB0XG4gIGN1cmwgLWZzU0wgaHR0cHM6Ly9vcGVuY29kZS5haS9pbnN0YWxsIHwgYmFzaFxuICAgICAgICBgKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgYWN0dWFsV2ViUG9ydCA9IGF3YWl0IGZpbmRBdmFpbGFibGVQb3J0KGNvbmZpZy53ZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgICBpZiAoYWN0dWFsV2ViUG9ydCAhPT0gY29uZmlnLndlYlBvcnQpIHtcbiAgICAgICAgbG9nKGBQb3J0ICR7Y29uZmlnLndlYlBvcnR9IGlzIGluIHVzZSwgdXNpbmcgJHthY3R1YWxXZWJQb3J0fSBpbnN0ZWFkYClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXhpc3RpbmdQcm9jZXNzID0gYXdhaXQgY2hlY2tPcGVuQ29kZVByb2Nlc3MoYWN0dWFsV2ViUG9ydClcbiAgICAgIGlmIChleGlzdGluZ1Byb2Nlc3MpIHtcbiAgICAgICAgbG9nKGBGb3VuZCBleGlzdGluZyBPcGVuQ29kZSBwcm9jZXNzIG9uIHBvcnQgJHthY3R1YWxXZWJQb3J0fWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBraWxsZWQgPSBhd2FpdCBraWxsUHJvY2Vzc09uUG9ydChhY3R1YWxXZWJQb3J0LCBjb25maWcuaG9zdG5hbWUpXG4gICAgICAgIGlmIChraWxsZWQpIHtcbiAgICAgICAgICBsb2coYEtpbGxlZCBzdGFsZSBwcm9jZXNzIG9uIHBvcnQgJHthY3R1YWxXZWJQb3J0fWApXG4gICAgICAgICAgYXdhaXQgc2xlZXAoUFJPQ0VTU19LSUxMX0RFTEFZKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RpciA9IHNldHVwT3BlbkNvZGVQbHVnaW4oKVxuXG4gICAgICBpZiAoIWV4aXN0aW5nUHJvY2Vzcykge1xuICAgICAgICB3ZWJQcm9jZXNzID0gYXdhaXQgc3RhcnRPcGVuQ29kZVdlYih7XG4gICAgICAgICAgcG9ydDogYWN0dWFsV2ViUG9ydCxcbiAgICAgICAgICBob3N0bmFtZTogY29uZmlnLmhvc3RuYW1lLFxuICAgICAgICAgIHNlcnZlclVybDogJycsXG4gICAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIGNvbmZpZ0RpcixcbiAgICAgICAgICBjb3JzT3JpZ2lucyxcbiAgICAgICAgICBjb250ZXh0QXBpVXJsLFxuICAgICAgICB9KVxuICAgICAgICBsb2coYE9wZW5Db2RlIFdlYiBzdGFydGVkIGF0IGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWApXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25VcmwgPSBhd2FpdCBnZXRPckNyZWF0ZVNlc3Npb24oKVxuICAgICAgICBsb2coYFNlc3Npb24gVVJMOiAke3Nlc3Npb25Vcmx9YClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGAke0xPR19QUkVGSVh9IEZhaWxlZCB0byBnZXQvY3JlYXRlIHNlc3Npb246YCwgZSlcbiAgICAgIH1cblxuICAgICAgaXNTdGFydGVkID0gdHJ1ZVxuICAgIH0pKClcblxuICAgIHJldHVybiBzdGFydFByb21pc2VcbiAgfVxuXG4gIC8qKlxuICAgKiDlgZzmraLmnI3liqFcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIHN0b3BTZXJ2aWNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2coJ1N0b3BwaW5nIE9wZW5Db2RlIHNlcnZpY2VzLi4uJylcbiAgICBcbiAgICBpZiAod2ViUHJvY2Vzcykge1xuICAgICAgd2ViUHJvY2Vzcy5raWxsKCdTSUdURVJNJylcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICB3ZWJQcm9jZXNzPy5vbignZXhpdCcsICgpID0+IHJlc29sdmUoKSlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgd2ViUHJvY2Vzcz8ua2lsbCgnU0lHS0lMTCcpXG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0sIDMwMDApXG4gICAgICB9KVxuICAgICAgd2ViUHJvY2VzcyA9IG51bGxcbiAgICB9XG4gICAgXG4gICAgaWYgKGlzU3RhcnRlZCkge1xuICAgICAgYXdhaXQga2lsbFByb2Nlc3NPblBvcnQoYWN0dWFsV2ViUG9ydCwgY29uZmlnLmhvc3RuYW1lKVxuICAgIH1cbiAgICBcbiAgICBpc1N0YXJ0ZWQgPSBmYWxzZVxuICAgIHN0YXJ0UHJvbWlzZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiDlpITnkIbkuIrkuIvmlocgQVBJIOivt+axglxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlQ29udGV4dFJlcXVlc3QocmVxOiBodHRwLkluY29taW5nTWVzc2FnZSwgcmVzOiBodHRwLlNlcnZlclJlc3BvbnNlKTogdm9pZCB7XG4gICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgREVMRVRFLCBPUFRJT05TJylcbiAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQtVHlwZScpXG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkocGFnZUNvbnRleHQpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICBwYWdlQ29udGV4dC5zZWxlY3RlZEVsZW1lbnRzID0gW11cbiAgICAgIGxvZygnU2VsZWN0ZWQgZWxlbWVudHMgY2xlYXJlZCcpXG4gICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlIH0pKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJykge1xuICAgICAgbGV0IGJvZHkgPSAnJ1xuICAgICAgcmVxLm9uKCdkYXRhJywgY2h1bmsgPT4gYm9keSArPSBjaHVuaylcbiAgICAgIHJlcS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGJvZHkpXG4gICAgICAgICAgcGFnZUNvbnRleHQgPSB7XG4gICAgICAgICAgICB1cmw6IGRhdGEudXJsIHx8ICcnLFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgfHwgJycsXG4gICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzOiBkYXRhLnNlbGVjdGVkRWxlbWVudHMgfHwgW10sXG4gICAgICAgICAgfVxuICAgICAgICAgIGxvZyhgQ29udGV4dCB1cGRhdGVkOiAke3BhZ2VDb250ZXh0LnVybH1gLCBkYXRhLnNlbGVjdGVkRWxlbWVudHM/Lmxlbmd0aCA/IGBlbGVtZW50czogJHtkYXRhLnNlbGVjdGVkRWxlbWVudHMubGVuZ3RofWAgOiAnJylcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgc3VjY2VzczogdHJ1ZSB9KSlcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmVzLndyaXRlSGVhZCg0MDApXG4gICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnSW52YWxpZCBKU09OJyB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcy53cml0ZUhlYWQoNDA1KVxuICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogJ01ldGhvZCBub3QgYWxsb3dlZCcgfSkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlLXBsdWdpbi1vcGVuY29kZScsXG5cbiAgICBhc3luYyBjb25maWd1cmVTZXJ2ZXIoc2VydmVyOiBWaXRlRGV2U2VydmVyKSB7XG4gICAgICBpZiAoIWNvbmZpZy5lbmFibGVkKSByZXR1cm5cblxuICAgICAgY29uc3Qgdml0ZVBvcnQgPSBzZXJ2ZXIuY29uZmlnLnNlcnZlci5wb3J0IHx8IDUxNzNcbiAgICAgIGNvbnN0IHZpdGVIb3N0ID0gc2VydmVyLmNvbmZpZy5zZXJ2ZXIuaG9zdCB8fCAnbG9jYWxob3N0J1xuICAgICAgY29uc3Qgdml0ZU9yaWdpbiA9IGBodHRwOi8vJHt2aXRlSG9zdH06JHt2aXRlUG9ydH1gXG4gICAgICBjb25zdCBjb250ZXh0QXBpVXJsID0gYGh0dHA6Ly8ke3ZpdGVIb3N0fToke3ZpdGVQb3J0fSR7Q09OVEVYVF9BUElfUEFUSH1gXG5cbiAgICAgIGlmICghY29uZmlnLmxhenkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICB9XG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoV0lER0VUX1NDUklQVF9QQVRILCBhc3luYyAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIGlmIChjb25maWcubGF6eSAmJiAhaXNTdGFydGVkKSB7XG4gICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aWRnZXRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ2NsaWVudC5qcycpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHdpZGdldFBhdGgpKSB7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKVxuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICBmcy5jcmVhdGVSZWFkU3RyZWFtKHdpZGdldFBhdGgpLnBpcGUocmVzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KVxuICAgICAgICAgIHJlcy5lbmQoJ1dpZGdldCBzY3JpcHQgbm90IGZvdW5kJylcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLm1pZGRsZXdhcmVzLnVzZShDT05URVhUX0FQSV9QQVRILCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVDb250ZXh0UmVxdWVzdChyZXEgYXMgaHR0cC5JbmNvbWluZ01lc3NhZ2UsIHJlcylcbiAgICAgIH0pXG5cbiAgICAgIHNlcnZlci5taWRkbGV3YXJlcy51c2UoU1RBUlRfQVBJX1BBVEgsIGFzeW5jIChfcmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG5cbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgc3RhcnRTZXJ2aWNlcyhbdml0ZU9yaWdpbl0sIGNvbnRleHRBcGlVcmwpXG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMClcbiAgICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlLCBzZXNzaW9uVXJsIH0pKVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNTAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiBTdHJpbmcoZSkgfSkpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoSlNPTi5zdHJpbmdpZnkoeyBzdWNjZXNzOiB0cnVlLCBzZXNzaW9uVXJsIH0pKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXJ2ZXIubWlkZGxld2FyZXMudXNlKFNFU1NJT05TX0FQSV9QQVRILCBhc3luYyAocmVxLCByZXMpID0+IHtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHMnLCAnR0VULCBQT1NULCBERUxFVEUsIE9QVElPTlMnKVxuICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgJ0NvbnRlbnQtVHlwZScpXG5cbiAgICAgICAgaWYgKHJlcS5tZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgIHJlcy5lbmQoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbmZpZy5sYXp5ICYmICFpc1N0YXJ0ZWQpIHtcbiAgICAgICAgICBhd2FpdCBzdGFydFNlcnZpY2VzKFt2aXRlT3JpZ2luXSwgY29udGV4dEFwaVVybClcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHJlcS5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9ucyA9IGF3YWl0IGdldFNlc3Npb25zKClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShzZXNzaW9ucykpXG4gICAgICAgICAgfSBlbHNlIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1Nlc3Npb24gPSBhd2FpdCBjcmVhdGVTZXNzaW9uKClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeShuZXdTZXNzaW9uKSlcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcS5tZXRob2QgPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwgfHwgJycsIGBodHRwOi8vJHtyZXEuaGVhZGVycy5ob3N0fWApXG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uSWQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnaWQnKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgICAgICAgICByZXMud3JpdGVIZWFkKDQwMClcbiAgICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnU2Vzc2lvbiBJRCBpcyByZXF1aXJlZCcgfSkpXG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBhd2FpdCBkZWxldGVTZXNzaW9uKHNlc3Npb25JZClcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoMjAwKVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IHN1Y2Nlc3M6IHRydWUgfSkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA1KVxuICAgICAgICAgICAgcmVzLmVuZChKU09OLnN0cmluZ2lmeSh7IGVycm9yOiAnTWV0aG9kIG5vdCBhbGxvd2VkJyB9KSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDUwMClcbiAgICAgICAgICByZXMuZW5kKEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IFN0cmluZyhlKSB9KSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2VydmVyLmh0dHBTZXJ2ZXI/Lm9uKCdjbG9zZScsIHN0b3BTZXJ2aWNlcylcbiAgICAgIFxuICAgICAgY29uc3QgY2xlYW51cCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgc3RvcFNlcnZpY2VzKClcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9XG4gICAgICBcbiAgICAgIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGNsZWFudXApXG4gICAgICBwcm9jZXNzLm9uKCdTSUdURVJNJywgY2xlYW51cClcbiAgICAgIHByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiB7XG4gICAgICAgIHdlYlByb2Nlc3M/LmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgdHJhbnNmb3JtSW5kZXhIdG1sKGh0bWwpIHtcbiAgICAgIGNvbnN0IHdpZGdldCA9IGluamVjdFdpZGdldCh7XG4gICAgICAgIHdlYlVybDogYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWAsXG4gICAgICAgIHNlcnZlclVybDogYGh0dHA6Ly8ke2NvbmZpZy5ob3N0bmFtZX06JHthY3R1YWxXZWJQb3J0fWAsXG4gICAgICAgIHBvc2l0aW9uOiBjb25maWcucG9zaXRpb24sXG4gICAgICAgIHRoZW1lOiBjb25maWcudGhlbWUsXG4gICAgICAgIG9wZW46IGNvbmZpZy5vcGVuLFxuICAgICAgICBhdXRvUmVsb2FkOiBjb25maWcuYXV0b1JlbG9hZCxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBzZXNzaW9uVXJsOiBzZXNzaW9uVXJsIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgbGF6eTogY29uZmlnLmxhenksXG4gICAgICAgIGhvdGtleTogY29uZmlnLmhvdGtleSxcbiAgICAgIH0pXG4gICAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCc8L2JvZHk+JywgYCR7d2lkZ2V0fTwvYm9keT5gKVxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { WidgetOptions } from './types';
1
+ import { WidgetOptions } from './types.js';
2
2
  /**
3
3
  * 生成挂件注入脚本标签
4
4
  * @param options - 挂件配置选项
package/dist/injector.js CHANGED
@@ -1,4 +1,4 @@
1
- import { WIDGET_SCRIPT_PATH, CONFIG_DATA_ATTR } from './constants';
1
+ import { WIDGET_SCRIPT_PATH, CONFIG_DATA_ATTR } from './constants.js';
2
2
  /**
3
3
  * 生成挂件注入脚本标签
4
4
  * @param options - 挂件配置选项
@@ -21,4 +21,4 @@ export function injectWidget(options) {
21
21
  const configBase64 = Buffer.from(JSON.stringify(options)).toString('base64');
22
22
  return `<script src="${WIDGET_SCRIPT_PATH}" ${CONFIG_DATA_ATTR}="${configBase64}"></script>`;
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBc0I7SUFDakQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVFLE9BQU8sZ0JBQWdCLGtCQUFrQixLQUFLLGdCQUFnQixLQUFLLFlBQVksYUFBYSxDQUFBO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IFdJREdFVF9TQ1JJUFRfUEFUSCwgQ09ORklHX0RBVEFfQVRUUiB9IGZyb20gJy4vY29uc3RhbnRzJ1xuXG4vKipcbiAqIOeUn+aIkOaMguS7tuazqOWFpeiEmuacrOagh+etvlxuICogQHBhcmFtIG9wdGlvbnMgLSDmjILku7bphY3nva7pgInpoblcbiAqIEByZXR1cm5zIEhUTUwg6ISa5pys5qCH562+5a2X56ym5LiyXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHdpZGdldCA9IGluamVjdFdpZGdldCh7XG4gKiAgIHdlYlVybDogJ2h0dHA6Ly8xMjcuMC4wLjE6NDA5NycsXG4gKiAgIHNlcnZlclVybDogJ2h0dHA6Ly8xMjcuMC4wLjE6NDA5NycsXG4gKiAgIHBvc2l0aW9uOiAnYm90dG9tLXJpZ2h0JyxcbiAqICAgdGhlbWU6ICdhdXRvJyxcbiAqICAgb3BlbjogZmFsc2UsXG4gKiAgIGF1dG9SZWxvYWQ6IHRydWUsXG4gKiAgIGN3ZDogcHJvY2Vzcy5jd2QoKVxuICogfSlcbiAqIC8vIOi/lOWbnjogJzxzY3JpcHQgc3JjPVwiL19fb3BlbmNvZGVfd2lkZ2V0X18uanNcIiBkYXRhLW9wZW5jb2RlLWNvbmZpZz1cIi4uLlwiPjwvc2NyaXB0PidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0V2lkZ2V0KG9wdGlvbnM6IFdpZGdldE9wdGlvbnMpOiBzdHJpbmcge1xuICBjb25zdCBjb25maWdCYXNlNjQgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShvcHRpb25zKSkudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gIHJldHVybiBgPHNjcmlwdCBzcmM9XCIke1dJREdFVF9TQ1JJUFRfUEFUSH1cIiAke0NPTkZJR19EQVRBX0FUVFJ9PVwiJHtjb25maWdCYXNlNjR9XCI+PC9zY3JpcHQ+YFxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFzQjtJQUNqRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDNUUsT0FBTyxnQkFBZ0Isa0JBQWtCLEtBQUssZ0JBQWdCLEtBQUssWUFBWSxhQUFhLENBQUE7QUFDOUYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdpZGdldE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHsgV0lER0VUX1NDUklQVF9QQVRILCBDT05GSUdfREFUQV9BVFRSIH0gZnJvbSAnLi9jb25zdGFudHMuanMnXG5cbi8qKlxuICog55Sf5oiQ5oyC5Lu25rOo5YWl6ISa5pys5qCH562+XG4gKiBAcGFyYW0gb3B0aW9ucyAtIOaMguS7tumFjee9rumAiemhuVxuICogQHJldHVybnMgSFRNTCDohJrmnKzmoIfnrb7lrZfnrKbkuLJcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3Qgd2lkZ2V0ID0gaW5qZWN0V2lkZ2V0KHtcbiAqICAgd2ViVXJsOiAnaHR0cDovLzEyNy4wLjAuMTo0MDk3JyxcbiAqICAgc2VydmVyVXJsOiAnaHR0cDovLzEyNy4wLjAuMTo0MDk3JyxcbiAqICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLFxuICogICB0aGVtZTogJ2F1dG8nLFxuICogICBvcGVuOiBmYWxzZSxcbiAqICAgYXV0b1JlbG9hZDogdHJ1ZSxcbiAqICAgY3dkOiBwcm9jZXNzLmN3ZCgpXG4gKiB9KVxuICogLy8g6L+U5ZueOiAnPHNjcmlwdCBzcmM9XCIvX19vcGVuY29kZV93aWRnZXRfXy5qc1wiIGRhdGEtb3BlbmNvZGUtY29uZmlnPVwiLi4uXCI+PC9zY3JpcHQ+J1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RXaWRnZXQob3B0aW9uczogV2lkZ2V0T3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IGNvbmZpZ0Jhc2U2NCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG9wdGlvbnMpKS50b1N0cmluZygnYmFzZTY0JylcbiAgcmV0dXJuIGA8c2NyaXB0IHNyYz1cIiR7V0lER0VUX1NDUklQVF9QQVRIfVwiICR7Q09ORklHX0RBVEFfQVRUUn09XCIke2NvbmZpZ0Jhc2U2NH1cIj48L3NjcmlwdD5gXG59XG4iXX0=
package/dist/utils.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'http';
2
2
  import { spawn } from 'child_process';
3
3
  import net from 'net';
4
- import { DEFAULT_HOSTNAME, SERVER_CHECK_INTERVAL, HEALTH_CHECK_TIMEOUT, MAX_PORT_TRIES, } from './constants';
4
+ import { DEFAULT_HOSTNAME, SERVER_CHECK_INTERVAL, HEALTH_CHECK_TIMEOUT, MAX_PORT_TRIES, } from './constants.js';
5
5
  /**
6
6
  * 等待服务器就绪
7
7
  * @param url - 服务器 URL
@@ -153,4 +153,4 @@ export async function checkOpenCodeProcess(port) {
153
153
  req.end();
154
154
  });
155
155
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUE7QUFFcEI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDeEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFNUIsTUFBTSxLQUFLLEdBQUcsR0FBUyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUMzQyxPQUFPLEVBQUUsQ0FBQTtnQkFDWCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sYUFBYSxFQUFFLENBQUE7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQTtRQUVELE1BQU0sYUFBYSxHQUFHLEdBQVMsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7Z0JBQ3JDLFVBQVUsQ0FBQyxLQUFLLEVBQUUs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Q0FBQTtRQUNGLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUNYLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBodHRwIGZyb20gJ2h0dHAnXG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgbmV0IGZyb20gJ25ldCdcbmltcG9ydCB7XG4gIERFRkFVTFRfSE9TVE5BTUUsXG4gIFNFUlZFUl9DSEVDS19JTlRFUlZBTCxcbiAgSEVBTFRIX0NIRUNLX1RJTUVPVVQsXG4gIE1BWF9QT1JUX1RSSUVTLFxufSBmcm9tICcuL2NvbnN0YW50cydcblxuLyoqXG4gKiDnrYnlvoXmnI3liqHlmajlsLHnu6pcbiAqIEBwYXJhbSB1cmwgLSDmnI3liqHlmaggVVJMXG4gKiBAcGFyYW0gdGltZW91dCAtIOi2heaXtuaXtumXtO+8iOavq+enku+8ie+8jOm7mOiupCAxMDAwMFxuICogQHJldHVybnMgUHJvbWlzZe+8jOacjeWKoeWZqOWwsee7quaXtiByZXNvbHZlXG4gKiBAdGhyb3dzIOi2heaXtuWQjuaKm+WHuumUmeivr1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdEZvclNlcnZlcih1cmw6IHN0cmluZywgdGltZW91dCA9IDEwMDAwKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKVxuXG4gICAgY29uc3QgY2hlY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCByZXEgPSBodHRwLmdldCh1cmwsIChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlICYmIHJlcy5zdGF0dXNDb2RlIDwgNTAwKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0cnlPclJlamVjdCgpXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJlcS5vbignZXJyb3InLCByZXRyeU9yUmVqZWN0KVxuICAgIH1cblxuICAgIGNvbnN0IHJldHJ5T3JSZWplY3QgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA8IHRpbWVvdXQpIHtcbiAgICAgICAgc2V0VGltZW91dChjaGVjaywgU0VSVkVSX0NIRUNLX0lOVEVSVkFMKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgU2VydmVyIG5vdCByZWFkeSBhZnRlciAke3RpbWVvdXR9bXNgKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVjaygpXG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+lIE9wZW5Db2RlIOaYr+WQpuW3suWuieijhVxuICogQHJldHVybnMg5piv5ZCm5bey5a6J6KOFXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja09wZW5Db2RlSW5zdGFsbGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBwcm9jID0gc3Bhd24oJ29wZW5jb2RlJywgWyctLXZlcnNpb24nXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICBwcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIHByb2Mub24oJ2Vycm9yJywgKCkgPT4gcmVzb2x2ZShmYWxzZSkpXG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+l56uv5Y+j5piv5ZCm5Y+v55SoXG4gKiBAcGFyYW0gcG9ydCAtIOerr+WPo+WPt1xuICogQHBhcmFtIGhvc3RuYW1lIC0g5Li75py65ZCN77yM6buY6K6kICcxMjcuMC4wLjEnXG4gKiBAcmV0dXJucyDnq6/lj6PmmK/lkKblj6/nlKhcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzUG9ydEF2YWlsYWJsZShwb3J0OiBudW1iZXIsIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBuZXQuY3JlYXRlU2VydmVyKClcbiAgICBzZXJ2ZXIub25jZSgnZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgICBzZXJ2ZXIub25jZSgnbGlzdGVuaW5nJywgKCkgPT4ge1xuICAgICAgc2VydmVyLmNsb3NlKClcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4ocG9ydCwgaG9zdG5hbWUpXG4gIH0pXG59XG5cbi8qKlxuICog5p+l5om+5Y+v55So56uv5Y+jXG4gKiBAcGFyYW0gc3RhcnRQb3J0IC0g6LW35aeL56uv5Y+jXG4gKiBAcGFyYW0gaG9zdG5hbWUgLSDkuLvmnLrlkI3vvIzpu5jorqQgJzEyNy4wLjAuMSdcbiAqIEBwYXJhbSBtYXhUcmllcyAtIOacgOWkp+WwneivleasoeaVsO+8jOm7mOiupCAxMFxuICogQHJldHVybnMg5Y+v55So55qE56uv5Y+j5Y+3XG4gKiBAdGhyb3dzIOaJvuS4jeWIsOWPr+eUqOerr+WPo+aXtuaKm+WHuumUmeivr1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZEF2YWlsYWJsZVBvcnQoXG4gIHN0YXJ0UG9ydDogbnVtYmVyLFxuICBob3N0bmFtZSA9IERFRkFVTFRfSE9TVE5BTUUsXG4gIG1heFRyaWVzID0gTUFYX1BPUlRfVFJJRVNcbik6IFByb21pc2U8bnVtYmVyPiB7XG4gIGZvciAobGV0IHBvcnQgPSBzdGFydFBvcnQ7IHBvcnQgPCBzdGFydFBvcnQgKyBtYXhUcmllczsgcG9ydCsrKSB7XG4gICAgaWYgKGF3YWl0IGlzUG9ydEF2YWlsYWJsZShwb3J0LCBob3N0bmFtZSkpIHtcbiAgICAgIHJldHVybiBwb3J0XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgTm8gYXZhaWxhYmxlIHBvcnQgZm91bmQgYWZ0ZXIgJHttYXhUcmllc30gdHJpZXMgc3RhcnRpbmcgZnJvbSAke3N0YXJ0UG9ydH1gKVxufVxuXG4vKipcbiAqIOe7iOatouWNoOeUqOaMh+Wumuerr+WPo+eahOi/m+eoi1xuICogQHBhcmFtIHBvcnQgLSDnq6/lj6Plj7dcbiAqIEBwYXJhbSBob3N0bmFtZSAtIOS4u+acuuWQje+8jOm7mOiupCAnMTI3LjAuMC4xJ1xuICogQHJldHVybnMg5piv5ZCm5oiQ5Yqf57uI5q2i6L+b56iLXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBraWxsUHJvY2Vzc09uUG9ydChwb3J0OiBudW1iZXIsIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgICAga2lsbFByb2Nlc3NPbldpbmRvd3MocG9ydCwgcmVzb2x2ZSlcbiAgICB9IGVsc2Uge1xuICAgICAga2lsbFByb2Nlc3NPblVuaXgocG9ydCwgcmVzb2x2ZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5ZyoIFdpbmRvd3Mg5LiK57uI5q2i5Y2g55So56uv5Y+j55qE6L+b56iLXG4gKi9cbmZ1bmN0aW9uIGtpbGxQcm9jZXNzT25XaW5kb3dzKHBvcnQ6IG51bWJlciwgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gIGNvbnN0IHByb2MgPSBzcGF3bignY21kJywgWycvYycsIGBuZXRzdGF0IC1hbm8gfCBmaW5kc3RyIDoke3BvcnR9YF0sIHsgc3RkaW86ICdwaXBlJyB9KVxuICBsZXQgb3V0cHV0ID0gJydcblxuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgIG91dHB1dCArPSBkYXRhLnRvU3RyaW5nKClcbiAgfSlcblxuICBwcm9jLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IG91dHB1dC5tYXRjaCgvTElTVEVOSU5HXFxzKyhcXGQrKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBzcGF3bigndGFza2tpbGwnLCBbJy9GJywgJy9QSUQnLCBtYXRjaFsxXV0sIHsgc3RkaW86ICdpZ25vcmUnIH0pXG4gICAgICAgIC5vbignY2xvc2UnLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID09PSAwKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5ZyoIFVuaXgg57O757uf5LiK57uI5q2i5Y2g55So56uv5Y+j55qE6L+b56iLXG4gKi9cbmZ1bmN0aW9uIGtpbGxQcm9jZXNzT25Vbml4KHBvcnQ6IG51bWJlciwgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7XG4gIGNvbnN0IHByb2MgPSBzcGF3bignbHNvZicsIFsnLXRpJywgYHRjcDoke3BvcnR9YCwgJy1zVENQOkxJU1RFTiddLCB7IHN0ZGlvOiAncGlwZScgfSlcbiAgbGV0IG91dHB1dCA9ICcnXG5cbiAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICBvdXRwdXQgKz0gZGF0YS50b1N0cmluZygpXG4gIH0pXG5cbiAgcHJvYy5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgY29uc3QgcGlkcyA9IG91dHB1dC50cmltKCkuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKVxuICAgIGlmIChwaWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGtpbGxQcm9jID0gc3Bhd24oJ2tpbGwnLCBbJy05JywgLi4ucGlkc10sIHsgc3RkaW86ICdpZ25vcmUnIH0pXG4gICAgICBraWxsUHJvYy5vbignY2xvc2UnLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID09PSAwKSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShmYWxzZSlcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICog5qOA5p+lIE9wZW5Db2RlIOi/m+eoi+aYr+WQpuWcqOi/kOihjFxuICogQHBhcmFtIHBvcnQgLSDmnI3liqHnq6/lj6NcbiAqIEByZXR1cm5zIOi/m+eoi+aYr+WQpuWcqOi/kOihjFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tPcGVuQ29kZVByb2Nlc3MocG9ydDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHJlcSA9IGh0dHAuZ2V0KHtcbiAgICAgIGhvc3RuYW1lOiBERUZBVUxUX0hPU1ROQU1FLFxuICAgICAgcG9ydCxcbiAgICAgIHBhdGg6ICcvaGVhbHRoJyxcbiAgICAgIHRpbWVvdXQ6IEhFQUxUSF9DSEVDS19USU1FT1VULFxuICAgIH0sIChyZXMpID0+IHtcbiAgICAgIHJlc29sdmUocmVzLnN0YXR1c0NvZGUgPT09IDIwMClcbiAgICB9KVxuICAgIHJlcS5vbignZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgICByZXEuZW5kKClcbiAgfSlcbn1cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFPLEdBQUcsS0FBSztJQUN4RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUU1QixNQUFNLEtBQUssR0FBRyxHQUFTLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxDQUFBO2dCQUNYLENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhLEVBQUUsQ0FBQTtnQkFDakIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1lBRUYsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFBO1FBRUQsTUFBTSxhQUFhLEdBQUcsR0FBUyxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDckMsVUFBVSxDQUFDLEtBQUssRUFB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QyxDQUFBO1FBQ0YsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDckMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ1gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCdcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2VzcydcbmltcG9ydCBuZXQgZnJvbSAnbmV0J1xuaW1wb3J0IHtcbiAgREVGQVVMVF9IT1NUTkFNRSxcbiAgU0VSVkVSX0NIRUNLX0lOVEVSVkFMLFxuICBIRUFMVEhfQ0hFQ0tfVElNRU9VVCxcbiAgTUFYX1BPUlRfVFJJRVMsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuXG4vKipcbiAqIOetieW+heacjeWKoeWZqOWwsee7qlxuICogQHBhcmFtIHVybCAtIOacjeWKoeWZqCBVUkxcbiAqIEBwYXJhbSB0aW1lb3V0IC0g6LaF5pe25pe26Ze077yI5q+r56eS77yJ77yM6buY6K6kIDEwMDAwXG4gKiBAcmV0dXJucyBQcm9taXNl77yM5pyN5Yqh5Zmo5bCx57uq5pe2IHJlc29sdmVcbiAqIEB0aHJvd3Mg6LaF5pe25ZCO5oqb5Ye66ZSZ6K+vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0Rm9yU2VydmVyKHVybDogc3RyaW5nLCB0aW1lb3V0ID0gMTAwMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpXG5cbiAgICBjb25zdCBjaGVjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHJlcSA9IGh0dHAuZ2V0KHVybCwgKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgJiYgcmVzLnN0YXR1c0NvZGUgPCA1MDApIHtcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXRyeU9yUmVqZWN0KClcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgcmVxLm9uKCdlcnJvcicsIHJldHJ5T3JSZWplY3QpXG4gICAgfVxuXG4gICAgY29uc3QgcmV0cnlPclJlamVjdCA9ICgpOiB2b2lkID0+IHtcbiAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lIDwgdGltZW91dCkge1xuICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCBTRVJWRVJfQ0hFQ0tfSU5URVJWQUwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBTZXJ2ZXIgbm90IHJlYWR5IGFmdGVyICR7dGltZW91dH1tc2ApKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrKClcbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6UgT3BlbkNvZGUg5piv5ZCm5bey5a6J6KOFXG4gKiBAcmV0dXJucyDmmK/lkKblt7Llronoo4VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrT3BlbkNvZGVJbnN0YWxsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHByb2MgPSBzcGF3bignb3BlbmNvZGUnLCBbJy0tdmVyc2lvbiddLCB7IHN0ZGlvOiAnaWdub3JlJyB9KVxuICAgIHByb2Mub24oJ2Nsb3NlJywgKGNvZGUpID0+IHJlc29sdmUoY29kZSA9PT0gMCkpXG4gICAgcHJvYy5vbignZXJyb3InLCAoKSA9PiByZXNvbHZlKGZhbHNlKSlcbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6Xnq6/lj6PmmK/lkKblj6/nlKhcbiAqIEBwYXJhbSBwb3J0IC0g56uv5Y+j5Y+3XG4gKiBAcGFyYW0gaG9zdG5hbWUgLSDkuLvmnLrlkI3vvIzpu5jorqQgJzEyNy4wLjAuMSdcbiAqIEByZXR1cm5zIOerr+WPo+aYr+WQpuWPr+eUqFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNQb3J0QXZhaWxhYmxlKHBvcnQ6IG51bWJlciwgaG9zdG5hbWUgPSBERUZBVUxUX0hPU1ROQU1FKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IG5ldC5jcmVhdGVTZXJ2ZXIoKVxuICAgIHNlcnZlci5vbmNlKCdlcnJvcicsICgpID0+IHJlc29sdmUoZmFsc2UpKVxuICAgIHNlcnZlci5vbmNlKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG4gICAgICBzZXJ2ZXIuY2xvc2UoKVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gICAgc2VydmVyLmxpc3Rlbihwb3J0LCBob3N0bmFtZSlcbiAgfSlcbn1cblxuLyoqXG4gKiDmn6Xmib7lj6/nlKjnq6/lj6NcbiAqIEBwYXJhbSBzdGFydFBvcnQgLSDotbflp4vnq6/lj6NcbiAqIEBwYXJhbSBob3N0bmFtZSAtIOS4u+acuuWQje+8jOm7mOiupCAnMTI3LjAuMC4xJ1xuICogQHBhcmFtIG1heFRyaWVzIC0g5pyA5aSn5bCd6K+V5qyh5pWw77yM6buY6K6kIDEwXG4gKiBAcmV0dXJucyDlj6/nlKjnmoTnq6/lj6Plj7dcbiAqIEB0aHJvd3Mg5om+5LiN5Yiw5Y+v55So56uv5Y+j5pe25oqb5Ye66ZSZ6K+vXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kQXZhaWxhYmxlUG9ydChcbiAgc3RhcnRQb3J0OiBudW1iZXIsXG4gIGhvc3RuYW1lID0gREVGQVVMVF9IT1NUTkFNRSxcbiAgbWF4VHJpZXMgPSBNQVhfUE9SVF9UUklFU1xuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgZm9yIChsZXQgcG9ydCA9IHN0YXJ0UG9ydDsgcG9ydCA8IHN0YXJ0UG9ydCArIG1heFRyaWVzOyBwb3J0KyspIHtcbiAgICBpZiAoYXdhaXQgaXNQb3J0QXZhaWxhYmxlKHBvcnQsIGhvc3RuYW1lKSkge1xuICAgICAgcmV0dXJuIHBvcnRcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBObyBhdmFpbGFibGUgcG9ydCBmb3VuZCBhZnRlciAke21heFRyaWVzfSB0cmllcyBzdGFydGluZyBmcm9tICR7c3RhcnRQb3J0fWApXG59XG5cbi8qKlxuICog57uI5q2i5Y2g55So5oyH5a6a56uv5Y+j55qE6L+b56iLXG4gKiBAcGFyYW0gcG9ydCAtIOerr+WPo+WPt1xuICogQHBhcmFtIGhvc3RuYW1lIC0g5Li75py65ZCN77yM6buY6K6kICcxMjcuMC4wLjEnXG4gKiBAcmV0dXJucyDmmK/lkKbmiJDlip/nu4jmraLov5vnqItcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGtpbGxQcm9jZXNzT25Qb3J0KHBvcnQ6IG51bWJlciwgaG9zdG5hbWUgPSBERUZBVUxUX0hPU1ROQU1FKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgICBraWxsUHJvY2Vzc09uV2luZG93cyhwb3J0LCByZXNvbHZlKVxuICAgIH0gZWxzZSB7XG4gICAgICBraWxsUHJvY2Vzc09uVW5peChwb3J0LCByZXNvbHZlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDlnKggV2luZG93cyDkuIrnu4jmraLljaDnlKjnq6/lj6PnmoTov5vnqItcbiAqL1xuZnVuY3Rpb24ga2lsbFByb2Nlc3NPbldpbmRvd3MocG9ydDogbnVtYmVyLCByZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgcHJvYyA9IHNwYXduKCdjbWQnLCBbJy9jJywgYG5ldHN0YXQgLWFubyB8IGZpbmRzdHIgOiR7cG9ydH1gXSwgeyBzdGRpbzogJ3BpcGUnIH0pXG4gIGxldCBvdXRwdXQgPSAnJ1xuXG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgb3V0cHV0ICs9IGRhdGEudG9TdHJpbmcoKVxuICB9KVxuXG4gIHByb2Mub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gb3V0cHV0Lm1hdGNoKC9MSVNURU5JTkdcXHMrKFxcZCspLylcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIHNwYXduKCd0YXNra2lsbCcsIFsnL0YnLCAnL1BJRCcsIG1hdGNoWzFdXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICAgICAgLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGZhbHNlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDlnKggVW5peCDns7vnu5/kuIrnu4jmraLljaDnlKjnq6/lj6PnmoTov5vnqItcbiAqL1xuZnVuY3Rpb24ga2lsbFByb2Nlc3NPblVuaXgocG9ydDogbnVtYmVyLCByZXNvbHZlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQpOiB2b2lkIHtcbiAgY29uc3QgcHJvYyA9IHNwYXduKCdsc29mJywgWyctdGknLCBgdGNwOiR7cG9ydH1gLCAnLXNUQ1A6TElTVEVOJ10sIHsgc3RkaW86ICdwaXBlJyB9KVxuICBsZXQgb3V0cHV0ID0gJydcblxuICBwcm9jLnN0ZG91dD8ub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgIG91dHB1dCArPSBkYXRhLnRvU3RyaW5nKClcbiAgfSlcblxuICBwcm9jLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICBjb25zdCBwaWRzID0gb3V0cHV0LnRyaW0oKS5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgaWYgKHBpZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qga2lsbFByb2MgPSBzcGF3bigna2lsbCcsIFsnLTknLCAuLi5waWRzXSwgeyBzdGRpbzogJ2lnbm9yZScgfSlcbiAgICAgIGtpbGxQcm9jLm9uKCdjbG9zZScsIChjb2RlKSA9PiByZXNvbHZlKGNvZGUgPT09IDApKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlKGZhbHNlKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiDmo4Dmn6UgT3BlbkNvZGUg6L+b56iL5piv5ZCm5Zyo6L+Q6KGMXG4gKiBAcGFyYW0gcG9ydCAtIOacjeWKoeerr+WPo1xuICogQHJldHVybnMg6L+b56iL5piv5ZCm5Zyo6L+Q6KGMXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja09wZW5Db2RlUHJvY2Vzcyhwb3J0OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgcmVxID0gaHR0cC5nZXQoe1xuICAgICAgaG9zdG5hbWU6IERFRkFVTFRfSE9TVE5BTUUsXG4gICAgICBwb3J0LFxuICAgICAgcGF0aDogJy9oZWFsdGgnLFxuICAgICAgdGltZW91dDogSEVBTFRIX0NIRUNLX1RJTUVPVVQsXG4gICAgfSwgKHJlcykgPT4ge1xuICAgICAgcmVzb2x2ZShyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKVxuICAgIH0pXG4gICAgcmVxLm9uKCdlcnJvcicsICgpID0+IHJlc29sdmUoZmFsc2UpKVxuICAgIHJlcS5lbmQoKVxuICB9KVxufVxuIl19
package/dist/web.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ChildProcess } from 'child_process';
2
- import { WebOptions } from './types';
2
+ import { WebOptions } from './types.js';
3
3
  /**
4
4
  * 启动 OpenCode Web 服务
5
5
  * @param options - Web 服务启动选项
package/dist/web.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { spawn } from 'child_process';
2
- import { waitForServer } from './utils';
3
- import { SERVER_START_TIMEOUT, LOG_PREFIX, } from './constants';
2
+ import { waitForServer } from './utils.js';
3
+ import { SERVER_START_TIMEOUT, LOG_PREFIX, } from './constants.js';
4
4
  import path from 'path';
5
5
  import fs from 'fs';
6
6
  /**
@@ -92,4 +92,4 @@ function setupProcessHandlers(proc, port, hostname) {
92
92
  console.error(`\x1b[31m\x1b[1m${LOG_PREFIX}\x1b[0m ❌ Failed to start OpenCode server:`, err.message);
93
93
  });
94
94
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRXZDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxHQUNYLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUN2QixPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFbkI7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQW1CO0lBQ3hELE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUU5RSxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUNwRSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFM0UsTUFBTSxJQUFJLEdBQUc7UUFDWCxPQUFPO1FBQ1AsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDdEIsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQTtJQUVELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtRQUNuQyxHQUFHO1FBQ0gsS0FBSyxFQUFFLE1BQU07UUFDYixHQUFHO0tBQ0osQ0FBQyxDQUFBO0lBRUYsb0JBQW9CLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUUxQyxNQUFNLGFBQWEsQ0FBQyxVQUFVLFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBRXZFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLFVBQVUsa0RBQWtELENBQUMsQ0FBQTtJQUU3RixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxHQUFXO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFFckUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM3QixFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsU0FBa0IsRUFBRSxhQUFzQixFQUFFLFVBQW1CO0lBQ3hHLE1BQU0sR0FBRyxHQUEyQjtRQUNsQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUNyQztRQUMzQixjQUFjLEVBQUUsUUFBUTtLQUN6QixDQUFBO0lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUE7SUFDckMsQ0FBQztJQUVELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsR0FBRyxDQUFDLHdCQUF3QixHQUFHLGFBQWEsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUE7SUFDbkMsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsb0JBQW9CLENBQUMsSUFBa0IsRUFBRSxJQUFZLEVBQUUsUUFBZ0I7SUFDOUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7SUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLFVBQVUsNENBQTRDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RHLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduLCBDaGlsZFByb2Nlc3MgfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgd2FpdEZvclNlcnZlciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBXZWJPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7XG4gIFNFUlZFUl9TVEFSVF9USU1FT1VULFxuICBMT0dfUFJFRklYLFxufSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgZnMgZnJvbSAnZnMnXG5cbi8qKlxuICog5ZCv5YqoIE9wZW5Db2RlIFdlYiDmnI3liqFcbiAqIEBwYXJhbSBvcHRpb25zIC0gV2ViIOacjeWKoeWQr+WKqOmAiemhuVxuICogQHJldHVybnMg5a2Q6L+b56iL5a6e5L6LXG4gKiBAdGhyb3dzIOacjeWKoeWQr+WKqOi2heaXtuaXtuaKm+WHuumUmeivr1xuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBjb25zdCBwcm9jID0gYXdhaXQgc3RhcnRPcGVuQ29kZVdlYih7XG4gKiAgIHBvcnQ6IDQwOTcsXG4gKiAgIGhvc3RuYW1lOiAnMTI3LjAuMC4xJyxcbiAqICAgc2VydmVyVXJsOiAnJyxcbiAqICAgY3dkOiBwcm9jZXNzLmN3ZCgpXG4gKiB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydE9wZW5Db2RlV2ViKG9wdGlvbnM6IFdlYk9wdGlvbnMpOiBQcm9taXNlPENoaWxkUHJvY2Vzcz4ge1xuICBjb25zdCB7IHBvcnQsIGhvc3RuYW1lLCBjd2QsIGNvbmZpZ0RpciwgY29yc09yaWdpbnMsIGNvbnRleHRBcGlVcmwgfSA9IG9wdGlvbnNcblxuICBjb25zdCBzdGF0ZURpciA9IGNyZWF0ZVN0YXRlRGlyZWN0b3J5KGN3ZClcbiAgY29uc3QgcGx1Z2luUGF0aCA9IHBhdGguam9pbihzdGF0ZURpciwgJ3BsdWdpbnMnLCAncGFnZS1jb250ZXh0LmpzJylcbiAgY29uc3QgZW52ID0gYnVpbGRQcm9jZXNzRW52KHN0YXRlRGlyLCBjb25maWdEaXIsIGNvbnRleHRBcGlVcmwsIHBsdWdpblBhdGgpXG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnc2VydmUnLFxuICAgICctLXBvcnQnLCBTdHJpbmcocG9ydCksXG4gICAgJy0taG9zdG5hbWUnLCBob3N0bmFtZSxcbiAgXVxuXG4gIGlmIChjb3JzT3JpZ2lucyAmJiBjb3JzT3JpZ2lucy5sZW5ndGggPiAwKSB7XG4gICAgY29yc09yaWdpbnMuZm9yRWFjaChvcmlnaW4gPT4ge1xuICAgICAgYXJncy5wdXNoKCctLWNvcnMnLCBvcmlnaW4pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHByb2MgPSBzcGF3bignb3BlbmNvZGUnLCBhcmdzLCB7XG4gICAgY3dkLFxuICAgIHN0ZGlvOiAncGlwZScsXG4gICAgZW52LFxuICB9KVxuXG4gIHNldHVwUHJvY2Vzc0hhbmRsZXJzKHByb2MsIHBvcnQsIGhvc3RuYW1lKVxuXG4gIGF3YWl0IHdhaXRGb3JTZXJ2ZXIoYGh0dHA6Ly8ke2hvc3RuYW1lfToke3BvcnR9YCwgU0VSVkVSX1NUQVJUX1RJTUVPVVQpXG5cbiAgY29uc29sZS5sb2coYFxcblxceDFiWzM2bVxceDFiWzFtJHtMT0dfUFJFRklYfVxceDFiWzBtIOKcqCBPcGVuQ29kZSBzZXJ2ZXIgc3RhcnRlZCBzdWNjZXNzZnVsbHlcXG5gKVxuXG4gIHJldHVybiBwcm9jXG59XG5cbi8qKlxuICog5Yib5bu654q25oCB55uu5b2VXG4gKiBAcGFyYW0gY3dkIC0g5bel5L2c55uu5b2VXG4gKiBAcmV0dXJucyDnirbmgIHnm67lvZXot6/lvoRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGVEaXJlY3RvcnkoY3dkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdGF0ZURpciA9IHBhdGguam9pbihjd2QsICdub2RlX21vZHVsZXMnLCAnLmNhY2hlJywgJ29wZW5jb2RlJylcbiAgXG4gIGlmICghZnMuZXhpc3RzU3luYyhzdGF0ZURpcikpIHtcbiAgICBmcy5ta2RpclN5bmMoc3RhdGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIH1cbiAgXG4gIHJldHVybiBzdGF0ZURpclxufVxuXG4vKipcbiAqIOaehOW7uui/m+eoi+eOr+Wig+WPmOmHj1xuICogQHBhcmFtIHN0YXRlRGlyIC0g54q25oCB55uu5b2V6Lev5b6EXG4gKiBAcGFyYW0gY29uZmlnRGlyIC0g6YWN572u55uu5b2V6Lev5b6EXG4gKiBAcGFyYW0gY29udGV4dEFwaVVybCAtIOS4iuS4i+aWhyBBUEkgVVJMXG4gKiBAcGFyYW0gcGx1Z2luUGF0aCAtIOaPkuS7tui3r+W+hFxuICogQHJldHVybnMg546v5aKD5Y+Y6YeP5a+56LGhXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUHJvY2Vzc0VudihzdGF0ZURpcjogc3RyaW5nLCBjb25maWdEaXI/OiBzdHJpbmcsIGNvbnRleHRBcGlVcmw/OiBzdHJpbmcsIHBsdWdpblBhdGg/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIC4uLk9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb2Nlc3MuZW52KS5maWx0ZXIoKFssIHZdKSA9PiB2ICE9PSB1bmRlZmluZWQpXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgIFhER19TVEFURV9IT01FOiBzdGF0ZURpcixcbiAgfVxuXG4gIGlmIChjb25maWdEaXIpIHtcbiAgICBlbnYuT1BFTkNPREVfQ09ORklHX0RJUiA9IGNvbmZpZ0RpclxuICB9XG5cbiAgaWYgKGNvbnRleHRBcGlVcmwpIHtcbiAgICBlbnYuT1BFTkNPREVfQ09OVEVYVF9BUElfVVJMID0gY29udGV4dEFwaVVybFxuICB9XG5cbiAgaWYgKHBsdWdpblBhdGgpIHtcbiAgICBlbnYuT1BFTkNPREVfUExVR0lOUyA9IHBsdWdpblBhdGhcbiAgfVxuXG4gIHJldHVybiBlbnZcbn1cblxuLyoqXG4gKiDorr7nva7ov5vnqIvkuovku7blpITnkIblmahcbiAqIEBwYXJhbSBwcm9jIC0g5a2Q6L+b56iL5a6e5L6LXG4gKi9cbmZ1bmN0aW9uIHNldHVwUHJvY2Vzc0hhbmRsZXJzKHByb2M6IENoaWxkUHJvY2VzcywgcG9ydDogbnVtYmVyLCBob3N0bmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIHByb2Muc3Rkb3V0Py5vbignZGF0YScsICgpID0+IHtcbiAgfSlcblxuICBwcm9jLnN0ZGVycj8ub24oJ2RhdGEnLCAoKSA9PiB7XG4gIH0pXG5cbiAgcHJvYy5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihgXFx4MWJbMzFtXFx4MWJbMW0ke0xPR19QUkVGSVh9XFx4MWJbMG0g4p2MIEZhaWxlZCB0byBzdGFydCBPcGVuQ29kZSBzZXJ2ZXI6YCwgZXJyLm1lc3NhZ2UpXG4gIH0pXG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dlYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFnQixNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTFDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUVuQjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsT0FBbUI7SUFDeEQsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRTlFLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUUzRSxNQUFNLElBQUksR0FBRztRQUNYLE9BQU87UUFDUCxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QixZQUFZLEVBQUUsUUFBUTtLQUN2QixDQUFBO0lBRUQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQ25DLEdBQUc7UUFDSCxLQUFLLEVBQUUsTUFBTTtRQUNiLEdBQUc7S0FDSixDQUFDLENBQUE7SUFFRixvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBRTFDLE1BQU0sYUFBYSxDQUFDLFVBQVUsUUFBUSxJQUFJLElBQUksRUFBRSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFFdkUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsVUFBVSxrREFBa0QsQ0FBQyxDQUFBO0lBRTdGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLEdBQVc7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUVyRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxTQUFrQixFQUFFLGFBQXNCLEVBQUUsVUFBbUI7SUFDeEcsTUFBTSxHQUFHLEdBQTJCO1FBQ2xDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQ3JDO1FBQzNCLGNBQWMsRUFBRSxRQUFRO0tBQ3pCLENBQUE7SUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsR0FBRyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsd0JBQXdCLEdBQUcsYUFBYSxDQUFBO0lBQzlDLENBQUM7SUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsR0FBRyxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FBQyxJQUFrQixFQUFFLElBQVksRUFBRSxRQUFnQjtJQUM5RSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQzdCLENBQUMsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtJQUM3QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSw0Q0FBNEMsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEcsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyB3YWl0Rm9yU2VydmVyIH0gZnJvbSAnLi91dGlscy5qcydcbmltcG9ydCB7IFdlYk9wdGlvbnMgfSBmcm9tICcuL3R5cGVzLmpzJ1xuaW1wb3J0IHtcbiAgU0VSVkVSX1NUQVJUX1RJTUVPVVQsXG4gIExPR19QUkVGSVgsXG59IGZyb20gJy4vY29uc3RhbnRzLmpzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcblxuLyoqXG4gKiDlkK/liqggT3BlbkNvZGUgV2ViIOacjeWKoVxuICogQHBhcmFtIG9wdGlvbnMgLSBXZWIg5pyN5Yqh5ZCv5Yqo6YCJ6aG5XG4gKiBAcmV0dXJucyDlrZDov5vnqIvlrp7kvotcbiAqIEB0aHJvd3Mg5pyN5Yqh5ZCv5Yqo6LaF5pe25pe25oqb5Ye66ZSZ6K+vXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IHByb2MgPSBhd2FpdCBzdGFydE9wZW5Db2RlV2ViKHtcbiAqICAgcG9ydDogNDA5NyxcbiAqICAgaG9zdG5hbWU6ICcxMjcuMC4wLjEnLFxuICogICBzZXJ2ZXJVcmw6ICcnLFxuICogICBjd2Q6IHByb2Nlc3MuY3dkKClcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0T3BlbkNvZGVXZWIob3B0aW9uczogV2ViT3B0aW9ucyk6IFByb21pc2U8Q2hpbGRQcm9jZXNzPiB7XG4gIGNvbnN0IHsgcG9ydCwgaG9zdG5hbWUsIGN3ZCwgY29uZmlnRGlyLCBjb3JzT3JpZ2lucywgY29udGV4dEFwaVVybCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IHN0YXRlRGlyID0gY3JlYXRlU3RhdGVEaXJlY3RvcnkoY3dkKVxuICBjb25zdCBwbHVnaW5QYXRoID0gcGF0aC5qb2luKHN0YXRlRGlyLCAncGx1Z2lucycsICdwYWdlLWNvbnRleHQuanMnKVxuICBjb25zdCBlbnYgPSBidWlsZFByb2Nlc3NFbnYoc3RhdGVEaXIsIGNvbmZpZ0RpciwgY29udGV4dEFwaVVybCwgcGx1Z2luUGF0aClcblxuICBjb25zdCBhcmdzID0gW1xuICAgICdzZXJ2ZScsXG4gICAgJy0tcG9ydCcsIFN0cmluZyhwb3J0KSxcbiAgICAnLS1ob3N0bmFtZScsIGhvc3RuYW1lLFxuICBdXG5cbiAgaWYgKGNvcnNPcmlnaW5zICYmIGNvcnNPcmlnaW5zLmxlbmd0aCA+IDApIHtcbiAgICBjb3JzT3JpZ2lucy5mb3JFYWNoKG9yaWdpbiA9PiB7XG4gICAgICBhcmdzLnB1c2goJy0tY29ycycsIG9yaWdpbilcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgcHJvYyA9IHNwYXduKCdvcGVuY29kZScsIGFyZ3MsIHtcbiAgICBjd2QsXG4gICAgc3RkaW86ICdwaXBlJyxcbiAgICBlbnYsXG4gIH0pXG5cbiAgc2V0dXBQcm9jZXNzSGFuZGxlcnMocHJvYywgcG9ydCwgaG9zdG5hbWUpXG5cbiAgYXdhaXQgd2FpdEZvclNlcnZlcihgaHR0cDovLyR7aG9zdG5hbWV9OiR7cG9ydH1gLCBTRVJWRVJfU1RBUlRfVElNRU9VVClcblxuICBjb25zb2xlLmxvZyhgXFxuXFx4MWJbMzZtXFx4MWJbMW0ke0xPR19QUkVGSVh9XFx4MWJbMG0g4pyoIE9wZW5Db2RlIHNlcnZlciBzdGFydGVkIHN1Y2Nlc3NmdWxseVxcbmApXG5cbiAgcmV0dXJuIHByb2Ncbn1cblxuLyoqXG4gKiDliJvlu7rnirbmgIHnm67lvZVcbiAqIEBwYXJhbSBjd2QgLSDlt6XkvZznm67lvZVcbiAqIEByZXR1cm5zIOeKtuaAgeebruW9lei3r+W+hFxuICovXG5mdW5jdGlvbiBjcmVhdGVTdGF0ZURpcmVjdG9yeShjd2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXRlRGlyID0gcGF0aC5qb2luKGN3ZCwgJ25vZGVfbW9kdWxlcycsICcuY2FjaGUnLCAnb3BlbmNvZGUnKVxuICBcbiAgaWYgKCFmcy5leGlzdHNTeW5jKHN0YXRlRGlyKSkge1xuICAgIGZzLm1rZGlyU3luYyhzdGF0ZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgfVxuICBcbiAgcmV0dXJuIHN0YXRlRGlyXG59XG5cbi8qKlxuICog5p6E5bu66L+b56iL546v5aKD5Y+Y6YePXG4gKiBAcGFyYW0gc3RhdGVEaXIgLSDnirbmgIHnm67lvZXot6/lvoRcbiAqIEBwYXJhbSBjb25maWdEaXIgLSDphY3nva7nm67lvZXot6/lvoRcbiAqIEBwYXJhbSBjb250ZXh0QXBpVXJsIC0g5LiK5LiL5paHIEFQSSBVUkxcbiAqIEBwYXJhbSBwbHVnaW5QYXRoIC0g5o+S5Lu26Lev5b6EXG4gKiBAcmV0dXJucyDnjq/looPlj5jph4/lr7nosaFcbiAqL1xuZnVuY3Rpb24gYnVpbGRQcm9jZXNzRW52KHN0YXRlRGlyOiBzdHJpbmcsIGNvbmZpZ0Rpcj86IHN0cmluZywgY29udGV4dEFwaVVybD86IHN0cmluZywgcGx1Z2luUGF0aD86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpLmZpbHRlcigoWywgdl0pID0+IHYgIT09IHVuZGVmaW5lZClcbiAgICApIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgWERHX1NUQVRFX0hPTUU6IHN0YXRlRGlyLFxuICB9XG5cbiAgaWYgKGNvbmZpZ0Rpcikge1xuICAgIGVudi5PUEVOQ09ERV9DT05GSUdfRElSID0gY29uZmlnRGlyXG4gIH1cblxuICBpZiAoY29udGV4dEFwaVVybCkge1xuICAgIGVudi5PUEVOQ09ERV9DT05URVhUX0FQSV9VUkwgPSBjb250ZXh0QXBpVXJsXG4gIH1cblxuICBpZiAocGx1Z2luUGF0aCkge1xuICAgIGVudi5PUEVOQ09ERV9QTFVHSU5TID0gcGx1Z2luUGF0aFxuICB9XG5cbiAgcmV0dXJuIGVudlxufVxuXG4vKipcbiAqIOiuvue9rui/m+eoi+S6i+S7tuWkhOeQhuWZqFxuICogQHBhcmFtIHByb2MgLSDlrZDov5vnqIvlrp7kvotcbiAqL1xuZnVuY3Rpb24gc2V0dXBQcm9jZXNzSGFuZGxlcnMocHJvYzogQ2hpbGRQcm9jZXNzLCBwb3J0OiBudW1iZXIsIGhvc3RuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgcHJvYy5zdGRvdXQ/Lm9uKCdkYXRhJywgKCkgPT4ge1xuICB9KVxuXG4gIHByb2Muc3RkZXJyPy5vbignZGF0YScsICgpID0+IHtcbiAgfSlcblxuICBwcm9jLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGBcXHgxYlszMW1cXHgxYlsxbSR7TE9HX1BSRUZJWH1cXHgxYlswbSDinYwgRmFpbGVkIHRvIHN0YXJ0IE9wZW5Db2RlIHNlcnZlcjpgLCBlcnIubWVzc2FnZSlcbiAgfSlcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plugin-opencode-assistant",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Embed OpenCode Web UI in your Vite dev server for real-time code modification and preview",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",