oceanic.js 1.10.2-dev.b47ece0 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/lib/Client.d.ts +91 -0
  2. package/dist/lib/Client.js +254 -0
  3. package/dist/lib/Constants.d.ts +1134 -0
  4. package/dist/lib/Constants.js +1420 -0
  5. package/dist/lib/gateway/Shard.d.ts +77 -0
  6. package/dist/lib/gateway/Shard.js +1615 -0
  7. package/dist/lib/gateway/ShardManager.d.ts +26 -0
  8. package/dist/lib/gateway/ShardManager.js +304 -0
  9. package/dist/lib/index.d.ts +84 -0
  10. package/dist/lib/index.js +168 -0
  11. package/dist/lib/rest/Bucket.d.ts +33 -0
  12. package/dist/lib/rest/Bucket.js +78 -0
  13. package/dist/lib/rest/DiscordHTTPError.d.ts +16 -0
  14. package/dist/lib/rest/DiscordHTTPError.js +65 -0
  15. package/dist/lib/rest/DiscordRESTError.d.ts +19 -0
  16. package/dist/lib/rest/DiscordRESTError.js +89 -0
  17. package/dist/lib/rest/OAuthHelper.d.ts +60 -0
  18. package/dist/lib/rest/OAuthHelper.js +180 -0
  19. package/dist/lib/rest/RESTManager.d.ts +42 -0
  20. package/dist/lib/rest/RESTManager.js +82 -0
  21. package/dist/lib/rest/RequestHandler.d.ts +28 -0
  22. package/dist/lib/rest/RequestHandler.js +313 -0
  23. package/dist/lib/rest/SequentialBucket.d.ts +25 -0
  24. package/dist/lib/rest/SequentialBucket.js +76 -0
  25. package/dist/lib/routes/Applications.d.ts +171 -0
  26. package/dist/lib/routes/Applications.js +447 -0
  27. package/dist/lib/routes/Channels.d.ts +408 -0
  28. package/dist/lib/routes/Channels.js +1158 -0
  29. package/dist/lib/routes/Guilds.d.ts +606 -0
  30. package/dist/lib/routes/Guilds.js +1669 -0
  31. package/dist/lib/routes/Interactions.d.ts +74 -0
  32. package/dist/lib/routes/Interactions.js +141 -0
  33. package/dist/lib/routes/Miscellaneous.d.ts +31 -0
  34. package/dist/lib/routes/Miscellaneous.js +69 -0
  35. package/dist/lib/routes/OAuth.d.ts +105 -0
  36. package/dist/lib/routes/OAuth.js +309 -0
  37. package/dist/lib/routes/Users.d.ts +32 -0
  38. package/dist/lib/routes/Users.js +59 -0
  39. package/dist/lib/routes/Webhooks.d.ts +128 -0
  40. package/dist/lib/routes/Webhooks.js +265 -0
  41. package/dist/lib/structures/AnnouncementChannel.d.ts +36 -0
  42. package/dist/lib/structures/AnnouncementChannel.js +47 -0
  43. package/dist/lib/structures/AnnouncementThreadChannel.d.ts +18 -0
  44. package/dist/lib/structures/AnnouncementThreadChannel.js +27 -0
  45. package/dist/lib/structures/Application.d.ts +68 -0
  46. package/dist/lib/structures/Application.js +178 -0
  47. package/dist/lib/structures/ApplicationCommand.d.ts +74 -0
  48. package/dist/lib/structures/ApplicationCommand.js +141 -0
  49. package/dist/lib/structures/Attachment.d.ts +34 -0
  50. package/dist/lib/structures/Attachment.js +64 -0
  51. package/dist/lib/structures/AuditLogEntry.d.ts +25 -0
  52. package/dist/lib/structures/AuditLogEntry.js +53 -0
  53. package/dist/lib/structures/AutoModerationRule.d.ts +49 -0
  54. package/dist/lib/structures/AutoModerationRule.js +139 -0
  55. package/dist/lib/structures/AutocompleteInteraction.d.ts +62 -0
  56. package/dist/lib/structures/AutocompleteInteraction.js +115 -0
  57. package/dist/lib/structures/Base.d.ts +20 -0
  58. package/dist/lib/structures/Base.js +58 -0
  59. package/dist/lib/structures/BaseEntitlement.d.ts +19 -0
  60. package/dist/lib/structures/BaseEntitlement.js +44 -0
  61. package/dist/lib/structures/CategoryChannel.d.ts +41 -0
  62. package/dist/lib/structures/CategoryChannel.js +105 -0
  63. package/dist/lib/structures/Channel.d.ts +20 -0
  64. package/dist/lib/structures/Channel.js +91 -0
  65. package/dist/lib/structures/ClientApplication.d.ts +153 -0
  66. package/dist/lib/structures/ClientApplication.js +220 -0
  67. package/dist/lib/structures/CommandInteraction.d.ts +127 -0
  68. package/dist/lib/structures/CommandInteraction.js +297 -0
  69. package/dist/lib/structures/ComponentInteraction.d.ts +137 -0
  70. package/dist/lib/structures/ComponentInteraction.js +311 -0
  71. package/dist/lib/structures/Entitlement.d.ts +12 -0
  72. package/dist/lib/structures/Entitlement.js +26 -0
  73. package/dist/lib/structures/ExtendedUser.d.ts +26 -0
  74. package/dist/lib/structures/ExtendedUser.js +57 -0
  75. package/dist/lib/structures/ForumChannel.d.ts +11 -0
  76. package/dist/lib/structures/ForumChannel.js +19 -0
  77. package/dist/lib/structures/GroupChannel.d.ts +62 -0
  78. package/dist/lib/structures/GroupChannel.js +133 -0
  79. package/dist/lib/structures/Guild.d.ts +654 -0
  80. package/dist/lib/structures/Guild.js +1319 -0
  81. package/dist/lib/structures/GuildChannel.d.ts +34 -0
  82. package/dist/lib/structures/GuildChannel.js +75 -0
  83. package/dist/lib/structures/GuildPreview.d.ts +50 -0
  84. package/dist/lib/structures/GuildPreview.js +119 -0
  85. package/dist/lib/structures/GuildScheduledEvent.d.ts +60 -0
  86. package/dist/lib/structures/GuildScheduledEvent.js +154 -0
  87. package/dist/lib/structures/GuildTemplate.d.ts +55 -0
  88. package/dist/lib/structures/GuildTemplate.js +126 -0
  89. package/dist/lib/structures/Integration.d.ts +54 -0
  90. package/dist/lib/structures/Integration.js +156 -0
  91. package/dist/lib/structures/Interaction.d.ts +40 -0
  92. package/dist/lib/structures/Interaction.js +90 -0
  93. package/dist/lib/structures/InteractionResolvedChannel.d.ts +28 -0
  94. package/dist/lib/structures/InteractionResolvedChannel.js +45 -0
  95. package/dist/lib/structures/Invite.d.ts +64 -0
  96. package/dist/lib/structures/Invite.js +193 -0
  97. package/dist/lib/structures/InviteGuild.d.ts +52 -0
  98. package/dist/lib/structures/InviteGuild.js +88 -0
  99. package/dist/lib/structures/MediaChannel.d.ts +11 -0
  100. package/dist/lib/structures/MediaChannel.js +19 -0
  101. package/dist/lib/structures/Member.d.ts +122 -0
  102. package/dist/lib/structures/Member.js +255 -0
  103. package/dist/lib/structures/Message.d.ts +194 -0
  104. package/dist/lib/structures/Message.js +477 -0
  105. package/dist/lib/structures/ModalSubmitInteraction.d.ts +128 -0
  106. package/dist/lib/structures/ModalSubmitInteraction.js +240 -0
  107. package/dist/lib/structures/OAuthApplication.d.ts +79 -0
  108. package/dist/lib/structures/OAuthApplication.js +210 -0
  109. package/dist/lib/structures/OAuthGuild.d.ts +35 -0
  110. package/dist/lib/structures/OAuthGuild.js +61 -0
  111. package/dist/lib/structures/PartialApplication.d.ts +30 -0
  112. package/dist/lib/structures/PartialApplication.js +67 -0
  113. package/dist/lib/structures/Permission.d.ts +21 -0
  114. package/dist/lib/structures/Permission.js +68 -0
  115. package/dist/lib/structures/PermissionOverwrite.d.ts +26 -0
  116. package/dist/lib/structures/PermissionOverwrite.js +49 -0
  117. package/dist/lib/structures/PingInteraction.d.ts +16 -0
  118. package/dist/lib/structures/PingInteraction.js +26 -0
  119. package/dist/lib/structures/Poll.d.ts +28 -0
  120. package/dist/lib/structures/Poll.js +78 -0
  121. package/dist/lib/structures/PrivateChannel.d.ts +90 -0
  122. package/dist/lib/structures/PrivateChannel.js +131 -0
  123. package/dist/lib/structures/PrivateThreadChannel.d.ts +18 -0
  124. package/dist/lib/structures/PrivateThreadChannel.js +27 -0
  125. package/dist/lib/structures/PublicThreadChannel.d.ts +21 -0
  126. package/dist/lib/structures/PublicThreadChannel.js +37 -0
  127. package/dist/lib/structures/Role.d.ts +50 -0
  128. package/dist/lib/structures/Role.js +131 -0
  129. package/dist/lib/structures/SKU.d.ts +32 -0
  130. package/dist/lib/structures/SKU.js +53 -0
  131. package/dist/lib/structures/StageChannel.d.ts +33 -0
  132. package/dist/lib/structures/StageChannel.js +44 -0
  133. package/dist/lib/structures/StageInstance.d.ts +36 -0
  134. package/dist/lib/structures/StageInstance.js +94 -0
  135. package/dist/lib/structures/Team.d.ts +22 -0
  136. package/dist/lib/structures/Team.js +67 -0
  137. package/dist/lib/structures/TestEntitlement.d.ts +10 -0
  138. package/dist/lib/structures/TestEntitlement.js +21 -0
  139. package/dist/lib/structures/TextChannel.d.ts +34 -0
  140. package/dist/lib/structures/TextChannel.js +46 -0
  141. package/dist/lib/structures/TextableChannel.d.ts +158 -0
  142. package/dist/lib/structures/TextableChannel.js +276 -0
  143. package/dist/lib/structures/TextableVoiceChannel.d.ts +39 -0
  144. package/dist/lib/structures/TextableVoiceChannel.js +81 -0
  145. package/dist/lib/structures/ThreadChannel.d.ts +159 -0
  146. package/dist/lib/structures/ThreadChannel.js +295 -0
  147. package/dist/lib/structures/ThreadOnlyChannel.d.ts +99 -0
  148. package/dist/lib/structures/ThreadOnlyChannel.js +233 -0
  149. package/dist/lib/structures/ThreadableChannel.d.ts +36 -0
  150. package/dist/lib/structures/ThreadableChannel.js +58 -0
  151. package/dist/lib/structures/UnavailableGuild.d.ts +11 -0
  152. package/dist/lib/structures/UnavailableGuild.js +21 -0
  153. package/dist/lib/structures/User.d.ts +82 -0
  154. package/dist/lib/structures/User.js +168 -0
  155. package/dist/lib/structures/VoiceChannel.d.ts +20 -0
  156. package/dist/lib/structures/VoiceChannel.js +35 -0
  157. package/dist/lib/structures/VoiceState.d.ts +51 -0
  158. package/dist/lib/structures/VoiceState.js +140 -0
  159. package/dist/lib/structures/Webhook.d.ts +129 -0
  160. package/dist/lib/structures/Webhook.js +206 -0
  161. package/dist/lib/types/applications.d.ts +449 -0
  162. package/dist/lib/types/audit-log.d.ts +121 -0
  163. package/dist/lib/types/auto-moderation.d.ts +99 -0
  164. package/dist/lib/types/channels.d.ts +1240 -0
  165. package/dist/lib/types/client.d.ts +228 -0
  166. package/dist/lib/types/events.d.ts +265 -0
  167. package/dist/lib/types/gateway-raw.d.ts +584 -0
  168. package/dist/lib/types/gateway.d.ts +346 -0
  169. package/dist/lib/types/guild-template.d.ts +33 -0
  170. package/dist/lib/types/guilds.d.ts +854 -0
  171. package/dist/lib/types/index.d.ts +18 -0
  172. package/dist/lib/types/interactions.d.ts +377 -0
  173. package/dist/lib/types/json.d.ts +720 -0
  174. package/dist/lib/types/misc.d.ts +28 -0
  175. package/dist/lib/types/oauth.d.ts +201 -0
  176. package/dist/lib/types/request-handler.d.ts +52 -0
  177. package/dist/lib/types/scheduled-events.d.ts +88 -0
  178. package/dist/lib/types/shared.d.ts +9 -0
  179. package/dist/lib/types/users.d.ts +45 -0
  180. package/dist/lib/types/voice.d.ts +45 -0
  181. package/dist/lib/types/webhooks.d.ts +74 -0
  182. package/dist/lib/util/Collection.d.ts +47 -0
  183. package/dist/lib/util/Collection.js +78 -0
  184. package/dist/lib/util/Errors.d.ts +29 -0
  185. package/dist/lib/util/Errors.js +56 -0
  186. package/dist/lib/util/Routes.d.ts +127 -0
  187. package/dist/lib/util/Routes.js +248 -0
  188. package/dist/lib/util/SimpleCollection.d.ts +12 -0
  189. package/dist/lib/util/SimpleCollection.js +81 -0
  190. package/dist/lib/util/TypedCollection.d.ts +24 -0
  191. package/dist/lib/util/TypedCollection.js +76 -0
  192. package/dist/lib/util/TypedEmitter.d.ts +19 -0
  193. package/dist/lib/util/TypedEmitter.js +19 -0
  194. package/dist/lib/util/Util.d.ts +57 -0
  195. package/dist/lib/util/Util.js +516 -0
  196. package/dist/lib/util/interactions/InteractionOptionsWrapper.d.ts +170 -0
  197. package/dist/lib/util/interactions/InteractionOptionsWrapper.js +213 -0
  198. package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +24 -0
  199. package/dist/lib/util/interactions/MessageInteractionResponse.js +28 -0
  200. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.d.ts +24 -0
  201. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.js +34 -0
  202. package/dist/lib/util/interactions/SelectMenuValuesWrapper.d.ts +60 -0
  203. package/dist/lib/util/interactions/SelectMenuValuesWrapper.js +124 -0
  204. package/dist/package.json +1 -1
  205. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ /** @module Client */
