@managesome/knotr-toolkit 0.1.1

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 (76) hide show
  1. package/dist/constants/index.d.ts +103 -0
  2. package/dist/constants/index.d.ts.map +1 -0
  3. package/dist/constants/index.js +92 -0
  4. package/dist/constants/index.js.map +1 -0
  5. package/dist/constants/marketplace.d.ts +130 -0
  6. package/dist/constants/marketplace.d.ts.map +1 -0
  7. package/dist/constants/marketplace.js +195 -0
  8. package/dist/constants/marketplace.js.map +1 -0
  9. package/dist/i18n/ar.json +368 -0
  10. package/dist/i18n/en.json +369 -0
  11. package/dist/i18n/index.d.ts +20 -0
  12. package/dist/i18n/index.d.ts.map +1 -0
  13. package/dist/i18n/index.js +22 -0
  14. package/dist/i18n/index.js.map +1 -0
  15. package/dist/i18n/ur.json +368 -0
  16. package/dist/index.d.ts +4 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +4 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/types/account.d.ts +55 -0
  21. package/dist/types/account.d.ts.map +1 -0
  22. package/dist/types/account.js +3 -0
  23. package/dist/types/account.js.map +1 -0
  24. package/dist/types/admin.d.ts +70 -0
  25. package/dist/types/admin.d.ts.map +1 -0
  26. package/dist/types/admin.js +117 -0
  27. package/dist/types/admin.js.map +1 -0
  28. package/dist/types/api.d.ts +210 -0
  29. package/dist/types/api.d.ts.map +1 -0
  30. package/dist/types/api.js +5 -0
  31. package/dist/types/api.js.map +1 -0
  32. package/dist/types/chat.d.ts +92 -0
  33. package/dist/types/chat.d.ts.map +1 -0
  34. package/dist/types/chat.js +8 -0
  35. package/dist/types/chat.js.map +1 -0
  36. package/dist/types/common.d.ts +50 -0
  37. package/dist/types/common.d.ts.map +1 -0
  38. package/dist/types/common.js +3 -0
  39. package/dist/types/common.js.map +1 -0
  40. package/dist/types/company.d.ts +110 -0
  41. package/dist/types/company.d.ts.map +1 -0
  42. package/dist/types/company.js +3 -0
  43. package/dist/types/company.js.map +1 -0
  44. package/dist/types/flag.d.ts +67 -0
  45. package/dist/types/flag.d.ts.map +1 -0
  46. package/dist/types/flag.js +3 -0
  47. package/dist/types/flag.js.map +1 -0
  48. package/dist/types/index.d.ts +14 -0
  49. package/dist/types/index.d.ts.map +1 -0
  50. package/dist/types/index.js +16 -0
  51. package/dist/types/index.js.map +1 -0
  52. package/dist/types/marketplace.d.ts +583 -0
  53. package/dist/types/marketplace.d.ts.map +1 -0
  54. package/dist/types/marketplace.js +3 -0
  55. package/dist/types/marketplace.js.map +1 -0
  56. package/dist/types/match.d.ts +71 -0
  57. package/dist/types/match.d.ts.map +1 -0
  58. package/dist/types/match.js +8 -0
  59. package/dist/types/match.js.map +1 -0
  60. package/dist/types/payment.d.ts +176 -0
  61. package/dist/types/payment.d.ts.map +1 -0
  62. package/dist/types/payment.js +112 -0
  63. package/dist/types/payment.js.map +1 -0
  64. package/dist/types/policy.d.ts +347 -0
  65. package/dist/types/policy.d.ts.map +1 -0
  66. package/dist/types/policy.js +52 -0
  67. package/dist/types/policy.js.map +1 -0
  68. package/dist/types/profile.d.ts +196 -0
  69. package/dist/types/profile.d.ts.map +1 -0
  70. package/dist/types/profile.js +3 -0
  71. package/dist/types/profile.js.map +1 -0
  72. package/dist/types/verification.d.ts +57 -0
  73. package/dist/types/verification.d.ts.map +1 -0
  74. package/dist/types/verification.js +3 -0
  75. package/dist/types/verification.js.map +1 -0
  76. package/package.json +67 -0
