@growsober/sdk 1.0.22 → 1.0.24

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.
@@ -7,6 +7,8 @@ exports.useCreatorBySlug = useCreatorBySlug;
7
7
  exports.useCreatorByUser = useCreatorByUser;
8
8
  exports.useMyCreatorProfile = useMyCreatorProfile;
9
9
  exports.useCreatorAvailability = useCreatorAvailability;
10
+ exports.useCreatorAvailableDates = useCreatorAvailableDates;
11
+ exports.useCreatorAvailableSlots = useCreatorAvailableSlots;
10
12
  exports.useCreatorContent = useCreatorContent;
11
13
  exports.useCreatorAllContent = useCreatorAllContent;
12
14
  exports.useCreatorEvents = useCreatorEvents;
@@ -28,6 +30,8 @@ exports.creatorKeys = {
28
30
  byUser: (userId) => [...exports.creatorKeys.all, 'user', userId],
29
31
  me: () => [...exports.creatorKeys.all, 'me'],
30
32
  availability: (creatorId) => [...exports.creatorKeys.detail(creatorId), 'availability'],
33
+ availableDates: (creatorId, from, to) => [...exports.creatorKeys.detail(creatorId), 'available-dates', from, to],
34
+ availableSlots: (creatorId, date, durationMinutes) => [...exports.creatorKeys.detail(creatorId), 'available-slots', date, durationMinutes],
31
35
  content: (creatorId) => [...exports.creatorKeys.detail(creatorId), 'content'],
32
36
  allContent: (creatorId) => [...exports.creatorKeys.detail(creatorId), 'content', 'all'],
33
37
  events: (creatorId) => [...exports.creatorKeys.detail(creatorId), 'events'],
@@ -179,6 +183,40 @@ function useCreatorAvailability(creatorId, options) {
179
183
  ...options,
180
184
  });
181
185
  }
