smart-web-mcp 0.38.1 → 0.40.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/CHANGELOG.md +17 -0
- package/README.md +10 -8
- package/dist/korea/smartvertical.d.ts +64 -0
- package/dist/korea/smartvertical.js +272 -0
- package/dist/korea/smartvertical.js.map +1 -0
- package/dist/mcp-server.js +63 -437
- package/dist/mcp-server.js.map +1 -1
- package/dist/settings.d.ts +1 -0
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/dist/smartfetch/providers/x.js +140 -0
- package/dist/smartfetch/providers/x.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,8 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
|
8
8
|
|
|
9
9
|
### Added
|
|
10
10
|
|
|
11
|
+
- Added `smartvertical`, a single Korean/local structured-data MCP router for places, weather, transit, finance, DART, real estate, safety, news, commerce, spellcheck, zipcode, law, public restrooms, and GeekNews domains.
|
|
12
|
+
- X/Twitter `smartfetch` now unrolls public mega-threads through Thread Reader when direct public seed/oEmbed metadata only exposes the first post, preserving outbound links such as GitHub Gists and blog versions.
|
|
11
13
|
- Added `kr_aliexpress`, a no-secret MCP product search tool that scrapes AliExpress public search pages for product candidates, current storefront prices, images, and links with delivery/coupon/customs caveats.
|
|
12
14
|
- `kr_place_search` now provides Korean map-style local recommendations by merging Kakao Local, Google Places, and Naver Local candidates with distance/rating/review-count ranking for 맛집, 카페, 산책, and dog-walk use cases.
|
|
13
15
|
- Removed hosted API-key provider lanes (Firecrawl, Exa, Tavily, Browserless) from the smart-web runtime/benchmark surface so the default product remains no-secret/local-first.
|
|
@@ -83,6 +85,7 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
|
83
85
|
|
|
84
86
|
### Changed
|
|
85
87
|
|
|
88
|
+
- Collapsed the public MCP surface for Korean/local helpers from individual `kr_*` tools into `smartvertical` domains while keeping provider adapters modular internally.
|
|
86
89
|
- CI pull request verification now stays on GitHub-hosted runners while trusted push/release events can still use the configured runner pool.
|
|
87
90
|
- Release publishing now scopes npm credentials to the publish step, avoids dependency lifecycle scripts in OIDC/write-scoped jobs, and verifies the pinned MCP publisher asset digest before execution.
|
|
88
91
|
- YouTube transcript failures and X/Twitter login/error shells now return compact unavailable guidance instead of raw fallback page text or shell links.
|
|
@@ -160,6 +163,20 @@ The format is based on Keep a Changelog[^1] and this project uses SemVer.
|
|
|
160
163
|
- Korean public API helpers now validate outbound URLs and redirects before fetching, blocking localhost, private, and reserved targets unless `network.allowPrivateHosts` is explicitly enabled.
|
|
161
164
|
- CI now declares read-only default repository permissions, Dependabot auto-merge pins the reusable workflow without forwarding all caller secrets, and the workflow check enforces those guards.
|
|
162
165
|
|
|
166
|
+
## [0.40.0](https://github.com/jojo-labs/smart-web/compare/v0.39.0...v0.40.0) (2026-07-03)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
### Features
|
|
170
|
+
|
|
171
|
+
* collapse Korean tools into smartvertical ([#410](https://github.com/jojo-labs/smart-web/issues/410)) ([36a4f9a](https://github.com/jojo-labs/smart-web/commit/36a4f9a1064ecacb09e8570a700f5f4f5ba3469f))
|
|
172
|
+
|
|
173
|
+
## [0.39.0](https://github.com/jojo-labs/smart-web/compare/v0.38.1...v0.39.0) (2026-07-03)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
### Features
|
|
177
|
+
|
|
178
|
+
* unroll public X threads ([#408](https://github.com/jojo-labs/smart-web/issues/408)) ([f23487a](https://github.com/jojo-labs/smart-web/commit/f23487ae4ac38036556cef119bb88e75dc2aa0e1))
|
|
179
|
+
|
|
163
180
|
## [0.38.1](https://github.com/jojo-labs/smart-web/compare/v0.38.0...v0.38.1) (2026-07-03)
|
|
164
181
|
|
|
165
182
|
|
package/README.md
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
Local MCP for agentic web retrieval.
|
|
6
6
|
|
|
7
|
-
`smart-web` bundles
|
|
7
|
+
`smart-web` bundles four public tools in one stdio server:
|
|
8
8
|
|
|
9
9
|
- `smartfetch` for direct URLs
|
|
10
10
|
- `smartsearch` for discovery
|
|
11
11
|
- `smartcrawl` for same-site multi-page traversal
|
|
12
|
+
- `smartvertical` for Korean/local structured vertical data such as places, weather, transit, finance, law, commerce, and safety lookups
|
|
12
13
|
|
|
13
14
|
It is designed for **agents and MCP hosts**, not for manual browser automation. The job is to return structured retrieval output first, then signal when a browser-task runtime would be a better next step.
|
|
14
15
|
|
|
@@ -22,7 +23,7 @@ If `smart-web` returns reproducible incorrect or misleading output, open a GitHu
|
|
|
22
23
|
|
|
23
24
|
## Highlights
|
|
24
25
|
|
|
25
|
-
- one local MCP instead of separate search, fetch, and
|
|
26
|
+
- one local MCP instead of separate search, fetch, crawl, and Korean vertical-data servers
|
|
26
27
|
- explicit routing: URL → `smartfetch`, query → `smartsearch`, known site → `smartcrawl`
|
|
27
28
|
- up-front smartfetch acquisition lanes instead of broad direct → browser retry chains, with `pipeline.acquire.attempt_map` showing seed/direct/relay/archive/browser phases and skip/failure reasons
|
|
28
29
|
- optional Jina Reader relay for weak generic/article fetches when you explicitly enable it, with JSON mode and alternate-link preservation
|
|
@@ -47,17 +48,18 @@ If `smart-web` returns reproducible incorrect or misleading output, open a GitHu
|
|
|
47
48
|
- `smartsearch` when the user gave a topic, keywords, or a `site:` query
|
|
48
49
|
- `smartcrawl` when you already know the site and need multiple relevant pages
|
|
49
50
|
|
|
50
|
-
| Situation | Tool
|
|
51
|
-
| ------------------------------------------------- |
|
|
52
|
-
| User already gave a URL or shortlink | `smartfetch`
|
|
53
|
-
| User gave a topic, keywords, or `site:` query | `smartsearch`
|
|
54
|
-
| You already know the site and need multiple pages | `smartcrawl`
|
|
51
|
+
| Situation | Tool |
|
|
52
|
+
| ------------------------------------------------- | --------------- |
|
|
53
|
+
| User already gave a URL or shortlink | `smartfetch` |
|
|
54
|
+
| User gave a topic, keywords, or `site:` query | `smartsearch` |
|
|
55
|
+
| You already know the site and need multiple pages | `smartcrawl` |
|
|
56
|
+
| User needs Korean/local structured data | `smartvertical` |
|
|
55
57
|
|
|
56
58
|
`smart-web` is a retrieval layer. It is not a general-purpose click/type/form-fill browser agent.[^1]
|
|
57
59
|
|
|
58
60
|
## What the tools return
|
|
59
61
|
|
|
60
|
-
All
|
|
62
|
+
All public tools are shaped for agent consumption. Common high-signal fields include:
|
|
61
63
|
|
|
62
64
|
- `assessment`: confidence, block/auth hints, recommended handoff
|
|
63
65
|
- `pipeline`: resolve/acquire/normalize/assess stages, plus policy metadata for relay-style usage and authwall likelihood; `pipeline.acquire.attempt_map` describes the default seed, direct/impit, Jina Reader, archive, and browser phases as succeeded, failed, or skipped
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export declare const SMARTVERTICAL_DOMAINS: readonly ["geeknews", "subway", "weather", "fine_dust", "stock", "dart", "real_estate", "drug_safety", "food_safety", "news", "aliexpress", "shopping", "coupang", "spellcheck", "zipcode", "law", "place", "public_restroom"];
|
|
2
|
+
export type SmartverticalDomain = typeof SMARTVERTICAL_DOMAINS[number];
|
|
3
|
+
type SmartverticalInputOptionalFields = {
|
|
4
|
+
action: string;
|
|
5
|
+
query: string;
|
|
6
|
+
id: string;
|
|
7
|
+
text: string;
|
|
8
|
+
item_names: string[];
|
|
9
|
+
location: string;
|
|
10
|
+
station_name: string;
|
|
11
|
+
region_hint: string;
|
|
12
|
+
station: string;
|
|
13
|
+
nx: number;
|
|
14
|
+
ny: number;
|
|
15
|
+
lat: number;
|
|
16
|
+
lon: number;
|
|
17
|
+
base_date: string;
|
|
18
|
+
base_time: string;
|
|
19
|
+
market: "KOSPI" | "KOSDAQ" | "KONEX";
|
|
20
|
+
code: string;
|
|
21
|
+
bas_date: string;
|
|
22
|
+
corp_code: string;
|
|
23
|
+
bgn_de: string;
|
|
24
|
+
end_de: string;
|
|
25
|
+
bsns_year: string;
|
|
26
|
+
reprt_code: string;
|
|
27
|
+
fs_div: "OFS" | "CFS";
|
|
28
|
+
pblntf_ty: string;
|
|
29
|
+
lawd_cd: string;
|
|
30
|
+
asset_type: "apartment" | "officetel" | "villa" | "single-house" | "commercial";
|
|
31
|
+
deal_type: "trade" | "rent";
|
|
32
|
+
deal_ymd: string;
|
|
33
|
+
display: number;
|
|
34
|
+
start: number;
|
|
35
|
+
sort: string;
|
|
36
|
+
locale: "ko" | "en";
|
|
37
|
+
currency: "KRW" | "USD";
|
|
38
|
+
ship_to: string;
|
|
39
|
+
max_price: number;
|
|
40
|
+
law_id: string;
|
|
41
|
+
article: string;
|
|
42
|
+
radius_m: number;
|
|
43
|
+
radius_km: number;
|
|
44
|
+
providers: Array<"kakao" | "google" | "naver">;
|
|
45
|
+
intent: "auto" | "food" | "cafe" | "walk" | "dog_walk" | "errand" | "date" | "work";
|
|
46
|
+
limit: number;
|
|
47
|
+
page_count: number;
|
|
48
|
+
num_of_rows: number;
|
|
49
|
+
timeout_ms: number;
|
|
50
|
+
};
|
|
51
|
+
export type SmartverticalInput = {
|
|
52
|
+
domain: SmartverticalDomain;
|
|
53
|
+
} & {
|
|
54
|
+
[K in keyof SmartverticalInputOptionalFields]?: SmartverticalInputOptionalFields[K] | undefined;
|
|
55
|
+
};
|
|
56
|
+
export type SmartverticalOutput = {
|
|
57
|
+
source: "smartvertical";
|
|
58
|
+
domain: SmartverticalDomain;
|
|
59
|
+
result: unknown;
|
|
60
|
+
text: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function runSmartvertical(input: SmartverticalInput): Promise<SmartverticalOutput>;
|
|
63
|
+
export declare function renderSmartvertical(output: SmartverticalOutput): string;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { renderAliExpress, renderCoupang, renderDart, renderDrugSafety, renderFineDust, renderFoodSafety, renderGeeknews, renderLaw, renderNaverNews, renderNaverShopping, renderPlaceSearch, renderPublicRestroom, renderRealEstate, renderSpellCheck, renderStock, renderSubway, renderWeather, renderZipcode, runAliExpress, runCoupang, runDart, runDrugSafety, runFineDust, runFoodSafety, runGeeknews, runLaw, runNaverNews, runNaverShopping, runPlaceSearch, runPublicRestroom, runRealEstate, runSpellCheck, runStock, runSubway, runWeather, runZipcode, } from "./index.js";
|
|
2
|
+
export const SMARTVERTICAL_DOMAINS = [
|
|
3
|
+
"geeknews",
|
|
4
|
+
"subway",
|
|
5
|
+
"weather",
|
|
6
|
+
"fine_dust",
|
|
7
|
+
"stock",
|
|
8
|
+
"dart",
|
|
9
|
+
"real_estate",
|
|
10
|
+
"drug_safety",
|
|
11
|
+
"food_safety",
|
|
12
|
+
"news",
|
|
13
|
+
"aliexpress",
|
|
14
|
+
"shopping",
|
|
15
|
+
"coupang",
|
|
16
|
+
"spellcheck",
|
|
17
|
+
"zipcode",
|
|
18
|
+
"law",
|
|
19
|
+
"place",
|
|
20
|
+
"public_restroom",
|
|
21
|
+
];
|
|
22
|
+
function isErrorResult(result) {
|
|
23
|
+
return typeof result === "object" && result !== null && "ok" in result && result.ok === false;
|
|
24
|
+
}
|
|
25
|
+
function unwrapResult(result) {
|
|
26
|
+
if (isErrorResult(result))
|
|
27
|
+
throw new Error(result.message);
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
function queryOrEmpty(input) {
|
|
31
|
+
return input.query || input.location || input.station_name || "";
|
|
32
|
+
}
|
|
33
|
+
function normalizeGeeknewsAction(action) {
|
|
34
|
+
if (action === "search" || action === "detail" || action === "list")
|
|
35
|
+
return action;
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
function normalizeStockAction(action) {
|
|
39
|
+
if (action === "search" || action === "base-info" || action === "trade-info")
|
|
40
|
+
return action;
|
|
41
|
+
return "search";
|
|
42
|
+
}
|
|
43
|
+
function normalizeDartAction(action) {
|
|
44
|
+
if (action === "disclosures" || action === "company" || action === "financials")
|
|
45
|
+
return action;
|
|
46
|
+
return "disclosures";
|
|
47
|
+
}
|
|
48
|
+
function normalizeRealEstateAction(action) {
|
|
49
|
+
if (action === "region-code" || action === "transactions")
|
|
50
|
+
return action;
|
|
51
|
+
return "region-code";
|
|
52
|
+
}
|
|
53
|
+
function normalizeFoodSafetyAction(action) {
|
|
54
|
+
if (action === "recall" || action === "unfit" || action === "functional-ingredient")
|
|
55
|
+
return action;
|
|
56
|
+
return "recall";
|
|
57
|
+
}
|
|
58
|
+
function normalizeCoupangAction(action) {
|
|
59
|
+
if (action === "search" || action === "rocket" || action === "budget" || action === "goldbox")
|
|
60
|
+
return action;
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
function normalizeLawAction(action) {
|
|
64
|
+
if (action === "search" || action === "get-text" || action === "search-precedents")
|
|
65
|
+
return action;
|
|
66
|
+
return "search";
|
|
67
|
+
}
|
|
68
|
+
function normalizeSort(sort, allowed) {
|
|
69
|
+
if (sort !== undefined && allowed.includes(sort))
|
|
70
|
+
return sort;
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
export async function runSmartvertical(input) {
|
|
74
|
+
switch (input.domain) {
|
|
75
|
+
case "geeknews": {
|
|
76
|
+
const action = normalizeGeeknewsAction(input.action);
|
|
77
|
+
const result = unwrapResult(await runGeeknews({
|
|
78
|
+
...(action === undefined ? {} : { action }),
|
|
79
|
+
...(input.query === undefined ? {} : { query: input.query }),
|
|
80
|
+
...(input.id === undefined ? {} : { id: input.id }),
|
|
81
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
82
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
83
|
+
}));
|
|
84
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderGeeknews(result) };
|
|
85
|
+
}
|
|
86
|
+
case "subway": {
|
|
87
|
+
const result = unwrapResult(await runSubway({
|
|
88
|
+
stationName: input.station_name || input.station || input.query || input.location || "",
|
|
89
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
90
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
91
|
+
}));
|
|
92
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderSubway(result) };
|
|
93
|
+
}
|
|
94
|
+
case "weather": {
|
|
95
|
+
const result = unwrapResult(await runWeather({
|
|
96
|
+
...(input.nx === undefined ? {} : { nx: input.nx }),
|
|
97
|
+
...(input.ny === undefined ? {} : { ny: input.ny }),
|
|
98
|
+
...(input.lat === undefined ? {} : { lat: input.lat }),
|
|
99
|
+
...(input.lon === undefined ? {} : { lon: input.lon }),
|
|
100
|
+
...(input.base_date === undefined ? {} : { baseDate: input.base_date }),
|
|
101
|
+
...(input.base_time === undefined ? {} : { baseTime: input.base_time }),
|
|
102
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
103
|
+
}));
|
|
104
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderWeather(result) };
|
|
105
|
+
}
|
|
106
|
+
case "fine_dust": {
|
|
107
|
+
const result = unwrapResult(await runFineDust({
|
|
108
|
+
...(input.region_hint === undefined ? {} : { regionHint: input.region_hint }),
|
|
109
|
+
...(input.station_name === undefined ? {} : { stationName: input.station_name }),
|
|
110
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
111
|
+
}));
|
|
112
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderFineDust(result) };
|
|
113
|
+
}
|
|
114
|
+
case "stock": {
|
|
115
|
+
const result = unwrapResult(await runStock({
|
|
116
|
+
action: normalizeStockAction(input.action),
|
|
117
|
+
...(input.query === undefined ? {} : { q: input.query }),
|
|
118
|
+
...(input.market === undefined ? {} : { market: input.market }),
|
|
119
|
+
...(input.code === undefined ? {} : { code: input.code }),
|
|
120
|
+
...(input.bas_date === undefined ? {} : { basDate: input.bas_date }),
|
|
121
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
122
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
123
|
+
}));
|
|
124
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderStock(result) };
|
|
125
|
+
}
|
|
126
|
+
case "dart": {
|
|
127
|
+
const result = unwrapResult(await runDart({
|
|
128
|
+
action: normalizeDartAction(input.action),
|
|
129
|
+
...(input.corp_code === undefined ? {} : { corp_code: input.corp_code }),
|
|
130
|
+
...(input.bgn_de === undefined ? {} : { bgn_de: input.bgn_de }),
|
|
131
|
+
...(input.end_de === undefined ? {} : { end_de: input.end_de }),
|
|
132
|
+
...(input.bsns_year === undefined ? {} : { bsns_year: input.bsns_year }),
|
|
133
|
+
...(input.reprt_code === undefined ? {} : { reprt_code: input.reprt_code }),
|
|
134
|
+
...(input.fs_div === undefined ? {} : { fs_div: input.fs_div }),
|
|
135
|
+
...(input.pblntf_ty === undefined ? {} : { pblntf_ty: input.pblntf_ty }),
|
|
136
|
+
...(input.page_count === undefined ? {} : { page_count: input.page_count }),
|
|
137
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
138
|
+
}));
|
|
139
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderDart(result) };
|
|
140
|
+
}
|
|
141
|
+
case "real_estate": {
|
|
142
|
+
const result = unwrapResult(await runRealEstate({
|
|
143
|
+
action: normalizeRealEstateAction(input.action),
|
|
144
|
+
...(input.query === undefined ? {} : { q: input.query }),
|
|
145
|
+
...(input.lawd_cd === undefined ? {} : { lawd_cd: input.lawd_cd }),
|
|
146
|
+
...(input.asset_type === undefined ? {} : { asset_type: input.asset_type }),
|
|
147
|
+
...(input.deal_type === undefined ? {} : { deal_type: input.deal_type }),
|
|
148
|
+
...(input.deal_ymd === undefined ? {} : { deal_ymd: input.deal_ymd }),
|
|
149
|
+
...(input.num_of_rows === undefined ? {} : { num_of_rows: input.num_of_rows }),
|
|
150
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
151
|
+
}));
|
|
152
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderRealEstate(result) };
|
|
153
|
+
}
|
|
154
|
+
case "drug_safety": {
|
|
155
|
+
const itemNames = input.item_names || (input.query === undefined ? [] : [input.query]);
|
|
156
|
+
const result = unwrapResult(await runDrugSafety({
|
|
157
|
+
itemNames,
|
|
158
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
159
|
+
}));
|
|
160
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderDrugSafety(result) };
|
|
161
|
+
}
|
|
162
|
+
case "food_safety": {
|
|
163
|
+
const result = unwrapResult(await runFoodSafety({
|
|
164
|
+
action: normalizeFoodSafetyAction(input.action),
|
|
165
|
+
query: queryOrEmpty(input),
|
|
166
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
167
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
168
|
+
}));
|
|
169
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderFoodSafety(result) };
|
|
170
|
+
}
|
|
171
|
+
case "news": {
|
|
172
|
+
const sort = normalizeSort(input.sort, ["sim", "date"]);
|
|
173
|
+
const result = unwrapResult(await runNaverNews({
|
|
174
|
+
query: queryOrEmpty(input),
|
|
175
|
+
...(input.display === undefined ? {} : { display: input.display }),
|
|
176
|
+
...(input.start === undefined ? {} : { start: input.start }),
|
|
177
|
+
...(sort === undefined ? {} : { sort }),
|
|
178
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
179
|
+
}));
|
|
180
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderNaverNews(result) };
|
|
181
|
+
}
|
|
182
|
+
case "aliexpress": {
|
|
183
|
+
const result = unwrapResult(await runAliExpress({
|
|
184
|
+
query: queryOrEmpty(input),
|
|
185
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
186
|
+
...(input.locale === undefined ? {} : { locale: input.locale }),
|
|
187
|
+
...(input.currency === undefined ? {} : { currency: input.currency }),
|
|
188
|
+
...(input.ship_to === undefined ? {} : { shipTo: input.ship_to }),
|
|
189
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
190
|
+
}));
|
|
191
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderAliExpress(result) };
|
|
192
|
+
}
|
|
193
|
+
case "shopping": {
|
|
194
|
+
const sort = normalizeSort(input.sort, ["rel", "date", "price_asc", "price_dsc", "review"]);
|
|
195
|
+
const result = unwrapResult(await runNaverShopping({
|
|
196
|
+
query: queryOrEmpty(input),
|
|
197
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
198
|
+
...(sort === undefined ? {} : { sort }),
|
|
199
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
200
|
+
}));
|
|
201
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderNaverShopping(result) };
|
|
202
|
+
}
|
|
203
|
+
case "coupang": {
|
|
204
|
+
const action = normalizeCoupangAction(input.action);
|
|
205
|
+
const result = unwrapResult(await runCoupang({
|
|
206
|
+
...(action === undefined ? {} : { action }),
|
|
207
|
+
...(input.query === undefined ? {} : { query: input.query }),
|
|
208
|
+
...(input.max_price === undefined ? {} : { maxPrice: input.max_price }),
|
|
209
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
210
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
211
|
+
}));
|
|
212
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderCoupang(result) };
|
|
213
|
+
}
|
|
214
|
+
case "spellcheck": {
|
|
215
|
+
const result = unwrapResult(await runSpellCheck({
|
|
216
|
+
text: input.text || input.query || "",
|
|
217
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
218
|
+
}));
|
|
219
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderSpellCheck(result) };
|
|
220
|
+
}
|
|
221
|
+
case "zipcode": {
|
|
222
|
+
const result = unwrapResult(await runZipcode({
|
|
223
|
+
query: queryOrEmpty(input),
|
|
224
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
225
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
226
|
+
}));
|
|
227
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderZipcode(result) };
|
|
228
|
+
}
|
|
229
|
+
case "law": {
|
|
230
|
+
const result = unwrapResult(await runLaw({
|
|
231
|
+
action: normalizeLawAction(input.action),
|
|
232
|
+
...(input.query === undefined ? {} : { query: input.query }),
|
|
233
|
+
...(input.law_id === undefined ? {} : { law_id: input.law_id }),
|
|
234
|
+
...(input.article === undefined ? {} : { article: input.article }),
|
|
235
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
236
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
237
|
+
}));
|
|
238
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderLaw(result) };
|
|
239
|
+
}
|
|
240
|
+
case "place": {
|
|
241
|
+
const sort = normalizeSort(input.sort, ["blended", "relevance", "distance", "rating", "review_count"]);
|
|
242
|
+
const result = await runPlaceSearch({
|
|
243
|
+
...(input.query === undefined ? {} : { query: input.query }),
|
|
244
|
+
...(input.location === undefined ? {} : { location: input.location }),
|
|
245
|
+
...(input.lat === undefined ? {} : { lat: input.lat }),
|
|
246
|
+
...(input.lon === undefined ? {} : { lon: input.lon }),
|
|
247
|
+
...(input.radius_m === undefined ? {} : { radiusM: input.radius_m }),
|
|
248
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
249
|
+
...(input.intent === undefined ? {} : { intent: input.intent }),
|
|
250
|
+
...(sort === undefined ? {} : { sort }),
|
|
251
|
+
...(input.providers === undefined ? {} : { providers: input.providers }),
|
|
252
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
253
|
+
});
|
|
254
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderPlaceSearch(result) };
|
|
255
|
+
}
|
|
256
|
+
case "public_restroom": {
|
|
257
|
+
const result = await runPublicRestroom({
|
|
258
|
+
location: queryOrEmpty(input),
|
|
259
|
+
...(input.lat === undefined ? {} : { lat: input.lat }),
|
|
260
|
+
...(input.lon === undefined ? {} : { lon: input.lon }),
|
|
261
|
+
...(input.radius_km === undefined ? {} : { radiusKm: input.radius_km }),
|
|
262
|
+
...(input.limit === undefined ? {} : { limit: input.limit }),
|
|
263
|
+
...(input.timeout_ms === undefined ? {} : { timeoutMs: input.timeout_ms }),
|
|
264
|
+
});
|
|
265
|
+
return { source: "smartvertical", domain: input.domain, result, text: renderPublicRestroom(result) };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
export function renderSmartvertical(output) {
|
|
270
|
+
return output.text;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=smartvertical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smartvertical.js","sourceRoot":"","sources":["../../src/korea/smartvertical.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU;IACV,QAAQ;IACR,SAAS;IACT,WAAW;IACX,OAAO;IACP,MAAM;IACN,aAAa;IACb,aAAa;IACb,aAAa;IACb,MAAM;IACN,YAAY;IACZ,UAAU;IACV,SAAS;IACT,YAAY;IACZ,SAAS;IACT,KAAK;IACL,OAAO;IACP,iBAAiB;CACT,CAAA;AAkEV,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI,MAAM,IAAK,MAA2B,CAAC,EAAE,KAAK,KAAK,CAAA;AACrH,CAAC;AAED,SAAS,YAAY,CAAI,MAAuB;IAC9C,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB;IAC7C,OAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAA;AAClE,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA0B;IACzD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAA;IAClF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA0B;IACtD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,MAAM,CAAA;IAC3F,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA0B;IACrD,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,MAAM,CAAA;IAC9F,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA0B;IAC3D,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,cAAc;QAAE,OAAO,MAAM,CAAA;IACxE,OAAO,aAAa,CAAA;AACtB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA0B;IAC3D,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,uBAAuB;QAAE,OAAO,MAAM,CAAA;IAClG,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA0B;IACxD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IAC5G,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA0B;IACpD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,mBAAmB;QAAE,OAAO,MAAM,CAAA;IACjG,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,aAAa,CAAmB,IAAwB,EAAE,OAAqB;IACtF,IAAI,IAAI,KAAK,SAAS,IAAK,OAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAS,CAAA;IACzF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAyB;IAC9D,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC;gBAC5C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAChG,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,SAAS,CAAC;gBAC1C,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE;gBACvF,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAA;QAC9F,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,UAAU,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAA;QAC/F,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,WAAW,CAAC;gBAC5C,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC7E,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;gBAChF,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;QAChG,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,QAAQ,CAAC;gBACzC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAA;QAC7F,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,OAAO,CAAC;gBACxC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACzC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAA;QAC5F,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC;gBAC9C,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC/C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC3E,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9E,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;QAClG,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YACtF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC;gBAC9C,SAAS;gBACT,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;QAClG,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC;gBAC9C,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC/C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;QAClG,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,YAAY,CAAC;gBAC7C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAA;QACjG,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC;gBAC9C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;QAClG,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC,CAAA;YACpG,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,gBAAgB,CAAC;gBACjD,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAA;QACrG,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,UAAU,CAAC;gBAC3C,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3C,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAA;QAC/F,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC;gBAC9C,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;gBACrC,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAA;QAClG,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,UAAU,CAAC;gBAC3C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAA;QAC/F,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,MAAM,CAAC;gBACvC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;gBACxC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAA;QAC3F,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAU,CAAC,CAAA;YAC/G,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/D,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACxE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAA;YACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAA;QACnG,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC3E,CAAC,CAAA;YACF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAA;QACtG,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
|