@@ -0,0 +1,369 @@
1
+ {
2
+ "common": {
3
+ "appName": "QalbMatch",
4
+ "tagline": "Halal Connections, Blessed Unions",
5
+ "continue": "Continue",
6
+ "back": "Back",
7
+ "next": "Next",
8
+ "submit": "Submit",
9
+ "save": "Save",
10
+ "cancel": "Cancel",
11
+ "delete": "Delete",
12
+ "edit": "Edit",
13
+ "view": "View",
14
+ "search": "Search",
15
+ "filter": "Filter",
16
+ "sort": "Sort",
17
+ "loading": "Loading...",
18
+ "error": "Error",
19
+ "success": "Success",
20
+ "confirm": "Confirm",
21
+ "yes": "Yes",
22
+ "no": "No",
23
+ "ok": "OK",
24
+ "done": "Done",
25
+ "close": "Close",
26
+ "retry": "Retry",
27
+ "refresh": "Refresh",
28
+ "seeAll": "See All",
29
+ "showMore": "Show More",
30
+ "showLess": "Show Less"
31
+ },
32
+ "auth": {
33
+ "welcome": "Welcome to QalbMatch",
34
+ "signIn": "Sign In",
35
+ "signUp": "Sign Up",
36
+ "signOut": "Sign Out",
37
+ "email": "Email",
38
+ "phone": "Phone Number",
39
+ "password": "Password",
40
+ "confirmPassword": "Confirm Password",
41
+ "forgotPassword": "Forgot Password?",
42
+ "resetPassword": "Reset Password",
43
+ "verifyEmail": "Verify Email",
44
+ "verifyPhone": "Verify Phone",
45
+ "enterOtp": "Enter OTP",
46
+ "resendOtp": "Resend OTP",
47
+ "otpSent": "OTP sent to {{destination}}",
48
+ "invalidOtp": "Invalid OTP. Please try again.",
49
+ "twoFactorRequired": "Two-factor authentication required"
50
+ },
51
+ "onboarding": {
52
+ "welcome": {
53
+ "title": "Assalamu Alaikum",
54
+ "subtitle": "Welcome to QalbMatch - A platform designed for Muslim families seeking halal matrimonial connections.",
55
+ "description": "Our mission is to help Muslim families find suitable matches for their loved ones in a safe, respectful, and Islamic environment."
56
+ },
57
+ "howItWorks": {
58
+ "title": "How It Works",
59
+ "step1Title": "Create an Account",
60
+ "step1Desc": "Parents, guardians, or verified marriage consultants create accounts on behalf of candidates.",
61
+ "step2Title": "Submit Profiles",
62
+ "step2Desc": "Add detailed profiles with photos and preferences. All profiles are verified by our team.",
63
+ "step3Title": "Find Matches",
64
+ "step3Desc": "Browse verified profiles, express interest, and connect through our secure messaging system.",
65
+ "step4Title": "Blessed Unions",
66
+ "step4Desc": "When both families agree, take the conversation forward towards Nikkah."
67
+ },
68
+ "rules": {
69
+ "title": "Platform Rules",
70
+ "rule1Title": "Family-Centered",
71
+ "rule1Desc": "Accounts must be created by parents, guardians, or verified marriage consultants. Direct self-registration by individuals (especially females) is not allowed to maintain a safe environment.",
72
+ "rule2Title": "Verification Required",
73
+ "rule2Desc": "All profiles require ID verification before going live. This ensures authenticity and filters out non-serious candidates.",
74
+ "rule3Title": "One Connection at a Time",
75
+ "rule3Desc": "Individual accounts can only approach one profile at a time. Wait for a response before reaching out to others.",
76
+ "rule4Title": "Respectful Communication",
77
+ "rule4Desc": "All conversations must remain halal and respectful. Our team may review chats if flagged for inappropriate content.",
78
+ "rule5Title": "Three-Strike Policy",
79
+ "rule5Desc": "Accounts receiving 3 confirmed flags will be permanently blocked. We have zero tolerance for misconduct."
80
+ },
81
+ "safety": {
82
+ "title": "Safety First",
83
+ "subtitle": "Your safety and privacy are our top priorities",
84
+ "point1": "All profiles are manually reviewed by our team before going live",
85
+ "point2": "ID verification is mandatory for all candidates",
86
+ "point3": "Chats are encrypted but can be reviewed by moderators if flagged",
87
+ "point4": "Female-oriented design with stricter policies for male profiles",
88
+ "point5": "Your data is stored securely and never shared with third parties"
89
+ },
90
+ "accountType": {
91
+ "title": "Select Account Type",
92
+ "individual": {
93
+ "title": "Family Account",
94
+ "description": "For parents, guardians, or family members registering on behalf of their loved ones.",
95
+ "features": [
96
+ "Up to 3 free profiles",
97
+ "Purchase additional profile slots",
98
+ "One active approach at a time"
99
+ ]
100
+ },
101
+ "company": {
102
+ "title": "Professional Account",
103
+ "description": "For marriage bureaus, consultancies, or individuals who professionally help with matchmaking.",
104
+ "features": [
105
+ "Unlimited profiles",
106
+ "Multiple simultaneous conversations",
107
+ "Company ratings and trust badges",
108
+ "Additional verification required"
109
+ ]
110
+ }
111
+ },
112
+ "consent": {
113
+ "title": "Terms & Privacy",
114
+ "termsLabel": "I agree to the Terms of Service",
115
+ "privacyLabel": "I agree to the Privacy Policy",
116
+ "dataLabel": "I consent to my data being stored securely (not shared with third parties)",
117
+ "chatReviewLabel": "I understand that chats may be reviewed by moderators if flagged"
118
+ }
119
+ },
120
+ "profile": {
121
+ "createProfile": "Create Profile",
122
+ "editProfile": "Edit Profile",
123
+ "viewProfile": "View Profile",
124
+ "myProfiles": "My Profiles",
125
+ "profileDetails": "Profile Details",
126
+ "basicInfo": "Basic Information",
127
+ "religiousInfo": "Religious Background",
128
+ "physicalAttributes": "Physical Attributes",
129
+ "education": "Education & Career",
130
+ "family": "Family Background",
131
+ "lifestyle": "Lifestyle",
132
+ "preferences": "Partner Preferences",
133
+ "photos": "Photos",
134
+ "verification": "Verification",
135
+ "status": {
136
+ "draft": "Draft",
137
+ "pending_verification": "Awaiting Verification",
138
+ "pending_review": "Under Review",
139
+ "on_hold": "On Hold",
140
+ "approved": "Approved",
141
+ "live": "Live",
142
+ "paused": "Paused",
143
+ "matched": "Matched",
144
+ "rejected": "Rejected"
145
+ },
146
+ "fields": {
147
+ "candidateName": "Candidate Name",
148
+ "gender": "Gender",
149
+ "dateOfBirth": "Date of Birth",
150
+ "age": "Age",
151
+ "sect": "Sect/School of Thought",
152
+ "maritalStatus": "Marital Status",
153
+ "height": "Height",
154
+ "weight": "Weight",
155
+ "complexion": "Complexion",
156
+ "bodyType": "Body Type",
157
+ "location": "Current Location",
158
+ "nationality": "Nationality",
159
+ "citizenship": "Citizenship",
160
+ "education": "Education Level",
161
+ "profession": "Profession",
162
+ "income": "Annual Income",
163
+ "aboutCandidate": "About the Candidate",
164
+ "aboutFamily": "About the Family",
165
+ "partnerExpectations": "Partner Expectations"
166
+ }
167
+ },
168
+ "match": {
169
+ "discover": "Discover",
170
+ "interests": "Interests",
171
+ "matches": "Matches",
172
+ "sendInterest": "Send Interest",
173
+ "interestSent": "Interest Sent",
174
+ "acceptInterest": "Accept",
175
+ "declineInterest": "Decline",
176
+ "withdrawInterest": "Withdraw",
177
+ "noMatches": "No matches found",
178
+ "noInterests": "No interests yet",
179
+ "waitingForResponse": "Waiting for response",
180
+ "responseDeadline": "Please respond by {{time}}",
181
+ "matchStarted": "It's a match! You can now chat.",
182
+ "oneActiveLimit": "You can only approach one profile at a time. Please wait for a response or withdraw your current interest."
183
+ },
184
+ "chat": {
185
+ "chats": "Chats",
186
+ "newMessage": "New Message",
187
+ "typeMessage": "Type a message...",
188
+ "send": "Send",
189
+ "delivered": "Delivered",
190
+ "read": "Read",
191
+ "encryptedNote": "Messages are encrypted. Moderators may review if flagged.",
192
+ "noChats": "No conversations yet",
193
+ "chatEnded": "This conversation has ended"
194
+ },
195
+ "company": {
196
+ "applyAsCompany": "Apply as Professional",
197
+ "companyProfile": "Company Profile",
198
+ "companyName": "Company/Business Name",
199
+ "companyType": "Type of Business",
200
+ "types": {
201
+ "organization": "Marriage Bureau/Organization",
202
+ "consultancy": "Marriage Consultancy",
203
+ "individual_professional": "Individual Professional"
204
+ },
205
+ "trustLevel": {
206
+ "new": "New",
207
+ "verified": "Verified",
208
+ "trusted": "Trusted",
209
+ "premium": "Premium",
210
+ "elite": "Elite"
211
+ },
212
+ "rating": "Rating",
213
+ "reviews": "Reviews",
214
+ "activeProfiles": "Active Profiles",
215
+ "successfulMatches": "Successful Matches"
216
+ },
217
+ "verification": {
218
+ "title": "ID Verification",
219
+ "subtitle": "Verify your identity to make your profile live",
220
+ "instructions": "Please provide a valid government-issued ID document",
221
+ "documentType": "Document Type",
222
+ "documentNumber": "Document Number",
223
+ "frontPhoto": "Front of Document",
224
+ "backPhoto": "Back of Document",
225
+ "selfie": "Selfie for Verification",
226
+ "selfieInstructions": "Take a clear selfie holding your ID next to your face",
227
+ "submitting": "Submitting verification...",
228
+ "submitted": "Verification submitted",
229
+ "underReview": "Your verification is under review",
230
+ "approved": "Verified",
231
+ "rejected": "Verification rejected",
232
+ "types": {
233
+ "national_id": "National ID",
234
+ "passport": "Passport",
235
+ "driving_license": "Driving License",
236
+ "cnic": "CNIC (Pakistan)",
237
+ "aadhaar": "Aadhaar (India)",
238
+ "emirates_id": "Emirates ID (UAE)",
239
+ "iqama": "Iqama (Saudi Arabia)"
240
+ }
241
+ },
242
+ "payment": {
243
+ "subscription": "Subscription",
244
+ "currentPlan": "Current Plan",
245
+ "upgradePlan": "Upgrade Plan",
246
+ "plans": "Plans",
247
+ "freeTrial": "1 Month Free Trial",
248
+ "subscribe": "Subscribe",
249
+ "cancelSubscription": "Cancel Subscription",
250
+ "buyProfiles": "Buy Extra Profiles",
251
+ "donate": "Support QalbMatch",
252
+ "donateSubtitle": "Help us keep the platform running",
253
+ "promoCode": "Promo Code",
254
+ "applyPromo": "Apply",
255
+ "paymentMethod": "Payment Method",
256
+ "transactionHistory": "Transaction History"
257
+ },
258
+ "settings": {
259
+ "settings": "Settings",
260
+ "account": "Account",
261
+ "notifications": "Notifications",
262
+ "language": "Language",
263
+ "privacy": "Privacy",
264
+ "help": "Help & Support",
265
+ "about": "About",
266
+ "deleteAccount": "Delete Account",
267
+ "languages": {
268
+ "en": "English",
269
+ "ur": "اردو",
270
+ "ar": "العربية"
271
+ }
272
+ },
273
+ "flag": {
274
+ "reportProfile": "Report Profile",
275
+ "reportUser": "Report User",
276
+ "reportChat": "Report Chat",
277
+ "reason": "Reason for Report",
278
+ "description": "Please describe the issue",
279
+ "submit": "Submit Report",
280
+ "submitted": "Report submitted. Our team will review it.",
281
+ "reasons": {
282
+ "fake_profile": "Fake Profile",
283
+ "inappropriate_content": "Inappropriate Content",
284
+ "harassment": "Harassment",
285
+ "scam_fraud": "Scam/Fraud",
286
+ "impersonation": "Impersonation",
287
+ "non_halal_behavior": "Non-Halal Behavior",
288
+ "spam": "Spam",
289
+ "underage": "Underage",
290
+ "already_married": "Already Married",
291
+ "incorrect_information": "Incorrect Information",
292
+ "offensive_language": "Offensive Language",
293
+ "other": "Other"
294
+ }
295
+ },
296
+ "errors": {
297
+ "generic": "Something went wrong. Please try again.",
298
+ "network": "Network error. Please check your connection.",
299
+ "unauthorized": "Please sign in to continue.",
300
+ "forbidden": "You don't have permission to do this.",
301
+ "notFound": "Not found.",
302
+ "validation": "Please check your input and try again.",
303
+ "profileLimit": "You've reached your profile limit. Upgrade to add more.",
304
+ "activeApproachLimit": "You already have an active approach. Please wait for a response."
305
+ },
306
+ "nav": {
307
+ "dashboard": "Dashboard",
308
+ "clients": "Clients",
309
+ "profiles": "Profiles",
310
+ "team": "Team",
311
+ "matches": "Matches",
312
+ "subscription": "Subscription",
313
+ "settings": "Settings",
314
+ "logout": "Logout",
315
+ "marketplace": "Marketplace",
316
+ "requirements": "Requirements",
317
+ "proposals": "Proposals",
318
+ "contracts": "Contracts",
319
+ "disputes": "Disputes",
320
+ "tmc": "TMC"
321
+ },
322
+ "marketplace": {
323
+ "requirements": {
324
+ "title": "Browse Requirements",
325
+ "subtitle": "Find and submit proposals for family requirements",
326
+ "searchPlaceholder": "Search requirements...",
327
+ "serviceType": "Service Type",
328
+ "budgetMin": "Min Budget",
329
+ "budgetMax": "Max Budget",
330
+ "remoteOnly": "Remote Only",
331
+ "resultsCount": "{{count}} requirements found",
332
+ "noResults": "No requirements found",
333
+ "noResultsDesc": "Try adjusting your filters or check back later"
334
+ },
335
+ "proposals": {
336
+ "title": "My Proposals",
337
+ "subtitle": "Track and manage your submitted proposals",
338
+ "noProposals": "No proposals found",
339
+ "noProposalsDesc": "Browse requirements and submit your first proposal"
340
+ },
341
+ "contracts": {
342
+ "title": "My Contracts",
343
+ "subtitle": "Manage your active and past contracts",
344
+ "noContracts": "No contracts found",
345
+ "noContractsDesc": "Contracts are created when your proposals are accepted"
346
+ },
347
+ "disputes": {
348
+ "title": "Disputes",
349
+ "subtitle": "Manage and resolve contract disputes",
350
+ "noDisputes": "No disputes",
351
+ "noDisputesDesc": "You don't have any disputes. Great job!"
352
+ },
353
+ "tmc": {
354
+ "title": "Trust Management Company",
355
+ "subtitle": "Become a trusted partner and earn from your network"
356
+ }
357
+ },
358
+ "serviceTypes": {
359
+ "matchmaking": "Matchmaking",
360
+ "verification": "Verification",
361
+ "photography": "Photography",
362
+ "event_planning": "Event Planning",
363
+ "legal_consultation": "Legal Consultation",
364
+ "counseling": "Counseling",
365
+ "investigation": "Investigation",
366
+ "documentation": "Documentation",
367
+ "other": "Other"
368
+ }
369
+ }
@@ -0,0 +1,20 @@
1
+ import ar from './ar.json';
2
+ import en from './en.json';
3
+ import ur from './ur.json';
4
+ export type SupportedLanguage = 'en' | 'ur' | 'ar';
5
+ export type TranslationValue = string | string[] | {
6
+ [key: string]: TranslationValue;
7
+ };
8
+ export type TranslationResource = {
9
+ [key: string]: TranslationValue;
10
+ };
11
+ export declare const supportedLanguages: SupportedLanguage[];
12
+ export declare const resources: Record<SupportedLanguage, {
13
+ translation: TranslationResource;
14
+ }>;
15
+ export declare const languageNames: Record<SupportedLanguage, string>;
16
+ export declare const rtlLanguages: SupportedLanguage[];
17
+ export declare const isRTL: (lang: SupportedLanguage) => boolean;
18
+ export declare const defaultLanguage: SupportedLanguage;
19
+ export { ar, en, ur };
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAInD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,mBAAmB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAAE,CAAC;AAEtE,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAAuB,CAAC;AAE1E,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE;IAAE,WAAW,EAAE,mBAAmB,CAAA;CAAE,CAIrF,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAI3D,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,iBAAiB,EAAiB,CAAC;AAE9D,eAAO,MAAM,KAAK,GAAI,MAAM,iBAAiB,KAAG,OAE/C,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAwB,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ // i18n index - Language resources
2
+ import ar from './ar.json';
3
+ import en from './en.json';
4
+ import ur from './ur.json';
5
+ export const supportedLanguages = ['en', 'ur', 'ar'];
6
+ export const resources = {
7
+ en: { translation: en },
8
+ ur: { translation: ur },
9
+ ar: { translation: ar },
10
+ };
11
+ export const languageNames = {
12
+ en: 'English',
13
+ ur: 'اردو',
14
+ ar: 'العربية',
15
+ };
16
+ export const rtlLanguages = ['ur', 'ar'];
17
+ export const isRTL = (lang) => {
18
+ return rtlLanguages.includes(lang);
19
+ };
20
+ export const defaultLanguage = 'en';
21
+ export { ar, en, ur };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,WAAW,CAAC;AAS3B,MAAM,CAAC,MAAM,kBAAkB,GAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,SAAS,GAAoE;IACxF,EAAE,EAAE,EAAE,WAAW,EAAE,EAAyB,EAAE;IAC9C,EAAE,EAAE,EAAE,WAAW,EAAE,EAAyB,EAAE;IAC9C,EAAE,EAAE,EAAE,WAAW,EAAE,EAAyB,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAsC;IAC9D,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAuB,EAAW,EAAE;IACxD,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAsB,IAAI,CAAC;AAEvD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC"}