@cloudbase/ai 2.11.0 → 2.12.1

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/cjs/AI.js +6 -4
  2. package/dist/cjs/bot/index.d.ts +15 -15
  3. package/dist/cjs/bot/index.js +56 -22
  4. package/dist/cjs/models/Ark/index.d.ts +3 -3
  5. package/dist/cjs/models/Ark/index.js +5 -3
  6. package/dist/cjs/models/DashScope/index.d.ts +3 -3
  7. package/dist/cjs/models/DashScope/index.js +5 -3
  8. package/dist/cjs/models/DeepSeek/index.d.ts +3 -3
  9. package/dist/cjs/models/DeepSeek/index.js +5 -3
  10. package/dist/cjs/models/HunYuan/index.d.ts +3 -3
  11. package/dist/cjs/models/HunYuan/index.js +5 -3
  12. package/dist/cjs/models/HunYuanBeta/index.d.ts +3 -3
  13. package/dist/cjs/models/HunYuanBeta/index.js +5 -3
  14. package/dist/cjs/models/HunYuanOpen/index.d.ts +3 -3
  15. package/dist/cjs/models/HunYuanOpen/index.js +5 -3
  16. package/dist/cjs/models/Moonshot/index.d.ts +3 -3
  17. package/dist/cjs/models/Moonshot/index.js +5 -3
  18. package/dist/cjs/models/Yi/index.d.ts +3 -3
  19. package/dist/cjs/models/Yi/index.js +5 -3
  20. package/dist/cjs/models/ZhiPu/index.d.ts +3 -3
  21. package/dist/cjs/models/ZhiPu/index.js +5 -3
  22. package/dist/cjs/models/model.d.ts +3 -3
  23. package/dist/cjs/models/model.js +5 -5
  24. package/dist/cjs/type.d.ts +7 -2
  25. package/dist/cjs/type.js +1 -1
  26. package/dist/esm/AI.js +6 -4
  27. package/dist/esm/bot/index.d.ts +15 -15
  28. package/dist/esm/bot/index.js +56 -22
  29. package/dist/esm/models/Ark/index.d.ts +3 -3
  30. package/dist/esm/models/Ark/index.js +5 -3
  31. package/dist/esm/models/DashScope/index.d.ts +3 -3
  32. package/dist/esm/models/DashScope/index.js +5 -3
  33. package/dist/esm/models/DeepSeek/index.d.ts +3 -3
  34. package/dist/esm/models/DeepSeek/index.js +5 -3
  35. package/dist/esm/models/HunYuan/index.d.ts +3 -3
  36. package/dist/esm/models/HunYuan/index.js +5 -3
  37. package/dist/esm/models/HunYuanBeta/index.d.ts +3 -3
  38. package/dist/esm/models/HunYuanBeta/index.js +5 -3
  39. package/dist/esm/models/HunYuanOpen/index.d.ts +3 -3
  40. package/dist/esm/models/HunYuanOpen/index.js +5 -3
  41. package/dist/esm/models/Moonshot/index.d.ts +3 -3
  42. package/dist/esm/models/Moonshot/index.js +5 -3
  43. package/dist/esm/models/Yi/index.d.ts +3 -3
  44. package/dist/esm/models/Yi/index.js +5 -3
  45. package/dist/esm/models/ZhiPu/index.d.ts +3 -3
  46. package/dist/esm/models/ZhiPu/index.js +5 -3
  47. package/dist/esm/models/model.d.ts +3 -3
  48. package/dist/esm/models/model.js +5 -5
  49. package/dist/esm/type.d.ts +7 -2
  50. package/dist/esm/type.js +1 -1
  51. package/package.json +4 -4
  52. package/src/AI.ts +5 -3
  53. package/src/bot/index.ts +56 -22
  54. package/src/models/Ark/index.ts +5 -2
  55. package/src/models/DashScope/index.ts +5 -2
  56. package/src/models/DeepSeek/index.ts +5 -2
  57. package/src/models/HunYuan/index.ts +5 -2
  58. package/src/models/HunYuanBeta/index.ts +5 -2
  59. package/src/models/HunYuanOpen/index.ts +5 -2
  60. package/src/models/Moonshot/index.ts +5 -2
  61. package/src/models/Yi/index.ts +5 -2
  62. package/src/models/ZhiPu/index.ts +5 -2
  63. package/src/models/model.ts +5 -4
  64. package/src/type.ts +9 -3