2
+ import RESTManager from "./rest/RESTManager";
3
+ import TypedCollection from "./util/TypedCollection";
4
+ import PrivateChannel from "./structures/PrivateChannel";
5
+ import GroupChannel from "./structures/GroupChannel";
6
+ import User from "./structures/User";
7
+ import Guild from "./structures/Guild";
8
+ import type { AnyChannel, RawGroupChannel, RawPrivateChannel } from "./types/channels";
9
+ import type { RawGuild, RawUnavailableGuild } from "./types/guilds";
10
+ import type { RawUser } from "./types/users";
11
+ import type { ClientInstanceOptions, ClientOptions } from "./types/client";
12
+ import TypedEmitter from "./util/TypedEmitter";
13
+ import type ClientApplication from "./structures/ClientApplication";
14
+ import ShardManager from "./gateway/ShardManager";
15
+ import type { BotActivity, SendStatuses } from "./types/gateway";
16
+ import UnavailableGuild from "./structures/UnavailableGuild";
17
+ import type ExtendedUser from "./structures/ExtendedUser";
18
+ import Util from "./util/Util";
19
+ import type { ClientEvents } from "./types/events";
20
+ import type { JoinVoiceChannelOptions } from "./types/voice";
21
+ import type { DiscordGatewayAdapterLibraryMethods, VoiceConnection } from "@discordjs/voice";
22
+ /** The primary class for interfacing with Discord. See {@link ClientEvents | Client Events} for a list of events. */
23
+ export default class Client<E extends ClientEvents = ClientEvents> extends TypedEmitter<E> {
24
+ private _application?;
25
+ private _user?;
26
+ channelGuildMap: Record<string, string>;
27
+ groupChannels: TypedCollection<RawGroupChannel, GroupChannel>;
28
+ guildShardMap: Record<string, number>;
29
+ guilds: TypedCollection<RawGuild, Guild, [rest?: boolean]>;
30
+ options: ClientInstanceOptions;
31
+ privateChannels: TypedCollection<RawPrivateChannel, PrivateChannel>;
32
+ ready: boolean;
33
+ rest: RESTManager;
34
+ shards: ShardManager;
35
+ startTime: number;
36
+ threadGuildMap: Record<string, string>;
37
+ unavailableGuilds: TypedCollection<RawUnavailableGuild, UnavailableGuild>;
38
+ users: TypedCollection<RawUser, User>;
39
+ util: Util;
40
+ voiceAdapters: Map<string, DiscordGatewayAdapterLibraryMethods>;
41
+ /**
42
+ * @constructor
43
+ * @param options The options to create the client with.
44
+ */
45
+ constructor(options?: ClientOptions);
46
+ /** The client's partial application. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
47
+ get application(): ClientApplication;
48
+ get uptime(): number;
49
+ /** The client's user. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
50
+ get user(): ExtendedUser;
51
+ /** The active voice connections of this client. */
52
+ get voiceConnections(): Map<string, VoiceConnection>;
53
+ /** Connect the client to Discord. */
54
+ connect(): Promise<void>;
55
+ /**
56
+ * Disconnect all shards.
57
+ * @param reconnect If shards should be reconnected. Defaults to {@link Types/Gateway~GatewayOptions#autoReconnect | GatewayOptions#autoReconnect}
58
+ */
59
+ disconnect(reconnect?: boolean): void;
60
+ /**
61
+ * Edit the client's status across all shards.
62
+ * @param status The status.
63
+ * @param activities An array of activities.
64
+ */
65
+ editStatus(status: SendStatuses, activities?: Array<BotActivity>): Promise<void>;
66
+ /**
67
+ * Get a channel from an ID. This will return undefined if the channel is not cached.
68
+ * @param channelID The id of the channel.
69
+ */
70
+ getChannel<T extends AnyChannel = AnyChannel>(channelID: string): T | undefined;
71
+ /**
72
+ * Get a voice connection.
73
+ * @param guildID The ID of the guild the voice channel belongs to.
74
+ */
75
+ getVoiceConnection(guildID: string): VoiceConnection | undefined;
76
+ /**
77
+ * Join a voice channel.
78
+ * @param options The options to join the channel with.
79
+ * */
80
+ joinVoiceChannel(options: JoinVoiceChannelOptions): VoiceConnection;
81
+ /**
82
+ * Leave a voice channel.
83
+ * @param guildID The ID of the guild the voice channel belongs to.
84
+ */
85
+ leaveVoiceChannel(guildID: string): void;
86
+ /**
87
+ * Initialize this client for rest only use. Currently, this sets both the `application` and `user` properties (if not already present), as would happen with a gateway connection.
88
+ * @param fakeReady If the client should emit a ready event. Defaults to true.
89
+ */
90
+ restMode(fakeReady?: boolean): Promise<this>;
91
+ }
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module Client */
5
+ const RESTManager_1 = tslib_1.__importDefault(require("./rest/RESTManager"));
6
+ const TypedCollection_1 = tslib_1.__importDefault(require("./util/TypedCollection"));
7
+ const PrivateChannel_1 = tslib_1.__importDefault(require("./structures/PrivateChannel"));
8
+ const GroupChannel_1 = tslib_1.__importDefault(require("./structures/GroupChannel"));
9
+ const User_1 = tslib_1.__importDefault(require("./structures/User"));
10
+ const Guild_1 = tslib_1.__importDefault(require("./structures/Guild"));
11
+ const TypedEmitter_1 = tslib_1.__importDefault(require("./util/TypedEmitter"));
12
+ const ShardManager_1 = tslib_1.__importDefault(require("./gateway/ShardManager"));
13
+ const UnavailableGuild_1 = tslib_1.__importDefault(require("./structures/UnavailableGuild"));
14
+ const Util_1 = tslib_1.__importDefault(require("./util/Util"));
15
+ const Errors_1 = require("./util/Errors");
16
+ // @ts-ignore
17
+ let DiscordJSVoice;
18
+ try {
19
+ DiscordJSVoice = require("@discordjs/voice");
20
+ }
21
+ catch { }
22
+ /* eslint-enable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment, unicorn/prefer-module */
23
+ /** The primary class for interfacing with Discord. See {@link ClientEvents | Client Events} for a list of events. */
24
+ class Client extends TypedEmitter_1.default {
25
+ _application;
26
+ _user;
27
+ channelGuildMap;
28
+ groupChannels;
29
+ guildShardMap;
30
+ guilds;
31
+ options;
32
+ privateChannels;
33
+ ready;
34
+ rest;
35
+ shards;
36
+ startTime = 0;
37
+ threadGuildMap;
38
+ unavailableGuilds;
39
+ users;
40
+ util;
41
+ voiceAdapters;
42
+ /**
43
+ * @constructor
44
+ * @param options The options to create the client with.
45
+ */
46
+ constructor(options) {
47
+ super();
48
+ this.util = new Util_1.default(this);
49
+ const disableCache = options?.disableCache === true || options?.disableCache === "no-warning";
50
+ const colZero = {
51
+ auditLogEntries: 0,
52
+ autoModerationRules: 0,
53
+ channels: 0,
54
+ emojis: 0,
55
+ groupChannels: 0,
56
+ guilds: 0,
57
+ guildThreads: 0,
58
+ integrations: 0,
59
+ invites: 0,
60
+ members: 0,
61
+ messages: 0,
62
+ privateChannels: 0,
63
+ roles: 0,
64
+ scheduledEvents: 0,
65
+ stageInstances: 0,
66
+ stickers: 0,
67
+ unavailableGuilds: 0,
68
+ users: 0,
69
+ voiceMembers: 0,
70
+ voiceStates: 0
71
+ };
72
+ this.options = {
73
+ allowedMentions: options?.allowedMentions ?? {
74
+ everyone: false,
75
+ repliedUser: false,
76
+ users: true,
77
+ roles: true
78
+ },
79
+ auth: options?.auth ?? null,
80
+ collectionLimits: disableCache ? colZero : {
81
+ auditLogEntries: this.util._setLimit(options?.collectionLimits?.auditLogEntries, 50),
82
+ autoModerationRules: this.util._setLimit(options?.collectionLimits?.autoModerationRules, Infinity),
83
+ channels: this.util._setLimit(options?.collectionLimits?.channels, Infinity),
84
+ emojis: this.util._setLimit(options?.collectionLimits?.emojis, Infinity),
85
+ groupChannels: options?.collectionLimits?.groupChannels ?? 10,
86
+ guilds: options?.collectionLimits?.guilds ?? Infinity,
87
+ guildThreads: this.util._setLimit(options?.collectionLimits?.guildThreads, Infinity),
88
+ integrations: this.util._setLimit(options?.collectionLimits?.integrations, Infinity),
89
+ invites: this.util._setLimit(options?.collectionLimits?.invites, Infinity),
90
+ members: this.util._setLimit(options?.collectionLimits?.members, Infinity),
91
+ messages: this.util._setLimit(options?.collectionLimits?.messages, 100),
92
+ privateChannels: options?.collectionLimits?.privateChannels ?? 25,
93
+ roles: this.util._setLimit(options?.collectionLimits?.roles, Infinity),
94
+ scheduledEvents: this.util._setLimit(options?.collectionLimits?.scheduledEvents, Infinity),
95
+ stageInstances: this.util._setLimit(options?.collectionLimits?.stageInstances, Infinity),
96
+ stickers: this.util._setLimit(options?.collectionLimits?.stickers, Infinity),
97
+ unavailableGuilds: options?.collectionLimits?.unavailableGuilds ?? Infinity,
98
+ users: options?.collectionLimits?.users ?? Infinity,
99
+ voiceMembers: this.util._setLimit(options?.collectionLimits?.voiceMembers, Infinity),
100
+ voiceStates: this.util._setLimit(options?.collectionLimits?.voiceStates, Infinity)
101
+ },
102
+ defaultImageFormat: options?.defaultImageFormat ?? "png",
103
+ defaultImageSize: options?.defaultImageSize ?? 4096,
104
+ disableMemberLimitScaling: options?.disableMemberLimitScaling ?? false,
105
+ restMode: false,
106
+ disableCache
107
+ };
108
+ if (options?.disableCache === true) {
109
+ process.emitWarning("Enabling the disableCache option is not recommended. This will break many aspects of the library, as it is not designed to function without cache.", {
110
+ code: "OCEANIC_CACHE_DISABLED",
111
+ detail: "Set the disableCache option to the literal string \"no-warning\" to disable this warning."
112
+ });
113
+ }
114
+ if (disableCache && options?.collectionLimits !== undefined && JSON.stringify(options.collectionLimits) !== JSON.stringify(colZero)) {
115
+ process.emitWarning("Providing the collectionsLimit option when the disableCache option has been enabled is redundant. Any provided values will be ignored.", {
116
+ code: "OCEANIC_COLLECTIONS_LIMIT_WITH_CACHE_DISABLED",
117
+ detail: "Remove the collectionsLimit option, or zero out all of the possible options to disable this warning."
118
+ });
119
+ }
120
+ this.voiceAdapters = new Map();
121
+ this.channelGuildMap = {};
122
+ this.groupChannels = new TypedCollection_1.default(GroupChannel_1.default, this, this.options.collectionLimits.groupChannels);
123
+ this.guilds = new TypedCollection_1.default(Guild_1.default, this, this.options.collectionLimits.guilds);
124
+ this.privateChannels = new TypedCollection_1.default(PrivateChannel_1.default, this, this.options.collectionLimits.privateChannels);
125
+ this.ready = false;
126
+ this.guildShardMap = {};
127
+ this.rest = new RESTManager_1.default(this, options?.rest);
128
+ this.shards = new ShardManager_1.default(this, options?.gateway);
129
+ this.threadGuildMap = {};
130
+ this.unavailableGuilds = new TypedCollection_1.default(UnavailableGuild_1.default, this, this.options.collectionLimits.unavailableGuilds);
131
+ this.users = new TypedCollection_1.default(User_1.default, this, this.options.collectionLimits.users);
132
+ }
133
+ /** The client's partial application. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
134
+ get application() {
135
+ if (this._application) {
136
+ return this._application;
137
+ }
138
+ else {
139
+ throw new Errors_1.UncachedError(`${this.constructor.name}#application is not present if not using a gateway connection or no shard is READY. Consider making sure you have connected your client, or enable rest mode.`);
140
+ }
141
+ }
142
+ get uptime() {
143
+ return this.startTime ? Date.now() - this.startTime : 0;
144
+ }
145
+ /** The client's user. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
146
+ get user() {
147
+ if (this._user) {
148
+ return this._user;
149
+ }
150
+ else {
151
+ throw new Errors_1.UncachedError(`${this.constructor.name}#user is not present if not using a gateway connection or no shard is READY. Consider making sure you have connected your client, or enable rest mode.`);
152
+ }
153
+ }
154
+ /** The active voice connections of this client. */
155
+ get voiceConnections() {
156
+ if (!DiscordJSVoice) {
157
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
158
+ }
159
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
160
+ return DiscordJSVoice.getVoiceConnections();
161
+ }
162
+ /** Connect the client to Discord. */
163
+ async connect() {
164
+ if (this.options.restMode) {
165
+ throw new TypeError("Rest mode has been enabled on this client. You cannot connect to the gateway.");
166
+ }
167
+ if (!this.options.auth || !this.options.auth.startsWith("Bot ")) {
168
+ throw new TypeError("You must provide a bot token to connect. Make sure it has been prefixed with `Bot `.");
169
+ }
170
+ await this.shards.connect();
171
+ }
172
+ /**
173
+ * Disconnect all shards.
174
+ * @param reconnect If shards should be reconnected. Defaults to {@link Types/Gateway~GatewayOptions#autoReconnect | GatewayOptions#autoReconnect}
175
+ */
176
+ disconnect(reconnect = this.shards.options.autoReconnect) {
177
+ return this.shards.disconnect(reconnect);
178
+ }
179
+ /**
180
+ * Edit the client's status across all shards.
181
+ * @param status The status.
182
+ * @param activities An array of activities.
183
+ */
184
+ async editStatus(status, activities = []) {
185
+ for (const [, shard] of this.shards)
186
+ await shard.editStatus(status, activities);
187
+ }
188
+ /**
189
+ * Get a channel from an ID. This will return undefined if the channel is not cached.
190
+ * @param channelID The id of the channel.
191
+ */
192
+ getChannel(channelID) {
193
+ if (this.channelGuildMap[channelID]) {
194
+ return this.guilds.get(this.channelGuildMap[channelID])?.channels.get(channelID);
195
+ }
196
+ else if (this.threadGuildMap[channelID]) {
197
+ return this.guilds.get(this.threadGuildMap[channelID])?.threads.get(channelID);
198
+ }
199
+ return (this.privateChannels.get(channelID) ?? this.groupChannels.get(channelID));
200
+ }
201
+ /**
202
+ * Get a voice connection.
203
+ * @param guildID The ID of the guild the voice channel belongs to.
204
+ */
205
+ getVoiceConnection(guildID) {
206
+ if (!DiscordJSVoice) {
207
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
208
+ }
209
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
210
+ return DiscordJSVoice.getVoiceConnection(guildID);
211
+ }
212
+ /**
213
+ * Join a voice channel.
214
+ * @param options The options to join the channel with.
215
+ * */
216
+ joinVoiceChannel(options) {
217
+ if (!DiscordJSVoice) {
218
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
219
+ }
220
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
221
+ return DiscordJSVoice.joinVoiceChannel({
222
+ channelId: options.channelID,
223
+ guildId: options.guildID,
224
+ debug: options.debug,
225
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
226
+ adapterCreator: options.voiceAdapterCreator,
227
+ selfDeaf: options.selfDeaf,
228
+ selfMute: options.selfMute
229
+ });
230
+ }
231
+ /**
232
+ * Leave a voice channel.
233
+ * @param guildID The ID of the guild the voice channel belongs to.
234
+ */
235
+ leaveVoiceChannel(guildID) {
236
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
237
+ return this.getVoiceConnection(guildID)?.destroy();
238
+ }
239
+ /**
240
+ * Initialize this client for rest only use. Currently, this sets both the `application` and `user` properties (if not already present), as would happen with a gateway connection.
241
+ * @param fakeReady If the client should emit a ready event. Defaults to true.
242
+ */
243
+ async restMode(fakeReady = true) {
244
+ this._application ??= await this.rest.applications.getCurrent();
245
+ this._user ??= await this.rest.oauth.getCurrentUser();
246
+ this.options.restMode = true;
247
+ if (fakeReady) {
248
+ this.emit("ready");
249
+ }
250
+ return this;
251
+ }
252
+ }
253
+ exports.default = Client;
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsNkVBQTZDO0FBQzdDLHFGQUFxRDtBQUNyRCx5RkFBeUQ7QUFDekQscUZBQXFEO0FBQ3JELHFFQUFxQztBQUNyQyx1RUFBdUM7QUFLdkMsK0VBQStDO0FBRS9DLGtGQUFrRDtBQUVsRCw2RkFBNkQ7QUFFN0QsK0RBQStCO0FBRy9CLDBDQUErRDtBQU0vRCxhQUFhO0FBQ2IsSUFBSSxjQUE2RCxDQUFDO0FBQ2xFLElBQUksQ0FBQztJQUNELGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQztBQUNWLDRNQUE0TTtBQUU1TSxxSEFBcUg7QUFDckgsTUFBcUIsTUFBOEMsU0FBUSxzQkFBZTtJQUM5RSxZQUFZLENBQXFCO0lBQ2pDLEtBQUssQ0FBZ0I7SUFDN0IsZUFBZSxDQUF5QjtJQUN4QyxhQUFhLENBQWlEO0lBQzlELGFBQWEsQ0FBeUI7SUFDdEMsTUFBTSxDQUFxRDtJQUMzRCxPQUFPLENBQXdCO0lBQy9CLGVBQWUsQ0FBcUQ7SUFDcEUsS0FBSyxDQUFVO0lBQ2YsSUFBSSxDQUFjO0lBQ2xCLE1BQU0sQ0FBZTtJQUNyQixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsY0FBYyxDQUF5QjtJQUN2QyxpQkFBaUIsQ0FBeUQ7SUFDMUUsS0FBSyxDQUFpQztJQUN0QyxJQUFJLENBQU87SUFDWCxhQUFhLENBQW1EO0lBQ2hFOzs7T0FHRztJQUNILFlBQVksT0FBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxZQUFZLEtBQUssSUFBSSxJQUFJLE9BQU8sRUFBRSxZQUFZLEtBQUssWUFBWSxDQUFDO1FBQzlGLE1BQU0sT0FBTyxHQUFHO1lBQ1osZUFBZSxFQUFNLENBQUM7WUFDdEIsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixRQUFRLEVBQWEsQ0FBQztZQUN0QixNQUFNLEVBQWUsQ0FBQztZQUN0QixhQUFhLEVBQVEsQ0FBQztZQUN0QixNQUFNLEVBQWUsQ0FBQztZQUN0QixZQUFZLEVBQVMsQ0FBQztZQUN0QixZQUFZLEVBQVMsQ0FBQztZQUN0QixPQUFPLEVBQWMsQ0FBQztZQUN0QixPQUFPLEVBQWMsQ0FBQztZQUN0QixRQUFRLEVBQWEsQ0FBQztZQUN0QixlQUFlLEVBQU0sQ0FBQztZQUN0QixLQUFLLEVBQWdCLENBQUM7WUFDdEIsZUFBZSxFQUFNLENBQUM7WUFDdEIsY0FBYyxFQUFPLENBQUM7WUFDdEIsUUFBUSxFQUFhLENBQUM7WUFDdEIsaUJBQWlCLEVBQUksQ0FBQztZQUN0QixLQUFLLEVBQWdCLENBQUM7WUFDdEIsWUFBWSxFQUFTLENBQUM7WUFDdEIsV0FBVyxFQUFVLENBQUM7U0FDbUIsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLElBQUk7Z0JBQ3pDLFFBQVEsRUFBSyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsS0FBSyxFQUFRLElBQUk7Z0JBQ2pCLEtBQUssRUFBUSxJQUFJO2FBQ3BCO1lBQ0QsSUFBSSxFQUFjLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSTtZQUN2QyxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLGVBQWUsRUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQztnQkFDeEYsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztnQkFDbEcsUUFBUSxFQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO2dCQUN2RixNQUFNLEVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUM7Z0JBQ3JGLGFBQWEsRUFBUSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxJQUFJLEVBQUU7Z0JBQ25FLE1BQU0sRUFBZSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLFFBQVE7Z0JBQ2xFLFlBQVksRUFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztnQkFDM0YsWUFBWSxFQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO2dCQUMzRixPQUFPLEVBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7Z0JBQ3RGLE9BQU8sRUFBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztnQkFDdEYsUUFBUSxFQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO2dCQUNsRixlQUFlLEVBQU0sT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsSUFBSSxFQUFFO2dCQUNyRSxLQUFLLEVBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDO2dCQUNwRixlQUFlLEVBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxRQUFRLENBQUM7Z0JBQzlGLGNBQWMsRUFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQztnQkFDN0YsUUFBUSxFQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO2dCQUN2RixpQkFBaUIsRUFBSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLElBQUksUUFBUTtnQkFDN0UsS0FBSyxFQUFnQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxJQUFJLFFBQVE7Z0JBQ2pFLFlBQVksRUFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztnQkFDM0YsV0FBVyxFQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDO2FBQzdGO1lBQ0Qsa0JBQWtCLEVBQVMsT0FBTyxFQUFFLGtCQUFrQixJQUFJLEtBQUs7WUFDL0QsZ0JBQWdCLEVBQVcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLElBQUk7WUFDNUQseUJBQXlCLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixJQUFJLEtBQUs7WUFDdEUsUUFBUSxFQUFtQixLQUFLO1lBQ2hDLFlBQVk7U0FDZixDQUFDO1FBQ0YsSUFBSSxPQUFPLEVBQUUsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxXQUFXLENBQUMsb0pBQW9KLEVBQUU7Z0JBQ3RLLElBQUksRUFBSSx3QkFBd0I7Z0JBQ2hDLE1BQU0sRUFBRSwyRkFBMkY7YUFDdEcsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEksT0FBTyxDQUFDLFdBQVcsQ0FBQyx3SUFBd0ksRUFBRTtnQkFDMUosSUFBSSxFQUFJLCtDQUErQztnQkFDdkQsTUFBTSxFQUFFLHNHQUFzRzthQUNqSCxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx5QkFBZSxDQUFDLHNCQUFZLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHlCQUFlLENBQUMsZUFBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSx5QkFBZSxDQUFDLHdCQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHFCQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksc0JBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHlCQUFlLENBQUMsMEJBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0SCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUkseUJBQWUsQ0FBQyxjQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELHVMQUF1TDtJQUN2TCxJQUFJLFdBQVc7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksc0JBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSwrSkFBK0osQ0FBQyxDQUFDO1FBQ3JOLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCx3S0FBd0s7SUFDeEssSUFBSSxJQUFJO1FBQ0osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksc0JBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx3SkFBd0osQ0FBQyxDQUFDO1FBQzlNLENBQUM7SUFDTCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELElBQUksZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksd0JBQWUsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFDRCw4SUFBOEk7UUFDOUksT0FBTyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLEtBQUssQ0FBQyxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxTQUFTLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUN6RyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDOUQsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzRkFBc0YsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYTtRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFvQixFQUFFLGFBQWlDLEVBQUU7UUFDdEUsS0FBSyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBb0MsU0FBaUI7UUFDM0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQU0sQ0FBQztRQUMxRixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQU0sQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFNLENBQUM7SUFDM0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLE9BQWU7UUFDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSx3QkFBZSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELHlHQUF5RztRQUN6RyxPQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7OztTQUdLO0lBQ0wsZ0JBQWdCLENBQUMsT0FBZ0M7UUFDN0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSx3QkFBZSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELDhJQUE4STtRQUM5SSxPQUFPLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuQyxTQUFTLEVBQU8sT0FBTyxDQUFDLFNBQVM7WUFDakMsT0FBTyxFQUFTLE9BQU8sQ0FBQyxPQUFPO1lBQy9CLEtBQUssRUFBVyxPQUFPLENBQUMsS0FBSztZQUM3QixtRUFBbUU7WUFDbkUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxtQkFBbUI7WUFDM0MsUUFBUSxFQUFRLE9BQU8sQ0FBQyxRQUFRO1lBQ2hDLFFBQVEsRUFBUSxPQUFPLENBQUMsUUFBUTtTQUNuQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsT0FBZTtRQUM3Qiw4SUFBOEk7UUFDOUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUk7UUFDM0IsSUFBSSxDQUFDLFlBQVksS0FBSyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSjtBQTlPRCx5QkE4T0MifQ==