@discordeno/utils 21.0.0-next.5ebe549 → 21.0.0-next.60c8d3e

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.
@@ -1,16 +1,20 @@
1
1
  import { StickerFormatTypes } from '@discordeno/types';
2
2
  import { iconBigintToHash } from './hash.js';
3
3
  /** Help format an image url. */ export function formatImageUrl(url, size = 128, format) {
4
- return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'jpg')}?size=${size}`;
4
+ return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'webp')}?size=${size}`;
5
5
  }
6
6
  /**
7
7
  * Get the url for an emoji.
8
8
  *
9
9
  * @param emojiId The id of the emoji
10
10
  * @param animated Whether or not the emoji is animated
11
+ * @param format The format of the image, defaults to png
11
12
  * @returns string
12
- */ export function emojiUrl(emojiId, animated = false) {
13
- return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? 'gif' : 'png'}`;
13
+ *
14
+ * @remarks
15
+ * The animated parameter is used to specify the animated query parameter valid for webp images or to force the gif if the format is not set to webp.
16
+ */ export function emojiUrl(emojiId, animated = false, format = 'png') {
17
+ return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? format === 'webp' ? 'webp' : 'gif' : format}${animated && format === 'webp' ? '?animated=true' : ''}`;
14
18
  }
15
19
  /**
16
20
  * Builds a URL to a user's avatar stored in the Discord CDN.
@@ -186,4 +190,4 @@ export function avatarDecorationUrl(avatarDecoration) {
186
190
  return iconHash ? formatImageUrl(`https://cdn.discordapp.com/role-icons/${roleId}/${typeof iconHash === 'string' ? iconHash : iconBigintToHash(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
187
191
  }
188
192
 
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICdqcGcnKX0/c2l6ZT0ke3NpemV9YFxufVxuXG4vKipcbiAqIEdldCB0aGUgdXJsIGZvciBhbiBlbW9qaS5cbiAqXG4gKiBAcGFyYW0gZW1vamlJZCBUaGUgaWQgb2YgdGhlIGVtb2ppXG4gKiBAcGFyYW0gYW5pbWF0ZWQgV2hldGhlciBvciBub3QgdGhlIGVtb2ppIGlzIGFuaW1hdGVkXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppVXJsKGVtb2ppSWQ6IEJpZ1N0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1vamlzLyR7ZW1vamlJZH0uJHthbmltYXRlZCA/ICdnaWYnIDogJ3BuZyd9YFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBhdmF0YXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgLSBUaGUgdXNlcidzIGRpc2NyaW1pbmF0b3IuICg0LWRpZ2l0IHRhZyBhZnRlciB0aGUgaGFzaHRhZy4pXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZFxuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1iZWQvYXZhdGFycy8ke2Rpc2NyaW1pbmF0b3IgPT09ICcwJyA/IChCaWdJbnQodXNlcklkKSA+PiBCaWdJbnQoMjIpKSAlIEJpZ0ludCg2KSA6IE51bWJlcihkaXNjcmltaW5hdG9yKSAlIDV9LnBuZ2Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhckRlY29yYXRpb25VcmwoYXZhdGFyRGVjb3JhdGlvbjogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXItZGVjb3JhdGlvbi1wcmVzZXRzLyR7XG4gICAgdHlwZW9mIGF2YXRhckRlY29yYXRpb24gPT09ICdzdHJpbmcnID8gYXZhdGFyRGVjb3JhdGlvbiA6IGljb25CaWdpbnRUb0hhc2goYXZhdGFyRGVjb3JhdGlvbilcbiAgfS5wbmdgXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIG5vdCBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucz8uYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHt1c2VySWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBldmVudCBjb3ZlciBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEljb25VcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgaW1hZ2VIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaW1hZ2VIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zcGxhc2hlcy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgZGlzY292ZXJ5IHNwbGFzaCBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNwbGFzaCBvZi5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZGlzY292ZXJ5IHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9kaXNjb3Zlcnktc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudCBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsKFxuICBldmVudElkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM6IHtcbiAgICBjb3Zlcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuY292ZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGQtZXZlbnRzLyR7ZXZlbnRJZH0vJHt0eXBlb2Ygb3B0aW9ucy5jb3ZlciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmNvdmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmNvdmVyKX1gLFxuICAgICAgICBvcHRpb25zLnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgd2lkZ2V0IGltYWdlIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgd2lkZ2V0IGltYWdlIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lkZ2V0SW1hZ2VVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5KTogc3RyaW5nIHtcbiAgbGV0IHVybCA9IGBodHRwczovL2Rpc2NvcmRhcHAuY29tL2FwaS9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQucG5nYFxuXG4gIGlmIChvcHRpb25zPy5zdHlsZSkge1xuICAgIHVybCArPSBgP3N0eWxlPSR7b3B0aW9ucy5zdHlsZX1gXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQXZhdGFyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGF2YXRhcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYXZhdGFycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQmFubmVyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYmFubmVycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGljb24gb2YuXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkljb25VcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhbiBhcHBsaWNhdGlvbiBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGNvdmVyIG9mLlxuICogQHBhcmFtIGNvdmVySGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBjb3Zlci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Db3ZlclVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBjb3Zlckhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjb3Zlckhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgY292ZXJIYXNoID09PSAnc3RyaW5nJyA/IGNvdmVySGFzaCA6IGljb25CaWdpbnRUb0hhc2goY292ZXJIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gYXNzZXQgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBhc3NldCBvZi5cbiAqIEBwYXJhbSBhc3NldElkIC0gVGhlIGlkIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBhc3NldC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Bc3NldFVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBhc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBhc3NldElkID09PSAnc3RyaW5nJyA/IGFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGFzc2V0SWQpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgcGFjayBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYmFubmVyQXNzZXRJZCAtIFRoZSBJRCBvZiB0aGUgYmFubmVyIGFzc2V0IGZvciB0aGUgc3RpY2tlciBwYWNrLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyUGFja0Jhbm5lclVybChcbiAgYmFubmVyQXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGJhbm5lckFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWFzc2V0cy83MTA5ODI0MTQzMDE3OTAyMTYvc3RvcmUvJHtcbiAgICAgICAgICB0eXBlb2YgYmFubmVyQXNzZXRJZCA9PT0gJ3N0cmluZycgPyBiYW5uZXJBc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChiYW5uZXJBc3NldElkKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgc3RpY2tlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBzdGlja2VySWQgLSBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0aWNrZXJVcmwoXG4gIHN0aWNrZXJJZDogQmlnU3RyaW5nIHwgbnVtYmVyLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICAgIHR5cGU/OiBTdGlja2VyRm9ybWF0VHlwZXNcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3RpY2tlcklkKSByZXR1cm5cblxuICBjb25zdCB1cmwgPVxuICAgIG9wdGlvbnM/LnR5cGUgPT09IFN0aWNrZXJGb3JtYXRUeXBlcy5HaWZcbiAgICAgID8gYGh0dHBzOi8vbWVkaWEuZGlzY29yZGFwcC5uZXQvc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuXG4gIHJldHVybiBmb3JtYXRJbWFnZVVybCh1cmwsIG9wdGlvbnM/LnNpemUgPz8gMTI4LCBvcHRpb25zPy5mb3JtYXQpXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSB0ZWFtIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdGVhbUlkIC0gVGhlIElEIG9mIHRoZSB0ZWFtIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggb2YgdGhlIHRlYW0gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVhbUljb25VcmwoXG4gIHRlYW1JZDogQmlnU3RyaW5nLFxuICBpY29uSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGljb25IYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3RlYW0taWNvbnMvJHt0ZWFtSWR9L3N0b3JlLyR7dHlwZW9mIGljb25IYXNoID09PSAnc3RyaW5nJyA/IGljb25IYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpY29uSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgcm9sZSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSByb2xlIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVJY29uVXJsKFxuICByb2xlSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9yb2xlLWljb25zLyR7cm9sZUlkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJTdGlja2VyRm9ybWF0VHlwZXMiLCJpY29uQmlnaW50VG9IYXNoIiwiZm9ybWF0SW1hZ2VVcmwiLCJ1cmwiLCJzaXplIiwiZm9ybWF0IiwiaW5jbHVkZXMiLCJlbW9qaVVybCIsImVtb2ppSWQiLCJhbmltYXRlZCIsImF2YXRhclVybCIsInVzZXJJZCIsImRpc2NyaW1pbmF0b3IiLCJvcHRpb25zIiwiYXZhdGFyIiwiQmlnSW50IiwiTnVtYmVyIiwiYXZhdGFyRGVjb3JhdGlvblVybCIsImF2YXRhckRlY29yYXRpb24iLCJiYW5uZXJVcmwiLCJiYW5uZXIiLCJ1bmRlZmluZWQiLCJndWlsZEJhbm5lclVybCIsImd1aWxkSWQiLCJndWlsZEljb25VcmwiLCJpbWFnZUhhc2giLCJndWlsZFNwbGFzaFVybCIsImd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsIiwiZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsIiwiZXZlbnRJZCIsImNvdmVyIiwiZ2V0V2lkZ2V0SW1hZ2VVcmwiLCJzdHlsZSIsIm1lbWJlckF2YXRhclVybCIsIm1lbWJlckJhbm5lclVybCIsImFwcGxpY2F0aW9uSWNvblVybCIsImFwcGxpY2F0aW9uSWQiLCJpY29uSGFzaCIsImFwcGxpY2F0aW9uQ292ZXJVcmwiLCJjb3Zlckhhc2giLCJhcHBsaWNhdGlvbkFzc2V0VXJsIiwiYXNzZXRJZCIsInN0aWNrZXJQYWNrQmFubmVyVXJsIiwiYmFubmVyQXNzZXRJZCIsInN0aWNrZXJVcmwiLCJzdGlja2VySWQiLCJ0eXBlIiwiR2lmIiwidGVhbUljb25VcmwiLCJ0ZWFtSWQiLCJyb2xlSWNvblVybCIsInJvbGVJZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBMEZBLGtCQUFrQixRQUFRLG9CQUFtQjtBQUN2SSxTQUFTQyxnQkFBZ0IsUUFBUSxZQUFXO0FBRTVDLDhCQUE4QixHQUM5QixPQUFPLFNBQVNDLGVBQWVDLEdBQVcsRUFBRUMsT0FBa0IsR0FBRyxFQUFFQyxNQUFvQjtJQUNyRixPQUFPLEdBQUdGLElBQUksQ0FBQyxFQUFFRSxVQUFXRixDQUFBQSxJQUFJRyxRQUFRLENBQUMsU0FBUyxRQUFRLEtBQUksRUFBRyxNQUFNLEVBQUVGLE1BQU07QUFDakY7QUFFQTs7Ozs7O0NBTUMsR0FDRCxPQUFPLFNBQVNHLFNBQVNDLE9BQWtCLEVBQUVDLFdBQVcsS0FBSztJQUMzRCxPQUFPLENBQUMsa0NBQWtDLEVBQUVELFFBQVEsQ0FBQyxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUNuRjtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNDLFVBQ2RDLE1BQWlCLEVBQ2pCQyxhQUFxQixFQUNyQkMsT0FJQztJQUVELE9BQU9BLFNBQVNDLFNBQ1paLGVBQ0UsQ0FBQyxtQ0FBbUMsRUFBRVMsT0FBTyxDQUFDLEVBQUUsT0FBT0UsUUFBUUMsTUFBTSxLQUFLLFdBQVdELFFBQVFDLE1BQU0sR0FBR2IsaUJBQWlCWSxRQUFRQyxNQUFNLEdBQUcsRUFDeElELFNBQVNULFFBQVEsS0FDakJTLFNBQVNSLFVBRVgsQ0FBQyx5Q0FBeUMsRUFBRU8sa0JBQWtCLE1BQU0sQUFBQ0csQ0FBQUEsT0FBT0osV0FBV0ksT0FBTyxHQUFFLElBQUtBLE9BQU8sS0FBS0MsT0FBT0osaUJBQWlCLEVBQUUsSUFBSSxDQUFDO0FBQ3RKO0FBRUEsT0FBTyxTQUFTSyxvQkFBb0JDLGdCQUEyQjtJQUM3RCxPQUFPLENBQUMscURBQXFELEVBQzNELE9BQU9BLHFCQUFxQixXQUFXQSxtQkFBbUJqQixpQkFBaUJpQixrQkFDNUUsSUFBSSxDQUFDO0FBQ1I7QUFFQTs7Ozs7O0NBTUMsR0FDRCxPQUFPLFNBQVNDLFVBQ2RSLE1BQWlCLEVBQ2pCRSxPQUlDO0lBRUQsT0FBT0EsU0FBU08sU0FDWmxCLGVBQ0UsQ0FBQyxtQ0FBbUMsRUFBRVMsT0FBTyxDQUFDLEVBQUUsT0FBT0UsUUFBUU8sTUFBTSxLQUFLLFdBQVdQLFFBQVFPLE1BQU0sR0FBR25CLGlCQUFpQlksUUFBUU8sTUFBTSxHQUFHLEVBQ3hJUCxTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYZ0I7QUFDTjtBQUVBOzs7Ozs7Q0FNQyxHQUNELE9BQU8sU0FBU0MsZUFDZEMsT0FBa0IsRUFDbEJWLE9BSUM7SUFFRCxPQUFPQSxRQUFRTyxNQUFNLEdBQ2pCbEIsZUFDRSxDQUFDLG1DQUFtQyxFQUFFcUIsUUFBUSxDQUFDLEVBQUUsT0FBT1YsUUFBUU8sTUFBTSxLQUFLLFdBQVdQLFFBQVFPLE1BQU0sR0FBR25CLGlCQUFpQlksUUFBUU8sTUFBTSxHQUFHLEVBQ3pJUCxRQUFRVCxJQUFJLElBQUksS0FDaEJTLFFBQVFSLE1BQU0sSUFFaEJnQjtBQUNOO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU0csYUFDZEQsT0FBa0IsRUFDbEJFLFNBQWdDLEVBQ2hDWixPQUdDO0lBRUQsT0FBT1ksWUFDSHZCLGVBQ0UsQ0FBQyxpQ0FBaUMsRUFBRXFCLFFBQVEsQ0FBQyxFQUFFLE9BQU9FLGNBQWMsV0FBV0EsWUFBWXhCLGlCQUFpQndCLFlBQVksRUFDeEhaLFNBQVNULFFBQVEsS0FDakJTLFNBQVNSLFVBRVhnQjtBQUNOO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU0ssZUFDZEgsT0FBa0IsRUFDbEJFLFNBQWdDLEVBQ2hDWixPQUdDO0lBRUQsT0FBT1ksWUFDSHZCLGVBQ0UsQ0FBQyxvQ0FBb0MsRUFBRXFCLFFBQVEsQ0FBQyxFQUFFLE9BQU9FLGNBQWMsV0FBV0EsWUFBWXhCLGlCQUFpQndCLFlBQVksRUFDM0haLFNBQVNULFFBQVEsS0FDakJTLFNBQVNSLFVBRVhnQjtBQUNOO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU00sd0JBQ2RKLE9BQWtCLEVBQ2xCRSxTQUFnQyxFQUNoQ1osT0FHQztJQUVELE9BQU9ZLFlBQ0h2QixlQUNFLENBQUMsOENBQThDLEVBQUVxQixRQUFRLENBQUMsRUFBRSxPQUFPRSxjQUFjLFdBQVdBLFlBQVl4QixpQkFBaUJ3QixZQUFZLEVBQ3JJWixTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYZ0I7QUFDTjtBQUVBOzs7Ozs7Q0FNQyxHQUNELE9BQU8sU0FBU08sNEJBQ2RDLE9BQWtCLEVBQ2xCaEIsT0FJQztJQUVELE9BQU9BLFFBQVFpQixLQUFLLEdBQ2hCNUIsZUFDRSxDQUFDLHdDQUF3QyxFQUFFMkIsUUFBUSxDQUFDLEVBQUUsT0FBT2hCLFFBQVFpQixLQUFLLEtBQUssV0FBV2pCLFFBQVFpQixLQUFLLEdBQUc3QixpQkFBaUJZLFFBQVFpQixLQUFLLEdBQUcsRUFDM0lqQixRQUFRVCxJQUFJLElBQUksS0FDaEJTLFFBQVFSLE1BQU0sSUFFaEJnQjtBQUNOO0FBRUE7Ozs7OztDQU1DLEdBQ0QsT0FBTyxTQUFTVSxrQkFBa0JSLE9BQWtCLEVBQUVWLE9BQWtDO0lBQ3RGLElBQUlWLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRW9CLFFBQVEsV0FBVyxDQUFDO0lBRW5FLElBQUlWLFNBQVNtQixPQUFPO1FBQ2xCN0IsT0FBTyxDQUFDLE9BQU8sRUFBRVUsUUFBUW1CLEtBQUssRUFBRTtJQUNsQztJQUVBLE9BQU83QjtBQUNUO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBUzhCLGdCQUNkVixPQUFrQixFQUNsQlosTUFBaUIsRUFDakJFLE9BSUM7SUFFRCxPQUFPQSxTQUFTQyxTQUNaWixlQUNFLENBQUMsa0NBQWtDLEVBQUVxQixRQUFRLE9BQU8sRUFBRVosT0FBTyxTQUFTLEVBQ3BFLE9BQU9FLFFBQVFDLE1BQU0sS0FBSyxXQUFXRCxRQUFRQyxNQUFNLEdBQUdiLGlCQUFpQlksUUFBUUMsTUFBTSxHQUNyRixFQUNGRCxTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYZ0I7QUFDTjtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNhLGdCQUNkWCxPQUFrQixFQUNsQlosTUFBaUIsRUFDakJFLE9BSUM7SUFFRCxPQUFPQSxTQUFTTyxTQUNabEIsZUFDRSxDQUFDLGtDQUFrQyxFQUFFcUIsUUFBUSxPQUFPLEVBQUVaLE9BQU8sU0FBUyxFQUNwRSxPQUFPRSxRQUFRTyxNQUFNLEtBQUssV0FBV1AsUUFBUU8sTUFBTSxHQUFHbkIsaUJBQWlCWSxRQUFRTyxNQUFNLEdBQ3JGLEVBQ0ZQLFNBQVNULFFBQVEsS0FDakJTLFNBQVNSLFVBRVhnQjtBQUNOO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU2MsbUJBQ2RDLGFBQXdCLEVBQ3hCQyxRQUErQixFQUMvQnhCLE9BR0M7SUFFRCxPQUFPd0IsV0FDSG5DLGVBQ0UsQ0FBQyxxQ0FBcUMsRUFBRWtDLGNBQWMsQ0FBQyxFQUFFLE9BQU9DLGFBQWEsV0FBV0EsV0FBV3BDLGlCQUFpQm9DLFdBQVcsRUFDL0h4QixTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYZ0I7QUFDTjtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNpQixvQkFDZEYsYUFBd0IsRUFDeEJHLFNBQWdDLEVBQ2hDMUIsT0FHQztJQUVELE9BQU8wQixZQUNIckMsZUFDRSxDQUFDLHFDQUFxQyxFQUFFa0MsY0FBYyxDQUFDLEVBQUUsT0FBT0csY0FBYyxXQUFXQSxZQUFZdEMsaUJBQWlCc0MsWUFBWSxFQUNsSTFCLFNBQVNULFFBQVEsS0FDakJTLFNBQVNSLFVBRVhnQjtBQUNOO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBU21CLG9CQUNkSixhQUF3QixFQUN4QkssT0FBOEIsRUFDOUI1QixPQUdDO0lBRUQsT0FBTzRCLFVBQ0h2QyxlQUNFLENBQUMscUNBQXFDLEVBQUVrQyxjQUFjLENBQUMsRUFBRSxPQUFPSyxZQUFZLFdBQVdBLFVBQVV4QyxpQkFBaUJ3QyxVQUFVLEVBQzVINUIsU0FBU1QsUUFBUSxLQUNqQlMsU0FBU1IsVUFFWGdCO0FBQ047QUFFQTs7Ozs7O0NBTUMsR0FDRCxPQUFPLFNBQVNxQixxQkFDZEMsYUFBb0MsRUFDcEM5QixPQUdDO0lBRUQsT0FBTzhCLGdCQUNIekMsZUFDRSxDQUFDLCtEQUErRCxFQUM5RCxPQUFPeUMsa0JBQWtCLFdBQVdBLGdCQUFnQjFDLGlCQUFpQjBDLGdCQUNyRSxFQUNGOUIsU0FBU1QsUUFBUSxLQUNqQlMsU0FBU1IsVUFFWGdCO0FBQ047QUFFQTs7Ozs7O0NBTUMsR0FDRCxPQUFPLFNBQVN1QixXQUNkQyxTQUE2QixFQUM3QmhDLE9BSUM7SUFFRCxJQUFJLENBQUNnQyxXQUFXO0lBRWhCLE1BQU0xQyxNQUNKVSxTQUFTaUMsU0FBUzlDLG1CQUFtQitDLEdBQUcsR0FDcEMsQ0FBQyxzQ0FBc0MsRUFBRUYsV0FBVyxHQUNwRCxDQUFDLG9DQUFvQyxFQUFFQSxXQUFXO0lBRXhELE9BQU8zQyxlQUFlQyxLQUFLVSxTQUFTVCxRQUFRLEtBQUtTLFNBQVNSO0FBQzVEO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sU0FBUzJDLFlBQ2RDLE1BQWlCLEVBQ2pCWixRQUErQixFQUMvQnhCLE9BR0M7SUFFRCxPQUFPd0IsV0FDSG5DLGVBQ0UsQ0FBQyxzQ0FBc0MsRUFBRStDLE9BQU8sT0FBTyxFQUFFLE9BQU9aLGFBQWEsV0FBV0EsV0FBV3BDLGlCQUFpQm9DLFdBQVcsRUFDL0h4QixTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYZ0I7QUFDTjtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVM2QixZQUNkQyxNQUFpQixFQUNqQmQsUUFBK0IsRUFDL0J4QixPQUdDO0lBRUQsT0FBT3dCLFdBQ0huQyxlQUNFLENBQUMsc0NBQXNDLEVBQUVpRCxPQUFPLENBQUMsRUFBRSxPQUFPZCxhQUFhLFdBQVdBLFdBQVdwQyxpQkFBaUJvQyxXQUFXLEVBQ3pIeEIsU0FBU1QsUUFBUSxLQUNqQlMsU0FBU1IsVUFFWGdCO0FBQ04ifQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG4vKiogSGVscCBmb3JtYXQgYW4gaW1hZ2UgdXJsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEltYWdlVXJsKHVybDogc3RyaW5nLCBzaXplOiBJbWFnZVNpemUgPSAxMjgsIGZvcm1hdD86IEltYWdlRm9ybWF0KTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke3VybH0uJHtmb3JtYXQgPz8gKHVybC5pbmNsdWRlcygnL2FfJykgPyAnZ2lmJyA6ICd3ZWJwJyl9P3NpemU9JHtzaXplfWBcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHVybCBmb3IgYW4gZW1vamkuXG4gKlxuICogQHBhcmFtIGVtb2ppSWQgVGhlIGlkIG9mIHRoZSBlbW9qaVxuICogQHBhcmFtIGFuaW1hdGVkIFdoZXRoZXIgb3Igbm90IHRoZSBlbW9qaSBpcyBhbmltYXRlZFxuICogQHBhcmFtIGZvcm1hdCBUaGUgZm9ybWF0IG9mIHRoZSBpbWFnZSwgZGVmYXVsdHMgdG8gcG5nXG4gKiBAcmV0dXJucyBzdHJpbmdcbiAqXG4gKiBAcmVtYXJrc1xuICogVGhlIGFuaW1hdGVkIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGFuaW1hdGVkIHF1ZXJ5IHBhcmFtZXRlciB2YWxpZCBmb3Igd2VicCBpbWFnZXMgb3IgdG8gZm9yY2UgdGhlIGdpZiBpZiB0aGUgZm9ybWF0IGlzIG5vdCBzZXQgdG8gd2VicC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppVXJsKGVtb2ppSWQ6IEJpZ1N0cmluZywgYW5pbWF0ZWQgPSBmYWxzZSwgZm9ybWF0OiBJbWFnZUZvcm1hdCA9ICdwbmcnKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9lbW9qaXMvJHtlbW9qaUlkfS4ke2FuaW1hdGVkID8gKGZvcm1hdCA9PT0gJ3dlYnAnID8gJ3dlYnAnIDogJ2dpZicpIDogZm9ybWF0fSR7YW5pbWF0ZWQgJiYgZm9ybWF0ID09PSAnd2VicCcgPyAnP2FuaW1hdGVkPXRydWUnIDogJyd9YFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBhdmF0YXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdXNlcklkIC0gVGhlIElEIG9mIHRoZSB1c2VyIHRvIGdldCB0aGUgYXZhdGFyIG9mLlxuICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgLSBUaGUgdXNlcidzIGRpc2NyaW1pbmF0b3IuICg0LWRpZ2l0IHRhZyBhZnRlciB0aGUgaGFzaHRhZy4pXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIGRpc2NyaW1pbmF0b3I6IHN0cmluZyxcbiAgb3B0aW9ucz86IHtcbiAgICBhdmF0YXI6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZFxuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1iZWQvYXZhdGFycy8ke2Rpc2NyaW1pbmF0b3IgPT09ICcwJyA/IChCaWdJbnQodXNlcklkKSA+PiBCaWdJbnQoMjIpKSAlIEJpZ0ludCg2KSA6IE51bWJlcihkaXNjcmltaW5hdG9yKSAlIDV9LnBuZ2Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhckRlY29yYXRpb25VcmwoYXZhdGFyRGVjb3JhdGlvbjogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXItZGVjb3JhdGlvbi1wcmVzZXRzLyR7XG4gICAgdHlwZW9mIGF2YXRhckRlY29yYXRpb24gPT09ICdzdHJpbmcnID8gYXZhdGFyRGVjb3JhdGlvbiA6IGljb25CaWdpbnRUb0hhc2goYXZhdGFyRGVjb3JhdGlvbilcbiAgfS5wbmdgXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIG5vdCBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lclVybChcbiAgdXNlcklkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucz8uYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHt1c2VySWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChcbiAgZ3VpbGRJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zOiB7XG4gICAgYmFubmVyPzogQmlnU3RyaW5nXG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBldmVudCBjb3ZlciBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEljb25VcmwoXG4gIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgaW1hZ2VIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaW1hZ2VIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2ljb25zLyR7Z3VpbGRJZH0vJHt0eXBlb2YgaW1hZ2VIYXNoID09PSAnc3RyaW5nJyA/IGltYWdlSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaW1hZ2VIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBndWlsZCBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkU3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zcGxhc2hlcy8ke2d1aWxkSWR9LyR7dHlwZW9mIGltYWdlSGFzaCA9PT0gJ3N0cmluZycgPyBpbWFnZUhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGltYWdlSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgZ3VpbGQgZGlzY292ZXJ5IHNwbGFzaCBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNwbGFzaCBvZi5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgZGlzY292ZXJ5IHNwbGFzaCBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBndWlsZCBkb2VzIG5vdCBoYXZlIGEgc3BsYXNoIGltYWdlIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9kaXNjb3Zlcnktc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudCBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsKFxuICBldmVudElkOiBCaWdTdHJpbmcsXG4gIG9wdGlvbnM6IHtcbiAgICBjb3Zlcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuY292ZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGQtZXZlbnRzLyR7ZXZlbnRJZH0vJHt0eXBlb2Ygb3B0aW9ucy5jb3ZlciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmNvdmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmNvdmVyKX1gLFxuICAgICAgICBvcHRpb25zLnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgd2lkZ2V0IGltYWdlIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgd2lkZ2V0IGltYWdlIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lkZ2V0SW1hZ2VVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5KTogc3RyaW5nIHtcbiAgbGV0IHVybCA9IGBodHRwczovL2Rpc2NvcmRhcHAuY29tL2FwaS9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQucG5nYFxuXG4gIGlmIChvcHRpb25zPy5zdHlsZSkge1xuICAgIHVybCArPSBgP3N0eWxlPSR7b3B0aW9ucy5zdHlsZX1gXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQXZhdGFyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGF2YXRhcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYXZhdGFycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQmFubmVyVXJsKFxuICBndWlsZElkOiBCaWdTdHJpbmcsXG4gIHVzZXJJZDogQmlnU3RyaW5nLFxuICBvcHRpb25zPzoge1xuICAgIGJhbm5lcj86IEJpZ1N0cmluZ1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYmFubmVycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGljb24gb2YuXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkljb25VcmwoXG4gIGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhbiBhcHBsaWNhdGlvbiBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGNvdmVyIG9mLlxuICogQHBhcmFtIGNvdmVySGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBjb3Zlci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Db3ZlclVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBjb3Zlckhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBjb3Zlckhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWljb25zLyR7YXBwbGljYXRpb25JZH0vJHt0eXBlb2YgY292ZXJIYXNoID09PSAnc3RyaW5nJyA/IGNvdmVySGFzaCA6IGljb25CaWdpbnRUb0hhc2goY292ZXJIYXNoKX1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gYXNzZXQgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYXBwbGljYXRpb25JZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gdG8gZ2V0IHRoZSBhc3NldCBvZi5cbiAqIEBwYXJhbSBhc3NldElkIC0gVGhlIGlkIGlkZW50aWZ5aW5nIHRoZSBhcHBsaWNhdGlvbiBhc3NldC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbGljYXRpb25Bc3NldFVybChcbiAgYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLFxuICBhc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgc2l6ZT86IEltYWdlU2l6ZVxuICAgIGZvcm1hdD86IEltYWdlRm9ybWF0XG4gIH0sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBhc3NldElkID09PSAnc3RyaW5nJyA/IGFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGFzc2V0SWQpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgcGFjayBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYmFubmVyQXNzZXRJZCAtIFRoZSBJRCBvZiB0aGUgYmFubmVyIGFzc2V0IGZvciB0aGUgc3RpY2tlciBwYWNrLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyUGFja0Jhbm5lclVybChcbiAgYmFubmVyQXNzZXRJZDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGJhbm5lckFzc2V0SWRcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYXBwLWFzc2V0cy83MTA5ODI0MTQzMDE3OTAyMTYvc3RvcmUvJHtcbiAgICAgICAgICB0eXBlb2YgYmFubmVyQXNzZXRJZCA9PT0gJ3N0cmluZycgPyBiYW5uZXJBc3NldElkIDogaWNvbkJpZ2ludFRvSGFzaChiYW5uZXJBc3NldElkKVxuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgc3RpY2tlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBzdGlja2VySWQgLSBUaGUgSUQgb2YgdGhlIHN0aWNrZXIgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0aWNrZXJVcmwoXG4gIHN0aWNrZXJJZDogQmlnU3RyaW5nIHwgbnVtYmVyLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICAgIHR5cGU/OiBTdGlja2VyRm9ybWF0VHlwZXNcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc3RpY2tlcklkKSByZXR1cm5cblxuICBjb25zdCB1cmwgPVxuICAgIG9wdGlvbnM/LnR5cGUgPT09IFN0aWNrZXJGb3JtYXRUeXBlcy5HaWZcbiAgICAgID8gYGh0dHBzOi8vbWVkaWEuZGlzY29yZGFwcC5uZXQvc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuICAgICAgOiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3RpY2tlcnMvJHtzdGlja2VySWR9YFxuXG4gIHJldHVybiBmb3JtYXRJbWFnZVVybCh1cmwsIG9wdGlvbnM/LnNpemUgPz8gMTI4LCBvcHRpb25zPy5mb3JtYXQpXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSB0ZWFtIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gdGVhbUlkIC0gVGhlIElEIG9mIHRoZSB0ZWFtIHRvIGdldCB0aGUgaWNvbiBvZlxuICogQHBhcmFtIGljb25IYXNoIC0gVGhlIGhhc2ggb2YgdGhlIHRlYW0gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGVhbUljb25VcmwoXG4gIHRlYW1JZDogQmlnU3RyaW5nLFxuICBpY29uSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zPzoge1xuICAgIHNpemU/OiBJbWFnZVNpemVcbiAgICBmb3JtYXQ/OiBJbWFnZUZvcm1hdFxuICB9LFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGljb25IYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL3RlYW0taWNvbnMvJHt0ZWFtSWR9L3N0b3JlLyR7dHlwZW9mIGljb25IYXNoID09PSAnc3RyaW5nJyA/IGljb25IYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpY29uSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGEgcm9sZSBpY29uIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBpY29uSGFzaCAtIFRoZSBoYXNoIG9mIHRoZSByb2xlIGljb24uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvbGVJY29uVXJsKFxuICByb2xlSWQ6IEJpZ1N0cmluZyxcbiAgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucz86IHtcbiAgICBzaXplPzogSW1hZ2VTaXplXG4gICAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbiAgfSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9yb2xlLWljb25zLyR7cm9sZUlkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJTdGlja2VyRm9ybWF0VHlwZXMiLCJpY29uQmlnaW50VG9IYXNoIiwiZm9ybWF0SW1hZ2VVcmwiLCJ1cmwiLCJzaXplIiwiZm9ybWF0IiwiaW5jbHVkZXMiLCJlbW9qaVVybCIsImVtb2ppSWQiLCJhbmltYXRlZCIsImF2YXRhclVybCIsInVzZXJJZCIsImRpc2NyaW1pbmF0b3IiLCJvcHRpb25zIiwiYXZhdGFyIiwiQmlnSW50IiwiTnVtYmVyIiwiYXZhdGFyRGVjb3JhdGlvblVybCIsImF2YXRhckRlY29yYXRpb24iLCJiYW5uZXJVcmwiLCJiYW5uZXIiLCJ1bmRlZmluZWQiLCJndWlsZEJhbm5lclVybCIsImd1aWxkSWQiLCJndWlsZEljb25VcmwiLCJpbWFnZUhhc2giLCJndWlsZFNwbGFzaFVybCIsImd1aWxkRGlzY292ZXJ5U3BsYXNoVXJsIiwiZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsIiwiZXZlbnRJZCIsImNvdmVyIiwiZ2V0V2lkZ2V0SW1hZ2VVcmwiLCJzdHlsZSIsIm1lbWJlckF2YXRhclVybCIsIm1lbWJlckJhbm5lclVybCIsImFwcGxpY2F0aW9uSWNvblVybCIsImFwcGxpY2F0aW9uSWQiLCJpY29uSGFzaCIsImFwcGxpY2F0aW9uQ292ZXJVcmwiLCJjb3Zlckhhc2giLCJhcHBsaWNhdGlvbkFzc2V0VXJsIiwiYXNzZXRJZCIsInN0aWNrZXJQYWNrQmFubmVyVXJsIiwiYmFubmVyQXNzZXRJZCIsInN0aWNrZXJVcmwiLCJzdGlja2VySWQiLCJ0eXBlIiwiR2lmIiwidGVhbUljb25VcmwiLCJ0ZWFtSWQiLCJyb2xlSWNvblVybCIsInJvbGVJZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBMEZBLGtCQUFrQixRQUFRLG9CQUFtQjtBQUN2SSxTQUFTQyxnQkFBZ0IsUUFBUSxZQUFXO0FBRTVDLDhCQUE4QixHQUM5QixPQUFPLFNBQVNDLGVBQWVDLEdBQVcsRUFBRUMsT0FBa0IsR0FBRyxFQUFFQyxNQUFvQjtJQUNyRixPQUFPLEdBQUdGLElBQUksQ0FBQyxFQUFFRSxVQUFXRixDQUFBQSxJQUFJRyxRQUFRLENBQUMsU0FBUyxRQUFRLE1BQUssRUFBRyxNQUFNLEVBQUVGLE1BQU07QUFDbEY7QUFFQTs7Ozs7Ozs7OztDQVVDLEdBQ0QsT0FBTyxTQUFTRyxTQUFTQyxPQUFrQixFQUFFQyxXQUFXLEtBQUssRUFBRUosU0FBc0IsS0FBSztJQUN4RixPQUFPLENBQUMsa0NBQWtDLEVBQUVHLFFBQVEsQ0FBQyxFQUFFQyxXQUFZSixXQUFXLFNBQVMsU0FBUyxRQUFTQSxTQUFTSSxZQUFZSixXQUFXLFNBQVMsbUJBQW1CLElBQUk7QUFDM0s7QUFFQTs7Ozs7OztDQU9DLEdBQ0QsT0FBTyxTQUFTSyxVQUNkQyxNQUFpQixFQUNqQkMsYUFBcUIsRUFDckJDLE9BSUM7SUFFRCxPQUFPQSxTQUFTQyxTQUNaWixlQUNFLENBQUMsbUNBQW1DLEVBQUVTLE9BQU8sQ0FBQyxFQUFFLE9BQU9FLFFBQVFDLE1BQU0sS0FBSyxXQUFXRCxRQUFRQyxNQUFNLEdBQUdiLGlCQUFpQlksUUFBUUMsTUFBTSxHQUFHLEVBQ3hJRCxTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUixVQUVYLENBQUMseUNBQXlDLEVBQUVPLGtCQUFrQixNQUFNLEFB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
package/dist/esm/utils.js CHANGED
@@ -8,5 +8,14 @@
8
8
  /** TS save way to check if a property exists in an object */ export function hasProperty(obj, prop) {
9
9
  return obj.hasOwnProperty(prop);
10
10
  }
