@timardex/cluemart-shared 1.5.499 → 1.5.500
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/{chunk-EJSVR77W.mjs → chunk-IDDG4XZS.mjs} +2 -2
- package/dist/{chunk-RO2IWCW2.mjs → chunk-Q6CO7TFK.mjs} +39 -20
- package/dist/chunk-Q6CO7TFK.mjs.map +1 -0
- package/dist/{chunk-6WV7CECU.mjs → chunk-W4FADQMS.mjs} +2 -2
- package/dist/formFields/index.cjs +38 -19
- package/dist/formFields/index.cjs.map +1 -1
- package/dist/formFields/index.mjs +3 -3
- package/dist/{game-Dn5SH8_0.d.ts → game-BzOJ4f7U.d.ts} +38 -19
- package/dist/{game-BR9xpQkt.d.mts → game-CoVv7iyf.d.mts} +38 -19
- package/dist/graphql/index.d.mts +2 -2
- package/dist/graphql/index.d.ts +2 -2
- package/dist/hooks/index.cjs +38 -19
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.mts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.mjs +3 -3
- package/dist/index.cjs +38 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +38 -19
- package/dist/index.d.ts +38 -19
- package/dist/index.mjs +38 -19
- package/dist/index.mjs.map +1 -1
- package/dist/{post-BBYcN5xv.d.mts → post-CcJowEi5.d.mts} +1 -1
- package/dist/{post-CWZFxlP7.d.ts → post-D9_1FbFI.d.ts} +1 -1
- package/dist/types/index.cjs +38 -19
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.mts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.mjs +1 -1
- package/dist/utils/index.cjs +38 -19
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-RO2IWCW2.mjs.map +0 -1
- /package/dist/{chunk-EJSVR77W.mjs.map → chunk-IDDG4XZS.mjs.map} +0 -0
- /package/dist/{chunk-6WV7CECU.mjs.map → chunk-W4FADQMS.mjs.map} +0 -0
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-534WN2SR.mjs";
|
|
6
6
|
import {
|
|
7
7
|
gameScreenIdentifierList
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-Q6CO7TFK.mjs";
|
|
9
9
|
|
|
10
10
|
// src/utils/dailyClueGame.ts
|
|
11
11
|
import dayjs from "dayjs";
|
|
@@ -256,4 +256,4 @@ export {
|
|
|
256
256
|
IOS_URL,
|
|
257
257
|
ANDROID_URL
|
|
258
258
|
};
|
|
259
|
-
//# sourceMappingURL=chunk-
|
|
259
|
+
//# sourceMappingURL=chunk-IDDG4XZS.mjs.map
|
|
@@ -12,79 +12,98 @@ var createRouteMatcher = (base, type) => {
|
|
|
12
12
|
var gameScreenIdentifierList = [
|
|
13
13
|
{
|
|
14
14
|
clue: "Where your actions turn into a timeline.",
|
|
15
|
-
id: "
|
|
15
|
+
id: "activities",
|
|
16
|
+
match: "/profile/activities"
|
|
16
17
|
},
|
|
17
18
|
{
|
|
18
19
|
clue: "Where conversations happen without speaking.",
|
|
19
|
-
id: "
|
|
20
|
+
id: "chat",
|
|
21
|
+
match: "/profile/chat"
|
|
20
22
|
},
|
|
21
23
|
{
|
|
22
24
|
clue: "The place to redefine who you are.",
|
|
23
|
-
id: "
|
|
25
|
+
id: "edit-profile",
|
|
26
|
+
match: "/profile/edit-profile"
|
|
24
27
|
},
|
|
25
28
|
{
|
|
26
29
|
clue: "A single moment worth showing up for.",
|
|
27
|
-
id:
|
|
30
|
+
id: "single-event",
|
|
31
|
+
match: createRouteMatcher("events", "mongoId")
|
|
28
32
|
},
|
|
29
33
|
{
|
|
30
34
|
clue: "What\u2019s happening around you, right now.",
|
|
31
|
-
id: "
|
|
35
|
+
id: "events-near-me",
|
|
36
|
+
match: "/events/events-near-me"
|
|
32
37
|
},
|
|
33
38
|
{
|
|
34
39
|
clue: "A collection of things worth attending.",
|
|
35
|
-
id: "
|
|
40
|
+
id: "events",
|
|
41
|
+
match: "/events"
|
|
36
42
|
},
|
|
37
43
|
{
|
|
38
44
|
clue: "What\u2019s happening in a wider area\u2014not just nearby.",
|
|
39
|
-
id:
|
|
45
|
+
id: "events-region",
|
|
46
|
+
match: createRouteMatcher("events/region", "slug")
|
|
40
47
|
},
|
|
41
48
|
{
|
|
42
49
|
clue: "Where you go to find something specific.",
|
|
43
|
-
id: "
|
|
50
|
+
id: "events-search",
|
|
51
|
+
match: "/events/search"
|
|
44
52
|
},
|
|
45
53
|
{
|
|
46
54
|
clue: "Where fun becomes a challenge.",
|
|
47
|
-
id: "
|
|
55
|
+
id: "games",
|
|
56
|
+
match: "/games"
|
|
48
57
|
},
|
|
49
58
|
{
|
|
50
59
|
clue: "Your starting point for everything.",
|
|
51
|
-
id: "
|
|
60
|
+
id: "home",
|
|
61
|
+
match: "/"
|
|
52
62
|
},
|
|
53
63
|
{
|
|
54
64
|
clue: "Where the app taps you on the shoulder.",
|
|
55
|
-
id: "
|
|
65
|
+
id: "notifications",
|
|
66
|
+
match: "/notifications"
|
|
56
67
|
},
|
|
57
68
|
{
|
|
58
69
|
clue: "Where you fine-tune your experience.",
|
|
59
|
-
id: "
|
|
70
|
+
id: "options",
|
|
71
|
+
match: "/options"
|
|
60
72
|
},
|
|
61
73
|
{
|
|
62
74
|
clue: "A single collaborator in the ecosystem.",
|
|
63
|
-
id:
|
|
75
|
+
id: "single-partner",
|
|
76
|
+
match: createRouteMatcher("partners", "mongoId")
|
|
64
77
|
},
|
|
65
78
|
{
|
|
66
79
|
clue: "The network behind the scenes.",
|
|
67
|
-
id: "
|
|
80
|
+
id: "partners",
|
|
81
|
+
match: "/partners"
|
|
68
82
|
},
|
|
69
83
|
{
|
|
70
84
|
clue: "Where you share something with everyone.",
|
|
71
|
-
id:
|
|
85
|
+
id: "single-visitor-post",
|
|
86
|
+
match: createRouteMatcher("visitors/posts", "mongoId")
|
|
72
87
|
},
|
|
73
88
|
{
|
|
74
89
|
clue: "Your identity, on display.",
|
|
75
|
-
id: "
|
|
90
|
+
id: "profile",
|
|
91
|
+
match: "/profile"
|
|
76
92
|
},
|
|
77
93
|
{
|
|
78
94
|
clue: "One provider offering something valuable.",
|
|
79
|
-
id:
|
|
95
|
+
id: "single-vendor",
|
|
96
|
+
match: createRouteMatcher("vendors", "mongoId")
|
|
80
97
|
},
|
|
81
98
|
{
|
|
82
99
|
clue: "A marketplace of providers.",
|
|
83
|
-
id: "
|
|
100
|
+
id: "vendors",
|
|
101
|
+
match: "/vendors"
|
|
84
102
|
},
|
|
85
103
|
{
|
|
86
104
|
clue: "People who stopped by to see you.",
|
|
87
|
-
id: "
|
|
105
|
+
id: "visitors",
|
|
106
|
+
match: "/visitors"
|
|
88
107
|
}
|
|
89
108
|
];
|
|
90
109
|
var EnumGameType = /* @__PURE__ */ ((EnumGameType2) => {
|
|
@@ -107,4 +126,4 @@ export {
|
|
|
107
126
|
gameTypeToDisplayName,
|
|
108
127
|
EnumGameStatus
|
|
109
128
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-Q6CO7TFK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/game.ts"],"sourcesContent":["import { OwnerType } from \"./global\";\n\ntype MatcherType = \"mongoId\" | \"slug\";\n\nconst createRouteMatcher = (base: string, type: MatcherType) => {\n switch (type) {\n case \"mongoId\":\n return new RegExp(`^\\\\/${base}\\\\/([a-f0-9]{24})$`);\n\n case \"slug\":\n return new RegExp(`^\\\\/${base}\\\\/[^/]+$`);\n\n default:\n return new RegExp(`^\\\\/${base}$`);\n }\n};\n\nexport const gameScreenIdentifierList = [\n {\n clue: \"Where your actions turn into a timeline.\",\n id: \"activities\",\n match: \"/profile/activities\",\n },\n {\n clue: \"Where conversations happen without speaking.\",\n id: \"chat\",\n match: \"/profile/chat\",\n },\n {\n clue: \"The place to redefine who you are.\",\n id: \"edit-profile\",\n match: \"/profile/edit-profile\",\n },\n {\n clue: \"A single moment worth showing up for.\",\n id: \"single-event\",\n match: createRouteMatcher(\"events\", \"mongoId\"),\n },\n {\n clue: \"What’s happening around you, right now.\",\n id: \"events-near-me\",\n match: \"/events/events-near-me\",\n },\n {\n clue: \"A collection of things worth attending.\",\n id: \"events\",\n match: \"/events\",\n },\n {\n clue: \"What’s happening in a wider area—not just nearby.\",\n id: \"events-region\",\n match: createRouteMatcher(\"events/region\", \"slug\"),\n },\n {\n clue: \"Where you go to find something specific.\",\n id: \"events-search\",\n match: \"/events/search\",\n },\n {\n clue: \"Where fun becomes a challenge.\",\n id: \"games\",\n match: \"/games\",\n },\n {\n clue: \"Your starting point for everything.\",\n id: \"home\",\n match: \"/\",\n },\n {\n clue: \"Where the app taps you on the shoulder.\",\n id: \"notifications\",\n match: \"/notifications\",\n },\n {\n clue: \"Where you fine-tune your experience.\",\n id: \"options\",\n match: \"/options\",\n },\n {\n clue: \"A single collaborator in the ecosystem.\",\n id: \"single-partner\",\n match: createRouteMatcher(\"partners\", \"mongoId\"),\n },\n {\n clue: \"The network behind the scenes.\",\n id: \"partners\",\n match: \"/partners\",\n },\n {\n clue: \"Where you share something with everyone.\",\n id: \"single-visitor-post\",\n match: createRouteMatcher(\"visitors/posts\", \"mongoId\"),\n },\n {\n clue: \"Your identity, on display.\",\n id: \"profile\",\n match: \"/profile\",\n },\n {\n clue: \"One provider offering something valuable.\",\n id: \"single-vendor\",\n match: createRouteMatcher(\"vendors\", \"mongoId\"),\n },\n {\n clue: \"A marketplace of providers.\",\n id: \"vendors\",\n match: \"/vendors\",\n },\n {\n clue: \"People who stopped by to see you.\",\n id: \"visitors\",\n match: \"/visitors\",\n },\n] as const;\n\nexport type GamePlacement = (typeof gameScreenIdentifierList)[number][\"id\"];\nexport type GamePlacementClue =\n (typeof gameScreenIdentifierList)[number][\"clue\"];\n\nexport enum EnumGameType {\n DAILY_CLUE = \"dailyClue\",\n}\n\nexport const gameTypeToDisplayName: Record<EnumGameType, string> = {\n [EnumGameType.DAILY_CLUE]: \"Daily Clue\",\n};\n\nexport type GameDate = {\n startDate: Date;\n endDate: Date;\n};\n\nexport type BaseGame = {\n gameDate: GameDate;\n gameSolution: string;\n gameType: EnumGameType;\n};\n\nexport type DailyClueGameData = {\n gameFields: BaseGame;\n lastFoundDate: Date | null;\n points: number;\n letterInfo: {\n collected: string[] | null; // The letters the user has found, e.g. [\"C\", \"L\", \"U\"]\n shuffled: string[]; // The letters of the solution, but shuffled, e.g. [\"L\", \"C\", \"U\"]\n todaysLetter: string | null; // The letter the user has to find today, e.g. \"C\"\n todaysClue: GamePlacementClue | null; // The clue for user to find the letter, e.g. related to {todaysPlacement}\n todaysPlacement: GamePlacement | null; // The screen where the user has to find the clue, e.g. \"HomeScreen\"\n };\n // User has found the clue 3 days in a row, this is incrementing if the user finds the clue and decrements if user misses a day\n streak: number;\n};\n\ntype GameDataMap = {\n [EnumGameType.DAILY_CLUE]: DailyClueGameData;\n};\nexport type GameData = {\n [K in keyof GameDataMap]?: GameDataMap[K] | null;\n};\n\nexport enum EnumGameStatus {\n GAME_COMPLETED = \"GAME_COMPLETED\",\n GAME_LEFT = \"GAME_LEFT\",\n GAME_IN_PROGRESS = \"GAME_IN_PROGRESS\",\n}\n\nexport type GameHistory = {\n gameDate: GameDate;\n gameStatus: EnumGameStatus;\n gameType: EnumGameType;\n pointsEarned: number;\n};\n\nexport type GameType = {\n _id: string;\n active: boolean;\n createdAt: Date;\n deletedAt: Date | null;\n gameData: GameData | null;\n gameHistory: GameHistory[] | null;\n owner: OwnerType;\n points: number;\n updatedAt: Date | null;\n};\n\nexport type GameLeaderboard = {\n gameHistory: GameHistory[] | null;\n overallPoints: number;\n owner: OwnerType;\n};\n"],"mappings":";AAIA,IAAM,qBAAqB,CAAC,MAAc,SAAsB;AAC9D,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,IAAI,OAAO,OAAO,IAAI,oBAAoB;AAAA,IAEnD,KAAK;AACH,aAAO,IAAI,OAAO,OAAO,IAAI,WAAW;AAAA,IAE1C;AACE,aAAO,IAAI,OAAO,OAAO,IAAI,GAAG;AAAA,EACpC;AACF;AAEO,IAAM,2BAA2B;AAAA,EACtC;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO,mBAAmB,UAAU,SAAS;AAAA,EAC/C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO,mBAAmB,iBAAiB,MAAM;AAAA,EACnD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO,mBAAmB,YAAY,SAAS;AAAA,EACjD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO,mBAAmB,kBAAkB,SAAS;AAAA,EACvD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO,mBAAmB,WAAW,SAAS;AAAA,EAChD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,OAAO;AAAA,EACT;AACF;AAMO,IAAK,eAAL,kBAAKA,kBAAL;AACL,EAAAA,cAAA,gBAAa;AADH,SAAAA;AAAA,GAAA;AAIL,IAAM,wBAAsD;AAAA,EACjE,CAAC,4BAAuB,GAAG;AAC7B;AAmCO,IAAK,iBAAL,kBAAKC,oBAAL;AACL,EAAAA,gBAAA,oBAAiB;AACjB,EAAAA,gBAAA,eAAY;AACZ,EAAAA,gBAAA,sBAAmB;AAHT,SAAAA;AAAA,GAAA;","names":["EnumGameType","EnumGameStatus"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mapArrayToOptions
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IDDG4XZS.mjs";
|
|
4
4
|
import {
|
|
5
5
|
EnumFoodFlavor
|
|
6
6
|
} from "./chunk-534WN2SR.mjs";
|
|
@@ -1952,4 +1952,4 @@ export {
|
|
|
1952
1952
|
contactUsFields,
|
|
1953
1953
|
partnerBasicInfoFields
|
|
1954
1954
|
};
|
|
1955
|
-
//# sourceMappingURL=chunk-
|
|
1955
|
+
//# sourceMappingURL=chunk-W4FADQMS.mjs.map
|
|
@@ -342,79 +342,98 @@ var createRouteMatcher = (base, type) => {
|
|
|
342
342
|
var gameScreenIdentifierList = [
|
|
343
343
|
{
|
|
344
344
|
clue: "Where your actions turn into a timeline.",
|
|
345
|
-
id: "
|
|
345
|
+
id: "activities",
|
|
346
|
+
match: "/profile/activities"
|
|
346
347
|
},
|
|
347
348
|
{
|
|
348
349
|
clue: "Where conversations happen without speaking.",
|
|
349
|
-
id: "
|
|
350
|
+
id: "chat",
|
|
351
|
+
match: "/profile/chat"
|
|
350
352
|
},
|
|
351
353
|
{
|
|
352
354
|
clue: "The place to redefine who you are.",
|
|
353
|
-
id: "
|
|
355
|
+
id: "edit-profile",
|
|
356
|
+
match: "/profile/edit-profile"
|
|
354
357
|
},
|
|
355
358
|
{
|
|
356
359
|
clue: "A single moment worth showing up for.",
|
|
357
|
-
id:
|
|
360
|
+
id: "single-event",
|
|
361
|
+
match: createRouteMatcher("events", "mongoId")
|
|
358
362
|
},
|
|
359
363
|
{
|
|
360
364
|
clue: "What\u2019s happening around you, right now.",
|
|
361
|
-
id: "
|
|
365
|
+
id: "events-near-me",
|
|
366
|
+
match: "/events/events-near-me"
|
|
362
367
|
},
|
|
363
368
|
{
|
|
364
369
|
clue: "A collection of things worth attending.",
|
|
365
|
-
id: "
|
|
370
|
+
id: "events",
|
|
371
|
+
match: "/events"
|
|
366
372
|
},
|
|
367
373
|
{
|
|
368
374
|
clue: "What\u2019s happening in a wider area\u2014not just nearby.",
|
|
369
|
-
id:
|
|
375
|
+
id: "events-region",
|
|
376
|
+
match: createRouteMatcher("events/region", "slug")
|
|
370
377
|
},
|
|
371
378
|
{
|
|
372
379
|
clue: "Where you go to find something specific.",
|
|
373
|
-
id: "
|
|
380
|
+
id: "events-search",
|
|
381
|
+
match: "/events/search"
|
|
374
382
|
},
|
|
375
383
|
{
|
|
376
384
|
clue: "Where fun becomes a challenge.",
|
|
377
|
-
id: "
|
|
385
|
+
id: "games",
|
|
386
|
+
match: "/games"
|
|
378
387
|
},
|
|
379
388
|
{
|
|
380
389
|
clue: "Your starting point for everything.",
|
|
381
|
-
id: "
|
|
390
|
+
id: "home",
|
|
391
|
+
match: "/"
|
|
382
392
|
},
|
|
383
393
|
{
|
|
384
394
|
clue: "Where the app taps you on the shoulder.",
|
|
385
|
-
id: "
|
|
395
|
+
id: "notifications",
|
|
396
|
+
match: "/notifications"
|
|
386
397
|
},
|
|
387
398
|
{
|
|
388
399
|
clue: "Where you fine-tune your experience.",
|
|
389
|
-
id: "
|
|
400
|
+
id: "options",
|
|
401
|
+
match: "/options"
|
|
390
402
|
},
|
|
391
403
|
{
|
|
392
404
|
clue: "A single collaborator in the ecosystem.",
|
|
393
|
-
id:
|
|
405
|
+
id: "single-partner",
|
|
406
|
+
match: createRouteMatcher("partners", "mongoId")
|
|
394
407
|
},
|
|
395
408
|
{
|
|
396
409
|
clue: "The network behind the scenes.",
|
|
397
|
-
id: "
|
|
410
|
+
id: "partners",
|
|
411
|
+
match: "/partners"
|
|
398
412
|
},
|
|
399
413
|
{
|
|
400
414
|
clue: "Where you share something with everyone.",
|
|
401
|
-
id:
|
|
415
|
+
id: "single-visitor-post",
|
|
416
|
+
match: createRouteMatcher("visitors/posts", "mongoId")
|
|
402
417
|
},
|
|
403
418
|
{
|
|
404
419
|
clue: "Your identity, on display.",
|
|
405
|
-
id: "
|
|
420
|
+
id: "profile",
|
|
421
|
+
match: "/profile"
|
|
406
422
|
},
|
|
407
423
|
{
|
|
408
424
|
clue: "One provider offering something valuable.",
|
|
409
|
-
id:
|
|
425
|
+
id: "single-vendor",
|
|
426
|
+
match: createRouteMatcher("vendors", "mongoId")
|
|
410
427
|
},
|
|
411
428
|
{
|
|
412
429
|
clue: "A marketplace of providers.",
|
|
413
|
-
id: "
|
|
430
|
+
id: "vendors",
|
|
431
|
+
match: "/vendors"
|
|
414
432
|
},
|
|
415
433
|
{
|
|
416
434
|
clue: "People who stopped by to see you.",
|
|
417
|
-
id: "
|
|
435
|
+
id: "visitors",
|
|
436
|
+
match: "/visitors"
|
|
418
437
|
}
|
|
419
438
|
];
|
|
420
439
|
|