[{"data":1,"prerenderedAt":1504},["ShallowReactive",2],{"navigation-docsEN":3,"docs-EN-/docs/platform-overview":483,"docsNav-EN-/docs":1023,"docsSecNav-EN-/docs/platform-overview":1162},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,21,39,51,72,86,112,126,153,164,179,203,391,467],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":14},"Documentation","docs/index","Introduction to documentation on EPCIS and OpenEPCIS tools","heroicons-outline:document-text",[15,16,17,18,19,20],"openepcis","epcis-2-0","epcis-documentation","epcis-standard","open-source","epcis-tools",{"title":22,"path":23,"stem":24,"children":25,"description":27,"icon":28,"tags":38},"Introduction","/docs/introduction","docs/01.introduction/index",[26],{"title":22,"path":23,"stem":24,"description":27,"icon":28,"tags":29},"Why EPCIS is necessary and how it can help organizations of all sizes and types.","heroicons-outline:globe-alt",[16,30,31,32,33,34,35,36,37],"epcis","epcis-1-2","gs1-epcis-standard","supply-chain","traceability","data-sharing","tracking","tracing",[16,30,31,32,33,34,35,36,37],{"title":40,"path":41,"stem":42,"children":43,"description":45,"icon":46,"tags":50},"EPCIS","/docs/epcis","docs/02.epcis/index",[44],{"title":40,"path":41,"stem":42,"description":45,"icon":46,"tags":47},"Discover the specifics of EPCIS, how it works, and what OpenEPCIS is.","i-custom-open-epcis",[16,30,31,32,48,49],"iso-iec-19987","iso-iec-19988",[16,30,31,32,48,49],{"title":52,"path":53,"stem":54,"children":55,"description":57,"icon":58,"tags":71},"Format Converter","/docs/format-converter","docs/03.format-converter/index",[56],{"title":52,"path":53,"stem":54,"description":57,"icon":58,"tags":59},"OpenEPCIS solution to convert EPCIS 2.0 and 1.2 document or single event from XML to JSON/JSON-LD and vice versa.","heroicons-outline:arrows-right-left",[16,60,61,62,63,64,65,20,66,67,68,69,70],"json","json-ld","xml","events","format-converter","convert","convert-epcis-events","format","converter","epcis-tool","tools",[16,60,61,62,63,64,65,20,66,67,68,69,70],{"title":73,"path":74,"stem":75,"children":76,"description":78,"icon":79,"tags":85},"Version Converter","/docs/version-converter","docs/04.version-converter/index",[77],{"title":73,"path":74,"stem":75,"description":78,"icon":79,"tags":80},"OpenEPCIS solution to convert EPCIS XML document from version 1.2 to 2.0 and vice versa.","heroicons:arrows-up-down",[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],"version-converter","convert-epcis-version","version","epcis-version",[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],{"title":87,"path":88,"stem":89,"children":90,"description":92,"icon":93,"tags":111},"Identifier Converter","/docs/identifier-converter","docs/05.identifier-converter/index",[91],{"title":87,"path":88,"stem":89,"description":92,"icon":93,"tags":94},"OpenEPCIS solution to convert EPCIS instance or class identifier from URN to digital link WebURI and vice versa.","i-heroicons-link",[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],"gs1-digital-link","urn-format","epc-uri","epc","weburi","gs1-standard","gs1","sscc","gtin","giai","grai","gdti","lgtin","sgtin","gln","gcp",[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],{"title":113,"path":114,"stem":115,"children":116,"description":118,"icon":119,"tags":125},"Event Hash Generator","/docs/event-hash-generator","docs/06.event-hash-generator/index",[117],{"title":113,"path":114,"stem":115,"description":118,"icon":119,"tags":120},"OpenEPCIS solution to generate unique event hash for EPCIS XML or JSON/JSON-LD document or event list.","heroicons-outline:finger-print",[16,121,60,61,62,63,20,122,123,124,69,70],"event-hash","event","hash","generator",[16,121,60,61,62,63,20,122,123,124,69,70],{"title":127,"path":128,"stem":129,"children":130,"description":132,"icon":133,"tags":152},"Test Data Generator","/docs/test-data-generator","docs/07.test-data-generator/index",[131,135],{"title":127,"path":128,"stem":129,"description":132,"icon":133,"tags":134},"OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases/supply chain requirements.","heroicons-outline:cog",[16,121,60,61,62,63,20,122,123,124,69,70],{"title":136,"path":137,"stem":138,"children":139,"description":132,"icon":141,"tags":151},"EPCIS Implementation Guidelines","/docs/test-data-generator/gs1-epcis-implementation-guidelines","docs/07.test-data-generator/01.gs1-epcis-implementation-guidelines/index",[140],{"title":136,"path":137,"stem":138,"description":132,"icon":141,"tags":142},"heroicons-outline:badge-check",[16,60,61,143,20,144,145,146,34,147,148,149,150],"testing","test-data-generator","design","design-template","process-automation","compliance","supply-chain-management","load-tests",[16,60,61,143,20,144,145,146,34,147,148,149,150],[16,121,60,61,62,63,20,122,123,124,69,70],{"title":154,"path":155,"stem":156,"children":157,"description":159,"icon":160,"tags":163},"Test Resource Management","/docs/test-resource-management","docs/08.test-resource-management/index",[158],{"title":154,"path":155,"stem":156,"description":159,"icon":160,"tags":161},"Collection of EPCIS 1.2/2.0 documents/events in XML/JSON/JSON-LD formats, intended for various testing purposes","heroicons-outline:archive-box",[16,60,61,143,20,162,34,147,148,149,150],"performance-tests",[16,60,61,143,20,162,34,147,148,149,150],{"title":165,"path":166,"stem":167,"children":168,"description":170,"icon":171,"tags":178},"Vocabulary Management","/docs/vocabulary-management","docs/09.vocabulary-management/index",[169],{"title":165,"path":166,"stem":167,"description":170,"icon":171,"tags":172},"Collection of standardized constants and strings for EPCIS event data.","heroicons-outline:book-open",[16,173,15,174,20,175,34,176,148,149,177],"constants","centralization","standardization","vocabulary","data-dictionary",[16,173,15,174,20,175,34,176,148,149,177],{"title":180,"path":181,"stem":182,"children":183,"description":185,"icon":186,"tags":202},"Dependency Management","/docs/dependency-management","docs/10.dependency-management/index",[184],{"title":180,"path":181,"stem":182,"description":185,"icon":186,"tags":187},"Centralized Maven Bill of Materials (BOM) for all the OpenEPCIS modules.","heroicons-outline:folder",[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],"maven-bom","dependency-management","java-dependencies","pom","software-dependencies","version-control","open-source-java","build-management","modular-software","dependency-resolution","java-libraries","maven-project","centralized-dependencies","dependency-consistency",[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],{"title":204,"path":205,"stem":206,"children":207,"description":209,"icon":210,"tags":390},"Digital Product Passport","/docs/digital-product-passport","docs/11.digital-product-passport/index",[208,217,229,261,295,322,336,345,353,363],{"title":204,"path":205,"stem":206,"description":209,"icon":210,"tags":211},"Introduction to Digital Product Passport and how EPCIS enables product traceability for DPP compliance.","heroicons-outline:identification",[212,213,214,30,215,34,216],"digital-product-passport","dpp","eu-regulation","sustainability","circular-economy",{"title":218,"path":219,"stem":220,"children":221,"description":223,"icon":224,"tags":228},"ESPR Framework","/docs/digital-product-passport/espr-framework","docs/11.digital-product-passport/00.espr-framework/index",[222],{"title":218,"path":219,"stem":220,"description":223,"icon":224,"tags":225},"Guide to the EU Ecodesign for Sustainable Products Regulation (ESPR) 2024/1781 and how OpenEPCIS supports Digital Product Passport requirements.","heroicons-outline:shield-check",[226,227,215,213,214],"espr","ecodesign",[226,227,215,213,214],{"title":230,"path":231,"stem":232,"children":233,"description":235,"icon":236,"tags":260},"Battery DPP","/docs/digital-product-passport/battery-dpp","docs/11.digital-product-passport/01.battery-dpp/index",[234,240,245,251],{"title":230,"path":231,"stem":232,"description":235,"icon":236,"tags":237},"GS1-native implementation of EU Battery Regulation 2023/1542 Digital Product Passport using EPCIS 2.0","heroicons:battery-100",[238,239,213,30,101,34,215],"battery","eu-battery-regulation",{"title":241,"path":242,"stem":243,"description":244,"icon":171},"Implementation Guide","/docs/digital-product-passport/battery-dpp/implementation-guide","docs/11.digital-product-passport/01.battery-dpp/01.implementation-guide","Step-by-step guide for implementing a GS1-native Battery Digital Product Passport with OpenEPCIS extensions",{"title":246,"path":247,"stem":248,"description":249,"icon":250},"Event Types","/docs/digital-product-passport/battery-dpp/event-types","docs/11.digital-product-passport/01.battery-dpp/02.event-types","Complete reference for all EPCIS event types and sensor measurements in the Battery DPP","heroicons-outline:collection",{"title":252,"path":253,"stem":254,"description":255,"icon":13,"tags":256},"Complete Examples","/docs/digital-product-passport/battery-dpp/complete-examples","docs/11.digital-product-passport/01.battery-dpp/05.complete-examples","Reference Battery Digital Product Passport examples mapped to EU Battery Regulation 2023/1542 Annex XIII",[238,257,258,61,259],"examples","annex-xiii","carbon-footprint",[238,239,213,30,101,34,215],{"title":262,"path":263,"stem":264,"children":265,"description":267,"icon":268,"tags":294},"EUDR","/docs/digital-product-passport/eudr","docs/11.digital-product-passport/02.eudr/index",[266,273,278,282,287],{"title":262,"path":263,"stem":264,"description":267,"icon":268,"tags":269},"GS1-native implementation of EU Deforestation Regulation 2023/1115 compliance using EPCIS 2.0","heroicons-outline:globe-europe-africa",[270,271,272,213,30,101,34,215],"eudr","deforestation","timber",{"title":241,"path":274,"stem":275,"description":276,"icon":277},"/docs/digital-product-passport/eudr/implementation-guide","docs/11.digital-product-passport/02.eudr/01.implementation-guide","Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards",null,{"title":246,"path":279,"stem":280,"description":281,"icon":277},"/docs/digital-product-passport/eudr/event-types","docs/11.digital-product-passport/02.eudr/02.event-types","EPCIS event types for EU Deforestation Regulation compliance",{"title":283,"path":284,"stem":285,"description":286,"icon":277},"URL Patterns","/docs/digital-product-passport/eudr/url-patterns","docs/11.digital-product-passport/02.eudr/03.url-patterns","GS1 Digital Link URL patterns for EUDR implementations",{"title":252,"path":288,"stem":289,"description":290,"icon":13,"tags":291},"/docs/digital-product-passport/eudr/complete-examples","docs/11.digital-product-passport/02.eudr/04.complete-examples","Reference EUDR examples — timber product passport, derived product, regulatory notification, harvesting / origin-declaration / processing / supply-chain-transfer / exemption events",[270,257,272,292,293],"due-diligence","geolocation",[270,271,272,213,30,101,34,215],{"title":296,"path":297,"stem":298,"children":299,"description":301,"icon":302,"tags":321},"Textile DPP","/docs/digital-product-passport/textile","docs/11.digital-product-passport/03.textile/index",[300,308,315],{"title":296,"path":297,"stem":298,"description":301,"icon":302,"tags":303},"Digital Product Passport vocabulary for textiles and apparel under the EU Sustainable Textiles Strategy and ESPR 2024/1781.","heroicons-outline:sparkles",[304,305,306,213,215,307],"textile","apparel","footwear","fibre-composition",{"title":241,"path":309,"stem":310,"description":311,"icon":312,"tags":313},"/docs/digital-product-passport/textile/implementation-guide","docs/11.digital-product-passport/03.textile/01.implementation-guide","How to assemble a Textile Digital Product Passport against the published openepcis-dpp-ready textile vocabulary","heroicons-outline:scissors",[304,305,306,314],"implementation",{"title":252,"path":316,"stem":317,"description":318,"icon":13,"tags":319},"/docs/digital-product-passport/textile/complete-examples","docs/11.digital-product-passport/03.textile/02.complete-examples","Reference Textile Digital Product Passport documents covering apparel and footwear",[304,257,305,306,320,61],"fiber-composition",[304,305,306,213,215,307],{"title":323,"path":324,"stem":325,"children":326,"description":328,"icon":58,"tags":335},"Interoperability","/docs/digital-product-passport/interoperability","docs/11.digital-product-passport/04.interoperability/index",[327],{"title":323,"path":324,"stem":325,"description":328,"icon":58,"tags":329},"Guide to OpenEPCIS DPP interoperability with GS1, UNTP, CIRPASS2, and ESPR standards.",[330,331,101,332,226,333,334],"interoperability","untp","cirpass2","standards","alignment",[330,331,101,332,226,333,334],{"title":337,"path":338,"stem":339,"description":340,"icon":28,"tags":341},"DPP Resolution Flow","/docs/digital-product-passport/dpp-resolution-flow","docs/11.digital-product-passport/05.dpp-resolution-flow","How OpenEPCIS combined GS1 Digital Link, the IETF linkset format and content negotiation into one DPP resolution flow",[342,95,343,344],"walkthrough","linkset","content-negotiation",{"title":346,"path":347,"stem":348,"description":349,"icon":350,"tags":351},"Resolver Setup","/docs/digital-product-passport/resolver-setup","docs/11.digital-product-passport/06.resolver-setup","How to expose your DPP behind a GS1 Digital Link resolver","heroicons-outline:server",[352,95,343],"resolver",{"title":354,"path":355,"stem":356,"description":357,"icon":358,"tags":359},"Multi-Component Example","/docs/digital-product-passport/multi-component-example","docs/11.digital-product-passport/07.multi-component-example","How a composite product references separately-passported components via standard GS1 Digital Link and EPCIS aggregation","heroicons-outline:puzzle-piece",[360,361,362,332],"example","components","aggregation",{"title":364,"path":365,"stem":366,"children":367,"description":369,"icon":370,"tags":389},"Electronics DPP","/docs/digital-product-passport/electronics","docs/11.digital-product-passport/08.electronics/index",[368,377,382],{"title":364,"path":365,"stem":366,"description":369,"icon":370,"tags":371},"Digital Product Passport vocabulary for electronic devices under ESPR, the French Repairability Index, EU Right to Repair and WEEE.","heroicons-outline:device-phone-mobile",[372,373,374,375,376],"electronics","repairability","weee","energy-label","right-to-repair",{"title":241,"path":378,"stem":379,"description":380,"icon":171,"tags":381},"/docs/digital-product-passport/electronics/implementation-guide","docs/11.digital-product-passport/08.electronics/01.implementation-guide","How to assemble an Electronics Digital Product Passport against the published openepcis-dpp-ready electronics vocabulary",[372,314,373,374,375],{"title":252,"path":383,"stem":384,"description":385,"icon":13,"tags":386},"/docs/digital-product-passport/electronics/complete-examples","docs/11.digital-product-passport/08.electronics/02.complete-examples","Reference Electronics Digital Product Passport documents covering smartphone, laptop, display and server",[372,257,387,388,61],"smartphone","laptop",[372,373,374,375,376],[212,213,214,30,215,34,216],{"title":392,"path":393,"stem":394,"children":395,"description":397,"icon":398},"OpenEPCIS Overview","/docs/platform-overview","docs/14.platform-overview/index",[396,399,405,411,417],{"title":392,"path":393,"stem":394,"description":397,"icon":398},"A GS1-conformant supply-chain data platform — Resolver, Masterdata, EPCIS Events — in open source and business editions.","lucide:layout-dashboard",{"title":400,"path":401,"stem":402,"description":403,"icon":404},"Architecture","/docs/platform-overview/architecture","docs/14.platform-overview/01.architecture","How OpenEPCIS handles identity, isolation, events, and GS1 conformance — the four things that distinguish the platform.","lucide:cpu",{"title":406,"path":407,"stem":408,"description":409,"icon":410},"Feature Matrix","/docs/platform-overview/feature-matrix","docs/14.platform-overview/02.feature-matrix","OpenEPCIS capabilities by edition, aligned to the relevant GS1 standards.","lucide:check-square",{"title":412,"path":413,"stem":414,"description":415,"icon":416},"Roadmap","/docs/platform-overview/roadmap","docs/14.platform-overview/03.roadmap","Three horizons — Now, Next, Later. Skeleton awaiting user-confirmed dates.","lucide:map",{"title":418,"path":419,"stem":420,"children":421,"description":423,"icon":424},"Modules","/docs/platform-overview/modules","docs/14.platform-overview/modules/index",[422,425,431,437,443,449,455,461],{"title":418,"path":419,"stem":420,"description":423,"icon":424},"Seven module families that organise the OpenEPCIS platform — Resolver, Masterdata, EPCIS Events, Formats & Validation, Integration, Testdata, Platform.","lucide:layers",{"title":426,"path":427,"stem":428,"description":429,"icon":430},"GS1 Conformant Resolver","/docs/platform-overview/modules/resolver","docs/14.platform-overview/modules/01.resolver","Resolves GS1 Digital Link URIs to product information, masterdata, EPCIS endpoints, and twelve more standard link types.","lucide:link-2",{"title":432,"path":433,"stem":434,"description":435,"icon":436},"GS1 Web Vocabulary & Masterdata","/docs/platform-overview/modules/masterdata","docs/14.platform-overview/modules/02.masterdata","Web Vocabulary models, masterdata-to-resolver REST pattern, GS1 Germany Activate Plus / GEPIR sync, and the event-driven masterdata bus.","lucide:database",{"title":438,"path":439,"stem":440,"description":441,"icon":442},"EPCIS Events — Capture, Query, Subscriptions","/docs/platform-overview/modules/epcis-events","docs/14.platform-overview/modules/03.epcis-events","EPCIS 2.0 REST and SOAP, live streaming subscriptions, resilient pagination, OpenSearch event store.","lucide:activity",{"title":444,"path":445,"stem":446,"description":447,"icon":448},"Formats, Validation & Identity","/docs/platform-overview/modules/formats","docs/14.platform-overview/modules/04.formats","XML ↔ JSON-LD conversion, multi-layer validation, identifier translation, idempotent event hashing.","lucide:file-check",{"title":450,"path":451,"stem":452,"description":453,"icon":454},"Integration & Gateways","/docs/platform-overview/modules/integration","docs/14.platform-overview/modules/05.integration","Cloud storage, file service, natural-language AI assistant.","lucide:plug",{"title":456,"path":457,"stem":458,"description":459,"icon":460},"Testdata & Developer Tooling","/docs/platform-overview/modules/testdata","docs/14.platform-overview/modules/06.testdata","Synthetic EPCIS test event generation, reference event collections, conformance test suite, SDKs.","lucide:wrench",{"title":462,"path":463,"stem":464,"description":465,"icon":466},"Platform, Build & Observability","/docs/platform-overview/modules/platform","docs/14.platform-overview/modules/07.platform","How OpenEPCIS is built, deployed, and observed.","lucide:server",{"title":468,"path":469,"stem":470,"children":471,"description":473,"icon":28,"tags":482},"Vision","/docs/vision","docs/15.vision/index",[472],{"title":468,"path":469,"stem":470,"description":473,"icon":28,"tags":474},"How UNTP, DIDs, Verifiable Credentials, and EPCIS work together to create unified product identity infrastructure for the connected supply chain.",[475,476,477,478,331,479,480,481],"vision","digital-twin","did","verifiable-credentials","rfid","industry-4-0","web-3-0",[475,476,477,478,331,479,480,481],{"id":484,"title":392,"body":485,"description":397,"extension":1012,"icon":398,"lastUpdated":1013,"meta":1014,"navigation":918,"path":393,"seo":1020,"sitemap":1021,"stem":394,"__hash__":1022},"docsEN/docs/14.platform-overview/index.md",{"type":486,"value":487,"toc":996},"minimark",[488,492,509,512,574,579,582,609,613,618,628,632,642,646,653,657,699,703,733,736,740,744,803,806,810,815,830,841,845,932,948,952,992],[489,490,491],"h1",{"id":15},"OpenEPCIS",[493,494,495,496,500,501,504,505,508],"p",{},"OpenEPCIS is a GS1-conformant supply-chain data platform. It exposes a ",[497,498,499],"strong",{},"GS1 Digital Link Resolver",", hosts ",[497,502,503],{},"GS1 Web Vocabulary masterdata",", and lets that masterdata be driven by ",[497,506,507],{},"EPCIS Events",".",[493,510,511],{},"Three pillars, one platform:",[513,514,515,528],"table",{},[516,517,518],"thead",{},[519,520,521,525],"tr",{},[522,523,524],"th",{},"Pillar",[522,526,527],{},"What it does",[529,530,531,542,564],"tbody",{},[519,532,533,539],{},[534,535,536],"td",{},[497,537,538],{},"Resolver",[534,540,541],{},"Resolves any GS1 Digital Link URI (GTIN, GLN, SSCC, …) to product information, masterdata, EPCIS endpoints and a dozen more GS1-standard link types. The deployment is self-describing too — a downstream registry can find it and read what it offers without being hand-configured.",[519,543,544,549],{},[534,545,546],{},[497,547,548],{},"Masterdata",[534,550,551,552,556,557,556,560,563],{},"Stores GS1 Web Vocabulary descriptions of products, organisations and places. Masterdata reaches the platform via REST (",[553,554,555],"code",{},"POST /organizations",", ",[553,558,559],{},"/products",[553,561,562],{},"/places","), never embedded inside EPCIS documents.",[519,565,566,571],{},[534,567,568],{},[497,569,570],{},"Events",[534,572,573],{},"Captures, queries and streams EPCIS 2.0 events. Identifiers are stored in GS1 Digital Link canonical form. Subscriptions match events as they are indexed — no polling.",[575,576,578],"h2",{"id":577},"editions","Editions",[493,580,581],{},"OpenEPCIS ships in two layers:",[583,584,585,600],"ul",{},[586,587,588,591,592,599],"li",{},[497,589,590],{},"Open source"," (",[593,594,598],"a",{"href":595,"rel":596},"https://github.com/openepcis",[597],"nofollow","github.com/openepcis",") — the standards-conformant building blocks. Maven BOM, EPCIS models, format converters, validators, identifier translator (EPC URN ↔ Digital Link), barcode renderer, event hash generator, test data generator. Anyone can build on these. (The GS1 Conformant Resolver itself is business-only — there is no open-source resolver today.)",[586,601,602,605,606,508],{},[497,603,604],{},"Business edition"," (GitLab) — the multi-tenant runtime that productionises the OSS stack: OpenSearch-backed event store with native Document-Level Security, Keycloak-based identity (OIDC + API-key), GS1 Germany Activate Plus / GEPIR integration, Azure/AWS storage backends, AI assistant, Terraform/Ansible deployment. Thirteen Quarkus container images assembled from ",[553,607,608],{},"openepcis-build/",[575,610,612],{"id":611},"what-sets-openepcis-apart","What sets OpenEPCIS apart",[614,615,617],"h3",{"id":616},"_1-tenant-isolation-by-design-not-by-application-layer-filters","1. Tenant isolation by design — not by application-layer filters",[493,619,620,621,624,625,508],{},"Most multi-tenant systems rewrite every database query to inject a tenant filter. OpenEPCIS doesn't. The application forwards the authenticated user's identity into the OpenSearch transport layer, and the ",[497,622,623],{},"OpenSearch Security plugin's native Document-Level Security (DLS)"," enforces isolation at the data layer. If the application code is wrong, the data layer is still right. See ",[593,626,627],{"href":401},"Architecture → DLS",[614,629,631],{"id":630},"_2-live-subscriptions-without-polling","2. Live subscriptions without polling",[493,633,634,635,638,639,508],{},"EPCIS streaming subscriptions are ",[497,636,637],{},"matched the moment an event is indexed",", in the same engine that holds the events. Matches are delivered via webhook or WebSocket immediately. Scheduled (cron-based) subscriptions sit alongside streaming for clients that want polling semantics — nightly digests, periodic compliance pulls — and clients opt into them explicitly. See ",[593,640,641],{"href":439},"Modules → EPCIS Events",[614,643,645],{"id":644},"_3-a-real-participant-in-the-gs1-trust-graph","3. A real participant in the GS1 trust graph",[493,647,648,649,652],{},"Full \"Verified by GS1\" integration with GS1 Germany services — and it goes both ways. Inbound, the platform verifies GTIN / GLN identifiers against GS1 DE's registry (Activate Plus / GEPIR) and enriches the local record with authoritative attributes. ",[497,650,651],{},"Outbound, the brand owner's masterdata held in the deployment is published back through GS1 DE and propagates up to the GS1 Global Office resolver — the customer's deployment is the source-of-truth, and the global GS1 network reflects what's in it."," A real node in the GS1 trust graph.",[614,654,656],{"id":655},"_4-gs1-conformance-with-a-self-describing-deployment","4. GS1 conformance, with a self-describing deployment",[493,658,659,660,663,664,667,668,556,671,556,674,556,677,556,680,556,683,556,686,556,689,556,692,695,696,508],{},"A deployment is ",[497,661,662],{},"discoverable by other systems out of the box"," — it publishes the self-describing document the GS1 Conformant Resolver standard expects, so the GS1 Global Office resolver and partner registries can find and validate it automatically rather than being hand-configured (the URL is ",[553,665,666],{},"/.well-known/gs1resolver","). A dozen GS1-standard link types — ",[553,669,670],{},"gs1:pip",[553,672,673],{},"gs1:productSustainabilityInfo",[553,675,676],{},"gs1:recallStatus",[553,678,679],{},"gs1:certificationInfo",[553,681,682],{},"gs1:productImage",[553,684,685],{},"gs1:safetyInfo",[553,687,688],{},"gs1:instructions",[553,690,691],{},"gs1:serviceInfo",[553,693,694],{},"gs1:nutritionalInfo"," and more — are auto-derived from the masterdata's referenced files when a product, organisation or place is saved. Identifiers at rest are GS1 Digital Link, not EPC URN. See ",[593,697,698],{"href":427},"Modules → Resolver",[614,700,702],{"id":701},"_5-wallet-agnostic-verifiable-credentials","5. Wallet-agnostic Verifiable Credentials",[493,704,705,706,709,710,713,714,717,718,721,722,556,725,728,729,732],{},"Keycloak sits at the core of every business deployment, and Keycloak's native ",[497,707,708],{},"OID4VCI"," (OpenID for Verifiable Credential Issuance), ",[497,711,712],{},"OID4VP"," (Presentation) and ",[497,715,716],{},"SIOPv2"," support turns each tenant realm into a Verifiable Credential Issuer in its own right. Credentials come out as ",[553,719,720],{},"sd-jwt-vc"," (selective disclosure first), ",[553,723,724],{},"jwt_vc_json",[553,726,727],{},"ldp_vc"," or ISO mDoc — the holder picks the format their wallet understands. Because the surface is open OpenID Foundation protocol rather than a proprietary wallet stack, the same issuer interoperates with every OID4VC-compliant wallet already in production or in pilot — EU Digital Identity Wallet, Catena-X Managed Identity Wallet, enterprise wallets, mobile holder apps, sector-specific wallets. We didn't pick a wallet camp; we picked the protocol. The Keycloak / OID4VC layer ships today; named EPCIS / DPP credential schemas and the capture-to-issuance pipeline land next on the ",[593,730,731],{"href":413},"roadmap",", with UNTP Digital Conformity Credential compatibility as a first-class target.",[734,735],"hr",{},[575,737,739],{"id":738},"developer-summary","Developer summary",[614,741,743],{"id":742},"how-the-modules-layer","How the modules layer",[745,746,751],"pre",{"className":747,"code":748,"language":749,"meta":750,"style":750},"language-mermaid shiki shiki-themes material-theme-lighter github-light github-dark monokai","flowchart TD\n    bom[\"\u003Cb>openepcis-bom\u003C/b>\u003Cbr/>\u003Ci>Maven version anchor\u003C/i>\"]\n    models[\"\u003Cb>shared core libs\u003C/b>\u003Cbr/>models\u003Cbr/>epcis-constants\u003Cbr/>commons\"]\n    fmt[\"\u003Cb>format &amp; validation\u003C/b>\u003Cbr/>document-converter\u003Cbr/>validation-service\u003Cbr/>event-hash-generator\u003Cbr/>dl-translator\"]\n    biz[\"\u003Cb>business service libs\u003C/b>\u003Cbr/>capture · query\u003Cbr/>subscription · repository\u003Cbr/>storage · OpenTelemetry\"]\n    dist[\"\u003Cb>quarkus-dist profiles\u003C/b>\u003Cbr/>13 Quarkus assemblies\u003Cbr/>in openepcis-build/\"]\n    img[\"\u003Cb>container images\u003C/b>\u003Cbr/>registry.company-group.com\"]\n    bom --> models --> fmt --> biz --> dist --> img\n","mermaid","",[553,752,753,761,767,773,779,785,791,797],{"__ignoreMap":750},[754,755,758],"span",{"class":756,"line":757},"line",1,[754,759,760],{},"flowchart TD\n",[754,762,764],{"class":756,"line":763},2,[754,765,766],{},"    bom[\"\u003Cb>openepcis-bom\u003C/b>\u003Cbr/>\u003Ci>Maven version anchor\u003C/i>\"]\n",[754,768,770],{"class":756,"line":769},3,[754,771,772],{},"    models[\"\u003Cb>shared core libs\u003C/b>\u003Cbr/>models\u003Cbr/>epcis-constants\u003Cbr/>commons\"]\n",[754,774,776],{"class":756,"line":775},4,[754,777,778],{},"    fmt[\"\u003Cb>format &amp; validation\u003C/b>\u003Cbr/>document-converter\u003Cbr/>validation-service\u003Cbr/>event-hash-generator\u003Cbr/>dl-translator\"]\n",[754,780,782],{"class":756,"line":781},5,[754,783,784],{},"    biz[\"\u003Cb>business service libs\u003C/b>\u003Cbr/>capture · query\u003Cbr/>subscription · repository\u003Cbr/>storage · OpenTelemetry\"]\n",[754,786,788],{"class":756,"line":787},6,[754,789,790],{},"    dist[\"\u003Cb>quarkus-dist profiles\u003C/b>\u003Cbr/>13 Quarkus assemblies\u003Cbr/>in openepcis-build/\"]\n",[754,792,794],{"class":756,"line":793},7,[754,795,796],{},"    img[\"\u003Cb>container images\u003C/b>\u003Cbr/>registry.company-group.com\"]\n",[754,798,800],{"class":756,"line":799},8,[754,801,802],{},"    bom --> models --> fmt --> biz --> dist --> img\n",[493,804,805],{},"The Maven BOM is the only version that matters; everything else inherits.",[614,807,809],{"id":808},"how-oss-feeds-the-business-edition","How OSS feeds the business edition",[493,811,812,814],{},[553,813,608],{}," is the assembly point. It consumes the OSS modules in two ways:",[816,817,818,824],"ol",{},[586,819,820,823],{},[497,821,822],{},"As Maven dependencies"," for the libraries (models, BOM, document-converter, dl-translator, event-hash-generator, epcis-constants, test-resources, S3 utils).",[586,825,826,829],{},[497,827,828],{},"As git submodules"," for the modules that need source-level integration (resolver, REST/SOAP Quarkus apps document-converter-sax, keycloak-api-key).",[493,831,832,833,836,837,840],{},"Business-only modules live under ",[553,834,835],{},"openepcis-build/modules/openepcis-core/"," and are bundled by Quarkus profiles in ",[553,838,839],{},"quarkus-dist/"," into the deployable containers. The same set of OSS jars sits underneath every business container; the business modules add the multi-tenant runtime, storage backends, and operational concerns.",[614,842,844],{"id":843},"the-gs1-conformance-loop-today-and-tomorrow","The GS1 conformance loop (today and tomorrow)",[745,846,848],{"className":747,"code":847,"language":749,"meta":750,"style":750},"flowchart TD\n    ev[\"\u003Cb>EPCIS Event\u003C/b>\u003Cbr/>\u003Ci>Digital Link form\u003C/i>\"]\n    repo[\"\u003Cb>Repository\u003C/b>\u003Cbr/>\u003Ci>OpenSearch\u003C/i>\u003Cbr/>hash-deduplicated\u003Cbr/>tenant-scoped\"]\n    qs[\"\u003Cb>Query · Subscriptions\u003C/b>\u003Cbr/>\u003Ci>percolator-driven\u003C/i>\"]\n    mdT[\"\u003Cb>Masterdata sync (today)\u003C/b>\u003Cbr/>explicit POST\u003Cbr/>/organizations\u003Cbr/>/products · /places\"]\n    mdR[\"\u003Cb>Roadmap\u003C/b>\u003Cbr/>event-driven promotion\u003Cbr/>(EPCIS → resolver)\"]\n    linksets[\"\u003Cb>Resolver linksets\u003C/b>\u003Cbr/>auto-populated:\u003Cbr/>gs1:pip · gs1:masterData · …\"]\n    ev -->|\"/capture\"| repo\n    repo --> qs\n    repo --> mdT\n    mdT --> linksets\n    mdR -.->|\"roadmap\"| linksets\n\n    classDef roadmap stroke-dasharray:4 3,fill:#fef3f2,stroke:#d92d20\n    class mdR roadmap\n",[553,849,850,854,859,864,869,874,879,884,889,895,901,907,913,920,926],{"__ignoreMap":750},[754,851,852],{"class":756,"line":757},[754,853,760],{},[754,855,856],{"class":756,"line":763},[754,857,858],{},"    ev[\"\u003Cb>EPCIS Event\u003C/b>\u003Cbr/>\u003Ci>Digital Link form\u003C/i>\"]\n",[754,860,861],{"class":756,"line":769},[754,862,863],{},"    repo[\"\u003Cb>Repository\u003C/b>\u003Cbr/>\u003Ci>OpenSearch\u003C/i>\u003Cbr/>hash-deduplicated\u003Cbr/>tenant-scoped\"]\n",[754,865,866],{"class":756,"line":775},[754,867,868],{},"    qs[\"\u003Cb>Query · Subscriptions\u003C/b>\u003Cbr/>\u003Ci>percolator-driven\u003C/i>\"]\n",[754,870,871],{"class":756,"line":781},[754,872,873],{},"    mdT[\"\u003Cb>Masterdata sync (today)\u003C/b>\u003Cbr/>explicit POST\u003Cbr/>/organizations\u003Cbr/>/products · /places\"]\n",[754,875,876],{"class":756,"line":787},[754,877,878],{},"    mdR[\"\u003Cb>Roadmap\u003C/b>\u003Cbr/>event-driven promotion\u003Cbr/>(EPCIS → resolver)\"]\n",[754,880,881],{"class":756,"line":793},[754,882,883],{},"    linksets[\"\u003Cb>Resolver linksets\u003C/b>\u003Cbr/>auto-populated:\u003Cbr/>gs1:pip · gs1:masterData · …\"]\n",[754,885,886],{"class":756,"line":799},[754,887,888],{},"    ev -->|\"/capture\"| repo\n",[754,890,892],{"class":756,"line":891},9,[754,893,894],{},"    repo --> qs\n",[754,896,898],{"class":756,"line":897},10,[754,899,900],{},"    repo --> mdT\n",[754,902,904],{"class":756,"line":903},11,[754,905,906],{},"    mdT --> linksets\n",[754,908,910],{"class":756,"line":909},12,[754,911,912],{},"    mdR -.->|\"roadmap\"| linksets\n",[754,914,916],{"class":756,"line":915},13,[754,917,919],{"emptyLinePlaceholder":918},true,"\n",[754,921,923],{"class":756,"line":922},14,[754,924,925],{},"    classDef roadmap stroke-dasharray:4 3,fill:#fef3f2,stroke:#d92d20\n",[754,927,929],{"class":756,"line":928},15,[754,930,931],{},"    class mdR roadmap\n",[493,933,934,935,556,938,941,942,945,946,508],{},"The plumbing for event-driven masterdata sync is present in the resolver (",[553,936,937],{},"MasterDataDomainEvent",[553,939,940],{},"MasterDataSyncEventExecutor","); what is not yet wired is the bridge from ",[553,943,944],{},"/capture"," into that domain bus. It's a named milestone — see ",[593,947,412],{"href":413},[614,949,951],{"id":950},"where-to-read-next","Where to read next",[583,953,954,959,965,970],{},[586,955,956,958],{},[593,957,400],{"href":401}," — auth, DLS, the reactive pipeline, the GS1 conformance contract. Cite-heavy.",[586,960,961,964],{},[593,962,963],{"href":407},"Feature matrix"," — every capability × edition, with the module that provides it.",[586,966,967,969],{},[593,968,412],{"href":413}," — Now, Next, Later.",[586,971,972,973,975,976,975,978,975,980,975,983,975,986,975,989,508],{},"Module groups: ",[593,974,538],{"href":427}," · ",[593,977,548],{"href":433},[593,979,507],{"href":439},[593,981,982],{"href":445},"Formats",[593,984,985],{"href":451},"Integration",[593,987,988],{"href":457},"Testdata",[593,990,991],{"href":463},"Platform",[993,994,995],"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 .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":750,"searchDepth":763,"depth":763,"links":997},[998,999,1006],{"id":577,"depth":763,"text":578},{"id":611,"depth":763,"text":612,"children":1000},[1001,1002,1003,1004,1005],{"id":616,"depth":769,"text":617},{"id":630,"depth":769,"text":631},{"id":644,"depth":769,"text":645},{"id":655,"depth":769,"text":656},{"id":701,"depth":769,"text":702},{"id":738,"depth":763,"text":739,"children":1007},[1008,1009,1010,1011],{"id":742,"depth":769,"text":743},{"id":808,"depth":769,"text":809},{"id":843,"depth":769,"text":844},{"id":950,"depth":769,"text":951},"md","2026-05-21T00:00:00.000Z",{"readingTime":1015},{"text":1016,"minutes":1017,"time":1018,"words":1019},"5 min read",4.735,284100,947,{"title":392,"description":397},{"loc":393},"KhW3enPHgd9wlaRorAL9H4h91ppdHCHyVp_7jdpOqqI",[1024],{"title":5,"path":6,"stem":7,"children":1025},[1026,1028,1033,1038,1043,1048,1053,1058,1068,1073,1078,1083,1141,1157],{"title":10,"path":6,"stem":11,"description":12,"icon":13,"tags":1027},[15,16,17,18,19,20],{"title":22,"path":23,"stem":24,"children":1029,"description":27,"icon":28,"tags":1032},[1030],{"title":22,"path":23,"stem":24,"description":27,"icon":28,"tags":1031},[16,30,31,32,33,34,35,36,37],[16,30,31,32,33,34,35,36,37],{"title":40,"path":41,"stem":42,"children":1034,"description":45,"icon":46,"tags":1037},[1035],{"title":40,"path":41,"stem":42,"description":45,"icon":46,"tags":1036},[16,30,31,32,48,49],[16,30,31,32,48,49],{"title":52,"path":53,"stem":54,"children":1039,"description":57,"icon":58,"tags":1042},[1040],{"title":52,"path":53,"stem":54,"description":57,"icon":58,"tags":1041},[16,60,61,62,63,64,65,20,66,67,68,69,70],[16,60,61,62,63,64,65,20,66,67,68,69,70],{"title":73,"path":74,"stem":75,"children":1044,"description":78,"icon":79,"tags":1047},[1045],{"title":73,"path":74,"stem":75,"description":78,"icon":79,"tags":1046},[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],[16,31,60,61,62,63,81,65,20,82,83,84,68,69,70],{"title":87,"path":88,"stem":89,"children":1049,"description":92,"icon":93,"tags":1052},[1050],{"title":87,"path":88,"stem":89,"description":92,"icon":93,"tags":1051},[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],[16,95,96,97,98,99,20,100,101,102,103,104,105,106,107,108,109,110],{"title":113,"path":114,"stem":115,"children":1054,"description":118,"icon":119,"tags":1057},[1055],{"title":113,"path":114,"stem":115,"description":118,"icon":119,"tags":1056},[16,121,60,61,62,63,20,122,123,124,69,70],[16,121,60,61,62,63,20,122,123,124,69,70],{"title":127,"path":128,"stem":129,"children":1059,"description":132,"icon":133,"tags":1067},[1060,1062],{"title":127,"path":128,"stem":129,"description":132,"icon":133,"tags":1061},[16,121,60,61,62,63,20,122,123,124,69,70],{"title":136,"path":137,"stem":138,"children":1063,"description":132,"icon":141,"tags":1066},[1064],{"title":136,"path":137,"stem":138,"description":132,"icon":141,"tags":1065},[16,60,61,143,20,144,145,146,34,147,148,149,150],[16,60,61,143,20,144,145,146,34,147,148,149,150],[16,121,60,61,62,63,20,122,123,124,69,70],{"title":154,"path":155,"stem":156,"children":1069,"description":159,"icon":160,"tags":1072},[1070],{"title":154,"path":155,"stem":156,"description":159,"icon":160,"tags":1071},[16,60,61,143,20,162,34,147,148,149,150],[16,60,61,143,20,162,34,147,148,149,150],{"title":165,"path":166,"stem":167,"children":1074,"description":170,"icon":171,"tags":1077},[1075],{"title":165,"path":166,"stem":167,"description":170,"icon":171,"tags":1076},[16,173,15,174,20,175,34,176,148,149,177],[16,173,15,174,20,175,34,176,148,149,177],{"title":180,"path":181,"stem":182,"children":1079,"description":185,"icon":186,"tags":1082},[1080],{"title":180,"path":181,"stem":182,"description":185,"icon":186,"tags":1081},[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],[188,15,189,190,191,192,193,30,194,195,196,197,198,199,200,201],{"title":204,"path":205,"stem":206,"children":1084,"description":209,"icon":210,"tags":1140},[1085,1087,1092,1101,1111,1120,1125,1127,1129,1131],{"title":204,"path":205,"stem":206,"description":209,"icon":210,"tags":1086},[212,213,214,30,215,34,216],{"title":218,"path":219,"stem":220,"children":1088,"description":223,"icon":224,"tags":1091},[1089],{"title":218,"path":219,"stem":220,"description":223,"icon":224,"tags":1090},[226,227,215,213,214],[226,227,215,213,214],{"title":230,"path":231,"stem":232,"children":1093,"description":235,"icon":236,"tags":1100},[1094,1096,1097,1098],{"title":230,"path":231,"stem":232,"description":235,"icon":236,"tags":1095},[238,239,213,30,101,34,215],{"title":241,"path":242,"stem":243,"description":244,"icon":171},{"title":246,"path":247,"stem":248,"description":249,"icon":250},{"title":252,"path":253,"stem":254,"description":255,"icon":13,"tags":1099},[238,257,258,61,259],[238,239,213,30,101,34,215],{"title":262,"path":263,"stem":264,"children":1102,"description":267,"icon":268,"tags":1110},[1103,1105,1106,1107,1108],{"title":262,"path":263,"stem":264,"description":267,"icon":268,"tags":1104},[270,271,272,213,30,101,34,215],{"title":241,"path":274,"stem":275,"description":276,"icon":277},{"title":246,"path":279,"stem":280,"description":281,"icon":277},{"title":283,"path":284,"stem":285,"description":286,"icon":277},{"title":252,"path":288,"stem":289,"description":290,"icon":13,"tags":1109},[270,257,272,292,293],[270,271,272,213,30,101,34,215],{"title":296,"path":297,"stem":298,"children":1112,"description":301,"icon":302,"tags":1119},[1113,1115,1117],{"title":296,"path":297,"stem":298,"description":301,"icon":302,"tags":1114},[304,305,306,213,215,307],{"title":241,"path":309,"stem":310,"description":311,"icon":312,"tags":1116},[304,305,306,314],{"title":252,"path":316,"stem":317,"description":318,"icon":13,"tags":1118},[304,257,305,306,320,61],[304,305,306,213,215,307],{"title":323,"path":324,"stem":325,"children":1121,"description":328,"icon":58,"tags":1124},[1122],{"title":323,"path":324,"stem":325,"description":328,"icon":58,"tags":1123},[330,331,101,332,226,333,334],[330,331,101,332,226,333,334],{"title":337,"path":338,"stem":339,"description":340,"icon":28,"tags":1126},[342,95,343,344],{"title":346,"path":347,"stem":348,"description":349,"icon":350,"tags":1128},[352,95,343],{"title":354,"path":355,"stem":356,"description":357,"icon":358,"tags":1130},[360,361,362,332],{"title":364,"path":365,"stem":366,"children":1132,"description":369,"icon":370,"tags":1139},[1133,1135,1137],{"title":364,"path":365,"stem":366,"description":369,"icon":370,"tags":1134},[372,373,374,375,376],{"title":241,"path":378,"stem":379,"description":380,"icon":171,"tags":1136},[372,314,373,374,375],{"title":252,"path":383,"stem":384,"description":385,"icon":13,"tags":1138},[372,257,387,388,61],[372,373,374,375,376],[212,213,214,30,215,34,216],{"title":392,"path":393,"stem":394,"children":1142,"description":397,"icon":398},[1143,1144,1145,1146,1147],{"title":392,"path":393,"stem":394,"description":397,"icon":398},{"title":400,"path":401,"stem":402,"description":403,"icon":404},{"title":406,"path":407,"stem":408,"description":409,"icon":410},{"title":412,"path":413,"stem":414,"description":415,"icon":416},{"title":418,"path":419,"stem":420,"children":1148,"description":423,"icon":424},[1149,1150,1151,1152,1153,1154,1155,1156],{"title":418,"path":419,"stem":420,"description":423,"icon":424},{"title":426,"path":427,"stem":428,"description":429,"icon":430},{"title":432,"path":433,"stem":434,"description":435,"icon":436},{"title":438,"path":439,"stem":440,"description":441,"icon":442},{"title":444,"path":445,"stem":446,"description":447,"icon":448},{"title":450,"path":451,"stem":452,"description":453,"icon":454},{"title":456,"path":457,"stem":458,"description":459,"icon":460},{"title":462,"path":463,"stem":464,"description":465,"icon":466},{"title":468,"path":469,"stem":470,"children":1158,"description":473,"icon":28,"tags":1161},[1159],{"title":468,"path":469,"stem":470,"description":473,"icon":28,"tags":1160},[475,476,477,478,331,479,480,481],[475,476,477,478,331,479,480,481],{"id":484,"title":392,"body":1163,"description":397,"extension":1012,"icon":398,"lastUpdated":1013,"meta":1500,"navigation":918,"path":393,"seo":1502,"sitemap":1503,"stem":394,"__hash__":1022},{"type":486,"value":1164,"toc":1484},[1165,1167,1175,1177,1219,1221,1223,1238,1240,1242,1248,1250,1256,1258,1262,1264,1290,1292,1308,1310,1312,1314,1350,1352,1354,1358,1368,1374,1376,1440,1450,1452,1482],[489,1166,491],{"id":15},[493,1168,495,1169,500,1171,504,1173,508],{},[497,1170,499],{},[497,1172,503],{},[497,1174,507],{},[493,1176,511],{},[513,1178,1179,1187],{},[516,1180,1181],{},[519,1182,1183,1185],{},[522,1184,524],{},[522,1186,527],{},[529,1188,1189,1197,1211],{},[519,1190,1191,1195],{},[534,1192,1193],{},[497,1194,538],{},[534,1196,541],{},[519,1198,1199,1203],{},[534,1200,1201],{},[497,1202,548],{},[534,1204,551,1205,556,1207,556,1209,563],{},[553,1206,555],{},[553,1208,559],{},[553,1210,562],{},[519,1212,1213,1217],{},[534,1214,1215],{},[497,1216,570],{},[534,1218,573],{},[575,1220,578],{"id":577},[493,1222,581],{},[583,1224,1225,1232],{},[586,1226,1227,591,1229,599],{},[497,1228,590],{},[593,1230,598],{"href":595,"rel":1231},[597],[586,1233,1234,605,1236,508],{},[497,1235,604],{},[553,1237,608],{},[575,1239,612],{"id":611},[614,1241,617],{"id":616},[493,1243,620,1244,624,1246,508],{},[497,1245,623],{},[593,1247,627],{"href":401},[614,1249,631],{"id":630},[493,1251,634,1252,638,1254,508],{},[497,1253,637],{},[593,1255,641],{"href":439},[614,1257,645],{"id":644},[493,1259,648,1260,652],{},[497,1261,651],{},[614,1263,656],{"id":655},[493,1265,659,1266,663,1268,667,1270,556,1272,556,1274,556,1276,556,1278,556,1280,556,1282,556,1284,556,1286,695,1288,508],{},[497,1267,662],{},[553,1269,666],{},[553,1271,670],{},[553,1273,673],{},[553,1275,676],{},[553,1277,679],{},[553,1279,682],{},[553,1281,685],{},[553,1283,688],{},[553,1285,691],{},[553,1287,694],{},[593,1289,698],{"href":427},[614,1291,702],{"id":701},[493,1293,705,1294,709,1296,713,1298,717,1300,721,1302,556,1304,728,1306,732],{},[497,1295,708],{},[497,1297,712],{},[497,1299,716],{},[553,1301,720],{},[553,1303,724],{},[553,1305,727],{},[593,1307,731],{"href":413},[734,1309],{},[575,1311,739],{"id":738},[614,1313,743],{"id":742},[745,1315,1316],{"className":747,"code":748,"language":749,"meta":750,"style":750},[553,1317,1318,1322,1326,1330,1334,1338,1342,1346],{"__ignoreMap":750},[754,1319,1320],{"class":756,"line":757},[754,1321,760],{},[754,1323,1324],{"class":756,"line":763},[754,1325,766],{},[754,1327,1328],{"class":756,"line":769},[754,1329,772],{},[754,1331,1332],{"class":756,"line":775},[754,1333,778],{},[754,1335,1336],{"class":756,"line":781},[754,1337,784],{},[754,1339,1340],{"class":756,"line":787},[754,1341,790],{},[754,1343,1344],{"class":756,"line":793},[754,1345,796],{},[754,1347,1348],{"class":756,"line":799},[754,1349,802],{},[493,1351,805],{},[614,1353,809],{"id":808},[493,1355,1356,814],{},[553,1357,608],{},[816,1359,1360,1364],{},[586,1361,1362,823],{},[497,1363,822],{},[586,1365,1366,829],{},[497,1367,828],{},[493,1369,832,1370,836,1372,840],{},[553,1371,835],{},[553,1373,839],{},[614,1375,844],{"id":843},[745,1377,1378],{"className":747,"code":847,"language":749,"meta":750,"style":750},[553,1379,1380,1384,1388,1392,1396,1400,1404,1408,1412,1416,1420,1424,1428,1432,1436],{"__ignoreMap":750},[754,1381,1382],{"class":756,"line":757},[754,1383,760],{},[754,1385,1386],{"class":756,"line":763},[754,1387,858],{},[754,1389,1390],{"class":756,"line":769},[754,1391,863],{},[754,1393,1394],{"class":756,"line":775},[754,1395,868],{},[754,1397,1398],{"class":756,"line":781},[754,1399,873],{},[754,1401,1402],{"class":756,"line":787},[754,1403,878],{},[754,1405,1406],{"class":756,"line":793},[754,1407,883],{},[754,1409,1410],{"class":756,"line":799},[754,1411,888],{},[754,1413,1414],{"class":756,"line":891},[754,1415,894],{},[754,1417,1418],{"class":756,"line":897},[754,1419,900],{},[754,1421,1422],{"class":756,"line":903},[754,1423,906],{},[754,1425,1426],{"class":756,"line":909},[754,1427,912],{},[754,1429,1430],{"class":756,"line":915},[754,1431,919],{"emptyLinePlaceholder":918},[754,1433,1434],{"class":756,"line":922},[754,1435,925],{},[754,1437,1438],{"class":756,"line":928},[754,1439,931],{},[493,1441,934,1442,556,1444,941,1446,945,1448,508],{},[553,1443,937],{},[553,1445,940],{},[553,1447,944],{},[593,1449,412],{"href":413},[614,1451,951],{"id":950},[583,1453,1454,1458,1462,1466],{},[586,1455,1456,958],{},[593,1457,400],{"href":401},[586,1459,1460,964],{},[593,1461,963],{"href":407},[586,1463,1464,969],{},[593,1465,412],{"href":413},[586,1467,972,1468,975,1470,975,1472,975,1474,975,1476,975,1478,975,1480,508],{},[593,1469,538],{"href":427},[593,1471,548],{"href":433},[593,1473,507],{"href":439},[593,1475,982],{"href":445},[593,1477,985],{"href":451},[593,1479,988],{"href":457},[593,1481,991],{"href":463},[993,1483,995],{},{"title":750,"searchDepth":763,"depth":763,"links":1485},[1486,1487,1494],{"id":577,"depth":763,"text":578},{"id":611,"depth":763,"text":612,"children":1488},[1489,1490,1491,1492,1493],{"id":616,"depth":769,"text":617},{"id":630,"depth":769,"text":631},{"id":644,"depth":769,"text":645},{"id":655,"depth":769,"text":656},{"id":701,"depth":769,"text":702},{"id":738,"depth":763,"text":739,"children":1495},[1496,1497,1498,1499],{"id":742,"depth":769,"text":743},{"id":808,"depth":769,"text":809},{"id":843,"depth":769,"text":844},{"id":950,"depth":769,"text":951},{"readingTime":1501},{"text":1016,"minutes":1017,"time":1018,"words":1019},{"title":392,"description":397},{"loc":393},1779436723470]