@dreadwood-types/types 0.1.366 → 0.1.367
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/dist/hopeFair.d.ts +282 -0
- package/dist/hopeFair.d.ts.map +1 -0
- package/dist/hopeFair.js +451 -0
- package/dist/hopeFair.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/storyQuests.d.ts.map +1 -1
- package/dist/storyQuests.js +5 -0
- package/dist/storyQuests.js.map +1 -1
- package/package.json +43 -43
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { marksmenWeekKey } from './marksmenRange.js';
|
|
2
|
+
import type { StorySkill } from './storyQuests.js';
|
|
3
|
+
export declare const HOPE_FAIR_NAME = "The Hope Town Fair of Firsts";
|
|
4
|
+
export declare const HOPE_FAIR_SHORT_NAME = "Hope Town Fair of Firsts";
|
|
5
|
+
/**
|
|
6
|
+
* The fair's green, east of Hope Town's wall (wall x 305, south wall z 916) and north of Hollin Brook (the brook runs from z 939), west of the Ford Road
|
|
7
|
+
* (x 353-355): flat grass at height 0, a few trees to clear. The brief's box (z 920-960) is cut by the brook, so the fair sits on the clear stretch north of it.
|
|
8
|
+
*/
|
|
9
|
+
export declare const HOPE_FAIR_BOX: {
|
|
10
|
+
readonly minX: 308;
|
|
11
|
+
readonly maxX: 351;
|
|
12
|
+
readonly minZ: 918;
|
|
13
|
+
readonly maxZ: 938;
|
|
14
|
+
};
|
|
15
|
+
/** The Fair Lane: worn dirt, two wide, from the town's south walkway (x 272) east along the wall's foot to the green. */
|
|
16
|
+
export declare const HOPE_FAIR_LANE: {
|
|
17
|
+
readonly minX: 273;
|
|
18
|
+
readonly maxX: 307;
|
|
19
|
+
readonly minZ: 919;
|
|
20
|
+
readonly maxZ: 920;
|
|
21
|
+
};
|
|
22
|
+
/** The signpost at the lane's mouth, where the walkway passes. */
|
|
23
|
+
export declare const HOPE_FAIR_SIGN: {
|
|
24
|
+
readonly x: 275;
|
|
25
|
+
readonly z: 921;
|
|
26
|
+
readonly text: "Hope Town Fair of Firsts";
|
|
27
|
+
};
|
|
28
|
+
/** The trampled ring in the middle of the green (worn dirt, no fence). */
|
|
29
|
+
export declare const HOPE_FAIR_RING: {
|
|
30
|
+
readonly minX: 322;
|
|
31
|
+
readonly maxX: 337;
|
|
32
|
+
readonly minZ: 923;
|
|
33
|
+
readonly maxZ: 931;
|
|
34
|
+
};
|
|
35
|
+
export declare function inHopeFair(x: number, z: number, pad?: number): boolean;
|
|
36
|
+
/** Is this tile on the Fair Lane? */
|
|
37
|
+
export declare function inHopeFairLane(x: number, z: number): boolean;
|
|
38
|
+
export type HopeContestId = 'catch' | 'chop' | 'bake' | 'dash';
|
|
39
|
+
export declare const HOPE_CONTEST_IDS: readonly HopeContestId[];
|
|
40
|
+
export declare function isHopeContestId(id: unknown): id is HopeContestId;
|
|
41
|
+
/** The ribbon a placing earns: the Bramble Fair's own item (gold 3, silver 2, bronze 1). */
|
|
42
|
+
export declare const HOPE_FAIR_RIBBON_KIND = "fairribbon";
|
|
43
|
+
export type HopePlacing = 'gold' | 'silver' | 'bronze' | 'none';
|
|
44
|
+
export type HopePrize = {
|
|
45
|
+
coins: number;
|
|
46
|
+
xp: number;
|
|
47
|
+
ribbons: number;
|
|
48
|
+
};
|
|
49
|
+
export type HopeContestDef = {
|
|
50
|
+
id: HopeContestId;
|
|
51
|
+
title: string;
|
|
52
|
+
/** The stall's name on the board and in the chat ("First Catch"). */
|
|
53
|
+
short: string;
|
|
54
|
+
/** The skill its XP is paid in (placeholders). */
|
|
55
|
+
skill: StorySkill;
|
|
56
|
+
/** Is a bigger score better ('high') or a smaller one ('low', a time)? */
|
|
57
|
+
better: 'high' | 'low';
|
|
58
|
+
blurb: string;
|
|
59
|
+
prizes: Readonly<Record<HopePlacing, HopePrize>>;
|
|
60
|
+
};
|
|
61
|
+
export declare const HOPE_CONTESTS: Readonly<Record<HopeContestId, HopeContestDef>>;
|
|
62
|
+
/** An unfinished try is forgotten after this long (a contest left half done costs nothing and pays nothing). */
|
|
63
|
+
export declare const HOPE_SESSION_TTL_MS: number;
|
|
64
|
+
/** A placing pays once a window per player per contest; another go is always free but pays nothing more in the window. */
|
|
65
|
+
export declare const HOPE_PRIZE_WINDOW_MS: number;
|
|
66
|
+
export declare const HOPE_CATCH_TIME_MS: number;
|
|
67
|
+
/** A cast every this often at most (the float needs a moment); a quicker click does nothing. */
|
|
68
|
+
export declare const HOPE_CATCH_CAST_MS = 3000;
|
|
69
|
+
/** The chance a cast brings a bite. */
|
|
70
|
+
export declare const HOPE_CATCH_BITE = 0.65;
|
|
71
|
+
/** The trough is fished from within this many tiles of it. */
|
|
72
|
+
export declare const HOPE_CATCH_REACH = 3;
|
|
73
|
+
export declare const HOPE_CATCH_COUNT = 3;
|
|
74
|
+
export type HopeFishKind = 'minnow' | 'roach';
|
|
75
|
+
export type HopeFish = {
|
|
76
|
+
kind: HopeFishKind;
|
|
77
|
+
grams: number;
|
|
78
|
+
};
|
|
79
|
+
export declare const HOPE_ROACH_SHARE = 0.15;
|
|
80
|
+
export declare const HOPE_MINNOW_GRAMS: {
|
|
81
|
+
readonly min: 4;
|
|
82
|
+
readonly max: 18;
|
|
83
|
+
};
|
|
84
|
+
export declare const HOPE_ROACH_GRAMS: {
|
|
85
|
+
readonly min: 20;
|
|
86
|
+
readonly max: 45;
|
|
87
|
+
};
|
|
88
|
+
export declare const HOPE_CATCH_TIERS: {
|
|
89
|
+
readonly gold: 100;
|
|
90
|
+
readonly silver: 70;
|
|
91
|
+
readonly bronze: 40;
|
|
92
|
+
};
|
|
93
|
+
/** What a bite is: a roach now and then, else a minnow; both weights drawn evenly from their range. `kindRoll` and `weightRoll` are in [0, 1). */
|
|
94
|
+
export declare function hopeCatchFish(kindRoll: number, weightRoll: number): HopeFish;
|
|
95
|
+
/** The score: the three heaviest, in grams. */
|
|
96
|
+
export declare function hopeCatchScore(grams: readonly number[]): number;
|
|
97
|
+
export declare function hopeCatchPlacing(score: number): HopePlacing;
|
|
98
|
+
export declare const HOPE_CHOP_BLOCKS = 3;
|
|
99
|
+
/** Clean swings that split a block. */
|
|
100
|
+
export declare const HOPE_CHOP_SWINGS = 6;
|
|
101
|
+
export declare const HOPE_CHOP_SWING_MS = 700;
|
|
102
|
+
/** Roughly one swing in five glances off the knot and does not count. */
|
|
103
|
+
export declare const HOPE_CHOP_GLANCE = 0.2;
|
|
104
|
+
/** A block is chopped from within this many tiles of it (Chebyshev). */
|
|
105
|
+
export declare const HOPE_CHOP_REACH = 2;
|
|
106
|
+
export declare const HOPE_CHOP_CAP_MS = 90000;
|
|
107
|
+
export declare const HOPE_CHOP_TIERS_MS: {
|
|
108
|
+
readonly gold: 26000;
|
|
109
|
+
readonly silver: 38000;
|
|
110
|
+
readonly bronze: 60000;
|
|
111
|
+
};
|
|
112
|
+
export declare function hopeChopPlacing(ms: number): HopePlacing;
|
|
113
|
+
/** What the judge accepts, and the care each bake earns: the plain loaf, and the honey loaf that took a pot of honey and a sack of flour. */
|
|
114
|
+
export declare const HOPE_BAKE_GOODS: Readonly<Record<string, number>>;
|
|
115
|
+
/** A sprig of wild thyme given with the bake is one more point of care (it is eaten by the judge, so no loop). */
|
|
116
|
+
export declare const HOPE_BAKE_GARNISH_KIND = "wildthyme";
|
|
117
|
+
export declare const HOPE_BAKE_GARNISH_POINTS = 1;
|
|
118
|
+
export declare const HOPE_BAKE_TIERS: {
|
|
119
|
+
readonly gold: 5;
|
|
120
|
+
readonly silver: 4;
|
|
121
|
+
readonly bronze: 3;
|
|
122
|
+
};
|
|
123
|
+
export declare function hopeBakePoints(kind: string | undefined, garnished: boolean): number;
|
|
124
|
+
export declare function hopeBakePlacing(points: number): HopePlacing;
|
|
125
|
+
/** The start and finish line, and the seven cones to go round in order (each counts when you pass within HOPE_DASH_REACH of it). */
|
|
126
|
+
export declare const HOPE_DASH_START: {
|
|
127
|
+
readonly x: 340;
|
|
128
|
+
readonly z: 934;
|
|
129
|
+
};
|
|
130
|
+
export declare const HOPE_DASH_CONES: ReadonlyArray<{
|
|
131
|
+
x: number;
|
|
132
|
+
z: number;
|
|
133
|
+
}>;
|
|
134
|
+
export declare const HOPE_DASH_REACH = 1.8;
|
|
135
|
+
/** The dash is entered standing on the mark: within this many tiles of the start. */
|
|
136
|
+
export declare const HOPE_DASH_MARK = 2.5;
|
|
137
|
+
/** Running drops the egg: each drop costs this much time, and the next can fall no sooner than the gap after. */
|
|
138
|
+
export declare const HOPE_DASH_DROP_MS = 5000;
|
|
139
|
+
export declare const HOPE_DASH_DROP_GAP_MS = 1500;
|
|
140
|
+
export declare const HOPE_DASH_CAP_MS = 90000;
|
|
141
|
+
/** Time plus drops. A steady walk of the course is about 12 seconds. */
|
|
142
|
+
export declare const HOPE_DASH_TIERS_MS: {
|
|
143
|
+
readonly gold: 17000;
|
|
144
|
+
readonly silver: 26000;
|
|
145
|
+
readonly bronze: 45000;
|
|
146
|
+
};
|
|
147
|
+
export declare function hopeDashPlacing(ms: number): HopePlacing;
|
|
148
|
+
/** The length of the course, start to cones to start (tiles, straight lines). */
|
|
149
|
+
export declare function hopeDashLength(): number;
|
|
150
|
+
export declare const HOPE_BOARD_SIZE = 5;
|
|
151
|
+
export declare const HOPE_BOARD_TIMER_KEY = "hope-fair-firsts";
|
|
152
|
+
/** The week the board belongs to (UTC ISO week, "2026-W43"): it starts again each Monday. */
|
|
153
|
+
export declare const hopeFairWeekKey: typeof marksmenWeekKey;
|
|
154
|
+
export type HopeBoardRow = {
|
|
155
|
+
name: string;
|
|
156
|
+
value: number;
|
|
157
|
+
at: number;
|
|
158
|
+
};
|
|
159
|
+
export type HopeBoards = Record<HopeContestId, HopeBoardRow[]>;
|
|
160
|
+
/** `paid` is the hour's slate: `<contest>|<character>` to when the placing was paid (older than the window is dropped on write). */
|
|
161
|
+
export type HopeFairSave = {
|
|
162
|
+
week: string;
|
|
163
|
+
boards: HopeBoards;
|
|
164
|
+
paid: Record<string, number>;
|
|
165
|
+
};
|
|
166
|
+
export declare function emptyHopeBoards(): HopeBoards;
|
|
167
|
+
export declare function emptyHopeFairSave(nowMs: number): HopeFairSave;
|
|
168
|
+
export declare const HOPE_PAID_MAX = 4000;
|
|
169
|
+
/** The best row first: a bigger value for 'high' contests, a smaller one for times; a tie goes to whoever scored it first. */
|
|
170
|
+
export declare function rankHopeRows(id: HopeContestId, rows: readonly HopeBoardRow[]): HopeBoardRow[];
|
|
171
|
+
/** Would `value` beat `than` on this contest? */
|
|
172
|
+
export declare function hopeBeats(id: HopeContestId, value: number, than: number): boolean;
|
|
173
|
+
/** The save as the world stored it, or a fresh one: nothing unreadable is trusted, an old week's boards are dropped, the paid slate is kept. */
|
|
174
|
+
export declare function parseHopeFairSave(raw: unknown, nowMs: number): HopeFairSave;
|
|
175
|
+
/** 1-based place on a contest's board, or 0 when not on it. */
|
|
176
|
+
export declare function hopePlaceOf(rows: readonly HopeBoardRow[], name: string): number;
|
|
177
|
+
/**
|
|
178
|
+
* A finished try goes on its contest's board: one place per name (only a better try replaces a worse one), a new week starts a fresh board, and a value of nothing
|
|
179
|
+
* is never written. Returns the new save, whether it changed, and the place.
|
|
180
|
+
*/
|
|
181
|
+
export declare function recordHopeScore(save: HopeFairSave, id: HopeContestId, name: string, value: number, nowMs: number): {
|
|
182
|
+
save: HopeFairSave;
|
|
183
|
+
changed: boolean;
|
|
184
|
+
place: number;
|
|
185
|
+
};
|
|
186
|
+
/** How a board value reads: grams, seconds with a tenth, or care points. */
|
|
187
|
+
export declare function hopeValueText(id: HopeContestId, value: number): string;
|
|
188
|
+
export declare function hopeBoardLine(id: HopeContestId, rows: readonly HopeBoardRow[]): string;
|
|
189
|
+
export declare function hopeBoardText(save: HopeFairSave): string;
|
|
190
|
+
/** npc_action ids the fair's people answer (the client sends them on untouched). */
|
|
191
|
+
export declare const HOPE_FAIR_ACTION_PREFIX = "hfair:";
|
|
192
|
+
export declare const HOPE_FAIR_ACTIONS: {
|
|
193
|
+
readonly board: "hfair:board";
|
|
194
|
+
readonly ribbons: "hfair:ribbons";
|
|
195
|
+
readonly catch: "hfair:catch";
|
|
196
|
+
readonly weigh: "hfair:weigh";
|
|
197
|
+
readonly chop: "hfair:chop";
|
|
198
|
+
readonly bake: "hfair:bake";
|
|
199
|
+
readonly dash: "hfair:dash";
|
|
200
|
+
readonly stop: "hfair:stop";
|
|
201
|
+
};
|
|
202
|
+
export declare const HOPE_FAIR_OPTION_LABELS: Readonly<Record<string, string>>;
|
|
203
|
+
/** What the clickable props are (questprop ids: the style's part before the colon). */
|
|
204
|
+
export declare const HOPE_PROP: {
|
|
205
|
+
readonly trough: "hfcatch";
|
|
206
|
+
readonly block: "hfchop";
|
|
207
|
+
readonly table: "hfbake";
|
|
208
|
+
readonly board: "hfboard";
|
|
209
|
+
};
|
|
210
|
+
export type HopeFairProp = {
|
|
211
|
+
readonly id: string;
|
|
212
|
+
readonly style: string;
|
|
213
|
+
readonly x: number;
|
|
214
|
+
readonly z: number;
|
|
215
|
+
readonly name: string;
|
|
216
|
+
};
|
|
217
|
+
export declare const HOPE_FAIR_PROPS: ReadonlyArray<HopeFairProp>;
|
|
218
|
+
/** The hover names of the clickable props, by style (the client reads this). */
|
|
219
|
+
export declare const HOPE_FAIR_PROP_NAMES: Readonly<Record<string, string>>;
|
|
220
|
+
export declare function hopeFairPropByStyle(style: string | undefined): HopeFairProp | null;
|
|
221
|
+
/** The Blender model a fair prop draws with (stand-ins from the game's own kit; backend upgrades list `hope-fair-*`). */
|
|
222
|
+
export declare function hopeFairPropModel(prop: string | undefined, style?: string): string | null;
|
|
223
|
+
export declare const HOPE_FAIR_LINES: {
|
|
224
|
+
readonly needMark: "Stand on the mark by me first, so the course is fair.";
|
|
225
|
+
readonly alreadyRunning: "Your try is on. Finish it, or call it off from my menu.";
|
|
226
|
+
readonly inFight: "Finish your fight first. The fair will keep.";
|
|
227
|
+
readonly noTry: "You have nothing running here.";
|
|
228
|
+
readonly stopped: "Called off. Nothing is scored and nothing is paid.";
|
|
229
|
+
readonly paidThisHour: "Your placing for this contest is already in the book this hour: another go is free but pays nothing more until the hour turns.";
|
|
230
|
+
};
|
|
231
|
+
export declare const HOPE_FAIR_RULES_TEXT = "Four contests, each the first step of a skill and each scored on how well you do it, not on your level: First Catch (fishing), First Chop (woodcutting), First Bake (cooking) and the Egg and Spoon Dash (walking). A gold takes three Fair Ribbons, a silver two and a bronze one, with a few coins; each pays once an hour. The Firsts Board lists this week's best five of each and starts again on Monday.";
|
|
232
|
+
export type HopeFairPersonId = 'reeve' | 'judge' | 'baker' | 'weigh' | 'chop' | 'spoon';
|
|
233
|
+
export type HopeFairFolk = {
|
|
234
|
+
readonly id: HopeFairPersonId;
|
|
235
|
+
readonly name: string;
|
|
236
|
+
readonly place: string;
|
|
237
|
+
readonly x: number;
|
|
238
|
+
readonly z: number;
|
|
239
|
+
readonly faceX: number;
|
|
240
|
+
readonly faceZ: number;
|
|
241
|
+
readonly leash: number;
|
|
242
|
+
readonly speak: string;
|
|
243
|
+
readonly extras: ReadonlyArray<{
|
|
244
|
+
readonly id: string;
|
|
245
|
+
readonly label: string;
|
|
246
|
+
readonly say: string;
|
|
247
|
+
}>;
|
|
248
|
+
/** The server-answered options on the menu, in order (labels in HOPE_FAIR_OPTION_LABELS). */
|
|
249
|
+
readonly actions: ReadonlyArray<string>;
|
|
250
|
+
/** A counter of their own: existing goods only, never food; the cook BUYS what players cook. */
|
|
251
|
+
readonly shop?: {
|
|
252
|
+
readonly title: string;
|
|
253
|
+
readonly stock: ReadonlyArray<{
|
|
254
|
+
readonly kind: string;
|
|
255
|
+
readonly price: number;
|
|
256
|
+
}>;
|
|
257
|
+
readonly buys: Readonly<Record<string, number>>;
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
/** The six people (sheet hope-fair-5: these names are fixed). */
|
|
261
|
+
export declare const HOPE_FAIR_NAMES: {
|
|
262
|
+
readonly reeve: "Reeve Odalys Wren";
|
|
263
|
+
readonly judge: "Judge Barnaby Quill";
|
|
264
|
+
readonly baker: "Baker Hettie Crumb";
|
|
265
|
+
readonly weigh: "Weigh-Master Tobias Reed";
|
|
266
|
+
readonly chop: "Chop-Marshal Garrick Holt";
|
|
267
|
+
readonly spoon: "Spoon-Starter Fenna Dray";
|
|
268
|
+
};
|
|
269
|
+
export declare const HOPE_FAIR_FOLK: ReadonlyArray<HopeFairFolk>;
|
|
270
|
+
export declare function hopeFairFolkByName(name: string | undefined): HopeFairFolk | null;
|
|
271
|
+
export declare function hopeFairFolkById(id: string | undefined): HopeFairFolk | null;
|
|
272
|
+
/** The fair's animals: harmless kinds only (a pig, a sheep, a sheepdog are never a fight); backend npcs spawn them by name. */
|
|
273
|
+
export declare const HOPE_FAIR_ANIMALS: ReadonlyArray<{
|
|
274
|
+
readonly id: string;
|
|
275
|
+
readonly kind: 'pig' | 'sheep' | 'sheepdog';
|
|
276
|
+
readonly name: string;
|
|
277
|
+
readonly x: number;
|
|
278
|
+
readonly z: number;
|
|
279
|
+
readonly leash: number;
|
|
280
|
+
}>;
|
|
281
|
+
export declare const HOPE_FAIR_ANIMAL_NAMES: readonly string[];
|
|
282
|
+
//# sourceMappingURL=hopeFair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hopeFair.d.ts","sourceRoot":"","sources":["../src/hopeFair.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAC7D,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;CAA0D,CAAC;AACrF,yHAAyH;AACzH,eAAO,MAAM,cAAc;;;;;CAA0D,CAAC;AACtF,kEAAkE;AAClE,eAAO,MAAM,cAAc;;;;CAA0D,CAAC;AACtF,0EAA0E;AAC1E,eAAO,MAAM,cAAc;;;;;CAA0D,CAAC;AAEtF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,OAAO,CAGjE;AACD,qCAAqC;AACrC,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAG5D;AAID,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/D,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAAsC,CAAC;AAC5F,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,aAAa,CAEhE;AAED,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChE,MAAM,MAAM,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,EAAE,UAAU,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;CAClD,CAAC;AAKF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,CAqCzE,CAAC;AAEF,gHAAgH;AAChH,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAC9C,0HAA0H;AAC1H,eAAO,MAAM,oBAAoB,QAAc,CAAC;AAIhD,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAC7C,gGAAgG;AAChG,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,uCAAuC;AACvC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7D,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,iBAAiB;;;CAA+B,CAAC;AAC9D,eAAO,MAAM,gBAAgB;;;CAAgC,CAAC;AAC9D,eAAO,MAAM,gBAAgB;;;;CAAiD,CAAC;AAE/E,kJAAkJ;AAClJ,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAK5E;AACD,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE/D;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAK3D;AAID,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,uCAAuC;AACvC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,wEAAwE;AACxE,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,kBAAkB;;;;CAA4D,CAAC;AAC5F,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAKvD;AAID,6IAA6I;AAC7I,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAA+B,CAAC;AAC7F,kHAAkH;AAClH,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,eAAe;;;;CAA6C,CAAC;AAC1E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAGnF;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAK3D;AAID,oIAAoI;AACpI,eAAO,MAAM,eAAe;;;CAA8B,CAAC;AAC3D,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAEnE,CAAC;AACF,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,qFAAqF;AACrF,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,iHAAiH;AACjH,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,wEAAwE;AACxE,eAAO,MAAM,kBAAkB;;;;CAA4D,CAAC;AAC5F,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAKvD;AACD,iFAAiF;AACjF,wBAAgB,cAAc,IAAI,MAAM,CAQvC;AAID,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,6FAA6F;AAC7F,eAAO,MAAM,eAAe,wBAAkB,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAC/D,oIAAoI;AACpI,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE9F,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAE7D;AACD,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,8HAA8H;AAC9H,wBAAgB,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAG7F;AACD,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjF;AAED,gJAAgJ;AAChJ,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAwB3E;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAS1K;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAItE;AACD,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAItF;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAIxD;AAID,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,iBAAiB;;;;;;;;;CASpB,CAAC;AACX,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASpE,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,SAAS;;;;;CAAqF,CAAC;AAC5G,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1I,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,YAAY,CAQvD,CAAC;AACF,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAqE,CAAC;AACxI,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAElF;AACD,yHAAyH;AACzH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED,eAAO,MAAM,eAAe;;;;;;;CAOlB,CAAC;AAEX,eAAO,MAAM,oBAAoB,mZACiX,CAAC;AAEnZ,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AACxF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtG,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,gGAAgG;IAChG,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KAAE,CAAC;CAC/K,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,eAAe;;;;;;;CAOlB,CAAC;AAIX,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,YAAY,CAqEtD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAEhF;AACD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAE5E;AAED,+HAA+H;AAC/H,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKxM,CAAC;AACF,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAA+C,CAAC"}
|