@openora/core 0.4.1-canary.65 → 0.4.1-canary.67

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 (157) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/audit/__tests__/audit.service.int.test.js +157 -2
  3. package/dist/audit/__tests__/audit.service.int.test.js.map +1 -1
  4. package/dist/audit/plugin.d.ts +2 -0
  5. package/dist/audit/plugin.d.ts.map +1 -1
  6. package/dist/audit/plugin.js +50 -34
  7. package/dist/audit/plugin.js.map +1 -1
  8. package/dist/casino/gaming/__tests__/gaming.service.int.test.js +4 -3
  9. package/dist/casino/gaming/__tests__/gaming.service.int.test.js.map +1 -1
  10. package/dist/casino/gaming/plugin.d.ts +1 -1
  11. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  12. package/dist/casino/gaming/plugin.js +3 -3
  13. package/dist/casino/gaming/plugin.js.map +1 -1
  14. package/dist/casino/gaming/service/gaming.service.d.ts +3 -2
  15. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  16. package/dist/casino/gaming/service/gaming.service.js +9 -2
  17. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  18. package/dist/compliance/__tests__/compliance.service.int.test.js +4 -3
  19. package/dist/compliance/__tests__/compliance.service.int.test.js.map +1 -1
  20. package/dist/compliance/__tests__/kyc-admin.router.int.test.js +2 -1
  21. package/dist/compliance/__tests__/kyc-admin.router.int.test.js.map +1 -1
  22. package/dist/compliance/__tests__/kyc.service.int.test.js +2 -1
  23. package/dist/compliance/__tests__/kyc.service.int.test.js.map +1 -1
  24. package/dist/compliance/__tests__/rg.router.int.test.js +4 -2
  25. package/dist/compliance/__tests__/rg.router.int.test.js.map +1 -1
  26. package/dist/compliance/__tests__/rg.service.int.test.js +4 -2
  27. package/dist/compliance/__tests__/rg.service.int.test.js.map +1 -1
  28. package/dist/compliance/plugin.d.ts.map +1 -1
  29. package/dist/compliance/plugin.js +4 -2
  30. package/dist/compliance/plugin.js.map +1 -1
  31. package/dist/compliance/service/compliance.service.d.ts +3 -2
  32. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  33. package/dist/compliance/service/compliance.service.js +5 -1
  34. package/dist/compliance/service/compliance.service.js.map +1 -1
  35. package/dist/compliance/service/kyc.service.d.ts +3 -1
  36. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  37. package/dist/compliance/service/kyc.service.js +6 -2
  38. package/dist/compliance/service/kyc.service.js.map +1 -1
  39. package/dist/compliance/service/rg.service.d.ts +3 -1
  40. package/dist/compliance/service/rg.service.d.ts.map +1 -1
  41. package/dist/compliance/service/rg.service.js +7 -0
  42. package/dist/compliance/service/rg.service.js.map +1 -1
  43. package/dist/contracts/adapters/identity-reader.d.ts +2 -0
  44. package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
  45. package/dist/contracts/adapters/identity-reader.js.map +1 -1
  46. package/dist/contracts/schemas/events.d.ts +46 -0
  47. package/dist/contracts/schemas/events.d.ts.map +1 -1
  48. package/dist/contracts/schemas/events.js +121 -24
  49. package/dist/contracts/schemas/events.js.map +1 -1
  50. package/dist/engagement/chat/__tests__/chat.service.int.test.js +8 -3
  51. package/dist/engagement/chat/__tests__/chat.service.int.test.js.map +1 -1
  52. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  53. package/dist/engagement/chat/plugin.js +2 -2
  54. package/dist/engagement/chat/plugin.js.map +1 -1
  55. package/dist/engagement/chat/service/chat.service.d.ts +3 -2
  56. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  57. package/dist/engagement/chat/service/chat.service.js +18 -1
  58. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  59. package/dist/engagement/chat-commands/contract/index.d.ts +1 -0
  60. package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -1
  61. package/dist/engagement/chat-commands/contract/index.js +1 -0
  62. package/dist/engagement/chat-commands/contract/index.js.map +1 -1
  63. package/dist/engagement/chat-commands/router/index.d.ts +1 -0
  64. package/dist/engagement/chat-commands/router/index.d.ts.map +1 -1
  65. package/dist/engagement/chat-commands/router/index.js +1 -1
  66. package/dist/engagement/chat-commands/router/index.js.map +1 -1
  67. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +61 -4
  68. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -1
  69. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +6 -1
  70. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -1
  71. package/dist/engagement/chat-commands/service/chat-commands.service.js +10 -3
  72. package/dist/engagement/chat-commands/service/chat-commands.service.js.map +1 -1
  73. package/dist/iam/__tests__/iam.service.int.test.js +42 -38
  74. package/dist/iam/__tests__/iam.service.int.test.js.map +1 -1
  75. package/dist/iam/plugin.d.ts.map +1 -1
  76. package/dist/iam/plugin.js +2 -2
  77. package/dist/iam/plugin.js.map +1 -1
  78. package/dist/iam/service/iam.service.d.ts +3 -2
  79. package/dist/iam/service/iam.service.d.ts.map +1 -1
  80. package/dist/iam/service/iam.service.js +24 -10
  81. package/dist/iam/service/iam.service.js.map +1 -1
  82. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js +6 -2
  83. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js.map +1 -1
  84. package/dist/pam/identity/__tests__/identity.service.int.test.js +3 -2
  85. package/dist/pam/identity/__tests__/identity.service.int.test.js.map +1 -1
  86. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js +8 -3
  87. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js.map +1 -1
  88. package/dist/pam/identity/adapters/identity-reader.service.d.ts +1 -0
  89. package/dist/pam/identity/adapters/identity-reader.service.d.ts.map +1 -1
  90. package/dist/pam/identity/adapters/identity-reader.service.js +11 -0
  91. package/dist/pam/identity/adapters/identity-reader.service.js.map +1 -1
  92. package/dist/pam/identity/plugin.d.ts.map +1 -1
  93. package/dist/pam/identity/plugin.js +16 -3
  94. package/dist/pam/identity/plugin.js.map +1 -1
  95. package/dist/pam/identity/service/identity.service.d.ts +4 -2
  96. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  97. package/dist/pam/identity/service/identity.service.js +81 -31
  98. package/dist/pam/identity/service/identity.service.js.map +1 -1
  99. package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -1
  100. package/dist/pam/identity/service/phone-login.service.js +16 -6
  101. package/dist/pam/identity/service/phone-login.service.js.map +1 -1
  102. package/dist/pam/identity/service/session.service.d.ts +4 -2
  103. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  104. package/dist/pam/identity/service/session.service.js +5 -1
  105. package/dist/pam/identity/service/session.service.js.map +1 -1
  106. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js +2 -1
  107. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js.map +1 -1
  108. package/dist/pam/player-management/__tests__/player.service.int.test.js +1 -0
  109. package/dist/pam/player-management/__tests__/player.service.int.test.js.map +1 -1
  110. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  111. package/dist/pam/player-management/service/kyc-status-writer.js +2 -1
  112. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  113. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  114. package/dist/pam/player-management/service/player.service.js +1 -0
  115. package/dist/pam/player-management/service/player.service.js.map +1 -1
  116. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js +57 -13
  117. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js.map +1 -1
  118. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  119. package/dist/pam/tag/service/tag.service.js +25 -0
  120. package/dist/pam/tag/service/tag.service.js.map +1 -1
  121. package/dist/server/auth/admin-guard.d.ts +3 -2
  122. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  123. package/dist/server/auth/admin-guard.js +28 -9
  124. package/dist/server/auth/admin-guard.js.map +1 -1
  125. package/dist/server/kernel/__tests__/event-bus.int.test.js +9 -5
  126. package/dist/server/kernel/__tests__/event-bus.int.test.js.map +1 -1
  127. package/dist/server/runtime/create-app.d.ts.map +1 -1
  128. package/dist/server/runtime/create-app.js +4 -2
  129. package/dist/server/runtime/create-app.js.map +1 -1
  130. package/dist/testing/mock.d.ts +2 -1
  131. package/dist/testing/mock.d.ts.map +1 -1
  132. package/dist/testing/mock.js +8 -0
  133. package/dist/testing/mock.js.map +1 -1
  134. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js +2 -1
  135. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js.map +1 -1
  136. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js +4 -2
  137. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js.map +1 -1
  138. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js +5 -2
  139. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js.map +1 -1
  140. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js +4 -2
  141. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js.map +1 -1
  142. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js +4 -2
  143. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js.map +1 -1
  144. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js +4 -2
  145. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js.map +1 -1
  146. package/dist/wallet/__tests__/wallet.router.int.test.js +2 -1
  147. package/dist/wallet/__tests__/wallet.router.int.test.js.map +1 -1
  148. package/dist/wallet/__tests__/wallet.service.int.test.js +4 -2
  149. package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -1
  150. package/dist/wallet/plugin.d.ts.map +1 -1
  151. package/dist/wallet/plugin.js +2 -1
  152. package/dist/wallet/plugin.js.map +1 -1
  153. package/dist/wallet/service/wallet.service.d.ts +4 -2
  154. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  155. package/dist/wallet/service/wallet.service.js +8 -1
  156. package/dist/wallet/service/wallet.service.js.map +1 -1
  157. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from 'vitest';
