@kanonak-protocol/sdk 5.34.0 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,155 +0,0 @@
1
- import{a as it}from"./chunk-6VIUXP4N.js";import{a as vn,b as De,g as u,l as Sn}from"./chunk-A7N2BMMP.js";import{a as ct}from"./chunk-HF5FJBS2.js";import{a as ht}from"./chunk-PEJALHXK.js";import{a as D,ba as pt,ca as mt,na as en,oa as je,pa as nn,qa as $n,ua as kt}from"./chunk-ESABMC5L.js";import{A as ft,B as Te,C as gt,b as Ie,c as Y,d as x,g as Z,h as ge,i as fe,j as H,k as ee,l as B,m as ne,n as ie,o as lt,p as ut,q as Fe,r as w,t as Be,u as le,v as dt,w as ln,x as We,y as Le,z as _e}from"./chunk-CJMVIOZX.js";import{a as yn}from"./chunk-FUUTGGJS.js";import{c as hn,d as st,e as bn,g as ot}from"./chunk-QILEJIFU.js";var Q=class extends Error{constructor(n,t){super(`${n} (at ${t})`);this.path=t}path};function Qo(r,e){let n=r.name,t=Oa(e),a={catalog:e,depth:0};if(w(r,u.InstanceTransformation))return Sa(r,n,a,t);if(w(r,u.SetTransformation))return wa(r,n,a,t);throw new Q("Subject is not a recognized v3 transformation type \u2014 expected InstanceTransformation or SetTransformation",n)}function Sa(r,e,n,t){return{kind:"instance",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),fragments:t}}function wa(r,e,n,t){let a=Ve(r,u.partitionBy);return{kind:"set",name:r.name,inputPattern:_t(r,e),rule:wn(r,u.rule,`${e}.rule`,n),artifactName:wn(r,u.artifactName,`${e}.artifactName`,n),outputs:jt(r,`${e}.outputs`),overrides:Kt(r,`${e}.formatOverrides`,n),partitionBy:a,fragments:t}}function _t(r,e){let n=un(r,u.inputPattern);if(!n)throw new Q("inputPattern is required",e);return _a(n,`${e}.inputPattern`)}function _a(r,e){let n=Ve(r,u.matchesClass);if(!n)throw new Q("matchesClass is required",e);let t=[];for(let o of we(r,u.requires))if(o instanceof H)t.push(Bn(o.object.subject));else if(o instanceof B)for(let i of o.object)i instanceof x&&t.push(Bn(i.subject));let a=[],s=0;for(let o of we(r,u.sortBy))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(bt(i,`${e}.sortBy[${s++}]`));else o instanceof ee&&a.push(bt(o.object,`${e}.sortBy[${s++}]`));return{matchesClass:n,requires:t,sortBy:a}}function bt(r,e){let n=Ve(r,u.byProperty);if(!n)throw new Q("SortKey.byProperty is required",e);let t=Ve(r,u.order);if(!t)throw new Q("SortKey.order is required",e);if(ie(t,u.ascending))return{byProperty:n,order:"ascending"};if(ie(t,u.descending))return{byProperty:n,order:"descending"};throw new Q(`SortKey.order must reference tx.ascending or tx.descending; got ${t.publisher}/${t.package_}/${t.name}`,e)}function wn(r,e,n,t){let a=un(r,e);if(!a)throw new Q("expression is required",n);return Pe(a,n,t)}function Pe(r,e,n){if(w(r,u.StringLiteral))return{kind:"string-literal",value:$e(r,u.stringLiteral,e)};if(w(r,u.IntegerLiteral))return{kind:"integer-literal",value:wt(r,u.integerLiteral,e)};if(w(r,u.DecimalLiteral))return{kind:"decimal-literal",value:wt(r,u.decimalLiteral,e)};if(w(r,u.BooleanLiteral))return{kind:"boolean-literal",value:Ta(r,u.booleanLiteral,e)};if(w(r,u.VarRef))return{kind:"var-ref",varName:$e(r,u.varName,e)};if(w(r,u.PropertyRead))return{kind:"property-read",source:S(r,u.readSource,`${e}.readSource`,n),readProp:He(r,u.readProp,e,"readProp")};if(w(r,u.Traverse))return{kind:"traverse",source:S(r,u.traverseSource,`${e}.traverseSource`,n),through:He(r,u.through,e,"through"),step:S(r,u.step,`${e}.step`,n)};if(w(r,u.BuildAstNode))return{kind:"build-ast-node",astClass:He(r,u.astClass,e,"astClass"),set:Ka(r,`${e}.set`,n)};if(w(r,u.When))return{kind:"when",condition:S(r,u.condition,`${e}.condition`,n),thenBuild:S(r,u.thenBuild,`${e}.thenBuild`,n),elseBuild:ja(r,u.elseBuild,`${e}.elseBuild`,n)};if(w(r,u.Concat))return{kind:"concat",parts:Mn(r,u.parts,`${e}.parts`,n)};if(w(r,u.Fallback))return{kind:"fallback",primary:S(r,u.primary,`${e}.primary`,n),alternate:S(r,u.alternate,`${e}.alternate`,n)};if(w(r,u.UriName))return{kind:"uri-name",source:S(r,u.uriNameOf,`${e}.uriNameOf`,n)};if(w(r,u.UriPublisher))return{kind:"uri-publisher",source:S(r,u.uriPublisherOf,`${e}.uriPublisherOf`,n)};if(w(r,u.UriPackage))return{kind:"uri-package",source:S(r,u.uriPackageOf,`${e}.uriPackageOf`,n)};if(w(r,u.UriVersion))return{kind:"uri-version",source:S(r,u.uriVersionOf,`${e}.uriVersionOf`,n)};if(w(r,u.SubjectUri))return{kind:"subject-uri",source:S(r,u.subjectOf,`${e}.subjectOf`,n)};if(w(r,u.UriLiteral))return{kind:"uri-literal",refTo:He(r,u.refTo,e,"refTo")};if(w(r,u.DisplayLabel))return{kind:"display-label",labelTarget:He(r,u.labelTarget,e,"labelTarget"),labelSource:He(r,u.labelSource,e,"labelSource")};if(w(r,u.ResolveRef))return{kind:"resolve-ref",source:S(r,u.resolveSource,`${e}.resolveSource`,n)};if(w(r,u.Normalize))return{kind:"normalize",source:S(r,u.normSource,`${e}.normSource`,n),normKind:Ra(r,e)};if(w(r,u.UnescapedString))return{kind:"unescaped-string",source:S(r,u.unescapedSource,`${e}.unescapedSource`,n)};if(w(r,u.RenderMarkdown))return{kind:"render-markdown",source:S(r,u.renderSource,`${e}.renderSource`,n),readProp:He(r,u.renderProp,e,"renderProp"),format:Ea(r,e)};if(w(r,u.IsSet))return{kind:"is-set",check:S(r,u.checkExpr,`${e}.checkExpr`,n)};if(w(r,u.CallFragment))return Ca(r,e,n);if(w(r,u.Join))return{kind:"join",source:S(r,u.source,`${e}.source`,n),separator:$e(r,u.separator,e)};if(w(r,u.Count))return{kind:"count",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Sum))return{kind:"sum",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Min))return{kind:"min",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Max))return{kind:"max",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.Average))return{kind:"average",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.ForEach))return{kind:"for-each",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),emit:S(r,u.emit,`${e}.emit`,n)};if(w(r,u.ListMap))return{kind:"list-map",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),mapBody:S(r,u.mapBody,`${e}.mapBody`,n)};if(w(r,u.Filter))return{kind:"filter",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),predicate:S(r,u.predicate,`${e}.predicate`,n)};if(w(r,u.PartitionBy))return{kind:"partition-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),partitionKey:S(r,u.partitionKey,`${e}.partitionKey`,n)};if(w(r,u.DistinctBy))return{kind:"distinct-by",source:S(r,u.source,`${e}.source`,n),loopVar:$e(r,u.loopVar,e),distinctKey:S(r,u.distinctKey,`${e}.distinctKey`,n)};if(w(r,u.AllStatements))return{kind:"all-statements",source:S(r,u.statementsOf,`${e}.statementsOf`,n)};if(w(r,u.StatementPredicate))return{kind:"statement-predicate",source:S(r,u.predicateOf,`${e}.predicateOf`,n)};if(w(r,u.StatementValue))return{kind:"statement-value",source:S(r,u.valueOf,`${e}.valueOf`,n)};if(w(r,u.DateFormat))return{kind:"date-format",source:S(r,u.dateSource,`${e}.dateSource`,n),format:xa(r,e)};if(w(r,u.NumberFormat)){let t=Nn(r,u.fractionDigits);if(t!==void 0&&(!Number.isInteger(t)||t<0||t>20))throw new Q(`fractionDigits must be an integer between 0 and 20; got ${t}`,e);let a=qe(r,u.currencyCode);return{kind:"number-format",source:S(r,u.numberSource,`${e}.numberSource`,n),style:La(r,e),...t!==void 0?{fractionDigits:t}:{},...a!==void 0?{currencyCode:a}:{}}}if(w(r,u.Add))return{kind:"add",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Subtract))return{kind:"subtract",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Multiply))return{kind:"multiply",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Divide))return{kind:"divide",left:S(r,u.arithLeft,`${e}.arithLeft`,n),right:S(r,u.arithRight,`${e}.arithRight`,n)};if(w(r,u.Reverse))return{kind:"reverse",source:S(r,u.source,`${e}.source`,n)};if(w(r,u.WindowedMap)){let t=Nn(r,u.windowSize);if(t===void 0||!Number.isInteger(t)||t<1)throw new Q("windowSize must be a positive integer",`${e}.windowSize`);return{kind:"windowed-map",source:S(r,u.source,`${e}.source`,n),windowSize:t,windowVar:$e(r,u.windowVar,e),windowBody:S(r,u.windowBody,`${e}.windowBody`,n)}}if(w(r,u.PairwiseMap))return{kind:"pairwise-map",source:S(r,u.source,`${e}.source`,n),firstVar:$e(r,u.firstVar,e),secondVar:$e(r,u.secondVar,e),pairBody:S(r,u.pairBody,`${e}.pairBody`,n)};if(w(r,u.Scan))return{kind:"scan",source:S(r,u.source,`${e}.source`,n),initialState:S(r,u.initialState,`${e}.initialState`,n),stateVar:$e(r,u.stateVar,e),elementVar:$e(r,u.elementVar,e),accumulate:S(r,u.accumulate,`${e}.accumulate`,n)};if(w(r,u.ListItemAt))return{kind:"list-item-at",source:S(r,u.source,`${e}.source`,n),itemIndex:S(r,u.itemIndex,`${e}.itemIndex`,n)};if(w(r,u.Equals))return{kind:"equals",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThan))return{kind:"greater-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThan))return{kind:"less-than",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.GreaterThanOrEqual))return{kind:"greater-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.LessThanOrEqual))return{kind:"less-than-or-equal",left:S(r,u.compareLeft,`${e}.compareLeft`,n),right:S(r,u.compareRight,`${e}.compareRight`,n)};if(w(r,u.Not))return{kind:"not",operand:S(r,u.operand,`${e}.operand`,n)};if(w(r,u.And))return{kind:"and",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Or))return{kind:"or",operands:Mn(r,u.operands,`${e}.operands`,n)};if(w(r,u.Contains))return{kind:"contains",haystack:S(r,u.haystack,`${e}.haystack`,n),needle:S(r,u.needle,`${e}.needle`,n)};if(w(r,u.Abs))return{kind:"abs",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.Negate))return{kind:"negate",value:S(r,u.value,`${e}.value`,n)};if(w(r,u.IsReference))return{kind:"is-reference",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsEmbedded))return{kind:"is-embedded",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsList))return{kind:"is-list",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsString))return{kind:"is-string",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsNumber))return{kind:"is-number",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.IsBoolean))return{kind:"is-boolean",check:S(r,u.kindCheck,`${e}.kindCheck`,n)};if(w(r,u.StatementObject))return{kind:"statement-object",source:S(r,u.statementSource,`${e}.statementSource`,n)};if(w(r,u.Let))return{kind:"let",bindName:$e(r,u.letName,e),bindValue:S(r,u.letValue,`${e}.letValue`,n),body:S(r,u.letBody,`${e}.letBody`,n)};if(w(r,u.GetStatementByName))return{kind:"get-statement-by-name",inSubject:S(r,u.inSubject,`${e}.inSubject`,n),byName:S(r,u.byName,`${e}.byName`,n)};throw new Q("Expression is not of a recognized v3 type \u2014 embedded has no matching subclass of tx.Expression",e)}function S(r,e,n,t){let a=un(r,e);if(!a)throw new Q("child expression is required",n);return Pe(a,n,t)}function ja(r,e,n,t){let a=un(r,e);if(a)return Pe(a,n,t)}function Mn(r,e,n,t){let a=[],s=0;for(let o of we(r,e))if(o instanceof B)for(let i of o.object)i instanceof D&&a.push(Pe(i,`${n}[${s++}]`,t));else o instanceof ee&&a.push(Pe(o.object,`${n}[${s++}]`,t));return a}function Ka(r,e,n){let t=[],a=0;for(let s of we(r,u.set))if(s instanceof B)for(let o of s.object)o instanceof D&&t.push(yt(o,`${e}[${a++}]`,n));else s instanceof ee&&t.push(yt(s.object,`${e}[${a++}]`,n));return t}function yt(r,e,n){return{field:He(r,u.field,e,"field"),value:S(r,u.bindValue,`${e}.bindValue`,n)}}function Ra(r,e){let n=Ve(r,u.normKind);if(!n)throw new Q("normKind is required",e);if(ie(n,u.NORM_TRIM_END))return"trim-end";if(ie(n,u.NORM_TO_UPPER))return"to-upper";if(ie(n,u.NORM_TO_LOWER))return"to-lower";if(ie(n,u.NORM_FIRST_CHAR))return"first-char";throw new Q(`Unknown NormalizeKind: ${n.publisher}/${n.package_}/${n.name}`,e)}function Ea(r,e){let n=Ve(r,u.renderFormat);if(!n)throw new Q("renderFormat is required",e);if(ie(n,u.RENDER_HTML))return"html";if(ie(n,u.RENDER_MARKDOWN))return"markdown";throw new Q(`Unknown RenderFormat: ${n.publisher}/${n.package_}/${n.name}`,e)}var vt=new Set(["decimal","percent","basis-points","currency","compact"]);function La(r,e){let n=qe(r,u.numberStyle);if(n===void 0)throw new Q("numberStyle is required",e);if(!vt.has(n))throw new Q(`Unknown numberStyle "${n}"; supported: ${[...vt].join(", ")}`,e);return n}var $t=new Set(["iso-date","iso-datetime","short-date","long-date","year","month-year"]);function xa(r,e){let n=qe(r,u.dateFormat);if(!n)throw new Q("dateFormat is required",e);if(!$t.has(n))throw new Q(`Unknown dateFormat "${n}"; supported: ${[...$t].join(", ")}`,e);return n}function Ca(r,e,n){let t=Ve(r,u.fragmentRef);if(!t)throw new Q("fragmentRef is required",e);if(!Ia(n.catalog,t))throw new Q(`ExpressionFragment not found: ${t.publisher}/${t.package_}/${t.name}`,e);return{kind:"call-fragment",fragmentKey:Ua(t)}}function Ua(r){return`${r.publisher}/${r.package_}/${r.name}`}function Oa(r){let e=new Map,n=[];for(let t of r){if(!(t instanceof Y)||!w(t,u.ExpressionFragment))continue;let a=un(t,u.body);if(!a)continue;let s=(t.namespace||"").split("@")[0]||"",o=s.indexOf("/");if(o<0)continue;let i=s.substring(0,o),c=s.substring(o+1),l=`${i}/${c}/${t.name}`;n.push({key:l,subject:t,bodyEmb:a,pubPkgName:`${s}/${t.name}`})}for(let t of n){let a=Pe(t.bodyEmb,`fragment(${t.pubPkgName})`,{catalog:r,depth:0});e.set(t.key,a)}return e}function Ia(r,e){for(let n of r)if(!(!(n instanceof Y)||n.name!==e.name||!(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))&&w(n,u.ExpressionFragment))return n}function jt(r,e){let n=new Set;for(let t of we(r,u.outputs))if(t instanceof H)n.add(t.object.subject.name);else if(t instanceof B)for(let a of t.object)a instanceof x&&n.add(a.subject.name);if(n.size===0)throw new Q("outputs is required (at least one OutputFormat)",e);return n}function Kt(r,e,n){let t=new Map,a=0;for(let s of we(r,u.formatOverrides))if(s instanceof B){for(let o of s.object)if(o instanceof D){let[i,c]=St(o,`${e}[${a++}]`);t.set(i,c)}}else if(s instanceof ee){let[o,i]=St(s.object,`${e}[${a++}]`);t.set(o,i)}return t}function St(r,e){let n=Ve(r,u.formatTarget);if(!n)throw new Q("formatTarget is required",e);let t=[];for(let i of we(r,u.metadataKeys))if(i instanceof Z)t.push(i.object);else if(i instanceof B)for(let c of i.object){let l=c.value;typeof l=="string"&&t.push(l)}let a=new Map;for(let i of we(r,u.metadataRenames))if(i instanceof B){for(let c of i.object)if(c instanceof D){let l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}}else if(i instanceof ee){let c=i.object,l=qe(c,u.fromKey),d=qe(c,u.toKey);l&&d&&a.set(l,d)}let s=Dn(r,u.trailingNewline),o=Dn(r,u.omitWrapper);return[n.name,{metadataKeys:t.length>0?t:void 0,metadataRenames:a,trailingNewline:s,omitWrapper:o}]}function Fa(r){return r.predicate?.subject}function we(r,e){let n=[];for(let t of r.statement){let a=Fa(t);a&&ie(a,e)&&n.push(t)}return n}function un(r,e){for(let n of we(r,e))if(n instanceof ee)return n.object}function Ve(r,e){for(let n of we(r,e))if(n instanceof H)return Bn(n.object.subject)}function qe(r,e){for(let n of we(r,e))if(n instanceof Z)return n.object}function Nn(r,e){for(let n of we(r,e))if(n instanceof ge)return n.object}function Dn(r,e){for(let n of we(r,e))if(n instanceof fe)return n.object}function $e(r,e,n){let t=qe(r,e);if(t===void 0)throw new Q(`${e.name} (string) is required`,n);return t}function wt(r,e,n){let t=Nn(r,e);if(t===void 0)throw new Q(`${e.name} (number) is required`,n);return t}function Ta(r,e,n){let t=Dn(r,e);if(t===void 0)throw new Q(`${e.name} (boolean) is required`,n);return t}function He(r,e,n,t){let a=Ve(r,e);if(!a)throw new Q(`${t} (URI reference) is required`,n);return a}function Bn(r){return{publisher:r.publisher,package_:r.package_,name:r.name}}var Ye="kanonak.org",Ct="look",dn="core-rdf",Pa={publisher:Ye,package_:Ct,name:"displayLabel"},Va={publisher:Ye,package_:Ct,name:"displaySummary"},Aa={publisher:Ye,package_:dn,name:"subClassOf"},Ma={publisher:Ye,package_:dn,name:"label"},Na={publisher:Ye,package_:dn,name:"comment"},Rt=new yn(Ye,dn,"Resource"),Da=8;function G(r,e){return Ut(r,e,new Set)}function Ut(r,e,n){let t=xt(r,e,Pa)??Ma,a=xt(r,e,Va)??Na,s=Et(r,e,t,n)??e.name,o=Et(r,e,a,n);return{label:s,summary:o}}function Et(r,e,n,t){for(let a of e.statement){let s=a.predicate;if(!(!s?.subject||!ie(s.subject,n))){if(a instanceof Z)return a.object;if(a instanceof ge||a instanceof fe)return String(a.object);if(a instanceof H)return Lt(r,a.object.subject,t);if(a instanceof B){let o=[];for(let i of a.object??[])if(i instanceof x){let c=Lt(r,i.subject,t);c&&o.push(c)}if(o.length>0)return o.join(", ")}return}}}function Lt(r,e,n){let t=ne(e);if(n.has(t)||n.size>=Da)return e.name;let[a]=le(r,e);if(!a)return e.name;let s=new Set(n);return s.add(t),Ut(r,a,s).label}function xt(r,e,n){let t=_e(e,n);if(t)return t;let a=new Set,s=Fe(e,Ba);for(;s.length>0;){let o=s.shift(),i=ne(o);if(a.has(i))continue;a.add(i);let c=le(r,o);for(let l of c){let d=_e(l,n);if(d)return d}for(let l of c)s.push(...Fe(l,Aa))}if(!a.has(ne(Rt)))for(let o of le(r,Rt)){let i=_e(o,n);if(i)return i}}var Ba={publisher:Ye,package_:dn,name:"type"};var Ha="kanonak.org",Xe=(r,e)=>({publisher:Ha,package_:r,name:e}),qa=Xe("look","source"),Ot=Xe("look","connectors"),Ga=Xe("look","relation"),za=Xe("look","lineStyle"),Wa=Xe("look","participants"),Ya=Xe("core-owl","SymmetricProperty"),Xa=Xe("core-owl","inverseOf"),It=new Set(["solid","dotted","open","thick"]);function Ft(r){return _e(r,qa)}function Tt(r,e){let n=ft(e,Ot),t=n?[n]:Te(e,Ot),a=[];for(let s of t){if(!(s instanceof D))continue;let o=_e(s,Ga);if(!o)continue;let i=Le(s,za),c=i!==void 0&&It.has(i);a.push({relation:o,subject:le(r,o)[0],declaredStyle:c?i:void 0,invalidStyle:i!==void 0&&!c?i:void 0})}return a}function Pt(r,e){let n=[];for(let t of Te(e,Wa)){if(!(t instanceof x))continue;let a=le(r,t.subject)[0];a&&n.push(a)}return n}function fn(r,e,n){for(let t of ut(e))if(ie(t,n)||nn(r,t).some(a=>ie(a,n)))return!0;return!1}function Vt(r,e,n){let t=!!e.subject&&fn(r,e.subject,Ya);return e.declaredStyle?{style:e.declaredStyle,undirected:t}:e.subject&&Fe(e.subject,Xa).some(s=>n.some(o=>ie(s,o.relation)))?{style:"dotted",undirected:t}:{style:"solid",undirected:t}}function Hn(r,e,n){let t=Ft(n);if(!t)return _n("the band declares no look.source");let a=Tt(r,n);if(a.length===0)return _n("the band declares no look.connectors \u2014 nothing can be a message");let s=dt(e,t);if(!s)return{..._n(),sourceAbsent:!0};if(!(s instanceof De))return _n(`look.source ${ne(t)} is not a Markdown-ranged property \u2014 the order of a sequence comes from prose [[references]]`);let o=[],i=[],c=0;for(let g of s.links){if(!g.target)continue;let b=g.target.subject,k=le(r,b)[0];k&&($n(r,k)!==void 0?a.some(v=>ie(b,v.relation))?o.push({kind:"selector",relation:b}):i.push(b):(o.push({kind:"participant",subject:k}),c++))}let l=[],d=[],f,p;for(let g of o){if(g.kind==="selector"){p=g.relation;continue}let b=g.subject;if(f){let k=p?a.filter(C=>ie(p,C.relation)):a,v=je(b),y=je(f),K=[],E=[];for(let C of k){let{style:T,undirected:_}=Vt(r,C,a);v&&Fe(f,C.relation).some(W=>ne(W)===ne(v))?K.push({from:f,to:b,relation:C.relation,style:T,undirected:_}):y&&Fe(b,C.relation).some(W=>ne(W)===ne(y))&&E.push({from:b,to:f,relation:C.relation,style:T,undirected:_})}let O=K.length>0?K:E;l.push(...O),O.length===0&&Ae(f)!==Ae(b)&&d.push({prev:f,next:b,selected:p}),p=void 0}f=b}let m=new Map;for(let g of Pt(r,n))m.set(Ae(g),g);for(let g of l)m.has(Ae(g.from))||m.set(Ae(g.from),g.from),m.has(Ae(g.to))||m.set(Ae(g.to),g.to);return{messages:l,gaps:d,lifelines:[...m.values()],mentions:c,strayPropertyRefs:i,sourceAbsent:!1}}function Ae(r){return`${r.namespace}/${r.name}`}function _n(r){return{messages:[],gaps:[],lifelines:[],mentions:0,strayPropertyRefs:[],sourceAbsent:!1,...r?{problem:r}:{}}}var Qa="kanonak.org",Ja="core-shacl",Se=r=>({publisher:Qa,package_:Ja,name:r}),Za=Se("NodeShape"),er=Se("targetClass"),nr=Se("property"),tr=Se("path"),ar=Se("minCount"),rr=Se("maxCount"),sr=Se("in"),or=Se("pattern"),ir=Se("flags"),cr=Se("minLength"),lr=Se("maxLength"),ur=Se("minInclusive"),dr=Se("maxInclusive"),fr=Se("message");function tn(r){return typeof r=="number"?r:void 0}function pr(r){let e={},n=tn(We(r,ar)),t=tn(We(r,rr));n!==void 0&&(e.minCount=n),t!==void 0&&(e.maxCount=t);let a=tn(We(r,cr)),s=tn(We(r,lr));a!==void 0&&(e.minLength=a),s!==void 0&&(e.maxLength=s);let o=tn(We(r,ur)),i=tn(We(r,dr));o!==void 0&&(e.minInclusive=o),i!==void 0&&(e.maxInclusive=i);let c=Le(r,or);if(c!==void 0){let f=Le(r,ir);e.pattern=f!==void 0?{regex:c,flags:f}:{regex:c}}let l=Te(r,sr).filter(f=>f instanceof vn).map(f=>f.value);l.length>0&&(e.enumValues=l);let d=Le(r,fr);return d!==void 0&&(e.message=d),e}function mr(r,e){let n=[];for(let t of Te(e,nr))if(t instanceof D)n.push(t);else if(t instanceof x){let a=Be(r,t.subject);a&&n.push(a)}return n}function gr(r){let e=new Map;for(let n of r){if(!(n instanceof Y)||!w(n,Za))continue;let t=_e(n,er);if(!t)continue;let a=ne(t);for(let s of mr(r,n)){let o=_e(s,tr);if(!o)continue;let i=pr(s);if(kr(s,i))continue;let c={pathKey:ne(o),constraints:i},l=e.get(a);l?l.push(c):e.set(a,[c])}}return e}var At=new WeakMap;function pn(r){let e=At.get(r);return e||(e=gr(r),At.set(r,e)),e}function kr(r,e){return ln(r,pt)||ln(r,mt)?Object.keys(e).every(t=>t==="message"):!1}function hr(r,e){e.minCount!==void 0&&(r.minCount=e.minCount),e.maxCount!==void 0&&(r.maxCount=e.maxCount),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.minInclusive!==void 0&&(r.minInclusive=e.minInclusive),e.maxInclusive!==void 0&&(r.maxInclusive=e.maxInclusive),e.pattern!==void 0&&(r.pattern=e.pattern),e.enumValues!==void 0&&(r.enumValues=e.enumValues),e.message!==void 0&&(r.message=e.message)}function Mt(r,e,n){let t=ne(n),a=!1,s={};for(let o=e.length-1;o>=0;o--){let i=r.get(ne(e[o]));if(i)for(let c of i)c.pathKey===t&&(a=!0,hr(s,c.constraints))}if(a)return s.cardinality=s.maxCount===1?"single":"list",s.required=(s.minCount??0)>=1,s}var Qe="kanonak.org",Kn="core-rdf",Dt="core-xsd",Nt={publisher:Qe,package_:Kn,name:"subClassOf"},Bt={publisher:Qe,package_:Kn,name:"label"},Ht={publisher:Qe,package_:Kn,name:"comment"},qt={publisher:Qe,package_:"core-owl",name:"oneOf"},Gt=r=>r;function br(r){let e=_e(r,Nt);if(e)return[e];let n=[];for(let t of Te(r,Nt))t instanceof x&&n.push(t.subject);return n}function yr(r,e,n){if(e.publisher===Qe&&e.package_===Kn&&e.name==="Literal")return{kind:"datatype",uri:e};let a=Be(r,e);if(a){let s=Gt(a);if(en.isDatatypeType(s))return{kind:"datatype",uri:e};if(en.isClassType(s))return{kind:"class",uri:je(a)??e,localName:a.name}}return e.publisher===Qe&&e.package_===Dt?{kind:"datatype",uri:e}:n==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function vr(r,e,n){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let t=yr(r,e.range,e.kind),a=e.kind==="object"?"object":e.kind==="datatype"?"datatype":t.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:a,range:t,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...n??{}}}var jn=r=>new yn(Qe,Dt,r);function $r(r){return typeof r=="boolean"?jn("boolean"):typeof r=="number"?Number.isInteger(r)?jn("integer"):jn("decimal"):jn("string")}function Sr(r,e){let n=[];for(let t of Te(e,qt))if(t instanceof x){let a=Be(r,t.subject),s=(a?je(a):void 0)??t.subject,o=a?Le(a,Bt):void 0,i=a?Le(a,Ht):void 0;n.push({kind:"individual",uri:s,localName:s.name,...o!==void 0?{label:o}:{},...i!==void 0?{comment:i}:{}})}else t instanceof vn&&n.push({kind:"literal",value:t.value,datatype:$r(t.value)});return n}function Rn(r,e,n,t){let a=nn(r,e),s=ne(e);return kt(r,e).filter(i=>n?!0:i.domains.some(c=>ne(c)===s)).map(i=>vr(r,i,Mt(t,a,i.uri)))}async function Ci(r,e,n){let t=r.metadata?.namespace_;if(!t)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let a=n?.includeInherited??!1,s=Array.isArray(e)?e:await new Sn().parseKanonaks(e),o=pn(s),i=p=>p.publisher===t.publisher&&p.package_===t.package_&&!(p.version&&t.version&&!st(p.version,t.version)),c=[],l=[],d=new Set,f=!1;for(let p of s){if(!(p instanceof Y))continue;let m=je(p);if(!m||!i(m)||(f=!0,!en.isClassType(Gt(p))))continue;let g=ne(m);if(d.has(g))continue;d.add(g);let b=br(p).map(y=>({uri:y,localName:y.name})),k=Le(p,Bt),v=Le(p,Ht);c.push({uri:m,localName:m.name,superClasses:b,properties:Rn(s,m,a,o),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}}),ln(p,qt)&&l.push({uri:m,localName:m.name,members:Sr(s,p),...k!==void 0?{label:k}:{},...v!==void 0?{comment:v}:{}})}if(!f)throw new Error(`buildOntologyModel: ${t.toString()} is not in the ${Array.isArray(e)?"catalog":"repository"} \u2014 a model can only be built for a document ${Array.isArray(e)?"the catalog was parsed from":"the repository holds"}.`);return{classes:c,enums:l}}function mn(r,e={}){let n=r.replace(/\r\n/g,`
2
- `).split(`
3
- `),t=[],a=0;for(;a<n.length;){let s=n[a];if(s.trim()===""){a++;continue}let o=/^(\s*)```(\S*)\s*$/.exec(s);if(o){let l=o[2],d=[];for(a++;a<n.length&&!/^(\s*)```\s*$/.test(n[a]);)d.push(n[a]),a++;a++;let f=d.join(`
4
- `),p=l&&e.highlight?e.highlight(l,f):rn(f),m=l?` class="language-${Wt(l)}"`:"";t.push(`<pre class="kan-code"><code${m}>${p}</code></pre>`);continue}let i=/^(#{1,6})\s+(.*)$/.exec(s);if(i){let l=i[1].length,d=an(i[2].trim());t.push(`<h${l}>${d}</h${l}>`),a++;continue}if(s.includes("|")&&a+1<n.length&&zt(n[a+1])){let l=qn(s),d=wr(n[a+1]);a+=2;let f=[];for(;a<n.length&&n[a].trim()!==""&&n[a].includes("|");)f.push(qn(n[a])),a++;t.push(_r(l,d,f));continue}if(/^\s*[-*]\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*[-*]\s+/.test(n[a]);){let d=[n[a].replace(/^\s*[-*]\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ul>
5
- ${l.join(`
6
- `)}
7
- </ul>`);continue}if(/^\s*\d+\.\s+/.test(s)){let l=[];for(;a<n.length&&/^\s*\d+\.\s+/.test(n[a]);){let d=[n[a].replace(/^\s*\d+\.\s+/,"")];for(a++;a<n.length&&n[a].trim()!==""&&!/^\s*\d+\.\s+/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a]);)d.push(n[a]),a++;a<n.length&&n[a].trim()===""&&a++,l.push(`<li>${an(d.join(" ").trim())}</li>`)}t.push(`<ol>
8
- ${l.join(`
9
- `)}
10
- </ol>`);continue}let c=[s];for(a++;a<n.length&&n[a].trim()!==""&&!/^(#{1,6})\s+/.test(n[a])&&!/^(\s*)```/.test(n[a])&&!/^\s*[-*]\s+/.test(n[a])&&!/^\s*\d+\.\s+/.test(n[a])&&!(n[a].includes("|")&&a+1<n.length&&zt(n[a+1]));)c.push(n[a]),a++;t.push(`<p>${an(c.join(" "))}</p>`)}return t.join(`
11
- `)}function zt(r){return r.includes("-")?/^[\s|:-]+$/.test(r):!1}function qn(r){let e=r.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(n=>n.trim())}function wr(r){return qn(r).map(e=>{let n=e.startsWith(":"),t=e.endsWith(":");return n&&t?"center":t?"right":n?"left":null})}function _r(r,e,n){let t=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=r.map((o,i)=>`<th${t(i)}>${an(o)}</th>`).join(""),s=n.map(o=>`<tr>${o.map((c,l)=>`<td${t(l)}>${an(c)}</td>`).join("")}</tr>`).join(`
12
- `);return`<table>
13
- <thead><tr>${a}</tr></thead>
14
- <tbody>
15
- ${s}
16
- </tbody>
17
- </table>`}function an(r){let e=rn(r);return e=e.replace(/`([^`\n]+)`/g,(n,t)=>`<code>${t}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,t,a)=>`<a href="${Wt(a)}">${t}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(n,t)=>`<strong>${t}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(n,t,a)=>`${t}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(n,t,a)=>`${t}<em>${a}</em>`),e}function rn(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Wt(r){return r.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var jr={publisher:"kanonak.org",package_:"core-rdf",name:"label"};function Je(r){return typeof r=="object"&&r!==null&&r.kind==="raw-string"}var Ce=class extends Error{},gn=class{constructor(e,n,t=new Map){this.resolver=e;this.catalog=n;this.fragments=t}resolver;catalog;fragments;async evaluate(e,n){switch(e.kind){case"string-literal":return e.value;case"integer-literal":return e.value;case"decimal-literal":return e.value;case"boolean-literal":return e.value;case"uri-literal":return{...e.refTo};case"var-ref":{if(!n.has(e.varName))throw new Ce(`Unbound variable "${e.varName}"`);return n.get(e.varName)}case"concat":{let t=[];for(let a of e.parts){let s=await this.evaluate(a,n);if(s!=null)if(Array.isArray(s))for(let o of s)t.push(o);else t.push(s)}return t}case"fallback":{let t=await this.evaluate(e.primary,n);return Yt(t)?t:this.evaluate(e.alternate,n)}case"when":return await this.evaluate(e.condition,n)===!0?this.evaluate(e.thenBuild,n):e.elseBuild?this.evaluate(e.elseBuild,n):void 0;case"is-set":{let t=await this.evaluate(e.check,n);return Yt(t)}case"property-read":{let t=await this.evaluate(e.source,n);return En(t,e.readProp)}case"traverse":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a=Rr(t,e.through),s=[];for(let o of a){let i=le(this.catalog,o),c=i.length>0?i:[await this.resolver.resolveSubject(o,this.catalog)];for(let l of c){if(!l)continue;let d=new Map(n);d.set("input",l);let f=await this.evaluate(e.step,d);if(f!=null&&Ge(f)!==""){s.push(Ge(f));break}}}return s.join("")}case"uri-name":{let t=await this.evaluate(e.source,n);return sn(t)?t.name:t instanceof x?t.subject.name:t instanceof Y?t.name:t instanceof D?t.name??"":void 0}case"uri-publisher":{let t=await this.evaluate(e.source,n);return Gn(t)?.publisher}case"uri-package":{let t=await this.evaluate(e.source,n);return Gn(t)?.package_}case"uri-version":{let t=await this.evaluate(e.source,n);return Gn(t)?.version}case"subject-uri":{let t=await this.evaluate(e.source,n);if(t instanceof Y){let a=t.namespace??"",s=t.name??"";return!a||!s?void 0:`${a}/${s}`}if(t instanceof x){let a=t.subject,s=a.version;return s&&typeof s.major=="number"?`${a.publisher}/${a.package_}@${s.major}.${s.minor}.${s.patch}/${a.name}`:`${a.publisher}/${a.package_}/${a.name}`}return}case"display-label":{let t=await this.resolver.resolveSubject({...e.labelTarget},this.catalog);return t?En(t,e.labelSource):void 0}case"resolve-ref":{let t=await this.evaluate(e.source,n);return t instanceof Y?t:t instanceof x?await this.resolver.resolveSubject(t.subject,this.catalog):sn(t)?await this.resolver.resolveSubject(t,this.catalog):void 0}case"normalize":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return e.normKind==="trim-end"?a.replace(/[\s\r\n]+$/u,""):e.normKind==="to-upper"?a.toUpperCase():e.normKind==="to-lower"?a.toLowerCase():e.normKind==="first-char"?a.length===0?"":a.charAt(0):a}case"unescaped-string":{let t=await this.evaluate(e.source,n);return{kind:"raw-string",value:t==null?"":Ge(t)}}case"render-markdown":{let t=await this.evaluate(e.source,n);if(!(t instanceof Ie))return;let a;for(let o of t.statement){let i=Wn(o);if(i&&ie(i,e.readProp)){a=o;break}}if(!(a instanceof De)){let o=En(t,e.readProp);return o==null?void 0:Ge(o)}let s=await this.renderMarkdownLinks(a);return e.format==="html"?mn(s):s}case"build-ast-node":{let t={kind:e.astClass.name};for(let a of e.set){let s=await this.evaluate(a.value,n);if(s==null||Array.isArray(s)&&s.length===0)continue;let o=a.field.name;Lr.has(o)&&(Array.isArray(s)&&s.every(i=>Xt(i))?s=s.map(i=>Qt(i)).join(""):Xt(s)&&(s=Qt(s))),t[o]=s}return t}case"call-fragment":{let t=this.fragments.get(e.fragmentKey);if(!t)throw new Ce(`ExpressionFragment ${e.fragmentKey} not found in registry`);return this.evaluate(t,n)}case"join":return(await this.evaluateList(e.source,n)).map(a=>a==null?"":Ge(a)).join(e.separator);case"count":return(await this.evaluateList(e.source,n)).length;case"sum":{let t=await this.evaluateList(e.source,n),a=0;for(let s of t)a+=be(s,"Sum");return a}case"min":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Min on an empty list is undefined; guard with IsSet");let a=be(t[0],"Min");for(let s=1;s<t.length;s++){let o=be(t[s],"Min");o<a&&(a=o)}return a}case"max":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Max on an empty list is undefined; guard with IsSet");let a=be(t[0],"Max");for(let s=1;s<t.length;s++){let o=be(t[s],"Max");o>a&&(a=o)}return a}case"average":{let t=await this.evaluateList(e.source,n);if(t.length===0)throw new Ce("Average on an empty list is undefined; guard with IsSet");let a=0;for(let s of t)a+=be(s,"Average");return a/t.length}case"for-each":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"list-map":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s)),a.push(await this.evaluate(e.mapBody,o))}return a}case"filter":{let t=await this.evaluateList(e.source,n),a=[];for(let s of t){let o=new Map(n);o.set(e.loopVar,Ke(s)),await this.evaluate(e.predicate,o)===!0&&a.push(s)}return a}case"partition-by":{let t=await this.evaluateList(e.source,n),a=new Map,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,Ke(o));let c=await this.evaluate(e.partitionKey,i),l=ea(c),d=a.get(l);d||(d={kind:"Partition",key:c,members:[]},a.set(l,d),s.push(l)),d.members.push(o)}return s.map(o=>a.get(o))}case"distinct-by":{let t=await this.evaluateList(e.source,n),a=new Set,s=[];for(let o of t){let i=new Map(n);i.set(e.loopVar,Ke(o));let c=await this.evaluate(e.distinctKey,i),l=ea(c);a.has(l)||(a.add(l),s.push(o))}return s}case"all-statements":{let t=await this.evaluate(e.source,n);return t instanceof Ie?t.statement:[]}case"statement-predicate":{let t=await this.evaluate(e.source,n);if(zn(t)){let a=t.predicate;if(a instanceof x)return a}return}case"statement-value":{let t=await this.evaluate(e.source,n);return zn(t)?Pr(t):void 0}case"date-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a?Cr(a,e.format):""}case"number-format":{let t=await this.evaluate(e.source,n),a=t==null?"":Ge(t);return a.trim()?Tr(a,e.style,e.fractionDigits,e.currencyCode):""}case"add":{let t=be(await this.evaluate(e.left,n),"Add"),a=be(await this.evaluate(e.right,n),"Add");return t+a}case"subtract":{let t=be(await this.evaluate(e.left,n),"Subtract"),a=be(await this.evaluate(e.right,n),"Subtract");return t-a}case"multiply":{let t=be(await this.evaluate(e.left,n),"Multiply"),a=be(await this.evaluate(e.right,n),"Multiply");return t*a}case"divide":{let t=be(await this.evaluate(e.left,n),"Divide"),a=be(await this.evaluate(e.right,n),"Divide");if(a===0)throw new Ce("Divide by zero; guard with When");return t/a}case"reverse":{if(e.source.kind==="reverse")return this.evaluate(e.source.source,n);let t=await this.evaluateReverseIterator(e.source,n);return t!==void 0?t:[...await this.evaluateList(e.source,n)].reverse()}case"windowed-map":{let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=0;s+e.windowSize<=t.length;s++){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}case"pairwise-map":{let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=0;s+1<t.length;s++){let o=new Map(n);o.set(e.firstVar,Ke(t[s])),o.set(e.secondVar,Ke(t[s+1]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}case"scan":{let t=await this.evaluateList(e.source,n);if(t.length===0)return[];let a=await this.evaluate(e.initialState,n),s=[];for(let o of t){let i=new Map(n);i.set(e.stateVar,a),i.set(e.elementVar,Ke(o));let c=await this.evaluate(e.accumulate,i);s.push(c),a=c}return s}case"list-item-at":{let t=await this.evaluateList(e.source,n),a=await this.evaluate(e.itemIndex,n);return typeof a!="number"||!Number.isInteger(a)||a<0||a>=t.length?void 0:t[a]}case"equals":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return Jt(t,a)}case"greater-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>a}case"less-than":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<a}case"greater-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t>=a}case"less-than-or-equal":{let t=await this.evaluate(e.left,n),a=await this.evaluate(e.right,n);return typeof t!="number"||typeof a!="number"?!1:t<=a}case"not":{let t=await this.evaluate(e.operand,n);return t===!0?!1:t===!1?!0:void 0}case"and":{for(let t of e.operands)if(await this.evaluate(t,n)!==!0)return!1;return!0}case"or":{for(let t of e.operands)if(await this.evaluate(t,n)===!0)return!0;return!1}case"contains":{let t=await this.evaluateList(e.haystack,n),a=await this.evaluate(e.needle,n);for(let s of t)if(Jt(s,a))return!0;return!1}case"abs":{let t=be(await this.evaluate(e.value,n),"Abs");return Math.abs(t)}case"negate":return-be(await this.evaluate(e.value,n),"Negate");case"is-reference":{let t=await this.evaluate(e.check,n);return t instanceof x||t instanceof Y}case"is-embedded":return await this.evaluate(e.check,n)instanceof D;case"is-list":{let t=await this.evaluate(e.check,n);return Array.isArray(t)}case"is-string":return typeof await this.evaluate(e.check,n)=="string";case"is-number":return typeof await this.evaluate(e.check,n)=="number";case"is-boolean":return typeof await this.evaluate(e.check,n)=="boolean";case"statement-object":{let t=await this.evaluate(e.source,n);if(!zn(t))return;let a=t;return a instanceof Z||a instanceof ge||a instanceof fe||a instanceof H||a instanceof ee||a instanceof B?a.object:void 0}case"let":{let t=await this.evaluate(e.bindValue,n),a=new Map(n);return a.set(e.bindName,t),this.evaluate(e.body,a)}case"get-statement-by-name":{let t=await this.evaluate(e.inSubject,n),a=await this.evaluate(e.byName,n);if(!(t instanceof Ie)||typeof a!="string")return;for(let s of t.statement)if(s.predicate?.subject?.name===a)return s;return}default:{let t=e;throw new Ce("Unknown expression kind")}}}async renderMarkdownLinks(e){let n=e.object,t="",a=0;for(let s of e.links){if(t+=n.slice(a,s.startOffset),s.target){let o=s.target.subject,i=s.displayText??await this.resolveLabel(o)??o.name;t+=`[${i}](${lt(o)})`}else t+=s.displayText??s.reference;a=s.endOffset}return t+=n.slice(a),t}async resolveLabel(e){let n=await this.resolver.resolveSubject(e,this.catalog);if(!n)return;let t=En(n,jr);return typeof t=="string"?t:void 0}async evaluateList(e,n){let t=await this.evaluate(e,n);return t==null?[]:Array.isArray(t)?t:[t]}async evaluateReverseIterator(e,n){if(e.kind==="pairwise-map"){let t=await this.evaluateList(e.source,n);if(t.length<2)return[];let a=[];for(let s=t.length-1;s>=1;s--){let o=new Map(n);o.set(e.firstVar,Ke(t[s-1])),o.set(e.secondVar,Ke(t[s]));let i=await this.evaluate(e.pairBody,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="for-each"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,Ke(t[s]));let i=await this.evaluate(e.emit,o);if(i!=null)if(Array.isArray(i))for(let c of i)a.push(c);else a.push(i)}return a}if(e.kind==="list-map"){let t=await this.evaluateList(e.source,n),a=[];for(let s=t.length-1;s>=0;s--){let o=new Map(n);o.set(e.loopVar,Ke(t[s])),a.push(await this.evaluate(e.mapBody,o))}return a}if(e.kind==="windowed-map"){let t=await this.evaluateList(e.source,n);if(t.length<e.windowSize)return[];let a=[];for(let s=t.length-e.windowSize;s>=0;s--){let o=t.slice(s,s+e.windowSize),i=new Map(n);i.set(e.windowVar,o);let c=await this.evaluate(e.windowBody,i);if(c!=null)if(Array.isArray(c))for(let l of c)a.push(l);else a.push(c)}return a}}};function En(r,e){if(r instanceof Ie)return Kr(r,e);if(Er(r))return ie(e,u.key)?r.key:ie(e,u.members)?r.members:void 0}function Kr(r,e){for(let n of r.statement){let t=Wn(n);if(!(!t||!ie(t,e))&&(n instanceof Z||n instanceof ge||n instanceof fe||n instanceof H||n instanceof ee||n instanceof B))return n.object}}function Rr(r,e){let n=[];for(let t of r.statement){let a=Wn(t);if(!(!a||!ie(a,e))){if(t instanceof H)n.push(t.object.subject);else if(t instanceof B)for(let s of t.object)s instanceof x&&n.push(s.subject)}}return n}function Wn(r){return r.predicate?.subject}function Ge(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(r instanceof Ie)return r.name??"";if(r instanceof x)return r.subject.name;if(sn(r))return r.name;let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function Ke(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Ie)&&!(r instanceof x)&&!(r instanceof D)&&"value"in r?r.value:r}function Yt(r){return r==null?!1:typeof r=="string"||Array.isArray(r)?r.length>0:typeof r=="boolean"?r===!0:!0}function sn(r){return typeof r=="object"&&r!==null&&typeof r.publisher=="string"&&typeof r.package_=="string"&&typeof r.name=="string"}function Er(r){return typeof r=="object"&&r!==null&&r.kind==="Partition"&&Array.isArray(r.members)}function be(r,e){if(typeof r=="number"&&Number.isFinite(r))return r;throw new Ce(`${e} requires numeric elements; got ${xr(r)}`)}function Gn(r){if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);return n<0||t<0?void 0:{publisher:e.substring(0,n),package_:e.substring(n+1,t),version:e.substring(t+1),name:r.name??""}}if(r instanceof x){let e=r.subject,n=e.version;return{publisher:e.publisher,package_:e.package_,version:n&&typeof n.major=="number"?`${n.major}.${n.minor}.${n.patch}`:"",name:e.name}}if(sn(r))return{publisher:r.publisher,package_:r.package_,version:"",name:r.name}}var Lr=new Set(["stringValue","text","rawContent","key","propertyKey","linkLabel"]);function Xt(r){return typeof r=="string"||typeof r=="number"||typeof r=="boolean"||Je(r)}function Qt(r){return Je(r)?r.value:String(r)}function xr(r){return r===void 0?"undefined":r===null?"null":Array.isArray(r)?`array(${r.length})`:typeof r}function Cr(r,e){let n=new Date(r);if(isNaN(n.getTime()))return"";let t=n.getUTCFullYear(),a=["January","February","March","April","May","June","July","August","September","October","November","December"][n.getUTCMonth()],s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][n.getUTCMonth()],o=n.getUTCDate(),i=(c,l=2)=>String(c).padStart(l,"0");switch(e){case"iso-date":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}`;case"iso-datetime":return`${t}-${i(n.getUTCMonth()+1)}-${i(o)}T${i(n.getUTCHours())}:${i(n.getUTCMinutes())}:${i(n.getUTCSeconds())}Z`;case"short-date":return`${s} ${o}`;case"long-date":return`${a} ${o}, ${t}`;case"year":return String(t);case"month-year":return`${a} ${t}`}}var Ur={USD:"$",EUR:"\u20AC",GBP:"\xA3",JPY:"\xA5"},Or={decimal:0,currency:0,compact:0,percent:2,"basis-points":4};function Ir(r,e){if(e===0)return r;let n=r.startsWith("-"),t=n?r.slice(1):r,a=t.indexOf("."),s=a===-1?t:t.slice(0,a),o=a===-1?"":t.slice(a+1),i=s+o,c=s.length+e,l;return c<=0?l=`0.${"0".repeat(-c)}${i}`:c>=i.length?l=i+"0".repeat(c-i.length):l=`${i.slice(0,c)}.${i.slice(c)}`,l=l.replace(/^0+(?=\d)/,""),n&&/[1-9]/.test(l)?`-${l}`:l}function Fr(r){let e=r.startsWith("-"),n=e?r.slice(1):r,t=n.indexOf("."),a=t===-1?n:n.slice(0,t),s=t===-1?"":n.slice(t);return`${e?"-":""}${a.replace(/\B(?=(\d{3})+(?!\d))/g,",")}${s}`}function Tr(r,e,n,t){let a=Number(r.trim());if(!Number.isFinite(a))return"";let s=/e/i.test(r.trim())?a.toFixed(20).replace(/0+$/,""):r.trim();if(e==="compact"){let i=Math.abs(a),c=[[1e12,"T"],[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[l,d]of c)if(i>=l){let f=a/l;return`${n===void 0?String(Number(f.toFixed(1))):f.toFixed(n)}${d}`}return n===void 0?String(a):a.toFixed(n)}let o=Ir(s,Or[e]??0);switch(n!==void 0&&(o=Number(o).toFixed(n)),e){case"percent":return`${o}%`;case"basis-points":return`${o} bp`;case"currency":{let i=(t??"USD").toUpperCase(),c=Ur[i]??`${i} `,l=o.startsWith("-");return`${l?"-":""}${c}${Fr(l?o.slice(1):o)}`}default:return o}}function Jt(r,e){if(r==null||e===void 0||e===null)return!1;if(r===e)return!0;let n=typeof r=="object"&&"value"in r?r.value:void 0,t=typeof e=="object"&&"value"in e?e.value:void 0,a=n??r,s=t??e,o=Zt(r),i=Zt(e);return o&&i?o.publisher===i.publisher&&o.package_===i.package_&&o.name===i.name:typeof a=="string"&&typeof s=="string"||typeof a=="number"&&typeof s=="number"||typeof a=="boolean"&&typeof s=="boolean"?a===s:!1}function Zt(r){if(r instanceof x){let e=r.subject;return{publisher:e.publisher,package_:e.package_,name:e.name}}if(r instanceof Y){let e=r.namespace??"",n=e.indexOf("/"),t=e.indexOf("@",n+1);if(n<0)return;let a=e.substring(0,n),s=t>=0?e.substring(n+1,t):e.substring(n+1);return{publisher:a,package_:s,name:r.name??""}}if(sn(r))return{publisher:r.publisher,package_:r.package_,name:r.name}}function zn(r){return r instanceof Z||r instanceof ge||r instanceof fe||r instanceof H||r instanceof ee||r instanceof B}function Pr(r){return r instanceof Z||r instanceof ge||r instanceof fe?String(r.object??""):r instanceof H?r.object?.subject?.name??"":r instanceof ee?"[embedded]":r instanceof B?(r.object??[]).map(n=>{if(n instanceof x)return n.subject.name;let t=n.name;if(t&&t.length>0)return t;let a=n.value;return typeof a=="string"||typeof a=="number"||typeof a=="boolean"?String(a):"[embedded]"}).join(", "):""}function ea(r){if(r===void 0)return"\0undef";if(r===null)return"\0null";if(typeof r=="string")return`s:${r}`;if(typeof r=="number")return`n:${r}`;if(typeof r=="boolean")return`b:${r}`;if(r instanceof x){let e=r.subject;return`r:${e.publisher}/${e.package_}/${e.name}`}if(r instanceof Ie){let e=r.name??"";return`k:${r.namespace??""}/${e}`}return sn(r)?`u:${r.publisher}/${r.package_}/${r.name}`:`o:${JSON.stringify(r)}`}var Ln=class{constructor(e,n,t){this.repository=e;this.parser=n;this.objectParser=t}repository;parser;objectParser;cache=new Map;async resolveSubject(e,n){let t=Be(n,e);if(t)return t;let a=e.version,s=a&&typeof a.major=="number"?`@${a.major}.${a.minor}.${a.patch}`:"",o=`${e.publisher}/${e.package_}${s}`,i=this.cache.get(o);if(!i){let l=await this.repository.getDocumentsByNamespaceAsync(e.publisher,e.package_);if(l.length===0)return;let d=a&&typeof a.major=="number"?l.find(p=>{let m=p.metadata?.namespace_?.version;return m&&m.major===a.major&&m.minor===a.minor&&m.patch===a.patch})??l[0]:l[0],f=new gt(d,this.repository);i=await this.objectParser.parseKanonaks(f),this.cache.set(o,i)}let c=Be(i,e);if(c)return c;for(let l of i)if(l instanceof Y&&l.name===e.name)return l}};var xn=class{byLang=new Map;constructor(e){for(let n of e){if(!n.language)continue;let t=[];for(let a of n.rules){if(!a.tokenClass||!a.pattern)continue;let s;try{s=new RegExp(a.pattern,"y")}catch{continue}t.push({tokenClass:a.tokenClass,re:s})}this.byLang.set(n.language,t)}}has(e){return this.byLang.has(e)}highlight(e,n){let t=this.byLang.get(e);return!t||t.length===0?rn(n):n.split(`
18
- `).map(a=>this.highlightLine(a,t)).join(`
19
- `)}highlightLine(e,n){let t="",a=0;for(;a<e.length;){let s=!1;for(let o of n){o.re.lastIndex=a;let i=o.re.exec(e);if(i&&i[0].length>0){t+=`<span class="kan-tok-${o.tokenClass}">${rn(i[0])}</span>`,a+=i[0].length,s=!0;break}}s||(t+=rn(e[a]),a++)}return t}};var Tn={publisher:"kanonak.org",package_:"derivation",name:"look"},Pn={publisher:"kanonak.org",package_:"derivation",name:"tokens"},xe={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},Yn={publisher:"kanonak.org",package_:"core-rdf",name:"label"},na={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},Vr={publisher:"kanonak.org",package_:"core-rdf",name:"range"},Ar={publisher:"kanonak.org",package_:"core-rdf",name:"Class"},Mr={publisher:"kanonak.org",package_:"core-owl",name:"Class"},Nr={publisher:"kanonak.org",package_:"look",name:"Hero"},Dr={publisher:"kanonak.org",package_:"look",name:"PropertyList"},Br={publisher:"kanonak.org",package_:"look",name:"PropertyTable"},Hr={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},qr={publisher:"kanonak.org",package_:"look",name:"ChipRow"},Gr={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},zr={publisher:"kanonak.org",package_:"look",name:"ReferencedBy"},Wr={publisher:"kanonak.org",package_:"look",name:"Instances"},ta={publisher:"kanonak.org",package_:"look",name:"Markdown"},Yr={publisher:"kanonak.org",package_:"look",name:"NavGroup"},Xr={publisher:"kanonak.org",package_:"look",name:"nav"},Xn={publisher:"kanonak.org",package_:"look",name:"NavLink"},Qr={publisher:"kanonak.org",package_:"look",name:"footer"},Jr={publisher:"kanonak.org",package_:"look",name:"text"},Zr={publisher:"kanonak.org",package_:"look",name:"links"},aa={publisher:"kanonak.org",package_:"look",name:"target"},es={publisher:"kanonak.org",package_:"look",name:"ResourceGrid"},ns={publisher:"kanonak.org",package_:"look",name:"Timeline"},ts={publisher:"kanonak.org",package_:"look",name:"VersionDiff"},as={publisher:"kanonak.org",package_:"look",name:"Figure"},rs={publisher:"kanonak.org",package_:"look",name:"Diagram"},ss={publisher:"kanonak.org",package_:"look",name:"facets"},os={publisher:"kanonak.org",package_:"look",name:"relation"},is={publisher:"kanonak.org",package_:"look",name:"encode"},cs={publisher:"kanonak.org",package_:"look",name:"cluster"},ls={publisher:"kanonak.org",package_:"look",name:"connector"},us={publisher:"kanonak.org",package_:"look",name:"channels"},ds={publisher:"kanonak.org",package_:"look",name:"mapPath"},fs={publisher:"kanonak.org",package_:"look",name:"to"},ps={publisher:"kanonak.org",package_:"look",name:"mark"},ms={publisher:"kanonak.org",package_:"look",name:"expand"},gs={publisher:"kanonak.org",package_:"look",name:"edges"},ra={publisher:"kanonak.org",package_:"look",name:"nodeTier"},ks={publisher:"kanonak.org",package_:"look",name:"diagramTier"},hs={publisher:"kanonak.org",package_:"look",name:"nodeNote"},bs={publisher:"kanonak.org",package_:"look",name:"Sequence"},ys={publisher:"kanonak.org",package_:"look",name:"numbered"},vs={publisher:"kanonak.org",package_:"look",name:"EntityRelationship"},$s={publisher:"kanonak.org",package_:"core-owl",name:"SymmetricProperty"},Ss={publisher:"kanonak.org",package_:"core-owl",name:"FunctionalProperty"},ws={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},_s={publisher:"kanonak.org",package_:"look",name:"edgeLabel"},js={publisher:"kanonak.org",package_:"look",name:"labelEdges"},Ks={publisher:"kanonak.org",package_:"look",name:"edgeValue"},Rs={publisher:"kanonak.org",package_:"look",name:"figureTitle"},Es={publisher:"kanonak.org",package_:"look",name:"titlePosition"},Ls=`(function(){
20
- if(window.__kanDiagramZoom)return;window.__kanDiagramZoom=1;
21
- var TIERS=['chip','icon','card','full'];
22
- var css='.kan-dgm-tier[hidden]{display:none}.kan-dgm-tiers{position:relative}'
23
- +'.kan-dgm-tiers>.kan-dgm-btn{opacity:0;transition:opacity .12s}.kan-dgm-tiers:hover>.kan-dgm-btn,.kan-dgm-btn:focus{opacity:1}'
24
- +'#kan-dgm-modal{position:fixed;inset:0;z-index:9999;display:none;background:rgba(0,0,0,.85);cursor:grab}'
25
- +'#kan-dgm-stage{position:absolute;top:50%;left:50%}'
26
- +'#kan-dgm-bar{position:fixed;top:14px;left:50%;transform:translateX(-50%);display:flex;gap:9px;align-items:center;font:12px sans-serif;color:#cbd5e1;background:rgba(12,18,32,.92);border:1px solid #1e293b;border-radius:999px;padding:7px 14px;user-select:none}'
27
- +'#kan-dgm-bar .pip{width:9px;height:9px;border-radius:50%;background:#334155;cursor:pointer}'
28
- +'#kan-dgm-bar .pip.on{background:#38bdf8}'
29
- +'#kan-dgm-lbl{min-width:32px;text-transform:capitalize}';
30
- var sty=document.createElement('style');sty.textContent=css;(document.head||document.documentElement).appendChild(sty);
31
- var S={cont:null,mode:'snap',tier:1,z:1,x:0,y:0,drag:0,sx:0,sy:0,lock:0};
32
- function el(id){return document.getElementById(id);}
33
- function modal(){var m=el('kan-dgm-modal');if(m)return m;
34
- m=document.createElement('div');m.id='kan-dgm-modal';
35
- var st=document.createElement('div');st.id='kan-dgm-stage';m.appendChild(st);
36
- var bar=document.createElement('div');bar.id='kan-dgm-bar';
37
- var lbl=document.createElement('span');lbl.id='kan-dgm-lbl';bar.appendChild(lbl);
38
- for(var i=0;i<4;i++){(function(i){var p=document.createElement('span');p.className='pip';p.title=TIERS[i];p.addEventListener('click',function(e){e.stopPropagation();setTier(i);});bar.appendChild(p);})(i);}
39
- var h=document.createElement('span');h.textContent='scroll: zoom \\u00b7 drag: pan \\u00b7 esc';h.style.cssText='margin-left:6px;color:#64748b';bar.appendChild(h);
40
- m.appendChild(bar);m.addEventListener('click',function(e){if(e.target===m)close();});document.body.appendChild(m);return m;}
41
- function apply(){var st=el('kan-dgm-stage');if(st)st.style.transform='translate(calc(-50% + '+S.x+'px),calc(-50% + '+S.y+'px)) scale('+S.z+')';}
42
- function updBar(){var b=el('kan-dgm-bar');if(!b)return;var geo=S.mode==='geo';var ps=b.querySelectorAll('.pip');for(var i=0;i<ps.length;i++){ps[i].style.display=geo?'none':'';ps[i].className='pip'+(i===S.tier?' on':'');}el('kan-dgm-lbl').textContent=geo?'zoom':TIERS[S.tier];}
43
- function sizeVisible(){var c=S.cont;if(!c||S.mode==='geo')return;var svg=c.querySelector('.kan-dgm-tier:not([hidden]) svg');if(svg){var vb=(svg.getAttribute('viewBox')||'0 0 800 600').split(' ');var w=parseFloat(vb[2])||800;svg.style.width=Math.min(w,window.innerWidth*0.92)+'px';svg.style.height='auto';svg.style.display='block';}apply();}
44
- function setTier(i){i=Math.max(0,Math.min(3,i));S.tier=i;var c=S.cont;if(!c)return;var ts=c.querySelectorAll('.kan-dgm-tier');for(var j=0;j<ts.length;j++){if(ts[j].getAttribute('data-tier')===TIERS[i])ts[j].removeAttribute('hidden');else ts[j].setAttribute('hidden','');}sizeVisible();updBar();}
45
- function uniq(root){var seq=(window.__kanMk=(window.__kanMk||0)+1);var map={};var mk=root.querySelectorAll('marker[id]');for(var i=0;i<mk.length;i++){var o=mk[i].getAttribute('id');var n=o+'_z'+seq;map[o]=n;mk[i].setAttribute('id',n);}var all=root.querySelectorAll('[marker-end],[marker-start],[marker-mid]');for(var j=0;j<all.length;j++){(function(e){['marker-end','marker-start','marker-mid'].forEach(function(a){var v=e.getAttribute(a);if(!v)return;var mm=v.match(/url\\(#(.+?)\\)/);if(mm&&map[mm[1]])e.setAttribute(a,'url(#'+map[mm[1]]+')');});})(all[j]);}}
46
- function open(tiersEl){modal();var st=el('kan-dgm-stage');var c=tiersEl.cloneNode(true);uniq(c);var bb=c.querySelector('.kan-dgm-btn');if(bb&&bb.parentNode)bb.parentNode.removeChild(bb);st.innerHTML='';st.appendChild(c);S.cont=c;S.x=0;S.y=0;S.z=1;
47
- S.mode=c.getAttribute('data-geo')?'geo':'snap';
48
- var vis=c.querySelector('.kan-dgm-tier:not([hidden])');var t=vis?vis.getAttribute('data-tier'):'icon';S.tier=Math.max(0,TIERS.indexOf(t));
49
- el('kan-dgm-modal').style.display='block';
50
- if(S.mode==='geo'){var bw=c.getBoundingClientRect().width||600;S.z=Math.min(1.8,(window.innerWidth*0.9)/bw);if(!(S.z>0))S.z=1;}else sizeVisible();
51
- apply();updBar();}
52
- function close(){var m=el('kan-dgm-modal');if(m){m.style.display='none';el('kan-dgm-stage').innerHTML='';S.cont=null;}}
53
- document.addEventListener('wheel',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;e.preventDefault();
54
- if(S.mode==='geo'){S.z*=e.deltaY<0?1.15:1/1.15;S.z=Math.max(.2,Math.min(S.z,9));apply();return;}
55
- var n=Date.now();if(n-S.lock<200)return;S.lock=n;setTier(S.tier+(e.deltaY<0?1:-1));},{passive:false});
56
- document.addEventListener('mousedown',function(e){var m=el('kan-dgm-modal');if(!m||m.style.display==='none')return;S.drag=1;S.sx=e.clientX-S.x;S.sy=e.clientY-S.y;m.style.cursor='grabbing';});
57
- document.addEventListener('mousemove',function(e){if(!S.drag)return;S.x=e.clientX-S.sx;S.y=e.clientY-S.sy;apply();});
58
- document.addEventListener('mouseup',function(){S.drag=0;var m=el('kan-dgm-modal');if(m)m.style.cursor='grab';});
59
- document.addEventListener('keydown',function(e){if(e.key==='Escape')close();});
60
- function enhance(){var cs=document.querySelectorAll('.kan-dgm-tiers');for(var i=0;i<cs.length;i++){(function(c){if(c.__kz)return;c.__kz=1;
61
- var b=document.createElement('button');b.type='button';b.className='kan-dgm-btn';b.textContent='\\u2922';b.setAttribute('aria-label','Open and zoom');
62
- b.style.cssText='position:absolute;top:6px;right:6px;z-index:3;border:1px solid var(--kan-border,#333);background:var(--kan-bg-card,#111);color:var(--kan-text,#ccc);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:15px;line-height:1;padding:0';
63
- b.addEventListener('click',function(ev){ev.preventDefault();ev.stopPropagation();open(c);});c.appendChild(b);})(cs[i]);}}
64
- if(document.readyState!=='loading')enhance();else document.addEventListener('DOMContentLoaded',enhance);
65
- })();`,Me={chip:56,icon:120,card:240,full:420},xs=["chip","icon","card","full"],Cs={56:"chip",120:"icon",240:"card",420:"full"},pe=11,Us={publisher:"kanonak.org",package_:"look",name:"placement"},Os={publisher:"kanonak.org",package_:"look",name:"width"},Is=4,Fs={publisher:"kanonak.org",package_:"look",name:"StatRow"},Ts={publisher:"kanonak.org",package_:"look",name:"Horizon"},Ps={publisher:"kanonak.org",package_:"look",name:"PackageContents"},Qn={publisher:"kanonak.org",package_:"core-kanonak",name:"Package"},Vs={publisher:"kanonak.org",package_:"core-kanonak",name:"Publisher"},As={publisher:"kanonak.org",package_:"look",name:"FeaturedResource"},Ms={publisher:"kanonak.org",package_:"look",name:"PublisherPackages"},Ns={publisher:"kanonak.org",package_:"look",name:"packages"},Ds={publisher:"kanonak.org",package_:"code-grammars",name:"CodeGrammar"},Bs={publisher:"kanonak.org",package_:"code-grammars",name:"language"},Hs={publisher:"kanonak.org",package_:"code-grammars",name:"rule"},qs={publisher:"kanonak.org",package_:"code-grammars",name:"tokenClass"},Gs={publisher:"kanonak.org",package_:"code-grammars",name:"pattern"},zs={publisher:"kanonak.org",package_:"look",name:"Links"},Ws={publisher:"kanonak.org",package_:"link",name:"url"},Ys={publisher:"kanonak.org",package_:"link",name:"links"};var Xs={publisher:"kanonak.org",package_:"look",name:"Distribution"},Qs={publisher:"kanonak.org",package_:"look",name:"alphaPath"},Js={publisher:"kanonak.org",package_:"look",name:"betaPath"},Jn={publisher:"kanonak.org",package_:"look",name:"SectionHeading"},Zs={publisher:"kanonak.org",package_:"look",name:"SectionNav"},sa={publisher:"kanonak.org",package_:"look",name:"heading"},eo={publisher:"kanonak.org",package_:"look",name:"note"},no={publisher:"kanonak.org",package_:"look",name:"VersionDelta"},to={publisher:"kanonak.org",package_:"look",name:"TimePlot"},ao={publisher:"kanonak.org",package_:"look",name:"Details"},ro={publisher:"kanonak.org",package_:"look",name:"EmbeddedViews"},so={publisher:"kanonak.org",package_:"look",name:"ResourceCount"},oo={publisher:"kanonak.org",package_:"look",name:"counts"},io={publisher:"kanonak.org",package_:"look",name:"skip"},co={publisher:"kanonak.org",package_:"derivation",name:"derivations"},lo={publisher:"kanonak.org",package_:"look",name:"laneBy"},uo={publisher:"kanonak.org",package_:"look",name:"stats"},fo={publisher:"kanonak.org",package_:"look",name:"statPath"},po={publisher:"kanonak.org",package_:"look",name:"statLabel"},oa={publisher:"kanonak.org",package_:"look",name:"labelPath"},mo={publisher:"kanonak.org",package_:"look",name:"badgePath"},ia={publisher:"kanonak.org",package_:"look",name:"BarMeter"},go={publisher:"kanonak.org",package_:"look",name:"cellAs"},ko={publisher:"kanonak.org",package_:"look",name:"variants"},ho={publisher:"kanonak.org",package_:"look",name:"when"},bo={publisher:"kanonak.org",package_:"look",name:"property"},ca={publisher:"kanonak.org",package_:"look",name:"equals"},yo={publisher:"kanonak.org",package_:"look",name:"ResourceQuery"},vo={publisher:"kanonak.org",package_:"look",name:"ofClass"},$o={publisher:"kanonak.org",package_:"look",name:"direction"},So={publisher:"kanonak.org",package_:"look",name:"limit"},Cn={publisher:"kanonak.org",package_:"look",name:"orderBy"},la={publisher:"kanonak.org",package_:"look",name:"track"},kn={publisher:"kanonak.org",package_:"look",name:"metricPath"},Zn={publisher:"kanonak.org",package_:"look",name:"hueBy"},ua={publisher:"kanonak.org",package_:"look",name:"lowerPath"},da={publisher:"kanonak.org",package_:"look",name:"upperPath"},wo={publisher:"kanonak.org",package_:"look",name:"axisMin"},_o={publisher:"kanonak.org",package_:"look",name:"axisMax"},jo={publisher:"kanonak.org",package_:"look",name:"valueLabel"};var fa={publisher:"kanonak.org",package_:"look",name:"semanticSvg"},Ko={publisher:"kanonak.org",package_:"look",name:"tierChip"},Ro={publisher:"kanonak.org",package_:"look",name:"tierIcon"},Eo={publisher:"kanonak.org",package_:"look",name:"tierCard"},Lo={publisher:"kanonak.org",package_:"look",name:"tierFull"},Ne={publisher:"kanonak.org",package_:"core-rdf",name:"type"},rt={publisher:"kanonak.org",package_:"core-rdf",name:"subClassOf"},pa=6,et={publisher:"kanonak.org",package_:"look",name:"bands"},xo={publisher:"kanonak.org",package_:"look",name:"title"},Co={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Uo={publisher:"kanonak.org",package_:"look",name:"subtitle"},ma={publisher:"kanonak.org",package_:"look",name:"badges"},ke={publisher:"kanonak.org",package_:"look",name:"source"},Oo={publisher:"kanonak.org",package_:"look",name:"via"},Io={publisher:"kanonak.org",package_:"look",name:"size"},Fo={publisher:"kanonak.org",package_:"look",name:"icon"},To={publisher:"kanonak.org",package_:"look",name:"avatar"},Po={publisher:"kanonak.org",package_:"look",name:"contents"},Vo={publisher:"kanonak.org",package_:"look",name:"transitive"},Ao={publisher:"kanonak.org",package_:"look",name:"chips"},ga={publisher:"kanonak.org",package_:"look",name:"entries"},Mo={publisher:"kanonak.org",package_:"look",name:"urlForm"},An=class r{constructor(e){this.catalog=e}catalog;linkMode="single-publisher";setLinkMode(e){return this.linkMode=e,this}expressionFailureList=[];expressionFailureSeen=new Set;expressionFailures(){return this.expressionFailureList}noteExpressionFailure(e,n){let t=n instanceof Error?n.message:String(n),a=`${e}\0${t}`;this.expressionFailureSeen.has(a)||(this.expressionFailureSeen.add(a),this.expressionFailureList.push({carrier:e,reason:t}));let s=o=>o.replace(/-{2,}/g,"\u2013").replace(/-$/,"");return`<!-- LookRenderer: expression carrier "${s(e)}" did not compile: ${s(t)} Nothing is rendered for it. See /.well-known/kanonak-render (Expression carriers). -->`}get publisherFirst(){return this.linkMode==="open-world"}linkBase(e){return this.publisherFirst?`/${e}`:""}resourceHref(e,n,t="="){return ht.formatResourceUrl(e,t,{contextPublisher:n,...this.publisherFirst?{publisherFirst:!0}:{}})}packageHref(e,n,t){return`${this.linkBase(e)}/${n}${t?`/${t}`:""}`}publisherHref(e){return`${this.linkBase(e)}/`}_codeHighlighter;findCascadedLook(e){let n=Bo(e)?void 0:Un(e);return n?{declaration:n,sourceClass:{publisher:ue(e),package_:this.uriOf(e).package_,name:e.name}}:this.lookFromTypeRefs(ye(e))}lookFromTypeRefs(e){let n=new Set,t=[...e];for(;t.length>0;){let s=t.shift().subject,o=te(s);if(n.has(o))continue;n.add(o);let i=le(this.catalog,s);for(let c of i){let l=Un(c);if(l)return{declaration:l,sourceClass:{publisher:s.publisher,package_:s.package_,name:s.name}}}for(let c of i)for(let l of In(c))t.push(l)}if(!n.has(te(xe)))for(let a of le(this.catalog,xe)){let s=Un(a);if(s)return{declaration:s,sourceClass:{...xe}}}}matchingVariants(e){let n=this.findCascadedLook(e);if(!n)return[];let t=this.gatherValueItems(J(n.declaration,ko)).filter(i=>i instanceof D);if(t.length===0)return[];let a=re(this.catalog,n.sourceClass),s={namespace:a?.namespace??"",name:a?.name??n.sourceClass.name},o=[];for(let i of t){let c=this.readEmbeddedCarrier(i,ho);if(!c)continue;let l=q(c,bo);if(!l)continue;let d=q(c,ca);if(d){let p=J(e,l);this.gatherValueItems(p).filter(g=>g instanceof x).some(g=>te(g.subject)===te(d))&&o.push({variant:i,declaredBy:s});continue}let f=ae(c,ca);f!==void 0&&this.readPropertyValueText(e,l)===f&&o.push({variant:i,declaredBy:s})}return o}findCascadedTokens(e){let n=this.explainCascadedTokens(e),t=new Map;for(let[a,s]of n)t.set(a,s.value);return t}explainCascadedTokens(e){let n=new Map,t=(i,c,l)=>{for(let[d,f]of No(i))n.has(d)||n.set(d,{value:f,sourceNamespace:l?.namespace??i.namespace??"",sourceName:l?.name??i.name,level:c})};t(e,"instance");for(let{variant:i,declaredBy:c}of this.matchingVariants(e))t(i,"variant",c);let a=new Set,s=ye(e);for(;s.length>0;){let i=s.shift(),c=te(i.subject);if(a.has(c))continue;a.add(c);let l=c===te(xe)?"resource-floor":"class",d=le(this.catalog,i.subject);if(d.length!==0)for(let f of d){t(f,l);for(let p of In(f))s.push(p)}}let o=ue(e);if(o){let i=this.publisherSubject(o);i!==e&&t(i,"publisher")}if(!a.has(te(xe))){let i=le(this.catalog,xe);for(let c of i)t(c,"resource-floor")}return n}async renderSvg(e){let n=G(this.catalog,e).label,t=(n.trim().charAt(0)||"?").toUpperCase(),a=`${e.namespace??""}/${e.name}`,s=this.collectCascadedSvgTiers(e),o=new Map([["input",e],["label",n],["firstLetter",t],["uri",a],["resourceKey",e.name]]),i=await this.evaluateTier(s.tierChip,o),c=await this.evaluateTier(s.tierIcon,o),l=await this.evaluateTier(s.tierCard,o),d=await this.evaluateTier(s.tierFull,o),p=[...this.findCascadedTokens(e)].map(([m,g])=>`--kan-${m}: ${g};`).join(" ");return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" style="${Ue(p)}">
66
- <style>
67
- .tier-chip,.tier-icon,.tier-card{display:none}
68
- .tier-full{display:block}
69
- @media (max-width:400px){.tier-full{display:none}.tier-card{display:block}}
70
- @media (max-width:160px){.tier-card{display:none}.tier-icon{display:block}}
71
- @media (max-width:60px){.tier-icon{display:none}.tier-chip{display:block}}
72
- </style>
73
- <g class="tier-chip">${i}</g>
74
- <g class="tier-icon">${c}</g>
75
- <g class="tier-card">${l}</g>
76
- <g class="tier-full">${d}</g>
77
- </svg>`}resolverInstance;expressionResolver(){if(!this.resolverInstance){let e=new ct,n=new it(e);this.resolverInstance=new Ln(n,e,new Sn(e))}return this.resolverInstance}async evaluateTier(e,n){if(!e)return"";let t;try{t=Pe(e,"semanticSvg-tier",{catalog:this.catalog,depth:0})}catch(o){return this.noteExpressionFailure("look.semanticSvg tier",o)}let a=new gn(this.expressionResolver(),this.catalog);if(t.kind==="concat"){let o=[];for(let i of t.parts){let c=await a.evaluate(i,n);o.push(ha(i.kind,c))}return o.join("")}let s=await a.evaluate(t,n);return ha(t.kind,s)}async evaluateCarrier(e,n){if(!e)return;let t;try{t=Pe(e,"look-carrier",{catalog:this.catalog,depth:0})}catch(c){this.noteExpressionFailure("look band path carrier",c);return}let a=new gn(this.expressionResolver(),this.catalog),s=new Map([["input",n]]),o=await a.evaluate(t,s),i=$a(o);return i===""?void 0:i}async evaluateCarrierNum(e,n){let t=await this.evaluateCarrier(e,n);return t===void 0?NaN:parseFloat(t)}readEmbeddedCarrier(e,n){let t=J(e,n);return t instanceof ee&&t.object instanceof D?t.object:void 0}referenceLabel(e){let n=e.subject,t=le(this.catalog,n);if(t.length===0){let a=re(this.catalog,n);a&&t.push(a)}for(let a of t){let s=G(this.catalog,a);if(s.label!==a.name)return s.label}return n.name}collectCascadedSvgTiers(e){let n={},t=c=>{let l=J(c,fa);if(!(l instanceof ee))return;let d=l.object,f=On(d,Ko),p=On(d,Ro),m=On(d,Eo),g=On(d,Lo);n.tierChip===void 0&&f!==void 0&&(n.tierChip=f),n.tierIcon===void 0&&p!==void 0&&(n.tierIcon=p),n.tierCard===void 0&&m!==void 0&&(n.tierCard=m),n.tierFull===void 0&&g!==void 0&&(n.tierFull=g)};t(e);let a=e.namespace||"",s=a.indexOf("/");if(s>=0){let c=a.indexOf("@"),l={publisher:a.slice(0,s),package_:a.slice(s+1,c>=0?c:a.length),name:e.name};for(let d of le(this.catalog,l))t(d)}let o=new Set,i=ye(e);for(;i.length>0;){let c=i.shift(),l=te(c.subject);if(o.has(l))continue;o.add(l);let d=le(this.catalog,c.subject);for(let f of d){t(f);for(let p of In(f))i.push(p)}}if(!o.has(te(xe)))for(let c of le(this.catalog,xe))t(c);return n}renderStylesheet(e){let n=this.explainStylesheet(e),t=[];for(let[o,i]of n.tokens)t.push(` --kan-${o}: ${i.value};`);let a=t.length>0?`:root {
78
- ${t.join(`
79
- `)}
80
- }`:":root { /* no tokens resolved */ }",s=n.baseStylesheet.css??"";return`${Ho(n)}
81
- ${a}
82
- ${s}`}explainStylesheet(e){let n=this.explainCascadedTokens(e),t=this.explainBaseStylesheet(ue(e)),a=this.findCascadedLook(e),s=[];return t.css||(t.problem==="content-property-unresolved"?s.push(`Base stylesheet asset ${t.sourceNamespace}/base-stylesheet is in the catalog but its site.content property did not resolve \u2014 the package was likely cached without its imports block. Pages will render UNSTYLED (CSS stops at :root). Fix: re-install it from its published source: kanonak install kanonak.org/look-styles`):s.push("No look-styles package in the render catalog \u2014 pages will render UNSTYLED (CSS stops at :root). The look stack is ambient (not imported): it must be in the workspace, the global cache, or fetchable from kanonak.org by the user running the render. Fix: kanonak install kanonak.org/look-styles")),n.size===0&&s.push("No design tokens resolved \u2014 the :root block is empty. The universal token floor lives on rdfs.Resource in kanonak.org/look-tokens; that package is missing from the render catalog. Fix: kanonak install kanonak.org/look-tokens"),a||s.push(`No look (band declaration) resolved for ${e.namespace}/${e.name} \u2014 the HTML body will be an empty comment. The universal look floor lives on rdfs.Resource in kanonak.org/universal-look. Fix: kanonak install kanonak.org/universal-look`),{resource:{namespace:e.namespace||"",name:e.name},tokens:n,baseStylesheet:t,...a?{look:{sourceClass:a.sourceClass}}:{},warnings:s}}findBaseStylesheet(e){return this.explainBaseStylesheet(e).css}explainBaseStylesheet(e){let n="kanonak.org/site/content",t=f=>this.uriOf(f).version??null,a=[],s,o,i,c;for(let f of this.catalog){if(!(f instanceof Y)||f.name!=="base-stylesheet")continue;let p=f.namespace||"";if(p.startsWith(`${e}/look-styles@`)){a.push(p);let m=t(f);m&&(!o||hn(m,o)>0)&&(s=f,o=m)}else if(p.startsWith("kanonak.org/look-styles@")){a.push(p);let m=t(f);m&&(!c||hn(m,c)>0)&&(i=f,c=m)}}let l=s??i;if(!l)return{problem:"no-look-styles-in-catalog",candidates:a};let d=l===s?"publisher-override":"universal-default";for(let f of l.statement){let p=f.predicate?.subject;if(!p)continue;if(`${p.publisher}/${p.package_}/${p.name}`===n&&f instanceof Z)return{css:f.object,sourceNamespace:l.namespace||"",scope:d,candidates:a}}return{problem:"content-property-unresolved",sourceNamespace:l.namespace||"",scope:d,candidates:a}}async renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=nt(n.declaration);if(t.length===0){let i=n.declaration.unresolvedPredicates;return i.length>0?`<!-- LookRenderer: look declaration has no bands \u2014 unresolved predicates dropped from the parse: ${i.map(l=>`${l.key} (authored by ${l.sourceDoc})`).join(", ")}. An import in the authoring document did not resolve; see the render-stack warnings (/.well-known/kanonak-render). -->`:"<!-- LookRenderer: look declaration has no bands -->"}let a=ue(e),s=this.collectSectionHeadings(t);this.diagramScriptEmitted=!1,this.diagramArrowSeq=0;let o=[];for(let i of t){let c=on(i);c&&X(c,Jn)&&o.push('<div style="clear:both"></div>'),o.push(this.applyBandPlacement(i,await this.renderBand(i,e,a,s)))}return o.push('<div style="clear:both"></div>'),o.join(`
83
- `)}applyBandPlacement(e,n){let t=ae(e,Us);if(t!=="floatLeft"&&t!=="floatRight")return n;let a=t==="floatLeft"?"left":"right",s=ae(e,Os),o=s&&/^\d+(\.\d+)?(%|px|rem|em)$/.test(s)?s:"42%";return`<div class="kan-band-float kan-band-${a}" style="float:${a};width:${o};margin:${a==="left"?"0 1.25rem 0.75rem 0":"0 0 0.75rem 1.25rem"}">${n}</div>`}collectSectionHeadings(e){let n=[];for(let t of e){let a=on(t);if(!a||!X(a,Jn))continue;let s=ae(t,sa);s&&n.push({slug:ba(s),label:s})}return n}publisherSubject(e){for(let t of this.catalog){if(!(t instanceof Y)||ue(t)!==e||!ye(t).some(s=>X(s.subject,Vs)))continue;return le(this.catalog,{publisher:e,package_:this.uriOf(t).package_,name:t.name})[0]??t}let n=new Y;return n.namespace=e,n.name=e,n.statement=[H.parse("kanonak.org/core-rdf/type","kanonak.org/core-kanonak/Publisher"),Z.parse("kanonak.org/core-rdf/label",e)],n}hasDeclaredView(e){let n=this.findCascadedLook(e);return n?!(a=>a.publisher===xe.publisher&&a.package_===xe.package_&&a.name===xe.name||a.publisher===Qn.publisher&&a.package_===Qn.package_&&a.name===Qn.name)(n.sourceClass):!1}renderPackageVersionList(e,n,t){let a=ue(t),s=this.renderNavGroup(t,a),o=this.renderBreadcrumb(t,a,{bareOverview:!0}),i=n.map(l=>`<a class="kan-resource-card" href="${h(this.packageHref(a,e,l))}/"><h3 class="kan-resource-card-title">${h(l)}</h3></a>`).join(`
84
- `),c=`<header class="kan-hero">
85
- <span class="kan-hero-eyebrow">PACKAGE</span>
86
- <h1 class="kan-hero-title">${h(e)}</h1>
87
- </header>
88
- <section class="kan-resource-grid">
89
- ${i}
90
- </section>`;return`<!doctype html>
91
- <html lang="en">
92
- <head>
93
- <meta charset="utf-8">
94
- <meta name="viewport" content="width=device-width, initial-scale=1">
95
- <title>${h(e)}</title>
96
- <link rel="stylesheet" href="${h(t.name)}.css">
97
- </head>
98
- <body>
99
- ${s}
100
- ${o}
101
- <main class="kan-main">
102
- ${c}
103
- </main>
104
- </body>
105
- </html>
106
- `}async renderDocument(e,n){let t=await this.renderHtml(e),a=G(this.catalog,e).label,s=n?.rootIndex?"index.css":`${e.name}.css`,o=!n?.rootIndex&&this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${h(e.name)}.svg" alt=""></figure>
107
- `:"",i=ue(e),c=this.renderNavGroup(e,i),l=this.renderSiteFooter(i),d=n?.rootIndex?"":this.renderBreadcrumb(e,i,n);return`<!doctype html>
108
- <html lang="en">
109
- <head>
110
- <meta charset="utf-8">
111
- <meta name="viewport" content="width=device-width, initial-scale=1">
112
- <title>${h(a)}</title>
113
- <link rel="stylesheet" href="${h(s)}">
114
- </head>
115
- <body>
116
- ${c}
117
- ${d}
118
- <main class="kan-main">
119
- ${o}${t}
120
- </main>
121
- ${l}
122
- </body>
123
- </html>
124
- `}hasSvgDerivation(e){let n=new Set,t=ye(e);for(;t.length>0;){let a=t.shift(),s=te(a.subject);if(n.has(s))continue;n.add(s);let o=re(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof B&&Re(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof D)for(let l of c.statement){if(!(l instanceof H)||!Re(l,"kanonak.org","derivation","format")||!(l.object instanceof x))continue;let d=l.object.subject;if(d.publisher==="kanonak.org"&&d.package_==="formats"&&d.name==="svg")return!0}}for(let i of In(o))t.push(i)}}return!1}static BAND_DISPATCH=[[Zs,(e,n)=>e.renderSectionNav(n.sections)],[Nr,(e,n)=>e.renderHero(n.band,n.instance,n.contextPublisher)],[Dr,(e,n)=>e.renderPropertyList(n.band,n.instance,n.contextPublisher)],[Br,(e,n)=>e.renderPropertyTable(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[Hr,(e,n)=>e.renderBadgeRow(n.band,n.instance,n.contextPublisher)],[qr,(e,n)=>e.renderChipRow(n.band,n.instance,n.contextPublisher)],[Gr,(e,n)=>e.renderReferenceList(n.band,n.instance,n.contextPublisher)],[zr,(e,n)=>e.renderReferencedBy(n.band,n.instance,n.contextPublisher)],[Wr,(e,n)=>e.renderInstances(n.band,n.instance,n.contextPublisher)],[ta,(e,n)=>e.renderMarkdown(n.band,n.instance,n.contextPublisher)],[zs,(e,n)=>e.renderLinks(n.band,n.instance)],[Yr,(e,n)=>e.renderNavGroup(n.instance,n.contextPublisher)],[es,(e,n)=>e.renderResourceGrid(n.band,n.contextPublisher,n.instance)],[ns,(e,n)=>e.renderTimeline(n.band,n.contextPublisher)],[ts,(e,n)=>e.renderVersionDiff(n.band,n.contextPublisher)],[as,(e,n)=>e.renderFigure(n.band,n.instance,n.contextPublisher)],[rs,(e,n)=>e.renderDiagram(n.band,n.instance,n.contextPublisher)],[bs,(e,n)=>e.renderSequence(n.band,n.instance,n.contextPublisher)],[vs,(e,n)=>e.renderEntityRelationship(n.band,n.instance,n.contextPublisher)],[Fs,(e,n)=>e.renderStatRow(n.band,n.instance)],[Ts,(e,n)=>e.renderHorizon(n.band,n.instance,n.contextPublisher)],[Ps,(e,n)=>e.renderPackageContents(n.instance,n.contextPublisher)],[As,(e,n)=>e.renderFeaturedResource(n.band,n.contextPublisher)],[Ms,(e,n)=>e.renderPublisherPackages(n.band,n.contextPublisher)],[Xs,(e,n)=>e.renderDistribution(n.band,n.instance)],[Jn,(e,n)=>e.renderSectionHeading(n.band)],[no,(e,n)=>e.renderVersionDelta(n.band,n.instance)],[to,(e,n)=>e.renderTimePlot(n.band,n.instance,n.contextPublisher)],[ao,(e,n)=>e.renderDetails(n.band,n.instance,n.contextPublisher)],[ro,(e,n)=>e.renderEmbeddedViews(n.band,n.instance,n.contextPublisher,n.pathPrefix)],[so,(e,n)=>e.renderResourceCount(n.band,n.contextPublisher)],[ia,(e,n)=>e.renderBarMeter(n.band,n.instance)]];static bandDispatchUris(){return r.BAND_DISPATCH.map(([e])=>e)}uriOf(e){let n=je(e);return n?{publisher:n.publisher,package_:n.package_,name:n.name,...n.version?{version:n.version}:{}}:{publisher:ue(e),package_:"",name:e.name}}async renderBand(e,n,t,a=[],s=""){let o=on(e);if(!o)return"<!-- LookRenderer: band has no rdf:type -->";let i={band:e,instance:n,contextPublisher:t,sections:a,pathPrefix:s};for(let[c,l]of r.BAND_DISPATCH)if(X(o,c))return l(this,i);return`<!-- LookRenderer: unsupported band ${o.publisher}/${o.package_}/${o.name} -->`}async collectTrackedSeries(e,n,t,a){let{hueBy:s,lowerPath:o,upperPath:i}=a??{},c=new Map,l=e.length;for(let d=0;d<e.length;d++){let f=e[d],p=this.readPropertyValueReferences(f,n);for(let m of p){let g=re(this.catalog,{publisher:m.subject.publisher,package_:m.subject.package_,name:m.subject.name,...m.subject.version?{version:m.subject.version}:{}});if(!g)continue;let b=m.subject.name,k=c.get(b);k||(k={key:b,label:G(this.catalog,g).label,points:new Array(l).fill(null),...o?{lower:new Array(l).fill(null)}:{},...i?{upper:new Array(l).fill(null)}:{}},c.set(b,k));let v=await this.evaluateCarrierNum(t,g);if(Number.isFinite(v)&&(k.points[d]=v),o&&k.lower){let y=await this.evaluateCarrierNum(o,g);Number.isFinite(y)&&(k.lower[d]=y)}if(i&&k.upper){let y=await this.evaluateCarrierNum(i,g);Number.isFinite(y)&&(k.upper[d]=y)}if(s){let y=await this.evaluateCarrierNum(s,g);Number.isFinite(y)&&(k.hue=y)}k.lastSubject=g}}return[...c.values()]}hrefForSubject(e,n,t="="){let a=this.uriOf(e),s=a.package_,o=a.version;return this.resourceHref({publisher:ue(e),package_:s,name:e.name,...o?{version:o}:{}},n,t)}async renderVersionDiff(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.VersionDiff: no look.source -->";let a=this.readEmbeddedCarrier(e,kn),s=q(e,la);if(!s||!a)return"<!-- LookRenderer.VersionDiff: needs look.track + look.metricPath -->";let o=q(e,Cn),i=this.readEmbeddedCarrier(e,Zn),c=this.findInstancesOfClass(t,this.readTransitive(e));if(c.length===0)return"<!-- LookRenderer.VersionDiff: no instances -->";let l=m=>o?this.readPropertyValueText(m,o)??"":"",d=c.slice().sort((m,g)=>l(m).localeCompare(l(g))),f=await this.collectTrackedSeries(d,s,a,{hueBy:i});return f.length===0?"<!-- LookRenderer.VersionDiff: no tracked series -->":`<section class="kan-vdiff">${f.map((m,g)=>{let b=m.hue!==void 0?m.hue:Math.round(g*360/f.length),k=m.points.filter(C=>C!==null);if(k.length===0)return"";let v=k[0],y=k[k.length-1],K=y-v,E;if(Math.abs(K)>=.005){let C=K>0?"up":"down",T=K>0?"\u25B2":"\u25BC";E=`<span class="kan-vdiff-delta ${C}">${K>0?"+":""}${K.toFixed(2)} ${T}</span>`}else E='<span class="kan-vdiff-delta flat">\u2014</span>';let O=m.lastSubject&&this.isLinkable(ue(m.lastSubject),n)?`<a href="${h(this.hrefForSubject(m.lastSubject,n))}">${h(m.label)}</a>`:h(m.label);return`<div class="kan-vdiff-row" style="--kan-vdiff-hue:${b}"><span class="kan-vdiff-label">${O}</span><span class="kan-vdiff-start">${v.toFixed(2)}</span>`+this.sparkline(m.points,b)+`<span class="kan-vdiff-end">${y.toFixed(2)}</span>`+E+"</div>"}).join("")}</section>`}sparkline(e,n){let o=`hsl(${n},65%,60%)`,i=e.filter(k=>k!==null);if(i.length===0)return'<svg class="kan-vdiff-spark" viewBox="0 0 132 30" xmlns="http://www.w3.org/2000/svg"></svg>';let c=Math.min(...i),d=Math.max(...i)-c,f=e.length,p=k=>f<=1?132/2:4+k/(f-1)*124,m=k=>d<1e-9?30/2:26-(k-c)/d*22,g=[],b=[];return e.forEach((k,v)=>{if(k===null)return;let y=p(v),K=m(k);g.push(`${y.toFixed(1)},${K.toFixed(1)}`),b.push(`<circle cx="${y.toFixed(1)}" cy="${K.toFixed(1)}" r="2" fill="${o}"/>`)}),`<svg class="kan-vdiff-spark" viewBox="0 0 132 30" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg" role="img"><polyline points="${g.join(" ")}" fill="none" stroke="${o}" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round"/>`+b.join("")+"</svg>"}svgUrlForSubject(e,n,t="="){return`${this.hrefForSubject(e,n,t)}.svg`}renderFigure(e,n,t){let a=n,s=q(e,ke);if(s){let d=re(this.catalog,s);d&&(a=d)}let o=this.svgUrlForSubject(a,t),i=G(this.catalog,a).label,c=ae(e,Io);return`<figure class="kan-figure${c==="small"||c==="medium"||c==="large"?` kan-figure-${c}`:""}"><img class="kan-figure-img" src="${h(o)}" alt="${h(i)}" loading="lazy"/></figure>`}diagramArrowSeq=0;diagramScriptEmitted=!1;async renderDiagram(e,n,t,a=0,s=new Set){let o=this.gatherValueItems(J(e,ss)).filter(g=>g instanceof D);if(o.length===0)return"<!-- LookRenderer.Diagram: no look.facets -->";let i=[];for(let g of o){let b=q(g,os);if(!b){i.push("<!-- LookRenderer.Diagram: facet has no resolvable look.relation -->");continue}let k=q(g,is),v=this.resolveFacetNodes(n,b);if(v.length===0){i.push(`<!-- LookRenderer.Diagram: relation ${b.publisher}/${b.package_}/${b.name} resolved to 0 instances -->`);continue}let y=await this.resolveFacetChannels(g,v),K=J(g,ps),E=K instanceof ee&&K.object instanceof D?K.object:void 0,O=ae(g,ra),C=O&&Me[O]!==void 0?Me[O]:void 0,T=C??this.classTierSize(v),_=Cs[T??Me.icon]??"icon",W=this.readEmbeddedCarrier(g,hs),P=q(g,ms),V=P?re(this.catalog,P):void 0;if(V){i.push(await this.renderDiagramExpand(v,V,t,a,s,W,C));continue}if(k&&X(k,ls)){let L=q(g,gs),j=this.facetEdgeLabel(g,L??b),N=this.readEmbeddedCarrier(g,Ks);i.push(await this.embedTiers(_,R=>L?this.renderDiagramDag(v,L,y,t,R,j,N):this.renderDiagramConnector(n,v,y,t,R,j,N)));continue}if(k&&!X(k,cs)){i.push(`<!-- LookRenderer.Diagram: unknown encode role ${k.publisher}/${k.package_}/${k.name} -->`);continue}i.push(E?`<div class="kan-dgm-tiers" data-geo="1"><div class="kan-dgm-tier" data-tier="card">${await this.renderDiagramCluster(v,y,E,t,T)}</div></div>`:await this.embedTiers(_,L=>this.renderDiagramCluster(v,y,void 0,t,L)))}let c=ae(e,Rs),l=ae(e,Es),d=g=>`<div class="kan-diagram-title" style="font-weight:600;font-size:0.95rem;color:var(--kan-text);${g}">${h(c)}</div>`,f=c&&l!=="bottom"?d("margin:0 0 .5rem"):"",p=c&&l==="bottom"?d("margin:.5rem 0 0"):"",m="";return a===0&&!this.diagramScriptEmitted&&(this.diagramScriptEmitted=!0,m=`<script>${Ls}</script>`),`<section class="kan-diagram">${f}${i.join("")}${p}${m}</section>`}async embedTiers(e,n){let t=[];for(let a of xs){let s=await n(Me[a]);t.push(`<div class="kan-dgm-tier" data-tier="${a}"${a===e?"":" hidden"}>${s}</div>`)}return`<div class="kan-dgm-tiers">${t.join("")}</div>`}async renderDiagramExpand(e,n,t,a,s,o,i){let c=[];for(let l of e){let d=`${l.namespace??""}/${l.name}`,f=await this.diagramNodeRow(l,t,i??56,o),m=a<Is&&!s.has(d)?await this.renderDiagram(n,l,t,a+1,new Set([...s,d])):"",g=m?`<div style="margin-left:30px;border-left:2px solid var(--kan-border);padding-left:14px;margin-top:6px">${m}</div>`:"";c.push(`<div class="kan-diagram-node" style="margin:6px 0">${f}${g}</div>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-tree">${c.join("")}</div></figure>`}async diagramNodeRow(e,n,t=56,a){let s=this.hrefForSubject(e,n),o=this.svgUrlForSubject(e,n),i=G(this.catalog,e).label,c=a?await this.evaluateCarrier(a,e):void 0,l=c!==void 0?`<span class="kan-diagram-node-note" style="display:block;font-size:0.8em;color:var(--kan-text-dim)">${h(c)}</span>`:"";return`<a href="${h(s)}" style="display:inline-flex;align-items:center;gap:10px;text-decoration:none"><img src="${h(o)}" width="${t}" height="${t}" alt="" loading="lazy"/><span><span class="kan-diagram-node-label">${h(i)}</span>${l}</span></a>`}classTierSize(e){let n;for(let t of e)for(let a of ye(t)){let s=re(this.catalog,a.subject);if(!s)continue;let o=ae(s,ks),i=o?Me[o]:void 0;i!==void 0&&(n=n===void 0?i:Math.max(n,i))}return n}resolveFacetNodes(e,n){let t=[];for(let a of this.readPropertyValueReferences(e,n)){let s=a.subject,o=re(this.catalog,{publisher:s.publisher,package_:s.package_,name:s.name,...s.version?{version:s.version}:{}});o&&t.push(o)}return t}async resolveFacetChannels(e,n){let t=this.gatherValueItems(J(e,us)).filter(s=>s instanceof D),a=[];for(let s of t){let o=this.readEmbeddedCarrier(s,ds),i=ae(s,fs);if(!o||!i)continue;let c=[];for(let g of n){let b=await this.evaluateCarrierNum(o,g);c.push(Number.isFinite(b)?b:NaN)}let l=c.filter(g=>Number.isFinite(g)),d=l.length?Math.min(...l):0,p=(l.length?Math.max(...l):0)-d,m=c.map(g=>Number.isFinite(g)&&p>0?(g-d)/p:.5);a.push({to:i,norm:m})}return a}facetEdgeLabel(e,n){let t=ae(e,_s);if(t)return t;if(Do(e,js)&&n){let s=re(this.catalog,n);if(s)return G(this.catalog,s).label}}async edgeText(e,n,t){let a=t&&n?await this.evaluateCarrier(t,n):void 0,s=[e,a].filter(o=>!!o);return s.length?s.join(" "):void 0}edgeLabelEl(e,n,t){return`<text x="${e.toFixed(1)}" y="${n.toFixed(1)}" text-anchor="middle" class="kan-diagram-edge-label" style="font-size:11px;paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px;fill:var(--kan-text-dim)">${h(t)}</text>`}async renderDiagramCluster(e,n,t,a,s){let o=s??132,i=18,c=18,l=n.find(b=>b.to==="opacity");if(t){let b=[];for(let k=0;k<e.length;k++){let v=e[k],y=await this.renderBand(t,v,a),K=this.hrefForSubject(v,a),E=G(this.catalog,v).label,O=l?`opacity:${(.4+l.norm[k]*.6).toFixed(2)};`:"";b.push(`<a class="kan-diagram-mark" href="${h(K)}" style="display:block;text-decoration:none;${O}">${y}<span class="kan-diagram-mark-label">${h(E)}</span></a>`)}return`<figure class="kan-diagram-figure"><div class="kan-diagram-marks" style="display:flex;flex-wrap:wrap;gap:18px;align-items:flex-start">${b.join("")}</div></figure>`}let d=Math.min(e.length,4),f=Math.ceil(e.length/d),p=c*2+d*o+(d-1)*i,m=c*2+f*o+(f-1)*i,g=e.map((b,k)=>{let v=k%d,y=Math.floor(k/d),K=c+v*(o+i),E=c+y*(o+i),O=l?.4+l.norm[k]*.6:1;return this.diagramTile(b,K,E,o,a,O)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${g}</svg></figure>`}async renderDiagramConnector(e,n,t,a,s,o,i){let c=s??120,l=24,d=130,f=18,p=t.find(P=>P.to==="thickness"),m=t.find(P=>P.to==="opacity"),g=n.length,b=g*c+(g-1)*l,k=f*2+b,v=f*2+c+d+c,y=f,K=f+(b-c)/2,E=f+c+d,O=`kan-arrow-${this.diagramArrowSeq++}`,C=[],T=[],_=[];for(let P=0;P<n.length;P++){let V=n[P],L=f+P*(c+l),j=y+c,N=K+c/2,R=E-pe,I=L+c/2,F=(j+E)/2,$=p?1.5+p.norm[P]*5.5:2,A=m?.4+m.norm[P]*.6:1,z=m?` stroke-opacity="${A.toFixed(2)}"`:"";C.push(`<path d="M${j.toFixed(1)},${N.toFixed(1)} C${F.toFixed(1)},${N.toFixed(1)} ${F.toFixed(1)},${I.toFixed(1)} ${R.toFixed(1)},${I.toFixed(1)}" class="kan-diagram-edge" fill="none" stroke="var(--kan-border)" stroke-width="${$.toFixed(1)}"${z} marker-end="url(#${O})"/>`);let U=await this.edgeText(o,V,i);U&&T.push(this.edgeLabelEl((j+E)/2,(N+I)/2-5,U)),_.push(this.diagramTile(V,E,L,c,a,m?A:1))}let W=this.diagramTile(e,y,K,c,a);return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${v.toFixed(0)} ${k.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(O,"var(--kan-border)")}${C.join("")}${T.join("")}${W}${_.join("")}</svg></figure>`}arrowMarkerDef(e,n){return`<defs><marker id="${e}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="${n}"/></marker></defs>`}async renderDiagramDag(e,n,t,a,s,o,i){let c=s??110,l=110,d=22,f=18,p=new Map(e.map(($,A)=>[$.name,A])),m=new Set(e.map($=>$.name)),g=new Map(e.map($=>[$.name,[]])),b=new Map(e.map($=>[$.name,[]]));for(let $ of e)for(let A of this.readPropertyValueReferences($,n)){let z=A.subject.name;z!==$.name&&m.has(z)&&(g.get($.name).push(z),b.get(z).push($.name))}let k=new Map,v=new Set,y=$=>{let A=k.get($);if(A!==void 0)return A;if(v.has($))return 0;v.add($);let z=0;for(let U of b.get($)??[])z=Math.max(z,y(U)+1);return v.delete($),k.set($,z),z};for(let $ of e)y($.name);let K=Math.min(...k.values());if(K>0)for(let $ of[...k.keys()])k.set($,k.get($)-K);let E=Math.max(0,...k.values()),O=Array.from({length:E+1},()=>[]);for(let $ of e)O[k.get($.name)].push($);let C=Math.max(1,...O.map($=>$.length)),T=!1;for(let[$,A]of g)for(let z of A)k.get(z)<=k.get($)&&(T=!0);let _=T?84:0,W=C*c+(C-1)*d,P=f*2+(E+1)*c+E*l,V=f*2+_+W,L=new Map;O.forEach(($,A)=>{let z=$.length*c+($.length-1)*d,U=f+_+(W-z)/2;$.forEach((M,me)=>L.set(M.name,{x:f+A*(c+l),y:U+me*(c+d)}))});let j=t.find($=>$.to==="thickness"),N=`kan-arrow-${this.diagramArrowSeq++}`,R=[],I=[];for(let[$,A]of g){let z=L.get($);for(let U of A){let M=L.get(U),me=M.x>=z.x,ce=j?1.5+j.norm[p.get($)]*4.5:2,se,de,oe;if(me){let he=z.x+c,ze=z.y+c/2,Oe=M.x-pe,cn=M.y+c/2,Ze=(he+Oe)/2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${Ze.toFixed(1)},${ze.toFixed(1)} ${Ze.toFixed(1)},${cn.toFixed(1)} ${Oe.toFixed(1)},${cn.toFixed(1)}`,de=(he+Oe)/2,oe=(ze+cn)/2-5}else{let he=z.x+c/2,ze=z.y,Oe=M.x+c/2,cn=M.y-pe,Ze=f+_*.2;se=`M${he.toFixed(1)},${ze.toFixed(1)} C${he.toFixed(1)},${Ze.toFixed(1)} ${Oe.toFixed(1)},${Ze.toFixed(1)} ${Oe.toFixed(1)},${cn.toFixed(1)}`,de=(he+Oe)/2,oe=Ze+4}let Ee=me?"":' stroke-dasharray="6 4"';R.push(`<path d="${se}" class="kan-diagram-edge" fill="none" stroke="var(--kan-accent)" stroke-width="${ce.toFixed(1)}" stroke-opacity="0.75"${Ee} marker-end="url(#${N})"/>`);let ve=await this.edgeText(o,e[p.get($)],i);ve&&I.push(this.edgeLabelEl(de,oe,ve))}}let F=e.map($=>{let A=L.get($.name);return this.diagramTile($,A.x,A.y,c,a)}).join("");return`<figure class="kan-diagram-figure"><svg class="kan-diagram-svg" viewBox="0 0 ${P.toFixed(0)} ${V.toFixed(0)}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${this.arrowMarkerDef(N,"var(--kan-accent)")}${R.join("")}${I.join("")}${F}</svg></figure>`}static SEQ_COL_GAP=70;static SEQ_ROW=46;static SEQ_PAD=20;subjectFor(e){return le(this.catalog,e)[0]}async renderSequence(e,n,t){let a=Hn(this.catalog,n,e);if(a.problem)return`<!-- LookRenderer.Sequence: ${a.problem} -->`;if(a.sourceAbsent)return`<!-- LookRenderer.Sequence: ${n.name} carries no value for the band's look.source \u2014 nothing to sequence -->`;let s=[];for(let _ of a.strayPropertyRefs)s.push(`<!-- LookRenderer.Sequence: prose references property ${_.publisher}/${_.package_}/${_.name}, which is not a declared connector; ignored -->`);for(let _ of a.gaps)s.push(`<!-- LookRenderer.Sequence: prose orders ${_.prev.name} then ${_.next.name}, but no declared connector holds between them in the graph \u2014 no message drawn. -->`);let{messages:o,lifelines:i}=a,c=Ae;if(i.length===0)return`${s.join(`
125
- `)}
126
- <!-- LookRenderer.Sequence: no messages \u2014 no consecutive prose references are joined by a declared connector -->`;let l=ae(e,ra);l!==void 0&&Me[l]===void 0&&s.push(`<!-- LookRenderer.Sequence: look.nodeTier '${h(l)}' is not a tier (${Object.keys(Me).join(", ")}); using the class/default size -->`);let d=(l!==void 0?Me[l]:void 0)??this.classTierSize(i)??Me.icon,f=d+r.SEQ_COL_GAP,p=r.SEQ_ROW,m=r.SEQ_PAD,g=ae(e,ys)==="true",b=new Map;i.forEach((_,W)=>b.set(c(_),m+W*f+d/2));let k=m+d,v=k+p,y=v+o.length*p+m,K=m*2+(i.length-1)*f+d,E=`kan-arrow-${this.diagramArrowSeq++}`,O=`kan-arrow-open-${this.diagramArrowSeq++}`,T=[this.arrowMarkerDef(E,"var(--kan-text-dim)")+`<defs><marker id="${O}" viewBox="0 0 ${pe} ${pe}" refX="0" refY="${(pe/2).toFixed(1)}" markerWidth="${pe}" markerHeight="${pe}" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,1 L${pe},${(pe/2).toFixed(1)} L0,${pe-1}" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`];for(let _ of i){let W=b.get(c(_));T.push(`<line class="kan-seq-lifeline" x1="${W}" y1="${k}" x2="${W}" y2="${y-m}" stroke="var(--kan-border)" stroke-width="1.5" stroke-dasharray="5 5"/>`),T.push(this.diagramTile(_,W-d/2,m,d,t))}return o.forEach((_,W)=>{let P=v+W*p,V=b.get(c(_.from)),L=b.get(c(_.to)),j=this.subjectFor(_.relation),N=(g?`${W+1}. `:"")+(j?G(this.catalog,j).label:_.relation.name),R=_.style==="dotted"?' stroke-dasharray="4 4"':"",I=_.style==="thick"?3:1.5,F=_.undirected?"":` marker-end="url(#${_.style==="open"?O:E})"`,$=`kan-seq-message kan-seq-message-${_.style}${_.undirected?" kan-seq-message-undirected":""}`;if(V===L){let M=p*.55,me=V+(_.undirected?0:pe);T.push(`<path class="${$}" d="M${V},${P-M/2} H${V+34} V${P+M/2} H${me}" fill="none" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${V+34+6}" y="${P+4}" font-size="12" fill="var(--kan-text)">${h(N)}</text>`);return}let A=L>V?1:-1,z=_.undirected?L:L-A*pe;T.push(`<line class="${$}" x1="${V}" y1="${P}" x2="${z}" y2="${P}" stroke="var(--kan-text-dim)" stroke-width="${I}"${R}${F}/>`),T.push(`<text class="kan-seq-message-label" x="${((V+L)/2).toFixed(1)}" y="${P-6}" text-anchor="middle" font-size="12" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(N)}</text>`)}),`${s.join(`
127
- `)}<figure class="kan-diagram-figure kan-seq-figure"><svg class="kan-diagram-svg kan-seq" viewBox="0 0 ${K} ${y}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${T.join("")}</svg></figure>`}static ER_BOX_W=230;static ER_HEAD_H=30;static ER_ROW_H=20;static ER_GAP=70;static ER_PAD=24;erScope(e){let n=t=>en.isClassType(t);if(w(e,ws))return{classes:this.catalog.filter(a=>a instanceof Y&&a.namespace===e.namespace&&n(a))};if(n(e)){let t=je(e);if(!t)return{classes:[],reason:"the page class has no canonical URI"};let a=pn(this.catalog),s=new Map([[ne(t),e]]);for(let o of Rn(this.catalog,t,!1,a)){if(o.kind!=="object"||o.range.kind!=="class")continue;let i=this.subjectFor(o.range.uri);i&&!s.has(ne(o.range.uri))&&s.set(ne(o.range.uri),i)}return{classes:[...s.values()]}}return{classes:[],reason:"the page instance is neither a Package nor a Class"}}erCardinalityGlyph(e,n,t,a,s){let o=[];return s===1?o.push('<line x1="-14" y1="-7" x2="-14" y2="7"/>'):o.push('<path d="M-16,-8 L0,0 L-16,8" fill="none"/>'),a>=1?o.push('<line x1="-22" y1="-7" x2="-22" y2="7"/>'):o.push('<circle cx="-24" cy="0" r="4" fill="var(--kan-bg)"/>'),`<g class="kan-er-cardinality" transform="translate(${e.toFixed(1)},${n.toFixed(1)}) rotate(${t.toFixed(1)})" stroke="var(--kan-text-dim)" stroke-width="1.5">${o.join("")}</g>`}erBorderPoint(e,n,t,a,s,o){let i=s-e,c=o-n;if(i===0&&c===0)return{x:e,y:n};let l=i===0?1/0:Math.abs(t/2/i),d=c===0?1/0:Math.abs(a/2/c),f=Math.min(l,d);return{x:e+i*f,y:n+c*f}}renderEntityRelationship(e,n,t){let{classes:a,reason:s}=this.erScope(n);if(a.length===0)return`<!-- LookRenderer.EntityRelationship: nothing to draw \u2014 ${s??"no classes in scope"} -->`;let o=pn(this.catalog),i=L=>`${L.namespace}/${L.name}`,c=new Map;for(let L of a){let j=je(L);j&&c.set(ne(j),L)}let l=a.map(L=>{let j=je(L),N=j?Rn(this.catalog,j,!1,o):[];return{subject:L,label:G(this.catalog,L).label,attrs:N.filter(R=>R.kind==="datatype"),rels:N.filter(R=>R.kind==="object"&&R.range.kind==="class"&&c.has(ne(R.range.uri))),supers:Fe(L,rt).filter(R=>c.has(ne(R)))}}),d=r.ER_BOX_W,f=r.ER_HEAD_H,p=r.ER_ROW_H,m=r.ER_GAP,g=r.ER_PAD,b=Math.max(1,Math.ceil(Math.sqrt(l.length))),k=L=>f+Math.max(1,L.attrs.length)*p+8,v=[];l.forEach((L,j)=>{let N=Math.floor(j/b);v[N]=Math.max(v[N]??0,k(L))});let y=[],K=g;v.forEach((L,j)=>{y[j]=K,K+=L+m});let E=new Map;l.forEach((L,j)=>{let N=Math.floor(j/b),R=j%b,I=g+R*(d+m),F=y[N],$=k(L);E.set(i(L.subject),{x:I,y:F,w:d,h:$,cx:I+d/2,cy:F+$/2})});let O=g*2+b*d+(b-1)*m,C=K-m+g,T=[],_=[],W=[],P=`kan-er-tri-${this.diagramArrowSeq++}`,V=`<defs><marker id="${P}" viewBox="0 0 12 12" refX="11" refY="6" markerWidth="12" markerHeight="12" markerUnits="userSpaceOnUse" orient="auto"><path d="M0,0 L12,6 L0,12 Z" fill="var(--kan-bg)" stroke="var(--kan-text-dim)" stroke-width="1.5"/></marker></defs>`;for(let L of l){let j=E.get(i(L.subject));for(let N of L.rels){let R=c.get(ne(N.range.uri)),I=E.get(i(R)),F=i(R)===i(L.subject),$=this.subjectFor(N.uri),A=!!$&&fn(this.catalog,$,$s),z=!!$&&fn(this.catalog,$,Ss),U=N.minCount??0,M=N.maxCount??(z?1:void 0),me=$?G(this.catalog,$).label:N.localName;if(F){let oe=j.x+j.w,Ee=j.y+12,ve=j.y+j.h-12;T.push(`<path class="kan-er-relationship" d="M${oe},${Ee} h28 V${ve} h-28" fill="none" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`),A||T.push(this.erCardinalityGlyph(oe,ve,180,U,M)),_.push(`<text class="kan-er-relationship-label" x="${oe+32}" y="${j.cy+4}" font-size="11" fill="var(--kan-text)">${h(me)}</text>`);continue}let ce=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),se=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-relationship" x1="${ce.x.toFixed(1)}" y1="${ce.y.toFixed(1)}" x2="${se.x.toFixed(1)}" y2="${se.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5"/>`);let de=Math.atan2(se.y-ce.y,se.x-ce.x)*180/Math.PI;A||T.push(this.erCardinalityGlyph(se.x,se.y,de,U,M)),_.push(`<text class="kan-er-relationship-label" x="${((ce.x+se.x)/2).toFixed(1)}" y="${((ce.y+se.y)/2-6).toFixed(1)}" text-anchor="middle" font-size="11" fill="var(--kan-text)" style="paint-order:stroke;stroke:var(--kan-bg);stroke-width:3px">${h(me)}</text>`)}for(let N of L.supers){let R=c.get(ne(N)),I=E.get(i(R)),F=this.erBorderPoint(j.cx,j.cy,j.w,j.h,I.cx,I.cy),$=this.erBorderPoint(I.cx,I.cy,I.w,I.h,j.cx,j.cy);T.push(`<line class="kan-er-inherits" x1="${F.x.toFixed(1)}" y1="${F.y.toFixed(1)}" x2="${$.x.toFixed(1)}" y2="${$.y.toFixed(1)}" stroke="var(--kan-text-dim)" stroke-width="1.5" marker-end="url(#${P})"/>`)}}for(let L of l){let j=E.get(i(L.subject)),N=this.hrefForSubject(L.subject,t),R=L.attrs.length===0?`<text x="${j.x+10}" y="${j.y+f+14}" font-size="11" fill="var(--kan-text-faint)" font-style="italic">no attributes</text>`:L.attrs.map((I,F)=>{let $=this.subjectFor(I.uri),A=$?G(this.catalog,$).label:I.localName,z=I.required||(I.minCount??0)>=1?" *":"";return`<text class="kan-er-attribute" x="${j.x+10}" y="${j.y+f+14+F*p}" font-size="11" fill="var(--kan-text)">${h(A)}${z}<tspan fill="var(--kan-text-dim)"> : ${h(I.range.uri.name)}</tspan></text>`}).join("");W.push(`<a href="${h(N)}"><g class="kan-er-entity"><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${j.h}" rx="6" fill="var(--kan-bg-card)" stroke="var(--kan-border)" stroke-width="1.5"/><rect x="${j.x}" y="${j.y}" width="${j.w}" height="${f}" rx="6" fill="var(--kan-bg-elev)"/><text class="kan-er-entity-label" x="${j.cx}" y="${j.y+20}" text-anchor="middle" font-size="13" font-weight="600" fill="var(--kan-text)">${h(L.label)}</text><line x1="${j.x}" y1="${j.y+f}" x2="${j.x+j.w}" y2="${j.y+f}" stroke="var(--kan-border)"/>`+R+"</g></a>")}return`<figure class="kan-diagram-figure kan-er-figure"><svg class="kan-diagram-svg kan-er" viewBox="0 0 ${O} ${C}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">${V}${T.join("")}${W.join("")}${_.join("")}</svg></figure>`}diagramTile(e,n,t,a,s,o=1){let i=this.hrefForSubject(e,s),c=this.svgUrlForSubject(e,s),l=G(this.catalog,e).label,d=o<1?` opacity="${o.toFixed(2)}"`:"";return`<a href="${h(i)}"><image href="${h(c)}" x="${n}" y="${t}" width="${a}" height="${a}"${d}><title>${h(l)}</title></image></a>`}async renderStatRow(e,n){let t=J(e,uo),a=this.gatherValueItems(t).filter(o=>o instanceof D);if(a.length===0)return"<!-- LookRenderer.StatRow: no look.stats -->";let s=[];for(let o of a){let i=this.readEmbeddedCarrier(o,fo);if(!i)continue;let c=await this.evaluateCarrier(i,n);if(c===void 0)continue;let l=ae(o,po)??"";s.push('<div class="kan-stat">'+(l?`<span class="kan-stat-label">${h(l)}</span>`:"")+`<span class="kan-stat-val">${h(c)}</span></div>`)}return s.length===0?"":`<div class="kan-stat-row">${s.join("")}</div>`}barMarkup(e){let n=Number(e);if(!Number.isFinite(n))return h(e);let t=Math.max(0,Math.min(1,n))*100;return`<span class="kan-bar-meter" role="img" aria-label="${h(e)}"><span class="kan-bar-fill" style="width:${t.toFixed(1)}%"></span></span><span class="kan-bar-value">${h(e)}</span>`}async renderBarMeter(e,n){let t=this.readEmbeddedCarrier(e,kn);if(!t)return"<!-- LookRenderer.BarMeter: no look.metricPath -->";let a=await this.evaluateCarrier(t,n);return a===void 0?"":`<div class="kan-bar-row">${this.barMarkup(a)}</div>`}renderResourceCount(e,n){let t=J(e,oo),a=this.gatherValueItems(t).filter(i=>i instanceof D);if(a.length===0)return"<!-- LookRenderer.ResourceCount: no look.counts -->";let s=this.readTransitive(e),o=[];for(let i of a){let c=q(i,ke);if(!c)continue;let l=re(this.catalog,c);if(!l)continue;let d=G(this.catalog,l).label,f=this.findInstancesOfClass(c,s).length,p=this.hrefForSubject(l,n);o.push(`<a class="kan-count" href="${h(p)}"><span class="kan-count-val">${f}</span><span class="kan-count-label">${h(d)}</span></a>`)}return o.length===0?"":`<div class="kan-count-row">${o.join("")}</div>`}renderHorizon(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Horizon: no look.source -->";let s=this.gatherValueItems(J(n,a)).filter(i=>i instanceof D);return s.length===0?"":`<section class="kan-horizon">${s.map(i=>this.renderConditionNode(i,t,0)).join("")}</section>`}renderConditionNode(e,n,t){let a=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"Condition",o=[],i=[];for(let p of e.statement){let m=p.predicate?.subject;if(!m||X(m,Ne))continue;let g=this.readLabelForUri({publisher:m.publisher,package_:m.package_,name:m.name})??m.name;if(p instanceof Z||p instanceof ge||p instanceof fe)o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(String(p.object))}</span></div>`);else if(p instanceof H&&p.object instanceof x){let b=p.object.subject,k=this.readLabelForUri({publisher:b.publisher,package_:b.package_,name:b.name})??b.name;o.push(`<div class="kan-cond-field"><span class="kan-cond-key">${h(g)}</span><span class="kan-cond-v">${h(k)}</span></div>`)}else if(p instanceof ee)i.push(this.renderConditionNode(p.object,n,t+1));else if(p instanceof B)for(let b of p.object??[])b instanceof D&&i.push(this.renderConditionNode(b,n,t+1))}let c=o.length?`<div class="kan-cond-fields">${o.join("")}</div>`:"",l=i.length?`<div class="kan-cond-children">${i.join("")}</div>`:"",d=i.length>0,f=d?`<span class="kan-cond-op">${h(s)}</span>`:`<div class="kan-cond-type">${h(s)}</div>`;return`<div class="kan-cond ${d?"kan-cond-branch":"kan-cond-leaf"}">${f}${c}${l}</div>`}renderSectionHeading(e){let n=e,t=ae(n,sa);if(!t)return"<!-- LookRenderer.SectionHeading: no look.heading -->";let a=ae(n,eo);return`<div class="kan-section" id="${ba(t)}"><h2 class="kan-section-title">${h(t)}</h2>`+(a?`<p class="kan-section-note">${h(a)}</p>`:"")+"</div>"}renderSectionNav(e){return e.length===0?"<!-- LookRenderer.SectionNav: no section headings in this view -->":`<nav class="kan-section-nav" aria-label="On this page">${e.map(t=>`<a class="kan-section-nav-link" href="#${h(t.slug)}">${h(t.label)}</a>`).join("")}</nav>`}async renderVersionDelta(e,n){let t=this.readEmbeddedCarrier(e,kn);if(!t)return"<!-- LookRenderer.VersionDelta: no look.metricPath -->";let a=async P=>{let V=await this.evaluateCarrierNum(t,P);return Number.isFinite(V)?V:void 0},s=await a(n);if(s===void 0)return"";let o=P=>this.uriOf(P).version??{major:0,minor:0,patch:0},i=(P,V)=>P.major-V.major||P.minor-V.minor||P.patch-V.patch,c={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},l=o(n),d,f;for(let P of le(this.catalog,c)){let V=o(P);i(V,l)<0&&(!f||i(V,f)>0)&&(d=P,f=V)}if(!d||!f)return'<div class="kan-delta kan-delta-first">First tracked in this version</div>';let p=await a(d);if(p===void 0)return"";let m=s-p,g=Math.abs(m)<.005?"flat":m>0?"up":"down",b=g==="up"?"\u25B2":g==="down"?"\u25BC":"\u2014",k=g==="up"?"#34d399":g==="down"?"#f87171":"var(--kan-text-faint)",v=`${f.major}.${f.minor}.${f.patch}`,y=320,K=46,E=14,O=30,C=P=>E+Math.min(1,Math.max(0,P))*(y-2*E),T=C(p),_=C(s),W=`<svg class="kan-delta-track" viewBox="0 0 ${y} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${E}" y1="${O}" x2="${y-E}" y2="${O}" class="kan-delta-base"/><line x1="${T.toFixed(1)}" y1="${O}" x2="${_.toFixed(1)}" y2="${O}" stroke="${k}" stroke-width="3"/><circle cx="${T.toFixed(1)}" cy="${O}" r="4" class="kan-delta-prev"/><circle cx="${_.toFixed(1)}" cy="${O}" r="5.5" fill="${k}"/><text x="${T.toFixed(1)}" y="${O-9}" text-anchor="middle" class="kan-delta-tick kan-delta-tick-prev">${p.toFixed(2)}</text><text x="${_.toFixed(1)}" y="${O+17}" text-anchor="middle" class="kan-delta-tick">${s.toFixed(2)}</text></svg>`;return`<div class="kan-delta"><div class="kan-delta-head"><span class="kan-delta-vs">vs ${h(v)}</span><span class="kan-delta-badge ${g}">${m>0?"+":""}${m.toFixed(2)} ${b}</span></div>`+W+"</div>"}async renderTimePlot(e,n,t){let a=q(e,ke),s=q(e,Cn);if(!a||!s)return"<!-- LookRenderer.TimePlot: needs look.source + look.orderBy -->";let o=this.readEmbeddedCarrier(e,lo),i=this.readEmbeddedCarrier(e,oa),c=[];for(let R of this.readPropertyValueReferences(n,a)){let I=re(this.catalog,{publisher:R.subject.publisher,package_:R.subject.package_,name:R.subject.name,...R.subject.version?{version:R.subject.version}:{}});if(!I)continue;let F=this.readPropertyValueText(I,s)??"",$=Date.parse(F);if(!Number.isFinite($))continue;let A=o?await this.evaluateCarrier(o,I)??"":"",z=(i?await this.evaluateCarrier(i,I):void 0)??G(this.catalog,I).label;c.push({t:$,dateStr:F,lane:A,label:z,href:this.hrefForSubject(I,t),linkable:this.isLinkable(ue(I),t)})}if(c.length===0)return"<!-- LookRenderer.TimePlot: no dated points -->";let l=[];for(let R of c)l.includes(R.lane)||l.push(R.lane);let d=Math.min(...c.map(R=>R.t)),f=Math.max(...c.map(R=>R.t));f===d&&(f=d+1);let p=l.some(R=>R),m=720,g=p?96:16,b=18,k=12,v=24,y=36,K=k+l.length*y+v,E=g,O=m-b,C=O-E,T=R=>E+(R-d)/(f-d)*C,_=R=>k+R*y+y/2,W=R=>Math.round(R*360/Math.max(1,l.length)),P=[];l.forEach((R,I)=>{let F=_(I);P.push(`<line x1="${E}" y1="${F.toFixed(1)}" x2="${O}" y2="${F.toFixed(1)}" class="kan-plot-guide"/>`),R&&P.push(`<text x="${(g-8).toFixed(1)}" y="${(F+4).toFixed(1)}" text-anchor="end" class="kan-plot-lane">${Ue(R)}</text>`)});let V={},L=[];for(let R of c){let I=l.indexOf(R.lane),$=((V[R.lane]=(V[R.lane]??0)+1)%3-1)*7,A=T(R.t),z=_(I)+$,U=`${Fn(R.dateStr)} \xB7 ${R.label}`,M=`<circle cx="${A.toFixed(1)}" cy="${z.toFixed(1)}" r="5" fill="hsl(${W(I)},65%,60%)" class="kan-plot-pt"><title>${Ue(U)}</title></circle>`;L.push(R.linkable?`<a href="${h(R.href)}" class="kan-plot-link">${M}</a>`:M)}let j=`<text x="${E}" y="${(K-6).toFixed(1)}" text-anchor="start" class="kan-plot-axis">${Ue(Fn(new Date(d).toISOString()))}</text><text x="${O}" y="${(K-6).toFixed(1)}" text-anchor="end" class="kan-plot-axis">${Ue(Fn(new Date(f).toISOString()))}</text>`;return`<section class="kan-plot">${`<svg class="kan-plot-svg" viewBox="0 0 ${m} ${K}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+P.join("")+L.join("")+j+"</svg>"}</section>`}renderDetails(e,n,t){let a=tt(e,io),s=this.detailRows(n,t,a);return s?`<dl class="kan-details">${s}</dl>`:"<!-- LookRenderer.Details: no properties -->"}detailRows(e,n,t){let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||this.isMetaPredicate(o)||t.some(l=>X(l,o)))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.detailValue(s,n,t);c&&a.push(`<dt class="kan-details-key">${h(i)}</dt><dd class="kan-details-val">${c}</dd>`)}return a.join("")}detailValue(e,n,t){if(e instanceof Z)return va(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.detailEmbedded(e.object,n,t);if(e instanceof B){let a=e.object??[];return a.length>0&&a.every(s=>s instanceof D)?a.map(s=>this.detailEmbedded(s,n,t)).join(""):a.map(s=>s instanceof x?this.detailReferenceLink(s,n):s instanceof D?this.detailEmbedded(s,n,t):h(String(s))).filter(s=>s).join(", ")}return""}detailReferenceLink(e,n){let t=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,n))return`<span class="kan-link-plain">${h(t)}</span>`;let a=this.urlForReference(e,void 0,n);return`<img class="kan-md-chip" src="${h(`${a}.svg`)}" alt="" loading="lazy"><a class="kan-link" href="${h(a)}">${h(t)}</a>`}detailEmbedded(e,n,t){let a=on(e),s=a?this.readLabelForUri({publisher:a.publisher,package_:a.package_,name:a.name})??a.name:"",o=this.detailRows(e,n,t);return'<div class="kan-details-embed">'+(s?`<span class="kan-details-type">${h(s)}</span>`:"")+(o?`<dl class="kan-details">${o}</dl>`:"")+"</div>"}rangeTypeRefs(e){let n=re(this.catalog,e);if(!n)return[];let t=J(n,Vr);return t instanceof H&&t.object instanceof x?[t.object]:[]}async renderEmbeddedViews(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: EmbeddedViews missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(m=>m instanceof D);if(o.length===0)return"";let i=a?`${a}.${s.name}`:s.name,c=J(e,Po),l=c instanceof fe?c.object===!0:c instanceof Z&&c.object==="true",d=[],f=[];for(let m of o){let g=m,b=m.name?`${i}.${m.name}`:"";if(l&&b){let C=G(this.catalog,g).label||m.name||b;d.push(`<a class="kan-section-nav-link" href="#${h(b)}">${h(C)}</a>`)}let k=ye(g),v=k.length>0?k:this.rangeTypeRefs(s),y=Un(g)?this.findCascadedLook(g):this.lookFromTypeRefs(v),K="";if(y){let C=[];for(let T of nt(y.declaration))C.push(await this.renderBand(T,g,t,[],b));K=C.join(`
128
- `)}else{let C=this.detailRows(m,t,[]);K=C?`<dl class="kan-details">${C}</dl>`:""}let E=b?` id="${h(b)}"`:"",O=b?this.anchorLink(b):"";f.push(`<section class="kan-embedded-view"${E}>${O}${K}</section>`)}return`<div class="kan-embedded-views">${d.length>0?`<nav class="kan-section-nav" aria-label="On this page">${d.join("")}</nav>
129
- `:""}${f.join(`
130
- `)}</div>`}anchorLink(e){return`<a class="kan-anchor" href="#${h(e)}" title="${h(e)}" aria-label="Link to this resource">#</a>`}isMetaPredicate(e){return X(e,Ne)||X(e,Yn)||X(e,na)||X(e,Tn)||X(e,Pn)||X(e,co)||X(e,fa)||X(e,Ys)}renderPackageContents(e,n){let t=e.namespace||"";if(!t)return"";let a=this.catalog.filter(o=>o instanceof Y&&o.namespace===t&&o.name!==e.name);return a.length===0?`<!-- LookRenderer.PackageContents: no members in ${t} -->`:(a.sort((o,i)=>{let c=G(this.catalog,o).label,l=G(this.catalog,i).label;return c.localeCompare(l)}),`<section class="kan-pkg-grid">${a.map(o=>{let i=G(this.catalog,o),c=i.label,l=i.summary,d=l?at(l,160):"",f=this.hrefForSubject(o,n),p=this.svgUrlForSubject(o,n);return`<a class="kan-pkg-card" href="${h(f)}"><img class="kan-pkg-card-svg" src="${h(p)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(c)}</span>`+(d?`<span class="kan-pkg-card-comment">${h(d)}</span>`:"")+"</span></a>"}).join("")}</section>`)}renderReferencedBy(e,n,t){let a=q(e,Oo),s={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},o=te(s),i=p=>this.uriOf(p).version??{major:0,minor:0,patch:0},c=(p,m)=>p.major-m.major||p.minor-m.minor||p.patch-m.patch,l=new Map;for(let p of this.catalog){if(!(p instanceof Y))continue;let m=te({publisher:ue(p),package_:this.uriOf(p).package_,name:p.name});if(m!==o)for(let g of p.statement){let b=g.predicate?.subject;if(!b||X(b,Ne)||a&&te(b)!==te(a))continue;let k=[];if(g instanceof H&&g.object instanceof x)k.push(g.object);else if(g instanceof B)for(let E of g.object??[])E instanceof x&&k.push(E);if(!k.some(E=>te(E.subject)===o))continue;let v=te(b),y=l.get(v);y||(y={label:this.readLabelForUri(b)??b.name,best:new Map},l.set(v,y));let K=y.best.get(m);(!K||c(i(p),i(K))>0)&&y.best.set(m,p)}}return l.size===0?"<!-- LookRenderer.ReferencedBy: no incoming references -->":`<div class="kan-section"><h2 class="kan-section-title">Referenced by</h2></div>${[...l.values()].sort((p,m)=>p.label.localeCompare(m.label)).map(p=>{let g=[...p.best.values()].sort((b,k)=>G(this.catalog,b).label.localeCompare(G(this.catalog,k).label)).map(b=>this.resourceCard(b,t,n.namespace??void 0)).join("");return`<div class="kan-rel-group"><h3 class="kan-rel-prop"><span class="kan-rel-dir" title="incoming \u2014 references this resource">\u2190</span> ${h(p.label)}</h3><section class="kan-pkg-grid">${g}</section></div>`}).join("")}`}resourceCard(e,n,t){let a=G(this.catalog,e),s=a.summary?at(a.summary,160):"",o=ye(e).map(v=>this.readLabelForUri({publisher:v.subject.publisher,package_:v.subject.package_,name:v.subject.name})??v.subject.name),c='<span class="kan-pkg-card-body">'+(o.length>0?`<span class="kan-card-types">${o.map(v=>`<span class="kan-card-type">${h(v)}</span>`).join("")}</span>`:"")+`<span class="kan-pkg-card-title">${h(a.label)}</span>`+(s?`<span class="kan-pkg-card-comment">${h(s)}</span>`:"")+"</span>",l=this.isLinkable(ue(e),n),d=l?`<a class="kan-pkg-card-link" href="${h(this.hrefForSubject(e,n))}"><img class="kan-pkg-card-svg" src="${h(this.svgUrlForSubject(e,n))}" alt="" loading="lazy"/>`+c+"</a>":`<span class="kan-pkg-card-link">${c}</span>`,f=e.namespace||"",p=this.uriOf(e),m=p.publisher,g=p.package_,b=p.version?bn(p.version):"",k="";if(g&&f!==t){let v=b?`<span class="kan-card-at">@</span><span class="kan-card-ver">${h(b)}</span>`:"";if(l){let y=`<span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<a class="kan-pkg-card-foot" href="${h(this.packageHref(m,g,b||void 0))}" title="${h(b?`${g}@${b}`:g)}">${y}</a>`}else{let y=`<span class="kan-card-pub">${h(m)}/</span><span class="kan-card-pkg">${h(g)}</span>${v}`;k=`<span class="kan-pkg-card-foot" title="${h(b?`${m}/${g}@${b}`:`${m}/${g}`)}">${y}</span>`}}return`<div class="kan-pkg-card kan-pkg-card--foot">${d}${k}</div>`}renderInstances(e,n,t){let a={publisher:ue(n),package_:this.uriOf(n).package_,name:n.name},s=this.readTransitive(e),o=s?this.descendantTypeKeys(a):new Set([te(a)]),i=k=>this.uriOf(k).version??{major:0,minor:0,patch:0},c=(k,v)=>k.major-v.major||k.minor-v.minor||k.patch-v.patch,l=new Map;for(let k of this.catalog){if(!(k instanceof Y)||!ye(k).some(E=>o.has(te(E.subject))))continue;let y=te({publisher:ue(k),package_:this.uriOf(k).package_,name:k.name}),K=l.get(y);(!K||c(i(k),i(K))>0)&&l.set(y,k)}let d=[...l.values()];if(d.length===0)return"<!-- LookRenderer.Instances: none -->";d.sort((k,v)=>G(this.catalog,k).label.localeCompare(G(this.catalog,v).label));let f=48,p=d.slice(0,f),m=p.map(k=>this.resourceCard(k,t,n.namespace??void 0)),g=d.length>f?` <span class="kan-count">${p.length} of ${d.length}</span>`:` <span class="kan-count">${d.length}</span>`;return`<div class="kan-section"><h2 class="kan-section-title">${s?"Instances (including subtypes)":"Instances"}${g}</h2></div><section class="kan-pkg-grid">${m.join("")}</section>`}descendantTypeKeys(e){let n=te(e),t=new Set([n]),a=new Set;for(let s of this.catalog)if(s instanceof Y)for(let o of ye(s)){let i=o.subject,c=te(i);a.has(c)||(a.add(c),nn(this.catalog,i).some(l=>te(l)===n)&&t.add(c))}return t}referencesTarget(e,n,t){for(let a of e.statement){let s=a.predicate?.subject;if(s&&X(s,Ne)||t&&!(s&&te(s)===te(t)))continue;let o=[];if(a instanceof H&&a.object instanceof x)o.push(a.object);else if(a instanceof B)for(let i of a.object??[])i instanceof x&&o.push(i);for(let i of o)if(te(i.subject)===n)return!0}return!1}async renderFeaturedResource(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.FeaturedResource: no look.source -->";let a=le(this.catalog,t),s=l=>this.uriOf(l).version??{major:0,minor:0,patch:0},o=a.length>0?a.slice().sort((l,d)=>{let f=s(l),p=s(d);return p.major-f.major||p.minor-f.minor||p.patch-f.patch})[0]:re(this.catalog,t);if(!o)return`<!-- LookRenderer.FeaturedResource: ${t.publisher}/${t.package_}/${t.name} not found -->`;let i=await this.renderHtml(o),c=this.hrefForSubject(o,n);return`<section class="kan-featured"><a class="kan-featured-permalink" href="${h(c)}">View full resource \u2192</a>`+i+"</section>"}async renderDistribution(e,n){let t=async F=>{let $=this.readEmbeddedCarrier(e,F);if(!$)return;let A=await this.evaluateCarrierNum($,n);return Number.isFinite(A)?A:void 0},a=await t(Qs),s=await t(Js);if(a===void 0||s===void 0||a<=0||s<=0)return"<!-- LookRenderer.Distribution: needs resolvable alphaPath + betaPath (> 0) -->";let o=await t(kn)??a/(a+s),i=await t(ua),c=await t(da),l=await t(Zn),d=l!==void 0?`hsl(${l},65%,60%)`:"var(--kan-accent)",f=F=>Number.isInteger(F)?String(F):F.toFixed(1),p=280,m=168,g={top:14,right:14,bottom:24,left:14},b=p-g.left-g.right,k=m-g.top-g.bottom,v=120,y=1e-4,K=[],E=[],O=0;for(let F=0;F<=v;F++){let $=F/v;$<y?$=y:$>1-y&&($=1-y);let A=Math.exp((a-1)*Math.log($)+(s-1)*Math.log(1-$));K.push($),E.push(A),A>O&&(O=A)}let C=F=>g.left+Math.min(1,Math.max(0,F))*b,T=F=>g.top+(1-(O>0?F/O:0))*k,_=g.top+k,W=K.map((F,$)=>`${C(F).toFixed(1)},${T(E[$]).toFixed(1)}`),P=`M${C(0).toFixed(1)},${_.toFixed(1)} L${W.join(" L")} L${C(1).toFixed(1)},${_.toFixed(1)} Z`,V="";if(i!==void 0&&c!==void 0&&c>i){let F=[`${C(i).toFixed(1)},${_.toFixed(1)}`];for(let $=0;$<=v;$++)K[$]>=i&&K[$]<=c&&F.push(`${C(K[$]).toFixed(1)},${T(E[$]).toFixed(1)}`);F.push(`${C(c).toFixed(1)},${_.toFixed(1)}`),V=`<path d="M${F.join(" L")} Z" fill="${d}" fill-opacity="0.3"/>`}let L=C(o),j=`<line x1="${L.toFixed(1)}" y1="${g.top.toFixed(1)}" x2="${L.toFixed(1)}" y2="${_.toFixed(1)}" stroke="${d}" stroke-width="1.5" stroke-dasharray="3 3"/><text x="${L.toFixed(1)}" y="${(g.top-3).toFixed(1)}" text-anchor="middle" class="kan-dist-mean">\u03BC ${o.toFixed(2)}</text>`,N=`<text x="${C(0).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="start" class="kan-dist-axis">0</text><text x="${C(1).toFixed(1)}" y="${(_+15).toFixed(1)}" text-anchor="end" class="kan-dist-axis">1</text>`,R=`<svg class="kan-dist-svg" viewBox="0 0 ${p} ${m}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img"><line x1="${g.left}" y1="${_.toFixed(1)}" x2="${(p-g.right).toFixed(1)}" y2="${_.toFixed(1)}" class="kan-dist-base"/><path d="${P}" fill="${d}" fill-opacity="0.12"/>`+V+`<polyline points="${W.join(" ")}" fill="none" stroke="${d}" stroke-width="2"/>`+j+N+"</svg>",I=i!==void 0&&c!==void 0?` \xB7 95% CI [${i.toFixed(2)}\u2013${c.toFixed(2)}]`:"";return`<figure class="kan-dist">${R}<figcaption class="kan-dist-caption">Beta(${f(a)}, ${f(s)})${I}</figcaption></figure>`}renderPublisherPackages(e,n){let t=new Map;for(let c of this.catalog){if(!(c instanceof Y)||ue(c)!==n)continue;let l=this.uriOf(c).package_;if(!l||c.name!==l)continue;let d=t.get(l),f=this.uriOf(c).version,p=d?this.uriOf(d).version:void 0;(!d||f&&(!p||hn(f,p)>0))&&t.set(l,c)}let a,s=J(e,Ns),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[];if(o.length>0){a=[];for(let c of o){if(!(c instanceof x))continue;let l=c.subject.package_,d=t.get(l);d&&a.push([l,d])}}else a=[...t.entries()].sort((c,l)=>c[0].localeCompare(l[0]));return a.length===0?"":`<section class="kan-pkg-grid">${a.map(([c,l])=>{let d=G(this.catalog,l),f=d.label,p=d.summary,m=p?at(p,160):"",g=this.svgUrlForSubject(l,n);return`<a class="kan-pkg-card" href="${h(this.packageHref(n,c))}"><img class="kan-pkg-card-svg" src="${h(g)}" alt="" loading="lazy"/><span class="kan-pkg-card-body"><span class="kan-pkg-card-title">${h(f)}</span>`+(m?`<span class="kan-pkg-card-comment">${h(m)}</span>`:"")+"</span></a>"}).join("")}</section>`}async renderTimeline(e,n){let t=q(e,ke);if(!t)return"<!-- LookRenderer.Timeline: no look.source -->";let a=q(e,Cn),s=this.findInstancesOfClass(t,this.readTransitive(e));if(s.length===0)return"<!-- LookRenderer.Timeline: no instances -->";let o=f=>a?this.readPropertyValueText(f,a)??"":"",i=s.slice().sort((f,p)=>o(f).localeCompare(o(p))),c=q(e,la),l=this.readEmbeddedCarrier(e,kn);return c&&l?this.renderTrajectoryChart(i,c,l,e,n,o):`<section class="kan-timeline"><ol>
131
- ${i.map(f=>{let p=this.uriOf(f),m=p.package_,g=p.version,b=this.resourceHref({publisher:ue(f),package_:m,name:f.name,...g?{version:g}:{}},n),k=o(f),v=k?`<span class="kan-timeline-date">${h(k)}</span>`:"",y=g?bn(g):f.name;return`<li class="kan-timeline-node"><a href="${h(b)}"><span class="kan-timeline-key">${h(y)}</span>${v}</a></li>`}).join(`
132
- `)}
133
- </ol></section>`}async renderTrajectoryChart(e,n,t,a,s,o){let i=a,c=this.readEmbeddedCarrier(a,Zn),l=this.readEmbeddedCarrier(a,ua),d=this.readEmbeddedCarrier(a,da),f=ae(i,jo),p=ka(i,wo),m=ka(i,_o),g=e.length,b=await this.collectTrackedSeries(e,n,t,{hueBy:c,lowerPath:l,upperPath:d});if(b.length===0)return"<!-- LookRenderer.Timeline: no tracked series -->";let k=[];for(let U of b){for(let M of U.points)M!==null&&k.push(M);for(let M of U.lower??[])M!==null&&k.push(M);for(let M of U.upper??[])M!==null&&k.push(M)}if(k.length===0)return"<!-- LookRenderer.Timeline: no metric values -->";let v=Math.min(...k),y=Math.max(...k);y-v<1e-9&&(v-=.5,y+=.5);let K=(y-v)*.08,E=p!==void 0?p:v-K,O=m!==void 0?m:y+K;O-E<1e-9&&(O=E+1);let C=1e3,T=440,_={top:28,right:24,bottom:56,left:52},W=C-_.left-_.right,P=T-_.top-_.bottom,V=U=>g<=1?_.left+W/2:_.left+U/(g-1)*W,L=U=>_.top+(1-(U-E)/(O-E))*P,j=(U,M)=>U.hue!==void 0?U.hue:Math.round(M*360/b.length),N=[];for(let U=0;U<5;U++){let M=E+U*(O-E)/4,me=L(M);N.push(`<line x1="${_.left}" y1="${me.toFixed(1)}" x2="${(C-_.right).toFixed(1)}" y2="${me.toFixed(1)}" class="kan-fan-grid"/>`),N.push(`<text x="${(_.left-8).toFixed(1)}" y="${(me+4).toFixed(1)}" class="kan-fan-axis" text-anchor="end">${M.toFixed(2)}</text>`)}let R=[];e.forEach((U,M)=>{let me=this.hrefForSubject(U,s),ce=this.uriOf(U).version,se=ce?bn(ce):"",de=V(M),oe=Fn(o(U));R.push(`<a href="${h(me)}" class="kan-fan-xtick"><line x1="${de.toFixed(1)}" y1="${_.top}" x2="${de.toFixed(1)}" y2="${(T-_.bottom).toFixed(1)}" class="kan-fan-vline"/><text x="${de.toFixed(1)}" y="${(T-_.bottom+20).toFixed(1)}" class="kan-fan-xlabel" text-anchor="middle">${Ue(se||U.name)}</text>`+(oe?`<text x="${de.toFixed(1)}" y="${(T-_.bottom+36).toFixed(1)}" class="kan-fan-xdate" text-anchor="middle">${Ue(oe)}</text>`:"")+"</a>")});let I=[];b.forEach((U,M)=>{if(!U.lower||!U.upper)return;let me=j(U,M),ce=[],se=[];for(let oe=0;oe<g;oe++){let Ee=U.upper[oe],ve=U.lower[oe];Ee==null||ve===null||ve===void 0||(ce.push(`${V(oe).toFixed(1)},${L(Ee).toFixed(1)}`),se.unshift(`${V(oe).toFixed(1)},${L(ve).toFixed(1)}`))}let de=ce.concat(se);de.length<3||I.push(`<polygon class="kan-fan-band" points="${de.join(" ")}" fill="hsl(${me},65%,60%)"/>`)});let F=[];b.forEach((U,M)=>{let ce=`hsl(${j(U,M)},65%,60%)`,se=[],de=[];U.points.forEach((oe,Ee)=>{if(oe===null)return;let ve=V(Ee),he=L(oe);se.push(`${ve.toFixed(1)},${he.toFixed(1)}`),de.push(`<circle cx="${ve.toFixed(1)}" cy="${he.toFixed(1)}" r="3.5" fill="${ce}"/>`)}),se.length!==0&&F.push(`<g class="kan-fan-series" data-series="${h(U.key)}"><polyline points="${se.join(" ")}" fill="none" stroke="${ce}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`+de.join("")+"</g>")});let $=`<svg class="kan-fan-svg" viewBox="0 0 ${C} ${T}" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" role="img">`+N.join("")+R.join("")+I.join("")+F.join("")+"</svg>",A=f?`${h(f)}=`:"",z=b.map((U,M)=>{let me=j(U,M),ce=U.points.filter(he=>he!==null),se=ce.length?ce[0]:void 0,de=ce.length?ce[ce.length-1]:void 0,oe="";if(de!==void 0&&se!==void 0){let he=de-se;if(Math.abs(he)>=.005){let ze=he>0?"up":"down",Oe=he>0?"\u25B2":"\u25BC";oe=` <span class="kan-fan-delta ${ze}">${he>0?"+":""}${he.toFixed(2)} ${Oe}</span>`}else oe=' <span class="kan-fan-delta flat">\u2014</span>'}let Ee=de!==void 0?`${A}${de.toFixed(2)}`:"\u2014",ve=U.lastSubject&&this.isLinkable(ue(U.lastSubject),s)?`<a href="${h(this.hrefForSubject(U.lastSubject,s))}">${h(U.label)}</a>`:h(U.label);return`<div class="kan-fan-legend-item" style="--kan-fan-hue:${me}"><span class="kan-fan-swatch"></span><span class="kan-fan-legend-label">${ve}</span><span class="kan-fan-legend-cur">${Ee}${oe}</span></div>`});return`<section class="kan-fan"><div class="kan-fan-chart">${$}</div><div class="kan-fan-legend">${z.join("")}</div></section>`}resolveResourceQuery(e){let n=i=>{let c=q(i,vo);if(!c)return;let l=q(i,Cn),d=ae(i,$o),f=this.readPropertyValueText(i,So),p=f!==void 0?Number(f):NaN;return{ofClass:c,...l?{orderBy:l}:{},descending:d==="descending",...Number.isInteger(p)&&p>0?{limit:p}:{}}},t=this.readEmbeddedCarrier(e,ke);if(t)return n(t);let a=q(e,ke);if(!a)return;let s=re(this.catalog,a);return(s?ye(s).some(i=>X(i.subject,yo)):!1)&&s?n(s):{ofClass:a,descending:!1}}applyQueryShape(e,n){let t=e;if(n.orderBy){let a=s=>this.readPropertyValueText(s,n.orderBy)??"";t=t.slice().sort((s,o)=>a(s).localeCompare(a(o))),n.descending&&t.reverse()}return n.limit!==void 0&&(t=t.slice(0,n.limit)),t}renderResourceGrid(e,n,t){let a=this.resolveResourceQuery(e),s=q(e,ke)??a?.ofClass;if(!s)return"<!-- LookRenderer.ResourceGrid: no look.source -->";let o=re(this.catalog,s),i=o?$n(this.catalog,o)!==void 0:!1,c=[];if(i&&t){let d=this.readPropertyValueReferences(t,s);for(let f of d){let p=re(this.catalog,{publisher:f.subject.publisher,package_:f.subject.package_,name:f.subject.name,...f.subject.version?{version:f.subject.version}:{}});p&&c.push(p)}}else a?c=this.applyQueryShape(this.findInstancesOfClass(a.ofClass,this.readTransitive(e)),a):c=this.findInstancesOfClass(s,this.readTransitive(e));if(c.length===0)return`<!-- LookRenderer.ResourceGrid: no resources for ${s.publisher}/${s.package_}/${s.name} -->`;let l=[];for(let d of c){let f=G(this.catalog,d),p=f.label,m=f.summary,g=this.uriOf(d),b=g.package_,k=g.version,v=this.resourceHref({publisher:ue(d),package_:b,name:d.name,...k?{version:k}:{}},n),y=m?`<p class="kan-resource-card-subtitle">${h(m)}</p>`:"",K=`<h3 class="kan-resource-card-title">${h(p)}</h3>${y}`;l.push(this.isLinkable(ue(d),n)?`<a class="kan-resource-card" href="${h(v)}">${K}</a>`:`<span class="kan-resource-card">${K}</span>`)}return`<section class="kan-resource-grid">
134
- ${l.join(`
135
- `)}
136
- </section>`}readTransitive(e){let n=J(e,Vo);return n instanceof fe?n.object===!0:n instanceof Z&&n.object==="true"}findInstancesOfClass(e,n=!1){let t=n?this.descendantTypeKeys(e):new Set([te(e)]),a=[];for(let s of this.catalog)s instanceof Y&&ye(s).some(o=>t.has(te(o.subject)))&&a.push(s);return a}renderBreadcrumb(e,n,t){let s=(e.namespace||"").split("/");if(s.length<2)return"";let o=s[0],i=s[1]??"",c=i.split("@")[0]??"",l=i.split("@")[1]??"";if(!o||!c)return"";if(t?.bareOverview)return`<nav class="kan-breadcrumb"><ol>
137
- <li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>
138
- <li aria-current="page">${h(c)}</li>
139
- </ol></nav>`;let d=e.name,p=!!re(this.catalog,{publisher:o,package_:c,name:c}),m=l?`${c}@${l}`:c,g=this.resourceHref({publisher:o,package_:c,name:c,...l?{version:ot(l)}:{}},o),b=e.name===c,k=[];return k.push(`<li><a href="${h(this.publisherHref(o))}">${h(o)}</a></li>`),b?k.push(`<li aria-current="page">${h(m)}</li>`):(k.push(p?`<li><a href="${h(g)}">${h(m)}</a></li>`:`<li>${h(m)}</li>`),k.push(`<li aria-current="page">${h(d)}</li>`)),`<nav class="kan-breadcrumb"><ol>
140
- ${k.join(`
141
- `)}
142
- </ol></nav>`}renderNavGroup(e,n){let t=J(this.publisherSubject(n),Xr),a=t instanceof B?t.object??[]:t instanceof H&&t.object instanceof x?[t.object]:[];if(a.length===0)return"";let s=[];for(let o of a){if(!(o instanceof x))continue;let i=re(this.catalog,{publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name}),{href:c,label:l}=this.resolveNavEntry(o,i,n),d=this.hrefForSubject(e,n),f=c===d?' aria-current="page"':"";s.push(`<li><a class="kan-nav-link" href="${h(c)}"${f}>${h(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
143
- ${s.join(`
144
- `)}
145
- </ul></nav>`}renderSiteFooter(e){let n=J(this.publisherSubject(e),Qr),t;if(n instanceof ee?t=n.object:n instanceof H&&n.object instanceof x&&(t=re(this.catalog,{publisher:n.object.subject.publisher,package_:n.object.subject.package_,name:n.object.subject.name})),!t)return"";let a=ae(t,Jr),s=J(t,Zr),o=s instanceof B?s.object??[]:s instanceof H&&s.object instanceof x?[s.object]:[],i=[];for(let l of o){if(!(l instanceof x))continue;let d=re(this.catalog,{publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name}),{href:f,label:p}=this.resolveNavEntry(l,d,e);i.push(`<a class="kan-footer-link" href="${h(f)}">${h(p)}</a>`)}if(!a&&i.length===0)return"";let c=[];return i.length>0&&c.push(`<div class="kan-footer-links">${i.join("")}</div>`),a&&c.push(`<p class="kan-footer-text">${h(a)}</p>`),`<footer class="kan-site-footer">${c.join(`
146
- `)}</footer>`}resolveNavEntry(e,n,t){if(n&&ye(n).map(c=>c.subject).some(c=>c.publisher===Xn.publisher&&c.package_===Xn.package_&&c.name===Xn.name)){let c=ae(n,Yn),l=J(n,aa);if(l instanceof H&&l.object instanceof x){let d=l.object,f=this.readLabelForUri({publisher:d.subject.publisher,package_:d.subject.package_,name:d.subject.name});return{href:this.urlForReference(d,aa,t),label:c??f??d.subject.name}}}let a=this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,"*"),s=n?G(this.catalog,n).label:e.subject.name;return{href:a,label:s}}codeHighlighter(){return this._codeHighlighter||(this._codeHighlighter=new xn(this.collectGrammars())),this._codeHighlighter}collectGrammars(){let e=[];for(let n of this.catalog){if(!(n instanceof Y)||!ye(n).some(i=>X(i.subject,Ds)))continue;let t=ae(n,Bs);if(!t)continue;let a=J(n,Hs),s=a instanceof B?a.object??[]:[],o=[];for(let i of s){if(!(i instanceof D))continue;let c=q(i,qs),l=ae(i,Gs);!c||!l||o.push({tokenClass:c.name,pattern:l})}e.push({language:t,rules:o})}return e}renderLinks(e,n){let t=q(e,ke);if(!t)return"";let a=J(n,t),s=[];a instanceof B?s=a.object??[]:a instanceof ee?s=[a.object]:a instanceof H&&a.object instanceof x&&(s=[a.object]);let o=[];for(let i of s){let c;if(i instanceof D?c=i:i instanceof x&&(c=re(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name})),!c)continue;let l=ae(c,Ws);if(!l)continue;let d=ae(c,Yn)??l,f=ae(c,na),p=f?` title="${h(f)}"`:"";o.push(`<a class="kan-extlink" href="${h(l)}"${p} target="_blank" rel="noopener noreferrer">${h(d)}</a>`)}return o.length===0?"":`<section class="kan-extlink-row">${o.join("")}</section>`}renderMarkdown(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer.Markdown: no look.source -->";let s=J(n,a),o=new Map,i;if(s instanceof De?i=this.resolveMarkdownLinks(s,t,o):s instanceof Z?i=s.object:i=this.readPropertyValueText(n,a),!i)return"";let c=this.codeHighlighter(),l=mn(i,{highlight:(d,f)=>c.highlight(d,f)});for(let[d,f]of o){let p=new RegExp('(<a href="'+ya(d)+'">)([^<]*)(</a>)',"g");l=l.replace(p,`$1<img class="kan-md-chip" src="${h(f)}" alt="" loading="lazy">$2$3`)}return`<section class="kan-markdown">
147
- ${l}
148
- </section>`}resolveMarkdownLinks(e,n,t){let a=e.object,s=[...e.links].sort((o,i)=>i.startOffset-o.startOffset);for(let o of s){let i;if(o.target&&this.isLinkable(o.target.subject.publisher,n)){let c=o.target.subject,l=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,""),d=this.resourceHref({publisher:c.publisher,package_:c.package_,name:c.name,...c.version?{version:c.version}:{}},n);t&&t.set(d,`${d}.svg`),i=`[${l}](${d})`}else if(o.target){let c=o.target.subject;i=(o.displayText??this.readLabelForUri({publisher:c.publisher,package_:c.package_,name:c.name})??o.reference).replace(/[[\]]/g,"")}else i=o.displayText??o.reference;a=a.slice(0,o.startOffset)+i+a.slice(o.endOffset)}return a}renderRawMarkdown(e){let n=this.findCascadedLook(e);if(!n)return;let t=nt(n.declaration),a=[];for(let s of t){let o=on(s);if(!o||!X(o,ta))continue;let i=q(s,ke);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
149
-
150
- `):void 0}renderHero(e,n,t){let a=b=>{let k=J(e,b);return k instanceof fe?k.object===!0:k instanceof Z&&k.object==="true"},s=a(To),o=!s&&a(Fo),i=s||o,l=[`<header class="${s?"kan-hero kan-hero-has-avatar":o?"kan-hero kan-hero-has-icon":"kan-hero"}">`];if(i){let b=this.svgUrlForSubject(n,t),k=s?"kan-hero-avatar":"kan-hero-icon";l.push(`<img class="${k}" src="${h(b)}" alt="" loading="lazy"/>`),l.push('<div class="kan-hero-text">')}let d=q(e,Co);if(d){let b=this.readPropertyValueText(n,d);b&&l.push(`<span class="kan-hero-eyebrow">${h(Vn(b)??b)}</span>`)}let f=q(e,xo),p="";f&&(p=this.readPropertyValueText(n,f)??""),p||(p=G(this.catalog,n).label),l.push(`<h1 class="kan-hero-title">${h(Vn(p)??p)}</h1>`);let m=q(e,Uo);if(m){let b=this.readPropertyValueText(n,m);b&&l.push(`<p class="kan-hero-subtitle">${h(Vn(b)??b)}</p>`)}let g=q(e,ma);if(g){let b=this.readPropertyValueReferences(n,g);if(b.length>0){let k=b.map(v=>this.renderBadge(v,ma,t)).join("");l.push(`<div class="kan-hero-badges">${k}</div>`)}}return i&&l.push("</div>"),l.push("</header>"),l.join(`
151
- `)}renderPropertyList(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let s=this.readLabelForUri(a)??a.name,o=J(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(l=>`<li>${this.renderInlineValue(l,ke,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${h(s)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
152
- `)}renderPropertyTable(e,n,t,a=""){let s=q(e,ke);if(!s)return"<!-- LookRenderer: PropertyTable missing look.source -->";let o=this.gatherValueItems(J(n,s)).filter(d=>d instanceof D);if(o.length===0)return"";let i=this.readLabelForUri(s)??s.name,c=a?`${a}.${s.name}`:s.name,l=q(e,go);return this.renderEmbeddedTable(o,t,i,c,l)}renderEmbeddedTable(e,n,t,a,s){let o=[],i=new Set;for(let k of e)for(let v of k.statement){let y=v.predicate?.subject;if(!y||this.isMetaPredicate(y))continue;let K=`${y.publisher}/${y.package_}/${y.name}`;i.has(K)||(i.add(K),o.push({uri:{publisher:y.publisher,package_:y.package_,name:y.name},label:this.readLabelForUri(y)??y.name}))}if(o.length===0)return"";let c=e.map(k=>G(this.catalog,k).label),l=e.some((k,v)=>c[v]!==""&&c[v]!==k.name),d=!!a,f=(d?'<th class="kan-anchor-col"></th>':"")+(l?"<th></th>":"")+o.map(k=>`<th>${h(k.label)}</th>`).join(""),p=e.map((k,v)=>{let y=d&&k.name?`${a}.${k.name}`:"",K=y?` id="${h(y)}"`:"",E=d?`<td class="kan-anchor-col">${y?this.anchorLink(y):""}</td>`:"",O=l?`<th scope="row">${h(c[v]??"")}</th>`:"",C=o.map(T=>{let _=J(k,T.uri);return _?`<td>${this.tableCellValue(_,n,s)}</td>`:"<td></td>"}).join("");return`<tr${K}>${E}${O}${C}</tr>`}).join(""),m=d&&a?` id="${h(a)}"`:"",g=d&&a?this.anchorLink(a):"",b=t?`<caption>${h(t)}${g}</caption>`:"";return`<table class="kan-property-table"${m}>${b}<thead><tr>${f}</tr></thead><tbody>${p}</tbody></table>`}tableCellValue(e,n,t){if(t&&X(t,ia)){if(e instanceof ge)return this.barMarkup(String(e.object));if(e instanceof Z&&Number.isFinite(Number(e.object)))return this.barMarkup(e.object)}if(e instanceof De)return this.statementToMarkdownHtml(e,n);if(e instanceof Z)return va(e.object);if(e instanceof ge||e instanceof fe)return h(String(e.object));if(e instanceof H&&e.object instanceof x)return this.detailReferenceLink(e.object,n);if(e instanceof ee)return this.renderEmbeddedTable([e.object],n);if(e instanceof B){let a=e.object??[],s=a.filter(o=>o instanceof D);return s.length>0&&s.length===a.length?this.renderEmbeddedTable(s,n):a.map(o=>o instanceof x?this.detailReferenceLink(o,n):o instanceof D?this.renderEmbeddedTable([o],n):h(String(o))).filter(o=>o).join(", ")}return""}statementToMarkdownHtml(e,n){let t=new Map,a;if(e instanceof De?a=this.resolveMarkdownLinks(e,n,t):e instanceof Z&&(a=e.object),!a)return"";let s=this.codeHighlighter(),o=mn(a,{highlight:(i,c)=>s.highlight(i,c)});for(let[i,c]of t){let l=new RegExp('(<a href="'+ya(i)+'">)([^<]*)(</a>)',"g");o=o.replace(l,`$1<img class="kan-md-chip" src="${h(c)}" alt="" loading="lazy">$2$3`)}return o}renderBadgeRow(e,n,t){let a=q(e,ke);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let s=this.readPropertyValueReferences(n,a);return s.length===0?"":`<div class="kan-badge-row">${s.map(i=>this.renderBadge(i,ke,t)).join("")}</div>`}renderChipRow(e,n,t){let a=tt(e,Ao);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let s=[];for(let o of a){let i=J(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,l=this.renderStatementInlineValue(i,o,t);l&&s.push(`<span class="kan-chip"><span class="kan-chip-key">${h(c)}</span> <span class="kan-chip-val">${l}</span></span>`)}return s.length===0?"":`<div class="kan-chip-row">${s.join("")}</div>`}async renderReferenceList(e,n,t){let a=tt(e,ga);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let s=this.readEmbeddedCarrier(e,oa),o=this.readEmbeddedCarrier(e,mo),i=[];for(let c of a){let l=this.readPropertyValueReferences(n,c);if(l.length===0)continue;let d=this.readLabelForUri(c)??c.name;if(s){let f=[];for(let m of l)f.push(await this.renderDetailRow(m,s,o,t));let p=f.filter(m=>m).join("");p&&i.push(`<dt>${h(d)}</dt><dd><ul class="kan-ref-rows">${p}</ul></dd>`)}else{let f=l.map(p=>this.renderReferenceLink(p,ga,t)).join(", ");i.push(`<dt>${h(d)}</dt><dd>${f}</dd>`)}}return i.length===0?"":`<dl class="kan-reference-list">${i.join("")}</dl>`}async renderDetailRow(e,n,t,a){let s=re(this.catalog,{publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name,...e.subject.version?{version:e.subject.version}:{}});if(!s)return"";let o=await this.evaluateCarrier(n,s)??G(this.catalog,s).label,i="";if(t){let f=await this.evaluateCarrier(t,s);f&&(i=`<span class="kan-ref-badge">${h(f)}</span>`)}let c=`<span class="kan-ref-text">${h(o)}</span>${i}`;if(!this.isLinkable(ue(s),a))return`<li class="kan-ref-row"><span class="kan-ref-rowlink">${c}</span></li>`;let l=this.hrefForSubject(s,a),d=this.svgUrlForSubject(s,a);return`<li class="kan-ref-row"><a class="kan-ref-rowlink" href="${h(l)}"><img class="kan-ref-icon" src="${h(d)}" alt="" loading="lazy"/>`+c+"</a></li>"}readPropertyValueText(e,n){let t=J(e,n);if(t){if(t instanceof Z)return t.object;if(t instanceof ge||t instanceof fe)return String(t.object);if(t instanceof H){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof ee)return this.readEmbeddedText(t.object,0)||void 0;if(t instanceof B)return(t.object??[]).map(s=>s instanceof x?this.readLabelForUri({publisher:s.subject.publisher,package_:s.subject.package_,name:s.subject.name})??s.subject.name:s instanceof D?this.readEmbeddedText(s,0):String(s)).filter(s=>s).join(", ")}}readEmbeddedText(e,n){if(n>=pa)return"\u2026";let t=[];for(let a of e.statement){let s=a.predicate?.subject;if(!(s&&X(s,Ne)))if(a instanceof Z)t.push(a.object);else if(a instanceof ge||a instanceof fe)t.push(String(a.object));else if(a instanceof H){let o=a.object;t.push(this.readLabelForUri({publisher:o.subject.publisher,package_:o.subject.package_,name:o.subject.name})??o.subject.name)}else a instanceof ee&&t.push(this.readEmbeddedText(a.object,n+1))}return t.filter(a=>a).join(", ")}readPropertyValueReferences(e,n){let t=J(e,n);if(!t)return[];if(t instanceof H)return[t.object];if(t instanceof B){let a=[];for(let s of t.object??[])s instanceof x&&a.push(s);return a}return[]}gatherValueItems(e){return e?e instanceof B?e.object??[]:e instanceof H?[e.object]:e instanceof ee?[e.object]:e instanceof Z?[e.object]:e instanceof ge||e instanceof fe?[e.object]:[]:[]}renderInlineValue(e,n,t,a=0){return e instanceof x?this.renderReferenceLink(e,n,t):e instanceof D?this.renderEmbeddedInline(e,t,a):typeof e=="string"?h(e):typeof e=="number"||typeof e=="boolean"?h(String(e)):""}renderStatementInlineValue(e,n,t,a=0){return e instanceof Z?h(e.object):e instanceof ge||e instanceof fe?h(String(e.object)):e instanceof H?this.renderReferenceLink(e.object,n,t):e instanceof ee?this.renderEmbeddedInline(e.object,t,a):e instanceof B?(e.object??[]).map(o=>this.renderInlineValue(o,n,t,a)).filter(o=>o).join(", "):""}renderEmbeddedInline(e,n,t=0){if(t>=pa)return"\u2026";let a=[];for(let s of e.statement){let o=s.predicate?.subject;if(!o||X(o,Ne))continue;let i=this.readLabelForUri({publisher:o.publisher,package_:o.package_,name:o.name})??o.name,c=this.renderStatementInlineValue(s,o,n,t+1);c&&a.push(`<dt>${h(i)}</dt><dd>${c}</dd>`)}return a.length?`<dl class="kan-embedded">${a.join("")}</dl>`:""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name;if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-link-plain">${h(a)}</span>`;let s=this.urlForReference(e,n,t);return`<a class="kan-link" href="${h(s)}">${h(a)}</a>`}isLinkable(e,n){return this.publisherFirst||e===n}renderBadge(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,s=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=s?` title="${h(s)}"`:"";if(!this.isLinkable(e.subject.publisher,t))return`<span class="kan-badge"${o}>${h(a)}</span>`;let i=this.urlForReference(e,n,t);return`<a class="kan-badge" href="${h(i)}"${o}>${h(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return this.resourceHref({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},t,a)}getUrlFormForProperty(e){let n=re(this.catalog,e);if(!n)return"=";let t=ae(n,Mo);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).label}readCommentForUri(e){let n=re(this.catalog,e);if(n)return G(this.catalog,n).summary}};function No(r){let e=new Map;for(let n of r.statement){if(!(n instanceof ee)||!Re(n,Pn.publisher,Pn.package_,Pn.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof Z))continue;let s=a.predicate?.subject?.name;if(!s)continue;let o=a.object;e.has(s)||e.set(s,o)}}return e}function Un(r){for(let e of r.statement)if(e instanceof ee&&Re(e,Tn.publisher,Tn.package_,Tn.name))return e.object}function nt(r){for(let e of r.statement){if(!(e instanceof B)||!Re(e,et.publisher,et.package_,et.name))continue;let n=[];for(let t of e.object??[])t instanceof D&&n.push(t);return n}return[]}function on(r){for(let e of r.statement)if(e instanceof H&&!(!e.predicate?.subject||!X(e.predicate.subject,Ne))&&e.object instanceof x){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function q(r,e){for(let n of r.statement)if(n instanceof H&&Re(n,e.publisher,e.package_,e.name)&&n.object instanceof x){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function tt(r,e){for(let n of r.statement){if(!(n instanceof B)||!Re(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof x&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function J(r,e){for(let n of r.statement)if(Re(n,e.publisher,e.package_,e.name))return n}function ae(r,e){for(let n of r.statement)if(n instanceof Z&&Re(n,e.publisher,e.package_,e.name))return n.object}function On(r,e){for(let n of r.statement)if(n instanceof ee&&Re(n,e.publisher,e.package_,e.name))return n.object}function ka(r,e){for(let n of r.statement)if(n instanceof ge&&Re(n,e.publisher,e.package_,e.name))return n.object}function Do(r,e){for(let n of r.statement)if(n instanceof fe&&Re(n,e.publisher,e.package_,e.name))return n.object===!0;return!1}function Bo(r){for(let e of ye(r))if(X(e.subject,Ar)||X(e.subject,Mr))return!0;return!1}function ye(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,Ne))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function In(r){let e=[];for(let n of r.statement)if(n instanceof H){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;n.object instanceof x&&e.push(n.object)}else if(n instanceof B){if(!n.predicate?.subject||!X(n.predicate.subject,rt))continue;for(let t of n.object??[])t instanceof x&&e.push(t)}return e}function re(r,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of r)if(a instanceof Y&&a.name===e.name&&a.namespace===t)return a}for(let t of r){if(!(t instanceof Y)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function Re(r,e,n,t){let a=r.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function X(r,e){return r.publisher===e.publisher&&r.package_===e.package_&&r.name===e.name}function te(r){return`${r.publisher}/${r.package_}/${r.name}`}function Ho(r){let e=s=>s.replace(/\*\//g,"* /"),n=[];n.push(` * kanonak stylesheet \u2014 ${e(r.resource.namespace)}/${e(r.resource.name)}`),n.push(" *");let t=new Map;for(let s of r.tokens.values()){let o=`${s.sourceNamespace} ${s.sourceName}`,i=t.get(o)??{count:0,level:s.level};i.count+=1,t.set(o,i)}if(t.size===0)n.push(" * :root tokens: NONE resolved");else{n.push(` * :root tokens (${r.tokens.size}):`);for(let[s,{count:o,level:i}]of t)n.push(` * ${o} from ${e(s)} (${i})`)}let a=r.baseStylesheet;if(a.css!==void 0)n.push(` * base CSS: ${e(a.sourceNamespace??"")}/base-stylesheet (${a.css.length} bytes, ${a.scope})`);else{n.push(" *"),n.push(" * !! WARNING: NO BASE STYLESHEET \u2014 this file contains only :root tokens."),n.push(" * !! Pages will appear UNSTYLED.");for(let s of r.warnings)n.push(` * !! ${e(s)}`);n.push(" * !! Full diagnostics: /.well-known/kanonak-render")}if(r.look){let s=r.look.sourceClass;n.push(` * look: ${e(s.publisher)}/${e(s.package_)}/${e(s.name)}`)}return`/*
153
- ${n.join(`
154
- `)}
155
- */`}function ue(r){let e=r.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function h(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Ue(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ha(r,e){return e==null?"":Je(e)?e.value:r==="string-literal"?typeof e=="string"?e:String(e):Array.isArray(e)?e.map(n=>Je(n)?n.value:Ue(typeof n=="string"?n:String(n))).join(""):Ue(typeof e=="string"?e:String(e))}function $a(r){if(r==null)return"";if(typeof r=="string")return r;if(typeof r=="number"||typeof r=="boolean")return String(r);if(Je(r))return r.value;if(Array.isArray(r))return r.map($a).filter(n=>n!=="").join(", ");if(r instanceof x)return r.subject.name;if(r instanceof Y||r instanceof D)return r.name??"";let e=r.value;return typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):""}function at(r,e){return r.length<=e?r:r.slice(0,e).replace(/\s+\S*$/,"")+"\u2026"}function ba(r){return r.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ya(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function va(r){let e=Vn(r);return h(e||r)}function Vn(r){let e=/^(\d{4})-(\d{2})-(\d{2})([T ]\d{2}:\d{2}(?::\d{2})?(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?$/.exec(r.trim());if(!e)return;let n=Date.parse(r);if(!Number.isFinite(n))return;let t=new Date(n),s=`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][t.getUTCMonth()]} ${t.getUTCDate()}, ${t.getUTCFullYear()}`;if(!e[4])return s;let o=t.getUTCHours(),i=(o+11)%12+1,c=o>=12?"PM":"AM";return`${s} \xB7 ${i}:${String(t.getUTCMinutes()).padStart(2,"0")} ${c} UTC`}function Fn(r){if(!r)return"";let e=/^(\d{4})-(\d{2})-(\d{2})/.exec(r);return e?`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][parseInt(e[2],10)-1]??e[2]} ${parseInt(e[3],10)}`:r}function qo(){return new Set(An.bandDispatchUris().map(r=>`${r.publisher}/${r.package_}/${r.name}`))}export{Q as a,Qo as b,Pe as c,G as d,It as e,Ft as f,Tt as g,Hn as h,pn as i,Mt as j,Ci as k,mn as l,Je as m,Ce as n,gn as o,Ln as p,Me as q,An as r,qo as s};