@dbx-tools/appkit-web-search 0.6.161 → 0.6.168

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/lib/src/search.js CHANGED
@@ -158,9 +158,8 @@ async function postServing(ctx, url, body, config, cacheKey, signal) {
158
158
  }
159
159
  /* --------------------------- response extraction --------------------------- */
160
160
  /**
161
- * Extract answer text + citations from an OpenAI Responses API payload, via the
162
- * shared reader in `@dbx-tools/shared-model` (the same module the model-proxy
163
- * uses to translate the Responses wire format in the other direction).
161
+ * Extract answer text and citations from an OpenAI Responses API payload through
162
+ * the shared reader in `@dbx-tools/shared-model`.
164
163
  */
165
164
  function fromResponsesPayload(payload) {
166
165
  const { text, citations } = openaiResponses.readResponsesOutput(payload);
@@ -249,4 +248,4 @@ export async function runWebSearch(request, config, ctx, signal) {
249
248
  });
250
249
  return { query: request.query, answer, citations: trimmed, model: modelId };
251
250
  }
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFnQyxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRXpDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBRWhD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QU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FDekIsSUFBSSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdEYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3BELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUN2QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxRQUFRO1FBQ1IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN6QixDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYiBzZWFyY2ggYmFja2VkIGJ5IHRoZSBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbC5cbiAqXG4gKiBVbmxpa2UgYSBzY3JhcGluZyBjbGllbnQsIHRoZSBzZWFyY2ggcnVucyAqaW5zaWRlKiBhIG1vZGVsIGNhbGw6IHdlIFBPU1QgdGhlXG4gKiBxdWVyeSB0byB0aGUgd29ya3NwYWNlJ3Mgc2VydmluZyBlbmRwb2ludCB3aXRoIHRoZSBwcm92aWRlcidzIHdlYi1zZWFyY2hcbiAqIHRvb2wgc3BlYyBhdHRhY2hlZCwgYW5kIHRoZSBtb2RlbCBzZWFyY2hlcyB0aGUgd2ViIGFuZCB3cml0ZXMgdGhlIGFuc3dlci5cbiAqIHtAbGluayBydW5XZWJTZWFyY2h9OlxuICpcbiAqICAgMS4gUmVzb2x2ZXMgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgSU5ERVBFTkRFTlRMWSBvZiB0aGUgY2FsbGluZ1xuICogICAgICBhZ2VudCdzIGNoYXQgbW9kZWwgKHRoZSBhZ2VudCBtYXkgcnVuIG9uIGEgbW9kZWwgd2l0aG91dCB3ZWIgc2VhcmNoKS5cbiAqICAgICAgQSBwaW5uZWQgYG1vZGVsYCAocmVxdWVzdCBvciBjb25maWcpIGlzIGZ1enp5LW1hdGNoZWQ7IG90aGVyd2lzZSB0aGVcbiAqICAgICAgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuIEdQVCkgaXMgd2Fsa2VkIHRvIHRoZSBmaXJzdFxuICogICAgICB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgdGhhdCBleGlzdHMuIEFuIGV4cGxpY2l0IGJ1dCB1bnN1cHBvcnRlZFxuICogICAgICBtb2RlbCBpcyBhIGhhcmQgZXJyb3IsIG5vdCBhIHNpbGVudCBmYWxsYmFjay5cbiAqICAgMi4gUE9TVHMgdG8gdGhlIHByb3ZpZGVyJ3MgUkVTVCBzdXJmYWNlIChgL3NlcnZpbmctZW5kcG9pbnRzL3Jlc3BvbnNlc2BcbiAqICAgICAgZm9yIE9wZW5BSSwgYC9zZXJ2aW5nLWVuZHBvaW50cy9jaGF0L2NvbXBsZXRpb25zYCBmb3IgR2VtaW5pKSB3aXRoIHRoZVxuICogICAgICBtYXBwZWQgdG9vbCBzcGVjLCBhdXRoZW50aWNhdGVkIGFzIHRoZSBPQk8gY2FsbGVyLlxuICogICAzLiBSZXR1cm5zIHRoZSBzeW50aGVzaXplZCBhbnN3ZXIgcGx1cyB0aGUgY2l0ZWQgc291cmNlcywgd2l0aCBjaXRhdGlvbnNcbiAqICAgICAgc2lsZW50bHkgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIEV4ZWN1dGlvbkVycm9yLFxuICBnZXRFeGVjdXRpb25Db250ZXh0LFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGludm9rZSwgcmVzb2x2ZSwgc2VydmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2csIG9iamVjdCwgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IG9wZW5haUNoYXQsIG9wZW5haVJlc3BvbnNlcyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgTU9ERUxfRU5WLCBTRVJWSU5HX0VORFBPSU5UX0VOViwgdHlwZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgdG9DYWxsU2V0dGluZ3MsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5pbXBvcnQgeyBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vcHJvdmlkZXIudHNcIjtcbmltcG9ydCB7IGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vcnVudGltZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hLnRzXCI7XG5pbXBvcnQgeyBydW5TY3JhcGVTZWFyY2ggfSBmcm9tIFwiLi9zY3JhcGUudHNcIjtcblxudHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gc2VydmluZy5Xb3Jrc3BhY2VDbGllbnRMaWtlICYgaW52b2tlLkF1dGhlbnRpY2F0aW5nQ2xpZW50TGlrZTtcbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoL3NlYXJjaFwiKTtcbmNvbnN0IHsgcmVzb2x2ZU1vZGVsIH0gPSByZXNvbHZlO1xuY29uc3QgeyBsaXN0U2VydmluZ0VuZHBvaW50cyB9ID0gc2VydmluZztcblxuLyoqXG4gKiBIb3cgZGVlcCB0aGUgZ3JvdW5kaW5nLW1ldGFkYXRhIHdhbGsgZGVzY2VuZHMuIEdlbWluaSBuZXN0cyBpdHMgc291cmNlcyBhXG4gKiBoYW5kZnVsIG9mIGxldmVscyBkb3duIGFuZCB0aGUgc2hhcGUgdmFyaWVzIGJ5IG1vZGVsIHZlcnNpb24sIHNvIHRoZSB3YWxrXG4gKiBpcyBnZW5lcmljOyB0aGUgYm91bmQgaXMgd2hhdCBrZWVwcyBhIHBhdGhvbG9naWNhbCBwYXlsb2FkIGZyb20gdHVybmluZyBpdFxuICogaW50byBhIGZ1bGwgdHJhdmVyc2FsIG9mIHRoZSByZXNwb25zZS5cbiAqL1xuY29uc3QgTUFYX0dST1VORElOR19XQUxLX0RFUFRIID0gNjtcblxuLyoqIExvd2VzdCBIVFRQIHN0YXR1cyB0cmVhdGVkIGFzIGEgc2VydmVyLXNpZGUgKHJldHJ5YWJsZSkgc2VydmluZyBmYWlsdXJlLiAqL1xuY29uc3QgU0VSVkVSX0VSUk9SX1NUQVRVUyA9IDUwMDtcblxuLyoqIFN0YXR1cyBNb2RlbCBTZXJ2aW5nIHVzZXMgdG8gc2hlZCBsb2FkOyByZXRyeWFibGUgbGlrZSBhIDV4eC4gKi9cbmNvbnN0IFJBVEVfTElNSVRFRF9TVEFUVVMgPSA0Mjk7XG5cbi8qKiBDb250ZXh0IGEgc2VhcmNoIG5lZWRzIGZyb20gdGhlIGNhbGxlcjogdGhlIE9CTyBjbGllbnQgKyB3b3Jrc3BhY2UgaG9zdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU2VhcmNoQ29udGV4dCB7XG4gIGNsaWVudDogV29ya3NwYWNlQ2xpZW50TGlrZTtcbiAgaG9zdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIE9CTyB3b3Jrc3BhY2UgY2xpZW50ICsgaG9zdCBmcm9tIHRoZSBhY3RpdmUgQXBwS2l0IGV4ZWN1dGlvblxuICogY29udGV4dC4gSW5zaWRlIGBhZ2VudC5zdHJlYW1gJ3MgYGFzVXNlcihyZXEpYCBzY29wZSB0aGlzIGhpdHMgdGhlIHNlcnZpbmdcbiAqIGVuZHBvaW50IGFzIHRoZSByZXF1ZXN0aW5nIHVzZXI7IG91dHNpZGUgYSB1c2VyIGNvbnRleHQgQXBwS2l0IGZhbGxzIGJhY2sgdG9cbiAqIHRoZSBzZXJ2aWNlIHByaW5jaXBhbC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVXZWJTZWFyY2hDb250ZXh0KCk6IFByb21pc2U8V2ViU2VhcmNoQ29udGV4dD4ge1xuICBjb25zdCBjdHggPSBnZXRFeGVjdXRpb25Db250ZXh0KCk7XG4gIGNvbnN0IGhvc3QgPSAoYXdhaXQgY3R4LmNsaWVudC5jb25maWcuZ2V0SG9zdCgpKS50b1N0cmluZygpO1xuICByZXR1cm4geyBjbGllbnQ6IGN0eC5jbGllbnQsIGhvc3QgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgd2ViLXNlYXJjaC1jYXBhYmxlIG1vZGVsIGFnYWluc3QgdGhlIExJVkUgd29ya3NwYWNlIGNhdGFsb2d1ZSAtIHNvXG4gKiB3ZSBuZXZlciByZXR1cm4gYW4gZW5kcG9pbnQgaWQgdGhhdCBpc24ndCBhY3R1YWxseSBkZXBsb3llZCAodGhlIFwiZW5kcG9pbnRcbiAqIGRvZXMgbm90IGV4aXN0XCIgZmFpbHVyZSBhIGhhcmRjb2RlZCBmYWxsYmFjayBpZCB3b3VsZCBjYXVzZSkuIFJldXNlc1xuICogYEBkYngtdG9vbHMvbW9kZWxgJ3MgZXhpc3RpbmcgY2F0YWxvZ3VlICsgcmVzb2x2ZXIgcmF0aGVyIHRoYW4gYSBjdXN0b21cbiAqIGxvb2t1cDoge0BsaW5rIGxpc3RTZXJ2aW5nRW5kcG9pbnRzfSBsaXN0cyB0aGUgZW5kcG9pbnRzIChjYWNoZWQpLCBhbmQgd2VcbiAqIHJlc3RyaWN0IHRoZSBjYW5kaWRhdGUgc2V0IHRvIHRoZSB7QGxpbmsgc3VwcG9ydHNXZWJTZWFyY2h9IG9uZXMgYmVmb3JlXG4gKiB7QGxpbmsgcmVzb2x2ZU1vZGVsfSBmdXp6eS1waWNrcyB3aXRoaW4gaXQuXG4gKlxuICogUmV0dXJucyB0aGUgY2hvc2VuIGVuZHBvaW50IGlkLCBvciBgbnVsbGAgd2hlbiB0aGUgd29ya3NwYWNlIGhhcyBub1xuICogd2ViLXNlYXJjaC1jYXBhYmxlIG1vZGVsIGRlcGxveWVkICh0aGUgY2FsbGVyIHRoZW4gdXNlcyB0aGUgc2NyYXBlXG4gKiBmYWxsYmFjaykuIEEgcGluIHRoZSBjYWxsZXIgY2hvc2UgZGVsaWJlcmF0ZWx5IC0gdGhlIHJlcXVlc3QncyBgbW9kZWxgLCB0aGVcbiAqIHBsdWdpbidzIGBtb2RlbGAsIG9yIGBXRUJfU0VBUkNIX01PREVMYCAtIHRocm93cyB3aGVuIGl0IHJlc29sdmVzIHRvIGFuXG4gKiB1bnN1cHBvcnRlZCAvIGFic2VudCBlbmRwb2ludCwgc28gYSBiYWQgcGluIHN1cmZhY2VzIHJhdGhlciB0aGFuIHNpbGVudGx5XG4gKiBkZWdyYWRpbmcuIEEgcGluIGluaGVyaXRlZCBmcm9tIHRoZSBzaGFyZWQgYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYFxuICogYmluZGluZyBpcyBvbmx5IGEgcHJlZmVyZW5jZTogdGhhdCBlbmRwb2ludCBpcyB0aGUgYXBwJ3Mgc2VydmluZyBlbmRwb2ludCxcbiAqIG5vdCBuZWNlc3NhcmlseSBhIHdlYi1zZWFyY2gtY2FwYWJsZSBvbmUsIHNvIGFuIHVudXNhYmxlIHZhbHVlIGZhbGxzIHRocm91Z2hcbiAqIHRvIHRoZSBmYWxsYmFjayBvcmRlci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaE1vZGVsKFxuICBjdHg6IFdlYlNlYXJjaENvbnRleHQsXG4gIGNvbmZpZzogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIHJlcXVlc3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gIGNvbnN0IGVuZHBvaW50cyA9IGF3YWl0IGxpc3RTZXJ2aW5nRW5kcG9pbnRzKGN0eC5jbGllbnQsIGN0eC5ob3N0KTtcbiAgLy8gT25seSBkZXBsb3llZCwgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50cyBhcmUgY2FuZGlkYXRlcy5cbiAgY29uc3QgY2FwYWJsZSA9IGVuZHBvaW50cy5maWx0ZXIoKGUpID0+IHN1cHBvcnRzV2ViU2VhcmNoKGUubmFtZSkpO1xuICBjb25zdCBwaW5uZWQgPSByZXF1ZXN0ZWQgPz8gY29uZmlnLm1vZGVsO1xuICBjb25zdCBwaW5Jc0RlbGliZXJhdGUgPVxuICAgIHJlcXVlc3RlZCAhPT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5tb2RlbFNvdXJjZSA9PT0gXCJjb25maWdcIiB8fCBjb25maWcubW9kZWxTb3VyY2UgPT09IE1PREVMX0VOVjtcblxuICBpZiAocGlubmVkKSB7XG4gICAgLy8gUmVzb2x2ZSB0aGUgZXhwbGljaXQgYXNrIHdpdGhpbiB0aGUgY2FwYWJsZSBzZXQgb25seS5cbiAgICBjb25zdCB7IG1vZGVsSWQgfSA9IHJlc29sdmVNb2RlbChjYXBhYmxlLCB7XG4gICAgICBleHBsaWNpdDogcGlubmVkLFxuICAgICAgZnV6enk6IGNvbmZpZy5mdXp6eSxcbiAgICAgIHRocmVzaG9sZDogY29uZmlnLmZ1enp5VGhyZXNob2xkLFxuICAgIH0pO1xuICAgIC8vIHJlc29sdmVNb2RlbCByZXR1cm5zIHRoZSBpbnB1dCB2ZXJiYXRpbSBvbiBubyBtYXRjaDsgcmVxdWlyZSBpdCB0byBiZSBhXG4gICAgLy8gcmVhbCBjYXBhYmxlIGVuZHBvaW50IHNvIGEgYmFkIHBpbiBpcyBhIGNsZWFyIGVycm9yLCBub3QgYSBwaGFudG9tIGNhbGwuXG4gICAgY29uc3QgdXNhYmxlID0gY2FwYWJsZS5zb21lKChlKSA9PiBlLm5hbWUgPT09IG1vZGVsSWQpICYmIHN1cHBvcnRzV2ViU2VhcmNoKG1vZGVsSWQpO1xuICAgIGlmICh1c2FibGUpIHJldHVybiBtb2RlbElkO1xuICAgIGNvbnN0IGRlcGxveWVkID0gY2FwYWJsZS5tYXAoKGUpID0+IGUubmFtZSkuam9pbihcIiwgXCIpIHx8IFwibm9uZVwiO1xuICAgIGlmICghcGluSXNEZWxpYmVyYXRlKSB7XG4gICAgICBsb2dnZXIuaW5mbyhcInNoYXJlZC1lbmRwb2ludC1ub3Qtd2ViLWNhcGFibGVcIiwge1xuICAgICAgICBlbnZWYXI6IFNFUlZJTkdfRU5EUE9JTlRfRU5WLFxuICAgICAgICBkZXBsb3llZCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocmVxdWVzdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IFZhbGlkYXRpb25FcnJvci5pbnZhbGlkVmFsdWUoXG4gICAgICAgIFwibW9kZWxcIixcbiAgICAgICAgcGlubmVkLFxuICAgICAgICBgYSBkZXBsb3llZCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgKGRlcGxveWVkOiAke2RlcGxveWVkfSlgLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgQ29uZmlndXJhdGlvbkVycm9yLnJlc291cmNlTm90Rm91bmQoXG4gICAgICAgIFwiV2ViLXNlYXJjaC1jYXBhYmxlIHNlcnZpbmcgZW5kcG9pbnRcIixcbiAgICAgICAgYERlcGxveWVkIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludHM6ICR7ZGVwbG95ZWR9LiBTZXQgbW9kZWwgb3IgJHtNT0RFTF9FTlZ9IHRvIG9uZSBvZiB0aGVtLmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjYXBhYmxlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gTm90aGluZyB1c2FibGUgcGlubmVkOiBwcmVmZXIgdGhlIGNvbmZpZ3VyZWQgZmFsbGJhY2sgb3JkZXIgKEdlbWluaSwgdGhlblxuICAvLyBHUFQpIHdoZW4gdGhvc2UgaWRzIGFyZSBhY3R1YWxseSBkZXBsb3llZDsgZWxzZSB0YWtlIHRoZSBiZXN0IGNhcGFibGVcbiAgLy8gZW5kcG9pbnQuXG4gIGNvbnN0IHsgbW9kZWxJZCB9ID0gcmVzb2x2ZU1vZGVsKGNhcGFibGUsIHtcbiAgICBmYWxsYmFja3M6IGNvbmZpZy5tb2RlbEZhbGxiYWNrcyxcbiAgICBmdXp6eTogY29uZmlnLmZ1enp5LFxuICAgIHRocmVzaG9sZDogY29uZmlnLmZ1enp5VGhyZXNob2xkLFxuICB9KTtcbiAgcmV0dXJuIGNhcGFibGUuc29tZSgoZSkgPT4gZS5uYW1lID09PSBtb2RlbElkKSA/IG1vZGVsSWQgOiAoY2FwYWJsZVswXT8ubmFtZSA/PyBudWxsKTtcbn1cblxuLyoqXG4gKiBQT1NUIGEgc2VydmluZyByZXF1ZXN0IGFzIHRoZSBPQk8gY2FsbGVyIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBKU09OIGJvZHkuXG4gKlxuICogQXV0aCBoZWFkZXJzIGFyZSBtaW50ZWQgcGVyIGNhbGwgZnJvbSB0aGUgT0JPIGNsaWVudCdzIFNESyBjb25maWcsIHdoaWNoXG4gKiByZWZyZXNoZXMgdGhlIHRva2VuIHdoZW4gaXQgaXMgY2xvc2UgdG8gZXhwaXJ5LCBzbyB0aGUgcmVxdWVzdCBjYXJyaWVzIHRoZVxuICogcmVxdWVzdGluZyB1c2VyJ3MgaWRlbnRpdHkuXG4gKlxuICogVGhpcyBpcyB0aGUgb25lIERhdGFicmlja3MgY2FsbCBpbiB0aGUgcmVwbyB0aGF0IGRvZXMgbm90IGdvIHRocm91Z2hcbiAqIGBhcGlDbGllbnQucmVxdWVzdGAgKyBgZGF0YWJyaWNrcy50b0NvbnRleHRgICh3aGljaCBkb2VzIGZvcndhcmRcbiAqIGNhbmNlbGxhdGlvbikuIFJldHJ5IGNsYXNzaWZpY2F0aW9uIGhlcmUgaGFzIHRvIGRpc3Rpbmd1aXNoIGEgbG9hZC1zaGVkIG9yXG4gKiBzZXJ2ZXIgZmF1bHQgZnJvbSB0aGlzIHJlcXVlc3QncyBvd24gNHh4LCBhbmQgYGZldGNoYCBleHBvc2VzIHRoZSBIVFRQIHN0YXR1c1xuICogZGlyZWN0bHk7IHRoZSBTREsgcmFpc2VzIGFuIGBBcGlFcnJvcmAgdGhhdCBjYXJyaWVzIHRoZSBzdGF0dXMgdW5kZXJcbiAqIGluY29uc2lzdGVudCBrZXlzLCB3aGljaCBpcyBndWVzc3dvcmsgYnkgY29tcGFyaXNvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcG9zdFNlcnZpbmcoXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgdXJsOiBzdHJpbmcsXG4gIGJvZHk6IHVua25vd24sXG4gIGNvbmZpZzogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIGNhY2hlS2V5OiByZWFkb25seSAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGV4ZWN1dGVSZWFkKFxuICAgIFwic2VydmluZy1yZXF1ZXN0XCIsXG4gICAgdG9DYWxsU2V0dGluZ3Mod2ViU2VhcmNoRXhlY3V0ZURlZmF1bHRzLCBjb25maWcudGltZW91dE1zLCBjYWNoZUtleSksXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpOiBQcm9taXNlPHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAuLi4oYXdhaXQgaW52b2tlLmF1dGhIZWFkZXJzKGN0eC5jbGllbnQpKSxcbiAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgLi4uKGV4ZWN1dGVTaWduYWwgPyB7IHNpZ25hbDogZXhlY3V0ZVNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIC8vIExvYWQtc2hlZGRpbmcgYW5kIHNlcnZlciBmYXVsdHMgYXJlIHdvcnRoIGFub3RoZXIgYXR0ZW1wdDsgYSA0eHggaXNcbiAgICAgICAgLy8gdGhpcyByZXF1ZXN0J3Mgb3duIHByb2JsZW0sIHNvIGl0IG11c3Qgbm90IGJlIHJldHJpZWQuXG4gICAgICAgIGNvbnN0IHJldHJ5YWJsZSA9XG4gICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzID49IFNFUlZFUl9FUlJPUl9TVEFUVVMgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSBSQVRFX0xJTUlURURfU1RBVFVTO1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYHdlYi1zZWFyY2g6IE1vZGVsIFNlcnZpbmcgcmVqZWN0ZWQgdGhlIHNlYXJjaCByZXF1ZXN0IChIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfSlgO1xuICAgICAgICB0aHJvdyByZXRyeWFibGVcbiAgICAgICAgICA/IG5ldyBDb25uZWN0aW9uRXJyb3IobWVzc2FnZSwgeyBjb250ZXh0OiB7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzIH0gfSlcbiAgICAgICAgICA6IG5ldyBFeGVjdXRpb25FcnJvcihtZXNzYWdlLCB7IGNvbnRleHQ6IHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgfSxcbiAgICBzaWduYWwsXG4gICk7XG4gIHJldHVybiBvYmplY3QuaXNSZWNvcmQocGF5bG9hZCkgPyBwYXlsb2FkIDoge307XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSByZXNwb25zZSBleHRyYWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEV4dHJhY3QgYW5zd2VyIHRleHQgKyBjaXRhdGlvbnMgZnJvbSBhbiBPcGVuQUkgUmVzcG9uc2VzIEFQSSBwYXlsb2FkLCB2aWEgdGhlXG4gKiBzaGFyZWQgcmVhZGVyIGluIGBAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbGAgKHRoZSBzYW1lIG1vZHVsZSB0aGUgbW9kZWwtcHJveHlcbiAqIHVzZXMgdG8gdHJhbnNsYXRlIHRoZSBSZXNwb25zZXMgd2lyZSBmb3JtYXQgaW4gdGhlIG90aGVyIGRpcmVjdGlvbikuXG4gKi9cbmZ1bmN0aW9uIGZyb21SZXNwb25zZXNQYXlsb2FkKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KToge1xuICBhbnN3ZXI6IHN0cmluZztcbiAgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdO1xufSB7XG4gIGNvbnN0IHsgdGV4dCwgY2l0YXRpb25zIH0gPSBvcGVuYWlSZXNwb25zZXMucmVhZFJlc3BvbnNlc091dHB1dChwYXlsb2FkKTtcbiAgcmV0dXJuIHsgYW5zd2VyOiB0ZXh0LCBjaXRhdGlvbnMgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGFuc3dlciB0ZXh0ICsgY2l0YXRpb25zIGZyb20gYSBDaGF0IENvbXBsZXRpb25zIHBheWxvYWQgKEdlbWluaSB2aWFcbiAqIGBnb29nbGVfc2VhcmNoYCkuIFRoZSBhbnN3ZXIgaXMgYGNob2ljZXNbMF0ubWVzc2FnZS5jb250ZW50YDsgZ3JvdW5kaW5nXG4gKiBzb3VyY2VzLCB3aGVuIHByZXNlbnQsIHN1cmZhY2UgdW5kZXIgYGNob2ljZXNbMF0ubWVzc2FnZWAgZ3JvdW5kaW5nXG4gKiBtZXRhZGF0YSAoYmVzdC1lZmZvcnQgLSBzaGFwZXMgdmFyeSwgc28gd2Ugc2NhbiBmb3IgdXJsLWJlYXJpbmcgZW50cmllcykuXG4gKi9cbmZ1bmN0aW9uIGZyb21DaGF0UGF5bG9hZChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHtcbiAgYW5zd2VyOiBzdHJpbmc7XG4gIGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXTtcbn0ge1xuICBjb25zdCBjaG9pY2VzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmNob2ljZXMpID8gcGF5bG9hZC5jaG9pY2VzIDogW107XG4gIGNvbnN0IGZpcnN0ID0gY2hvaWNlc1swXTtcbiAgY29uc3QgbWVzc2FnZSA9IG9iamVjdC5pc1JlY29yZChmaXJzdCkgJiYgb2JqZWN0LmlzUmVjb3JkKGZpcnN0Lm1lc3NhZ2UpID8gZmlyc3QubWVzc2FnZSA6IHt9O1xuICBjb25zdCBhbnN3ZXIgPSBvcGVuYWlDaGF0LmNoYXRDb250ZW50VG9UZXh0KG1lc3NhZ2UuY29udGVudCk7XG4gIGNvbnN0IGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXSA9IFtdO1xuICAvLyBCZXN0LWVmZm9ydCBncm91bmRpbmcgZXh0cmFjdGlvbjogd2FsayBhbnkgbmVzdGVkIG9iamVjdCBmb3Ige3VyaXx1cmwsdGl0bGV9LlxuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHZpc2l0ID0gKHY6IHVua25vd24sIGRlcHRoOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBpZiAoZGVwdGggPiBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggfHwgIW9iamVjdC5pc1JlY29yZCh2KSkgcmV0dXJuO1xuICAgIGNvbnN0IHVybCA9IHN0cmluZy50cmltVG9FbXB0eSh2LnVybCkgfHwgc3RyaW5nLnRyaW1Ub0VtcHR5KHYudXJpKTtcbiAgICBpZiAodXJsICYmICFzZWVuLmhhcyh1cmwpKSB7XG4gICAgICBzZWVuLmFkZCh1cmwpO1xuICAgICAgY29uc3QgdGl0bGUgPSBzdHJpbmcudHJpbVRvRW1wdHkodi50aXRsZSk7XG4gICAgICBjaXRhdGlvbnMucHVzaCh7IHVybCwgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pIH0pO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3QudmFsdWVzKHYpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB2YWwuZm9yRWFjaCgoeCkgPT4gdmlzaXQoeCwgZGVwdGggKyAxKSk7XG4gICAgICBlbHNlIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gXCJvYmplY3RcIikgdmlzaXQodmFsLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfTtcbiAgdmlzaXQobWVzc2FnZS5ncm91bmRpbmdfbWV0YWRhdGEgPz8gbWVzc2FnZS5ncm91bmRpbmdNZXRhZGF0YSwgMCk7XG4gIHJldHVybiB7IGFuc3dlciwgY2l0YXRpb25zIH07XG59XG5cbi8qKlxuICogUnVuIGEgd2ViIHNlYXJjaC4gUHJlZmVycyB0aGUgRGF0YWJyaWNrcyBuYXRpdmUgd2ViLXNlYXJjaCB0b29sIG9uIGFcbiAqIGRlcGxveWVkIEdQVC9HZW1pbmkgZW5kcG9pbnQgKHN5bnRoZXNpemVkIGFuc3dlciArIGNpdGF0aW9ucyk7IHdoZW4gdGhlXG4gKiB3b3Jrc3BhY2UgaGFzIG5vIHN1Y2ggZW5kcG9pbnQgQU5EIHRoZSBzY3JhcGUgZmFsbGJhY2sgaXMgZW5hYmxlZCwgZmFsbHNcbiAqIGJhY2sgdG8gYSBEdWNrRHVja0dvIHNjcmFwZSBzbyB0aGUgdG9vbCBzdGlsbCByZXR1cm5zIHJlc3VsdHMgaW5zdGVhZCBvZlxuICogZXJyb3JpbmcuIENpdGF0aW9ucyBhcmUgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC5cbiAqXG4gKiBgc2lnbmFsYCBjYW5jZWxzIHRoZSB3aG9sZSBjYWxsLCBpbmNsdWRpbmcgdGhlIGluLWZsaWdodCBzZXJ2aW5nIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XZWJTZWFyY2goXG4gIHJlcXVlc3Q6IFdlYlNlYXJjaFJlcXVlc3QsXG4gIGNvbmZpZzogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgc2lnbmFsPzogQWJvcnRTaWduYWwsXG4pOiBQcm9taXNlPFdlYlNlYXJjaFJlc3VsdD4ge1xuICBjb25zdCBtb2RlbElkID0gYXdhaXQgcmVzb2x2ZVdlYlNlYXJjaE1vZGVsKGN0eCwgY29uZmlnLCByZXF1ZXN0Lm1vZGVsKTtcblxuICBpZiAobW9kZWxJZCA9PT0gbnVsbCkge1xuICAgIC8vIE5vIG5hdGl2ZSB3ZWItc2VhcmNoIG1vZGVsIGRlcGxveWVkIGluIHRoaXMgd29ya3NwYWNlLlxuICAgIGlmIChjb25maWcuc2NyYXBlRmFsbGJhY2spIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwibm8tbmF0aXZlLW1vZGVsOnNjcmFwZS1mYWxsYmFja1wiLCB7IHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5IH0pO1xuICAgICAgcmV0dXJuIHJ1blNjcmFwZVNlYXJjaChyZXF1ZXN0LCBjb25maWcsIHNpZ25hbCk7XG4gICAgfVxuICAgIHRocm93IENvbmZpZ3VyYXRpb25FcnJvci5yZXNvdXJjZU5vdEZvdW5kKFxuICAgICAgXCJXZWItc2VhcmNoLWNhcGFibGUgc2VydmluZyBlbmRwb2ludFwiLFxuICAgICAgXCJObyBHUFQvR2VtaW5pIGVuZHBvaW50IGlzIGRlcGxveWVkIGluIHRoaXMgd29ya3NwYWNlIGFuZCB0aGUgc2NyYXBlIGZhbGxiYWNrIGlzIFwiICtcbiAgICAgICAgYGRpc2FibGVkLiBEZXBsb3kgYSBzdXBwb3J0ZWQgZW5kcG9pbnQsIHNldCBtb2RlbCBvciAke01PREVMX0VOVn0sIG9yIGVuYWJsZSB0aGUgYCArXG4gICAgICAgIFwiZmFsbGJhY2sgKFdFQl9TRUFSQ0hfU0NSQVBFX0ZBTExCQUNLPTEpLlwiLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBwcm92aWRlciA9IGRldGVjdFdlYlNlYXJjaFByb3ZpZGVyKG1vZGVsSWQpITsgLy8gZ3VhcmFudGVlZCBieSByZXNvbHZlIHN0ZXBcbiAgY29uc3Qgc3BlYyA9IHdlYlNlYXJjaFRvb2xTcGVjKHByb3ZpZGVyLCBjb25maWcud2ViU2VhcmNoVG9vbHMpO1xuXG4gIGNvbnN0IHVybCA9XG4gICAgc3BlYy5hcGkgPT09IFwicmVzcG9uc2VzXCIgPyBpbnZva2UucmVzcG9uc2VzVXJsKGN0eC5ob3N0KSA6IGludm9rZS5jaGF0Q29tcGxldGlvbnNVcmwoY3R4Lmhvc3QpO1xuICBjb25zdCBib2R5ID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIlxuICAgICAgPyB7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgICAgICAgaW5wdXQ6IFt7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiByZXF1ZXN0LnF1ZXJ5IH1dLFxuICAgICAgICAgIHRvb2xzOiBbc3BlYy50b29sXSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgICAgICAgbWVzc2FnZXM6IFt7IHJvbGU6IFwidXNlclwiLCBjb250ZW50OiByZXF1ZXN0LnF1ZXJ5IH1dLFxuICAgICAgICAgIHRvb2xzOiBbc3BlYy50b29sXSxcbiAgICAgICAgfTtcblxuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcG9zdFNlcnZpbmcoXG4gICAgY3R4LFxuICAgIHVybCxcbiAgICBib2R5LFxuICAgIGNvbmZpZyxcbiAgICBbXCJ3ZWItc2VhcmNoXCIsIFwic2VydmluZ1wiLCBzcGVjLmFwaSwgbW9kZWxJZCwgcmVxdWVzdC5xdWVyeV0sXG4gICAgc2lnbmFsLFxuICApO1xuXG4gIGNvbnN0IHsgYW5zd2VyLCBjaXRhdGlvbnMgfSA9XG4gICAgc3BlYy5hcGkgPT09IFwicmVzcG9uc2VzXCIgPyBmcm9tUmVzcG9uc2VzUGF5bG9hZChwYXlsb2FkKSA6IGZyb21DaGF0UGF5bG9hZChwYXlsb2FkKTtcblxuICBjb25zdCBwZXJtaXR0ZWQgPSBjaXRhdGlvbnMuZmlsdGVyKChjKSA9PiBjb25maWcuYWxsb3dMaXN0LmFsbG93cyhjLnVybCkpO1xuICBjb25zdCBkcm9wcGVkID0gY2l0YXRpb25zLmxlbmd0aCAtIHBlcm1pdHRlZC5sZW5ndGg7XG4gIGNvbnN0IHRyaW1tZWQgPSBwZXJtaXR0ZWQuc2xpY2UoMCwgY29uZmlnLm1heENpdGF0aW9ucyk7XG4gIGxvZ2dlci5kZWJ1ZyhcInNlYXJjaGVkXCIsIHtcbiAgICBxdWVyeTogcmVxdWVzdC5xdWVyeSxcbiAgICBtb2RlbDogbW9kZWxJZCxcbiAgICBwcm92aWRlcixcbiAgICBjaXRhdGlvbnM6IGNpdGF0aW9ucy5sZW5ndGgsXG4gICAgLi4uKGRyb3BwZWQgPiAwID8geyBmaWx0ZXJlZDogZHJvcHBlZCB9IDoge30pLFxuICAgIHJldHVybmVkOiB0cmltbWVkLmxlbmd0aCxcbiAgfSk7XG5cbiAgcmV0dXJuIHsgcXVlcnk6IHJlcXVlc3QucXVlcnksIGFuc3dlciwgY2l0YXRpb25zOiB0cmltbWVkLCBtb2RlbDogbW9kZWxJZCB9O1xufVxuIl19
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFnQyxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRXpDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBRWhD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TSxDQUNQLENBQUM7SUFFRixNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUN6QixJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV0RixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1FBQ3ZCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixLQUFLLEVBQUUsT0FBTztRQUNkLFFBQVE7UUFDUixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDM0IsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0MsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNO0tBQ3pCLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2ViIHNlYXJjaCBiYWNrZWQgYnkgdGhlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBuYXRpdmUgd2ViLXNlYXJjaCB0b29sLlxuICpcbiAqIFVubGlrZSBhIHNjcmFwaW5nIGNsaWVudCwgdGhlIHNlYXJjaCBydW5zICppbnNpZGUqIGEgbW9kZWwgY2FsbDogd2UgUE9TVCB0aGVcbiAqIHF1ZXJ5IHRvIHRoZSB3b3Jrc3BhY2UncyBzZXJ2aW5nIGVuZHBvaW50IHdpdGggdGhlIHByb3ZpZGVyJ3Mgd2ViLXNlYXJjaFxuICogdG9vbCBzcGVjIGF0dGFjaGVkLCBhbmQgdGhlIG1vZGVsIHNlYXJjaGVzIHRoZSB3ZWIgYW5kIHdyaXRlcyB0aGUgYW5zd2VyLlxuICoge0BsaW5rIHJ1bldlYlNlYXJjaH06XG4gKlxuICogICAxLiBSZXNvbHZlcyBhIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBJTkRFUEVOREVOVExZIG9mIHRoZSBjYWxsaW5nXG4gKiAgICAgIGFnZW50J3MgY2hhdCBtb2RlbCAodGhlIGFnZW50IG1heSBydW4gb24gYSBtb2RlbCB3aXRob3V0IHdlYiBzZWFyY2gpLlxuICogICAgICBBIHBpbm5lZCBgbW9kZWxgIChyZXF1ZXN0IG9yIGNvbmZpZykgaXMgZnV6enktbWF0Y2hlZDsgb3RoZXJ3aXNlIHRoZVxuICogICAgICBjb25maWd1cmVkIGZhbGxiYWNrIG9yZGVyIChHZW1pbmksIHRoZW4gR1BUKSBpcyB3YWxrZWQgdG8gdGhlIGZpcnN0XG4gKiAgICAgIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCB0aGF0IGV4aXN0cy4gQW4gZXhwbGljaXQgYnV0IHVuc3VwcG9ydGVkXG4gKiAgICAgIG1vZGVsIGlzIGEgaGFyZCBlcnJvciwgbm90IGEgc2lsZW50IGZhbGxiYWNrLlxuICogICAyLiBQT1NUcyB0byB0aGUgcHJvdmlkZXIncyBSRVNUIHN1cmZhY2UgKGAvc2VydmluZy1lbmRwb2ludHMvcmVzcG9uc2VzYFxuICogICAgICBmb3IgT3BlbkFJLCBgL3NlcnZpbmctZW5kcG9pbnRzL2NoYXQvY29tcGxldGlvbnNgIGZvciBHZW1pbmkpIHdpdGggdGhlXG4gKiAgICAgIG1hcHBlZCB0b29sIHNwZWMsIGF1dGhlbnRpY2F0ZWQgYXMgdGhlIE9CTyBjYWxsZXIuXG4gKiAgIDMuIFJldHVybnMgdGhlIHN5bnRoZXNpemVkIGFuc3dlciBwbHVzIHRoZSBjaXRlZCBzb3VyY2VzLCB3aXRoIGNpdGF0aW9uc1xuICogICAgICBzaWxlbnRseSBmaWx0ZXJlZCB0aHJvdWdoIHRoZSBjb25maWd1cmVkIFVSTCBhbGxvdy1saXN0LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uRXJyb3IsXG4gIENvbm5lY3Rpb25FcnJvcixcbiAgRXhlY3V0aW9uRXJyb3IsXG4gIGdldEV4ZWN1dGlvbkNvbnRleHQsXG4gIFZhbGlkYXRpb25FcnJvcixcbn0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgaW52b2tlLCByZXNvbHZlLCBzZXJ2aW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmltcG9ydCB7IGxvZywgb2JqZWN0LCBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgb3BlbmFpQ2hhdCwgb3BlbmFpUmVzcG9uc2VzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgeyBNT0RFTF9FTlYsIFNFUlZJTkdfRU5EUE9JTlRfRU5WLCB0eXBlIFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQgeyB0b0NhbGxTZXR0aW5ncywgd2ViU2VhcmNoRXhlY3V0ZURlZmF1bHRzIH0gZnJvbSBcIi4vZGVmYXVsdHMudHNcIjtcbmltcG9ydCB7IGRldGVjdFdlYlNlYXJjaFByb3ZpZGVyLCBzdXBwb3J0c1dlYlNlYXJjaCwgd2ViU2VhcmNoVG9vbFNwZWMgfSBmcm9tIFwiLi9wcm92aWRlci50c1wiO1xuaW1wb3J0IHsgZXhlY3V0ZVJlYWQgfSBmcm9tIFwiLi9ydW50aW1lLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFdlYlNlYXJjaENpdGF0aW9uLCBXZWJTZWFyY2hSZXF1ZXN0LCBXZWJTZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9zY2hlbWEudHNcIjtcbmltcG9ydCB7IHJ1blNjcmFwZVNlYXJjaCB9IGZyb20gXCIuL3NjcmFwZS50c1wiO1xuXG50eXBlIFdvcmtzcGFjZUNsaWVudExpa2UgPSBzZXJ2aW5nLldvcmtzcGFjZUNsaWVudExpa2UgJiBpbnZva2UuQXV0aGVudGljYXRpbmdDbGllbnRMaWtlO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIndlYi1zZWFyY2gvc2VhcmNoXCIpO1xuY29uc3QgeyByZXNvbHZlTW9kZWwgfSA9IHJlc29sdmU7XG5jb25zdCB7IGxpc3RTZXJ2aW5nRW5kcG9pbnRzIH0gPSBzZXJ2aW5nO1xuXG4vKipcbiAqIEhvdyBkZWVwIHRoZSBncm91bmRpbmctbWV0YWRhdGEgd2FsayBkZXNjZW5kcy4gR2VtaW5pIG5lc3RzIGl0cyBzb3VyY2VzIGFcbiAqIGhhbmRmdWwgb2YgbGV2ZWxzIGRvd24gYW5kIHRoZSBzaGFwZSB2YXJpZXMgYnkgbW9kZWwgdmVyc2lvbiwgc28gdGhlIHdhbGtcbiAqIGlzIGdlbmVyaWM7IHRoZSBib3VuZCBpcyB3aGF0IGtlZXBzIGEgcGF0aG9sb2dpY2FsIHBheWxvYWQgZnJvbSB0dXJuaW5nIGl0XG4gKiBpbnRvIGEgZnVsbCB0cmF2ZXJzYWwgb2YgdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggPSA2O1xuXG4vKiogTG93ZXN0IEhUVFAgc3RhdHVzIHRyZWF0ZWQgYXMgYSBzZXJ2ZXItc2lkZSAocmV0cnlhYmxlKSBzZXJ2aW5nIGZhaWx1cmUuICovXG5jb25zdCBTRVJWRVJfRVJST1JfU1RBVFVTID0gNTAwO1xuXG4vKiogU3RhdHVzIE1vZGVsIFNlcnZpbmcgdXNlcyB0byBzaGVkIGxvYWQ7IHJldHJ5YWJsZSBsaWtlIGEgNXh4LiAqL1xuY29uc3QgUkFURV9MSU1JVEVEX1NUQVRVUyA9IDQyOTtcblxuLyoqIENvbnRleHQgYSBzZWFyY2ggbmVlZHMgZnJvbSB0aGUgY2FsbGVyOiB0aGUgT0JPIGNsaWVudCArIHdvcmtzcGFjZSBob3N0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hDb250ZXh0IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlO1xuICBob3N0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgT0JPIHdvcmtzcGFjZSBjbGllbnQgKyBob3N0IGZyb20gdGhlIGFjdGl2ZSBBcHBLaXQgZXhlY3V0aW9uXG4gKiBjb250ZXh0LiBJbnNpZGUgYGFnZW50LnN0cmVhbWAncyBgYXNVc2VyKHJlcSlgIHNjb3BlIHRoaXMgaGl0cyB0aGUgc2VydmluZ1xuICogZW5kcG9pbnQgYXMgdGhlIHJlcXVlc3RpbmcgdXNlcjsgb3V0c2lkZSBhIHVzZXIgY29udGV4dCBBcHBLaXQgZmFsbHMgYmFjayB0b1xuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKTogUHJvbWlzZTxXZWJTZWFyY2hDb250ZXh0PiB7XG4gIGNvbnN0IGN0eCA9IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjdHguY2xpZW50LmNvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7IGNsaWVudDogY3R4LmNsaWVudCwgaG9zdCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgYWdhaW5zdCB0aGUgTElWRSB3b3Jrc3BhY2UgY2F0YWxvZ3VlIC0gc29cbiAqIHdlIG5ldmVyIHJldHVybiBhbiBlbmRwb2ludCBpZCB0aGF0IGlzbid0IGFjdHVhbGx5IGRlcGxveWVkICh0aGUgXCJlbmRwb2ludFxuICogZG9lcyBub3QgZXhpc3RcIiBmYWlsdXJlIGEgaGFyZGNvZGVkIGZhbGxiYWNrIGlkIHdvdWxkIGNhdXNlKS4gUmV1c2VzXG4gKiBgQGRieC10b29scy9tb2RlbGAncyBleGlzdGluZyBjYXRhbG9ndWUgKyByZXNvbHZlciByYXRoZXIgdGhhbiBhIGN1c3RvbVxuICogbG9va3VwOiB7QGxpbmsgbGlzdFNlcnZpbmdFbmRwb2ludHN9IGxpc3RzIHRoZSBlbmRwb2ludHMgKGNhY2hlZCksIGFuZCB3ZVxuICogcmVzdHJpY3QgdGhlIGNhbmRpZGF0ZSBzZXQgdG8gdGhlIHtAbGluayBzdXBwb3J0c1dlYlNlYXJjaH0gb25lcyBiZWZvcmVcbiAqIHtAbGluayByZXNvbHZlTW9kZWx9IGZ1enp5LXBpY2tzIHdpdGhpbiBpdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjaG9zZW4gZW5kcG9pbnQgaWQsIG9yIGBudWxsYCB3aGVuIHRoZSB3b3Jrc3BhY2UgaGFzIG5vXG4gKiB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgZGVwbG95ZWQgKHRoZSBjYWxsZXIgdGhlbiB1c2VzIHRoZSBzY3JhcGVcbiAqIGZhbGxiYWNrKS4gQSBwaW4gdGhlIGNhbGxlciBjaG9zZSBkZWxpYmVyYXRlbHkgLSB0aGUgcmVxdWVzdCdzIGBtb2RlbGAsIHRoZVxuICogcGx1Z2luJ3MgYG1vZGVsYCwgb3IgYFdFQl9TRUFSQ0hfTU9ERUxgIC0gdGhyb3dzIHdoZW4gaXQgcmVzb2x2ZXMgdG8gYW5cbiAqIHVuc3VwcG9ydGVkIC8gYWJzZW50IGVuZHBvaW50LCBzbyBhIGJhZCBwaW4gc3VyZmFjZXMgcmF0aGVyIHRoYW4gc2lsZW50bHlcbiAqIGRlZ3JhZGluZy4gQSBwaW4gaW5oZXJpdGVkIGZyb20gdGhlIHNoYXJlZCBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgXG4gKiBiaW5kaW5nIGlzIG9ubHkgYSBwcmVmZXJlbmNlOiB0aGF0IGVuZHBvaW50IGlzIHRoZSBhcHAncyBzZXJ2aW5nIGVuZHBvaW50LFxuICogbm90IG5lY2Vzc2FyaWx5IGEgd2ViLXNlYXJjaC1jYXBhYmxlIG9uZSwgc28gYW4gdW51c2FibGUgdmFsdWUgZmFsbHMgdGhyb3VnaFxuICogdG8gdGhlIGZhbGxiYWNrIG9yZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlV2ViU2VhcmNoTW9kZWwoXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgcmVxdWVzdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgbGlzdFNlcnZpbmdFbmRwb2ludHMoY3R4LmNsaWVudCwgY3R4Lmhvc3QpO1xuICAvLyBPbmx5IGRlcGxveWVkLCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnRzIGFyZSBjYW5kaWRhdGVzLlxuICBjb25zdCBjYXBhYmxlID0gZW5kcG9pbnRzLmZpbHRlcigoZSkgPT4gc3VwcG9ydHNXZWJTZWFyY2goZS5uYW1lKSk7XG4gIGNvbnN0IHBpbm5lZCA9IHJlcXVlc3RlZCA/PyBjb25maWcubW9kZWw7XG4gIGNvbnN0IHBpbklzRGVsaWJlcmF0ZSA9XG4gICAgcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgfHwgY29uZmlnLm1vZGVsU291cmNlID09PSBcImNvbmZpZ1wiIHx8IGNvbmZpZy5tb2RlbFNvdXJjZSA9PT0gTU9ERUxfRU5WO1xuXG4gIGlmIChwaW5uZWQpIHtcbiAgICAvLyBSZXNvbHZlIHRoZSBleHBsaWNpdCBhc2sgd2l0aGluIHRoZSBjYXBhYmxlIHNldCBvbmx5LlxuICAgIGNvbnN0IHsgbW9kZWxJZCB9ID0gcmVzb2x2ZU1vZGVsKGNhcGFibGUsIHtcbiAgICAgIGV4cGxpY2l0OiBwaW5uZWQsXG4gICAgICBmdXp6eTogY29uZmlnLmZ1enp5LFxuICAgICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gICAgfSk7XG4gICAgLy8gcmVzb2x2ZU1vZGVsIHJldHVybnMgdGhlIGlucHV0IHZlcmJhdGltIG9uIG5vIG1hdGNoOyByZXF1aXJlIGl0IHRvIGJlIGFcbiAgICAvLyByZWFsIGNhcGFibGUgZW5kcG9pbnQgc28gYSBiYWQgcGluIGlzIGEgY2xlYXIgZXJyb3IsIG5vdCBhIHBoYW50b20gY2FsbC5cbiAgICBjb25zdCB1c2FibGUgPSBjYXBhYmxlLnNvbWUoKGUpID0+IGUubmFtZSA9PT0gbW9kZWxJZCkgJiYgc3VwcG9ydHNXZWJTZWFyY2gobW9kZWxJZCk7XG4gICAgaWYgKHVzYWJsZSkgcmV0dXJuIG1vZGVsSWQ7XG4gICAgY29uc3QgZGVwbG95ZWQgPSBjYXBhYmxlLm1hcCgoZSkgPT4gZS5uYW1lKS5qb2luKFwiLCBcIikgfHwgXCJub25lXCI7XG4gICAgaWYgKCFwaW5Jc0RlbGliZXJhdGUpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwic2hhcmVkLWVuZHBvaW50LW5vdC13ZWItY2FwYWJsZVwiLCB7XG4gICAgICAgIGVudlZhcjogU0VSVklOR19FTkRQT0lOVF9FTlYsXG4gICAgICAgIGRlcGxveWVkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgVmFsaWRhdGlvbkVycm9yLmludmFsaWRWYWx1ZShcbiAgICAgICAgXCJtb2RlbFwiLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGBhIGRlcGxveWVkIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCAoZGVwbG95ZWQ6ICR7ZGVwbG95ZWR9KWAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBDb25maWd1cmF0aW9uRXJyb3IucmVzb3VyY2VOb3RGb3VuZChcbiAgICAgICAgXCJXZWItc2VhcmNoLWNhcGFibGUgc2VydmluZyBlbmRwb2ludFwiLFxuICAgICAgICBgRGVwbG95ZWQgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50czogJHtkZXBsb3llZH0uIFNldCBtb2RlbCBvciAke01PREVMX0VOVn0gdG8gb25lIG9mIHRoZW0uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNhcGFibGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAvLyBOb3RoaW5nIHVzYWJsZSBwaW5uZWQ6IHByZWZlciB0aGUgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuXG4gIC8vIEdQVCkgd2hlbiB0aG9zZSBpZHMgYXJlIGFjdHVhbGx5IGRlcGxveWVkOyBlbHNlIHRha2UgdGhlIGJlc3QgY2FwYWJsZVxuICAvLyBlbmRwb2ludC5cbiAgY29uc3QgeyBtb2RlbElkIH0gPSByZXNvbHZlTW9kZWwoY2FwYWJsZSwge1xuICAgIGZhbGxiYWNrczogY29uZmlnLm1vZGVsRmFsbGJhY2tzLFxuICAgIGZ1enp5OiBjb25maWcuZnV6enksXG4gICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gIH0pO1xuICByZXR1cm4gY2FwYWJsZS5zb21lKChlKSA9PiBlLm5hbWUgPT09IG1vZGVsSWQpID8gbW9kZWxJZCA6IChjYXBhYmxlWzBdPy5uYW1lID8/IG51bGwpO1xufVxuXG4vKipcbiAqIFBPU1QgYSBzZXJ2aW5nIHJlcXVlc3QgYXMgdGhlIE9CTyBjYWxsZXIgYW5kIHJldHVybiB0aGUgcGFyc2VkIEpTT04gYm9keS5cbiAqXG4gKiBBdXRoIGhlYWRlcnMgYXJlIG1pbnRlZCBwZXIgY2FsbCBmcm9tIHRoZSBPQk8gY2xpZW50J3MgU0RLIGNvbmZpZywgd2hpY2hcbiAqIHJlZnJlc2hlcyB0aGUgdG9rZW4gd2hlbiBpdCBpcyBjbG9zZSB0byBleHBpcnksIHNvIHRoZSByZXF1ZXN0IGNhcnJpZXMgdGhlXG4gKiByZXF1ZXN0aW5nIHVzZXIncyBpZGVudGl0eS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBvbmUgRGF0YWJyaWNrcyBjYWxsIGluIHRoZSByZXBvIHRoYXQgZG9lcyBub3QgZ28gdGhyb3VnaFxuICogYGFwaUNsaWVudC5yZXF1ZXN0YCArIGBkYXRhYnJpY2tzLnRvQ29udGV4dGAgKHdoaWNoIGRvZXMgZm9yd2FyZFxuICogY2FuY2VsbGF0aW9uKS4gUmV0cnkgY2xhc3NpZmljYXRpb24gaGVyZSBoYXMgdG8gZGlzdGluZ3Vpc2ggYSBsb2FkLXNoZWQgb3JcbiAqIHNlcnZlciBmYXVsdCBmcm9tIHRoaXMgcmVxdWVzdCdzIG93biA0eHgsIGFuZCBgZmV0Y2hgIGV4cG9zZXMgdGhlIEhUVFAgc3RhdHVzXG4gKiBkaXJlY3RseTsgdGhlIFNESyByYWlzZXMgYW4gYEFwaUVycm9yYCB0aGF0IGNhcnJpZXMgdGhlIHN0YXR1cyB1bmRlclxuICogaW5jb25zaXN0ZW50IGtleXMsIHdoaWNoIGlzIGd1ZXNzd29yayBieSBjb21wYXJpc29uLlxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0U2VydmluZyhcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICB1cmw6IHN0cmluZyxcbiAgYm9keTogdW5rbm93bixcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgY2FjaGVLZXk6IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgZXhlY3V0ZVJlYWQoXG4gICAgXCJzZXJ2aW5nLXJlcXVlc3RcIixcbiAgICB0b0NhbGxTZXR0aW5ncyh3ZWJTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIGNvbmZpZy50aW1lb3V0TXMsIGNhY2hlS2V5KSxcbiAgICBhc3luYyAoZXhlY3V0ZVNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLihhd2FpdCBpbnZva2UuYXV0aEhlYWRlcnMoY3R4LmNsaWVudCkpLFxuICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAuLi4oZXhlY3V0ZVNpZ25hbCA/IHsgc2lnbmFsOiBleGVjdXRlU2lnbmFsIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgLy8gTG9hZC1zaGVkZGluZyBhbmQgc2VydmVyIGZhdWx0cyBhcmUgd29ydGggYW5vdGhlciBhdHRlbXB0OyBhIDR4eCBpc1xuICAgICAgICAvLyB0aGlzIHJlcXVlc3QncyBvd24gcHJvYmxlbSwgc28gaXQgbXVzdCBub3QgYmUgcmV0cmllZC5cbiAgICAgICAgY29uc3QgcmV0cnlhYmxlID1cbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPj0gU0VSVkVSX0VSUk9SX1NUQVRVUyB8fCByZXNwb25zZS5zdGF0dXMgPT09IFJBVEVfTElNSVRFRF9TVEFUVVM7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgd2ViLXNlYXJjaDogTW9kZWwgU2VydmluZyByZWplY3RlZCB0aGUgc2VhcmNoIHJlcXVlc3QgKEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9KWA7XG4gICAgICAgIHRocm93IHJldHJ5YWJsZVxuICAgICAgICAgID8gbmV3IENvbm5lY3Rpb25FcnJvcihtZXNzYWdlLCB7IGNvbnRleHQ6IHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSB9KVxuICAgICAgICAgIDogbmV3IEV4ZWN1dGlvbkVycm9yKG1lc3NhZ2UsIHsgY29udGV4dDogeyBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbiAgcmV0dXJuIG9iamVjdC5pc1JlY29yZChwYXlsb2FkKSA/IHBheWxvYWQgOiB7fTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlc3BvbnNlIGV4dHJhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRXh0cmFjdCBhbnN3ZXIgdGV4dCBhbmQgY2l0YXRpb25zIGZyb20gYW4gT3BlbkFJIFJlc3BvbnNlcyBBUEkgcGF5bG9hZCB0aHJvdWdoXG4gKiB0aGUgc2hhcmVkIHJlYWRlciBpbiBgQGRieC10b29scy9zaGFyZWQtbW9kZWxgLlxuICovXG5mdW5jdGlvbiBmcm9tUmVzcG9uc2VzUGF5bG9hZChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHtcbiAgYW5zd2VyOiBzdHJpbmc7XG4gIGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXTtcbn0ge1xuICBjb25zdCB7IHRleHQsIGNpdGF0aW9ucyB9ID0gb3BlbmFpUmVzcG9uc2VzLnJlYWRSZXNwb25zZXNPdXRwdXQocGF5bG9hZCk7XG4gIHJldHVybiB7IGFuc3dlcjogdGV4dCwgY2l0YXRpb25zIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCBhbnN3ZXIgdGV4dCArIGNpdGF0aW9ucyBmcm9tIGEgQ2hhdCBDb21wbGV0aW9ucyBwYXlsb2FkIChHZW1pbmkgdmlhXG4gKiBgZ29vZ2xlX3NlYXJjaGApLiBUaGUgYW5zd2VyIGlzIGBjaG9pY2VzWzBdLm1lc3NhZ2UuY29udGVudGA7IGdyb3VuZGluZ1xuICogc291cmNlcywgd2hlbiBwcmVzZW50LCBzdXJmYWNlIHVuZGVyIGBjaG9pY2VzWzBdLm1lc3NhZ2VgIGdyb3VuZGluZ1xuICogbWV0YWRhdGEgKGJlc3QtZWZmb3J0IC0gc2hhcGVzIHZhcnksIHNvIHdlIHNjYW4gZm9yIHVybC1iZWFyaW5nIGVudHJpZXMpLlxuICovXG5mdW5jdGlvbiBmcm9tQ2hhdFBheWxvYWQocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB7XG4gIGFuc3dlcjogc3RyaW5nO1xuICBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW107XG59IHtcbiAgY29uc3QgY2hvaWNlcyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5jaG9pY2VzKSA/IHBheWxvYWQuY2hvaWNlcyA6IFtdO1xuICBjb25zdCBmaXJzdCA9IGNob2ljZXNbMF07XG4gIGNvbnN0IG1lc3NhZ2UgPSBvYmplY3QuaXNSZWNvcmQoZmlyc3QpICYmIG9iamVjdC5pc1JlY29yZChmaXJzdC5tZXNzYWdlKSA/IGZpcnN0Lm1lc3NhZ2UgOiB7fTtcbiAgY29uc3QgYW5zd2VyID0gb3BlbmFpQ2hhdC5jaGF0Q29udGVudFRvVGV4dChtZXNzYWdlLmNvbnRlbnQpO1xuICBjb25zdCBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW10gPSBbXTtcbiAgLy8gQmVzdC1lZmZvcnQgZ3JvdW5kaW5nIGV4dHJhY3Rpb246IHdhbGsgYW55IG5lc3RlZCBvYmplY3QgZm9yIHt1cml8dXJsLHRpdGxlfS5cbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdCA9ICh2OiB1bmtub3duLCBkZXB0aDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKGRlcHRoID4gTUFYX0dST1VORElOR19XQUxLX0RFUFRIIHx8ICFvYmplY3QuaXNSZWNvcmQodikpIHJldHVybjtcbiAgICBjb25zdCB1cmwgPSBzdHJpbmcudHJpbVRvRW1wdHkodi51cmwpIHx8IHN0cmluZy50cmltVG9FbXB0eSh2LnVyaSk7XG4gICAgaWYgKHVybCAmJiAhc2Vlbi5oYXModXJsKSkge1xuICAgICAgc2Vlbi5hZGQodXJsKTtcbiAgICAgIGNvbnN0IHRpdGxlID0gc3RyaW5nLnRyaW1Ub0VtcHR5KHYudGl0bGUpO1xuICAgICAgY2l0YXRpb25zLnB1c2goeyB1cmwsIC4uLih0aXRsZSA/IHsgdGl0bGUgfSA6IHt9KSB9KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LnZhbHVlcyh2KSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgdmFsLmZvckVhY2goKHgpID0+IHZpc2l0KHgsIGRlcHRoICsgMSkpO1xuICAgICAgZWxzZSBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09IFwib2JqZWN0XCIpIHZpc2l0KHZhbCwgZGVwdGggKyAxKTtcbiAgICB9XG4gIH07XG4gIHZpc2l0KG1lc3NhZ2UuZ3JvdW5kaW5nX21ldGFkYXRhID8/IG1lc3NhZ2UuZ3JvdW5kaW5nTWV0YWRhdGEsIDApO1xuICByZXR1cm4geyBhbnN3ZXIsIGNpdGF0aW9ucyB9O1xufVxuXG4vKipcbiAqIFJ1biBhIHdlYiBzZWFyY2guIFByZWZlcnMgdGhlIERhdGFicmlja3MgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbCBvbiBhXG4gKiBkZXBsb3llZCBHUFQvR2VtaW5pIGVuZHBvaW50IChzeW50aGVzaXplZCBhbnN3ZXIgKyBjaXRhdGlvbnMpOyB3aGVuIHRoZVxuICogd29ya3NwYWNlIGhhcyBubyBzdWNoIGVuZHBvaW50IEFORCB0aGUgc2NyYXBlIGZhbGxiYWNrIGlzIGVuYWJsZWQsIGZhbGxzXG4gKiBiYWNrIHRvIGEgRHVja0R1Y2tHbyBzY3JhcGUgc28gdGhlIHRvb2wgc3RpbGwgcmV0dXJucyByZXN1bHRzIGluc3RlYWQgb2ZcbiAqIGVycm9yaW5nLiBDaXRhdGlvbnMgYXJlIGZpbHRlcmVkIHRocm91Z2ggdGhlIGNvbmZpZ3VyZWQgVVJMIGFsbG93LWxpc3QuXG4gKlxuICogYHNpZ25hbGAgY2FuY2VscyB0aGUgd2hvbGUgY2FsbCwgaW5jbHVkaW5nIHRoZSBpbi1mbGlnaHQgc2VydmluZyByZXF1ZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2ViU2VhcmNoKFxuICByZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LFxuICBjb25maWc6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnLFxuICBjdHg6IFdlYlNlYXJjaENvbnRleHQsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxXZWJTZWFyY2hSZXN1bHQ+IHtcbiAgY29uc3QgbW9kZWxJZCA9IGF3YWl0IHJlc29sdmVXZWJTZWFyY2hNb2RlbChjdHgsIGNvbmZpZywgcmVxdWVzdC5tb2RlbCk7XG5cbiAgaWYgKG1vZGVsSWQgPT09IG51bGwpIHtcbiAgICAvLyBObyBuYXRpdmUgd2ViLXNlYXJjaCBtb2RlbCBkZXBsb3llZCBpbiB0aGlzIHdvcmtzcGFjZS5cbiAgICBpZiAoY29uZmlnLnNjcmFwZUZhbGxiYWNrKSB7XG4gICAgICBsb2dnZXIuaW5mbyhcIm5vLW5hdGl2ZS1tb2RlbDpzY3JhcGUtZmFsbGJhY2tcIiwgeyBxdWVyeTogcmVxdWVzdC5xdWVyeSB9KTtcbiAgICAgIHJldHVybiBydW5TY3JhcGVTZWFyY2gocmVxdWVzdCwgY29uZmlnLCBzaWduYWwpO1xuICAgIH1cbiAgICB0aHJvdyBDb25maWd1cmF0aW9uRXJyb3IucmVzb3VyY2VOb3RGb3VuZChcbiAgICAgIFwiV2ViLXNlYXJjaC1jYXBhYmxlIHNlcnZpbmcgZW5kcG9pbnRcIixcbiAgICAgIFwiTm8gR1BUL0dlbWluaSBlbmRwb2ludCBpcyBkZXBsb3llZCBpbiB0aGlzIHdvcmtzcGFjZSBhbmQgdGhlIHNjcmFwZSBmYWxsYmFjayBpcyBcIiArXG4gICAgICAgIGBkaXNhYmxlZC4gRGVwbG95IGEgc3VwcG9ydGVkIGVuZHBvaW50LCBzZXQgbW9kZWwgb3IgJHtNT0RFTF9FTlZ9LCBvciBlbmFibGUgdGhlIGAgK1xuICAgICAgICBcImZhbGxiYWNrIChXRUJfU0VBUkNIX1NDUkFQRV9GQUxMQkFDSz0xKS5cIixcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcHJvdmlkZXIgPSBkZXRlY3RXZWJTZWFyY2hQcm92aWRlcihtb2RlbElkKSE7IC8vIGd1YXJhbnRlZWQgYnkgcmVzb2x2ZSBzdGVwXG4gIGNvbnN0IHNwZWMgPSB3ZWJTZWFyY2hUb29sU3BlYyhwcm92aWRlciwgY29uZmlnLndlYlNlYXJjaFRvb2xzKTtcblxuICBjb25zdCB1cmwgPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiID8gaW52b2tlLnJlc3BvbnNlc1VybChjdHguaG9zdCkgOiBpbnZva2UuY2hhdENvbXBsZXRpb25zVXJsKGN0eC5ob3N0KTtcbiAgY29uc3QgYm9keSA9XG4gICAgc3BlYy5hcGkgPT09IFwicmVzcG9uc2VzXCJcbiAgICAgID8ge1xuICAgICAgICAgIG1vZGVsOiBtb2RlbElkLFxuICAgICAgICAgIGlucHV0OiBbeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogcmVxdWVzdC5xdWVyeSB9XSxcbiAgICAgICAgICB0b29sczogW3NwZWMudG9vbF0sXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIG1vZGVsOiBtb2RlbElkLFxuICAgICAgICAgIG1lc3NhZ2VzOiBbeyByb2xlOiBcInVzZXJcIiwgY29udGVudDogcmVxdWVzdC5xdWVyeSB9XSxcbiAgICAgICAgICB0b29sczogW3NwZWMudG9vbF0sXG4gICAgICAgIH07XG5cbiAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHBvc3RTZXJ2aW5nKFxuICAgIGN0eCxcbiAgICB1cmwsXG4gICAgYm9keSxcbiAgICBjb25maWcsXG4gICAgW1wid2ViLXNlYXJjaFwiLCBcInNlcnZpbmdcIiwgc3BlYy5hcGksIG1vZGVsSWQsIHJlcXVlc3QucXVlcnldLFxuICAgIHNpZ25hbCxcbiAgKTtcblxuICBjb25zdCB7IGFuc3dlciwgY2l0YXRpb25zIH0gPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiID8gZnJvbVJlc3BvbnNlc1BheWxvYWQocGF5bG9hZCkgOiBmcm9tQ2hhdFBheWxvYWQocGF5bG9hZCk7XG5cbiAgY29uc3QgcGVybWl0dGVkID0gY2l0YXRpb25zLmZpbHRlcigoYykgPT4gY29uZmlnLmFsbG93TGlzdC5hbGxvd3MoYy51cmwpKTtcbiAgY29uc3QgZHJvcHBlZCA9IGNpdGF0aW9ucy5sZW5ndGggLSBwZXJtaXR0ZWQubGVuZ3RoO1xuICBjb25zdCB0cmltbWVkID0gcGVybWl0dGVkLnNsaWNlKDAsIGNvbmZpZy5tYXhDaXRhdGlvbnMpO1xuICBsb2dnZXIuZGVidWcoXCJzZWFyY2hlZFwiLCB7XG4gICAgcXVlcnk6IHJlcXVlc3QucXVlcnksXG4gICAgbW9kZWw6IG1vZGVsSWQsXG4gICAgcHJvdmlkZXIsXG4gICAgY2l0YXRpb25zOiBjaXRhdGlvbnMubGVuZ3RoLFxuICAgIC4uLihkcm9wcGVkID4gMCA/IHsgZmlsdGVyZWQ6IGRyb3BwZWQgfSA6IHt9KSxcbiAgICByZXR1cm5lZDogdHJpbW1lZC5sZW5ndGgsXG4gIH0pO1xuXG4gIHJldHVybiB7IHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LCBhbnN3ZXIsIGNpdGF0aW9uczogdHJpbW1lZCwgbW9kZWw6IG1vZGVsSWQgfTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "projen": "projen"
19
19
  },
