[{"data":1,"prerenderedAt":728},["ShallowReactive",2],{"doc-\u002Fde\u002Farchitecture":3,"docnav-de":134},{"id":4,"title":5,"body":6,"description":125,"extension":126,"meta":127,"nav":128,"navigation":129,"path":130,"seo":131,"stem":132,"__hash__":133},"docs\u002Fde\u002Farchitecture.md","Architektur",{"type":7,"value":8,"toc":116},"minimark",[9,14,18,41,45,79,83,102,106,109,113],[10,11,13],"h2",{"id":12},"winget-source-api","winget-Source-API",[15,16,17],"p",{},"kvellman setzt den winget-Source-REST-Vertrag exakt um, sodass die winget-CLI es wie jede andere\nQuelle behandelt:",[19,20,21,29,35],"ul",{},[22,23,24,28],"li",{},[25,26,27],"code",{},"GET \u002Fapi\u002F{siteToken}\u002Finformation"," — Quell-Metadaten und unterstützte Versionen.",[22,30,31,34],{},[25,32,33],{},"POST \u002Fapi\u002F{siteToken}\u002FmanifestSearch"," — Volltextsuche.",[22,36,37,40],{},[25,38,39],{},"GET \u002Fapi\u002F{siteToken}\u002FpackageManifests\u002F{id}"," — Manifest-Auslieferung mit serverseitiger Auflösung.",[10,42,44],{"id":43},"site-kontext","Site-Kontext",[15,46,47,48,52,53,56,57,60,61,64,65,68,69,68,72,68,75,78],{},"winget sendet keine eigenen Header, daher steckt der Standort-Kontext im URL-",[49,50,51],"strong",{},"Site-Token","\n(primär), ergänzt durch ",[49,54,55],{},"Subnetz"," und ",[49,58,59],{},"mTLS-Client-Zertifikat",". Der aufgelöste Kontext steuert\nserverseitige ",[25,62,63],{},"InstallerUrl","-Platzhalter (",[25,66,67],{},"$REPO_URL",", ",[25,70,71],{},"$SITE",[25,73,74],{},"$LOCATION",[25,76,77],{},"$LANG",") — so kann\ndasselbe Manifest auf eine standortlokale SMB\u002FDFS-Freigabe zeigen, ohne geforkt zu werden.",[10,80,82],{"id":81},"manifeste-overlays-ablage","Manifeste, Overlays & Ablage",[15,84,85,86,89,90,93,94,97,98,101],{},"Manifeste sind versioniertes YAML, beim Upload gegen die offiziellen winget-JSON-Schemas validiert.\nLokale Änderungen liegen als ",[49,87,88],{},"Overlay"," über dem unangetasteten Upstream, und ",[49,91,92],{},"Overlay-Vorlagen","\nje Paket machen wiederkehrende Anpassungen (z. B. eine interne Mirror-URL mit ",[25,95,96],{},"$VERSION","\u002F",[25,99,100],{},"$ARCH",")\nüber Versionen hinweg einfach. Installer lassen sich nach S3\u002FMinIO oder SMB spiegeln; Hashes werden\nbei der Auslieferung neu berechnet.",[10,103,105],{"id":104},"edge-mirror-nodes","Edge-\u002FMirror-Nodes",[15,107,108],{},"Edge-Nodes sind schlanke Cache-Proxys, die die winget-API + Downloads lokal ausliefern und lazy von\nder Origin holen. Sie halten einen Offline-Suchindex, enrollen via mTLS und werden zentral\neingeschränkt (welche Pakete, welche Installer-Architekturen\u002F-Scopes) und von der Origin überwacht.",[10,110,112],{"id":111},"stack","Stack",[15,114,115],{},"Nuxt 4 (Vue 3 + Nitro), TypeScript, PostgreSQL + Drizzle ORM, S3-kompatible Ablage, BullMQ\u002FRedis für\nHintergrundjobs. Ausschließlich On-Premise — voll selbst-hostbar, inklusive Air-Gap-Betrieb.",{"title":117,"searchDepth":118,"depth":118,"links":119},"",2,[120,121,122,123,124],{"id":12,"depth":118,"text":13},{"id":43,"depth":118,"text":44},{"id":81,"depth":118,"text":82},{"id":104,"depth":118,"text":105},{"id":111,"depth":118,"text":112},"Wie winget-Source-API, Site-Kontext, Spiegelung und Edge-Nodes zusammenspielen.","md",{},4,true,"\u002Fde\u002Farchitecture",{"title":5,"description":125},"de\u002Farchitecture","GmvMCx1uCHAIyNFsm-SDay1Ou_VPhUgf02yYI3oKgaY",[135,346,473,658],{"id":136,"title":137,"body":138,"description":340,"extension":126,"meta":341,"nav":174,"navigation":129,"path":342,"seo":343,"stem":344,"__hash__":345},"docs\u002Fde\u002Fgetting-started.md","Erste Schritte",{"type":7,"value":139,"toc":333},[140,144,151,155,162,245,252,256,266,270,277,299,302,306,329],[10,141,143],{"id":142},"was-ist-kvellman","Was ist kvellman?",[15,145,146,147,150],{},"kvellman ist ein selbst-gehostetes, ",[49,148,149],{},"winget-kompatibles"," Paket-Repository. Du trägst es als\nzusätzliche winget-Quelle ein — die winget-CLI fragt es genauso ab wie die offizielle\nMicrosoft-Quelle. Keine Client-Änderungen, keine eigenen Installer.",[10,152,154],{"id":153},"_1-origin-starten-docker","1. Origin starten (Docker)",[15,156,157,158,161],{},"Die Community-Edition läuft aus einem einzigen ",[25,159,160],{},"docker compose","-Stack (App + PostgreSQL). Mit einer\nDomain, die auf deinen Host zeigt, und offenen Ports 80\u002F443:",[163,164,168],"pre",{"className":165,"code":166,"language":167,"meta":117,"style":117},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone \u003Copen-core-repo> kvellman && cd kvellman\ncp .env.deploy.example .env.deploy   # DOMAIN, NUXT_SESSION_PASSWORD, POSTGRES_PASSWORD setzen\ndocker compose --env-file .env.deploy up -d\n","bash",[25,169,170,210,225],{"__ignoreMap":117},[171,172,175,179,183,187,190,194,197,200,203,207],"span",{"class":173,"line":174},"line",1,[171,176,178],{"class":177},"sBMFI","git",[171,180,182],{"class":181},"sfazB"," clone",[171,184,186],{"class":185},"sMK4o"," \u003C",[171,188,189],{"class":181},"open-core-rep",[171,191,193],{"class":192},"sTEyZ","o",[171,195,196],{"class":185},">",[171,198,199],{"class":181}," kvellman",[171,201,202],{"class":185}," &&",[171,204,206],{"class":205},"s2Zo4"," cd",[171,208,209],{"class":181}," kvellman\n",[171,211,212,215,218,221],{"class":173,"line":118},[171,213,214],{"class":177},"cp",[171,216,217],{"class":181}," .env.deploy.example",[171,219,220],{"class":181}," .env.deploy",[171,222,224],{"class":223},"sHwdD","   # DOMAIN, NUXT_SESSION_PASSWORD, POSTGRES_PASSWORD setzen\n",[171,226,228,231,234,237,239,242],{"class":173,"line":227},3,[171,229,230],{"class":177},"docker",[171,232,233],{"class":181}," compose",[171,235,236],{"class":181}," --env-file",[171,238,220],{"class":181},[171,240,241],{"class":181}," up",[171,243,244],{"class":181}," -d\n",[15,246,247,248,251],{},"Die DB-Migrationen laufen beim Start automatisch. Öffne ",[25,249,250],{},"https:\u002F\u002Fdeine-domain",", um den ersten\nAdmin-Account anzulegen.",[10,253,255],{"id":254},"_2-paket-bereitstellen","2. Paket bereitstellen",[15,257,258,259,261,262,265],{},"In der Web-UI: ein ",[49,260,51],{}," anlegen (Admin → Site-Tokens), dann ein ",[49,263,264],{},"Manifest hochladen","\noder aus dem winget-Katalog importieren. Optional den Installer lokal speichern, damit er von deiner\nOrigin ausgeliefert wird.",[10,267,269],{"id":268},"_3-quelle-am-client-hinzufügen","3. Quelle am Client hinzufügen",[15,271,272,273,276],{},"winget verlangt ",[49,274,275],{},"HTTPS"," für eine REST-Quelle. Auf einem Windows-Client (PowerShell):",[163,278,282],{"className":279,"code":280,"language":281,"meta":117,"style":117},"language-powershell shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","winget source add --name kvellman --type Microsoft.Rest --arg \"https:\u002F\u002Fdeine-domain\u002Fapi\u002F\u003Csite-token>\"\nwinget search --source kvellman \u003Cbegriff>\nwinget install --source kvellman \u003CPackage.Identifier>\n","powershell",[25,283,284,289,294],{"__ignoreMap":117},[171,285,286],{"class":173,"line":174},[171,287,288],{},"winget source add --name kvellman --type Microsoft.Rest --arg \"https:\u002F\u002Fdeine-domain\u002Fapi\u002F\u003Csite-token>\"\n",[171,290,291],{"class":173,"line":118},[171,292,293],{},"winget search --source kvellman \u003Cbegriff>\n",[171,295,296],{"class":173,"line":227},[171,297,298],{},"winget install --source kvellman \u003CPackage.Identifier>\n",[15,300,301],{},"Fertig — Clients installieren interne Software jetzt über deine eigene winget-Quelle.",[10,303,305],{"id":304},"nächste-schritte","Nächste Schritte",[19,307,308,316,322],{},[22,309,310,315],{},[311,312,314],"a",{"href":313},"\u002Fdocs\u002Fdeployment","Deployment"," — Docker, Reverse-Proxys (Caddy\u002FTraefik), Edge-Nodes, TLS.",[22,317,318,321],{},[311,319,5],{"href":320},"\u002Fdocs\u002Farchitecture"," — wie winget-API, Site-Tokens und Spiegelung zusammenspielen.",[22,323,324,328],{},[311,325,327],{"href":326},"\u002Fdocs\u002Feditions-licensing","Editionen & Lizenzierung"," — Community vs. Enterprise.",[330,331,332],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":117,"searchDepth":118,"depth":118,"links":334},[335,336,337,338,339],{"id":142,"depth":118,"text":143},{"id":153,"depth":118,"text":154},{"id":254,"depth":118,"text":255},{"id":268,"depth":118,"text":269},{"id":304,"depth":118,"text":305},"Eine kvellman-Origin starten und in Minuten als winget-Quelle hinzufügen.",{},"\u002Fde\u002Fgetting-started",{"title":137,"description":340},"de\u002Fgetting-started","rrhJf7cKGwzix7mvmIM-3b6lWdutwJBMUkWAKsyAAUk",{"id":347,"title":314,"body":348,"description":467,"extension":126,"meta":468,"nav":118,"navigation":129,"path":469,"seo":470,"stem":471,"__hash__":472},"docs\u002Fde\u002Fdeployment.md",{"type":7,"value":349,"toc":461},[350,354,365,369,372,393,423,430,434,441,445,448,458],[10,351,353],{"id":352},"winget-verlangt-https","winget verlangt HTTPS",[15,355,356,357,360,361,364],{},"Eine winget-REST-Quelle muss über ",[49,358,359],{},"HTTPS mit vertrauenswürdigem Zertifikat"," laufen (bei neueren\nwinget-Versionen auch für ",[25,362,363],{},"localhost","). Plane TLS für jeden Endpunkt, mit dem Clients sprechen.",[10,366,368],{"id":367},"origin-via-docker","Origin via Docker",[15,370,371],{},"Der Community-Stack ist App + PostgreSQL. Zwei Reverse-Proxy-Varianten sind dabei:",[19,373,374,384],{},[22,375,376,379,380,383],{},[49,377,378],{},"Caddy"," (",[25,381,382],{},"docker-compose.yml",") — automatisches Let's Encrypt für eine öffentliche Domain.",[22,385,386,379,389,392],{},[49,387,388],{},"Vorhandener Traefik",[25,390,391],{},"docker-compose.traefik.yml",") — ohne Caddy; die App hängt sich in\nTraefiks Netz und wird per Labels geroutet. Ideal, wenn Port 80\u002F443 schon von Traefik belegt ist.",[163,394,396],{"className":165,"code":395,"language":167,"meta":117,"style":117},"# hinter vorhandenem Traefik:\ndocker compose -f docker-compose.traefik.yml --env-file .env.deploy up -d\n",[25,397,398,403],{"__ignoreMap":117},[171,399,400],{"class":173,"line":174},[171,401,402],{"class":223},"# hinter vorhandenem Traefik:\n",[171,404,405,407,409,412,415,417,419,421],{"class":173,"line":118},[171,406,230],{"class":177},[171,408,233],{"class":181},[171,410,411],{"class":181}," -f",[171,413,414],{"class":181}," docker-compose.traefik.yml",[171,416,236],{"class":181},[171,418,220],{"class":181},[171,420,241],{"class":181},[171,422,244],{"class":181},[15,424,425,426,429],{},"Setze ",[25,427,428],{},"KVELLMAN_IMAGE"," auf ein vorgebautes Image (woanders gebaut und in eine Registry gepusht), um\nnicht auf einem kleinen Server zu bauen; Migrationen laufen beim Container-Start automatisch.",[10,431,433],{"id":432},"edge-mirror-nodes-enterprise","Edge-\u002FMirror-Nodes (Enterprise)",[15,435,436,437,440],{},"Ein Standort kann einen headless ",[49,438,439],{},"Edge-Node"," betreiben, der die winget-API und Installer-Downloads\nlokal ausliefert und bei Bedarf von der Origin cached. Clients tragen den Node als Quelle ein; die\nerste Installation zieht über den Node, der Rest aus dem LAN. Nodes enrollen sich bei der Origin\n(Einmal-Key → dauerhafte mTLS-Identität) und werden zentral gesteuert (Paket-Scope, Installer-Filter,\nPush\u002FVorab-Spiegeln, Health).",[10,442,444],{"id":443},"telemetrie-schalter","Telemetrie & Schalter",[15,446,447],{},"Repository-Nutzungstelemetrie (Suchen, Manifest-Abrufe, Downloads) ist standardmäßig aus und wird\nper Umgebungsvariable aktiviert. Gleiches Muster gilt für den Upstream-Katalog-Sync und einen\nGitHub-Token für Importe.",[449,450,451],"blockquote",{},[15,452,453,454,457],{},"Die vollständige Schritt-für-Schritt-Anleitung (Origin, Edge-Node unter WSL, TLS für LAN\u002Flocalhost,\nRegistry-Workflow) steht in ",[25,455,456],{},"DEPLOYMENT.md"," im Open-Core-Repository.",[330,459,460],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":117,"searchDepth":118,"depth":118,"links":462},[463,464,465,466],{"id":352,"depth":118,"text":353},{"id":367,"depth":118,"text":368},{"id":432,"depth":118,"text":433},{"id":443,"depth":118,"text":444},"Origin mit Docker hinter Caddy oder vorhandenem Traefik betreiben, plus Edge-Nodes.",{},"\u002Fde\u002Fdeployment",{"title":314,"description":467},"de\u002Fdeployment","-j5lkcIPmI1PgQ0FNATHb8ZLE9OJTWjDhlPpUOyAKxA",{"id":474,"title":327,"body":475,"description":652,"extension":126,"meta":653,"nav":227,"navigation":129,"path":654,"seo":655,"stem":656,"__hash__":657},"docs\u002Fde\u002Feditions-licensing.md",{"type":7,"value":476,"toc":647},[477,481,495,571,579,583,590,623,626,630,633],[10,478,480],{"id":479},"open-core","Open Core",[15,482,483,484,486,487,490,491,494],{},"kvellman ist ",[49,485,480],{},". Die Plattform ist quelloffen unter ",[49,488,489],{},"Apache-2.0","; erweiterte Funktionen\nkommen als ",[49,492,493],{},"kommerzielle Plugins"," (z. B. SSO, MFA), die nur mit gültiger Enterprise-Lizenz aktiv\nwerden.",[496,497,498,513],"table",{},[499,500,501],"thead",{},[502,503,504,507,510],"tr",{},[505,506],"th",{},[505,508,509],{},"Community",[505,511,512],{},"Enterprise",[514,515,516,527,538,549,560],"tbody",{},[502,517,518,522,524],{},[519,520,521],"td",{},"Lizenz",[519,523,489],{},[519,525,526],{},"Kommerzielles Abo",[502,528,529,532,535],{},[519,530,531],{},"Nutzer",[519,533,534],{},"Einzeln \u002F lokale Konten",[519,536,537],{},"Mehrbenutzer, RBAC",[502,539,540,543,546],{},[519,541,542],{},"Auth",[519,544,545],{},"Lokal",[519,547,548],{},"SSO (OIDC) + MFA (TOTP)",[502,550,551,554,557],{},[519,552,553],{},"Skalierung",[519,555,556],{},"Single-Node",[519,558,559],{},"Hochverfügbarkeit, Edge-Nodes",[502,561,562,565,568],{},[519,563,564],{},"Betrieb",[519,566,567],{},"Kern",[519,569,570],{},"Genehmigungs-Workflow + Audit, Air-Gap, Release-Scraper",[15,572,573,574,578],{},"Der vollständige Vergleich steht unter ",[311,575,577],{"href":576},"\u002Fpricing","Preise",".",[10,580,582],{"id":581},"wie-die-lizenzierung-funktioniert","Wie die Lizenzierung funktioniert",[15,584,585,586,589],{},"Enterprise-Funktionen werden über eine ",[49,587,588],{},"offline, signaturbasierte"," Lizenz freigeschaltet — kein\nAktivierungsserver, funktioniert also air-gapped:",[591,592,593,599,606,620],"ol",{},[22,594,595,596,578],{},"Eine Lizenz ist ein vom Hersteller ",[49,597,598],{},"Ed25519-signiertes Token",[22,600,601,602,605],{},"Das Produkt enthält nur den ",[49,603,604],{},"öffentlichen Schlüssel"," und prüft das Token lokal.",[22,607,608,609,612,613,68,616,619],{},"Das Token nennt Kunde und aktive ",[49,610,611],{},"Entitlements"," (z. B. ",[25,614,615],{},"sso",[25,617,618],{},"mfa",") sowie ein Ablaufdatum.",[22,621,622],{},"Ein Admin fügt das Token in der UI ein; passende Plugins werden sofort aktiv — ohne Neustart,\nohne Internet.",[15,624,625],{},"Da die Prüfung lokal erfolgt, kann selbst der vollständige Open-Source-Code keine gültige Lizenz\nfälschen, solange der private Schlüssel des Herstellers geheim bleibt.",[10,627,629],{"id":628},"entwickler-pakete","Entwickler-Pakete",[15,631,632],{},"Die gemeinsamen, öffentlichen Bausteine liegen auf npm unter Apache-2.0:",[19,634,635,641],{},[22,636,637,640],{},[25,638,639],{},"@kvellman\u002Fwinget-contract"," — der von Origin und Nodes geteilte winget-REST-\u002FTypen-Vertrag.",[22,642,643,646],{},[25,644,645],{},"@kvellman\u002Fplugin-sdk"," — Typen zum Bauen von Auth-\u002FEntitlement-Plugins.",{"title":117,"searchDepth":118,"depth":118,"links":648},[649,650,651],{"id":479,"depth":118,"text":480},{"id":581,"depth":118,"text":582},{"id":628,"depth":118,"text":629},"Open-Core-Modell — Community (Apache-2.0) vs. Enterprise, und wie die Lizenzierung funktioniert.",{},"\u002Fde\u002Feditions-licensing",{"title":327,"description":652},"de\u002Feditions-licensing","w0UfaQHHod93tPhOw66j1b5BDgIOEAQiOFMI9e-wC7I",{"id":4,"title":5,"body":659,"description":125,"extension":126,"meta":726,"nav":128,"navigation":129,"path":130,"seo":727,"stem":132,"__hash__":133},{"type":7,"value":660,"toc":719},[661,663,665,679,681,699,701,711,713,715,717],[10,662,13],{"id":12},[15,664,17],{},[19,666,667,671,675],{},[22,668,669,28],{},[25,670,27],{},[22,672,673,34],{},[25,674,33],{},[22,676,677,40],{},[25,678,39],{},[10,680,44],{"id":43},[15,682,47,683,52,685,56,687,60,689,64,691,68,693,68,695,68,697,78],{},[49,684,51],{},[49,686,55],{},[49,688,59],{},[25,690,63],{},[25,692,67],{},[25,694,71],{},[25,696,74],{},[25,698,77],{},[10,700,82],{"id":81},[15,702,85,703,89,705,93,707,97,709,101],{},[49,704,88],{},[49,706,92],{},[25,708,96],{},[25,710,100],{},[10,712,105],{"id":104},[15,714,108],{},[10,716,112],{"id":111},[15,718,115],{},{"title":117,"searchDepth":118,"depth":118,"links":720},[721,722,723,724,725],{"id":12,"depth":118,"text":13},{"id":43,"depth":118,"text":44},{"id":81,"depth":118,"text":82},{"id":104,"depth":118,"text":105},{"id":111,"depth":118,"text":112},{},{"title":5,"description":125},1782195177369]