@valoranchi/riot-client 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +644 -0
- package/dist/RiotClient.d.ts +36 -0
- package/dist/RiotClient.d.ts.map +1 -0
- package/dist/RiotClient.js +115 -0
- package/dist/RiotClient.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/catalogue/Catalogue.d.ts +69 -0
- package/dist/catalogue/Catalogue.d.ts.map +1 -0
- package/dist/catalogue/Catalogue.js +206 -0
- package/dist/catalogue/Catalogue.js.map +1 -0
- package/dist/catalogue/CatalogueStore.d.ts +14 -0
- package/dist/catalogue/CatalogueStore.d.ts.map +1 -0
- package/dist/catalogue/CatalogueStore.js +38 -0
- package/dist/catalogue/CatalogueStore.js.map +1 -0
- package/dist/catalogue/ValorantApi.d.ts +26 -0
- package/dist/catalogue/ValorantApi.d.ts.map +1 -0
- package/dist/catalogue/ValorantApi.js +126 -0
- package/dist/catalogue/ValorantApi.js.map +1 -0
- package/dist/catalogue/types.d.ts +173 -0
- package/dist/catalogue/types.d.ts.map +1 -0
- package/dist/catalogue/types.js +2 -0
- package/dist/catalogue/types.js.map +1 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +912 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/AccountService.d.ts +61 -0
- package/dist/client/AccountService.d.ts.map +1 -0
- package/dist/client/AccountService.js +319 -0
- package/dist/client/AccountService.js.map +1 -0
- package/dist/client/AccountValidator.d.ts +15 -0
- package/dist/client/AccountValidator.d.ts.map +1 -0
- package/dist/client/AccountValidator.js +49 -0
- package/dist/client/AccountValidator.js.map +1 -0
- package/dist/client/ChatValidator.d.ts +40 -0
- package/dist/client/ChatValidator.d.ts.map +1 -0
- package/dist/client/ChatValidator.js +154 -0
- package/dist/client/ChatValidator.js.map +1 -0
- package/dist/client/ClientContext.d.ts +16 -0
- package/dist/client/ClientContext.d.ts.map +1 -0
- package/dist/client/ClientContext.js +12 -0
- package/dist/client/ClientContext.js.map +1 -0
- package/dist/client/EventsService.d.ts +11 -0
- package/dist/client/EventsService.d.ts.map +1 -0
- package/dist/client/EventsService.js +54 -0
- package/dist/client/EventsService.js.map +1 -0
- package/dist/client/LiveMatchService.d.ts +18 -0
- package/dist/client/LiveMatchService.d.ts.map +1 -0
- package/dist/client/LiveMatchService.js +84 -0
- package/dist/client/LiveMatchService.js.map +1 -0
- package/dist/client/LoadoutValidator.d.ts +28 -0
- package/dist/client/LoadoutValidator.d.ts.map +1 -0
- package/dist/client/LoadoutValidator.js +330 -0
- package/dist/client/LoadoutValidator.js.map +1 -0
- package/dist/client/MatchService.d.ts +80 -0
- package/dist/client/MatchService.d.ts.map +1 -0
- package/dist/client/MatchService.js +199 -0
- package/dist/client/MatchService.js.map +1 -0
- package/dist/client/MatchValidator.d.ts +29 -0
- package/dist/client/MatchValidator.d.ts.map +1 -0
- package/dist/client/MatchValidator.js +81 -0
- package/dist/client/MatchValidator.js.map +1 -0
- package/dist/client/PartyService.d.ts +111 -0
- package/dist/client/PartyService.d.ts.map +1 -0
- package/dist/client/PartyService.js +460 -0
- package/dist/client/PartyService.js.map +1 -0
- package/dist/client/PartyValidator.d.ts +93 -0
- package/dist/client/PartyValidator.d.ts.map +1 -0
- package/dist/client/PartyValidator.js +390 -0
- package/dist/client/PartyValidator.js.map +1 -0
- package/dist/client/SessionManager.d.ts +28 -0
- package/dist/client/SessionManager.d.ts.map +1 -0
- package/dist/client/SessionManager.js +104 -0
- package/dist/client/SessionManager.js.map +1 -0
- package/dist/client/SocialService.d.ts +63 -0
- package/dist/client/SocialService.d.ts.map +1 -0
- package/dist/client/SocialService.js +185 -0
- package/dist/client/SocialService.js.map +1 -0
- package/dist/client/StoreService.d.ts +25 -0
- package/dist/client/StoreService.d.ts.map +1 -0
- package/dist/client/StoreService.js +88 -0
- package/dist/client/StoreService.js.map +1 -0
- package/dist/client/StoreValidator.d.ts +32 -0
- package/dist/client/StoreValidator.d.ts.map +1 -0
- package/dist/client/StoreValidator.js +111 -0
- package/dist/client/StoreValidator.js.map +1 -0
- package/dist/client/api.d.ts +323 -0
- package/dist/client/api.d.ts.map +1 -0
- package/dist/client/api.js +2 -0
- package/dist/client/api.js.map +1 -0
- package/dist/collection/AccountProgressionBuilder.d.ts +12 -0
- package/dist/collection/AccountProgressionBuilder.d.ts.map +1 -0
- package/dist/collection/AccountProgressionBuilder.js +132 -0
- package/dist/collection/AccountProgressionBuilder.js.map +1 -0
- package/dist/collection/CollectionBuilder.d.ts +19 -0
- package/dist/collection/CollectionBuilder.d.ts.map +1 -0
- package/dist/collection/CollectionBuilder.js +199 -0
- package/dist/collection/CollectionBuilder.js.map +1 -0
- package/dist/collection/ContentBuilder.d.ts +6 -0
- package/dist/collection/ContentBuilder.d.ts.map +1 -0
- package/dist/collection/ContentBuilder.js +36 -0
- package/dist/collection/ContentBuilder.js.map +1 -0
- package/dist/collection/CustomGameConfigsBuilder.d.ts +9 -0
- package/dist/collection/CustomGameConfigsBuilder.d.ts.map +1 -0
- package/dist/collection/CustomGameConfigsBuilder.js +49 -0
- package/dist/collection/CustomGameConfigsBuilder.js.map +1 -0
- package/dist/collection/FriendsBuilder.d.ts +12 -0
- package/dist/collection/FriendsBuilder.d.ts.map +1 -0
- package/dist/collection/FriendsBuilder.js +89 -0
- package/dist/collection/FriendsBuilder.js.map +1 -0
- package/dist/collection/GameSessionBuilder.d.ts +6 -0
- package/dist/collection/GameSessionBuilder.d.ts.map +1 -0
- package/dist/collection/GameSessionBuilder.js +11 -0
- package/dist/collection/GameSessionBuilder.js.map +1 -0
- package/dist/collection/LeaderboardBuilder.d.ts +9 -0
- package/dist/collection/LeaderboardBuilder.d.ts.map +1 -0
- package/dist/collection/LeaderboardBuilder.js +31 -0
- package/dist/collection/LeaderboardBuilder.js.map +1 -0
- package/dist/collection/LiveMatchBuilder.d.ts +22 -0
- package/dist/collection/LiveMatchBuilder.d.ts.map +1 -0
- package/dist/collection/LiveMatchBuilder.js +154 -0
- package/dist/collection/LiveMatchBuilder.js.map +1 -0
- package/dist/collection/LoadoutBuilder.d.ts +12 -0
- package/dist/collection/LoadoutBuilder.d.ts.map +1 -0
- package/dist/collection/LoadoutBuilder.js +126 -0
- package/dist/collection/LoadoutBuilder.js.map +1 -0
- package/dist/collection/LoadoutWriter.d.ts +32 -0
- package/dist/collection/LoadoutWriter.d.ts.map +1 -0
- package/dist/collection/LoadoutWriter.js +48 -0
- package/dist/collection/LoadoutWriter.js.map +1 -0
- package/dist/collection/MatchBuilder.d.ts +22 -0
- package/dist/collection/MatchBuilder.d.ts.map +1 -0
- package/dist/collection/MatchBuilder.js +209 -0
- package/dist/collection/MatchBuilder.js.map +1 -0
- package/dist/collection/MessagesBuilder.d.ts +11 -0
- package/dist/collection/MessagesBuilder.d.ts.map +1 -0
- package/dist/collection/MessagesBuilder.js +89 -0
- package/dist/collection/MessagesBuilder.js.map +1 -0
- package/dist/collection/MmrBuilder.d.ts +16 -0
- package/dist/collection/MmrBuilder.d.ts.map +1 -0
- package/dist/collection/MmrBuilder.js +134 -0
- package/dist/collection/MmrBuilder.js.map +1 -0
- package/dist/collection/PartyBuilder.d.ts +14 -0
- package/dist/collection/PartyBuilder.d.ts.map +1 -0
- package/dist/collection/PartyBuilder.js +37 -0
- package/dist/collection/PartyBuilder.js.map +1 -0
- package/dist/collection/PlayerSettingsBuilder.d.ts +6 -0
- package/dist/collection/PlayerSettingsBuilder.d.ts.map +1 -0
- package/dist/collection/PlayerSettingsBuilder.js +41 -0
- package/dist/collection/PlayerSettingsBuilder.js.map +1 -0
- package/dist/collection/QueueConfigBuilder.d.ts +6 -0
- package/dist/collection/QueueConfigBuilder.d.ts.map +1 -0
- package/dist/collection/QueueConfigBuilder.js +14 -0
- package/dist/collection/QueueConfigBuilder.js.map +1 -0
- package/dist/collection/RankResolver.d.ts +18 -0
- package/dist/collection/RankResolver.d.ts.map +1 -0
- package/dist/collection/RankResolver.js +91 -0
- package/dist/collection/RankResolver.js.map +1 -0
- package/dist/collection/StoreBuilder.d.ts +20 -0
- package/dist/collection/StoreBuilder.d.ts.map +1 -0
- package/dist/collection/StoreBuilder.js +153 -0
- package/dist/collection/StoreBuilder.js.map +1 -0
- package/dist/collection/StoreItemResolver.d.ts +14 -0
- package/dist/collection/StoreItemResolver.d.ts.map +1 -0
- package/dist/collection/StoreItemResolver.js +138 -0
- package/dist/collection/StoreItemResolver.js.map +1 -0
- package/dist/collection/StoreOffersBuilder.d.ts +12 -0
- package/dist/collection/StoreOffersBuilder.d.ts.map +1 -0
- package/dist/collection/StoreOffersBuilder.js +46 -0
- package/dist/collection/StoreOffersBuilder.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/RiotEvents.d.ts +78 -0
- package/dist/events/RiotEvents.d.ts.map +1 -0
- package/dist/events/RiotEvents.js +284 -0
- package/dist/events/RiotEvents.js.map +1 -0
- package/dist/events/TypedEmitter.d.ts +10 -0
- package/dist/events/TypedEmitter.d.ts.map +1 -0
- package/dist/events/TypedEmitter.js +30 -0
- package/dist/events/TypedEmitter.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/local/ChatApi.d.ts +21 -0
- package/dist/local/ChatApi.d.ts.map +1 -0
- package/dist/local/ChatApi.js +89 -0
- package/dist/local/ChatApi.js.map +1 -0
- package/dist/local/Lockfile.d.ts +10 -0
- package/dist/local/Lockfile.d.ts.map +1 -0
- package/dist/local/Lockfile.js +37 -0
- package/dist/local/Lockfile.js.map +1 -0
- package/dist/local/Presence.d.ts +4 -0
- package/dist/local/Presence.d.ts.map +1 -0
- package/dist/local/Presence.js +118 -0
- package/dist/local/Presence.js.map +1 -0
- package/dist/local/RegionResolver.d.ts +12 -0
- package/dist/local/RegionResolver.d.ts.map +1 -0
- package/dist/local/RegionResolver.js +51 -0
- package/dist/local/RegionResolver.js.map +1 -0
- package/dist/local/RiotClientLocalApi.d.ts +48 -0
- package/dist/local/RiotClientLocalApi.d.ts.map +1 -0
- package/dist/local/RiotClientLocalApi.js +218 -0
- package/dist/local/RiotClientLocalApi.js.map +1 -0
- package/dist/local/RiotSocket.d.ts +56 -0
- package/dist/local/RiotSocket.d.ts.map +1 -0
- package/dist/local/RiotSocket.js +196 -0
- package/dist/local/RiotSocket.js.map +1 -0
- package/dist/local/chatTypes.d.ts +115 -0
- package/dist/local/chatTypes.d.ts.map +1 -0
- package/dist/local/chatTypes.js +2 -0
- package/dist/local/chatTypes.js.map +1 -0
- package/dist/model/index.d.ts +756 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +2 -0
- package/dist/model/index.js.map +1 -0
- package/dist/raw.d.ts +25 -0
- package/dist/raw.d.ts.map +1 -0
- package/dist/raw.js +24 -0
- package/dist/raw.js.map +1 -0
- package/dist/riot/HttpGateway.d.ts +14 -0
- package/dist/riot/HttpGateway.d.ts.map +1 -0
- package/dist/riot/HttpGateway.js +87 -0
- package/dist/riot/HttpGateway.js.map +1 -0
- package/dist/riot/ResponseCache.d.ts +15 -0
- package/dist/riot/ResponseCache.d.ts.map +1 -0
- package/dist/riot/ResponseCache.js +75 -0
- package/dist/riot/ResponseCache.js.map +1 -0
- package/dist/riot/RiotApi.d.ts +87 -0
- package/dist/riot/RiotApi.d.ts.map +1 -0
- package/dist/riot/RiotApi.js +305 -0
- package/dist/riot/RiotApi.js.map +1 -0
- package/dist/riot/Session.d.ts +24 -0
- package/dist/riot/Session.d.ts.map +1 -0
- package/dist/riot/Session.js +41 -0
- package/dist/riot/Session.js.map +1 -0
- package/dist/riot/types.d.ts +676 -0
- package/dist/riot/types.d.ts.map +1 -0
- package/dist/riot/types.js +17 -0
- package/dist/riot/types.js.map +1 -0
- package/package.json +68 -0
- package/schema/AccountXp.json +86 -0
- package/schema/BlockedPlayer.json +22 -0
- package/schema/ClientInfo.json +41 -0
- package/schema/Content.json +83 -0
- package/schema/ContractProgress.json +69 -0
- package/schema/Conversation.json +49 -0
- package/schema/CustomGameConfigs.json +64 -0
- package/schema/CustomGameSettings.json +46 -0
- package/schema/Favourite.json +22 -0
- package/schema/Friend.json +215 -0
- package/schema/FriendRequest.json +26 -0
- package/schema/GameSession.json +25 -0
- package/schema/Leaderboard.json +103 -0
- package/schema/LeaderboardEntry.json +75 -0
- package/schema/LiveMatch.json +354 -0
- package/schema/Loadout.json +241 -0
- package/schema/Match.json +494 -0
- package/schema/MatchSummary.json +38 -0
- package/schema/Message.json +48 -0
- package/schema/Mission.json +31 -0
- package/schema/Mmr.json +172 -0
- package/schema/Offer.json +163 -0
- package/schema/Order.json +177 -0
- package/schema/OwnedItems.json +308 -0
- package/schema/Participant.json +50 -0
- package/schema/Party.json +185 -0
- package/schema/PartyInvite.json +45 -0
- package/schema/PartyRequest.json +42 -0
- package/schema/Penalty.json +22 -0
- package/schema/Player.json +31 -0
- package/schema/PlayerSettings.json +76 -0
- package/schema/Premier.json +19 -0
- package/schema/QueueConfig.json +34 -0
- package/schema/RankChange.json +89 -0
- package/schema/Store.json +455 -0
- package/schema/Wallet.json +22 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import { CustomGameConfigsBuilder } from "../collection/CustomGameConfigsBuilder.js";
|
|
2
|
+
import { PartyBuilder } from "../collection/PartyBuilder.js";
|
|
3
|
+
import { QueueConfigBuilder } from "../collection/QueueConfigBuilder.js";
|
|
4
|
+
import { ValidationError } from "../errors.js";
|
|
5
|
+
import { ChatValidator } from "./ChatValidator.js";
|
|
6
|
+
import { resolveLobbyNames } from "./LiveMatchService.js";
|
|
7
|
+
import { PartyValidator } from "./PartyValidator.js";
|
|
8
|
+
export class PartyService {
|
|
9
|
+
context;
|
|
10
|
+
constructor(context) {
|
|
11
|
+
this.context = context;
|
|
12
|
+
}
|
|
13
|
+
async current() {
|
|
14
|
+
const session = await this.context.sessions.session();
|
|
15
|
+
const api = this.context.api(session);
|
|
16
|
+
const partyPlayer = await api.partyPlayer();
|
|
17
|
+
if (!partyPlayer?.CurrentPartyID) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const [rawParty, catalogue] = await Promise.all([
|
|
21
|
+
api.party(partyPlayer.CurrentPartyID),
|
|
22
|
+
this.context.catalogue(),
|
|
23
|
+
]);
|
|
24
|
+
const puuids = (rawParty.Members ?? []).map((m) => m.Subject);
|
|
25
|
+
const names = await resolveLobbyNames(api, puuids);
|
|
26
|
+
return new PartyBuilder(catalogue).build(rawParty, names);
|
|
27
|
+
}
|
|
28
|
+
async validateAction(action) {
|
|
29
|
+
PartyValidator.validateActionParameters(action);
|
|
30
|
+
const session = await this.context.sessions.session();
|
|
31
|
+
const api = this.context.api(session);
|
|
32
|
+
const partyPlayer = await api.partyPlayer();
|
|
33
|
+
if (!partyPlayer?.CurrentPartyID) {
|
|
34
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
35
|
+
}
|
|
36
|
+
const rawParty = await api.party(partyPlayer.CurrentPartyID);
|
|
37
|
+
return PartyValidator.validate(rawParty, session.puuid, action);
|
|
38
|
+
}
|
|
39
|
+
async validateInvite(riotId) {
|
|
40
|
+
return this.validateAction({ type: "invite", riotId });
|
|
41
|
+
}
|
|
42
|
+
async validateKick(puuid) {
|
|
43
|
+
return this.validateAction({ type: "kick", puuid });
|
|
44
|
+
}
|
|
45
|
+
async validatePromote(puuid) {
|
|
46
|
+
return this.validateAction({ type: "promote", puuid });
|
|
47
|
+
}
|
|
48
|
+
async validateCreateInviteCode() {
|
|
49
|
+
return this.validateAction({ type: "create-invite-code" });
|
|
50
|
+
}
|
|
51
|
+
async validateRevokeInviteCode() {
|
|
52
|
+
return this.validateAction({ type: "revoke-invite-code" });
|
|
53
|
+
}
|
|
54
|
+
async validateJoinByCode(code) {
|
|
55
|
+
return this.validateAction({ type: "join-by-code", code });
|
|
56
|
+
}
|
|
57
|
+
async validateSetReady(ready) {
|
|
58
|
+
return this.validateAction({ type: "set-ready", ready });
|
|
59
|
+
}
|
|
60
|
+
async validateSetQueue(queue) {
|
|
61
|
+
return this.validateAction({ type: "set-queue", queue });
|
|
62
|
+
}
|
|
63
|
+
async validateSetAccessibility(accessibility) {
|
|
64
|
+
return this.validateAction({ type: "set-accessibility", accessibility });
|
|
65
|
+
}
|
|
66
|
+
async validateStartMatchmaking() {
|
|
67
|
+
return this.validateAction({ type: "start-matchmaking" });
|
|
68
|
+
}
|
|
69
|
+
async validateStopMatchmaking() {
|
|
70
|
+
return this.validateAction({ type: "stop-matchmaking" });
|
|
71
|
+
}
|
|
72
|
+
async validateLeave() {
|
|
73
|
+
return this.validateAction({ type: "leave" });
|
|
74
|
+
}
|
|
75
|
+
async invite(riotId) {
|
|
76
|
+
await this.executeAction({ type: "invite", riotId });
|
|
77
|
+
return this.current();
|
|
78
|
+
}
|
|
79
|
+
async kick(puuid) {
|
|
80
|
+
await this.executeAction({ type: "kick", puuid });
|
|
81
|
+
return this.current();
|
|
82
|
+
}
|
|
83
|
+
async promote(puuid) {
|
|
84
|
+
await this.executeAction({ type: "promote", puuid });
|
|
85
|
+
return this.current();
|
|
86
|
+
}
|
|
87
|
+
async createInviteCode() {
|
|
88
|
+
await this.executeAction({ type: "create-invite-code" });
|
|
89
|
+
return this.current();
|
|
90
|
+
}
|
|
91
|
+
async revokeInviteCode() {
|
|
92
|
+
await this.executeAction({ type: "revoke-invite-code" });
|
|
93
|
+
return this.current();
|
|
94
|
+
}
|
|
95
|
+
async joinByCode(code) {
|
|
96
|
+
await this.executeAction({ type: "join-by-code", code });
|
|
97
|
+
return this.current();
|
|
98
|
+
}
|
|
99
|
+
async setReady(ready) {
|
|
100
|
+
await this.executeAction({ type: "set-ready", ready });
|
|
101
|
+
return this.current();
|
|
102
|
+
}
|
|
103
|
+
async setQueue(queue) {
|
|
104
|
+
await this.executeAction({ type: "set-queue", queue });
|
|
105
|
+
return this.current();
|
|
106
|
+
}
|
|
107
|
+
async setAccessibility(accessibility) {
|
|
108
|
+
await this.executeAction({ type: "set-accessibility", accessibility });
|
|
109
|
+
return this.current();
|
|
110
|
+
}
|
|
111
|
+
async startMatchmaking() {
|
|
112
|
+
await this.executeAction({ type: "start-matchmaking" });
|
|
113
|
+
return this.current();
|
|
114
|
+
}
|
|
115
|
+
async stopMatchmaking() {
|
|
116
|
+
await this.executeAction({ type: "stop-matchmaking" });
|
|
117
|
+
return this.current();
|
|
118
|
+
}
|
|
119
|
+
async leave() {
|
|
120
|
+
await this.executeAction({ type: "leave" });
|
|
121
|
+
return this.current();
|
|
122
|
+
}
|
|
123
|
+
async executeAction(action) {
|
|
124
|
+
PartyValidator.validateActionParameters(action);
|
|
125
|
+
const session = await this.context.sessions.session();
|
|
126
|
+
const api = this.context.api(session);
|
|
127
|
+
const partyPlayer = await api.partyPlayer();
|
|
128
|
+
if (!partyPlayer?.CurrentPartyID) {
|
|
129
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
130
|
+
}
|
|
131
|
+
const rawParty = await api.party(partyPlayer.CurrentPartyID);
|
|
132
|
+
PartyValidator.validate(rawParty, session.puuid, action);
|
|
133
|
+
await this.performAction(api, partyPlayer.CurrentPartyID, session.puuid, action);
|
|
134
|
+
}
|
|
135
|
+
async performAction(api, partyId, selfPuuid, action) {
|
|
136
|
+
switch (action.type) {
|
|
137
|
+
case "invite": {
|
|
138
|
+
const { gameName, gameTag } = ChatValidator.parseRiotId(action.riotId);
|
|
139
|
+
await api.inviteToParty(partyId, gameName, gameTag);
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case "kick":
|
|
143
|
+
await api.kickFromParty(partyId, action.puuid);
|
|
144
|
+
break;
|
|
145
|
+
case "promote":
|
|
146
|
+
await api.promotePartyMember(partyId, action.puuid);
|
|
147
|
+
break;
|
|
148
|
+
case "create-invite-code":
|
|
149
|
+
await api.createPartyInviteCode(partyId);
|
|
150
|
+
break;
|
|
151
|
+
case "revoke-invite-code":
|
|
152
|
+
await api.revokePartyInviteCode(partyId);
|
|
153
|
+
break;
|
|
154
|
+
case "join-by-code":
|
|
155
|
+
await api.joinPartyByCode(action.code);
|
|
156
|
+
break;
|
|
157
|
+
case "set-ready":
|
|
158
|
+
await api.setPartyReady(partyId, selfPuuid, action.ready);
|
|
159
|
+
break;
|
|
160
|
+
case "set-queue":
|
|
161
|
+
await api.setPartyQueue(partyId, action.queue);
|
|
162
|
+
break;
|
|
163
|
+
case "set-accessibility":
|
|
164
|
+
await api.setPartyAccessibility(partyId, action.accessibility === "open" ? "OPEN" : "CLOSED");
|
|
165
|
+
break;
|
|
166
|
+
case "start-matchmaking":
|
|
167
|
+
await api.startPartyMatchmaking(partyId);
|
|
168
|
+
break;
|
|
169
|
+
case "stop-matchmaking":
|
|
170
|
+
await api.stopPartyMatchmaking(partyId);
|
|
171
|
+
break;
|
|
172
|
+
case "leave":
|
|
173
|
+
await api.leaveParty(selfPuuid);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async queues() {
|
|
178
|
+
const session = await this.context.sessions.session();
|
|
179
|
+
const raw = await this.context.api(session).queueConfigs();
|
|
180
|
+
return QueueConfigBuilder.build(raw);
|
|
181
|
+
}
|
|
182
|
+
async customGameConfigs() {
|
|
183
|
+
const session = await this.context.sessions.session();
|
|
184
|
+
const api = this.context.api(session);
|
|
185
|
+
const [raw, catalogue, partyPlayer] = await Promise.all([
|
|
186
|
+
api.customGameConfigs(),
|
|
187
|
+
this.context.catalogue(),
|
|
188
|
+
api.partyPlayer(),
|
|
189
|
+
]);
|
|
190
|
+
return CustomGameConfigsBuilder.build(raw, catalogue, partyPlayer?.PingMap);
|
|
191
|
+
}
|
|
192
|
+
async validateJoin(partyId) {
|
|
193
|
+
const session = await this.context.sessions.session();
|
|
194
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
195
|
+
return PartyValidator.validateJoin(partyPlayer, partyId);
|
|
196
|
+
}
|
|
197
|
+
async join(partyId) {
|
|
198
|
+
const validated = await this.validateJoin(partyId);
|
|
199
|
+
const session = await this.context.sessions.session();
|
|
200
|
+
await this.context.api(session).joinParty(validated.partyId, session.puuid);
|
|
201
|
+
return this.current();
|
|
202
|
+
}
|
|
203
|
+
async validateDeclineInvite(inviteId) {
|
|
204
|
+
const session = await this.context.sessions.session();
|
|
205
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
206
|
+
return PartyValidator.validateDeclineInvite(partyPlayer, inviteId);
|
|
207
|
+
}
|
|
208
|
+
async declineInvite(inviteId) {
|
|
209
|
+
const validated = await this.validateDeclineInvite(inviteId);
|
|
210
|
+
const session = await this.context.sessions.session();
|
|
211
|
+
await this.context.api(session).declinePartyInvite(validated.partyId, validated.inviteId);
|
|
212
|
+
return { declined: true, inviteId };
|
|
213
|
+
}
|
|
214
|
+
async validateRequestToJoin(partyId) {
|
|
215
|
+
const session = await this.context.sessions.session();
|
|
216
|
+
return {
|
|
217
|
+
method: "POST",
|
|
218
|
+
path: `/parties/v1/parties/${encodeURIComponent(partyId)}/request`,
|
|
219
|
+
body: { Subjects: [session.puuid] },
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
async requestToJoin(partyId) {
|
|
223
|
+
await this.validateRequestToJoin(partyId);
|
|
224
|
+
const session = await this.context.sessions.session();
|
|
225
|
+
await this.context.api(session).requestPartyJoin(partyId, session.puuid);
|
|
226
|
+
return { requested: true, partyId };
|
|
227
|
+
}
|
|
228
|
+
async validateDeclineRequest(requestId) {
|
|
229
|
+
const session = await this.context.sessions.session();
|
|
230
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
231
|
+
if (!partyPlayer?.CurrentPartyID) {
|
|
232
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
233
|
+
}
|
|
234
|
+
const rawParty = await this.context.api(session).party(partyPlayer.CurrentPartyID);
|
|
235
|
+
return PartyValidator.validateDeclineRequest(rawParty, session.puuid, requestId);
|
|
236
|
+
}
|
|
237
|
+
async declineRequest(requestId) {
|
|
238
|
+
const validated = await this.validateDeclineRequest(requestId);
|
|
239
|
+
const session = await this.context.sessions.session();
|
|
240
|
+
await this.context.api(session).declinePartyRequest(validated.partyId, validated.requestId);
|
|
241
|
+
return { declined: true, requestId };
|
|
242
|
+
}
|
|
243
|
+
async invites() {
|
|
244
|
+
const session = await this.context.sessions.session();
|
|
245
|
+
const api = this.context.api(session);
|
|
246
|
+
const partyPlayer = await api.partyPlayer();
|
|
247
|
+
const rawInvites = partyPlayer?.Invites ?? [];
|
|
248
|
+
const puuids = rawInvites.map((i) => i.RequestedBy).filter((p) => Boolean(p));
|
|
249
|
+
const names = await resolveLobbyNames(api, puuids);
|
|
250
|
+
return rawInvites.map((i) => {
|
|
251
|
+
const nameInfo = i.RequestedBy ? names.get(i.RequestedBy) : undefined;
|
|
252
|
+
return {
|
|
253
|
+
id: i.ID,
|
|
254
|
+
partyId: i.PartyID,
|
|
255
|
+
from: i.RequestedBy
|
|
256
|
+
? {
|
|
257
|
+
puuid: i.RequestedBy,
|
|
258
|
+
gameName: nameInfo?.gameName ?? "",
|
|
259
|
+
tagLine: nameInfo?.tagLine ?? "",
|
|
260
|
+
}
|
|
261
|
+
: null,
|
|
262
|
+
at: i.CreatedAt ? new Date(i.CreatedAt).toISOString() : new Date().toISOString(),
|
|
263
|
+
};
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
async requests() {
|
|
267
|
+
const session = await this.context.sessions.session();
|
|
268
|
+
const api = this.context.api(session);
|
|
269
|
+
const partyPlayer = await api.partyPlayer();
|
|
270
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
271
|
+
return [];
|
|
272
|
+
const rawParty = await api.party(partyPlayer.CurrentPartyID);
|
|
273
|
+
const rawReqs = rawParty.Requests ?? [];
|
|
274
|
+
const puuids = rawReqs.map((r) => r.RequestedBy).filter((p) => Boolean(p));
|
|
275
|
+
const names = await resolveLobbyNames(api, puuids);
|
|
276
|
+
return rawReqs.map((r) => {
|
|
277
|
+
const nameInfo = r.RequestedBy ? names.get(r.RequestedBy) : undefined;
|
|
278
|
+
return {
|
|
279
|
+
id: r.ID,
|
|
280
|
+
from: r.RequestedBy
|
|
281
|
+
? {
|
|
282
|
+
puuid: r.RequestedBy,
|
|
283
|
+
gameName: nameInfo?.gameName ?? "",
|
|
284
|
+
tagLine: nameInfo?.tagLine ?? "",
|
|
285
|
+
}
|
|
286
|
+
: null,
|
|
287
|
+
at: r.CreatedAt ? new Date(r.CreatedAt).toISOString() : new Date().toISOString(),
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
async validateMakeCustomGame() {
|
|
292
|
+
const session = await this.context.sessions.session();
|
|
293
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
294
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
295
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
296
|
+
const party = await this.context.api(session).party(partyPlayer.CurrentPartyID);
|
|
297
|
+
const member = (party.Members ?? []).find((m) => m.Subject === session.puuid);
|
|
298
|
+
if (!member?.IsOwner)
|
|
299
|
+
throw new ValidationError("not-owner", "Caller is not the party owner");
|
|
300
|
+
return { partyId: party.ID };
|
|
301
|
+
}
|
|
302
|
+
async makeCustomGame() {
|
|
303
|
+
const validated = await this.validateMakeCustomGame();
|
|
304
|
+
const session = await this.context.sessions.session();
|
|
305
|
+
await this.context.api(session).makePartyCustomGame(validated.partyId);
|
|
306
|
+
return this.current();
|
|
307
|
+
}
|
|
308
|
+
async validateMakeDefault(queue) {
|
|
309
|
+
const session = await this.context.sessions.session();
|
|
310
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
311
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
312
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
313
|
+
const party = await this.context.api(session).party(partyPlayer.CurrentPartyID);
|
|
314
|
+
const member = (party.Members ?? []).find((m) => m.Subject === session.puuid);
|
|
315
|
+
if (!member?.IsOwner)
|
|
316
|
+
throw new ValidationError("not-owner", "Caller is not the party owner");
|
|
317
|
+
return { partyId: party.ID, queue };
|
|
318
|
+
}
|
|
319
|
+
async makeDefault(queue) {
|
|
320
|
+
const validated = await this.validateMakeDefault(queue);
|
|
321
|
+
const session = await this.context.sessions.session();
|
|
322
|
+
await this.context.api(session).makePartyDefault(validated.partyId, validated.queue);
|
|
323
|
+
return this.current();
|
|
324
|
+
}
|
|
325
|
+
async validateSetCustomGameSettings(settings) {
|
|
326
|
+
const session = await this.context.sessions.session();
|
|
327
|
+
const api = this.context.api(session);
|
|
328
|
+
const partyPlayer = await api.partyPlayer();
|
|
329
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
330
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
331
|
+
const [party, configs, catalogue] = await Promise.all([
|
|
332
|
+
api.party(partyPlayer.CurrentPartyID),
|
|
333
|
+
api.customGameConfigs(),
|
|
334
|
+
this.context.catalogue(),
|
|
335
|
+
]);
|
|
336
|
+
return PartyValidator.validateSetCustomGameSettings(party, session.puuid, settings, configs, catalogue);
|
|
337
|
+
}
|
|
338
|
+
async setCustomGameSettings(settings) {
|
|
339
|
+
const payload = await this.validateSetCustomGameSettings(settings);
|
|
340
|
+
const session = await this.context.sessions.session();
|
|
341
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
342
|
+
await this.context.api(session).setPartyCustomGameSettings(partyPlayer.CurrentPartyID, payload);
|
|
343
|
+
return this.current();
|
|
344
|
+
}
|
|
345
|
+
async validateSetTeam(puuid, team) {
|
|
346
|
+
const session = await this.context.sessions.session();
|
|
347
|
+
const api = this.context.api(session);
|
|
348
|
+
const partyPlayer = await api.partyPlayer();
|
|
349
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
350
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
351
|
+
const party = await api.party(partyPlayer.CurrentPartyID);
|
|
352
|
+
return PartyValidator.validateSetTeam(party, session.puuid, puuid, team);
|
|
353
|
+
}
|
|
354
|
+
async setTeam(puuid, team) {
|
|
355
|
+
const validated = await this.validateSetTeam(puuid, team);
|
|
356
|
+
const session = await this.context.sessions.session();
|
|
357
|
+
await this.context
|
|
358
|
+
.api(session)
|
|
359
|
+
.setPartyCustomGameTeam(validated.partyId, validated.team, validated.puuid);
|
|
360
|
+
return this.current();
|
|
361
|
+
}
|
|
362
|
+
async validateStartCustomGame() {
|
|
363
|
+
const session = await this.context.sessions.session();
|
|
364
|
+
const api = this.context.api(session);
|
|
365
|
+
const partyPlayer = await api.partyPlayer();
|
|
366
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
367
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
368
|
+
const party = await api.party(partyPlayer.CurrentPartyID);
|
|
369
|
+
return PartyValidator.validateStartCustomGame(party, session.puuid);
|
|
370
|
+
}
|
|
371
|
+
async startCustomGame() {
|
|
372
|
+
const validated = await this.validateStartCustomGame();
|
|
373
|
+
const session = await this.context.sessions.session();
|
|
374
|
+
await this.context.api(session).startPartyCustomGame(validated.partyId);
|
|
375
|
+
return this.current();
|
|
376
|
+
}
|
|
377
|
+
async validateBalanceTeams() {
|
|
378
|
+
const session = await this.context.sessions.session();
|
|
379
|
+
const api = this.context.api(session);
|
|
380
|
+
const partyPlayer = await api.partyPlayer();
|
|
381
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
382
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
383
|
+
const party = await api.party(partyPlayer.CurrentPartyID);
|
|
384
|
+
return PartyValidator.validateBalanceTeams(party, session.puuid);
|
|
385
|
+
}
|
|
386
|
+
async balanceTeams() {
|
|
387
|
+
const validated = await this.validateBalanceTeams();
|
|
388
|
+
const session = await this.context.sessions.session();
|
|
389
|
+
await this.context.api(session).balancePartyTeams(validated.partyId);
|
|
390
|
+
return this.current();
|
|
391
|
+
}
|
|
392
|
+
async validateSetPreferredServers(ids) {
|
|
393
|
+
const session = await this.context.sessions.session();
|
|
394
|
+
const api = this.context.api(session);
|
|
395
|
+
const partyPlayer = await api.partyPlayer();
|
|
396
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
397
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
398
|
+
const [party, configs] = await Promise.all([
|
|
399
|
+
api.party(partyPlayer.CurrentPartyID),
|
|
400
|
+
api.customGameConfigs(),
|
|
401
|
+
]);
|
|
402
|
+
const validPods = [
|
|
403
|
+
...Object.keys(partyPlayer.PingMap ?? {}),
|
|
404
|
+
...Object.keys(configs.GamePodPingServiceInfo ?? {}),
|
|
405
|
+
];
|
|
406
|
+
return PartyValidator.validateSetPreferredServers(party, session.puuid, ids, validPods);
|
|
407
|
+
}
|
|
408
|
+
async setPreferredServers(ids) {
|
|
409
|
+
const validated = await this.validateSetPreferredServers(ids);
|
|
410
|
+
const session = await this.context.sessions.session();
|
|
411
|
+
await this.context.api(session).setPreferredGamePods(validated.partyId, validated.gamePodIds);
|
|
412
|
+
return this.current();
|
|
413
|
+
}
|
|
414
|
+
async validateSetModerator(puuid, isModerator) {
|
|
415
|
+
const session = await this.context.sessions.session();
|
|
416
|
+
const api = this.context.api(session);
|
|
417
|
+
const partyPlayer = await api.partyPlayer();
|
|
418
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
419
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
420
|
+
const party = await api.party(partyPlayer.CurrentPartyID);
|
|
421
|
+
return PartyValidator.validateSetModerator(party, session.puuid, puuid, isModerator);
|
|
422
|
+
}
|
|
423
|
+
async setModerator(puuid, isModerator) {
|
|
424
|
+
const validated = await this.validateSetModerator(puuid, isModerator);
|
|
425
|
+
const session = await this.context.sessions.session();
|
|
426
|
+
await this.context
|
|
427
|
+
.api(session)
|
|
428
|
+
.setPlayerModeratorStatus(validated.partyId, validated.puuid, validated.isModerator);
|
|
429
|
+
return this.current();
|
|
430
|
+
}
|
|
431
|
+
async validateRefresh() {
|
|
432
|
+
const session = await this.context.sessions.session();
|
|
433
|
+
const partyPlayer = await this.context.api(session).partyPlayer();
|
|
434
|
+
if (!partyPlayer?.CurrentPartyID) {
|
|
435
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
436
|
+
}
|
|
437
|
+
return {
|
|
438
|
+
method: "POST",
|
|
439
|
+
paths: [
|
|
440
|
+
`/parties/v1/parties/members/${encodeURIComponent(session.puuid)}/refreshPings`,
|
|
441
|
+
`/parties/v1/parties/members/${encodeURIComponent(session.puuid)}/refreshCompetitiveTier`,
|
|
442
|
+
`/parties/v1/parties/members/${encodeURIComponent(session.puuid)}/refreshPlayerIdentity`,
|
|
443
|
+
],
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
async refresh() {
|
|
447
|
+
const session = await this.context.sessions.session();
|
|
448
|
+
const api = this.context.api(session);
|
|
449
|
+
const partyPlayer = await api.partyPlayer();
|
|
450
|
+
if (!partyPlayer?.CurrentPartyID)
|
|
451
|
+
throw new ValidationError("no-party", "Not currently in a party");
|
|
452
|
+
await Promise.all([
|
|
453
|
+
api.refreshPartyPings(partyPlayer.CurrentPartyID, session.puuid),
|
|
454
|
+
api.refreshPartyCompetitiveTier(partyPlayer.CurrentPartyID, session.puuid),
|
|
455
|
+
api.refreshPartyPlayerIdentity(partyPlayer.CurrentPartyID, session.puuid),
|
|
456
|
+
]);
|
|
457
|
+
return this.current();
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
//# sourceMappingURL=PartyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartyService.js","sourceRoot":"","sources":["../../src/client/PartyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAA6C,MAAM,qBAAqB,CAAC;AAGhG,MAAM,OAAO,YAAY;IACM;IAA7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAEvD,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAmB;QAC9C,cAAc,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7D,OAAO,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAc;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,aAAgC;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa;QACzB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAc;QAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,aAAgC;QACrD,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAmB;QAC7C,cAAc,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7D,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,GAAY,EACZ,OAAe,EACf,SAAiB,EACjB,MAAmB;QAEnB,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvE,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,oBAAoB;gBACvB,MAAM,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1D,MAAM;YACR,KAAK,WAAW;gBACd,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM;YACR,KAAK,mBAAmB;gBACtB,MAAM,GAAG,CAAC,qBAAqB,CAC7B,OAAO,EACP,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CACpD,CAAC;gBACF,MAAM;YACR,KAAK,mBAAmB;gBACtB,MAAM,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,kBAAkB;gBACrB,MAAM,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAChC,MAAM;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;QAC3D,OAAO,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,GAAG,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACxB,GAAG,CAAC,WAAW,EAAE;SAClB,CAAC,CAAC;QACH,OAAO,wBAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe;QAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,cAAc,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACxB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,cAAc,CAAC,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAAe;QAEf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB,kBAAkB,CAAC,OAAO,CAAC,UAAU;YAClE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACnF,OAAO,cAAc,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QAC5F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,IAAI,EAAE,CAAC,CAAC,WAAW;oBACjB,CAAC,CAAC;wBACE,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;wBAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;qBACjC;oBACH,CAAC,CAAC,IAAI;gBACR,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACjF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,OAAO,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,WAAW;oBACjB,CAAC,CAAC;wBACE,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;wBAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE;qBACjC;oBACH,CAAC,CAAC,IAAI;gBACR,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACjF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;QAC9F,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;QAC9F,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,6BAA6B,CACjC,QAA4B;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC;YACrC,GAAG,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;SACzB,CAAC,CAAC;QACH,OAAO,cAAc,CAAC,6BAA6B,CACjD,KAAK,EACL,OAAO,CAAC,KAAK,EACb,QAAQ,EACR,OAAO,EACP,SAAS,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAA4B;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,WAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,IAAY;QAEZ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAY;QACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO;aACf,GAAG,CAAC,OAAO,CAAC;aACZ,sBAAsB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,GAAa;QAEb,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC;YACrC,GAAG,CAAC,iBAAiB,EAAE;SACxB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG;YAChB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;YACzC,GAAG,MAAM,CAAC,IAAI,CAAE,OAAO,CAAC,sBAAkD,IAAI,EAAE,CAAC;SAClF,CAAC;QACF,OAAO,cAAc,CAAC,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,GAAa;QACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,KAAa,EACb,WAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO,cAAc,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,WAAoB;QACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,OAAO;aACf,GAAG,CAAC,OAAO,CAAC;aACZ,wBAAwB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,KAAK,EAAE;gBACL,+BAA+B,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe;gBAC/E,+BAA+B,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB;gBACzF,+BAA+B,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB;aACzF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,EAAE,cAAc;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACpG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC;YAChE,GAAG,CAAC,2BAA2B,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC;YAC1E,GAAG,CAAC,0BAA0B,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC;SAC1E,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Catalogue } from "../catalogue/Catalogue.js";
|
|
2
|
+
import type { CustomGameSettings } from "../model/index.js";
|
|
3
|
+
import type { RiotCustomGameConfigsResponse, RiotPartyMember, RiotPartyPlayerResponse, RiotPartyResponse } from "../riot/types.js";
|
|
4
|
+
export type PartyAction = {
|
|
5
|
+
type: "invite";
|
|
6
|
+
riotId: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: "kick";
|
|
9
|
+
puuid: string;
|
|
10
|
+
} | {
|
|
11
|
+
type: "promote";
|
|
12
|
+
puuid: string;
|
|
13
|
+
} | {
|
|
14
|
+
type: "create-invite-code";
|
|
15
|
+
} | {
|
|
16
|
+
type: "revoke-invite-code";
|
|
17
|
+
} | {
|
|
18
|
+
type: "join-by-code";
|
|
19
|
+
code: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: "set-ready";
|
|
22
|
+
ready: boolean;
|
|
23
|
+
} | {
|
|
24
|
+
type: "set-queue";
|
|
25
|
+
queue: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: "set-accessibility";
|
|
28
|
+
accessibility: "open" | "closed";
|
|
29
|
+
} | {
|
|
30
|
+
type: "start-matchmaking";
|
|
31
|
+
} | {
|
|
32
|
+
type: "stop-matchmaking";
|
|
33
|
+
} | {
|
|
34
|
+
type: "leave";
|
|
35
|
+
};
|
|
36
|
+
export interface PartyActionRequest {
|
|
37
|
+
method: "POST" | "DELETE";
|
|
38
|
+
path: string;
|
|
39
|
+
body?: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
export declare class PartyValidator {
|
|
42
|
+
static validateActionParameters(action: PartyAction): void;
|
|
43
|
+
static validate(party: RiotPartyResponse | null | undefined, selfPuuid: string, action: PartyAction): PartyActionRequest;
|
|
44
|
+
private static assertOwner;
|
|
45
|
+
private static assertIdle;
|
|
46
|
+
private static validateInvite;
|
|
47
|
+
private static validateKick;
|
|
48
|
+
private static validatePromote;
|
|
49
|
+
private static validateCreateInviteCode;
|
|
50
|
+
private static validateRevokeInviteCode;
|
|
51
|
+
private static validateJoinByCode;
|
|
52
|
+
private static validateSetReady;
|
|
53
|
+
private static validateSetQueue;
|
|
54
|
+
private static validateSetAccessibility;
|
|
55
|
+
private static validateStartMatchmaking;
|
|
56
|
+
private static validateStopMatchmaking;
|
|
57
|
+
private static validateLeave;
|
|
58
|
+
static validateJoin(playerRecord: RiotPartyPlayerResponse | null | undefined, partyId: string): {
|
|
59
|
+
partyId: string;
|
|
60
|
+
};
|
|
61
|
+
static validateDeclineInvite(playerRecord: RiotPartyPlayerResponse | null | undefined, inviteId: string): {
|
|
62
|
+
partyId: string;
|
|
63
|
+
inviteId: string;
|
|
64
|
+
};
|
|
65
|
+
static validateDeclineRequest(party: RiotPartyResponse | null | undefined, selfPuuid: string, requestId: string): {
|
|
66
|
+
partyId: string;
|
|
67
|
+
requestId: string;
|
|
68
|
+
};
|
|
69
|
+
static validateCustomGame(party: RiotPartyResponse | null | undefined, selfPuuid: string): RiotPartyMember;
|
|
70
|
+
static validateSetCustomGameSettings(party: RiotPartyResponse | null | undefined, selfPuuid: string, settings: CustomGameSettings, configs: RiotCustomGameConfigsResponse, catalogue: Catalogue): Record<string, unknown>;
|
|
71
|
+
static validateSetTeam(party: RiotPartyResponse | null | undefined, selfPuuid: string, targetPuuid: string, team: string): {
|
|
72
|
+
partyId: string;
|
|
73
|
+
team: string;
|
|
74
|
+
puuid: string;
|
|
75
|
+
};
|
|
76
|
+
static validateStartCustomGame(party: RiotPartyResponse | null | undefined, selfPuuid: string): {
|
|
77
|
+
partyId: string;
|
|
78
|
+
};
|
|
79
|
+
static validateBalanceTeams(party: RiotPartyResponse | null | undefined, selfPuuid: string): {
|
|
80
|
+
partyId: string;
|
|
81
|
+
};
|
|
82
|
+
static validateSetPreferredServers(party: RiotPartyResponse | null | undefined, selfPuuid: string, ids: string[], validPods: string[]): {
|
|
83
|
+
partyId: string;
|
|
84
|
+
gamePodIds: string[];
|
|
85
|
+
};
|
|
86
|
+
static validateSetModerator(party: RiotPartyResponse | null | undefined, selfPuuid: string, targetPuuid: string, isModerator: boolean): {
|
|
87
|
+
partyId: string;
|
|
88
|
+
puuid: string;
|
|
89
|
+
isModerator: boolean;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export declare function normalizeCustomGameTeam(raw: string): string;
|
|
93
|
+
//# sourceMappingURL=PartyValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PartyValidator.d.ts","sourceRoot":"","sources":["../../src/client/PartyValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,cAAc;IACzB,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAa1D,MAAM,CAAC,QAAQ,CACb,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,kBAAkB;IA0CrB,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB,OAAO,CAAC,MAAM,CAAC,cAAc;IAS7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAuB3B,OAAO,CAAC,MAAM,CAAC,eAAe;IAuB9B,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAWvC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuB/B,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAoDvC,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAgBtC,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACxD,OAAO,EAAE,MAAM,GACd;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAYtB,MAAM,CAAC,qBAAqB,CAC1B,YAAY,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EACxD,QAAQ,EAAE,MAAM,GACf;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAQxC,MAAM,CAAC,sBAAsB,CAC3B,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAezC,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,GAChB,eAAe;IAiBlB,MAAM,CAAC,6BAA6B,CAClC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,6BAA6B,EACtC,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAuD1B,MAAM,CAAC,eAAe,CACpB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAYnD,MAAM,CAAC,uBAAuB,CAC5B,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,GAChB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAetB,MAAM,CAAC,oBAAoB,CACzB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,GAChB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAMtB,MAAM,CAAC,2BAA2B,CAChC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EAAE,EACb,SAAS,EAAE,MAAM,EAAE,GAClB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAkB5C,MAAM,CAAC,oBAAoB,CACzB,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,OAAO,GACnB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE;CAiB5D;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoB3D"}
|