186
+ /**
187
+ * Get dates with availability for a creator in a date range
188
+ */
189
+ function useCreatorAvailableDates(creatorId, params, options) {
190
+ return (0, react_query_1.useQuery)({
191
+ queryKey: exports.creatorKeys.availableDates(creatorId, params.from, params.to),
192
+ queryFn: async () => {
193
+ const client = (0, client_1.getApiClient)();
194
+ const response = await client.get(`/api/v1/creators/${creatorId}/available-dates`, {
195
+ params,
196
+ });
197
+ return response.data;
198
+ },
199
+ enabled: !!creatorId && !!params.from && !!params.to,
200
+ ...options,
201
+ });
202
+ }
203
+ /**
204
+ * Get available time slots for a creator on a specific date
205
+ */
206
+ function useCreatorAvailableSlots(creatorId, params, options) {
207
+ return (0, react_query_1.useQuery)({
208
+ queryKey: exports.creatorKeys.availableSlots(creatorId, params.date, params.durationMinutes || 60),
209
+ queryFn: async () => {
210
+ const client = (0, client_1.getApiClient)();
211
+ const response = await client.get(`/api/v1/creators/${creatorId}/available-slots`, {
212
+ params,
213
+ });
214
+ return response.data;
215
+ },
216
+ enabled: !!creatorId && !!params.date,
217
+ ...options,
218
+ });
219
+ }
182
220
  /**
183
221
  * Get a creator's published library content
184
222
  *
@@ -325,4 +363,4 @@ function useCreatorApprovedGatheringTypes(creatorId, options) {
325
363
  ...options,
326
364
  });
327
365
  }
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvY3JlYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0ZBLGtDQWVDO0FBYUQsZ0NBY0M7QUFhRCw0Q0FjQztBQWFELDRDQWNDO0FBWUQsa0RBWUM7QUFhRCx3REFjQztBQWFELDhDQWNDO0FBY0Qsb0RBY0M7QUFjRCw0Q0FtQkM7QUFhRCw4Q0FjQztBQWlCRCw0REFjQztBQWFELDRFQWNDO0FBbFpELHVEQUFrRTtBQUNsRSxzQ0FBeUM7QUFVekMsK0VBQStFO0FBQy9FLG9CQUFvQjtBQUNwQiwrRUFBK0U7QUFFbEUsUUFBQSxXQUFXLEdBQUc7SUFDekIsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFVO0lBQzFCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFVO0lBQ2xELElBQUksRUFBRSxDQUFDLE9BQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBVTtJQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBVTtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBVTtJQUMvRCxJQUFJLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFVO0lBQ25FLE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVU7SUFDekUsRUFBRSxFQUFFLEdB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RWhGLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLG1CQUFXLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxLQUFLLElBQXNDLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixTQUFTLDJCQUEyQixDQUFDLENBQUM7WUFDNUYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVM7UUFDcEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgQ3JlYXRvclJlc3BvbnNlLFxuICBDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gIEV2ZW50UmVzcG9uc2UsXG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIFJld2FyZFJlc3BvbnNlLFxuICBHYXRoZXJpbmdUeXBlUmVzcG9uc2UsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZIEZBQ1RPUllcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGNyZWF0b3JLZXlzID0ge1xuICBhbGw6IFsnY3JlYXRvcnMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5jcmVhdG9yS2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogQ3JlYXRvckZpbHRlcnMpID0+IFsuLi5jcmVhdG9yS2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLmNyZWF0b3JLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIHNsdWc6IChzbHVnOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5hbGwsICdzbHVnJywgc2x1Z10gYXMgY29uc3QsXG4gIGJ5VXNlcjogKHVzZXJJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuYWxsLCAndXNlcicsIHVzZXJJZF0gYXMgY29uc3QsXG4gIG1lOiAoKSA9PiBbLi4uY3JlYXRvcktleXMuYWxsLCAnbWUnXSBhcyBjb25zdCxcbiAgYXZhaWxhYmlsaXR5OiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ2F2YWlsYWJpbGl0eSddIGFzIGNvbnN0LFxuICBjb250ZW50OiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ2NvbnRlbnQnXSBhcyBjb25zdCxcbiAgYWxsQ29udGVudDogKGNyZWF0b3JJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlsKGNyZWF0b3JJZCksICdjb250ZW50JywgJ2FsbCddIGFzIGNvbnN0LFxuICBldmVudHM6IChjcmVhdG9ySWQ6IHN0cmluZykgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAnZXZlbnRzJ10gYXMgY29uc3QsXG4gIHJld2FyZHM6IChjcmVhdG9ySWQ6IHN0cmluZykgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAncmV3YXJkcyddIGFzIGNvbnN0LFxuICBnYXRoZXJpbmdUeXBlczogKGNyZWF0b3JJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlsKGNyZWF0b3JJZCksICdnYXRoZXJpbmctdHlwZXMnXSBhcyBjb25zdCxcbiAgYXBwcm92ZWRHYXRoZXJpbmdUeXBlczogKGNyZWF0b3JJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlsKGNyZWF0b3JJZCksICdnYXRoZXJpbmctdHlwZXMnLCAnYXBwcm92ZWQnXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRvckZpbHRlcnMge1xuICBwYWdlPzogbnVtYmVyO1xuICBsaW1pdD86IG51bWJlcjtcbiAgc2VhcmNoPzogc3RyaW5nO1xuICBjaXR5SWQ/OiBzdHJpbmc7XG4gIGNhbkZhY2lsaXRhdGU/OiBib29sZWFuO1xuICBjYW5DcmVhdGVDb250ZW50PzogYm9vbGVhbjtcbiAgaXNJbmZsdWVuY2VyPzogYm9vbGVhbjtcbiAgaXNWZXJpZmllZD86IGJvb2xlYW47XG4gIHNvcnRCeT86IHN0cmluZztcbiAgc29ydE9yZGVyPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkQ3JlYXRvcnNSZXNwb25zZSB7XG4gIGNyZWF0b3JzOiBDcmVhdG9yUmVzcG9uc2VbXTtcbiAgbWV0YToge1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgdG90YWxQYWdlczogbnVtYmVyO1xuICB9O1xufVxuXG4vLyBSZS1leHBvcnQgUmV3YXJkUmVzcG9uc2UgZnJvbSB0eXBlcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB0eXBlIHsgUmV3YXJkUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IHBhZ2luYXRlZCBsaXN0IG9mIGNyZWF0b3JzIHdpdGggb3B0aW9uYWwgZmlsdGVyc1xuICpcbiAqIEBwYXJhbSBmaWx0ZXJzIC0gUXVlcnkgcGFyYW1ldGVycyBmb3IgZmlsdGVyaW5nIGFuZCBwYWdpbmF0aW9uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvcnMoe1xuICogICBwYWdlOiAxLFxuICogICBsaW1pdDogMjAsXG4gKiAgIGNhbkZhY2lsaXRhdGU6IHRydWUsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvcnMoXG4gIGZpbHRlcnM/OiBDcmVhdG9yRmlsdGVycyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBhZ2luYXRlZENyZWF0b3JzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmxpc3QoZmlsdGVycyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkQ3JlYXRvcnNSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJy9hcGkvdjEvY3JlYXRvcnMnLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVycyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHNpbmdsZSBjcmVhdG9yIGJ5IElEXG4gKlxuICogQHBhcmFtIGlkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3IoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3IoXG4gIGlkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmRldGFpbChpZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8Q3JlYXRvclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWlkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIGNyZWF0b3IgYnkgdGhlaXIgc2x1Z1xuICpcbiAqIEBwYXJhbSBzbHVnIC0gQ3JlYXRvciBzbHVnXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckJ5U2x1Zygnam9obi1kb2UnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckJ5U2x1ZyhcbiAgc2x1Zzogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5zbHVnKHNsdWcpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvc2x1Zy8ke3NsdWd9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc2x1ZyxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBjcmVhdG9yIHByb2ZpbGUgYnkgdXNlciBJRFxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBVc2VyIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckJ5VXNlcigndXNlci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckJ5VXNlcihcbiAgdXNlcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yUmVzcG9uc2UgfCBudWxsPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5ieVVzZXIodXNlcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxDcmVhdG9yUmVzcG9uc2UgfCBudWxsPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy91c2VyLyR7dXNlcklkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXVzZXJJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdXNlcidzIGNyZWF0b3IgcHJvZmlsZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VNeUNyZWF0b3JQcm9maWxlKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU15Q3JlYXRvclByb2ZpbGUoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yUmVzcG9uc2UgfCBudWxsPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5tZSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JSZXNwb25zZSB8IG51bGw+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL2NyZWF0b3JzL21lJyk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBjcmVhdG9yIGF2YWlsYWJpbGl0eSBzbG90c1xuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckF2YWlsYWJpbGl0eSgnY3JlYXRvci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckF2YWlsYWJpbGl0eShcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuYXZhaWxhYmlsaXR5KGNyZWF0b3JJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8Q3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9hdmFpbGFiaWxpdHlgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgY3JlYXRvcidzIHB1Ymxpc2hlZCBsaWJyYXJ5IGNvbnRlbnRcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JDb250ZW50KCdjcmVhdG9yLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yQ29udGVudChcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxMaWJyYXJ5Q29udGVudFJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmNvbnRlbnQoY3JlYXRvcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxMaWJyYXJ5Q29udGVudFJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb250ZW50YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhbGwgb2YgYSBjcmVhdG9yJ3MgY29udGVudCBpbmNsdWRpbmcgdW5wdWJsaXNoZWQgKG93bmVyIG9ubHkpXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEZvciBjcmVhdG9yIGRhc2hib2FyZCAtIHNob3dzIGFsbCBjb250ZW50IHN0YXR1c2VzXG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckFsbENvbnRlbnQoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JBbGxDb250ZW50KFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPExpYnJhcnlDb250ZW50UmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuYWxsQ29udGVudChjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPExpYnJhcnlDb250ZW50UmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2NvbnRlbnQvYWxsYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIGNyZWF0b3IncyB1cGNvbWluZyBldmVudHNcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIHVwY29taW5nIC0gV2hldGhlciB0byBmaWx0ZXIgdG8gdXBjb21pbmcgZXZlbnRzIG9ubHkgKGRlZmF1bHQ6IHRydWUpXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckV2ZW50cygnY3JlYXRvci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckV2ZW50cyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIHVwY29taW5nID0gdHJ1ZSxcbiAgaW5jbHVkZVVucHVibGlzaGVkID0gZmFsc2UsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxFdmVudFJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFsuLi5jcmVhdG9yS2V5cy5ldmVudHMoY3JlYXRvcklkKSwgeyB1cGNvbWluZywgaW5jbHVkZVVucHVibGlzaGVkIH1dLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEV2ZW50UmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2V2ZW50c2AsIHtcbiAgICAgICAgcGFyYW1zOiB7IHVwY29taW5nLCBpbmNsdWRlVW5wdWJsaXNoZWQgfSxcbiAgICAgIH0pO1xuICAgICAgLy8gSGFuZGxlIHdyYXBwZWQgcmVzcG9uc2Uge2RhdGE6IFsuLi5dLCBtZXRhOiB7Li4ufX0gb3IgZGlyZWN0IGFycmF5XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhIHx8IFtdO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgY3JlYXRvcidzIHJld2FyZHNcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JSZXdhcmRzKCdjcmVhdG9yLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yUmV3YXJkcyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxSZXdhcmRSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5yZXdhcmRzKGNyZWF0b3JJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UmV3YXJkUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Jld2FyZHNgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdBVEhFUklORyBUWVBFIFFVRVJJRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgYWxsIGdhdGhlcmluZyB0eXBlcyBmb3IgYSBjcmVhdG9yIChpbmNsdWRpbmcgdW5hcHByb3ZlZCBBSSBzdWdnZXN0aW9ucylcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JHYXRoZXJpbmdUeXBlcygnY3JlYXRvci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckdhdGhlcmluZ1R5cGVzKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdhdGhlcmluZ1R5cGVSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5nYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEdhdGhlcmluZ1R5cGVSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhcHByb3ZlZCBnYXRoZXJpbmcgdHlwZXMgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlQ3JlYXRvckFwcHJvdmVkR2F0aGVyaW5nVHlwZXMoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JBcHByb3ZlZEdhdGhlcmluZ1R5cGVzKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEdhdGhlcmluZ1R5cGVSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hcHByb3ZlZEdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8R2F0aGVyaW5nVHlwZVJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9nYXRoZXJpbmctdHlwZXMvYXBwcm92ZWRgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvY3JlYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0ZBLGtDQWVDO0FBYUQsZ0NBY0M7QUFhRCw0Q0FjQztBQWFELDRDQWNDO0FBWUQsa0RBWUM7QUFhRCx3REFjQztBQTZCRCw0REFpQkM7QUFLRCw0REFpQkM7QUFhRCw4Q0FjQztBQWNELG9EQWNDO0FBY0QsNENBbUJDO0FBYUQsOENBY0M7QUFpQkQsNERBY0M7QUFhRCw0RUFjQztBQXhkRCx1REFBa0U7QUFDbEUsc0NBQXlDO0FBVXpDLCtFQUErRTtBQUMvRSxvQkFBb0I7QUFDcEIsK0VBQStFO0FBRWxFLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBVTtJQUMxQixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBVTtJQUNsRCxJQUFJLEVBQUUsQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQVU7SUFDOUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQVU7SUFDdEQsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQVU7SUFDL0QsSUFBSSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBVTtJQUNuRSxNQUFNLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFB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d0JBQXdCLENBQ3RDLFNBQWlCLEVBQ2pCLE9BQWdGO0lBRWhGLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLG1CQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxPQUFPLEVBQUUsS0FBSyxJQUFzQyxFQUFFO1lBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsU0FBUyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTO1FBQ3BCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQzlDLFNBQWlCLEVBQ2pCLE9BQWdGO0lBRWhGLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLG1CQUFXLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxLQUFLLElBQXNDLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixTQUFTLDJCQUEyQixDQUFDLENBQUM7WUFDNUYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVM7UUFDcEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgQ3JlYXRvclJlc3BvbnNlLFxuICBDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gIEV2ZW50UmVzcG9uc2UsXG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIFJld2FyZFJlc3BvbnNlLFxuICBHYXRoZXJpbmdUeXBlUmVzcG9uc2UsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZIEZBQ1RPUllcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IGNyZWF0b3JLZXlzID0ge1xuICBhbGw6IFsnY3JlYXRvcnMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5jcmVhdG9yS2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogQ3JlYXRvckZpbHRlcnMpID0+IFsuLi5jcmVhdG9yS2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLmNyZWF0b3JLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIHNsdWc6IChzbHVnOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5hbGwsICdzbHVnJywgc2x1Z10gYXMgY29uc3QsXG4gIGJ5VXNlcjogKHVzZXJJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuYWxsLCAndXNlcicsIHVzZXJJZF0gYXMgY29uc3QsXG4gIG1lOiAoKSA9PiBbLi4uY3JlYXRvcktleXMuYWxsLCAnbWUnXSBhcyBjb25zdCxcbiAgYXZhaWxhYmlsaXR5OiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ2F2YWlsYWJpbGl0eSddIGFzIGNvbnN0LFxuICBhdmFpbGFibGVEYXRlczogKGNyZWF0b3JJZDogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ2F2YWlsYWJsZS1kYXRlcycsIGZyb20sIHRvXSBhcyBjb25zdCxcbiAgYXZhaWxhYmxlU2xvdHM6IChjcmVhdG9ySWQ6IHN0cmluZywgZGF0ZTogc3RyaW5nLCBkdXJhdGlvbk1pbnV0ZXM6IG51bWJlcikgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAnYXZhaWxhYmxlLXNsb3RzJywgZGF0ZSwgZHVyYXRpb25NaW51dGVzXSBhcyBjb25zdCxcbiAgY29udGVudDogKGNyZWF0b3JJZDogc3RyaW5nKSA9PiBbLi4uY3JlYXRvcktleXMuZGV0YWlsKGNyZWF0b3JJZCksICdjb250ZW50J10gYXMgY29uc3QsXG4gIGFsbENvbnRlbnQ6IChjcmVhdG9ySWQ6IHN0cmluZykgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAnY29udGVudCcsICdhbGwnXSBhcyBjb25zdCxcbiAgZXZlbnRzOiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ2V2ZW50cyddIGFzIGNvbnN0LFxuICByZXdhcmRzOiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5jcmVhdG9yS2V5cy5kZXRhaWwoY3JlYXRvcklkKSwgJ3Jld2FyZHMnXSBhcyBjb25zdCxcbiAgZ2F0aGVyaW5nVHlwZXM6IChjcmVhdG9ySWQ6IHN0cmluZykgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAnZ2F0aGVyaW5nLXR5cGVzJ10gYXMgY29uc3QsXG4gIGFwcHJvdmVkR2F0aGVyaW5nVHlwZXM6IChjcmVhdG9ySWQ6IHN0cmluZykgPT4gWy4uLmNyZWF0b3JLZXlzLmRldGFpbChjcmVhdG9ySWQpLCAnZ2F0aGVyaW5nLXR5cGVzJywgJ2FwcHJvdmVkJ10gYXMgY29uc3QsXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0b3JGaWx0ZXJzIHtcbiAgcGFnZT86IG51bWJlcjtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHNlYXJjaD86IHN0cmluZztcbiAgY2l0eUlkPzogc3RyaW5nO1xuICBjYW5GYWNpbGl0YXRlPzogYm9vbGVhbjtcbiAgY2FuQ3JlYXRlQ29udGVudD86IGJvb2xlYW47XG4gIGlzSW5mbHVlbmNlcj86IGJvb2xlYW47XG4gIGlzVmVyaWZpZWQ/OiBib29sZWFuO1xuICBzb3J0Qnk/OiBzdHJpbmc7XG4gIHNvcnRPcmRlcj86ICdhc2MnIHwgJ2Rlc2MnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZENyZWF0b3JzUmVzcG9uc2Uge1xuICBjcmVhdG9yczogQ3JlYXRvclJlc3BvbnNlW107XG4gIG1ldGE6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgfTtcbn1cblxuLy8gUmUtZXhwb3J0IFJld2FyZFJlc3BvbnNlIGZyb20gdHlwZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgdHlwZSB7IFJld2FyZFJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBwYWdpbmF0ZWQgbGlzdCBvZiBjcmVhdG9ycyB3aXRoIG9wdGlvbmFsIGZpbHRlcnNcbiAqXG4gKiBAcGFyYW0gZmlsdGVycyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JzKHtcbiAqICAgcGFnZTogMSxcbiAqICAgbGltaXQ6IDIwLFxuICogICBjYW5GYWNpbGl0YXRlOiB0cnVlLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JzKFxuICBmaWx0ZXJzPzogQ3JlYXRvckZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRDcmVhdG9yc1Jlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5saXN0KGZpbHRlcnMpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBhZ2luYXRlZENyZWF0b3JzUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL2NyZWF0b3JzJywge1xuICAgICAgICBwYXJhbXM6IGZpbHRlcnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBzaW5nbGUgY3JlYXRvciBieSBJRFxuICpcbiAqIEBwYXJhbSBpZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yKCdjcmVhdG9yLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5kZXRhaWwoaWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtpZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFpZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBjcmVhdG9yIGJ5IHRoZWlyIHNsdWdcbiAqXG4gKiBAcGFyYW0gc2x1ZyAtIENyZWF0b3Igc2x1Z1xuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JCeVNsdWcoJ2pvaG4tZG9lJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JCeVNsdWcoXG4gIHNsdWc6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPENyZWF0b3JSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuc2x1ZyhzbHVnKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxDcmVhdG9yUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzL3NsdWcvJHtzbHVnfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNsdWcsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgY3JlYXRvciBwcm9maWxlIGJ5IHVzZXIgSURcbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVXNlciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JCeVVzZXIoJ3VzZXItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JCeVVzZXIoXG4gIHVzZXJJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlIHwgbnVsbD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuYnlVc2VyKHVzZXJJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8Q3JlYXRvclJlc3BvbnNlIHwgbnVsbD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvdXNlci8ke3VzZXJJZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISF1c2VySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IHVzZXIncyBjcmVhdG9yIHByb2ZpbGVcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlTXlDcmVhdG9yUHJvZmlsZSgpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNeUNyZWF0b3JQcm9maWxlKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlIHwgbnVsbD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMubWUoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxDcmVhdG9yUmVzcG9uc2UgfCBudWxsPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9jcmVhdG9ycy9tZScpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgY3JlYXRvciBhdmFpbGFiaWxpdHkgc2xvdHNcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JBdmFpbGFiaWxpdHkoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JBdmFpbGFiaWxpdHkoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJpbGl0eShjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JBdmFpbGFiaWxpdHlSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vYXZhaWxhYmlsaXR5YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBVkFJTEFCSUxJVFktQVdBUkUgU0NIRURVTElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZURhdGVFbnRyeSB7XG4gIGRhdGU6IHN0cmluZztcbiAgaGFzQXZhaWxhYmlsaXR5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZURhdGVzUmVzcG9uc2Uge1xuICBkYXRlczogQXZhaWxhYmxlRGF0ZUVudHJ5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXZhaWxhYmxlU2xvdEVudHJ5IHtcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZVNsb3RzUmVzcG9uc2Uge1xuICBkYXRlOiBzdHJpbmc7XG4gIHNsb3RzOiBBdmFpbGFibGVTbG90RW50cnlbXTtcbn1cblxuLyoqXG4gKiBHZXQgZGF0ZXMgd2l0aCBhdmFpbGFiaWxpdHkgZm9yIGEgY3JlYXRvciBpbiBhIGRhdGUgcmFuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JBdmFpbGFibGVEYXRlcyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIHBhcmFtczogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEF2YWlsYWJsZURhdGVzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJsZURhdGVzKGNyZWF0b3JJZCwgcGFyYW1zLmZyb20sIHBhcmFtcy50byksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8QXZhaWxhYmxlRGF0ZXNSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2F2YWlsYWJsZS1kYXRlc2AsIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkICYmICEhcGFyYW1zLmZyb20gJiYgISFwYXJhbXMudG8sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGF2YWlsYWJsZSB0aW1lIHNsb3RzIGZvciBhIGNyZWF0b3Igb24gYSBzcGVjaWZpYyBkYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yQXZhaWxhYmxlU2xvdHMoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBwYXJhbXM6IHsgZGF0ZTogc3RyaW5nOyBkdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXIgfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPEF2YWlsYWJsZVNsb3RzUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJsZVNsb3RzKGNyZWF0b3JJZCwgcGFyYW1zLmRhdGUsIHBhcmFtcy5kdXJhdGlvbk1pbnV0ZXMgfHwgNjApLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEF2YWlsYWJsZVNsb3RzUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9hdmFpbGFibGUtc2xvdHNgLCB7XG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWNyZWF0b3JJZCAmJiAhIXBhcmFtcy5kYXRlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIGNyZWF0b3IncyBwdWJsaXNoZWQgbGlicmFyeSBjb250ZW50XG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yQ29udGVudCgnY3JlYXRvci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvckNvbnRlbnQoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8TGlicmFyeUNvbnRlbnRSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5jb250ZW50KGNyZWF0b3JJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8TGlicmFyeUNvbnRlbnRSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29udGVudGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWNyZWF0b3JJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIG9mIGEgY3JlYXRvcidzIGNvbnRlbnQgaW5jbHVkaW5nIHVucHVibGlzaGVkIChvd25lciBvbmx5KVxuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAvLyBGb3IgY3JlYXRvciBkYXNoYm9hcmQgLSBzaG93cyBhbGwgY29udGVudCBzdGF0dXNlc1xuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JBbGxDb250ZW50KCdjcmVhdG9yLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yQWxsQ29udGVudChcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxMaWJyYXJ5Q29udGVudFJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFsbENvbnRlbnQoY3JlYXRvcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxMaWJyYXJ5Q29udGVudFJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb250ZW50L2FsbGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWNyZWF0b3JJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBjcmVhdG9yJ3MgdXBjb21pbmcgZXZlbnRzXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSB1cGNvbWluZyAtIFdoZXRoZXIgdG8gZmlsdGVyIHRvIHVwY29taW5nIGV2ZW50cyBvbmx5IChkZWZhdWx0OiB0cnVlKVxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JFdmVudHMoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JFdmVudHMoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICB1cGNvbWluZyA9IHRydWUsXG4gIGluY2x1ZGVVbnB1Ymxpc2hlZCA9IGZhbHNlLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8RXZlbnRSZXNwb25zZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbLi4uY3JlYXRvcktleXMuZXZlbnRzKGNyZWF0b3JJZCksIHsgdXBjb21pbmcsIGluY2x1ZGVVbnB1Ymxpc2hlZCB9XSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxFdmVudFJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9ldmVudHNgLCB7XG4gICAgICAgIHBhcmFtczogeyB1cGNvbWluZywgaW5jbHVkZVVucHVibGlzaGVkIH0sXG4gICAgICB9KTtcbiAgICAgIC8vIEhhbmRsZSB3cmFwcGVkIHJlc3BvbnNlIHtkYXRhOiBbLi4uXSwgbWV0YTogey4uLn19IG9yIGRpcmVjdCBhcnJheVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YSB8fCBbXTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIGNyZWF0b3IncyByZXdhcmRzXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yUmV3YXJkcygnY3JlYXRvci0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvclJld2FyZHMoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UmV3YXJkUmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMucmV3YXJkcyhjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFJld2FyZFJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9yZXdhcmRzYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHQVRIRVJJTkcgVFlQRSBRVUVSSUVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGFsbCBnYXRoZXJpbmcgdHlwZXMgZm9yIGEgY3JlYXRvciAoaW5jbHVkaW5nIHVuYXBwcm92ZWQgQUkgc3VnZ2VzdGlvbnMpXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yR2F0aGVyaW5nVHlwZXMoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JHYXRoZXJpbmdUeXBlcyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxHYXRoZXJpbmdUeXBlUmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuZ2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxHYXRoZXJpbmdUeXBlUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2dhdGhlcmluZy10eXBlc2ApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWNyZWF0b3JJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYXBwcm92ZWQgZ2F0aGVyaW5nIHR5cGVzIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0b3JBcHByb3ZlZEdhdGhlcmluZ1R5cGVzKCdjcmVhdG9yLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdG9yQXBwcm92ZWRHYXRoZXJpbmdUeXBlcyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxHYXRoZXJpbmdUeXBlUmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogY3JlYXRvcktleXMuYXBwcm92ZWRHYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPEdhdGhlcmluZ1R5cGVSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzL2FwcHJvdmVkYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
@@ -1,6 +1,9 @@
1
1
  import { UseQueryOptions } from '@tanstack/react-query';
2
- export type ProductType = 'SESSION_1ON1' | 'SESSION_GROUP' | 'PACKAGE' | 'WORKSHOP' | 'CONSULTATION';
3
- export type DeliveryMethod = 'VIDEO_CALL' | 'PHONE_CALL' | 'IN_PERSON' | 'HYBRID';
2
+ import type { components } from '@growsober/types';
3
+ export type CreateProductDto = components['schemas']['CreateProductDto'];
4
+ export type UpdateProductDto = components['schemas']['UpdateProductDto'];
5
+ export type ProductType = CreateProductDto['type'];
6
+ export type DeliveryMethod = CreateProductDto['deliveryMethod'];
4
7
  export type BookingStatus = 'PENDING' | 'CONFIRMED' | 'CANCELLED' | 'COMPLETED';
5
8
  export type PaymentStatus = 'PENDING' | 'PAID' | 'REFUNDED' | 'FAILED';
6
9
  export interface CreatorProductResponse {
@@ -10,6 +13,8 @@ export interface CreatorProductResponse {
10
13
  slug: string;
11
14
  description: string | null;
12
15
  imageUrl: string | null;
16
+ category: string | null;
17
+ tags: string[];
13
18
  type: ProductType;
14
19
  price: number;
15
20
  currency: string;
@@ -19,6 +24,8 @@ export interface CreatorProductResponse {
19
24
  locationDetails: string | null;
20
25
  isActive: boolean;
21
26
  isFeatured: boolean;
27
+ stripeProductId?: string | null;
28
+ stripePriceId?: string | null;
22
29
  createdAt: string;
23
30
  updatedAt: string;
24
31
  creator?: {
@@ -91,95 +98,10 @@ export declare const productKeys: {
91
98
  creatorBookings: (creatorId: string) => readonly ["products", "bookings", "creator", string];
92
99
  bookingDetail: (bookingId: string) => readonly ["products", "bookings", "detail", string];
93
100
  };
94
- /**
95
- * Get paginated list of all active products
96
- *
97
- * @param filters - Query parameters for filtering and pagination
98
- * @param options - TanStack Query options
99
- *
100
- * @example
101
- * ```tsx
102
- * const { data, isLoading } = useProducts({
103
- * page: 1,
104
- * limit: 20,
105
- * type: 'SESSION_1ON1',
106
- * });
107
- * ```
108
- */
109
101
  export declare function useProducts(filters?: ProductFilters, options?: Omit<UseQueryOptions<PaginatedProductsResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedProductsResponse, Error>;
110
- /**
111
- * Get a single product by ID
112
- *
113
- * @param id - Product ID
114
- * @param options - TanStack Query options
115
- *
116
- * @example
117
- * ```tsx
118
- * const { data, isLoading } = useProduct('product-123');
119
- * ```
120
- */
121
102
  export declare function useProduct(id: string, options?: Omit<UseQueryOptions<CreatorProductResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<CreatorProductResponse, Error>;
122
- /**
123
- * Get a product by its slug
124
- *
125
- * @param slug - Product slug
126
- * @param options - TanStack Query options
127
- *
128
- * @example
129
- * ```tsx
130
- * const { data, isLoading } = useProductBySlug('1-on-1-coaching-abc123');
131
- * ```
132
- */
133
103
  export declare function useProductBySlug(slug: string, options?: Omit<UseQueryOptions<CreatorProductResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<CreatorProductResponse, Error>;
134
- /**
135
- * Get products for a specific creator
136
- *
137
- * @param creatorId - Creator ID
138
- * @param filters - Query parameters for filtering
139
- * @param options - TanStack Query options
140
- *
141
- * @example
142
- * ```tsx
143
- * const { data, isLoading } = useCreatorProducts('creator-123', {
144
- * type: 'SESSION_1ON1',
145
- * isActive: true,
146
- * });
147
- * ```
148
- */
149
104
  export declare function useCreatorProducts(creatorId: string, filters?: ProductFilters, options?: Omit<UseQueryOptions<PaginatedProductsResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<PaginatedProductsResponse, Error>;
150
- /**
151
- * Get current user's product bookings
152
- *
153
- * @param options - TanStack Query options
154
- *
155
- * @example
156
- * ```tsx
157
- * const { data, isLoading } = useMyProductBookings();
158
- * ```
159
- */
160
105
  export declare function useMyProductBookings(options?: Omit<UseQueryOptions<ProductBookingResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<ProductBookingResponse[], Error>;
161
- /**
162
- * Get a single product booking by ID
163
- *
164
- * @param bookingId - Booking ID
165
- * @param options - TanStack Query options
166
- *
167
- * @example
168
- * ```tsx
169
- * const { data, isLoading } = useProductBooking('booking-123');
170
- * ```
171
- */
172
106
  export declare function useProductBooking(bookingId: string, options?: Omit<UseQueryOptions<ProductBookingResponse>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<ProductBookingResponse, Error>;
173
- /**
174
- * Get bookings for a creator's products (creator dashboard)
175
- *
176
- * @param creatorId - Creator ID
177
- * @param options - TanStack Query options
178
- *
179
- * @example
180
- * ```tsx
181
- * // For creator dashboard - see all bookings for their products
182
- * const { data, isLoading } = useCreatorBookings('creator-123');
183
- * ```
184
- */
185
107
  export declare function useCreatorBookings(creatorId: string, options?: Omit<UseQueryOptions<ProductBookingResponse[]>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<ProductBookingResponse[], Error>;
@@ -29,21 +29,6 @@ exports.productKeys = {
29
29
  // ============================================================================
30
30
  // QUERY HOOKS
31
31
  // ============================================================================
32
- /**
33
- * Get paginated list of all active products
34
- *
35
- * @param filters - Query parameters for filtering and pagination
36
- * @param options - TanStack Query options
37
- *
38
- * @example
39
- * ```tsx
40
- * const { data, isLoading } = useProducts({
41
- * page: 1,
42
- * limit: 20,
43
- * type: 'SESSION_1ON1',
44
- * });
45
- * ```
46
- */
47
32
  function useProducts(filters, options) {
48
33
  return (0, react_query_1.useQuery)({
49
34
  queryKey: exports.productKeys.list(filters),
@@ -57,17 +42,6 @@ function useProducts(filters, options) {
57
42
  ...options,
58
43
  });
59
44
  }
60
- /**
61
- * Get a single product by ID
62
- *
63
- * @param id - Product ID
64
- * @param options - TanStack Query options
65
- *
66
- * @example
67
- * ```tsx
68
- * const { data, isLoading } = useProduct('product-123');
69
- * ```
70
- */
71
45
  function useProduct(id, options) {
72
46
  return (0, react_query_1.useQuery)({
73
47
  queryKey: exports.productKeys.detail(id),
@@ -80,17 +54,6 @@ function useProduct(id, options) {
80
54
  ...options,
81
55
  });
82
56
  }
83
- /**
84
- * Get a product by its slug
85
- *
86
- * @param slug - Product slug
87
- * @param options - TanStack Query options
88
- *
89
- * @example
90
- * ```tsx
91
- * const { data, isLoading } = useProductBySlug('1-on-1-coaching-abc123');
92
- * ```
93
- */
94
57
  function useProductBySlug(slug, options) {
95
58
  return (0, react_query_1.useQuery)({
96
59
  queryKey: exports.productKeys.slug(slug),
@@ -103,21 +66,6 @@ function useProductBySlug(slug, options) {
103
66
  ...options,
104
67
  });
105
68
  }
106
- /**
107
- * Get products for a specific creator
108
- *
109
- * @param creatorId - Creator ID
110
- * @param filters - Query parameters for filtering
111
- * @param options - TanStack Query options
112
- *
113
- * @example
114
- * ```tsx
115
- * const { data, isLoading } = useCreatorProducts('creator-123', {
116
- * type: 'SESSION_1ON1',
117
- * isActive: true,
118
- * });
119
- * ```
120
- */
121
69
  function useCreatorProducts(creatorId, filters, options) {
122
70
  return (0, react_query_1.useQuery)({
123
71
  queryKey: exports.productKeys.byCreator(creatorId, filters),
@@ -132,16 +80,6 @@ function useCreatorProducts(creatorId, filters, options) {
132
80
  ...options,
133
81
  });
134
82
  }
135
- /**
136
- * Get current user's product bookings
137
- *
138
- * @param options - TanStack Query options
139
- *
140
- * @example
141
- * ```tsx
142
- * const { data, isLoading } = useMyProductBookings();
143
- * ```
144
- */
145
83
  function useMyProductBookings(options) {
146
84
  return (0, react_query_1.useQuery)({
147
85
  queryKey: exports.productKeys.myBookings(),
@@ -153,17 +91,6 @@ function useMyProductBookings(options) {
153
91
  ...options,
154
92
  });
155
93
  }
156
- /**
157
- * Get a single product booking by ID
158
- *
159
- * @param bookingId - Booking ID
160
- * @param options - TanStack Query options
161
- *
162
- * @example
163
- * ```tsx
164
- * const { data, isLoading } = useProductBooking('booking-123');
165
- * ```
166
- */
167
94
  function useProductBooking(bookingId, options) {
168
95
  return (0, react_query_1.useQuery)({
169
96
  queryKey: exports.productKeys.bookingDetail(bookingId),
@@ -176,18 +103,6 @@ function useProductBooking(bookingId, options) {
176
103
  ...options,
177
104
  });
178
105
  }
179
- /**
180
- * Get bookings for a creator's products (creator dashboard)
181
- *
182
- * @param creatorId - Creator ID
183
- * @param options - TanStack Query options
184
- *
185
- * @example
186
- * ```tsx
187
- * // For creator dashboard - see all bookings for their products
188
- * const { data, isLoading } = useCreatorBookings('creator-123');
189
- * ```
190
- */
191
106
  function useCreatorBookings(creatorId, options) {
192
107
  return (0, react_query_1.useQuery)({
193
108
  queryKey: exports.productKeys.creatorBookings(creatorId),
@@ -200,4 +115,4 @@ function useCreatorBookings(creatorId, options) {
200
115
  ...options,
201
116
  });
202
117
  }
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUlBLGtDQWVDO0FBYUQsZ0NBY0M7QUFhRCw0Q0FjQztBQWlCRCxnREFpQkM7QUFZRCxvREFZQztBQWFELDhDQWNDO0FBY0QsZ0RBY0M7QUF2VEQsdURBQWtFO0FBQ2xFLHNDQUF5QztBQTBGekMsK0VBQStFO0FBQy9FLG9CQUFvQjtBQUNwQiwrRUFBK0U7QUFFbEUsUUFBQSxXQUFXLEdBQUc7SUFDekIsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFVO0lBQzFCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFVO0lBQ2xELElBQUksRUFBRSxDQUFDLE9BQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBVTtJQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBVTtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBVTtJQUMvRCxJQUFJLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFVO0lBQ25FLFNBQVMsRUFBRSxDQUFDLFNBQWlCLEVBQUUsT0FBd0IsRUFBRSxFQUFFLENBQ3pELENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVTtJQUM5RCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENB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O0dBV0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsU0FBaUIsRUFDakIsT0FBaUY7SUFFakYsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsbUJBQVcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxLQUFLLElBQXVDLEVBQUU7WUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLG9CQUFvQixTQUFTLG9CQUFvQixDQUFDLENBQUM7WUFDckYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVM7UUFDcEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgUHJvZHVjdFR5cGUgPSAnU0VTU0lPTl8xT04xJyB8ICdTRVNTSU9OX0dST1VQJyB8ICdQQUNLQUdFJyB8ICdXT1JLU0hPUCcgfCAnQ09OU1VMVEFUSU9OJztcbmV4cG9ydCB0eXBlIERlbGl2ZXJ5TWV0aG9kID0gJ1ZJREVPX0NBTEwnIHwgJ1BIT05FX0NBTEwnIHwgJ0lOX1BFUlNPTicgfCAnSFlCUklEJztcbmV4cG9ydCB0eXBlIEJvb2tpbmdTdGF0dXMgPSAnUEVORElORycgfCAnQ09ORklSTUVEJyB8ICdDQU5DRUxMRUQnIHwgJ0NPTVBMRVRFRCc7XG5leHBvcnQgdHlwZSBQYXltZW50U3RhdHVzID0gJ1BFTkRJTkcnIHwgJ1BBSUQnIHwgJ1JFRlVOREVEJyB8ICdGQUlMRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0b3JQcm9kdWN0UmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc2x1Zzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgaW1hZ2VVcmw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFByb2R1Y3RUeXBlO1xuICBwcmljZTogbnVtYmVyO1xuICBjdXJyZW5jeTogc3RyaW5nO1xuICBkdXJhdGlvbk1pbnV0ZXM6IG51bWJlcjtcbiAgbWF4UGFydGljaXBhbnRzOiBudW1iZXI7XG4gIGRlbGl2ZXJ5TWV0aG9kOiBEZWxpdmVyeU1ldGhvZDtcbiAgbG9jYXRpb25EZXRhaWxzOiBzdHJpbmcgfCBudWxsO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgaXNGZWF0dXJlZDogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBjcmVhdG9yPzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gICAgYXZhdGFyVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIHNwZWNpYWx0aWVzPzogc3RyaW5nW107XG4gICAgY2VydGlmaWNhdGlvbnM/OiBzdHJpbmdbXTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvZHVjdElkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBzY2hlZHVsZWRBdDogc3RyaW5nO1xuICB0aW1lem9uZTogc3RyaW5nO1xuICBzdGF0dXM6IEJvb2tpbmdTdGF0dXM7XG4gIHBheW1lbnRTdGF0dXM6IFBheW1lbnRTdGF0dXMgfCBudWxsO1xuICBzdHJpcGVQYXltZW50SW50ZW50SWQ6IHN0cmluZyB8IG51bGw7XG4gIGFtb3VudFBhaWQ6IG51bWJlciB8IG51bGw7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG4gIGNsaWVudE5vdGVzOiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdG9yTm90ZXM6IHN0cmluZyB8IG51bGw7XG4gIG1lZXRpbmdMaW5rOiBzdHJpbmcgfCBudWxsO1xuICBpc0NvbXBsZXRlZDogYm9vbGVhbjtcbiAgY29tcGxldGVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIGlzQ2FuY2VsbGVkOiBib29sZWFuO1xuICBjYW5jZWxsZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgY2FuY2VsbGVkQnk6IHN0cmluZyB8IG51bGw7XG4gIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICBwcm9kdWN0PzogQ3JlYXRvclByb2R1Y3RSZXNwb25zZTtcbiAgdXNlcj86IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcm9maWxlSW1hZ2U6IHN0cmluZyB8IG51bGw7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0RmlsdGVycyB7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIGxpbWl0PzogbnVtYmVyO1xuICB0eXBlPzogUHJvZHVjdFR5cGU7XG4gIGRlbGl2ZXJ5TWV0aG9kPzogRGVsaXZlcnlNZXRob2Q7XG4gIG1pblByaWNlPzogbnVtYmVyO1xuICBtYXhQcmljZT86IG51bWJlcjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlZFByb2R1Y3RzUmVzcG9uc2Uge1xuICBwcm9kdWN0czogQ3JlYXRvclByb2R1Y3RSZXNwb25zZVtdO1xuICBtZXRhOiB7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBwYWdlOiBudW1iZXI7XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWSBGQUNUT1JZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBwcm9kdWN0S2V5cyA9IHtcbiAgYWxsOiBbJ3Byb2R1Y3RzJ10gYXMgY29uc3QsXG4gIGxpc3RzOiAoKSA9PiBbLi4ucHJvZHVjdEtleXMuYWxsLCAnbGlzdCddIGFzIGNvbnN0LFxuICBsaXN0OiAoZmlsdGVycz86IFByb2R1Y3RGaWx0ZXJzKSA9PiBbLi4ucHJvZHVjdEtleXMubGlzdHMoKSwgZmlsdGVyc10gYXMgY29uc3QsXG4gIGRldGFpbHM6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdkZXRhaWwnXSBhcyBjb25zdCxcbiAgZGV0YWlsOiAoaWQ6IHN0cmluZykgPT4gWy4uLnByb2R1Y3RLZXlzLmRldGFpbHMoKSwgaWRdIGFzIGNvbnN0LFxuICBzbHVnOiAoc2x1Zzogc3RyaW5nKSA9PiBbLi4ucHJvZHVjdEtleXMuYWxsLCAnc2x1ZycsIHNsdWddIGFzIGNvbnN0LFxuICBieUNyZWF0b3I6IChjcmVhdG9ySWQ6IHN0cmluZywgZmlsdGVycz86IFByb2R1Y3RGaWx0ZXJzKSA9PlxuICAgIFsuLi5wcm9kdWN0S2V5cy5hbGwsICdjcmVhdG9yJywgY3JlYXRvcklkLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgYm9va2luZ3M6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdib29raW5ncyddIGFzIGNvbnN0LFxuICBteUJvb2tpbmdzOiAoKSA9PiBbLi4ucHJvZHVjdEtleXMuYm9va2luZ3MoKSwgJ21lJ10gYXMgY29uc3QsXG4gIGNyZWF0b3JCb29raW5nczogKGNyZWF0b3JJZDogc3RyaW5nKSA9PiBbLi4ucHJvZHVjdEtleXMuYm9va2luZ3MoKSwgJ2NyZWF0b3InLCBjcmVhdG9ySWRdIGFzIGNvbnN0LFxuICBib29raW5nRGV0YWlsOiAoYm9va2luZ0lkOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5ib29raW5ncygpLCAnZGV0YWlsJywgYm9va2luZ0lkXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IHBhZ2luYXRlZCBsaXN0IG9mIGFsbCBhY3RpdmUgcHJvZHVjdHNcbiAqXG4gKiBAcGFyYW0gZmlsdGVycyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZpbHRlcmluZyBhbmQgcGFnaW5hdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZVByb2R1Y3RzKHtcbiAqICAgcGFnZTogMSxcbiAqICAgbGltaXQ6IDIwLFxuICogICB0eXBlOiAnU0VTU0lPTl8xT04xJyxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9kdWN0cyhcbiAgZmlsdGVycz86IFByb2R1Y3RGaWx0ZXJzLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMubGlzdChmaWx0ZXJzKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQYWdpbmF0ZWRQcm9kdWN0c1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCgnL2FwaS92MS9wcm9kdWN0cycsIHtcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJzLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHNpbmdsZSBwcm9kdWN0IGJ5IElEXG4gKlxuICogQHBhcmFtIGlkIC0gUHJvZHVjdCBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZVByb2R1Y3QoJ3Byb2R1Y3QtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3QoXG4gIGlkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5kZXRhaWwoaWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JQcm9kdWN0UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL3Byb2R1Y3RzLyR7aWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhaWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgcHJvZHVjdCBieSBpdHMgc2x1Z1xuICpcbiAqIEBwYXJhbSBzbHVnIC0gUHJvZHVjdCBzbHVnXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlUHJvZHVjdEJ5U2x1ZygnMS1vbi0xLWNvYWNoaW5nLWFiYzEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9kdWN0QnlTbHVnKFxuICBzbHVnOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5zbHVnKHNsdWcpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPENyZWF0b3JQcm9kdWN0UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KGAvYXBpL3YxL3Byb2R1Y3RzL3NsdWcvJHtzbHVnfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNsdWcsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IHByb2R1Y3RzIGZvciBhIHNwZWNpZmljIGNyZWF0b3JcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIGZpbHRlcnMgLSBRdWVyeSBwYXJhbWV0ZXJzIGZvciBmaWx0ZXJpbmdcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yUHJvZHVjdHMoJ2NyZWF0b3ItMTIzJywge1xuICogICB0eXBlOiAnU0VTU0lPTl8xT04xJyxcbiAqICAgaXNBY3RpdmU6IHRydWUsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvclByb2R1Y3RzKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgZmlsdGVycz86IFByb2R1Y3RGaWx0ZXJzLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMuYnlDcmVhdG9yKGNyZWF0b3JJZCwgZmlsdGVycyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzYCwge1xuICAgICAgICBwYXJhbXM6IGZpbHRlcnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIHByb2R1Y3QgYm9va2luZ3NcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlTXlQcm9kdWN0Qm9va2luZ3MoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTXlQcm9kdWN0Qm9va2luZ3MoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLm15Qm9va2luZ3MoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL3VzZXJzL21lL3Byb2R1Y3QtYm9va2luZ3MnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgc2luZ2xlIHByb2R1Y3QgYm9va2luZyBieSBJRFxuICpcbiAqIEBwYXJhbSBib29raW5nSWQgLSBCb29raW5nIElEXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IGRhdGEsIGlzTG9hZGluZyB9ID0gdXNlUHJvZHVjdEJvb2tpbmcoJ2Jvb2tpbmctMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3RCb29raW5nKFxuICBib29raW5nSWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJvb2tpbmdEZXRhaWwoYm9va2luZ0lkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS91c2Vycy9tZS9wcm9kdWN0LWJvb2tpbmdzLyR7Ym9va2luZ0lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWJvb2tpbmdJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYm9va2luZ3MgZm9yIGEgY3JlYXRvcidzIHByb2R1Y3RzIChjcmVhdG9yIGRhc2hib2FyZClcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gRm9yIGNyZWF0b3IgZGFzaGJvYXJkIC0gc2VlIGFsbCBib29raW5ncyBmb3IgdGhlaXIgcHJvZHVjdHNcbiAqIGNvbnN0IHsgZGF0YSwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdG9yQm9va2luZ3MoJ2NyZWF0b3ItMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JCb29raW5ncyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmNyZWF0b3JCb29raW5ncyhjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzL2Jvb2tpbmdzYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEhBLGtDQWVDO0FBRUQsZ0NBY0M7QUFFRCw0Q0FjQztBQUVELGdEQWlCQztBQUVELG9EQVlDO0FBRUQsOENBY0M7QUFFRCxnREFjQztBQTFPRCx1REFBa0U7QUFDbEUsc0NBQXlDO0FBa0d6QywrRUFBK0U7QUFDL0Usb0JBQW9CO0FBQ3BCLCtFQUErRTtBQUVsRSxRQUFBLFdBQVcsR0FBRztJQUN6QixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQVU7SUFDMUIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVU7SUFDbEQsSUFBSSxFQUFFLENBQUMsT0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQzlFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFVO0lBQ3RELE1BQU0sRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFVO0lBQy9ELElBQUksRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQVU7SUFDbkUsU0FBUyxFQUFFLENBQUMsU0FBaUIsRUFBRSxPQUF3QixFQUFFLEVBQUUsQ0FDekQsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFVO0lBQzlELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FB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SUFBdUMsRUFBRTtZQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLFNBQVMsb0JBQW9CLENBQUMsQ0FBQztZQUNyRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUztRQUNwQixHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBjb21wb25lbnRzIH0gZnJvbSAnQGdyb3dzb2Jlci90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTIOKAlCBkZXJpdmVkIGZyb20gYXV0by1nZW5lcmF0ZWQgT3BlbkFQSSB0eXBlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSBDcmVhdGVQcm9kdWN0RHRvID0gY29tcG9uZW50c1snc2NoZW1hcyddWydDcmVhdGVQcm9kdWN0RHRvJ107XG5leHBvcnQgdHlwZSBVcGRhdGVQcm9kdWN0RHRvID0gY29tcG9uZW50c1snc2NoZW1hcyddWydVcGRhdGVQcm9kdWN0RHRvJ107XG5cbmV4cG9ydCB0eXBlIFByb2R1Y3RUeXBlID0gQ3JlYXRlUHJvZHVjdER0b1sndHlwZSddO1xuZXhwb3J0IHR5cGUgRGVsaXZlcnlNZXRob2QgPSBDcmVhdGVQcm9kdWN0RHRvWydkZWxpdmVyeU1ldGhvZCddO1xuZXhwb3J0IHR5cGUgQm9va2luZ1N0YXR1cyA9ICdQRU5ESU5HJyB8ICdDT05GSVJNRUQnIHwgJ0NBTkNFTExFRCcgfCAnQ09NUExFVEVEJztcbmV4cG9ydCB0eXBlIFBheW1lbnRTdGF0dXMgPSAnUEVORElORycgfCAnUEFJRCcgfCAnUkVGVU5ERUQnIHwgJ0ZBSUxFRCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRvclByb2R1Y3RSZXNwb25zZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNyZWF0b3JJZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzbHVnOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBpbWFnZVVybDogc3RyaW5nIHwgbnVsbDtcbiAgY2F0ZWdvcnk6IHN0cmluZyB8IG51bGw7XG4gIHRhZ3M6IHN0cmluZ1tdO1xuICB0eXBlOiBQcm9kdWN0VHlwZTtcbiAgcHJpY2U6IG51bWJlcjtcbiAgY3VycmVuY3k6IHN0cmluZztcbiAgZHVyYXRpb25NaW51dGVzOiBudW1iZXI7XG4gIG1heFBhcnRpY2lwYW50czogbnVtYmVyO1xuICBkZWxpdmVyeU1ldGhvZDogRGVsaXZlcnlNZXRob2Q7XG4gIGxvY2F0aW9uRGV0YWlsczogc3RyaW5nIHwgbnVsbDtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGlzRmVhdHVyZWQ6IGJvb2xlYW47XG4gIHN0cmlwZVByb2R1Y3RJZD86IHN0cmluZyB8IG51bGw7XG4gIHN0cmlwZVByaWNlSWQ/OiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIGNyZWF0b3I/OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIHNsdWc6IHN0cmluZztcbiAgICBhdmF0YXJVcmw6IHN0cmluZyB8IG51bGw7XG4gICAgc3BlY2lhbHRpZXM/OiBzdHJpbmdbXTtcbiAgICBjZXJ0aWZpY2F0aW9ucz86IHN0cmluZ1tdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RCb29raW5nUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBwcm9kdWN0SWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIHN0YXR1czogQm9va2luZ1N0YXR1cztcbiAgcGF5bWVudFN0YXR1czogUGF5bWVudFN0YXR1cyB8IG51bGw7XG4gIHN0cmlwZVBheW1lbnRJbnRlbnRJZDogc3RyaW5nIHwgbnVsbDtcbiAgYW1vdW50UGFpZDogbnVtYmVyIHwgbnVsbDtcbiAgY3VycmVuY3k6IHN0cmluZztcbiAgY2xpZW50Tm90ZXM6IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0b3JOb3Rlczogc3RyaW5nIHwgbnVsbDtcbiAgbWVldGluZ0xpbms6IHN0cmluZyB8IG51bGw7XG4gIGlzQ29tcGxldGVkOiBib29sZWFuO1xuICBjb21wbGV0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbiAgaXNDYW5jZWxsZWQ6IGJvb2xlYW47XG4gIGNhbmNlbGxlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBjYW5jZWxsZWRCeTogc3RyaW5nIHwgbnVsbDtcbiAgY2FuY2VsbGF0aW9uUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIHByb2R1Y3Q/OiBDcmVhdG9yUHJvZHVjdFJlc3BvbnNlO1xuICB1c2VyPzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHByb2ZpbGVJbWFnZTogc3RyaW5nIHwgbnVsbDtcbiAgICBlbWFpbDogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RGaWx0ZXJzIHtcbiAgcGFnZT86IG51bWJlcjtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHR5cGU/OiBQcm9kdWN0VHlwZTtcbiAgZGVsaXZlcnlNZXRob2Q/OiBEZWxpdmVyeU1ldGhvZDtcbiAgbWluUHJpY2U/OiBudW1iZXI7XG4gIG1heFByaWNlPzogbnVtYmVyO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZSB7XG4gIHByb2R1Y3RzOiBDcmVhdG9yUHJvZHVjdFJlc3BvbnNlW107XG4gIG1ldGE6IHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIHBhZ2U6IG51bWJlcjtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZIEZBQ1RPUllcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IHByb2R1Y3RLZXlzID0ge1xuICBhbGw6IFsncHJvZHVjdHMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogUHJvZHVjdEZpbHRlcnMpID0+IFsuLi5wcm9kdWN0S2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLnByb2R1Y3RLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4ucHJvZHVjdEtleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIHNsdWc6IChzbHVnOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdzbHVnJywgc2x1Z10gYXMgY29uc3QsXG4gIGJ5Q3JlYXRvcjogKGNyZWF0b3JJZDogc3RyaW5nLCBmaWx0ZXJzPzogUHJvZHVjdEZpbHRlcnMpID0+XG4gICAgWy4uLnByb2R1Y3RLZXlzLmFsbCwgJ2NyZWF0b3InLCBjcmVhdG9ySWQsIGZpbHRlcnNdIGFzIGNvbnN0LFxuICBib29raW5nczogKCkgPT4gWy4uLnByb2R1Y3RLZXlzLmFsbCwgJ2Jvb2tpbmdzJ10gYXMgY29uc3QsXG4gIG15Qm9va2luZ3M6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5ib29raW5ncygpLCAnbWUnXSBhcyBjb25zdCxcbiAgY3JlYXRvckJvb2tpbmdzOiAoY3JlYXRvcklkOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5ib29raW5ncygpLCAnY3JlYXRvcicsIGNyZWF0b3JJZF0gYXMgY29uc3QsXG4gIGJvb2tpbmdEZXRhaWw6IChib29raW5nSWQ6IHN0cmluZykgPT4gWy4uLnByb2R1Y3RLZXlzLmJvb2tpbmdzKCksICdkZXRhaWwnLCBib29raW5nSWRdIGFzIGNvbnN0LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3RzKFxuICBmaWx0ZXJzPzogUHJvZHVjdEZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRQcm9kdWN0c1Jlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbikge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5saXN0KGZpbHRlcnMpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBhZ2luYXRlZFByb2R1Y3RzUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KCcvYXBpL3YxL3Byb2R1Y3RzJywge1xuICAgICAgICBwYXJhbXM6IGZpbHRlcnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VQcm9kdWN0KFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclByb2R1Y3RSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKGlkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9wcm9kdWN0cy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWlkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJvZHVjdEJ5U2x1ZyhcbiAgc2x1Zzogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8Q3JlYXRvclByb2R1Y3RSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMuc2x1ZyhzbHVnKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS9wcm9kdWN0cy9zbHVnLyR7c2x1Z31gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFzbHVnLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRvclByb2R1Y3RzKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgZmlsdGVycz86IFByb2R1Y3RGaWx0ZXJzLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMuYnlDcmVhdG9yKGNyZWF0b3JJZCwgZmlsdGVycyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkUHJvZHVjdHNSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzYCwge1xuICAgICAgICBwYXJhbXM6IGZpbHRlcnMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFjcmVhdG9ySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNeVByb2R1Y3RCb29raW5ncyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFByb2R1Y3RCb29raW5nUmVzcG9uc2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pIHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMubXlCb29raW5ncygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoJy9hcGkvdjEvdXNlcnMvbWUvcHJvZHVjdC1ib29raW5ncycpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3RCb29raW5nKFxuICBib29raW5nSWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJvb2tpbmdEZXRhaWwoYm9va2luZ0lkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldChgL2FwaS92MS91c2Vycy9tZS9wcm9kdWN0LWJvb2tpbmdzLyR7Ym9va2luZ0lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIWJvb2tpbmdJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0b3JCb29raW5ncyhcbiAgY3JlYXRvcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKSB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmNyZWF0b3JCb29raW5ncyhjcmVhdG9ySWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzL2Jvb2tpbmdzYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhY3JlYXRvcklkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growsober/sdk",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "description": "Shared TypeScript SDK for GrowSober API - TanStack Query hooks, API client, and utilities",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -50,7 +50,8 @@
50
50
  "zod": "^3.0.0"
51
51
  },
52
52
  "dependencies": {
53
- "@growsober/types": "^1.0.9"
53
+ "@growsober/sdk": "^1.0.22",
54
+ "@growsober/types": "^1.0.10"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@tanstack/react-query": "^5.90.16",