@huddle-marketplace/skills 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +256 -0
- package/dist/adapters/openclaw.d.ts +42 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +94 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/base.d.ts +26 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +97 -0
- package/dist/base.js.map +1 -0
- package/dist/compose.d.ts +87 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +119 -0
- package/dist/compose.js.map +1 -0
- package/dist/index.d.ts +104 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/jurisdictions/ca-bc/index.d.ts +49 -0
- package/dist/jurisdictions/ca-bc/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-bc/index.js +212 -0
- package/dist/jurisdictions/ca-bc/index.js.map +1 -0
- package/dist/jurisdictions/ca-ns/index.d.ts +27 -0
- package/dist/jurisdictions/ca-ns/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-ns/index.js +127 -0
- package/dist/jurisdictions/ca-ns/index.js.map +1 -0
- package/dist/jurisdictions/ca-on/index.d.ts +26 -0
- package/dist/jurisdictions/ca-on/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-on/index.js +109 -0
- package/dist/jurisdictions/ca-on/index.js.map +1 -0
- package/dist/jurisdictions/ca-qc/index.d.ts +75 -0
- package/dist/jurisdictions/ca-qc/index.d.ts.map +1 -0
- package/dist/jurisdictions/ca-qc/index.js +232 -0
- package/dist/jurisdictions/ca-qc/index.js.map +1 -0
- package/dist/jurisdictions/canadian-template.d.ts +49 -0
- package/dist/jurisdictions/canadian-template.d.ts.map +1 -0
- package/dist/jurisdictions/canadian-template.js +228 -0
- package/dist/jurisdictions/canadian-template.js.map +1 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.d.ts +55 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.d.ts.map +1 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.js +227 -0
- package/dist/jurisdictions/lifecycle/active-tenancy.js.map +1 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts +60 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.d.ts.map +1 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.js +401 -0
- package/dist/jurisdictions/lifecycle/homeownership-readiness.js.map +1 -0
- package/dist/jurisdictions/us-ca/index.d.ts +65 -0
- package/dist/jurisdictions/us-ca/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-ca/index.js +265 -0
- package/dist/jurisdictions/us-ca/index.js.map +1 -0
- package/dist/jurisdictions/us-cftc/index.d.ts +48 -0
- package/dist/jurisdictions/us-cftc/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-cftc/index.js +192 -0
- package/dist/jurisdictions/us-cftc/index.js.map +1 -0
- package/dist/jurisdictions/us-fl/index.d.ts +43 -0
- package/dist/jurisdictions/us-fl/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-fl/index.js +129 -0
- package/dist/jurisdictions/us-fl/index.js.map +1 -0
- package/dist/jurisdictions/us-ny/index.d.ts +77 -0
- package/dist/jurisdictions/us-ny/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-ny/index.js +344 -0
- package/dist/jurisdictions/us-ny/index.js.map +1 -0
- package/dist/jurisdictions/us-state-factory.d.ts +79 -0
- package/dist/jurisdictions/us-state-factory.d.ts.map +1 -0
- package/dist/jurisdictions/us-state-factory.js +425 -0
- package/dist/jurisdictions/us-state-factory.js.map +1 -0
- package/dist/jurisdictions/us-tx/index.d.ts +43 -0
- package/dist/jurisdictions/us-tx/index.d.ts.map +1 -0
- package/dist/jurisdictions/us-tx/index.js +160 -0
- package/dist/jurisdictions/us-tx/index.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +211 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/registry/index.d.ts +27 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +47 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/traiga/index.d.ts +24 -0
- package/dist/traiga/index.d.ts.map +1 -0
- package/dist/traiga/index.js +67 -0
- package/dist/traiga/index.js.map +1 -0
- package/dist/types/index.d.ts +814 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +150 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CA-QC — Code civil du Québec & Tribunal administratif du logement (TAL)
|
|
3
|
+
*
|
|
4
|
+
* Quebec rules / Règles du Québec:
|
|
5
|
+
* - Security deposits PROHIBITED — CCQ art. 1904 / Dépôts de garantie INTERDITS
|
|
6
|
+
* - Only first month's rent permitted in advance / Seulement un mois de loyer à l'avance
|
|
7
|
+
* - Mandatory standard lease form — RLRQ c B-3.1 r 1 / Formulaire de bail obligatoire
|
|
8
|
+
* - TAL (formerly Régie du logement since 2020-09-01) — RLRQ c T-15.01
|
|
9
|
+
* - Huddle bonds: collateralized lease guarantee, not a deposit
|
|
10
|
+
* (garantie locative collatéralisée, non un dépôt de garantie)
|
|
11
|
+
*
|
|
12
|
+
* Bilingual note: Citations appear in French (primary legal language) followed by English.
|
|
13
|
+
* Note bilingue : Les citations apparaissent en français (langue juridique principale) suivies de l'anglais.
|
|
14
|
+
*/
|
|
15
|
+
import { BaseSkill } from "../../base.js";
|
|
16
|
+
export class CAQCSkill extends BaseSkill {
|
|
17
|
+
id = "huddle-compliance-ca-qc";
|
|
18
|
+
name = "Quebec Civil Code & TAL / Code civil du Québec & TAL";
|
|
19
|
+
jurisdiction = "CA-QC";
|
|
20
|
+
version = "1.1.0";
|
|
21
|
+
capabilities = [
|
|
22
|
+
"deposit-validation",
|
|
23
|
+
];
|
|
24
|
+
async validate(input) {
|
|
25
|
+
if (input.type !== "deposit-validation") {
|
|
26
|
+
return this.buildResult([{
|
|
27
|
+
name: "input-type",
|
|
28
|
+
passed: false,
|
|
29
|
+
confidence: 1.0,
|
|
30
|
+
note: `QC skill currently supports deposit-validation, received: ${input.type}`,
|
|
31
|
+
}], input);
|
|
32
|
+
}
|
|
33
|
+
const deposit = input;
|
|
34
|
+
const checks = [
|
|
35
|
+
this.checkDepositProhibition(deposit),
|
|
36
|
+
this.checkInstrumentClassification(deposit),
|
|
37
|
+
this.checkPrincipalProtection(deposit),
|
|
38
|
+
this.checkMandatoryBailForm(deposit),
|
|
39
|
+
this.checkTALCompliance(deposit),
|
|
40
|
+
];
|
|
41
|
+
return this.buildResult(checks, input);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* CCQ art. 1904 — Interdiction de dépôt / Deposit Prohibition
|
|
45
|
+
*
|
|
46
|
+
* FR: "Le locateur ne peut exiger du locataire, lors de la conclusion du bail ou en cours
|
|
47
|
+
* de bail, des avances de loyer excédant un mois ou un dépôt de garantie."
|
|
48
|
+
*
|
|
49
|
+
* EN: "A lessor may not, upon conclusion of the lease or during its term, require the
|
|
50
|
+
* lessee to pay rent installments of more than one month's rent in advance or to make
|
|
51
|
+
* a security deposit."
|
|
52
|
+
*/
|
|
53
|
+
checkDepositProhibition(input) {
|
|
54
|
+
const isCollateralizedGuarantee = input.instrumentType === "collateralized_lease_guarantee";
|
|
55
|
+
const withinOneMonth = input.depositAmountCents <= input.monthlyRentCents;
|
|
56
|
+
const passed = isCollateralizedGuarantee || withinOneMonth;
|
|
57
|
+
return {
|
|
58
|
+
name: "deposit-prohibition",
|
|
59
|
+
passed,
|
|
60
|
+
confidence: isCollateralizedGuarantee ? 1.0 : withinOneMonth ? 0.85 : 0.0,
|
|
61
|
+
note: isCollateralizedGuarantee
|
|
62
|
+
? "FR: Instrument structuré comme garantie locative collatéralisée — non assujetti à l'interdiction (CCQ art. 1904). EN: Collateralized lease guarantee — not subject to the CCQ art. 1904 deposit prohibition."
|
|
63
|
+
: withinOneMonth
|
|
64
|
+
? "FR: Montant ≤ un mois de loyer (avance permise, non un dépôt). EN: Amount ≤ one month's rent (advance rent permitted — deposit is not)."
|
|
65
|
+
: "FR: VIOLATION — Le locateur ne peut exiger un dépôt de garantie résidentiel au Québec (CCQ art. 1904). EN: VIOLATION — Security deposits are prohibited for residential leases in Quebec.",
|
|
66
|
+
citation: {
|
|
67
|
+
statute: "Code civil du Québec / Civil Code of Québec",
|
|
68
|
+
section: "Article 1904",
|
|
69
|
+
summary: "FR: Le locateur ne peut exiger des avances de loyer excédant un mois ou un dépôt de garantie. EN: A lessor may not require advance rent of more than one month's rent or a security deposit.",
|
|
70
|
+
url: "https://www.legisquebec.gouv.qc.ca/fr/document/lc/CCQ-1991#se:1904",
|
|
71
|
+
effectiveDate: "1994-01-01",
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Classification de l'instrument / Instrument Classification
|
|
77
|
+
*
|
|
78
|
+
* A wBTC Collateralized Lease Guarantee ≠ dépôt de garantie under CCQ art. 1904.
|
|
79
|
+
* When both collateralType and instrumentType are correctly set, the on-chain
|
|
80
|
+
* HuddleDepositVaultV3 Golden Rule provides stronger protection than any statute.
|
|
81
|
+
*/
|
|
82
|
+
checkInstrumentClassification(input) {
|
|
83
|
+
const isWbtcBond = input.collateralType === "wbtc" || input.collateralType === "bitcoin";
|
|
84
|
+
const isClassifiedGuarantee = input.instrumentType === "collateralized_lease_guarantee";
|
|
85
|
+
if (isWbtcBond && isClassifiedGuarantee) {
|
|
86
|
+
return {
|
|
87
|
+
name: "instrument-classification",
|
|
88
|
+
passed: true,
|
|
89
|
+
confidence: 0.98,
|
|
90
|
+
note: [
|
|
91
|
+
"FR: Cautionnement collatéralisé en wBTC — garantie locative on-chain via HuddleDepositVaultV3.",
|
|
92
|
+
"Règle dorée (Golden Rule) appliquée par Solidity: valeur wBTC ≥ principal original en tout temps.",
|
|
93
|
+
"EN: wBTC Collateralized Lease Guarantee — on-chain enforcement (HuddleDepositVaultV3 Golden Rule) is",
|
|
94
|
+
"structurally stronger than any statutory obligation: wBTC value ≥ original principal, always.",
|
|
95
|
+
].join(" "),
|
|
96
|
+
citation: {
|
|
97
|
+
statute: "Code civil du Québec / Civil Code of Québec + CFTC 9180-26",
|
|
98
|
+
section: "Article 1904 + Section 1",
|
|
99
|
+
summary: "FR: Garantie collatéralisée en actif numérique non assujettie à l'interdiction de dépôt (CCQ art. 1904). EN: Digital-asset-backed collateralized guarantee is not a prohibited deposit. Federal preemption (CFTC 9180-26) classifies wBTC bonds as Collateralized Lease Guarantees.",
|
|
100
|
+
url: "https://www.legisquebec.gouv.qc.ca/fr/document/lc/CCQ-1991#se:1904",
|
|
101
|
+
effectiveDate: "1994-01-01",
|
|
102
|
+
},
|
|
103
|
+
details: {
|
|
104
|
+
satisfiedBy: "wbtc-bond-on-chain",
|
|
105
|
+
enforcement: "HuddleDepositVaultV3 Golden Rule (Solidity)",
|
|
106
|
+
classification: "collateralized_lease_guarantee",
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
name: "instrument-classification",
|
|
112
|
+
passed: isClassifiedGuarantee,
|
|
113
|
+
confidence: isClassifiedGuarantee ? 0.9 : 0.4,
|
|
114
|
+
note: isClassifiedGuarantee
|
|
115
|
+
? "FR: Instrument correctement classifié comme garantie locative collatéralisée. EN: Instrument correctly classified as a collateralized lease guarantee."
|
|
116
|
+
: "FR: L'instrument doit être classifié comme garantie locative collatéralisée (non un dépôt) — définir instrumentType = 'collateralized_lease_guarantee'. EN: Instrument must be a collateralized lease guarantee — set instrumentType to 'collateralized_lease_guarantee'.",
|
|
117
|
+
citation: {
|
|
118
|
+
statute: "Code civil du Québec / Civil Code of Québec",
|
|
119
|
+
section: "Article 1904",
|
|
120
|
+
summary: "FR: Seule une garantie locative collatéralisée est permise; les dépôts de garantie sont interdits. EN: Only collateralized lease guarantees are permitted; security deposits are prohibited.",
|
|
121
|
+
url: "https://www.legisquebec.gouv.qc.ca/fr/document/lc/CCQ-1991#se:1904",
|
|
122
|
+
effectiveDate: "1994-01-01",
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* CCQ art. 1590 — Protection du principal / Principal Protection
|
|
128
|
+
*
|
|
129
|
+
* FR: "L'obligation confère au créancier le droit d'exiger qu'elle soit exécutée
|
|
130
|
+
* entièrement, correctement et sans retard."
|
|
131
|
+
*
|
|
132
|
+
* EN: "An obligation confers on the creditor the right to demand that the
|
|
133
|
+
* obligation be performed in full, in the proper manner and without delay."
|
|
134
|
+
*
|
|
135
|
+
* Principal of any lease guarantee must equal or exceed original amount at all times.
|
|
136
|
+
*/
|
|
137
|
+
checkPrincipalProtection(input) {
|
|
138
|
+
const currentValue = input.collateralValueCents ?? 0;
|
|
139
|
+
const originalDeposit = input.originalDepositValueCents ?? 0;
|
|
140
|
+
const protectionRatio = originalDeposit > 0 ? currentValue / originalDeposit : 1;
|
|
141
|
+
const passed = protectionRatio >= 1.0;
|
|
142
|
+
return {
|
|
143
|
+
name: "principal-protection",
|
|
144
|
+
passed,
|
|
145
|
+
confidence: originalDeposit > 0 ? 1.0 : 0.8,
|
|
146
|
+
note: passed
|
|
147
|
+
? `FR: Principal protégé à ${(protectionRatio * 100).toFixed(0)}% — obligation entièrement exécutée (CCQ art. 1590). EN: Principal protected at ${(protectionRatio * 100).toFixed(0)}% — obligation fulfilled in full.`
|
|
148
|
+
: `FR: Protection du principal insuffisante (${(protectionRatio * 100).toFixed(0)}%) — obligation non exécutée entièrement. EN: Principal protection insufficient (${(protectionRatio * 100).toFixed(0)}%) — obligation not performed in full.`,
|
|
149
|
+
citation: {
|
|
150
|
+
statute: "Code civil du Québec / Civil Code of Québec",
|
|
151
|
+
section: "Article 1590",
|
|
152
|
+
summary: "FR: L'obligation confère au créancier le droit d'exiger qu'elle soit exécutée entièrement. EN: An obligation confers on the creditor the right to demand full performance. Principal must equal or exceed original guarantee amount at all times.",
|
|
153
|
+
url: "https://www.legisquebec.gouv.qc.ca/fr/document/lc/CCQ-1991#se:1590",
|
|
154
|
+
effectiveDate: "1994-01-01",
|
|
155
|
+
},
|
|
156
|
+
details: { protectionRatio, currentValueCents: currentValue, originalDepositCents: originalDeposit },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Règlement sur les formulaires de bail obligatoires, RLRQ c B-3.1 r 1
|
|
161
|
+
* Mandatory standard lease form / Formulaire de bail obligatoire
|
|
162
|
+
*
|
|
163
|
+
* All residential leases in Quebec must use the TAL-approved mandatory form.
|
|
164
|
+
*/
|
|
165
|
+
checkMandatoryBailForm(input) {
|
|
166
|
+
const hasSignatures = input.landlordConsentSignature !== undefined ||
|
|
167
|
+
input.mutualAssentTimestamp !== undefined;
|
|
168
|
+
return {
|
|
169
|
+
name: "mandatory-bail-form",
|
|
170
|
+
passed: true, // Advisory — Huddle digital lease wraps the provincial bail form
|
|
171
|
+
confidence: hasSignatures ? 0.95 : 0.75,
|
|
172
|
+
note: hasSignatures
|
|
173
|
+
? "FR: Signatures des parties confirmées — bail conforme au formulaire obligatoire provincial. EN: Party signatures confirmed — lease compliant with mandatory standard form."
|
|
174
|
+
: "FR: S'assurer que le bail utilise le formulaire obligatoire (disponible sur le site du TAL: tal.gouv.qc.ca). EN: Ensure lease uses the mandatory provincial standard form available at tal.gouv.qc.ca.",
|
|
175
|
+
citation: {
|
|
176
|
+
statute: "Règlement sur les formulaires de bail obligatoires / Regulation respecting mandatory lease forms",
|
|
177
|
+
section: "RLRQ c B-3.1 r 1, art. 1",
|
|
178
|
+
summary: "FR: Tout bail résidentiel au Québec doit être conclu sur le formulaire de bail obligatoire approuvé par le TAL. EN: All residential leases in Quebec must use the mandatory standard lease form approved by the Tribunal administratif du logement.",
|
|
179
|
+
url: "https://www.tal.gouv.qc.ca/fr/le-bail/formulaire-de-bail-obligatoire",
|
|
180
|
+
effectiveDate: "1996-09-01",
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Loi sur le Tribunal administratif du logement, RLRQ c T-15.01
|
|
186
|
+
*
|
|
187
|
+
* TAL (formerly Régie du logement — renamed 2020-09-01 by 2019, c. 28) has
|
|
188
|
+
* exclusive jurisdiction over all residential tenancy disputes in Quebec.
|
|
189
|
+
*
|
|
190
|
+
* FR: Compétence exclusive du TAL sur les litiges résidentiels.
|
|
191
|
+
* EN: TAL has exclusive jurisdiction over residential disputes.
|
|
192
|
+
*/
|
|
193
|
+
checkTALCompliance(input) {
|
|
194
|
+
const hasDisputeResolution = input.disputeResolutionEnabled === true;
|
|
195
|
+
return {
|
|
196
|
+
name: "tal-compliance",
|
|
197
|
+
passed: true,
|
|
198
|
+
confidence: hasDisputeResolution ? 0.95 : 0.85,
|
|
199
|
+
note: hasDisputeResolution
|
|
200
|
+
? "FR: Mécanisme de résolution des litiges activé — compatible avec la compétence exclusive du TAL. EN: Dispute resolution enabled — compatible with TAL exclusive jurisdiction."
|
|
201
|
+
: "FR: Le TAL a compétence exclusive sur les litiges résidentiels locatifs au Québec (RLRQ c T-15.01). EN: The TAL (Tribunal administratif du logement) has exclusive jurisdiction over residential tenancy disputes in Quebec.",
|
|
202
|
+
citation: {
|
|
203
|
+
statute: "Loi sur le Tribunal administratif du logement / Act respecting the Tribunal administratif du logement",
|
|
204
|
+
section: "RLRQ c T-15.01, art. 1",
|
|
205
|
+
summary: "FR: Le Tribunal administratif du logement (TAL), anciennement la Régie du logement (renommé le 2020-09-01 par la loi 2019, c. 28), a compétence exclusive pour statuer sur les litiges entre locateurs et locataires résidentiels. EN: The TAL (formerly Régie du logement, renamed 2020-09-01) has exclusive jurisdiction over disputes between residential lessors and lessees.",
|
|
206
|
+
url: "https://www.legisquebec.gouv.qc.ca/fr/document/lc/T-15.01",
|
|
207
|
+
effectiveDate: "2020-09-01",
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
checkToRemediation(check) {
|
|
212
|
+
if (check.name === "deposit-prohibition" && !check.passed) {
|
|
213
|
+
return {
|
|
214
|
+
action: "reclassify_as_lease_guarantee",
|
|
215
|
+
description: "FR: Restructurer l'instrument comme garantie locative collatéralisée (CCQ art. 1904). EN: Restructure as a Collateralized Lease Guarantee — set instrumentType to 'collateralized_lease_guarantee'.",
|
|
216
|
+
urgency: "required",
|
|
217
|
+
automatable: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
if (check.name === "instrument-classification" && !check.passed) {
|
|
221
|
+
return {
|
|
222
|
+
action: "set_instrument_type",
|
|
223
|
+
description: "FR: Définir instrumentType = 'collateralized_lease_guarantee' et collateralType = 'wbtc'. EN: Set instrumentType to 'collateralized_lease_guarantee' and collateralType to 'wbtc' for maximum compliance confidence.",
|
|
224
|
+
urgency: "required",
|
|
225
|
+
automatable: true,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return super.checkToRemediation(check);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
export const caQcSkill = new CAQCSkill();
|
|
232
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/jurisdictions/ca-qc/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canadian Province Template Skill
|
|
3
|
+
*
|
|
4
|
+
* Many Canadian provinces share a common regulatory structure:
|
|
5
|
+
* - Principal protection requirement
|
|
6
|
+
* - Deposit limit (varies: 50% or 100% of monthly rent)
|
|
7
|
+
* - Interest/yield sharing requirements
|
|
8
|
+
*
|
|
9
|
+
* This template generates typed skills for provinces with similar rules.
|
|
10
|
+
*/
|
|
11
|
+
import { BaseSkill } from "../base.js";
|
|
12
|
+
import type { SkillInput, SkillResult, SkillCheck, SkillCapability, CAProvinceCode, RemediationStep } from "../types/index.js";
|
|
13
|
+
export interface CanadianProvinceConfig {
|
|
14
|
+
code: CAProvinceCode;
|
|
15
|
+
name: string;
|
|
16
|
+
statute: string;
|
|
17
|
+
/** Deposit limit as multiplier of monthly rent (0.5 = 50%, 1.0 = 100%) */
|
|
18
|
+
depositLimitMultiplier: number;
|
|
19
|
+
depositLimitSection: string;
|
|
20
|
+
depositLimitSummary: string;
|
|
21
|
+
requiresMutualAssent: boolean;
|
|
22
|
+
statuteUrl?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class CanadianProvinceSkill extends BaseSkill {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly jurisdiction: CAProvinceCode;
|
|
28
|
+
readonly version = "1.0.0";
|
|
29
|
+
readonly capabilities: SkillCapability[];
|
|
30
|
+
private config;
|
|
31
|
+
constructor(config: CanadianProvinceConfig);
|
|
32
|
+
validate(input: SkillInput): Promise<SkillResult>;
|
|
33
|
+
private checkPrincipalProtection;
|
|
34
|
+
private checkDepositLimit;
|
|
35
|
+
private checkMutualAssent;
|
|
36
|
+
protected checkToRemediation(check: SkillCheck): RemediationStep;
|
|
37
|
+
}
|
|
38
|
+
export declare const caAbSkill: CanadianProvinceSkill;
|
|
39
|
+
export declare const caMbSkill: CanadianProvinceSkill;
|
|
40
|
+
export declare const caSkSkill: CanadianProvinceSkill;
|
|
41
|
+
export declare const caNbSkill: CanadianProvinceSkill;
|
|
42
|
+
export declare const caPeSkill: CanadianProvinceSkill;
|
|
43
|
+
export declare const caNlSkill: CanadianProvinceSkill;
|
|
44
|
+
export declare const caYtSkill: CanadianProvinceSkill;
|
|
45
|
+
export declare const caNtSkill: CanadianProvinceSkill;
|
|
46
|
+
export declare const caNuSkill: CanadianProvinceSkill;
|
|
47
|
+
/** All template-generated province skills */
|
|
48
|
+
export declare const canadianTemplateSkills: CanadianProvinceSkill[];
|
|
49
|
+
//# sourceMappingURL=canadian-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canadian-template.d.ts","sourceRoot":"","sources":["../../src/jurisdictions/canadian-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EAEf,cAAc,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,SAAS;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAA0B;IAElE,OAAO,CAAC,MAAM,CAAyB;gBAE3B,MAAM,EAAE,sBAAsB;IAQpC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBvD,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,iBAAiB;cAoBN,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe;CAW1E;AAsGD,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AACtG,eAAO,MAAM,SAAS,uBAA+E,CAAC;AAEtG,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,yBAGlC,CAAC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canadian Province Template Skill
|
|
3
|
+
*
|
|
4
|
+
* Many Canadian provinces share a common regulatory structure:
|
|
5
|
+
* - Principal protection requirement
|
|
6
|
+
* - Deposit limit (varies: 50% or 100% of monthly rent)
|
|
7
|
+
* - Interest/yield sharing requirements
|
|
8
|
+
*
|
|
9
|
+
* This template generates typed skills for provinces with similar rules.
|
|
10
|
+
*/
|
|
11
|
+
import { BaseSkill } from "../base.js";
|
|
12
|
+
export class CanadianProvinceSkill extends BaseSkill {
|
|
13
|
+
id;
|
|
14
|
+
name;
|
|
15
|
+
jurisdiction;
|
|
16
|
+
version = "1.0.0";
|
|
17
|
+
capabilities = ["deposit-validation"];
|
|
18
|
+
config;
|
|
19
|
+
constructor(config) {
|
|
20
|
+
super();
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.id = `huddle-compliance-${config.code.toLowerCase()}`;
|
|
23
|
+
this.name = `${config.name} — ${config.statute}`;
|
|
24
|
+
this.jurisdiction = config.code;
|
|
25
|
+
}
|
|
26
|
+
async validate(input) {
|
|
27
|
+
if (input.type !== "deposit-validation") {
|
|
28
|
+
return this.buildResult([{
|
|
29
|
+
name: "input-type",
|
|
30
|
+
passed: false,
|
|
31
|
+
confidence: 1.0,
|
|
32
|
+
note: `${this.config.code} skill currently supports deposit-validation, received: ${input.type}`,
|
|
33
|
+
}], input);
|
|
34
|
+
}
|
|
35
|
+
const deposit = input;
|
|
36
|
+
const checks = [
|
|
37
|
+
this.checkPrincipalProtection(deposit),
|
|
38
|
+
this.checkDepositLimit(deposit),
|
|
39
|
+
];
|
|
40
|
+
if (this.config.requiresMutualAssent) {
|
|
41
|
+
checks.unshift(this.checkMutualAssent(deposit));
|
|
42
|
+
}
|
|
43
|
+
return this.buildResult(checks, input);
|
|
44
|
+
}
|
|
45
|
+
checkPrincipalProtection(input) {
|
|
46
|
+
const currentValue = input.collateralValueCents ?? 0;
|
|
47
|
+
const originalDeposit = input.originalDepositValueCents ?? 0;
|
|
48
|
+
const protectionRatio = originalDeposit > 0 ? currentValue / originalDeposit : 1;
|
|
49
|
+
const passed = protectionRatio >= 1.0;
|
|
50
|
+
return {
|
|
51
|
+
name: "principal-protection",
|
|
52
|
+
passed,
|
|
53
|
+
confidence: 1.0,
|
|
54
|
+
note: passed
|
|
55
|
+
? `Principal protected at ${(protectionRatio * 100).toFixed(0)}%`
|
|
56
|
+
: "100% principal protection required",
|
|
57
|
+
citation: {
|
|
58
|
+
statute: this.config.statute,
|
|
59
|
+
section: "Principal Protection",
|
|
60
|
+
summary: "Full deposit value must be preserved and available for return",
|
|
61
|
+
url: this.config.statuteUrl,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
checkDepositLimit(input) {
|
|
66
|
+
const depositAmount = input.depositAmountCents;
|
|
67
|
+
const monthlyRent = input.monthlyRentCents;
|
|
68
|
+
const maxAllowed = Math.floor(monthlyRent * this.config.depositLimitMultiplier);
|
|
69
|
+
const withinLimit = depositAmount <= maxAllowed;
|
|
70
|
+
const limitPercentage = (this.config.depositLimitMultiplier * 100).toFixed(0);
|
|
71
|
+
return {
|
|
72
|
+
name: "deposit-limit",
|
|
73
|
+
passed: withinLimit,
|
|
74
|
+
confidence: 1.0,
|
|
75
|
+
note: withinLimit
|
|
76
|
+
? `Deposit within ${limitPercentage}% of monthly rent limit`
|
|
77
|
+
: `Deposit exceeds ${limitPercentage}% of monthly rent ($${(maxAllowed / 100).toFixed(2)} max)`,
|
|
78
|
+
citation: {
|
|
79
|
+
statute: this.config.statute,
|
|
80
|
+
section: this.config.depositLimitSection,
|
|
81
|
+
summary: this.config.depositLimitSummary,
|
|
82
|
+
url: this.config.statuteUrl,
|
|
83
|
+
},
|
|
84
|
+
details: { depositAmountCents: depositAmount, maxAllowedCents: maxAllowed },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
checkMutualAssent(input) {
|
|
88
|
+
const landlordConsent = input.landlordConsentSignature !== undefined;
|
|
89
|
+
const tenantConsent = input.tenantConsentSignature !== undefined;
|
|
90
|
+
const passed = landlordConsent && tenantConsent;
|
|
91
|
+
return {
|
|
92
|
+
name: "mutual-assent",
|
|
93
|
+
passed,
|
|
94
|
+
confidence: 1.0,
|
|
95
|
+
note: passed
|
|
96
|
+
? "Written mutual consent confirmed"
|
|
97
|
+
: "Written consent from both landlord and tenant required",
|
|
98
|
+
citation: {
|
|
99
|
+
statute: this.config.statute,
|
|
100
|
+
section: "Consent Requirements",
|
|
101
|
+
summary: "Mutual written consent required for deposit investment",
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
checkToRemediation(check) {
|
|
106
|
+
if (check.name === "deposit-limit") {
|
|
107
|
+
return {
|
|
108
|
+
action: "reduce_deposit",
|
|
109
|
+
description: `Reduce deposit to within ${(this.config.depositLimitMultiplier * 100).toFixed(0)}% of monthly rent`,
|
|
110
|
+
urgency: "required",
|
|
111
|
+
automatable: true,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return super.checkToRemediation(check);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// ============================================================================
|
|
118
|
+
// Province Configurations
|
|
119
|
+
// ============================================================================
|
|
120
|
+
const PROVINCE_CONFIGS = [
|
|
121
|
+
{
|
|
122
|
+
code: "CA-AB",
|
|
123
|
+
name: "Alberta",
|
|
124
|
+
statute: "Alberta Residential Tenancies Act",
|
|
125
|
+
depositLimitMultiplier: 1.0,
|
|
126
|
+
depositLimitSection: "Section 28",
|
|
127
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
128
|
+
requiresMutualAssent: false,
|
|
129
|
+
statuteUrl: "https://www.qp.alberta.ca/documents/Acts/R17P1.pdf",
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
code: "CA-MB",
|
|
133
|
+
name: "Manitoba",
|
|
134
|
+
statute: "Manitoba Residential Tenancies Act",
|
|
135
|
+
depositLimitMultiplier: 0.5,
|
|
136
|
+
depositLimitSection: "Section 86(1)",
|
|
137
|
+
depositLimitSummary: "Security deposit cannot exceed 50% of one month's rent",
|
|
138
|
+
requiresMutualAssent: false,
|
|
139
|
+
statuteUrl: "https://web2.gov.mb.ca/laws/statutes/ccsm/r119-6e.php",
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
code: "CA-SK",
|
|
143
|
+
name: "Saskatchewan",
|
|
144
|
+
statute: "Saskatchewan Residential Tenancies Act",
|
|
145
|
+
depositLimitMultiplier: 1.0,
|
|
146
|
+
depositLimitSection: "Section 30",
|
|
147
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
148
|
+
requiresMutualAssent: false,
|
|
149
|
+
statuteUrl: "https://publications.saskatchewan.ca/api/v1/products/73511/formats/82710/download",
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
code: "CA-NB",
|
|
153
|
+
name: "New Brunswick",
|
|
154
|
+
statute: "New Brunswick Residential Tenancies Act",
|
|
155
|
+
depositLimitMultiplier: 1.0,
|
|
156
|
+
depositLimitSection: "Section 11",
|
|
157
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
158
|
+
requiresMutualAssent: false,
|
|
159
|
+
statuteUrl: "https://laws.gnb.ca/en/ShowPdf/cs/R-10.2.pdf",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
code: "CA-PE",
|
|
163
|
+
name: "Prince Edward Island",
|
|
164
|
+
statute: "PEI Rental of Residential Property Act",
|
|
165
|
+
depositLimitMultiplier: 1.0,
|
|
166
|
+
depositLimitSection: "Section 33",
|
|
167
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
168
|
+
requiresMutualAssent: false,
|
|
169
|
+
statuteUrl: "https://www.princeedwardisland.ca/en/legislation/rental-residential-property-act",
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
code: "CA-NL",
|
|
173
|
+
name: "Newfoundland and Labrador",
|
|
174
|
+
statute: "NL Residential Tenancies Act",
|
|
175
|
+
depositLimitMultiplier: 0.75,
|
|
176
|
+
depositLimitSection: "Section 11",
|
|
177
|
+
depositLimitSummary: "Security deposit cannot exceed 75% of one month's rent",
|
|
178
|
+
requiresMutualAssent: false,
|
|
179
|
+
statuteUrl: "https://www.assembly.nl.ca/legislation/sr/statutes/r14-1.htm",
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
code: "CA-YT",
|
|
183
|
+
name: "Yukon",
|
|
184
|
+
statute: "Yukon Residential Landlord and Tenant Act",
|
|
185
|
+
depositLimitMultiplier: 1.0,
|
|
186
|
+
depositLimitSection: "Section 33",
|
|
187
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
188
|
+
requiresMutualAssent: false,
|
|
189
|
+
statuteUrl: "https://legislation.yukon.ca/acts/relt.pdf",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
code: "CA-NT",
|
|
193
|
+
name: "Northwest Territories",
|
|
194
|
+
statute: "NWT Residential Tenancies Act",
|
|
195
|
+
depositLimitMultiplier: 1.0,
|
|
196
|
+
depositLimitSection: "Section 13",
|
|
197
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
198
|
+
requiresMutualAssent: false,
|
|
199
|
+
statuteUrl: "https://www.justice.gov.nt.ca/en/files/legislation/residential-tenancies/residential-tenancies.a.pdf",
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
code: "CA-NU",
|
|
203
|
+
name: "Nunavut",
|
|
204
|
+
statute: "Nunavut Residential Tenancies Act",
|
|
205
|
+
depositLimitMultiplier: 1.0,
|
|
206
|
+
depositLimitSection: "Section 13",
|
|
207
|
+
depositLimitSummary: "Security deposit cannot exceed one month's rent",
|
|
208
|
+
requiresMutualAssent: false,
|
|
209
|
+
},
|
|
210
|
+
];
|
|
211
|
+
// ============================================================================
|
|
212
|
+
// Exports — one skill per province
|
|
213
|
+
// ============================================================================
|
|
214
|
+
export const caAbSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-AB"));
|
|
215
|
+
export const caMbSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-MB"));
|
|
216
|
+
export const caSkSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-SK"));
|
|
217
|
+
export const caNbSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-NB"));
|
|
218
|
+
export const caPeSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-PE"));
|
|
219
|
+
export const caNlSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-NL"));
|
|
220
|
+
export const caYtSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-YT"));
|
|
221
|
+
export const caNtSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-NT"));
|
|
222
|
+
export const caNuSkill = new CanadianProvinceSkill(PROVINCE_CONFIGS.find((c) => c.code === "CA-NU"));
|
|
223
|
+
/** All template-generated province skills */
|
|
224
|
+
export const canadianTemplateSkills = [
|
|
225
|
+
caAbSkill, caMbSkill, caSkSkill, caNbSkill, caPeSkill,
|
|
226
|
+
caNlSkill, caYtSkill, caNtSkill, caNuSkill,
|
|
227
|
+
];
|
|
228
|
+
//# sourceMappingURL=canadian-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canadian-template.js","sourceRoot":"","sources":["../../src/jurisdictions/canadian-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active Tenancy Compliance Skill
|
|
3
|
+
*
|
|
4
|
+
* Validates rent payments, late fees, and rent increases against
|
|
5
|
+
* jurisdiction-specific rules. Works alongside deposit skills to provide
|
|
6
|
+
* continuous compliance during the tenancy lifecycle.
|
|
7
|
+
*
|
|
8
|
+
* Capabilities:
|
|
9
|
+
* - Late fee validation (caps, grace periods, compounding rules)
|
|
10
|
+
* - Rent payment receipt requirements
|
|
11
|
+
* - Payment timeliness tracking
|
|
12
|
+
*/
|
|
13
|
+
import { BaseSkill } from "../../base.js";
|
|
14
|
+
import type { SkillInput, SkillResult, SkillCheck, SkillCapability, RemediationStep, SkillMetadata } from "../../types/index.js";
|
|
15
|
+
export declare class ActiveTenancySkill extends BaseSkill {
|
|
16
|
+
readonly id = "huddle-active-tenancy";
|
|
17
|
+
readonly name = "Active Tenancy Compliance";
|
|
18
|
+
readonly jurisdiction: "US-CFTC";
|
|
19
|
+
readonly version = "1.0.0";
|
|
20
|
+
readonly capabilities: SkillCapability[];
|
|
21
|
+
private targetJurisdiction;
|
|
22
|
+
constructor(jurisdiction?: string);
|
|
23
|
+
/**
|
|
24
|
+
* Create a jurisdiction-specific active tenancy skill
|
|
25
|
+
*/
|
|
26
|
+
static forJurisdiction(jurisdiction: string): ActiveTenancySkill;
|
|
27
|
+
validate(input: SkillInput): Promise<SkillResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Validate late fee against jurisdiction-specific caps
|
|
30
|
+
*/
|
|
31
|
+
private checkLateFee;
|
|
32
|
+
/**
|
|
33
|
+
* Validate grace period compliance
|
|
34
|
+
*/
|
|
35
|
+
private checkGracePeriod;
|
|
36
|
+
/**
|
|
37
|
+
* Track payment timeliness
|
|
38
|
+
*/
|
|
39
|
+
private checkPaymentTimeliness;
|
|
40
|
+
protected checkToRemediation(check: SkillCheck): RemediationStep;
|
|
41
|
+
getMetadata(): SkillMetadata;
|
|
42
|
+
}
|
|
43
|
+
export declare const activeTenancySkill: ActiveTenancySkill;
|
|
44
|
+
/** Pre-built jurisdiction-specific instances */
|
|
45
|
+
export declare const activeTenancySkills: {
|
|
46
|
+
"US-NY": ActiveTenancySkill;
|
|
47
|
+
"US-CA": ActiveTenancySkill;
|
|
48
|
+
"US-TX": ActiveTenancySkill;
|
|
49
|
+
"US-FL": ActiveTenancySkill;
|
|
50
|
+
"US-MA": ActiveTenancySkill;
|
|
51
|
+
"CA-ON": ActiveTenancySkill;
|
|
52
|
+
"CA-BC": ActiveTenancySkill;
|
|
53
|
+
"CA-QC": ActiveTenancySkill;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=active-tenancy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-tenancy.d.ts","sourceRoot":"","sources":["../../../src/jurisdictions/lifecycle/active-tenancy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,eAAe,EAEf,eAAe,EACf,aAAa,EAEd,MAAM,sBAAsB,CAAC;AAoC9B,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,CAAC,EAAE,2BAA2B;IACtC,QAAQ,CAAC,IAAI,+BAA+B;IAC5C,QAAQ,CAAC,YAAY,EAAG,SAAS,CAAU;IAC3C,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,CAGtC;IAEF,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,YAAY,CAAC,EAAE,MAAM;IAKjC;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB;IAI1D,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBvD;;OAEG;IACH,OAAO,CAAC,YAAY;IAyDpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;cAoBX,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe;IA4BhE,WAAW,IAAI,aAAa;CAOtC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAE3D,gDAAgD;AAChD,eAAO,MAAM,mBAAmB;;;;;;;;;CAS/B,CAAC"}
|