11
+ /** Convert `JSON.stringify`-unserializable record values for debugging purposes. */ export function jsonSafeReplacer(_key, value) {
12
+ switch(typeof value){
13
+ case 'bigint':
14
+ // Bigints are unserializable by `JSON.stringify`.
15
+ return String(value);
16
+ default:
17
+ return value;
18
+ }
19
+ }
11
20
 
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wZXJ0eTxUIGV4dGVuZHMge30sIFkgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IHN0cmluZz4ob2JqOiBULCBwcm9wOiBZKTogb2JqIGlzIFQgJiBSZWNvcmQ8WSwgdW5rbm93bj4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImhhc1Byb3BlcnR5Iiwib2JqIiwicHJvcCIsImhhc093blByb3BlcnR5Il0sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQsR0FDNUQsT0FBTyxlQUFlQSxNQUFNQyxFQUFVO0lBQ3BDLE9BQU8sSUFBSUMsUUFDVCxDQUFDQyxVQUNDQyxXQUFXO1lBQ1REO1FBQ0YsR0FBR0Y7QUFFVDtBQUVBLG9HQUFvRztBQUNwRyw0REFBNEQ7QUFDNUQsMkRBQTJELEdBQzNELE9BQU8sU0FBU0ksWUFBMERDLEdBQU0sRUFBRUMsSUFBTztJQUN2RixPQUFPRCxJQUFJRSxjQUFjLENBQUNEO0FBQzVCIn0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUGF1c2UgdGhlIGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlKTogTm9kZUpTLlRpbWVvdXQgPT5cbiAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgIH0sIG1zKSxcbiAgKVxufVxuXG4vLyBUeXBlc2NyaXB0IGlzIG5vdCBzbyBnb29kIGFzIHdlIGRldmVsb3BlcnMgc28gd2UgbmVlZCB0aGlzIGxpdHRsZSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGhlbHAgaXQgb3V0XG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZmV0dGJsb2cuZXUvdHlwZXNjcmlwdC1oYXNvd25wcm9wZXJ0eS9cbi8qKiBUUyBzYXZlIHdheSB0byBjaGVjayBpZiBhIHByb3BlcnR5IGV4aXN0cyBpbiBhbiBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQcm9wZXJ0eTxUIGV4dGVuZHMge30sIFkgZXh0ZW5kcyBQcm9wZXJ0eUtleSA9IHN0cmluZz4ob2JqOiBULCBwcm9wOiBZKTogb2JqIGlzIFQgJiBSZWNvcmQ8WSwgdW5rbm93bj4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KHByb3ApXG59XG5cbi8qKiBDb252ZXJ0IGBKU09OLnN0cmluZ2lmeWAtdW5zZXJpYWxpemFibGUgcmVjb3JkIHZhbHVlcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25TYWZlUmVwbGFjZXIoX2tleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ2JpZ2ludCc6XG4gICAgICAvLyBCaWdpbnRzIGFyZSB1bnNlcmlhbGl6YWJsZSBieSBgSlNPTi5zdHJpbmdpZnlgLlxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICBkZWZhdWx0OiAvLyBBbnkgb3RoZXIgdW5oYW5kbGVkIHR5cGUgdGhhdCBpc24ndCBzdXBwb3NlZCB0byByZXF1aXJlIGNvbnZlcnNpb24uXG4gICAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuIl0sIm5hbWVzIjpbImRlbGF5IiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJoYXNQcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsImpzb25TYWZlUmVwbGFjZXIiLCJfa2V5IiwidmFsdWUiLCJTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLDREQUE0RCxHQUM1RCxPQUFPLGVBQWVBLE1BQU1DLEVBQVU7SUFDcEMsT0FBTyxJQUFJQyxRQUNULENBQUNDLFVBQ0NDLFdBQVc7WUFDVEQ7UUFDRixHQUFHRjtBQUVUO0FBRUEsb0dBQW9HO0FBQ3BHLDREQUE0RDtBQUM1RCwyREFBMkQsR0FDM0QsT0FBTyxTQUFTSSxZQUEwREMsR0FBTSxFQUFFQyxJQUFPO0lBQ3ZGLE9BQU9ELElBQUlFLGNBQWMsQ0FBQ0Q7QUFDNUI7QUFFQSxrRkFBa0YsR0FDbEYsT0FBTyxTQUFTRSxpQkFBaUJDLElBQVksRUFBRUMsS0FBYztJQUMzRCxPQUFRLE9BQU9BO1FBQ2IsS0FBSztZQUNILGtEQUFrRDtZQUNsRCxPQUFPQyxPQUFPRDtRQUNoQjtZQUNFLE9BQU9BO0lBQ1g7QUFDRiJ9
@@ -6,9 +6,13 @@ export declare function formatImageUrl(url: string, size?: ImageSize, format?: I
6
6
  *
7
7
  * @param emojiId The id of the emoji
8
8
  * @param animated Whether or not the emoji is animated
9
+ * @param format The format of the image, defaults to png
9
10
  * @returns string
11
+ *
12
+ * @remarks
13
+ * The animated parameter is used to specify the animated query parameter valid for webp images or to force the gif if the format is not set to webp.
10
14
  */
11
- export declare function emojiUrl(emojiId: BigString, animated?: boolean): string;
15
+ export declare function emojiUrl(emojiId: BigString, animated?: boolean, format?: ImageFormat): string;
12
16
  /**
13
17
  * Builds a URL to a user's avatar stored in the Discord CDN.
14
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/images.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,wBAAwB,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGvI,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,SAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAE/F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,UAAQ,EAAE,MAAM,GAAE,WAAmB,GAAG,MAAM,CAElG;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,CAQR;AAED,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAIvE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAQhG;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,SAAS,EACxB,QAAQ,EAAE,SAAS,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,SAAS,EACxB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,SAAS,EACxB,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,SAAS,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,SAAS,GAAG,MAAM,EAC7B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B,GACA,MAAM,GAAG,SAAS,CASpB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GACA,MAAM,GAAG,SAAS,CAQpB"}
@@ -2,4 +2,6 @@
2
2
  export declare function delay(ms: number): Promise<void>;
3
3
  /** TS save way to check if a property exists in an object */
4
4
  export declare function hasProperty<T extends {}, Y extends PropertyKey = string>(obj: T, prop: Y): obj is T & Record<Y, unknown>;
5
+ /** Convert `JSON.stringify`-unserializable record values for debugging purposes. */
6
+ export declare function jsonSafeReplacer(_key: string, value: unknown): unknown;
5
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAExH"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrD;AAID,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,WAAW,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAExH;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAQtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discordeno/utils",
3
- "version": "21.0.0-next.5ebe549",
3
+ "version": "21.0.0-next.60c8d3e",
4
4
  "main": "./dist/esm/index.js",
5
5
  "types": "./dist/types/index.d.ts",
6
6
  "exports": {
@@ -33,22 +33,22 @@
33
33
  "test:test-type": "tsc --project tests/tsconfig.json"
34
34
  },
35
35
  "dependencies": {
36
- "@discordeno/types": "21.0.0-next.5ebe549"
36
+ "@discordeno/types": "21.0.0-next.60c8d3e"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@biomejs/biome": "^1.9.4",
40
40
  "@swc/cli": "^0.5.2",
41
- "@swc/core": "^1.10.12",
42
- "@types/chai": "^5.0.1",
41
+ "@swc/core": "^1.12.9",
42
+ "@types/chai": "^5.2.2",
43
43
  "@types/mocha": "^10.0.10",
44
- "@types/node": "^22.13.0",
44
+ "@types/node": "^24.0.1",
45
45
  "@types/sinon": "^17.0.3",
46
46
  "c8": "^10.1.3",
47
- "chai": "^5.1.2",
47
+ "chai": "^5.2.0",
48
48
  "mocha": "patch:mocha@npm%3A11.0.2#~/.yarn/patches/mocha-npm-11.0.2-b5d6b95284.patch",
49
- "sinon": "^19.0.2",
49
+ "sinon": "^21.0.0",
50
50
  "ts-node": "^10.9.2",
51
51
  "tsconfig": "*",
52
- "typescript": "^5.7.3"
52
+ "typescript": "^5.8.3"
53
53
  }
54
54
  }