@@ -93,7 +93,7 @@ var ReactModel = (function () {
93
93
  function ReactModel(model) {
94
94
  this.model = model;
95
95
  }
96
- ReactModel.prototype.generateText = function (_input) {
96
+ ReactModel.prototype.generateText = function (_input, options) {
97
97
  var _a, _b;
98
98
  return __awaiter(this, void 0, void 0, function () {
99
99
  var rawResponses, totalUsage, _c, _d, onStepFinish, _e, maxSteps, input, doGenerate, currentRes, currentStep, toolCall, stepUsage_1, toolCallResult, choice, e_1, lastChoice, lastMessage, text, messages, stepUsage;
@@ -104,7 +104,7 @@ var ReactModel = (function () {
104
104
  rawResponses = [];
105
105
  totalUsage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 };
106
106
  _c = processInput(_input), _d = _c[0], onStepFinish = _d.onStepFinish, _e = _d.maxSteps, maxSteps = _e === void 0 ? 10 : _e, input = _c[1];
107
- doGenerate = function () { return _this.model.doGenerate(input); };
107
+ doGenerate = function () { return _this.model.doGenerate(input, options); };
108
108
  return [4, doGenerate()];
109
109
  case 1:
110
110
  currentRes = _f.sent();
@@ -179,7 +179,7 @@ var ReactModel = (function () {
179
179
  });
180
180
  });
181
181
  };
182
- ReactModel.prototype.streamText = function (_input) {
182
+ ReactModel.prototype.streamText = function (_input, options) {
183
183
  var _a;
184
184
  return __awaiter(this, void 0, void 0, function () {
185
185
  var totalUsage, _b, _c, onStepFinish, _d, maxSteps, input, doStream, currentRes, currentStep, readResult, readCurrentStream, _e, assistantMessage, stepUsage_2, toolCall, toolCallResult, e_2, _f, s1_1, s2_1, message_1, usage, messages, _g, s1_2, s2_2, messagePromise, usagePromise, message, finishReason, stepUsage, originStream, _h, s1, s2;
@@ -189,7 +189,7 @@ var ReactModel = (function () {
189
189
  case 0:
190
190
  totalUsage = { completion_tokens: 0, prompt_tokens: 0, total_tokens: 0 };
191
191
  _b = processInput(_input), _c = _b[0], onStepFinish = _c.onStepFinish, _d = _c.maxSteps, maxSteps = _d === void 0 ? 10 : _d, input = _b[1];
192
- doStream = function () { return _this.model.doStream(input); };
192
+ doStream = function () { return _this.model.doStream(input, options); };
193
193
  return [4, doStream()];
194
194
  case 1:
195
195
  currentRes = _j.sent();
@@ -475,4 +475,4 @@ function addToUsage(targetUsage, sourceUsage) {
475
475
  targetUsage.prompt_tokens += sourceUsage.prompt_tokens;
476
476
  targetUsage.total_tokens += sourceUsage.total_tokens;
477
477
  }
478
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsYUFBYSxFQUNiLDBCQUEwQixFQUMxQix1QkFBdUIsR0FDeEIsTUFBTSxVQUFVLENBQUE7QUF1Q2pCLFNBQVMsWUFBWSxDQUFDLEdBQW9COztJQUNoQyxJQUFBLFlBQVksR0FBb0QsR0FBRyxhQUF2RCxFQUFFLFdBQVcsR0FBdUMsR0FBRyxZQUExQyxFQUFFLFFBQVEsR0FBNkIsR0FBRyxTQUFoQyxFQUFFLElBQUksR0FBdUIsR0FBRyxLQUExQixFQUFFLFVBQVUsR0FBVyxHQUFHLFdBQWQsRUFBSyxDQUFDLFVBQUssR0FBRyxFQUFyRSxpRUFBK0QsQ0FBRixDQUFRO0lBRTNFLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtLQUN0RDtJQUVELE9BQU87UUFDTCxFQUFFLFlBQVksY0FBQSxFQUFFLFdBQVcsYUFBQSxFQUFFLFFBQVEsVUFBQSxFQUFFOzhCQUVsQyxDQUFDLEtBQ0osS0FBSyxFQUFFLE1BQUEsQ0FBQyxDQUFDLEtBQUssMENBQUUsR0FBRyxDQUFDLFVBQUMsSUFBSTtnQkFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO29CQUNoQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFBO2lCQUNyQztnQkFDRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QUE7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIFRyYW5zZm9ybVN0cmVhbSxcbiAgY3JlYXRlUHJvbWlzZSxcbiAgaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIGZ1bmN0aW9uVG9vbFRvTW9kZWxUb29sLFxufSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7XG4gIEJhc2VDaGF0TW9kZWxJbnB1dCxcbiAgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmssXG4gIERvU3RyZWFtT3V0cHV0LFxuICBEb0dlbmVyYXRlT3V0cHV0LFxuICBTaW1wbGVDaGF0TW9kZWwsXG4gIFRvb2xDYWxsLFxuICBDaGF0TW9kZWxNZXNzYWdlLFxuICBBc3luY0l0ZXJhYmxlUmVhZGFibGVTdHJlYW0sXG4gIFVzYWdlLFxuICBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIE1vZGVsVG9vbCxcbiAgRnVuY3Rpb25Ub29sLFxufSBmcm9tICcuLi90eXBlJ1xuXG50eXBlIFJlYWN0TW9kZWxJbnB1dCA9IFJlYWN0UHJvcHMgJlxuT21pdDxCYXNlQ2hhdE1vZGVsSW5wdXQsICd0b29scyc+ICYge1xuICB0b29scz86IEFycmF5PE1vZGVsVG9vbCB8IEZ1bmN0aW9uVG9vbD5cbiAgdG9wUD86IG51bWJlclxuICB0b29sQ2hvaWNlPzogJ25vbmUnIHwgJ2F1dG8nIHwgJ2N1c3RvbSdcbn1cblxuaW50ZXJmYWNlIElPblN0ZXBGaW5pc2gge1xuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgdGV4dD86IHN0cmluZ1xuICB0b29sQ2FsbD86IFRvb2xDYWxsXG4gIHRvb2xSZXN1bHQ/OiB1bmtub3duXG4gIGZpbmlzaFJlYXNvbj86IHN0cmluZ1xuICBzdGVwVXNhZ2U/OiBVc2FnZVxuICB0b3RhbFVzYWdlPzogVXNhZ2Vcbn1cblxuaW50ZXJmYWNlIFJlYWN0UHJvcHMge1xuICBtYXhTdGVwcz86IG51bWJlclxuICBvblN0ZXBGaW5pc2g/OiAocHJvcDogSU9uU3RlcEZpbmlzaCkgPT4gdW5rbm93blxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsIC8vIFRPRE86IOWunueOsCBhYm9ydFNpZ25hbFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSW5wdXQob2JqOiBSZWFjdE1vZGVsSW5wdXQpOiBbUmVhY3RQcm9wcywgQmFzZUNoYXRNb2RlbElucHV0XSB7XG4gIGNvbnN0IHsgb25TdGVwRmluaXNoLCBhYm9ydFNpZ25hbCwgbWF4U3RlcHMsIHRvcFAsIHRvb2xDaG9pY2UsIC4uLmIgfSA9IG9ialxuXG4gIGlmIChtYXhTdGVwcyAhPSBudWxsICYmIG1heFN0ZXBzIDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYG1heFN0ZXBzYCBtdXNlIGJlIGdyZWF0ZXIgdGhhbiAwLicpXG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgb25TdGVwRmluaXNoLCBhYm9ydFNpZ25hbCwgbWF4U3RlcHMgfSxcbiAgICB7XG4gICAgICAuLi5iLFxuICAgICAgdG9vbHM6IGIudG9vbHM/Lm1hcCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAoJ2ZuJyBpbiB0b29sKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9vbFRvTW9kZWxUb29sKHRvb2wpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvb2xcbiAgICAgIH0pLFxuICAgICAgdG9wX3A6IHRvcFAgIT0gbnVsbCA/IHRvcFAgOiBiLnRvcF9wLFxuICAgICAgdG9vbF9jaG9pY2U6IHRvb2xDaG9pY2UgIT0gbnVsbCA/IHRvb2xDaG9pY2UgOiBiLnRvb2xfY2hvaWNlLFxuICAgIH0sXG4gIF1cbn1cblxuZXhwb3J0IGNsYXNzIFJlYWN0TW9kZWwge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGVsOiBTaW1wbGVDaGF0TW9kZWwpIHt9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVGV4dChfaW5wdXQ6IFJlYWN0TW9kZWxJbnB1dCk6IFByb21pc2U8e1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VzOiBBcnJheTxDaGF0TW9kZWxNZXNzYWdlPlxuICAgIHVzYWdlOiBVc2FnZVxuICAgIHJhd1Jlc3BvbnNlczogQXJyYXk8dW5rbm93bj5cbiAgICBlcnJvcj86IGFueVxuICB9PiB7XG4gICAgY29uc3QgcmF3UmVzcG9uc2VzID0gW11cbiAgICBjb25zdCB0b3RhbFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG5cbiAgICBjb25zdCBbeyBvblN0ZXBGaW5pc2gsIG1heFN0ZXBzID0gMTAgfSwgaW5wdXRdID0gcHJvY2Vzc0lucHV0KF9pbnB1dClcblxuICAgIGNvbnN0IGRvR2VuZXJhdGUgPSAoKSA9PiB0aGlzLm1vZGVsLmRvR2VuZXJhdGUoaW5wdXQpIC8vIOWQjue7reS7o+eggeS8muebtOaOpeWvuSBpbnB1dC5tZXNzYWdlcyDljp/lnLDkv67mlLnvvIzov5nph4zkuIDnm7TnlKjlkIzkuIDkuKrlr7nosaHlsLHooYxcbiAgICBsZXQgY3VycmVudFJlcyA9IGF3YWl0IGRvR2VuZXJhdGUoKVxuICAgIGxldCBjdXJyZW50U3RlcCA9IDFcbiAgICBjdXJyZW50UmVzLnJhd1Jlc3BvbnNlICYmIHJhd1Jlc3BvbnNlcy5wdXNoKGN1cnJlbnRSZXMucmF3UmVzcG9uc2UpXG5cbiAgICBsZXQgdG9vbENhbGw6IFRvb2xDYWxsIHwgbnVsbCA9IG51bGxcblxuICAgIC8vIFRPRE86IOS4gOasoeWvueivneacieWkmuS4qiB0b29sIGNhbGw/IOebruWJjeayoeaciei/meenjeeOsOixoe+8jOaaguaXtuS4jeWkhOeQhlxuICAgIHdoaWxlIChjdXJyZW50U3RlcCA8IG1heFN0ZXBzICYmICh0b29sQ2FsbCA9IGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlKGN1cnJlbnRSZXMpKSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwVXNhZ2UgPSBjcmVhdGVTb2xpZFVzYWdlKGN1cnJlbnRSZXMudXNhZ2UpXG4gICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcblxuICAgICAgLy8g5b2T5Yik5pat6ZyA6KaB5bel5YW36LCD55So5pe2XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0b29sQ2FsbFJlc3VsdCA9IGF3YWl0IGNhbGxUb29sKHRvb2xDYWxsKSAvLyDosIPnlKhcblxuICAgICAgICBjb25zdCBjaG9pY2UgPSBjdXJyZW50UmVzLmNob2ljZXNbMF0gLy8gZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUg5L+d6K+B5LqGIGNob2ljZSDogq/lrprlrZjlnKhcblxuICAgICAgICBhd2FpdCBvblN0ZXBGaW5pc2g/Lih7XG4gICAgICAgICAgZmluaXNoUmVhc29uOiBjaG9pY2UuZmluaXNoX3JlYXNvbixcbiAgICAgICAgICBtZXNzYWdlczogaW5wdXQubWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgICAgICB0ZXh0OiBjaG9pY2UubWVzc2FnZS5jb250ZW50LFxuICAgICAgICAgIHRvb2xDYWxsLFxuICAgICAgICAgIHRvb2xSZXN1bHQ6IHRvb2xDYWxsUmVzdWx0LFxuICAgICAgICAgIHN0ZXBVc2FnZSxcbiAgICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBwdXNoTmV3TWVzc2FnZXMoaW5wdXQubWVzc2FnZXMsIGNob2ljZS5tZXNzYWdlIGFzIFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSwgdG9vbENhbGxSZXN1bHQpIC8vIOeUqOiwg+eUqOe7k+aenOS/ruaUueacgOaWsOeahOa2iOaBr1xuXG4gICAgICAgIGN1cnJlbnRSZXMgPSBhd2FpdCBkb0dlbmVyYXRlKCkgLy8g5b6q546v5a+56K+dXG4gICAgICAgIGN1cnJlbnRSZXMucmF3UmVzcG9uc2UgJiYgcmF3UmVzcG9uc2VzLnB1c2goY3VycmVudFJlcy5yYXdSZXNwb25zZSlcbiAgICAgICAgY3VycmVudFN0ZXAgKz0gMVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgIG1lc3NhZ2VzOiBpbnB1dC5tZXNzYWdlcyxcbiAgICAgICAgICB1c2FnZTogdG90YWxVc2FnZSxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICByYXdSZXNwb25zZXMsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0Q2hvaWNlID0gY3VycmVudFJlcz8uY2hvaWNlcz8uWzBdXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBsYXN0Q2hvaWNlPy5tZXNzYWdlXG5cbiAgICBjb25zdCB0ZXh0ID0gbGFzdE1lc3NhZ2U/LmNvbnRlbnQgPz8gJydcbiAgICBjb25zdCBtZXNzYWdlcyA9IGxhc3RNZXNzYWdlID8gWy4uLmlucHV0Lm1lc3NhZ2VzLCBsYXN0TWVzc2FnZV0gOiBpbnB1dC5tZXNzYWdlc1xuXG4gICAgY29uc3Qgc3RlcFVzYWdlID0gY3JlYXRlU29saWRVc2FnZShjdXJyZW50UmVzLnVzYWdlKVxuICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuXG4gICAgYXdhaXQgb25TdGVwRmluaXNoPy4oe1xuICAgICAgZmluaXNoUmVhc29uOiBsYXN0Q2hvaWNlLmZpbmlzaF9yZWFzb24sXG4gICAgICBtZXNzYWdlczogbWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgIHRleHQsXG4gICAgICB0b29sQ2FsbDogZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUoY3VycmVudFJlcyksXG4gICAgICB0b29sUmVzdWx0OiBudWxsLFxuICAgICAgc3RlcFVzYWdlLFxuICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0LFxuICAgICAgbWVzc2FnZXMsXG4gICAgICB1c2FnZTogdG90YWxVc2FnZSxcbiAgICAgIHJhd1Jlc3BvbnNlcyxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RyZWFtVGV4dChfaW5wdXQ6IFJlYWN0TW9kZWxJbnB1dCk6IFByb21pc2U8e1xuICAgIGRhdGFTdHJlYW06IERvU3RyZWFtT3V0cHV0XG4gICAgdGV4dFN0cmVhbTogQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPHN0cmluZz5cbiAgICBtZXNzYWdlczogUHJvbWlzZTxBcnJheTxDaGF0TW9kZWxNZXNzYWdlPj5cbiAgICB1c2FnZTogUHJvbWlzZTxVc2FnZT5cbiAgICBlcnJvcj86IGFueVxuICB9PiB7XG4gICAgY29uc3QgdG90YWxVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuXG4gICAgY29uc3QgW3sgb25TdGVwRmluaXNoLCBtYXhTdGVwcyA9IDEwIH0sIGlucHV0XSA9IHByb2Nlc3NJbnB1dChfaW5wdXQpXG4gICAgY29uc3QgZG9TdHJlYW0gPSAoKSA9PiB0aGlzLm1vZGVsLmRvU3RyZWFtKGlucHV0KSAvLyDlkI7nu63ku6PnoIHkvJrnm7TmjqXlr7kgaW5wdXQubWVzc2FnZXMg5Y6f5Zyw5L+u5pS577yM6L+Z6YeM5LiA55u055So5ZCM5LiA5Liq5a+56LGh5bCx6KGMXG4gICAgbGV0IGN1cnJlbnRSZXMgPSBhd2FpdCBkb1N0cmVhbSgpXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSAxXG4gICAgbGV0IHJlYWRSZXN1bHQ6IHsgbWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlOyB1c2FnZTogVXNhZ2UgfSB8IG51bGwgPSBudWxsXG5cbiAgICBjb25zdCByZWFkQ3VycmVudFN0cmVhbSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IFtvbGRTdHJlYW0sIG5ld1N0cmVhbV0gPSBjdXJyZW50UmVzLnRlZSgpXG4gICAgICBjdXJyZW50UmVzID0gY3JlYXRlQXN5bmNJdGVyYWJsZShvbGRTdHJlYW0pXG4gICAgICByZXR1cm4gcmVhZEZ1bmN0aW9uQ2FsbFN0cmVhbShuZXdTdHJlYW0pXG4gICAgfVxuXG4gICAgLy8gVE9ETzog5LiA5qyh5a+56K+d5pyJ5aSa5LiqIHRvb2wgY2FsbD8g55uu5YmN5rKh5pyJ6L+Z56eN546w6LGh77yM5pqC5pe25LiN5aSE55CGXG4gICAgLy8g6L+Z6YeM5ZKMIGdlbmVyYXRlVGV4dCDkuI3lpKrkuIDmoLfvvIzpmaTkuobop6PmnpDlh7ogdG9vbENhbGwg5aSW77yM6L+Y6ZyA6KaB5LuO5rWB5Lit5p6E6YCg5Ye65YW25LuW5a6M5pW055qE5L+h5oGvXG4gICAgd2hpbGUgKGN1cnJlbnRTdGVwIDwgbWF4U3RlcHMgJiYgKHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkQ3VycmVudFN0cmVhbSgpKSAhPSBudWxsKSB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2U6IGFzc2lzdGFudE1lc3NhZ2UsIHVzYWdlOiBzdGVwVXNhZ2UgfSA9IHJlYWRSZXN1bHRcbiAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuXG4gICAgICAvLyDlvZPliKTmlq3pnIDopoHlt6XlhbfosIPnlKjml7ZcbiAgICAgIGNvbnN0IHRvb2xDYWxsID0gYXNzaXN0YW50TWVzc2FnZS50b29sX2NhbGxzPy5bMF0gLy8g6L+Z5LiqIHRvb2xDYWxsIOS4gOWumuWtmOWcqFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdG9vbENhbGxSZXN1bHQgPSBhd2FpdCBjYWxsVG9vbCh0b29sQ2FsbCkgLy8g6LCD55SoXG5cbiAgICAgICAgYXdhaXQgb25TdGVwRmluaXNoPy4oe1xuICAgICAgICAgIGZpbmlzaFJlYXNvbjogJ3Rvb2xfY2FsbHMnLFxuICAgICAgICAgIG1lc3NhZ2VzOiBpbnB1dC5tZXNzYWdlcy5zbGljZSgpLFxuICAgICAgICAgIHRleHQ6IGFzc2lzdGFudE1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgICB0b29sQ2FsbCxcbiAgICAgICAgICB0b29sUmVzdWx0OiB0b29sQ2FsbFJlc3VsdCxcbiAgICAgICAgICBzdGVwVXNhZ2UsXG4gICAgICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgcHVzaE5ld01lc3NhZ2VzKGlucHV0Lm1lc3NhZ2VzLCBhc3Npc3RhbnRNZXNzYWdlLCB0b29sQ2FsbFJlc3VsdCkgLy8g55So6LCD55So57uT5p6c5L+u5pS55pyA5paw55qE5raI5oGvXG4gICAgICAgIGN1cnJlbnRSZXMgPSBhd2FpdCBkb1N0cmVhbSgpIC8vIOW+queOr+WvueivnVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBbczEsIHMyXSA9IGN1cnJlbnRSZXMudGVlKClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlczogUHJvbWlzZS5yZXNvbHZlKGlucHV0Lm1lc3NhZ2VzKSxcbiAgICAgICAgICBkYXRhU3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMxKSxcbiAgICAgICAgICB0ZXh0U3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMyLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ciA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmRlbHRhPy5jb250ZW50XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykgY29udHJvbGxlci5lbnF1ZXVlKHN0cilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksKSwpLFxuICAgICAgICAgIHVzYWdlOiBQcm9taXNlLnJlc29sdmUodG90YWxVc2FnZSksXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmnIDlkI7ov5Tlm57ml7bvvIzmnInlh6Dnp43mg4XlhrXvvJpcbiAgICAgKiAxLiDmsqHotoUgbWF4U3RlcCDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiAyLiDotoXkuoYgbWF4U3RlcCDmnInlt6XlhbfosIPnlKhcbiAgICAgKiAzLiDotoXkuoYgbWF4U3RlcCDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiBuZXZlci4g5rKh6LaFIG1heFN0ZXDvvIzmnInlt6XlhbfosIPnlKjvvIzov5nml7blgJnkvJrov5vliLDkuIrpnaLnmoQgd2hpbGUg5b6q546vIGJsb2NrIOS4reWkhOeQhlxuICAgICAqXG4gICAgICog5YW25LitIDEuIDMuIOWPr+S7peWQiOW5tu+8jOayoeacieW3peWFt+iwg+eUqOWwseW6lOivpeebtOaOpei/lOWbnu+8jOaXoOiuuiBtYXhTdGVwXG4gICAgICpcbiAgICAgKiDmiYDku6XlkIjlubbkuLrvvJpcbiAgICAgKiAxLiDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiAyLiDmnInlt6XlhbfosIPnlKjvvIzkvYbmmK/otoXov4cgbWF4U3RlcFxuICAgICAqXG4gICAgICog6L+Z5Lik56eN5oOF5Ya16YO95rKh6L+b5YiwIHdoaWxlIOW+queOryBibG9jayDkuK3lpITnkIZcbiAgICAgKiDmiJHku6zpnIDopoEgYS4g5aGeIG1lc3NhZ2UgYi4g566XIFVzYWdlIGMuIOiwg+eUqCBvblN0ZXBGaW5pc2hcbiAgICAgKi9cblxuICAgIHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkQ3VycmVudFN0cmVhbSgpXG5cbiAgICBpZiAocmVhZFJlc3VsdCkge1xuICAgICAgLy8g5oOF5Ya1IDIg5pyJ5bel5YW36LCD55So77yM5L2G5piv6LaF6L+HIG1heFN0ZXBcbiAgICAgIGNvbnN0IHsgbWVzc2FnZSwgdXNhZ2UgfSA9IHJlYWRSZXN1bHRcbiAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgdXNhZ2UpXG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmlucHV0Lm1lc3NhZ2VzLCBtZXNzYWdlXVxuXG4gICAgICBvblN0ZXBGaW5pc2goe1xuICAgICAgICBtZXNzYWdlczogbWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgICAgZmluaXNoUmVhc29uOiAndG9vbF9jYWxsJyxcbiAgICAgICAgc3RlcFVzYWdlOiB1c2FnZSxcbiAgICAgICAgdGV4dDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgICB0b29sQ2FsbDogbWVzc2FnZS50b29sX2NhbGxzWzBdLFxuICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IFtzMSwgczJdID0gY3VycmVudFJlcy50ZWUoKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZXM6IFByb21pc2UucmVzb2x2ZShbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdKSxcbiAgICAgICAgZGF0YVN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMSksXG4gICAgICAgIHRleHRTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczIucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBzdHIgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSBjb250cm9sbGVyLmVucXVldWUoc3RyKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLCksKSxcbiAgICAgICAgdXNhZ2U6IFByb21pc2UucmVzb2x2ZSh0b3RhbFVzYWdlKSxcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g5oOF5Ya1IDEg5peg5bel5YW36LCD55SoXG4gICAgY29uc3QgbWVzc2FnZVByb21pc2UgPSBjcmVhdGVQcm9taXNlPEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+PigpXG4gICAgY29uc3QgdXNhZ2VQcm9taXNlID0gY3JlYXRlUHJvbWlzZTxVc2FnZT4oKVxuXG4gICAgY29uc3QgbWVzc2FnZTogQ2hhdE1vZGVsTWVzc2FnZSA9IHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogJycsXG4gICAgfVxuICAgIGxldCBmaW5pc2hSZWFzb24gPSAnJ1xuICAgIGNvbnN0IHN0ZXBVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuXG4gICAgY29uc3Qgb3JpZ2luU3RyZWFtID0gY3VycmVudFJlcy5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAvLyDkuI3mlLnlj5ggY2h1bmsg5YaF5a6577yM5Y+q5piv5oum5oiq5LiL5YaF5a655ou85pyA5ZCO55qE57uT5p6cXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbWVzc2FnZS5jb250ZW50ICs9IGNvbnRlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmZpbmlzaF9yZWFzb25cbiAgICAgICAgaWYgKHJlYXNvbikgZmluaXNoUmVhc29uID0gcmVhc29uXG5cbiAgICAgICAgLy8gVE9ETzog5LiN5ZCM5aSn5qih5Z6L55qEIHN0cmVhbSB1c2FnZSDmoLzlvI/kuI3kuIDmoLfvvIzlkI7nu63lj6/og73opoHosIPmlbQuXG4gICAgICAgIC8vIGh1bnl1YW4g5q+P5LiqIGNodW5rIOmDveS8muaciSB1c2FnZe+8jOmAkOatpeWinuWKoO+8jOS7peacgOWQjuS4gOS4queahOS4uuWHhjtcbiAgICAgICAgLy8gemhpcHUg5pyA5ZCOIGNodW5rIOS8muaciSB1c2FnZTtcbiAgICAgICAgaWYgKGNodW5rPy51c2FnZT8uY29tcGxldGlvbl90b2tlbnMpIHN0ZXBVc2FnZS5jb21wbGV0aW9uX3Rva2VucyA9IGNodW5rLnVzYWdlLmNvbXBsZXRpb25fdG9rZW5zXG4gICAgICAgIGlmIChjaHVuaz8udXNhZ2U/LnByb21wdF90b2tlbnMpIHN0ZXBVc2FnZS5wcm9tcHRfdG9rZW5zID0gY2h1bmsudXNhZ2UucHJvbXB0X3Rva2Vuc1xuICAgICAgICBpZiAoY2h1bms/LnVzYWdlPy50b3RhbF90b2tlbnMpIHN0ZXBVc2FnZS50b3RhbF90b2tlbnMgPSBjaHVuay51c2FnZS50b3RhbF90b2tlbnNcblxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspXG4gICAgICB9LFxuICAgICAgZmx1c2goKSB7XG4gICAgICAgIG1lc3NhZ2VQcm9taXNlLnJlcyhbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdKVxuICAgICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcbiAgICAgICAgdXNhZ2VQcm9taXNlLnJlcyhPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSlcbiAgICAgICAgb25TdGVwRmluaXNoPy4oe1xuICAgICAgICAgIG1lc3NhZ2VzOiBbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdLFxuICAgICAgICAgIGZpbmlzaFJlYXNvbixcbiAgICAgICAgICB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgICAgc3RlcFVzYWdlLFxuICAgICAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICB9KSwpXG5cbiAgICBjb25zdCBbczEsIHMyXSA9IG9yaWdpblN0cmVhbS50ZWUoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlUHJvbWlzZS5wcm9taXNlLFxuICAgICAgZGF0YVN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMSksXG4gICAgICB0ZXh0U3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMyLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gY2h1bms/LmNob2ljZXM/LlswXT8uZGVsdGE/LmNvbnRlbnRcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY29udGVudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KSwpLCksXG4gICAgICB1c2FnZTogdXNhZ2VQcm9taXNlLnByb21pc2UsXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlKG91dHB1dDogRG9HZW5lcmF0ZU91dHB1dCkge1xuICBjb25zdCBjaG9pY2UgPSBvdXRwdXQ/LmNob2ljZXM/LlswXVxuXG4gIGlmICghY2hvaWNlKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IHsgZmluaXNoX3JlYXNvbiwgbWVzc2FnZSB9ID0gY2hvaWNlXG5cbiAgaWYgKGZpbmlzaF9yZWFzb24gIT09ICd0b29sX2NhbGxzJykgcmV0dXJuIG51bGxcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gbnVsbFxuICBpZiAoIWlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlKG1lc3NhZ2UpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBtZXNzYWdlLnRvb2xfY2FsbHNbMF1cbn1cblxuZnVuY3Rpb24gcHVzaE5ld01lc3NhZ2VzKFxuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT4sXG4gIGFzc2lzdGFudE1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbiAgdG9vbENhbGxSZXN1bHQ6IHVua25vd24sXG4pIHtcbiAgbWVzc2FnZXMucHVzaChhc3Npc3RhbnRNZXNzYWdlLCB7XG4gICAgcm9sZTogJ3Rvb2wnLFxuICAgIHRvb2xfY2FsbF9pZDogYXNzaXN0YW50TWVzc2FnZS50b29sX2NhbGxzWzBdLmlkLFxuICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHRvb2xDYWxsUmVzdWx0KSxcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEZ1bmN0aW9uQ2FsbFN0cmVhbShzdHJlYW06IFJlYWRhYmxlU3RyZWFtPEJhc2VEb1N0cmVhbU91dHB1dENodW5rPiwpOiBQcm9taXNlPHsgbWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlOyB1c2FnZTogVXNhZ2UgfSB8IG51bGw+IHtcbiAgY29uc3Qgc3RlcFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG4gIGNvbnN0IGFTdHJlYW0gPSBjcmVhdGVBc3luY0l0ZXJhYmxlKHN0cmVhbSlcblxuICBjb25zdCByZXRUb29sQ2FsbDogVG9vbENhbGwgPSB7XG4gICAgaWQ6ICcnLFxuICAgIGZ1bmN0aW9uOiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFyZ3VtZW50czogJycsXG4gICAgfSxcbiAgICB0eXBlOiAnJyxcbiAgfVxuXG4gIGNvbnN0IHJldE1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSA9IHtcbiAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICBjb250ZW50OiAnJyxcbiAgICB0b29sX2NhbGxzOiBbcmV0VG9vbENhbGxdLFxuICB9XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBhU3RyZWFtKSB7XG4gICAgY29uc3QgY2hvaWNlID0gY2h1bms/LmNob2ljZXNbMF1cbiAgICBpZiAoIWNob2ljZSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHsgZmluaXNoX3JlYXNvbiwgZGVsdGEgfSA9IGNob2ljZVxuXG4gICAgaWYgKGZpbmlzaF9yZWFzb24gIT09ICd0b29sX2NhbGxzJykgcmV0dXJuIG51bGxcbiAgICBpZiAoIWRlbHRhKSBjb250aW51ZVxuXG4gICAgaWYgKGRlbHRhLmNvbnRlbnQpIHJldE1lc3NhZ2UuY29udGVudCArPSBkZWx0YS5jb250ZW50XG5cbiAgICBpZiAoISgndG9vbF9jYWxscycgaW4gZGVsdGEpKSBjb250aW51ZVxuICAgIGNvbnN0IHRvb2xDYWxsID0gZGVsdGE/LnRvb2xfY2FsbHM/LlswXVxuICAgIGlmICh0b29sQ2FsbD8uaWQpIHJldFRvb2xDYWxsLmlkID0gdG9vbENhbGwuaWRcbiAgICBpZiAodG9vbENhbGw/LnR5cGUpIHJldFRvb2xDYWxsLnR5cGUgPSB0b29sQ2FsbC50eXBlXG4gICAgaWYgKHRvb2xDYWxsPy5mdW5jdGlvbj8ubmFtZSkgcmV0VG9vbENhbGwuZnVuY3Rpb24ubmFtZSA9IHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWVcbiAgICBpZiAodG9vbENhbGw/LmZ1bmN0aW9uPy5hcmd1bWVudHMpIHJldFRvb2xDYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cyArPSB0b29sQ2FsbC5mdW5jdGlvbi5hcmd1bWVudHNcblxuICAgIC8vIFRPRE86IOS4jeWQjOWkp+aooeWei+eahCBzdHJlYW0gdXNhZ2Ug5qC85byP5LiN5LiA5qC377yM5ZCO57ut5Y+v6IO96KaB6LCD5pW0LlxuICAgIC8vIGh1bnl1YW4g5q+P5LiqIGNodW5rIOmDveS8muaciSB1c2FnZe+8jOmAkOatpeWinuWKoO+8jOS7peacgOWQjuS4gOS4queahOS4uuWHhjtcbiAgICAvLyB6aGlwdSDmnIDlkI4gY2h1bmsg5Lya5pyJIHVzYWdlO1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LmNvbXBsZXRpb25fdG9rZW5zKSBzdGVwVXNhZ2UuY29tcGxldGlvbl90b2tlbnMgPSBjaHVuay51c2FnZS5jb21wbGV0aW9uX3Rva2Vuc1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LnByb21wdF90b2tlbnMpIHN0ZXBVc2FnZS5wcm9tcHRfdG9rZW5zID0gY2h1bmsudXNhZ2UucHJvbXB0X3Rva2Vuc1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LnRvdGFsX3Rva2Vucykgc3RlcFVzYWdlLnRvdGFsX3Rva2VucyA9IGNodW5rLnVzYWdlLnRvdGFsX3Rva2Vuc1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiByZXRNZXNzYWdlLFxuICAgIHVzYWdlOiBzdGVwVXNhZ2UsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvb2xNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2FsbGFibGVGdW5jdGlvbj4oKVxuXG5mdW5jdGlvbiBjYWxsVG9vbCh0b29sQ2FsbDogVG9vbENhbGwpIHtcbiAgcmV0dXJuIHRvb2xNYXAuZ2V0KHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWUpKEpTT04ucGFyc2UodG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlU29saWRVc2FnZSh1c2FnZT86IFBhcnRpYWw8VXNhZ2U+KTogVXNhZ2Uge1xuICByZXR1cm4ge1xuICAgIGNvbXBsZXRpb25fdG9rZW5zOiB1c2FnZT8uY29tcGxldGlvbl90b2tlbnMgPz8gMCxcbiAgICBwcm9tcHRfdG9rZW5zOiB1c2FnZT8ucHJvbXB0X3Rva2VucyA/PyAwLFxuICAgIHRvdGFsX3Rva2VuczogdXNhZ2U/LnRvdGFsX3Rva2VucyA/PyAwLFxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFRvVXNhZ2UodGFyZ2V0VXNhZ2U6IFVzYWdlLCBzb3VyY2VVc2FnZTogVXNhZ2UpIHtcbiAgdGFyZ2V0VXNhZ2UuY29tcGxldGlvbl90b2tlbnMgKz0gc291cmNlVXNhZ2UuY29tcGxldGlvbl90b2tlbnNcbiAgdGFyZ2V0VXNhZ2UucHJvbXB0X3Rva2VucyArPSBzb3VyY2VVc2FnZS5wcm9tcHRfdG9rZW5zXG4gIHRhcmdldFVzYWdlLnRvdGFsX3Rva2VucyArPSBzb3VyY2VVc2FnZS50b3RhbF90b2tlbnNcbn1cbiJdfQ==
478
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsYUFBYSxFQUNiLDBCQUEwQixFQUMxQix1QkFBdUIsR0FDeEIsTUFBTSxVQUFVLENBQUE7QUF3Q2pCLFNBQVMsWUFBWSxDQUFDLEdBQW9COztJQUNoQyxJQUFBLFlBQVksR0FBb0QsR0FBRyxhQUF2RCxFQUFFLFdBQVcsR0FBdUMsR0FBRyxZQUExQyxFQUFFLFFBQVEsR0FBNkIsR0FBRyxTQUFoQyxFQUFFLElBQUksR0FBdUIsR0FBRyxLQUExQixFQUFFLFVBQVUsR0FBVyxHQUFHLFdBQWQsRUFBSyxDQUFDLFVBQUssR0FBRyxFQUFyRSxpRUFBK0QsQ0FBRixDQUFRO0lBRTNFLElBQUksUUFBUSxJQUFJLElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtLQUN0RDtJQUVELE9BQU87UUFDTCxFQUFFLFlBQVksY0FBQSxFQUFFLFdBQVcsYUFBQSxFQUFFLFFBQVEsVUFBQSxFQUFFOzhCQUVsQyxDQUFDLEtBQ0osS0FBSyxFQUFFLE1BQUEsQ0FBQyxDQUFDLEtBQUssMENBQUUsR0FBRyxDQUFDLFVBQUMsSUFBSTtnQkFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO29CQUNoQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFBO2lCQUNyQztnQkFDRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QUN0RCxXQUFXLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQUE7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIFRyYW5zZm9ybVN0cmVhbSxcbiAgY3JlYXRlUHJvbWlzZSxcbiAgaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIGZ1bmN0aW9uVG9vbFRvTW9kZWxUb29sLFxufSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7XG4gIEJhc2VDaGF0TW9kZWxJbnB1dCxcbiAgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmssXG4gIERvU3RyZWFtT3V0cHV0LFxuICBEb0dlbmVyYXRlT3V0cHV0LFxuICBTaW1wbGVDaGF0TW9kZWwsXG4gIFRvb2xDYWxsLFxuICBDaGF0TW9kZWxNZXNzYWdlLFxuICBBc3luY0l0ZXJhYmxlUmVhZGFibGVTdHJlYW0sXG4gIFVzYWdlLFxuICBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIE1vZGVsVG9vbCxcbiAgRnVuY3Rpb25Ub29sLFxuICBSZXFPcHRpb25zLFxufSBmcm9tICcuLi90eXBlJ1xuXG50eXBlIFJlYWN0TW9kZWxJbnB1dCA9IFJlYWN0UHJvcHMgJlxuT21pdDxCYXNlQ2hhdE1vZGVsSW5wdXQsICd0b29scyc+ICYge1xuICB0b29scz86IEFycmF5PE1vZGVsVG9vbCB8IEZ1bmN0aW9uVG9vbD5cbiAgdG9wUD86IG51bWJlclxuICB0b29sQ2hvaWNlPzogJ25vbmUnIHwgJ2F1dG8nIHwgJ2N1c3RvbSdcbn1cblxuaW50ZXJmYWNlIElPblN0ZXBGaW5pc2gge1xuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgdGV4dD86IHN0cmluZ1xuICB0b29sQ2FsbD86IFRvb2xDYWxsXG4gIHRvb2xSZXN1bHQ/OiB1bmtub3duXG4gIGZpbmlzaFJlYXNvbj86IHN0cmluZ1xuICBzdGVwVXNhZ2U/OiBVc2FnZVxuICB0b3RhbFVzYWdlPzogVXNhZ2Vcbn1cblxuaW50ZXJmYWNlIFJlYWN0UHJvcHMge1xuICBtYXhTdGVwcz86IG51bWJlclxuICBvblN0ZXBGaW5pc2g/OiAocHJvcDogSU9uU3RlcEZpbmlzaCkgPT4gdW5rbm93blxuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsIC8vIFRPRE86IOWunueOsCBhYm9ydFNpZ25hbFxufVxuXG5mdW5jdGlvbiBwcm9jZXNzSW5wdXQob2JqOiBSZWFjdE1vZGVsSW5wdXQpOiBbUmVhY3RQcm9wcywgQmFzZUNoYXRNb2RlbElucHV0XSB7XG4gIGNvbnN0IHsgb25TdGVwRmluaXNoLCBhYm9ydFNpZ25hbCwgbWF4U3RlcHMsIHRvcFAsIHRvb2xDaG9pY2UsIC4uLmIgfSA9IG9ialxuXG4gIGlmIChtYXhTdGVwcyAhPSBudWxsICYmIG1heFN0ZXBzIDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYG1heFN0ZXBzYCBtdXNlIGJlIGdyZWF0ZXIgdGhhbiAwLicpXG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgb25TdGVwRmluaXNoLCBhYm9ydFNpZ25hbCwgbWF4U3RlcHMgfSxcbiAgICB7XG4gICAgICAuLi5iLFxuICAgICAgdG9vbHM6IGIudG9vbHM/Lm1hcCgodG9vbCkgPT4ge1xuICAgICAgICBpZiAoJ2ZuJyBpbiB0b29sKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uVG9vbFRvTW9kZWxUb29sKHRvb2wpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvb2xcbiAgICAgIH0pLFxuICAgICAgdG9wX3A6IHRvcFAgIT0gbnVsbCA/IHRvcFAgOiBiLnRvcF9wLFxuICAgICAgdG9vbF9jaG9pY2U6IHRvb2xDaG9pY2UgIT0gbnVsbCA/IHRvb2xDaG9pY2UgOiBiLnRvb2xfY2hvaWNlLFxuICAgIH0sXG4gIF1cbn1cblxuZXhwb3J0IGNsYXNzIFJlYWN0TW9kZWwge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGVsOiBTaW1wbGVDaGF0TW9kZWwpIHt9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlVGV4dChfaW5wdXQ6IFJlYWN0TW9kZWxJbnB1dCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpOiBQcm9taXNlPHtcbiAgICB0ZXh0OiBzdHJpbmdcbiAgICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgICB1c2FnZTogVXNhZ2VcbiAgICByYXdSZXNwb25zZXM6IEFycmF5PHVua25vd24+XG4gICAgZXJyb3I/OiBhbnlcbiAgfT4ge1xuICAgIGNvbnN0IHJhd1Jlc3BvbnNlcyA9IFtdXG4gICAgY29uc3QgdG90YWxVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuXG4gICAgY29uc3QgW3sgb25TdGVwRmluaXNoLCBtYXhTdGVwcyA9IDEwIH0sIGlucHV0XSA9IHByb2Nlc3NJbnB1dChfaW5wdXQpXG5cbiAgICBjb25zdCBkb0dlbmVyYXRlID0gKCkgPT4gdGhpcy5tb2RlbC5kb0dlbmVyYXRlKGlucHV0LCBvcHRpb25zKSAvLyDlkI7nu63ku6PnoIHkvJrnm7TmjqXlr7kgaW5wdXQubWVzc2FnZXMg5Y6f5Zyw5L+u5pS577yM6L+Z6YeM5LiA55u055So5ZCM5LiA5Liq5a+56LGh5bCx6KGMXG4gICAgbGV0IGN1cnJlbnRSZXMgPSBhd2FpdCBkb0dlbmVyYXRlKClcbiAgICBsZXQgY3VycmVudFN0ZXAgPSAxXG4gICAgY3VycmVudFJlcy5yYXdSZXNwb25zZSAmJiByYXdSZXNwb25zZXMucHVzaChjdXJyZW50UmVzLnJhd1Jlc3BvbnNlKVxuXG4gICAgbGV0IHRvb2xDYWxsOiBUb29sQ2FsbCB8IG51bGwgPSBudWxsXG5cbiAgICAvLyBUT0RPOiDkuIDmrKHlr7nor53mnInlpJrkuKogdG9vbCBjYWxsPyDnm67liY3msqHmnInov5nnp43njrDosaHvvIzmmoLml7bkuI3lpITnkIZcbiAgICB3aGlsZSAoY3VycmVudFN0ZXAgPCBtYXhTdGVwcyAmJiAodG9vbENhbGwgPSBnZXRUb29sQ2FsbEZyb21HZW5lcmF0ZShjdXJyZW50UmVzKSkgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFVzYWdlID0gY3JlYXRlU29saWRVc2FnZShjdXJyZW50UmVzLnVzYWdlKVxuICAgICAgYWRkVG9Vc2FnZSh0b3RhbFVzYWdlLCBzdGVwVXNhZ2UpXG5cbiAgICAgIC8vIOW9k+WIpOaWremcgOimgeW3peWFt+iwg+eUqOaXtlxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdG9vbENhbGxSZXN1bHQgPSBhd2FpdCBjYWxsVG9vbCh0b29sQ2FsbCkgLy8g6LCD55SoXG5cbiAgICAgICAgY29uc3QgY2hvaWNlID0gY3VycmVudFJlcy5jaG9pY2VzWzBdIC8vIGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlIOS/neivgeS6hiBjaG9pY2Ug6IKv5a6a5a2Y5ZyoXG5cbiAgICAgICAgYXdhaXQgb25TdGVwRmluaXNoPy4oe1xuICAgICAgICAgIGZpbmlzaFJlYXNvbjogY2hvaWNlLmZpbmlzaF9yZWFzb24sXG4gICAgICAgICAgbWVzc2FnZXM6IGlucHV0Lm1lc3NhZ2VzLnNsaWNlKCksXG4gICAgICAgICAgdGV4dDogY2hvaWNlLm1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgICB0b29sQ2FsbCxcbiAgICAgICAgICB0b29sUmVzdWx0OiB0b29sQ2FsbFJlc3VsdCxcbiAgICAgICAgICBzdGVwVXNhZ2UsXG4gICAgICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgcHVzaE5ld01lc3NhZ2VzKGlucHV0Lm1lc3NhZ2VzLCBjaG9pY2UubWVzc2FnZSBhcyBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsIHRvb2xDYWxsUmVzdWx0KSAvLyDnlKjosIPnlKjnu5Pmnpzkv67mlLnmnIDmlrDnmoTmtojmga9cblxuICAgICAgICBjdXJyZW50UmVzID0gYXdhaXQgZG9HZW5lcmF0ZSgpIC8vIOW+queOr+WvueivnVxuICAgICAgICBjdXJyZW50UmVzLnJhd1Jlc3BvbnNlICYmIHJhd1Jlc3BvbnNlcy5wdXNoKGN1cnJlbnRSZXMucmF3UmVzcG9uc2UpXG4gICAgICAgIGN1cnJlbnRTdGVwICs9IDFcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICBtZXNzYWdlczogaW5wdXQubWVzc2FnZXMsXG4gICAgICAgICAgdXNhZ2U6IHRvdGFsVXNhZ2UsXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgICAgcmF3UmVzcG9uc2VzLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdENob2ljZSA9IGN1cnJlbnRSZXM/LmNob2ljZXM/LlswXVxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbGFzdENob2ljZT8ubWVzc2FnZVxuXG4gICAgY29uc3QgdGV4dCA9IGxhc3RNZXNzYWdlPy5jb250ZW50ID8/ICcnXG4gICAgY29uc3QgbWVzc2FnZXMgPSBsYXN0TWVzc2FnZSA/IFsuLi5pbnB1dC5tZXNzYWdlcywgbGFzdE1lc3NhZ2VdIDogaW5wdXQubWVzc2FnZXNcblxuICAgIGNvbnN0IHN0ZXBVc2FnZSA9IGNyZWF0ZVNvbGlkVXNhZ2UoY3VycmVudFJlcy51c2FnZSlcbiAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcblxuICAgIGF3YWl0IG9uU3RlcEZpbmlzaD8uKHtcbiAgICAgIGZpbmlzaFJlYXNvbjogbGFzdENob2ljZS5maW5pc2hfcmVhc29uLFxuICAgICAgbWVzc2FnZXM6IG1lc3NhZ2VzLnNsaWNlKCksXG4gICAgICB0ZXh0LFxuICAgICAgdG9vbENhbGw6IGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlKGN1cnJlbnRSZXMpLFxuICAgICAgdG9vbFJlc3VsdDogbnVsbCxcbiAgICAgIHN0ZXBVc2FnZSxcbiAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgIH0pXG5cbiAgICByZXR1cm4ge1xuICAgICAgdGV4dCxcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgdXNhZ2U6IHRvdGFsVXNhZ2UsXG4gICAgICByYXdSZXNwb25zZXMsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0cmVhbVRleHQoX2lucHV0OiBSZWFjdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTx7XG4gICAgZGF0YVN0cmVhbTogRG9TdHJlYW1PdXRwdXRcbiAgICB0ZXh0U3RyZWFtOiBBc3luY0l0ZXJhYmxlUmVhZGFibGVTdHJlYW08c3RyaW5nPlxuICAgIG1lc3NhZ2VzOiBQcm9taXNlPEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+PlxuICAgIHVzYWdlOiBQcm9taXNlPFVzYWdlPlxuICAgIGVycm9yPzogYW55XG4gIH0+IHtcbiAgICBjb25zdCB0b3RhbFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG5cbiAgICBjb25zdCBbeyBvblN0ZXBGaW5pc2gsIG1heFN0ZXBzID0gMTAgfSwgaW5wdXRdID0gcHJvY2Vzc0lucHV0KF9pbnB1dClcbiAgICBjb25zdCBkb1N0cmVhbSA9ICgpID0+IHRoaXMubW9kZWwuZG9TdHJlYW0oaW5wdXQsIG9wdGlvbnMpIC8vIOWQjue7reS7o+eggeS8muebtOaOpeWvuSBpbnB1dC5tZXNzYWdlcyDljp/lnLDkv67mlLnvvIzov5nph4zkuIDnm7TnlKjlkIzkuIDkuKrlr7nosaHlsLHooYxcbiAgICBsZXQgY3VycmVudFJlcyA9IGF3YWl0IGRvU3RyZWFtKClcbiAgICBjb25zdCBjdXJyZW50U3RlcCA9IDFcbiAgICBsZXQgcmVhZFJlc3VsdDogeyBtZXNzYWdlOiBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2U7IHVzYWdlOiBVc2FnZSB9IHwgbnVsbCA9IG51bGxcblxuICAgIGNvbnN0IHJlYWRDdXJyZW50U3RyZWFtID0gKCkgPT4ge1xuICAgICAgY29uc3QgW29sZFN0cmVhbSwgbmV3U3RyZWFtXSA9IGN1cnJlbnRSZXMudGVlKClcbiAgICAgIGN1cnJlbnRSZXMgPSBjcmVhdGVBc3luY0l0ZXJhYmxlKG9sZFN0cmVhbSlcbiAgICAgIHJldHVybiByZWFkRnVuY3Rpb25DYWxsU3RyZWFtKG5ld1N0cmVhbSlcbiAgICB9XG5cbiAgICAvLyBUT0RPOiDkuIDmrKHlr7nor53mnInlpJrkuKogdG9vbCBjYWxsPyDnm67liY3msqHmnInov5nnp43njrDosaHvvIzmmoLml7bkuI3lpITnkIZcbiAgICAvLyDov5nph4zlkowgZ2VuZXJhdGVUZXh0IOS4jeWkquS4gOagt++8jOmZpOS6huino+aekOWHuiB0b29sQ2FsbCDlpJbvvIzov5jpnIDopoHku47mtYHkuK3mnoTpgKDlh7rlhbbku5blrozmlbTnmoTkv6Hmga9cbiAgICB3aGlsZSAoY3VycmVudFN0ZXAgPCBtYXhTdGVwcyAmJiAocmVhZFJlc3VsdCA9IGF3YWl0IHJlYWRDdXJyZW50U3RyZWFtKCkpICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZTogYXNzaXN0YW50TWVzc2FnZSwgdXNhZ2U6IHN0ZXBVc2FnZSB9ID0gcmVhZFJlc3VsdFxuICAgICAgYWRkVG9Vc2FnZSh0b3RhbFVzYWdlLCBzdGVwVXNhZ2UpXG5cbiAgICAgIC8vIOW9k+WIpOaWremcgOimgeW3peWFt+iwg+eUqOaXtlxuICAgICAgY29uc3QgdG9vbENhbGwgPSBhc3Npc3RhbnRNZXNzYWdlLnRvb2xfY2FsbHM/LlswXSAvLyDov5nkuKogdG9vbENhbGwg5LiA5a6a5a2Y5ZyoXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0b29sQ2FsbFJlc3VsdCA9IGF3YWl0IGNhbGxUb29sKHRvb2xDYWxsKSAvLyDosIPnlKhcblxuICAgICAgICBhd2FpdCBvblN0ZXBGaW5pc2g/Lih7XG4gICAgICAgICAgZmluaXNoUmVhc29uOiAndG9vbF9jYWxscycsXG4gICAgICAgICAgbWVzc2FnZXM6IGlucHV0Lm1lc3NhZ2VzLnNsaWNlKCksXG4gICAgICAgICAgdGV4dDogYXNzaXN0YW50TWVzc2FnZS5jb250ZW50LFxuICAgICAgICAgIHRvb2xDYWxsLFxuICAgICAgICAgIHRvb2xSZXN1bHQ6IHRvb2xDYWxsUmVzdWx0LFxuICAgICAgICAgIHN0ZXBVc2FnZSxcbiAgICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBwdXNoTmV3TWVzc2FnZXMoaW5wdXQubWVzc2FnZXMsIGFzc2lzdGFudE1lc3NhZ2UsIHRvb2xDYWxsUmVzdWx0KSAvLyDnlKjosIPnlKjnu5Pmnpzkv67mlLnmnIDmlrDnmoTmtojmga9cbiAgICAgICAgY3VycmVudFJlcyA9IGF3YWl0IGRvU3RyZWFtKCkgLy8g5b6q546v5a+56K+dXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IFtzMSwgczJdID0gY3VycmVudFJlcy50ZWUoKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2VzOiBQcm9taXNlLnJlc29sdmUoaW5wdXQubWVzc2FnZXMpLFxuICAgICAgICAgIGRhdGFTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczEpLFxuICAgICAgICAgIHRleHRTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczIucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RyID0gY2h1bms/LmNob2ljZXM/LlswXT8uZGVsdGE/LmNvbnRlbnRcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSBjb250cm9sbGVyLmVucXVldWUoc3RyKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSwpLCksXG4gICAgICAgICAgdXNhZ2U6IFByb21pc2UucmVzb2x2ZSh0b3RhbFVzYWdlKSxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOacgOWQjui/lOWbnuaXtu+8jOacieWHoOenjeaDheWGte+8mlxuICAgICAqIDEuIOayoei2hSBtYXhTdGVwIOaXoOW3peWFt+iwg+eUqFxuICAgICAqIDIuIOi2heS6hiBtYXhTdGVwIOacieW3peWFt+iwg+eUqFxuICAgICAqIDMuIOi2heS6hiBtYXhTdGVwIOaXoOW3peWFt+iwg+eUqFxuICAgICAqIG5ldmVyLiDmsqHotoUgbWF4U3RlcO+8jOacieW3peWFt+iwg+eUqO+8jOi/meaXtuWAmeS8mui/m+WIsOS4iumdoueahCB3aGlsZSDlvqrnjq8gYmxvY2sg5Lit5aSE55CGXG4gICAgICpcbiAgICAgKiDlhbbkuK0gMS4gMy4g5Y+v5Lul5ZCI5bm277yM5rKh5pyJ5bel5YW36LCD55So5bCx5bqU6K+l55u05o6l6L+U5Zue77yM5peg6K66IG1heFN0ZXBcbiAgICAgKlxuICAgICAqIOaJgOS7peWQiOW5tuS4uu+8mlxuICAgICAqIDEuIOaXoOW3peWFt+iwg+eUqFxuICAgICAqIDIuIOacieW3peWFt+iwg+eUqO+8jOS9huaYr+i2hei/hyBtYXhTdGVwXG4gICAgICpcbiAgICAgKiDov5nkuKTnp43mg4XlhrXpg73msqHov5vliLAgd2hpbGUg5b6q546vIGJsb2NrIOS4reWkhOeQhlxuICAgICAqIOaIkeS7rOmcgOimgSBhLiDloZ4gbWVzc2FnZSBiLiDnrpcgVXNhZ2UgYy4g6LCD55SoIG9uU3RlcEZpbmlzaFxuICAgICAqL1xuXG4gICAgcmVhZFJlc3VsdCA9IGF3YWl0IHJlYWRDdXJyZW50U3RyZWFtKClcblxuICAgIGlmIChyZWFkUmVzdWx0KSB7XG4gICAgICAvLyDmg4XlhrUgMiDmnInlt6XlhbfosIPnlKjvvIzkvYbmmK/otoXov4cgbWF4U3RlcFxuICAgICAgY29uc3QgeyBtZXNzYWdlLCB1c2FnZSB9ID0gcmVhZFJlc3VsdFxuICAgICAgYWRkVG9Vc2FnZSh0b3RhbFVzYWdlLCB1c2FnZSlcblxuICAgICAgY29uc3QgbWVzc2FnZXMgPSBbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdXG5cbiAgICAgIG9uU3RlcEZpbmlzaCh7XG4gICAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlcy5zbGljZSgpLFxuICAgICAgICBmaW5pc2hSZWFzb246ICd0b29sX2NhbGwnLFxuICAgICAgICBzdGVwVXNhZ2U6IHVzYWdlLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgIHRvb2xDYWxsOiBtZXNzYWdlLnRvb2xfY2FsbHNbMF0sXG4gICAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgW3MxLCBzMl0gPSBjdXJyZW50UmVzLnRlZSgpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlczogUHJvbWlzZS5yZXNvbHZlKFsuLi5pbnB1dC5tZXNzYWdlcywgbWVzc2FnZV0pLFxuICAgICAgICBkYXRhU3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMxKSxcbiAgICAgICAgdGV4dFN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMi5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ciA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmRlbHRhPy5jb250ZW50XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpIGNvbnRyb2xsZXIuZW5xdWV1ZShzdHIpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksKSwpLFxuICAgICAgICB1c2FnZTogUHJvbWlzZS5yZXNvbHZlKHRvdGFsVXNhZ2UpLFxuICAgICAgfVxuICAgIH1cbiAgICAvLyDmg4XlhrUgMSDml6Dlt6XlhbfosIPnlKhcbiAgICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IGNyZWF0ZVByb21pc2U8QXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT4+KClcbiAgICBjb25zdCB1c2FnZVByb21pc2UgPSBjcmVhdGVQcm9taXNlPFVzYWdlPigpXG5cbiAgICBjb25zdCBtZXNzYWdlOiBDaGF0TW9kZWxNZXNzYWdlID0ge1xuICAgICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgICBjb250ZW50OiAnJyxcbiAgICB9XG4gICAgbGV0IGZpbmlzaFJlYXNvbiA9ICcnXG4gICAgY29uc3Qgc3RlcFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG5cbiAgICBjb25zdCBvcmlnaW5TdHJlYW0gPSBjdXJyZW50UmVzLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgIC8vIOS4jeaUueWPmCBjaHVuayDlhoXlrrnvvIzlj6rmmK/mi6bmiKrkuIvlhoXlrrnmi7zmnIDlkI7nmoTnu5PmnpxcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmRlbHRhPy5jb250ZW50XG4gICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtZXNzYWdlLmNvbnRlbnQgKz0gY29udGVudFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVhc29uID0gY2h1bms/LmNob2ljZXM/LlswXT8uZmluaXNoX3JlYXNvblxuICAgICAgICBpZiAocmVhc29uKSBmaW5pc2hSZWFzb24gPSByZWFzb25cblxuICAgICAgICAvLyBUT0RPOiDkuI3lkIzlpKfmqKHlnovnmoQgc3RyZWFtIHVzYWdlIOagvOW8j+S4jeS4gOagt++8jOWQjue7reWPr+iDveimgeiwg+aVtC5cbiAgICAgICAgLy8gaHVueXVhbiDmr4/kuKogY2h1bmsg6YO95Lya5pyJIHVzYWdl77yM6YCQ5q2l5aKe5Yqg77yM5Lul5pyA5ZCO5LiA5Liq55qE5Li65YeGO1xuICAgICAgICAvLyB6aGlwdSDmnIDlkI4gY2h1bmsg5Lya5pyJIHVzYWdlO1xuICAgICAgICBpZiAoY2h1bms/LnVzYWdlPy5jb21wbGV0aW9uX3Rva2Vucykgc3RlcFVzYWdlLmNvbXBsZXRpb25fdG9rZW5zID0gY2h1bmsudXNhZ2UuY29tcGxldGlvbl90b2tlbnNcbiAgICAgICAgaWYgKGNodW5rPy51c2FnZT8ucHJvbXB0X3Rva2Vucykgc3RlcFVzYWdlLnByb21wdF90b2tlbnMgPSBjaHVuay51c2FnZS5wcm9tcHRfdG9rZW5zXG4gICAgICAgIGlmIChjaHVuaz8udXNhZ2U/LnRvdGFsX3Rva2Vucykgc3RlcFVzYWdlLnRvdGFsX3Rva2VucyA9IGNodW5rLnVzYWdlLnRvdGFsX3Rva2Vuc1xuXG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuaylcbiAgICAgIH0sXG4gICAgICBmbHVzaCgpIHtcbiAgICAgICAgbWVzc2FnZVByb21pc2UucmVzKFsuLi5pbnB1dC5tZXNzYWdlcywgbWVzc2FnZV0pXG4gICAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuICAgICAgICB1c2FnZVByb21pc2UucmVzKE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpKVxuICAgICAgICBvblN0ZXBGaW5pc2g/Lih7XG4gICAgICAgICAgbWVzc2FnZXM6IFsuLi5pbnB1dC5tZXNzYWdlcywgbWVzc2FnZV0sXG4gICAgICAgICAgZmluaXNoUmVhc29uLFxuICAgICAgICAgIHRleHQ6IG1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgICBzdGVwVXNhZ2UsXG4gICAgICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIH0pLClcblxuICAgIGNvbnN0IFtzMSwgczJdID0gb3JpZ2luU3RyZWFtLnRlZSgpXG5cbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZXM6IG1lc3NhZ2VQcm9taXNlLnByb21pc2UsXG4gICAgICBkYXRhU3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMxKSxcbiAgICAgIHRleHRTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczIucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjb250ZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLCksKSxcbiAgICAgIHVzYWdlOiB1c2FnZVByb21pc2UucHJvbWlzZSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUob3V0cHV0OiBEb0dlbmVyYXRlT3V0cHV0KSB7XG4gIGNvbnN0IGNob2ljZSA9IG91dHB1dD8uY2hvaWNlcz8uWzBdXG5cbiAgaWYgKCFjaG9pY2UpIHJldHVybiBudWxsXG5cbiAgY29uc3QgeyBmaW5pc2hfcmVhc29uLCBtZXNzYWdlIH0gPSBjaG9pY2VcblxuICBpZiAoZmluaXNoX3JlYXNvbiAhPT0gJ3Rvb2xfY2FsbHMnKSByZXR1cm4gbnVsbFxuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsXG4gIGlmICghaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UobWVzc2FnZSkpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIG1lc3NhZ2UudG9vbF9jYWxsc1swXVxufVxuXG5mdW5jdGlvbiBwdXNoTmV3TWVzc2FnZXMoXG4gIG1lc3NhZ2VzOiBBcnJheTxDaGF0TW9kZWxNZXNzYWdlPixcbiAgYXNzaXN0YW50TWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxuICB0b29sQ2FsbFJlc3VsdDogdW5rbm93bixcbikge1xuICBtZXNzYWdlcy5wdXNoKGFzc2lzdGFudE1lc3NhZ2UsIHtcbiAgICByb2xlOiAndG9vbCcsXG4gICAgdG9vbF9jYWxsX2lkOiBhc3Npc3RhbnRNZXNzYWdlLnRvb2xfY2FsbHNbMF0uaWQsXG4gICAgY29udGVudDogSlNPTi5zdHJpbmdpZnkodG9vbENhbGxSZXN1bHQpLFxuICB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRnVuY3Rpb25DYWxsU3RyZWFtKHN0cmVhbTogUmVhZGFibGVTdHJlYW08QmFzZURvU3RyZWFtT3V0cHV0Q2h1bms+LCk6IFByb21pc2U8eyBtZXNzYWdlOiBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2U7IHVzYWdlOiBVc2FnZSB9IHwgbnVsbD4ge1xuICBjb25zdCBzdGVwVXNhZ2U6IFVzYWdlID0geyBjb21wbGV0aW9uX3Rva2VuczogMCwgcHJvbXB0X3Rva2VuczogMCwgdG90YWxfdG9rZW5zOiAwIH1cbiAgY29uc3QgYVN0cmVhbSA9IGNyZWF0ZUFzeW5jSXRlcmFibGUoc3RyZWFtKVxuXG4gIGNvbnN0IHJldFRvb2xDYWxsOiBUb29sQ2FsbCA9IHtcbiAgICBpZDogJycsXG4gICAgZnVuY3Rpb246IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgYXJndW1lbnRzOiAnJyxcbiAgICB9LFxuICAgIHR5cGU6ICcnLFxuICB9XG5cbiAgY29uc3QgcmV0TWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlID0ge1xuICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgIGNvbnRlbnQ6ICcnLFxuICAgIHRvb2xfY2FsbHM6IFtyZXRUb29sQ2FsbF0sXG4gIH1cblxuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIGFTdHJlYW0pIHtcbiAgICBjb25zdCBjaG9pY2UgPSBjaHVuaz8uY2hvaWNlc1swXVxuICAgIGlmICghY2hvaWNlKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgeyBmaW5pc2hfcmVhc29uLCBkZWx0YSB9ID0gY2hvaWNlXG5cbiAgICBpZiAoZmluaXNoX3JlYXNvbiAhPT0gJ3Rvb2xfY2FsbHMnKSByZXR1cm4gbnVsbFxuICAgIGlmICghZGVsdGEpIGNvbnRpbnVlXG5cbiAgICBpZiAoZGVsdGEuY29udGVudCkgcmV0TWVzc2FnZS5jb250ZW50ICs9IGRlbHRhLmNvbnRlbnRcblxuICAgIGlmICghKCd0b29sX2NhbGxzJyBpbiBkZWx0YSkpIGNvbnRpbnVlXG4gICAgY29uc3QgdG9vbENhbGwgPSBkZWx0YT8udG9vbF9jYWxscz8uWzBdXG4gICAgaWYgKHRvb2xDYWxsPy5pZCkgcmV0VG9vbENhbGwuaWQgPSB0b29sQ2FsbC5pZFxuICAgIGlmICh0b29sQ2FsbD8udHlwZSkgcmV0VG9vbENhbGwudHlwZSA9IHRvb2xDYWxsLnR5cGVcbiAgICBpZiAodG9vbENhbGw/LmZ1bmN0aW9uPy5uYW1lKSByZXRUb29sQ2FsbC5mdW5jdGlvbi5uYW1lID0gdG9vbENhbGwuZnVuY3Rpb24ubmFtZVxuICAgIGlmICh0b29sQ2FsbD8uZnVuY3Rpb24/LmFyZ3VtZW50cykgcmV0VG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzICs9IHRvb2xDYWxsLmZ1bmN0aW9uLmFyZ3VtZW50c1xuXG4gICAgLy8gVE9ETzog5LiN5ZCM5aSn5qih5Z6L55qEIHN0cmVhbSB1c2FnZSDmoLzlvI/kuI3kuIDmoLfvvIzlkI7nu63lj6/og73opoHosIPmlbQuXG4gICAgLy8gaHVueXVhbiDmr4/kuKogY2h1bmsg6YO95Lya5pyJIHVzYWdl77yM6YCQ5q2l5aKe5Yqg77yM5Lul5pyA5ZCO5LiA5Liq55qE5Li65YeGO1xuICAgIC8vIHpoaXB1IOacgOWQjiBjaHVuayDkvJrmnIkgdXNhZ2U7XG4gICAgaWYgKGNodW5rPy51c2FnZT8uY29tcGxldGlvbl90b2tlbnMpIHN0ZXBVc2FnZS5jb21wbGV0aW9uX3Rva2VucyA9IGNodW5rLnVzYWdlLmNvbXBsZXRpb25fdG9rZW5zXG4gICAgaWYgKGNodW5rPy51c2FnZT8ucHJvbXB0X3Rva2Vucykgc3RlcFVzYWdlLnByb21wdF90b2tlbnMgPSBjaHVuay51c2FnZS5wcm9tcHRfdG9rZW5zXG4gICAgaWYgKGNodW5rPy51c2FnZT8udG90YWxfdG9rZW5zKSBzdGVwVXNhZ2UudG90YWxfdG9rZW5zID0gY2h1bmsudXNhZ2UudG90YWxfdG9rZW5zXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6IHJldE1lc3NhZ2UsXG4gICAgdXNhZ2U6IHN0ZXBVc2FnZSxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdG9vbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBDYWxsYWJsZUZ1bmN0aW9uPigpXG5cbmZ1bmN0aW9uIGNhbGxUb29sKHRvb2xDYWxsOiBUb29sQ2FsbCkge1xuICByZXR1cm4gdG9vbE1hcC5nZXQodG9vbENhbGwuZnVuY3Rpb24ubmFtZSkoSlNPTi5wYXJzZSh0b29sQ2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTb2xpZFVzYWdlKHVzYWdlPzogUGFydGlhbDxVc2FnZT4pOiBVc2FnZSB7XG4gIHJldHVybiB7XG4gICAgY29tcGxldGlvbl90b2tlbnM6IHVzYWdlPy5jb21wbGV0aW9uX3Rva2VucyA/PyAwLFxuICAgIHByb21wdF90b2tlbnM6IHVzYWdlPy5wcm9tcHRfdG9rZW5zID8/IDAsXG4gICAgdG90YWxfdG9rZW5zOiB1c2FnZT8udG90YWxfdG9rZW5zID8/IDAsXG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkVG9Vc2FnZSh0YXJnZXRVc2FnZTogVXNhZ2UsIHNvdXJjZVVzYWdlOiBVc2FnZSkge1xuICB0YXJnZXRVc2FnZS5jb21wbGV0aW9uX3Rva2VucyArPSBzb3VyY2VVc2FnZS5jb21wbGV0aW9uX3Rva2Vuc1xuICB0YXJnZXRVc2FnZS5wcm9tcHRfdG9rZW5zICs9IHNvdXJjZVVzYWdlLnByb21wdF90b2tlbnNcbiAgdGFyZ2V0VXNhZ2UudG90YWxfdG9rZW5zICs9IHNvdXJjZVVzYWdlLnRvdGFsX3Rva2Vuc1xufVxuIl19
@@ -1,6 +1,6 @@
1
1
  export declare abstract class SimpleChatModel {
2
- abstract doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput>;
3
- abstract doStream(data: BaseChatModelInput): Promise<DoStreamOutput>;
2
+ abstract doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput>;
3
+ abstract doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput>;
4
4
  }
5
5
  type RawResponse = {
6
6
  rawResponse?: any;
@@ -18,6 +18,7 @@ export interface IModelReqInput {
18
18
  headers?: Record<string, string>;
19
19
  data?: Object;
20
20
  stream?: boolean;
21
+ timeout?: number;
21
22
  }
22
23
  export type ModelReq = <T extends IModelReqInput>(props: T) => T['stream'] extends true ? Promise<ReadableStream<Uint8Array>> : Promise<Object>;
23
24
  export interface IBotReqInput {
@@ -26,6 +27,10 @@ export interface IBotReqInput {
26
27
  headers?: Record<string, string>;
27
28
  data?: Object;
28
29
  stream?: boolean;
30
+ timeout?: number;
31
+ }
32
+ export interface ReqOptions {
33
+ timeout?: number;
29
34
  }
30
35
  export type BotReq = <T extends IBotReqInput>(props: T) => T['stream'] extends true ? Promise<ReadableStream<Uint8Array>> : Promise<Object>;
31
36
  export type UserMessage = {
package/dist/esm/type.js CHANGED
@@ -4,4 +4,4 @@ var SimpleChatModel = (function () {
4
4
  return SimpleChatModel;
5
5
  }());
6
6
  export { SimpleChatModel };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQUE7SUFJQSxDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgYWJzdHJhY3QgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBQcm9taXNlPERvR2VuZXJhdGVPdXRwdXQ+XG5cbiAgcHVibGljIGFic3RyYWN0IGRvU3RyZWFtKGRhdGE6IEJhc2VDaGF0TW9kZWxJbnB1dCk6IFByb21pc2U8RG9TdHJlYW1PdXRwdXQ+XG59XG5cbnR5cGUgUmF3UmVzcG9uc2UgPSB7IHJhd1Jlc3BvbnNlPzogYW55IH1cblxuZXhwb3J0IHR5cGUgRG9HZW5lcmF0ZU91dHB1dCA9IEJhc2VEb0dlbmVyYXRlT3V0cHV0ICYgUmF3UmVzcG9uc2VcblxuZXhwb3J0IHR5cGUgRG9TdHJlYW1PdXRwdXQgPSBBc3luY0l0ZXJhYmxlUmVhZGFibGVTdHJlYW08QmFzZURvU3RyZWFtT3V0cHV0Q2h1bmsgJiBSYXdSZXNwb25zZT5cblxuZXhwb3J0IHR5cGUgQ2hhdE1vZGVsQ29uc3RydWN0b3IgPSB0eXBlb2YgU2ltcGxlQ2hhdE1vZGVsXG5cbmV4cG9ydCB0eXBlIEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxUPiA9IFJlYWRhYmxlU3RyZWFtPFQ+ICYge1xuICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdOiAoKSA9PiB7IG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4gfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElNb2RlbFJlcUlucHV0IHtcbiAgdXJsOiBzdHJpbmdcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgZGF0YT86IE9iamVjdFxuICBzdHJlYW0/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIE1vZGVsUmVxID0gPFQgZXh0ZW5kcyBJTW9kZWxSZXFJbnB1dD4oXG4gIHByb3BzOiBULFxuKSA9PiBUWydzdHJlYW0nXSBleHRlbmRzIHRydWUgPyBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiA6IFByb21pc2U8T2JqZWN0PlxuXG5leHBvcnQgaW50ZXJmYWNlIElCb3RSZXFJbnB1dCB7XG4gIHVybDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIGRhdGE/OiBPYmplY3RcbiAgc3RyZWFtPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBCb3RSZXEgPSA8VCBleHRlbmRzIElCb3RSZXFJbnB1dD4oXG4gIHByb3BzOiBULFxuKSA9PiBUWydzdHJlYW0nXSBleHRlbmRzIHRydWUgPyBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiA6IFByb21pc2U8T2JqZWN0PlxuXG5leHBvcnQgdHlwZSBVc2VyTWVzc2FnZSA9IHtcbiAgcm9sZTogJ3VzZXInXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlID0ge1xuICByb2xlOiAnc3lzdGVtJ1xuICBjb250ZW50OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQXNzaXN0YW50TWVzc2FnZSA9IFBsYWluQXNzaXN0YW50TWVzc2FnZSB8IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZVxuXG5leHBvcnQgdHlwZSBQbGFpbkFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIHRvb2xfY2FsbHM6IEFycmF5PFRvb2xDYWxsPlxuICBjb250ZW50Pzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFRvb2xNZXNzYWdlID0ge1xuICByb2xlOiAndG9vbCdcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNb2RlbE1lc3NhZ2UgPSBVc2VyTWVzc2FnZSB8IFN5c3RlbU1lc3NhZ2UgfCBBc3Npc3RhbnRNZXNzYWdlIHwgVG9vbE1lc3NhZ2VcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25Ub29sID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBmbjogQ2FsbGFibGVGdW5jdGlvblxuICBwYXJhbWV0ZXJzOiBvYmplY3Rcbn1cblxuLy8gI3JlZ2lvbiDlpKfmqKHlnovmoIflh4bovpPlhaXnsbvlnotcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNoYXRNb2RlbElucHV0IHtcbiAgbW9kZWw6IHN0cmluZ1xuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXJcbiAgdG9wX3A/OiBudW1iZXJcbiAgdG9vbHM/OiBBcnJheTxNb2RlbFRvb2w+XG4gIHRvb2xfY2hvaWNlPzogJ25vbmUnIHwgJ2F1dG8nIHwgJ2N1c3RvbSdcbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2wgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBmdW5jdGlvbjogTW9kZWxUb29sRnVuY3Rpb25cbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt+WHveaVsFxuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2xGdW5jdGlvbiA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgLyoqXG4gICAqIOaPj+i/sOWHveaVsOWPguaVsOeahCBKU09OIFNjaGVtYVxuICAgKi9cbiAgcGFyYW1ldGVyczogb2JqZWN0XG59XG4vLyAjZW5kcmVnaW9uXG5cbi8vICNyZWdpb24g5aSn5qih5Z6L5qCH5YeG5ZON5bqU57G75Z6LXG5leHBvcnQgdHlwZSBUb29sQ2FsbCA9IHtcbiAgaWQ6IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgZnVuY3Rpb246IHsgbmFtZTogc3RyaW5nOyBhcmd1bWVudHM6IHN0cmluZyB9XG59XG5cbnR5cGUgRmluaXNoUmVhc29uID0gJ3Rvb2xfY2FsbHMnIHwgKHN0cmluZyAmIHt9KVxuXG5leHBvcnQgdHlwZSBVc2FnZSA9IHtcbiAgY29tcGxldGlvbl90b2tlbnM6IG51bWJlclxuICBwcm9tcHRfdG9rZW5zOiBudW1iZXJcbiAgdG90YWxfdG9rZW5zOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9HZW5lcmF0ZU91dHB1dCB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIG1lc3NhZ2U/OiBDaGF0TW9kZWxNZXNzYWdlXG4gIH0+XG4gIHVzYWdlPzogVXNhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIGRlbHRhPzogQ2hhdE1vZGVsTWVzc2FnZVxuICB9PlxuICB1c2FnZT86IFVzYWdlXG59XG4vLyAjZW5kcmVnaW9uXG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQUE7SUFJQSxDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgYWJzdHJhY3QgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PlxuXG4gIHB1YmxpYyBhYnN0cmFjdCBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb1N0cmVhbU91dHB1dD5cbn1cblxudHlwZSBSYXdSZXNwb25zZSA9IHsgcmF3UmVzcG9uc2U/OiBhbnkgfVxuXG5leHBvcnQgdHlwZSBEb0dlbmVyYXRlT3V0cHV0ID0gQmFzZURvR2VuZXJhdGVPdXRwdXQgJiBSYXdSZXNwb25zZVxuXG5leHBvcnQgdHlwZSBEb1N0cmVhbU91dHB1dCA9IEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayAmIFJhd1Jlc3BvbnNlPlxuXG5leHBvcnQgdHlwZSBDaGF0TW9kZWxDb25zdHJ1Y3RvciA9IHR5cGVvZiBTaW1wbGVDaGF0TW9kZWxcblxuZXhwb3J0IHR5cGUgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPFQ+ID0gUmVhZGFibGVTdHJlYW08VD4gJiB7XG4gIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl06ICgpID0+IHsgbmV4dCgpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQ+PiB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsUmVxSW5wdXQge1xuICB1cmw6IHN0cmluZ1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkYXRhPzogT2JqZWN0XG4gIHN0cmVhbT86IGJvb2xlYW4sXG4gIHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgTW9kZWxSZXEgPSA8VCBleHRlbmRzIElNb2RlbFJlcUlucHV0PihcbiAgcHJvcHM6IFQsXG4pID0+IFRbJ3N0cmVhbSddIGV4dGVuZHMgdHJ1ZSA/IFByb21pc2U8UmVhZGFibGVTdHJlYW08VWludDhBcnJheT4+IDogUHJvbWlzZTxPYmplY3Q+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJvdFJlcUlucHV0IHtcbiAgdXJsOiBzdHJpbmdcbiAgbWV0aG9kOiBzdHJpbmdcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgZGF0YT86IE9iamVjdFxuICBzdHJlYW0/OiBib29sZWFuXG4gIHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXFPcHRpb25zIHtcbiAgdGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBCb3RSZXEgPSA8VCBleHRlbmRzIElCb3RSZXFJbnB1dD4oXG4gIHByb3BzOiBULFxuKSA9PiBUWydzdHJlYW0nXSBleHRlbmRzIHRydWUgPyBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiA6IFByb21pc2U8T2JqZWN0PlxuXG5leHBvcnQgdHlwZSBVc2VyTWVzc2FnZSA9IHtcbiAgcm9sZTogJ3VzZXInXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlID0ge1xuICByb2xlOiAnc3lzdGVtJ1xuICBjb250ZW50OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQXNzaXN0YW50TWVzc2FnZSA9IFBsYWluQXNzaXN0YW50TWVzc2FnZSB8IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZVxuXG5leHBvcnQgdHlwZSBQbGFpbkFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIHRvb2xfY2FsbHM6IEFycmF5PFRvb2xDYWxsPlxuICBjb250ZW50Pzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFRvb2xNZXNzYWdlID0ge1xuICByb2xlOiAndG9vbCdcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNb2RlbE1lc3NhZ2UgPSBVc2VyTWVzc2FnZSB8IFN5c3RlbU1lc3NhZ2UgfCBBc3Npc3RhbnRNZXNzYWdlIHwgVG9vbE1lc3NhZ2VcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25Ub29sID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBmbjogQ2FsbGFibGVGdW5jdGlvblxuICBwYXJhbWV0ZXJzOiBvYmplY3Rcbn1cblxuLy8gI3JlZ2lvbiDlpKfmqKHlnovmoIflh4bovpPlhaXnsbvlnotcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNoYXRNb2RlbElucHV0IHtcbiAgbW9kZWw6IHN0cmluZ1xuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXJcbiAgdG9wX3A/OiBudW1iZXJcbiAgdG9vbHM/OiBBcnJheTxNb2RlbFRvb2w+XG4gIHRvb2xfY2hvaWNlPzogJ25vbmUnIHwgJ2F1dG8nIHwgJ2N1c3RvbSdcbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2wgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBmdW5jdGlvbjogTW9kZWxUb29sRnVuY3Rpb25cbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt+WHveaVsFxuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2xGdW5jdGlvbiA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgLyoqXG4gICAqIOaPj+i/sOWHveaVsOWPguaVsOeahCBKU09OIFNjaGVtYVxuICAgKi9cbiAgcGFyYW1ldGVyczogb2JqZWN0XG59XG4vLyAjZW5kcmVnaW9uXG5cbi8vICNyZWdpb24g5aSn5qih5Z6L5qCH5YeG5ZON5bqU57G75Z6LXG5leHBvcnQgdHlwZSBUb29sQ2FsbCA9IHtcbiAgaWQ6IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgZnVuY3Rpb246IHsgbmFtZTogc3RyaW5nOyBhcmd1bWVudHM6IHN0cmluZyB9XG59XG5cbnR5cGUgRmluaXNoUmVhc29uID0gJ3Rvb2xfY2FsbHMnIHwgKHN0cmluZyAmIHt9KVxuXG5leHBvcnQgdHlwZSBVc2FnZSA9IHtcbiAgY29tcGxldGlvbl90b2tlbnM6IG51bWJlclxuICBwcm9tcHRfdG9rZW5zOiBudW1iZXJcbiAgdG90YWxfdG9rZW5zOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9HZW5lcmF0ZU91dHB1dCB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIG1lc3NhZ2U/OiBDaGF0TW9kZWxNZXNzYWdlXG4gIH0+XG4gIHVzYWdlPzogVXNhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIGRlbHRhPzogQ2hhdE1vZGVsTWVzc2FnZVxuICB9PlxuICB1c2FnZT86IFVzYWdlXG59XG4vLyAjZW5kcmVnaW9uXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/ai",
3
- "version": "2.11.0",
3
+ "version": "2.12.1",
4
4
  "description": "cloudbase js sdk ai module",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -27,13 +27,13 @@
27
27
  "author": "",
28
28
  "license": "Apache-2.0",
29
29
  "dependencies": {
30
- "@cloudbase/types": "^2.11.0",
30
+ "@cloudbase/types": "^2.12.1",
31
31
  "@mattiasbuelens/web-streams-adapter": "^0.1.0",
32
32
  "text-encoding-shim": "^1.0.5",
33
33
  "web-streams-polyfill": "^4.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@cloudbase/adapter-interface": "^0.6.0"
36
+ "@cloudbase/adapter-interface": "^0.7.0"
37
37
  },
38
- "gitHead": "9f5a5b1534dbf400711bd5909f153f6f2f7f84e4"
38
+ "gitHead": "3600dc3d57f6ce0da1a1e2ea29a5df956411c837"
39
39
  }
package/src/AI.ts CHANGED
@@ -32,7 +32,7 @@ class AI {
32
32
  MODELS[name] = model
33
33
  }
34
34
 
35
- modelRequest: types.ModelReq = async ({ url, data, headers, stream }) => {
35
+ modelRequest: types.ModelReq = async ({ url, data, headers, stream, timeout }) => {
36
36
  const fetchHeaders = {
37
37
  'Content-Type': 'application/json',
38
38
  }
@@ -45,14 +45,15 @@ class AI {
45
45
  body: JSON.stringify(data),
46
46
  url,
47
47
  stream,
48
+ timeout,
48
49
  })) as { data: Promise<unknown> | ReadableStream<Uint8Array>; header?: Headers }
49
50
 
50
51
  return handleResponseData(responseData, header) as any
51
52
  }
52
53
 
53
- botRequest: types.BotReq = async ({ method, url, data = {}, headers, stream }) => {
54
+ botRequest: types.BotReq = async ({ method, url, data = {}, headers, stream, timeout }) => {
54
55
  if (method === 'get') {
55
- return handleResponseData((await this.req.fetch({ url: `${url}?${objectToParam(data)}`, method, headers, stream })).data,)
56
+ return handleResponseData((await this.req.fetch({ url: `${url}?${objectToParam(data)}`, method, headers, stream, timeout })).data,)
56
57
  }
57
58
 
58
59
  const fetchHeaders = {
@@ -70,6 +71,7 @@ class AI {
70
71
  },
71
72
  stream,
72
73
  method,
74
+ timeout,
73
75
  })) as { data: Promise<unknown> | ReadableStream<Uint8Array>; header?: Headers }
74
76
 
75
77
  return handleResponseData(responseData, header) as any
package/src/bot/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type ParsedEvent } from '../eventsource_parser'
2
- import { BotReq } from '../type'
2
+ import { BotReq, ReqOptions } from '../type'
3
3
  import {
4
4
  IBotPreview,
5
5
  IBotSendMessage,
@@ -36,91 +36,125 @@ export class Bot {
36
36
  }
37
37
  }
38
38
 
39
- list(props: IGetBotList) {
39
+ list(props: IGetBotList, options?: ReqOptions) {
40
40
  return this.req({
41
41
  method: 'get',
42
42
  url: this.join('bots'),
43
43
  data: props,
44
+ timeout: options?.timeout,
44
45
  })
45
46
  }
46
47
 
47
- create({ botInfo }: ICreateBot) {
48
+ create({ botInfo }: ICreateBot, options?: ReqOptions) {
48
49
  return this.req({
49
50
  method: 'post',
50
51
  url: this.join('bots'),
51
52
  data: botInfo,
53
+ timeout: options?.timeout,
52
54
  })
53
55
  }
54
56
 
55
- get({ botId }: IGetBot) {
57
+ get({ botId }: IGetBot, options?: ReqOptions) {
56
58
  return this.req({
57
59
  method: 'get',
58
60
  url: this.join(`bots/${botId}`),
61
+ timeout: options?.timeout,
59
62
  })
60
63
  }
61
64
 
62
- update({ botId, botInfo }: IUpdateBot) {
65
+ update({ botId, botInfo }: IUpdateBot, options?: ReqOptions) {
63
66
  return this.req({
64
67
  method: 'PATCH',
65
68
  url: this.join(`bots/${botId}`),
66
69
  data: botInfo,
70
+ timeout: options?.timeout,
67
71
  })
68
72
  }
69
73
 
70
- delete({ botId }: IDeleteBot) {
71
- return this.req({ method: 'delete', url: this.join(`bots/${botId}`) })
74
+ delete({ botId }: IDeleteBot, options?: ReqOptions) {
75
+ return this.req({ method: 'delete', url: this.join(`bots/${botId}`), timeout: options?.timeout })
72
76
  }
73
77
 
74
- getChatRecords(props: IGetBotChatRecords) {
75
- return this.req({ method: 'get', url: this.join(`bots/${props.botId}/records`), data: props })
78
+ getChatRecords(props: IGetBotChatRecords, options?: ReqOptions) {
79
+ return this.req({
80
+ method: 'get',
81
+ url: this.join(`bots/${props.botId}/records`),
82
+ data: props,
83
+ timeout: options?.timeout,
84
+ })
76
85
  }
77
86
 
78
- sendFeedback({ userFeedback }: ISendBotFeedback) {
79
- return this.req({ method: 'post', url: this.join(`bots/${userFeedback.botId}/feedback`), data: userFeedback })
87
+ sendFeedback({ userFeedback }: ISendBotFeedback, options?: ReqOptions) {
88
+ return this.req({
89
+ method: 'post',
90
+ url: this.join(`bots/${userFeedback.botId}/feedback`),
91
+ data: userFeedback,
92
+ timeout: options?.timeout,
93
+ })
80
94
  }
81
95
 
82
- getFeedback(props: IGetBotFeedback) {
83
- return this.req({ method: 'get', url: this.join(`bots/${props.botId}/feedback`), data: props })
96
+ getFeedback(props: IGetBotFeedback, options?: ReqOptions) {
97
+ return this.req({
98
+ method: 'get',
99
+ url: this.join(`bots/${props.botId}/feedback`),
100
+ data: props,
101
+ timeout: options?.timeout,
102
+ })
84
103
  }
85
104
 
86
- async uploadFiles(props: IBotUploadFiles) {
105
+ async uploadFiles(props: IBotUploadFiles, options?: ReqOptions) {
87
106
  return this.req({
88
107
  method: 'post',
89
108
  url: this.join(`bots/${props.botId}/files`),
90
109
  data: props,
110
+ timeout: options?.timeout,
91
111
  })
92
112
  }
93
113
 
94
- async getRecommendQuestions(props: IGetBotRecommendQuestions) {
114
+ async getRecommendQuestions(props: IGetBotRecommendQuestions, options?: ReqOptions) {
95
115
  const res = await this.req({
96
116
  method: 'post',
97
117
  url: this.join(`bots/${props.botId}/recommend-questions`),
98
118
  data: props,
99
119
  stream: true,
120
+ timeout: options?.timeout,
100
121
  })
101
122
  return new StreamResult(res)
102
123
  }
103
124
 
104
- async generateBot(props: IGenerateBot) {
105
- const res = await this.req({ method: 'post', url: this.join('generate-bot'), data: props, stream: true })
125
+ async generateBot(props: IGenerateBot, options?: ReqOptions) {
126
+ const res = await this.req({
127
+ method: 'post',
128
+ url: this.join('generate-bot'),
129
+ data: props,
130
+ stream: true,
131
+ timeout: options?.timeout,
132
+ })
106
133
  return new StreamResult(res)
107
134
  }
108
135
 
109
- async getPreview(props: IBotPreview) {
110
- const res = await this.req({ method: 'post', url: this.join('preview'), data: props, stream: true })
136
+ async getPreview(props: IBotPreview, options?: ReqOptions) {
137
+ const res = await this.req({
138
+ method: 'post',
139
+ url: this.join('preview'),
140
+ data: props,
141
+ stream: true,
142
+ timeout: options?.timeout,
143
+ })
111
144
  return new StreamResult(res)
112
145
  }
113
146
 
114
- generateImage(props: IGenerateImage) {
115
- return this.req({ method: 'post', url: this.join('generate-image'), data: props })
147
+ generateImage(props: IGenerateImage, options?: ReqOptions) {
148
+ return this.req({ method: 'post', url: this.join('generate-image'), data: props, timeout: options?.timeout })
116
149
  }
117
150
 
118
- async sendMessage(props: IBotSendMessage) {
151
+ async sendMessage(props: IBotSendMessage, options?: ReqOptions) {
119
152
  const res = await this.req({
120
153
  method: 'post',
121
154
  url: this.join(`bots/${props.botId}/send-message`),
122
155
  data: props,
123
156
  stream: true,
157
+ timeout: options?.timeout,
124
158
  })
125
159
  return new StreamResult(res)
126
160
  }
@@ -13,6 +13,7 @@ import type {
13
13
  DoGenerateOutput,
14
14
  DoStreamOutput,
15
15
  BaseDoStreamOutputChunk,
16
+ ReqOptions,
16
17
  } from '../../type'
17
18
 
18
19
  function processInput(input: BaseChatModelInput): ArkInputData {
@@ -40,7 +41,7 @@ export class ArkSimpleModel implements SimpleChatModel {
40
41
  return `${this.baseUrl}/${this.subUrl}`
41
42
  }
42
43
 
43
- public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
44
+ public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {
44
45
  const res = (await this.req({
45
46
  url: this.url,
46
47
  data: {
@@ -48,11 +49,12 @@ export class ArkSimpleModel implements SimpleChatModel {
48
49
  stream: false,
49
50
  },
50
51
  stream: false,
52
+ timeout: options?.timeout,
51
53
  })) as ArkGenerateTextOutput
52
54
  return { ...res, rawResponse: res }
53
55
  }
54
56
 
55
- public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
57
+ public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {
56
58
  let isToolCall: null | boolean = null
57
59
  const _stream = await this.req({
58
60
  url: this.url,
@@ -61,6 +63,7 @@ export class ArkSimpleModel implements SimpleChatModel {
61
63
  stream: true,
62
64
  },
63
65
  stream: true,
66
+ timeout: options?.timeout,
64
67
  })
65
68
  const stream = toPolyfillReadable(_stream) as typeof _stream
66
69
 
@@ -13,6 +13,7 @@ import type {
13
13
  DoStreamOutput,
14
14
  BaseDoStreamOutputChunk,
15
15
  SimpleChatModel,
16
+ ReqOptions,
16
17
  } from '../../type'
17
18
 
18
19
  function processInput(input: BaseChatModelInput): DSInput {
@@ -41,7 +42,7 @@ export class DSSimpleModel implements SimpleChatModel {
41
42
  return `${this.baseUrl}/${this.subUrl}`
42
43
  }
43
44
 
44
- public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
45
+ public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {
45
46
  const res = (await this.req({
46
47
  url: this.url,
47
48
  data: {
@@ -49,11 +50,12 @@ export class DSSimpleModel implements SimpleChatModel {
49
50
  stream: false,
50
51
  },
51
52
  stream: false,
53
+ timeout: options?.timeout,
52
54
  })) as DSGenerateOutput
53
55
  return { ...res, rawResponse: res }
54
56
  }
55
57
 
56
- public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
58
+ public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {
57
59
  let isToolCall: null | boolean = null
58
60
  const _stream = await this.req({
59
61
  url: this.url,
@@ -62,6 +64,7 @@ export class DSSimpleModel implements SimpleChatModel {
62
64
  stream: true,
63
65
  },
64
66
  stream: true,
67
+ timeout: options?.timeout,
65
68
  })
66
69
  const stream = toPolyfillReadable(_stream) as typeof _stream
67
70
 
@@ -12,6 +12,7 @@ import type {
12
12
  DoStreamOutput,
13
13
  BaseDoStreamOutputChunk,
14
14
  DoGenerateOutput,
15
+ ReqOptions,
15
16
  } from '../../type'
16
17
 
17
18
  export class DeepSeekSimpleModel implements SimpleChatModel {
@@ -26,7 +27,7 @@ export class DeepSeekSimpleModel implements SimpleChatModel {
26
27
  return `${this.baseUrl}/${this.subUrl}`
27
28
  }
28
29
 
29
- public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
30
+ public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {
30
31
  const res = (await this.req({
31
32
  url: this.url,
32
33
  data: {
@@ -34,11 +35,12 @@ export class DeepSeekSimpleModel implements SimpleChatModel {
34
35
  stream: false,
35
36
  },
36
37
  stream: false,
38
+ timeout: options?.timeout,
37
39
  })) as DoGenerateOutput
38
40
  return { ...res, rawResponse: res }
39
41
  }
40
42
 
41
- public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
43
+ public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {
42
44
  let isToolCall: null | boolean = null
43
45
  const _stream = await this.req({
44
46
  url: this.url,
@@ -47,6 +49,7 @@ export class DeepSeekSimpleModel implements SimpleChatModel {
47
49
  stream: true,
48
50
  },
49
51
  stream: true,
52
+ timeout: options?.timeout,
50
53
  })
51
54
  const stream = toPolyfillReadable(_stream) as typeof _stream
52
55
 
@@ -12,6 +12,7 @@ import type {
12
12
  DoStreamOutput,
13
13
  SimpleChatModel,
14
14
  DoGenerateOutput,
15
+ ReqOptions,
15
16
  } from '../../type'
16
17
  import { processInput, titleCaseToSnakeCase } from './util'
17
18
  import { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from './type'
@@ -28,7 +29,7 @@ export class HunYuanSimpleModel implements SimpleChatModel {
28
29
  return `${this.baseUrl}/${this.subUrl}`
29
30
  }
30
31
 
31
- public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
32
+ public async doGenerate(data: BaseChatModelInput, options?: ReqOptions): Promise<DoGenerateOutput> {
32
33
  const res = (await this.req({
33
34
  url: this.url,
34
35
  headers: {
@@ -39,6 +40,7 @@ export class HunYuanSimpleModel implements SimpleChatModel {
39
40
  stream: false,
40
41
  },
41
42
  stream: false,
43
+ timeout: options?.timeout,
42
44
  })) as { Response: any }
43
45
  const output = titleCaseToSnakeCase(res.Response) as HunYuanGenerateTextOutput
44
46
  return {
@@ -47,7 +49,7 @@ export class HunYuanSimpleModel implements SimpleChatModel {
47
49
  }
48
50
  }
49
51
 
50
- public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
52
+ public async doStream(data: BaseChatModelInput, options?: ReqOptions): Promise<DoStreamOutput> {
51
53
  let isToolCall: null | boolean = null
52
54
 
53
55
  const _stream = await this.req({
@@ -60,6 +62,7 @@ export class HunYuanSimpleModel implements SimpleChatModel {
60
62
  stream: true,
61
63
  },
62
64
  stream: true,
65
+ timeout: options?.timeout,
63
66
  })
64
67
  const stream = toPolyfillReadable(_stream) as typeof _stream
65
68