9600235466
Four independent regional brands across IA/IN/IL (variety-identity sources,
each parsed into structured characteristics_groups so ratings embed):
- latham (264: 155 corn + 109 soy) — Latham Hi-Tech Seeds, Alexander IA.
WordPress REST enum (/wp-json/wp/v2/varieties) + /products/<slug>/ detail
HTML. Scale 1-9 LOWER=better (reversed, like NK/AgriPro).
- stine (217: 58 corn + 159 soy) — Stine Seed, Adel IA (largest US
independent). sitemap enum + /{crop}/traits/<slug>/<code>/ detail HTML.
Corn 1-9 (9=best); soy qualitative.
- first_choice (78: 52 corn + 22 soy + 4 wheat) — 1st Choice Seeds,
Rushville IN (employee-owned). Per-crop sitemap -> detail HTML. Scale
0-10 higher=better. ~40 older corn pages thin at source; wheat
identity-only.
- burrus (64: 38 corn + 26 soy) — Burrus Seed, Arenzville IL. Seedware
JSON API. Scale 1-10 (10=best). Brands Burrus/Power Plus/DONMARIO.
robots ai-train=no + named-bot blocks; operator opted in, scraper uses a
non-blacklisted UA + honors Crawl-delay 10.
All 623 validated through rag.chunk.chunks_from_variety (0 errors; 6
identity-only pages from source gaps). No chunk.py change needed (identity
sources auto-route to chunks_from_variety).
Docs:
- sources.json: 4 entries + Hoegemeyer added to _excluded_sources. The
Corteva ToU (shared across pioneer.com / hoegemeyer.com / therightseed.com
/ corteva.com + the Vylor spinoff) bans scrapers + competitive use, so the
whole Corteva family is one excluded ToU domain.
- docs_mcp/lessons.md: rating-scales updated with all 4 directions +
an explicit cross-vendor warning (Latham 1=best vs Stine/Burrus higher=best
— never compare raw numbers without _scale_direction).
- README + CLAUDE corpus inventory: now 2,268 variety + 6,787 trial records.
CI rebuilds the index from the committed corpus.
308 lines
19 KiB
JSON
308 lines
19 KiB
JSON
{
|
|
"_description": "seed-mcp source catalog. Each scraper module under scrape/sources/ corresponds to one entry. Run via `python -m scrape.runner --source <name>`. The MCP container bakes this file in so corpus_status / list_versions can reflect provenance without re-scraping.",
|
|
"_pioneer_excluded": "Pioneer (Corteva) is intentionally absent. Per their ToS: 'you shall not use any manual or automated software, devices or other processes (including but not limited to spiders, robots, scrapers, crawlers, avatars, data mining tools or the like) to scrape or download data from the Services'. The MCP returns a curated fallback lesson directing the user to pioneer.com / a local dealer.",
|
|
"sources": [
|
|
{
|
|
"name": "bayer_seeds",
|
|
"vendor": "Bayer",
|
|
"brands": [
|
|
"DEKALB",
|
|
"Asgrow",
|
|
"WestBred"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"wheat"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 475,
|
|
"base_url": "https://cropscience.bayer.us",
|
|
"scope_filter": "All listed varieties; no regional filter applied at scrape time (regional recommendations parsed into sidecar so the MCP can filter at search time).",
|
|
"tos_check_date": "2026-05-24",
|
|
"tos_note": "robots.txt explicitly whitelists RAG/LLM use cases. Same legal stance as crop-chem-docs scraper."
|
|
},
|
|
{
|
|
"name": "golden_harvest",
|
|
"vendor": "Syngenta",
|
|
"brands": [
|
|
"Golden Harvest"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 175,
|
|
"base_url": "https://www.goldenharvestseeds.com",
|
|
"scope_filter": "All sitemap-listed corn + soybean varieties.",
|
|
"tos_check_date": "2026-05-25",
|
|
"schema_notes": "Disease ratings published on 9-to-1 scale (9 = best). Normalize to 1-9 (9 = best) at chunk time to match Bayer/NK/AgriPro convention. Note original direction in chunk_0 preamble. Tech-sheet PDF URLs in the sitemap are stale (250331) \u2014 resolve live URL from product HTML, not sitemap entry."
|
|
},
|
|
{
|
|
"name": "nk",
|
|
"vendor": "Syngenta",
|
|
"brands": [
|
|
"NK"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 29,
|
|
"base_url": "https://www.syngenta-us.com",
|
|
"pdf_cdn": "https://assets.syngentaebiz.com/pdf/techsheets/",
|
|
"scope_filter": "All NK corn + soy varieties. No wheat (NK doesn't sell wheat in US).",
|
|
"tos_check_date": "2026-05-24",
|
|
"schema_notes": "Disease + agronomic ratings live in tech-sheet PDFs only \u2014 need pdfplumber. PDF URLs share format `<CODE>_YYMMDD.pdf` with Golden Harvest, so the same fetcher works for both."
|
|
},
|
|
{
|
|
"name": "agripro",
|
|
"vendor": "Syngenta",
|
|
"brands": [
|
|
"AgriPro"
|
|
],
|
|
"crops": [
|
|
"wheat",
|
|
"barley"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 24,
|
|
"base_url": "https://www.agriprowheat.com",
|
|
"scope_filter": "All wheat classes (HRW/HRS/HWS/SWW/SWS) + barley. NO SRW \u2014 Syngenta's SRW lives at GrowProGenetics.com under a separate brand.",
|
|
"tos_check_date": "2026-05-24",
|
|
"schema_notes": "Drupal Views form; server-rendered HTML. CoAXium trait flag is implicit in product family; Clearfield/CL2 trait IS in this catalog."
|
|
},
|
|
{
|
|
"name": "becks_pfr",
|
|
"vendor": "Beck's Hybrids",
|
|
"brands": [
|
|
"Beck's PFR"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"wheat"
|
|
],
|
|
"verdict": "yellow",
|
|
"expected_count": 2089,
|
|
"base_url": "https://www.beckshybrids.com",
|
|
"api_base": "https://mc8v24rf.api.sanity.io",
|
|
"scope_filter": "All Practical Farm Research publications since 2015. PFR is head-to-head agronomy trials \u2014 fungicide timing, planting-date studies, hybrid-by-population, etc.",
|
|
"tos_check_date": "2026-05-24",
|
|
"schema_notes": "Public Sanity GROQ API, no auth required. Records have title/year/crop/key-findings/full-text. Treat PFR docs as a research corpus, not variety records \u2014 the chunk_0 includes the study's tl;dr finding."
|
|
},
|
|
{
|
|
"name": "becks_products",
|
|
"vendor": "Beck's Hybrids",
|
|
"brands": [
|
|
"Beck's"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"wheat"
|
|
],
|
|
"verdict": "yellow",
|
|
"expected_count": 860,
|
|
"base_url": "https://www.beckshybrids.com",
|
|
"api_base": "https://mc8v24rf.api.sanity.io",
|
|
"scope_filter": "All Beck's product records \u2014 corn + soy + wheat. Identity + RM/MG only.",
|
|
"tos_check_date": "2026-05-24",
|
|
"schema_notes": "Sanity GROQ exposes identity (name, RM/MG, basic traits) but agronomic + disease ratings are SeedIQ-gated (requires browser cookie). Deferred until the SeedIQ XHR endpoint is captured from a logged-in browser session. Without ratings, products are reference-only; the MCP can confirm 'Beck's has hybrid X at RM 112 with Enlist trait' but not 'rate it against drought'."
|
|
},
|
|
{
|
|
"name": "gh_plot_reports",
|
|
"vendor": "Syngenta",
|
|
"brand_aggregator": "Golden Harvest publishes",
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"silage"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 4618,
|
|
"base_url": "https://www.goldenharvestseeds.com",
|
|
"scope_filter": "sitemap-listed plot reports 2024 and 2025 (4,618 reports). 2023 (3,619 reports) deferred to a future pass \u2014 most recent data is most relevant for current decisions.",
|
|
"tos_check_date": "2026-05-25",
|
|
"schema_notes": "Cross-vendor head-to-head yield trials at specific state/year/site. Each report lists products from multiple brands (NK, DEKALB, GH, etc.) with rank, yield, %MST, test weight, gross revenue. URL: /<crop>/plot-report/<state>/<year>/<id>. Same site/auth as golden_harvest variety scraper.",
|
|
"data_type": "trial"
|
|
},
|
|
{
|
|
"name": "agripro_trials",
|
|
"vendor": "Syngenta",
|
|
"brand_aggregator": "AgriPro publishes",
|
|
"crops": [
|
|
"wheat"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 38,
|
|
"base_url": "https://agriprowheat.com",
|
|
"scope_filter": "PDF trial summaries linked from /trials-data. Regional wheat performance (PNW, Western Plains, NE Colorado, etc.).",
|
|
"tos_check_date": "2026-05-25",
|
|
"schema_notes": "PDF tables of varieties tested per region per year. pdfplumber for table extraction.",
|
|
"data_type": "trial"
|
|
},
|
|
{
|
|
"name": "lg_plot_reports",
|
|
"vendor": "AgReliant Genetics",
|
|
"brand_aggregator": "LG Seeds publishes",
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"sorghum",
|
|
"silage"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 1310,
|
|
"base_url": "https://lgseeds.com",
|
|
"scope_filter": "Cross-vendor plot-report data exposed by lgseeds.com/performance/{crop} JSON XHR (GetPlots + GetPlotData). 2024+2025 baseline (older 2023 deferred to --include-2023). Top-5 hybrids per plot (LG + competitors), not full ranking — that's what LG publishes publicly.",
|
|
"tos_check_date": "2026-05-26",
|
|
"schema_notes": "JSON API behind www→apex redirect; POST GetPlots returns list with year+coords, GET GetPlotData returns top-5 + state/cooperator/dates. 301 redirect drops POST body so hit `lgseeds.com` (no www). Top-5 means each plot is partial coverage — multiple plots cover the same site/cooperator with different LG hybrid lineups.",
|
|
"data_type": "trial"
|
|
},
|
|
{
|
|
"name": "agrigold_plot_reports",
|
|
"vendor": "AgReliant Genetics",
|
|
"brand_aggregator": "AgriGold publishes",
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 1006,
|
|
"base_url": "https://www.agrigold.com",
|
|
"scope_filter": "Cross-vendor plot reports at agrigold.com/{crop}/performance/{crop}-yield-results, year-filtered via ?harvestYear=. Detail page exposes FULL ranking (not just top-5) plus rich plot management (tillage, prev crop, fungicide, soil type, irrigation). 2024+2025 baseline.",
|
|
"tos_check_date": "2026-05-26",
|
|
"schema_notes": "Server-rendered HTML; detail URL is /{crop_url}/performance/{slug}/{id}. Soybeans URL slug is singular: /soybeans/performance/soybean-yield-results/{id}. Columns: Rank, Brand, Product, Trait, Ck, H20 (moisture %), Test Wt., Yield, Adj Yield. Most metadata-rich of the three trial sources.",
|
|
"data_type": "trial"
|
|
},
|
|
{
|
|
"name": "proharvest",
|
|
"vendor": "ProHarvest Seeds",
|
|
"brands": [
|
|
"ProHarvest Seeds",
|
|
"Apex"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"wheat"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 119,
|
|
"base_url": "https://proharvestseeds.com",
|
|
"scope_filter": "Row-crop varieties via the WordPress REST API (/wp/v2/seed) filtered to seed-type corn-hybrid (70) / soybean (47) / wheat (2). Excludes alfalfa/forage/grass/cover-crop/sweet-corn/blend terms (out of scope for the row-crop advisor).",
|
|
"tos_check_date": "2026-06-04",
|
|
"tos_note": "robots.txt permissive — disallows only /?s=, /search/, /dealer-files/*, /dealer-section/* and AdsBot. The /wp-json/ REST API + /seed/ detail pages are open. No ToS automation clause found.",
|
|
"schema_notes": "REST list enumerates id/slug/title/link + seed-trait taxonomy, but acf+content are NOT registered to REST (empty), so agronomic data is parsed from each /seed/<slug>/ detail page (<h2> spec sections of <strong>label</strong><div>value</div> pairs). Parsed into characteristics_groups so ratings embed (unlike ebberts_seeds, which left them body-only). Ratings MIXED: Disease Tolerance 1-9 numeric (9=best, same direction as Bayer/NK — NO flip; NA=not rated); General/Agronomic qualitative (Excellent/Very Good/Good/Average); Soil Adaptability HR/R. RM in '<h1>Maturity: N Days</h1>'."
|
|
},
|
|
{
|
|
"name": "proharvest_plots",
|
|
"vendor": "ProHarvest Seeds",
|
|
"brand_aggregator": "ProHarvest Seeds publishes",
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 161,
|
|
"base_url": "https://proharvestseeds.com",
|
|
"scope_filter": "Per-cooperator harvest-report plots via the custom GET /wp-json/proharvest/v1/plots?y=<year> endpoint, 2024+2025 baseline (~162 plots). Older 2015-2023 deferred to --include-old. Each plot links a harvest-report PDF with a head-to-head results table.",
|
|
"tos_check_date": "2026-06-04",
|
|
"schema_notes": "Same sidecar shape as agrigold/lg/gh plot reports (results:[{rank,brand,product,traits,metrics}]) — routed through _render_gh_plot_chunk (proharvest_plots added to that source list in rag/chunk.py). API gives clean location metadata (city/state/county/year/product/lat-long/PDF); PDF gives the management block (planted/harvested/prev-crop/population/tillage/irrigation) + results. THREE PDF realities: ruled tables (extract_tables splits columns), unruled tables (text-line fallback anchored on trailing numerics; soy reports drop the Test Wt. column so rows carry 4 vs 5 numerics), and off-template third-party reports (e.g. a university land-lab with extra RM/harvest-weight columns) which a per-row + per-plot sanity gate redirects to verbatim raw_text so cross-vendor yields aren't corrupted or lost. Many plots are cross-vendor (Pioneer/DEKALB/Becks/Channel/Wyffels vs ProHarvest/Apex). Image-only PDFs (no text layer) are skipped + counted (no silent cap). metrics key 'Yield' is canonical so the chunker top-N picker finds it.",
|
|
"data_type": "trial"
|
|
},
|
|
{
|
|
"name": "latham",
|
|
"vendor": "Latham Hi-Tech Seeds",
|
|
"brands": [
|
|
"Latham Hi-Tech Seeds"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 264,
|
|
"base_url": "https://www.lathamseeds.com",
|
|
"scope_filter": "Independent family brand (Alexander, IA — Upper Midwest). Row-crop varieties (155 corn + 109 soy; no wheat). Alfalfa taxonomy term is count=0 in the catalog.",
|
|
"tos_check_date": "2026-06-04",
|
|
"tos_note": "robots.txt permissive (only /wp-admin/ disallowed, no Crawl-delay); no Terms-of-Use anti-scraping clause located. Public WordPress catalog. UA seed-mcp-scraper, ~1.5s/req.",
|
|
"schema_notes": "WordPress. Enumerate the variety list via /wp-json/wp/v2/varieties (paginated, open) or variety-sitemap1.xml; crop/trait/year come from the variety_crop / variety_trait / variety_year taxonomies (acf+content are NOT in REST). Agronomic specs are parsed from each /products/<slug>/ detail page (server-rendered <li><span>label</span><span>value</span>); parsed into characteristics_groups. SCALE: numeric ~1-9 where LOWER = BETTER (1 = best/most-tolerant/most-resistant) — REVERSED from Bayer; derived empirically (no on-page legend) by cross-referencing Product Overview prose vs values. Categorical values (SCN source 'PI 88788', Phytophthora 'Rps 1k', Anthracnose 'ASR') pass through verbatim; NA/blank = not rated. 2 corn pages are identity-only (source-side empty spec sections)."
|
|
},
|
|
{
|
|
"name": "stine",
|
|
"vendor": "Stine Seed Company",
|
|
"brands": [
|
|
"Stine"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 217,
|
|
"base_url": "https://www.stineseed.com",
|
|
"scope_filter": "Largest independent US seed company (Adel, IA). Row-crop varieties (58 corn + 159 soy; no wheat — Stine doesn't breed wheat).",
|
|
"tos_check_date": "2026-06-04",
|
|
"tos_note": "No robots.txt (404). /legal/ has only a standard copyright/no-reproduce clause — NO automation/scraping ban (same posture as other corpus vendors). UA seed-mcp-scraper, ~1.5s/req.",
|
|
"schema_notes": "Custom PHP site (NOT WordPress). Enumerate via sitemap.xml (filter to 4-segment /{crop}/traits/{slug}/{code}/ URLs → 58 corn + 159 soy); the /ajax/{corn,soybean}-comparison/filter_products.php endpoint is wired as a fallback (returns the full historical/discontinued set). Detail pages are clean server-rendered HTML (<section class=agronomic-details> → <ul class=agronomy-chart> → <li><strong>label</strong><span class=value>value</span>); parsed into characteristics_groups. SCALE: corn agronomic+disease 1-9 numeric, 9 = Excellent/best (HIGHER = better, same direction as Bayer; read from the on-page corn legend ul.tm-legend); soybeans are QUALITATIVE (Excellent/Very Good/Good; disease Resistant/Strong/Good/Susceptible) with SCN source + RPS gene passed through. Corn Maturity is an RM range (e.g. '79-81') → representative int + range kept as a characteristic; soy MG from the 2-3 digit code (/10, or /100 for leading-zero ultra-earlies)."
|
|
},
|
|
{
|
|
"name": "first_choice",
|
|
"vendor": "1st Choice Seeds",
|
|
"brands": [
|
|
"1st Choice Seeds"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans",
|
|
"wheat"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 78,
|
|
"base_url": "https://www.1stchoiceseeds.com",
|
|
"scope_filter": "Employee-owned independent (Rushville, IN — Eastern Corn Belt). 52 corn + 22 soy + 4 wheat. Fills the Indiana gap (Beck's already covered; Ebbert's covers OH/IN).",
|
|
"tos_check_date": "2026-06-04",
|
|
"tos_note": "robots.txt permissive (only /wp-admin/, allows admin-ajax.php, no Crawl-delay); NO Terms-of-Use page exists at all, no bot wall. UA seed-mcp-scraper, ~1.2s/req.",
|
|
"schema_notes": "WordPress, but the catalog custom post types are NOT exposed via WP REST (rest_no_route). Enumerate via the per-crop sitemaps (corn-hybrids-sitemap.xml / soybeans-sitemap.xml / wheat-sitemap.xml) → fetch each /corn-hybrids|/soybeans|/wheat/<slug>/ server-rendered HTML spec block → characteristics_groups. SCALE: 0-10, HIGHER = better (legend: 0-4 Below Average, 5 Average, 6 Good, 7 Very Good, 8 Excellent, 9-10 Superior). The numeric bar is d3-rendered (not in markup); 1st Choice also prints the qualitative word in HTML, which IS captured. CAVEATS: ~40 of 52 corn pages are THIN at the source (only Seedling Vigor in the ratings panel; still carry RM/GDU/management/populations); the 12 newer GT/PC hybrids have the full panel. 4 wheat pages are identity-only (private-label, no spec block)."
|
|
},
|
|
{
|
|
"name": "burrus",
|
|
"vendor": "Burrus Seed",
|
|
"brands": [
|
|
"Burrus",
|
|
"Power Plus",
|
|
"DONMARIO"
|
|
],
|
|
"crops": [
|
|
"corn",
|
|
"soybeans"
|
|
],
|
|
"verdict": "green",
|
|
"expected_count": 64,
|
|
"base_url": "https://burrusseed.com",
|
|
"scope_filter": "Independent family co (Arenzville, IL, since 1935; IL/IN/IA/MO/WI). 38 corn + 26 soy. Sells own Burrus brand + distributed Power Plus (corn) and DONMARIO (soy) lines; brand stored per-record.",
|
|
"tos_check_date": "2026-06-04",
|
|
"tos_note": "Data via the Seedware JSON API (burrus25.seedware.net). burrusseed.com robots.txt blocks ~33 NAMED AI/scraper bots and carries Content-signal: ai-train=no + Crawl-delay 10; User-agent:* IS allowed and the ToS has NO scraping clause. Operator chose to include this source despite the ai-train=no signal; scraper uses a non-blacklisted UA (seed-mcp-scraper) and honors Crawl-delay 10 (>=10s between requests).",
|
|
"schema_notes": "Seedware JSONP API: GET https://burrus25.seedware.net/app/_queries/crop_varieties.php?crop_pkey=101(corn)|102(soy)&callback=cb (requires a callback param + Referer https://burrusseed.com/; strip the JSONP wrapper). ~40 fields/record incl. brand, maturity (RM/MG), released, and many stat_* ratings → mapped into characteristics_groups: DISEASE RATINGS (gray leaf spot, tar spot, BSR, SDS, phytophthora), AGRONOMIC CHARACTERISTICS (drought, greensnap, stalk/root strength, standability, emergence, etc.), HERBICIDE TOLERANCE (glyphosate/glufosinate/2,4-D/dicamba/FOPs, Yes/No) + Bt insect-protection (Yes/No). SCALE: numeric agronomic+disease 1-10, 10 = best/most-tolerant (HIGHER = better; observed 4-10); NR/blank/0/'-' = not rated. Per-variety tech-sheet PDFs exist (getTechSheet/<pkey>) — not ingested this pass."
|
|
}
|
|
],
|
|
"_excluded_sources": [
|
|
{
|
|
"name": "pioneer",
|
|
"vendor": "Corteva",
|
|
"verdict": "red",
|
|
"reason": "Explicit ToS prohibits automated scraping. Dealer locator at /us/sales-representatives/my-local-team.html is login-gated; no public API for dealer contact info. The MCP returns a curated fallback lesson instead of erroring."
|
|
},
|
|
{
|
|
"name": "hoegemeyer",
|
|
"vendor": "Corteva",
|
|
"verdict": "red",
|
|
"reason": "Corteva consolidation brand (absorbing Seed Consultants, Dairyland, Nu-Tech, Terral for 2027; part of the upcoming 'Vylor' spinoff with Pioneer + Brevant). hoegemeyer.com's footer 'Terms of Use' links to corteva.com/terms-and-conditions.html (= /us/terms-of-use.html) — the SAME Corteva ToU that bans 'spiders, robots, scrapers, crawlers, data mining tools' (clause e) and building 'a similar or competitive service' (clause f). Same legal basis as the Pioneer exclusion. Even setting ToS aside, data is a single 15.8 MB Seed-Guide PDF behind an Imperva-walled AEM SPA. TREAT ALL *.corteva.com / corteva.us / pioneer.com / hoegemeyer.com / therightseed.com and the Vylor brands as ONE ToU domain: as the legacy regionals (Dairyland, Nu-Tech, Terral, Seed Consultants) migrate to Corteva's ToU, they fall under the same exclusion. Legitimate Corteva-data paths: an official Corteva data license (openinnovation@corteva.com) or university-extension trial data."
|
|
}
|
|
]
|
|
}
|