3
3
  import { sql, eq } from 'drizzle-orm';
4
- import { mock, NO_CLIENT_META, makeEventBus } from '../../testing/mock.js';
4
+ import { makeIdentityReader, mock, NO_CLIENT_META, makeEventBus } from '../../testing/mock.js';
5
5
  import { statement, findOneOrThrow, RedisCache, RedisRateLimiter, } from '@openora/core/server';
6
6
  import { createTestDb, createTestRedis } from '@openora/core/testing';
7
7
  import { migrate as migrateIam } from '@openora/core/iam/migrate';
@@ -12,6 +12,10 @@ import { IamService, DbAdminPermissionResolver, RoleNotFoundError, InvalidGrantE
12
12
  let db;
13
13
  let redis;
14
14
  const makeEmail = () => mock({ send: vi.fn().mockResolvedValue(undefined) });
15
+ const identityReader = makeIdentityReader();
16
+ function makeIamService(drizzle, events, email, sessionCommands, rateLimiter) {
17
+ return new IamService(drizzle, events, email, identityReader, sessionCommands, rateLimiter);
18
+ }
15
19
  // Bootstrap super-admin: no DB assignment row + user.role === 'admin' passes the static fallback.
16
20
  const ADMIN_CALLER = { userId: randomUUID(), role: 'admin', ...NO_CLIENT_META };
17
21
  const SUPPORT_CALLER = { userId: randomUUID(), role: 'support', ...NO_CLIENT_META };
@@ -55,7 +59,7 @@ beforeEach(async () => {
55
59
  });
56
60
  describe('IamService.listCatalog', () => {
57
61
  it('omits the admin module from the assignable catalog', () => {
58
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
62
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
59
63
  const catalog = svc.listCatalog();
60
64
  expect(catalog.modules.some((m) => m.resource === 'admin')).toBe(false);
61
65
  expect(catalog.modules.some((m) => m.resource === 'player')).toBe(true);
@@ -143,7 +147,7 @@ describe('IamService.setRolePermissions', () => {
143
147
  it('rejects a non-super-admin caller and audits the denial', async () => {
144
148
  const role = await seedRole();
145
149
  const events = makeEventBus();
146
- const svc = new IamService(db.drizzle, events, makeEmail());
150
+ const svc = makeIamService(db.drizzle, events, makeEmail());
147
151
  await expect(svc.setRolePermissions({
148
152
  roleId: role.id,
149
153
  grants: [{ resource: 'player', level: 'read' }],
@@ -157,7 +161,7 @@ describe('IamService.setRolePermissions', () => {
157
161
  }));
158
162
  });
159
163
  it('throws RoleNotFoundError when the role does not exist', async () => {
160
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
164
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
161
165
  await expect(svc.setRolePermissions({
162
166
  roleId: randomUUID(),
163
167
  grants: [{ resource: 'player', level: 'read' }],
@@ -166,7 +170,7 @@ describe('IamService.setRolePermissions', () => {
166
170
  });
167
171
  it('throws InvalidGrantError for an unknown module', async () => {
168
172
  const role = await seedRole();
169
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
173
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
170
174
  await expect(svc.setRolePermissions({
171
175
  roleId: role.id,
172
176
  grants: [{ resource: 'nonexistent', level: 'read' }],
@@ -175,7 +179,7 @@ describe('IamService.setRolePermissions', () => {
175
179
  });
176
180
  it('rejects a grant targeting the admin module (super-admin-only, A6)', async () => {
177
181
  const role = await seedRole();
178
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
182
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
179
183
  await expect(svc.setRolePermissions({
180
184
  roleId: role.id,
181
185
  grants: [{ resource: 'admin', level: 'read_write' }],
@@ -184,7 +188,7 @@ describe('IamService.setRolePermissions', () => {
184
188
  });
185
189
  it('blocks editing a super-admin role (always full)', async () => {
186
190
  const role = await seedRole({ isSuperAdmin: true, isSystem: true });
187
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
191
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
188
192
  await expect(svc.setRolePermissions({
189
193
  roleId: role.id,
190
194
  grants: [{ resource: 'player', level: 'read' }],
@@ -193,7 +197,7 @@ describe('IamService.setRolePermissions', () => {
193
197
  });
194
198
  it('a super caller may grant any level and the rows are persisted', async () => {
195
199
  const role = await seedRole();
196
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
200
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
197
201
  const result = await svc.setRolePermissions({
198
202
  roleId: role.id,
199
203
  grants: [{ resource: 'withdrawal', level: 'read_write' }],
@@ -210,7 +214,7 @@ describe('IamService.setRolePermissions', () => {
210
214
  it('emits iam.role.permissions.changed with actorId', async () => {
211
215
  const role = await seedRole();
212
216
  const events = makeEventBus();
213
- const svc = new IamService(db.drizzle, events, makeEmail());
217
+ const svc = makeIamService(db.drizzle, events, makeEmail());
214
218
  await svc.setRolePermissions({
215
219
  roleId: role.id,
216
220
  grants: [{ resource: 'player', level: 'read' }],
@@ -222,13 +226,13 @@ describe('IamService.setRolePermissions', () => {
222
226
  describe('IamService.updateRole', () => {
223
227
  it('blocks renaming the super-admin role', async () => {
224
228
  const role = await seedRole({ isSuperAdmin: true, isSystem: true });
225
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
229
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
226
230
  await expect(svc.updateRole({ roleId: role.id, name: 'Renamed', caller: ADMIN_CALLER })).rejects.toBeInstanceOf(ProtectedRoleError);
227
231
  });
228
232
  it('allows renaming a predefined (isSystem, non-super) role', async () => {
229
233
  const role = await seedRole({ isSystem: true, isSuperAdmin: false });
230
234
  const events = makeEventBus();
231
- const svc = new IamService(db.drizzle, events, makeEmail());
235
+ const svc = makeIamService(db.drizzle, events, makeEmail());
232
236
  const result = await svc.updateRole({ roleId: role.id, name: 'Renamed', caller: ADMIN_CALLER });
233
237
  expect(result.name).toBe('Renamed');
234
238
  expect(events.emit).toHaveBeenCalledWith('iam.role.updated', expect.objectContaining({ roleId: role.id, actorId: ADMIN_CALLER.userId }));
@@ -239,18 +243,18 @@ describe('IamService.updateRole', () => {
239
243
  describe('IamService.deleteRole', () => {
240
244
  it('blocks deleting a system role', async () => {
241
245
  const role = await seedRole({ isSystem: true });
242
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
246
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
243
247
  await expect(svc.deleteRole({ roleId: role.id, caller: ADMIN_CALLER })).rejects.toBeInstanceOf(ProtectedRoleError);
244
248
  });
245
249
  it('blocks deleting a super-admin role', async () => {
246
250
  const role = await seedRole({ isSuperAdmin: true });
247
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
251
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
248
252
  await expect(svc.deleteRole({ roleId: role.id, caller: ADMIN_CALLER })).rejects.toBeInstanceOf(ProtectedRoleError);
249
253
  });
250
254
  it('deletes a custom role with no assignments and emits only iam.role.deleted', async () => {
251
255
  const role = await seedRole();
252
256
  const events = makeEventBus();
253
- const svc = new IamService(db.drizzle, events, makeEmail());
257
+ const svc = makeIamService(db.drizzle, events, makeEmail());
254
258
  const result = await svc.deleteRole({ roleId: role.id, caller: ADMIN_CALLER });
255
259
  expect(result).toEqual({ success: true });
256
260
  expect(events.emit).toHaveBeenCalledWith('iam.role.deleted', expect.objectContaining({ roleId: role.id, actorId: ADMIN_CALLER.userId }));
@@ -264,7 +268,7 @@ describe('IamService.deleteRole', () => {
264
268
  await seedAssignment(userA, role.id);
265
269
  await seedAssignment(userB, role.id);
266
270
  const events = makeEventBus();
267
- const svc = new IamService(db.drizzle, events, makeEmail());
271
+ const svc = makeIamService(db.drizzle, events, makeEmail());
268
272
  const result = await svc.deleteRole({ roleId: role.id, caller: ADMIN_CALLER });
269
273
  expect(result).toEqual({ success: true });
270
274
  expect(events.emit).toHaveBeenCalledWith('iam.role.revoked', {
@@ -292,7 +296,7 @@ describe('IamService.assignRole', () => {
292
296
  const target = await seedUser('admin');
293
297
  await seedAssignment(target.id, role.id);
294
298
  const events = makeEventBus();
295
- const svc = new IamService(db.drizzle, events, makeEmail());
299
+ const svc = makeIamService(db.drizzle, events, makeEmail());
296
300
  const result = await svc.assignRole({
297
301
  userId: target.id,
298
302
  roleId: role.id,
@@ -307,18 +311,18 @@ describe('IamService.assignRole', () => {
307
311
  it('rejects assigning a role to a non-admin (player) account', async () => {
308
312
  const role = await seedRole();
309
313
  const player = await seedUser('player');
310
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
314
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
311
315
  await expect(svc.assignRole({ userId: player.id, roleId: role.id, caller: ADMIN_CALLER })).rejects.toThrow(NotAnAdminUserError);
312
316
  });
313
317
  it('rejects assigning a role to an unknown user', async () => {
314
318
  const role = await seedRole();
315
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
319
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
316
320
  await expect(svc.assignRole({ userId: randomUUID(), roleId: role.id, caller: ADMIN_CALLER })).rejects.toThrow(AdminUserNotFoundError);
317
321
  });
318
322
  it('the unique index keeps two concurrent assigns from double-inserting', async () => {
319
323
  const role = await seedRole();
320
324
  const target = await seedUser('admin');
321
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
325
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
322
326
  await Promise.allSettled([
323
327
  svc.assignRole({ userId: target.id, roleId: role.id, caller: ADMIN_CALLER }),
324
328
  svc.assignRole({ userId: target.id, roleId: role.id, caller: ADMIN_CALLER }),
@@ -335,7 +339,7 @@ describe('IamService.unassignRole', () => {
335
339
  const superRole = await seedRole({ isSuperAdmin: true, isSystem: true });
336
340
  const target = randomUUID();
337
341
  await seedAssignment(target, superRole.id);
338
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
342
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
339
343
  await expect(svc.unassignRole({ userId: target, roleId: superRole.id, caller: ADMIN_CALLER })).rejects.toBeInstanceOf(LastSuperAdminError);
340
344
  // The holder survives the rejected unassign.
341
345
  expect(await db.drizzle.db.select().from(adminRoleAssignment)).toHaveLength(1);
@@ -343,7 +347,7 @@ describe('IamService.unassignRole', () => {
343
347
  it('returns success but emits no revoked event when nothing was deleted', async () => {
344
348
  const role = await seedRole();
345
349
  const events = makeEventBus();
346
- const svc = new IamService(db.drizzle, events, makeEmail());
350
+ const svc = makeIamService(db.drizzle, events, makeEmail());
347
351
  const result = await svc.unassignRole({
348
352
  userId: randomUUID(),
349
353
  roleId: role.id,
@@ -357,7 +361,7 @@ describe('IamService.unassignRole', () => {
357
361
  const target = randomUUID();
358
362
  await seedAssignment(target, role.id);
359
363
  const events = makeEventBus();
360
- const svc = new IamService(db.drizzle, events, makeEmail());
364
+ const svc = makeIamService(db.drizzle, events, makeEmail());
361
365
  await svc.unassignRole({ userId: target, roleId: role.id, caller: ADMIN_CALLER });
362
366
  expect(events.emit).toHaveBeenCalledWith('iam.role.revoked', expect.objectContaining({ roleId: role.id, userId: target, actorId: ADMIN_CALLER.userId }));
363
367
  expect(await db.drizzle.db.select().from(adminRoleAssignment)).toHaveLength(0);
@@ -368,7 +372,7 @@ describe('IamService.unassignRole', () => {
368
372
  const userB = randomUUID();
369
373
  await seedAssignment(userA, superRole.id);
370
374
  await seedAssignment(userB, superRole.id);
371
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
375
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
372
376
  const results = await Promise.allSettled([
373
377
  svc.unassignRole({ userId: userA, roleId: superRole.id, caller: ADMIN_CALLER }),
374
378
  svc.unassignRole({ userId: userB, roleId: superRole.id, caller: ADMIN_CALLER }),
@@ -387,7 +391,7 @@ describe('IamService.previewEffectivePermissions', () => {
387
391
  await seedPermission(roleA.id, 'player', 'read');
388
392
  await seedPermission(roleA.id, 'withdrawal', 'read');
389
393
  await seedPermission(roleB.id, 'player', 'read_write');
390
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
394
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
391
395
  const result = await svc.previewEffectivePermissions({ roleIds: [roleA.id, roleB.id] });
392
396
  expect(result.permissions).toContainEqual({ resource: 'player', level: 'read_write' });
393
397
  expect(result.permissions).toContainEqual({ resource: 'withdrawal', level: 'read' });
@@ -395,14 +399,14 @@ describe('IamService.previewEffectivePermissions', () => {
395
399
  });
396
400
  it('super-admin role in the set yields all modules read_write', async () => {
397
401
  const superRole = await seedRole({ isSuperAdmin: true });
398
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
402
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
399
403
  const result = await svc.previewEffectivePermissions({ roleIds: [superRole.id] });
400
404
  expect(result.permissions).toHaveLength(Object.keys(statement).length);
401
405
  expect(result.permissions.every((p) => p.level === 'read_write')).toBe(true);
402
406
  });
403
407
  it('falls back to static role permissions when the user has no dynamic role assignments', async () => {
404
408
  const u = await seedUser('support');
405
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
409
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
406
410
  const result = await svc.previewEffectivePermissions({ userId: u.id });
407
411
  expect(result.permissions).not.toHaveLength(0);
408
412
  expect(result.permissions).toContainEqual({ resource: 'player', level: 'read' });
@@ -424,7 +428,7 @@ describe('IamService.acceptInvitation', () => {
424
428
  it('accepts once and emits exactly one event; a replay conflicts and emits nothing more', async () => {
425
429
  const token = await seedInvitation();
426
430
  const events = makeEventBus();
427
- const svc = new IamService(db.drizzle, events, makeEmail());
431
+ const svc = makeIamService(db.drizzle, events, makeEmail());
428
432
  const first = await svc.acceptInvitation(token);
429
433
  expect(first).toEqual({ success: true, email: 'who@admin.com' });
430
434
  await expect(svc.acceptInvitation(token)).rejects.toBeInstanceOf(InvitationConflictError);
@@ -433,7 +437,7 @@ describe('IamService.acceptInvitation', () => {
433
437
  it('two concurrent accepts: exactly one succeeds, one event (atomic conditional UPDATE)', async () => {
434
438
  const token = await seedInvitation();
435
439
  const events = makeEventBus();
436
- const svc = new IamService(db.drizzle, events, makeEmail());
440
+ const svc = makeIamService(db.drizzle, events, makeEmail());
437
441
  const results = await Promise.allSettled([
438
442
  svc.acceptInvitation(token),
439
443
  svc.acceptInvitation(token),
@@ -450,7 +454,7 @@ describe('IamService.inviteAdmin', () => {
450
454
  it('creates a pending invitation and calls SEND_EMAIL when caller is super-admin', async () => {
451
455
  const role = await seedRole();
452
456
  const email = makeEmail();
453
- const svc = new IamService(db.drizzle, makeEventBus(), email);
457
+ const svc = makeIamService(db.drizzle, makeEventBus(), email);
454
458
  const result = await svc.inviteAdmin({
455
459
  email: 'new@admin.com',
456
460
  roleId: role.id,
@@ -467,7 +471,7 @@ describe('IamService.inviteAdmin', () => {
467
471
  it('rejects a non-super-admin caller', async () => {
468
472
  const role = await seedRole();
469
473
  const email = makeEmail();
470
- const svc = new IamService(db.drizzle, makeEventBus(), email);
474
+ const svc = makeIamService(db.drizzle, makeEventBus(), email);
471
475
  await expect(svc.inviteAdmin({ email: 'new@admin.com', roleId: role.id, caller: SUPPORT_CALLER })).rejects.toBeInstanceOf(NotSuperAdminError);
472
476
  expect(email.send).not.toHaveBeenCalled();
473
477
  });
@@ -475,7 +479,7 @@ describe('IamService.inviteAdmin', () => {
475
479
  describe('IamService paginated lists', () => {
476
480
  it('listRoles returns { items, total, page, limit }', async () => {
477
481
  const role = await seedRole();
478
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
482
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
479
483
  const result = await svc.listRoles({ page: 1, limit: 10 });
480
484
  expect(result.total).toBe(1);
481
485
  expect(result.page).toBe(1);
@@ -492,7 +496,7 @@ describe('IamService paginated lists', () => {
492
496
  status: 'pending',
493
497
  expiresAt: new Date(Date.now() + 60_000),
494
498
  });
495
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
499
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
496
500
  const result = await svc.listInvitations({ page: 1, limit: 20 });
497
501
  expect(result.total).toBe(1);
498
502
  expect(result.items).toHaveLength(1);
@@ -501,7 +505,7 @@ describe('IamService paginated lists', () => {
501
505
  it('listAssignments returns the paginated wrapper with joined role fields', async () => {
502
506
  const role = await seedRole({ name: 'Ops' });
503
507
  await seedAssignment(randomUUID(), role.id);
504
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
508
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
505
509
  const result = await svc.listAssignments({ page: 1, limit: 20 });
506
510
  expect(result.total).toBe(1);
507
511
  expect(result.items).toHaveLength(1);
@@ -511,7 +515,7 @@ describe('IamService paginated lists', () => {
511
515
  describe('IamService.reportAccessDenied', () => {
512
516
  it('records and audits a genuine denial (caller lacks the resource/level)', async () => {
513
517
  const events = makeEventBus();
514
- const svc = new IamService(db.drizzle, events, makeEmail());
518
+ const svc = makeIamService(db.drizzle, events, makeEmail());
515
519
  const result = await svc.reportAccessDenied({
516
520
  resource: 'withdrawal',
517
521
  level: 'read',
@@ -527,7 +531,7 @@ describe('IamService.reportAccessDenied', () => {
527
531
  });
528
532
  it('does not record or emit when the caller genuinely holds the permission', async () => {
529
533
  const events = makeEventBus();
530
- const svc = new IamService(db.drizzle, events, makeEmail());
534
+ const svc = makeIamService(db.drizzle, events, makeEmail());
531
535
  const result = await svc.reportAccessDenied({
532
536
  resource: 'player',
533
537
  level: 'read_write',
@@ -539,7 +543,7 @@ describe('IamService.reportAccessDenied', () => {
539
543
  it('with a rate limiter wired, a repeat report within the window is throttled and not recorded again', async () => {
540
544
  const events = makeEventBus();
541
545
  const limiter = new RedisRateLimiter(redis.client);
542
- const svc = new IamService(db.drizzle, events, makeEmail(), undefined, limiter);
546
+ const svc = makeIamService(db.drizzle, events, makeEmail(), undefined, limiter);
543
547
  const first = await svc.reportAccessDenied({
544
548
  resource: 'withdrawal',
545
549
  level: 'read',
@@ -558,7 +562,7 @@ describe('IamService.reportAccessDenied', () => {
558
562
  });
559
563
  describe('IamService.forceLogout', () => {
560
564
  it('rejects a non-super-admin caller', async () => {
561
- const svc = new IamService(db.drizzle, makeEventBus(), makeEmail());
565
+ const svc = makeIamService(db.drizzle, makeEventBus(), makeEmail());
562
566
  await expect(svc.forceLogout({ userId: randomUUID(), caller: SUPPORT_CALLER })).rejects.toBeInstanceOf(NotSuperAdminError);
563
567
  });
564
568
  it('allows a super-admin caller to delete sessions for a user via SessionCommands', async () => {
@@ -566,7 +570,7 @@ describe('IamService.forceLogout', () => {
566
570
  const sessionCommands = mock({
567
571
  revokeAll: vi.fn().mockResolvedValue({ success: true }),
568
572
  });
569
- const svc = new IamService(db.drizzle, events, makeEmail(), sessionCommands);
573
+ const svc = makeIamService(db.drizzle, events, makeEmail(), sessionCommands);
570
574
  const targetUserId = randomUUID();
571
575
  const result = await svc.forceLogout({ userId: targetUserId, caller: ADMIN_CALLER });
572
576
  expect(result).toEqual({ success: true });
@@ -1 +1 @@
1
- {"version":3,"file":"iam.service.int.test.js","sourceRoot":"","sources":["../../../src/iam/__tests__/iam.service.int.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EACL,SAAS,EACT,cAAc,EACd,UAAU,EACV,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,eAAe,EAA+B,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AACzD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,IAAI,EAAU,CAAC;AACf,IAAI,KAAgB,CAAC;AAErB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAE5F,kGAAkG;AAClG,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AAChF,MAAM,cAAc,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;AAEpF,MAAM,YAAY,GAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAoB,CAAC,MAAM,CACpE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAI,SAAS,CAAC,CAAC,CAAuB,CAAC,MAAM,EACxD,CAAC,CACF,CAAC;AAEF,KAAK,UAAU,QAAQ,CACrB,YAAyF,EAAE;IAE3F,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;SAC9B,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC;QACN,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,KAAK;QAC7B,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,IAAI;QAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,KAAK;QACrC,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;KAC9C,CAAC;SACD,SAAS,EAAE,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;SAC9B,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;SAC3D,SAAS,EAAE,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IAC1D,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAc,EACd,QAAgB,EAChB,KAA0C;IAE1C,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;IACvD,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAChB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CACzB,GAAG,CAAA,YAAY,SAAS,KAAK,mBAAmB,KAAK,mBAAmB,KAAK,eAAe,KAAK,IAAI,2BAA2B,CACjI,CAAC;IACF,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,4CAA4C;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6DAA6D,EAAE,GAAG,EAAE;IAC3E,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzF,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAEpE,oFAAoF;QACpF,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzF,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,MAAM,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzF,uEAAuE;QACvE,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAEvF,8DAA8D;QAC9D,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;aAChB,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;aAC5B,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvC,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,CACV,GAAG,CAAC,kBAAkB,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,MAAM,EAAE,cAAc;SACvB,CAAC,CACH,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,mCAAmC,EACnC,MAAM,CAAC,gBAAgB,CAAC;YACtB,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,SAAS;SAChB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,kBAAkB,CAAC;YACrB,MAAM,EAAE,UAAU,EAAE;YACpB,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,MAAM,EAAE,YAAY;SACrB,CAAC,CACH,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,kBAAkB,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAW,CAAC;YAC7D,MAAM,EAAE,YAAY;SACrB,CAAC,CACH,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,kBAAkB,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YACpD,MAAM,EAAE,YAAY;SACrB,CAAC,CACH,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,kBAAkB,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,MAAM,EAAE,YAAY;SACrB,CAAC,CACH,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;YACzD,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAE3F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;aAC7B,MAAM,EAAE;aACR,IAAI,CAAC,mBAAmB,CAAC;aACzB,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC/C,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,8BAA8B,EAC9B,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAC3E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAC3E,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAChG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAC3E,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAC5F,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAC5F,kBAAkB,CACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAC3E,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpF,MAAM,CACJ,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC9E,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC7G,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;YAC3D,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,YAAY,CAAC,MAAM;YAC5B,GAAG,cAAc;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE;YAC3D,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,YAAY,CAAC,MAAM;YAC5B,GAAG,cAAc;SAClB,CAAC,CAAC;QACH,MAAM,WAAW,GAAI,MAAM,CAAC,IAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAC7E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,kBAAkB,CACnC,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAC3E,CAAC;QACF,iDAAiD;QACjD,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrF,uEAAuE;QACvE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAC7E,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAChF,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC5E,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;SAC7E,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;aAC7B,MAAM,EAAE;aACR,IAAI,CAAC,mBAAmB,CAAC;aACzB,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,MAAM,CACV,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CACjF,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAC9C,6CAA6C;QAC7C,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC;YACpC,MAAM,EAAE,UAAU,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAC3F,CAAC;QACF,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC9G,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC/E,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;SAChF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAE,QAAQ,CAAC,CAAC,CAA2B,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAC1F,+EAA+E;QAC/E,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,KAAK,UAAU,cAAc;QAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;SACzC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3B,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAE,QAAQ,CAAC,CAAC,CAA2B,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAC9F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC;YACnC,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QAE1F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,MAAM,CACV,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CACrF,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,UAAU,EAAE;YACnB,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,MAAM,cAAc,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC1C,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,mCAAmC,EACnC,MAAM,CAAC,gBAAgB,CAAC;YACtB,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,SAAS;SAChB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC1C,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kGAAkG,EAAE,KAAK,IAAI,EAAE;QAChH,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEhF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YACzC,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC1C,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAI,MAAM,CAAC,IAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAC7E,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,mCAAmC,CACpD,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,CACV,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAClE,CAAC,OAAO,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,CAAkB;YAC5C,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"iam.service.int.test.js","sourceRoot":"","sources":["../../../src/iam/__tests__/iam.service.int.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/iam/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,wBA0D8C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/iam/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,wBA2D8C"}
@@ -1,5 +1,5 @@
1
1
  import { EVENT_BUS, DRIZZLE, ADMIN_GUARD, createLogger } from '@openora/core/server';
2
- import { ADMIN_PERMISSION_RESOLVER, ADMIN_PLAYER_ACTIVITY, SEND_EMAIL, SESSION_COMMANDS, CACHE, RATE_LIMITER, domainEventSchemas, } from '@openora/core/contracts';
2
+ import { ADMIN_PERMISSION_RESOLVER, ADMIN_PLAYER_ACTIVITY, IDENTITY_READER, SEND_EMAIL, SESSION_COMMANDS, CACHE, RATE_LIMITER, domainEventSchemas, } from '@openora/core/contracts';
3
3
  import { IamService, DbAdminPermissionResolver } from './service/iam.service.js';
4
4
  import { createIamRouter } from './router/index.js';
5
5
  import { DrizzleAdminPlayerActivity } from './adapters/admin-player-activity.js';
@@ -43,7 +43,7 @@ export default {
43
43
  .catch((err) => logger.error({ err }, 'grant cache purge failed'));
44
44
  });
45
45
  ctx.provide(ADMIN_PLAYER_ACTIVITY, (c) => new DrizzleAdminPlayerActivity(c.get(DRIZZLE)));
46
- ctx.routers.add('iam', (c) => createIamRouter(new IamService(c.get(DRIZZLE), c.get(EVENT_BUS), c.get(SEND_EMAIL), c.get(SESSION_COMMANDS), c.get(RATE_LIMITER)), c.get(ADMIN_GUARD)));
46
+ ctx.routers.add('iam', (c) => createIamRouter(new IamService(c.get(DRIZZLE), c.get(EVENT_BUS), c.get(SEND_EMAIL), c.get(IDENTITY_READER), c.get(SESSION_COMMANDS), c.get(RATE_LIMITER)), c.get(ADMIN_GUARD)));
47
47
  },
48
48
  };
49
49
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/iam/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/iam/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type EventBus, DrizzleService, type PermissionLevel } from '@openora/core/server';
2
- import type { SendEmailPort, AdminPermissionResolver, AdminGrant, CacheAdapter, SessionCommands, User, ClientMeta, SortOrder, PageQuery, PaginationOptions, RateLimiterAdapter, RateLimitKey } from '@openora/core/contracts';
2
+ import type { SendEmailPort, AdminPermissionResolver, AdminGrant, IdentityReader, CacheAdapter, SessionCommands, User, ClientMeta, SortOrder, PageQuery, PaginationOptions, RateLimiterAdapter, RateLimitKey } from '@openora/core/contracts';
3
3
  import { type AdminRole } from '../schema/index.js';
4
4
  import type { EffectivePermissions, IamRoleSortBy, IamInvitationSortBy } from '../contract/index.js';
5
5
  export declare const RoleNotFoundError: new (id: string) => Error;
@@ -32,9 +32,10 @@ export declare class IamService {
32
32
  private readonly drizzle;
33
33
  private readonly events;
34
34
  private readonly email;
35
+ private readonly identityReader;
35
36
  private readonly sessionCommands?;
36
37
  private readonly rateLimiter?;
37
- constructor(drizzle: DrizzleService, events: EventBus, email: SendEmailPort, sessionCommands?: SessionCommands | undefined, rateLimiter?: RateLimiterAdapter<RateLimitKey> | undefined);
38
+ constructor(drizzle: DrizzleService, events: EventBus, email: SendEmailPort, identityReader: IdentityReader, sessionCommands?: SessionCommands | undefined, rateLimiter?: RateLimiterAdapter<RateLimitKey> | undefined);
38
39
  private callerGrants;
39
40
  private isSuperAdmin;
40
41
  private assertSuperAdmin;
@@ -1 +1 @@
1
- {"version":3,"file":"iam.service.d.ts","sourceRoot":"","sources":["../../../src/iam/service/iam.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iam.service.d.ts","sourceRoot":"","sources":["../../../src/iam/service/iam.service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { makeNotFoundError, makeConflictError, createDomainError, findOneOrThrow, pageToOffset, serializeRow, statement, roles, readActions, SUPPORTED_LEVELS, levelToActions, levelRank, isLevelSufficient, cached, invalidate, actionsToLevel, } from '@openora/core/server';
1
+ import { makeNotFoundError, makeConflictError, createDomainError, findOneOrThrow, pageToOffset, serializeRow, statement, roles, readActions, SUPPORTED_LEVELS, levelToActions, levelRank, isLevelSufficient, cached, invalidate, createLogger, actionsToLevel, } from '@openora/core/server';
2
2
  import { eq, and, gt, inArray, sql, asc, desc } from 'drizzle-orm';
3
3
  import { RATE_LIMIT_KEYS, makeRateLimitKey } from '@openora/core/contracts';
4
4
  import { adminRole, adminRolePermission, adminRoleAssignment, adminInvitation, } from '../schema/index.js';
5
5
  // Read-only cross-domain schema import (sanctioned): assignRole verifies the target is an admin user.
6
6
  import { user } from '@openora/core/pam/schema/identity';
7
+ const logger = createLogger('iam-service');
7
8
  export const RoleNotFoundError = makeNotFoundError('AdminRole');
8
9
  export const InvitationNotFoundError = makeNotFoundError('AdminInvitation');
9
10
  export const InvitationConflictError = makeConflictError('AdminInvitation', 'Invitation already exists or token invalid');
@@ -168,12 +169,14 @@ export class IamService {
168
169
  drizzle;
169
170
  events;
170
171
  email;
172
+ identityReader;
171
173
  sessionCommands;
172
174
  rateLimiter;
173
- constructor(drizzle, events, email, sessionCommands, rateLimiter) {
175
+ constructor(drizzle, events, email, identityReader, sessionCommands, rateLimiter) {
174
176
  this.drizzle = drizzle;
175
177
  this.events = events;
176
178
  this.email = email;
179
+ this.identityReader = identityReader;
177
180
  this.sessionCommands = sessionCommands;
178
181
  this.rateLimiter = rateLimiter;
179
182
  }
@@ -207,14 +210,25 @@ export class IamService {
207
210
  }
208
211
  }
209
212
  emitDenied(caller, resource, action) {
210
- this.events.emit('identity.user.unauthorized_access', {
211
- userId: caller.userId,
212
- resource,
213
- action,
214
- ip: caller.ip,
215
- userAgent: caller.userAgent,
216
- role: caller.role,
217
- });
213
+ void (async () => {
214
+ const playerId = caller.role === 'player'
215
+ ? await this.identityReader.getPlayerIdByUserIdSafe(caller.userId)
216
+ : null;
217
+ try {
218
+ this.events.emit('identity.user.unauthorized_access', {
219
+ userId: caller.userId,
220
+ playerId,
221
+ resource,
222
+ action,
223
+ ip: caller.ip,
224
+ userAgent: caller.userAgent,
225
+ role: caller.role,
226
+ });
227
+ }
228
+ catch (err) {
229
+ logger.error({ err, userId: caller.userId, resource, action }, 'denial audit event failed');
230
+ }
231
+ })();
218
232
  }
219
233
  listCatalog() {
220
234
  return buildCatalog();