20
20
  "devDependencies": {
21
- "@types/bun": "^1.3.14",
21
+ "@types/bun": "1.3.14",
22
22
  "@types/express": "^5.0.5",
23
23
  "@types/json-schema": "^7",
24
24
  "@types/node": "^24.6.0",
@@ -26,11 +26,11 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@databricks/appkit": "^0.60.0",
29
- "@dbx-tools/core": "0.6.161",
30
- "@dbx-tools/model": "0.6.161",
31
- "@dbx-tools/path": "0.6.161",
32
- "@dbx-tools/shared-core": "0.6.161",
33
- "@dbx-tools/shared-model": "0.6.161",
29
+ "@dbx-tools/core": "0.6.168",
30
+ "@dbx-tools/model": "0.6.168",
31
+ "@dbx-tools/path": "0.6.168",
32
+ "@dbx-tools/shared-core": "0.6.168",
33
+ "@dbx-tools/shared-model": "0.6.168",
34
34
  "@mastra/core": "1.47.0",
35
35
  "got-scraping": "^4.2.1",
36
36
  "zod": "4.3.6"
@@ -49,7 +49,7 @@
49
49
  "./package.json": "./package.json"
50
50
  }
51
51
  },
52
- "version": "0.6.161",
52
+ "version": "0.6.168",
53
53
  "types": "./lib/index.d.ts",
54
54
  "type": "module",
55
55
  "exports": {
package/src/search.ts CHANGED
@@ -206,9 +206,8 @@ async function postServing(
206
206
  /* --------------------------- response extraction --------------------------- */
207
207
 
208
208
  /**
209
- * Extract answer text + citations from an OpenAI Responses API payload, via the
210
- * shared reader in `@dbx-tools/shared-model` (the same module the model-proxy
211
- * uses to translate the Responses wire format in the other direction).
209
+ * Extract answer text and citations from an OpenAI Responses API payload through
210
+ * the shared reader in `@dbx-tools/shared-model`.
212
211
  */
213
212
  function fromResponsesPayload(payload: Record<string, unknown>): {
214
213
  answer: string;