@mdbase-dev/sdk 0.1.0-beta.168 → 0.1.0-beta.169

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.
@@ -127,4 +127,4 @@ ${t.comment}`:t.comment}this.doc.range[2]=t.offset;break}default:this.errors.pus
127
127
  `,t)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,t.value){let i="end"in t.value?t.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else if(t.sep)t.sep.push(this.sourceToken);else{if(this.atIndentedComment(t.start,e.indent)){let o=e.items[e.items.length-2]?.value?.end;if(Array.isArray(o)){mf(o,t.start),o.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return}if(this.indent>=e.indent){let i=!this.onKeyLine&&this.indent===e.indent,o=i&&(t.sep||t.explicitKey)&&this.type!=="seq-item-ind",s=[];if(o&&t.sep&&!t.value){let r=[];for(let a=0;a<t.sep.length;++a){let p=t.sep[a];switch(p.type){case"newline":r.push(a);break;case"space":break;case"comment":p.indent>e.indent&&(r.length=0);break;default:r.length=0}}r.length>=2&&(s=t.sep.splice(r[1]))}switch(this.type){case"anchor":case"tag":o||t.value?(s.push(this.sourceToken),e.items.push({start:s}),this.onKeyLine=!0):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"explicit-key-ind":!t.sep&&!t.explicitKey?(t.start.push(this.sourceToken),t.explicitKey=!0):o||t.value?(s.push(this.sourceToken),e.items.push({start:s,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(t.explicitKey)if(t.sep)if(t.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Xr(t.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:s,key:null,sep:[this.sourceToken]}]});else if(US(t.key)&&!Xr(t.sep,"newline")){let r=ca(t.start),a=t.key,p=t.sep;p.push(this.sourceToken),delete t.key,delete t.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:a,sep:p}]})}else s.length>0?t.sep=t.sep.concat(s,this.sourceToken):t.sep.push(this.sourceToken);else if(Xr(t.start,"newline"))Object.assign(t,{key:null,sep:[this.sourceToken]});else{let r=ca(t.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:r,key:null,sep:[this.sourceToken]}]})}else t.sep?t.value||o?e.items.push({start:s,key:null,sep:[this.sourceToken]}):Xr(t.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);o||t.value?(e.items.push({start:s,key:r,sep:[]}),this.onKeyLine=!0):t.sep?this.stack.push(r):(Object.assign(t,{key:r,sep:[]}),this.onKeyLine=!0);return}default:{let r=this.startBlockValue(e);if(r){if(r.type==="block-seq"){if(!t.explicitKey&&t.sep&&!Xr(t.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else i&&e.items.push({start:s});this.stack.push(r);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){let t=e.items[e.items.length-1];switch(this.type){case"newline":if(t.value){let i="end"in t.value?t.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else t.start.push(this.sourceToken);return;case"space":case"comment":if(t.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(t.start,e.indent)){let o=e.items[e.items.length-2]?.value?.end;if(Array.isArray(o)){mf(o,t.start),o.push(this.sourceToken),e.items.pop();return}}t.start.push(this.sourceToken)}return;case"anchor":case"tag":if(t.value||this.indent<=e.indent)break;t.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;t.value||Xr(t.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return}if(this.indent>e.indent){let i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){let t=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!t||t.sep?e.items.push({start:[this.sourceToken]}):t.start.push(this.sourceToken);return;case"map-value-ind":!t||t.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):Object.assign(t,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!t||t.value?e.items.push({start:[this.sourceToken]}):t.sep?t.sep.push(this.sourceToken):t.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);!t||t.value?e.items.push({start:[],key:o,sep:[]}):t.sep?this.stack.push(o):Object.assign(t,{key:o,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}let i=this.startBlockValue(e);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let o=hf(i),s=ca(o);NS(e);let r=e.end.splice(1,e.end.length);r.push(this.sourceToken);let a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:s,key:e,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let t=this.source.indexOf(`
128
128
  `)+1;for(;t!==0;)this.onNewLine(this.offset+t),t=this.source.indexOf(`
129
129
  `,t)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let t=hf(e),i=ca(t);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let t=hf(e),i=ca(t);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,t){return this.type!=="comment"||this.indent<=t?!1:e.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}});function OE(n){let e=n.prettyErrors!==!1;return{lineCounter:n.lineCounter||e&&new jc||null,prettyErrors:e}}function mb(n,e={}){let{lineCounter:t,prettyErrors:i}=OE(e),o=new Nc(t?.addNewLine),s=new Mc(e),r=null;for(let a of s.compose(o.parse(n),!0,n.length))if(!r)r=a;else if(r.options.logLevel!=="silent"){r.errors.push(new bi(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&t&&(r.errors.forEach(Gg(n,t)),r.warnings.forEach(Gg(n,t))),r}var DS=I(()=>{sb();Cc();Rc();Cg();Te();fb();hb()});var yb=I(()=>{sb();Cc();Hg();Rc();pc();Te();Vr();gt();Kr();Hr();uf();ub();fb();hb();DS();cc()});var $S=I(()=>{yb();yb()});function Gn(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Gn.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){for(let l in n)if(!(l==="app-runtime"||l==="mobile")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n["app-runtime"]!==void 0){let l=n["app-runtime"];if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(typeof h=="string"){if(D(h)>255){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(D(h)<1){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!yn(h)){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let c={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.mobile!==void 0){let l=n.mobile;if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(typeof h=="string"){if(D(h)>255){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(D(h)<1){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!yn(h)){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let c={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Gn.errors=r,a===0}function pa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=pa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.contract_version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contract_version"},message:"must have required property 'contract_version'"};r===null?r=[l]:r.push(l),a++}if(n.required===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="contract_version"||l==="required"||l==="optional")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.contract_version!==void 0&&n.contract_version!==2){let l={instancePath:e+"/contract_version",schemaPath:"#/properties/contract_version/const",keyword:"const",params:{allowedValue:2},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.required!==void 0){let l=n.required;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/required",schemaPath:"#/properties/required/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(!(h==="collection.read"||h==="records.create"||h==="records.edit"||h==="records.delete"||h==="views.manage"||h==="definitions.manage"||h==="background.schedule"||h==="offline.replica")){let m={instancePath:e+"/required/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:FS.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/required",schemaPath:"#/properties/required/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/required",schemaPath:"#/properties/required/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.optional!==void 0){let l=n.optional;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(!(h==="collection.read"||h==="records.create"||h==="records.edit"||h==="records.delete"||h==="views.manage"||h==="definitions.manage"||h==="background.schedule"||h==="offline.replica")){let m={instancePath:e+"/optional/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:FS.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/optional",schemaPath:"#/properties/optional/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return pa.errors=r,a===0}function da(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=da.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.required===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[d]:r.push(d),a++}if(n.scope===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"scope"},message:"must have required property 'scope'"};r===null?r=[d]:r.push(d),a++}for(let d in n)if(!(d==="required"||d==="optional"||d==="scope")){let u={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),a++}if(n.required!==void 0){let d=n.required;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/required/"+m,schemaPath:"#/$defs/fileActions/items/enum",keyword:"enum",params:{allowedValues:VS.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(In(d[f],d[h])){let m={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/required",schemaPath:"#/$defs/fileActions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.optional!==void 0){let d=n.optional;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/optional/"+m,schemaPath:"#/$defs/fileActions/items/enum",keyword:"enum",params:{allowedValues:VS.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(In(d[f],d[h])){let m={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/optional",schemaPath:"#/$defs/fileActions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.scope!==void 0){let d=n.scope,u=a,f=!1,h=null,m=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}if(d.folders===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"folders"},message:"must have required property 'folders'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(!(w==="kind"||w==="folders")){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="selected_folders"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/0/properties/kind/const",keyword:"const",params:{allowedValue:"selected_folders"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}if(d.folders!==void 0){let w=d.folders;if(Array.isArray(w)){if(w.length>100){let A={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[A]:r.push(A),a++}if(w.length<1){let A={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[A]:r.push(A),a++}let g=w.length;for(let A=0;A<g;A++){let k=w[A];if(typeof k=="string"){if(D(k)>1024){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[S]:r.push(S),a++}if(D(k)<1){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[S]:r.push(S),a++}if(!QS.test(k)){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/pattern",keyword:"pattern",params:{pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"},message:'must match pattern "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"'};r===null?r=[S]:r.push(S),a++}}else{let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[S]:r.push(S),a++}}let y=w.length,v;if(y>1){let A={};for(;y--;){let k=w[y];if(typeof k=="string"){if(typeof A[k]=="number"){v=A[k];let S={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/uniqueItems",keyword:"uniqueItems",params:{i:y,j:v},message:"must NOT have duplicate items (items ## "+v+" and "+y+" are identical)"};r===null?r=[S]:r.push(S),a++;break}A[k]=y}}}}else{let g={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[g]:r.push(g),a++}}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var c=m===a;if(c){f=!0,h=0;var l=!0}let b=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(w!=="kind"){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="collection"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/1/properties/kind/const",keyword:"const",params:{allowedValue:"collection"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var c=b===a;if(c&&f?(f=!1,h=[h,1]):c&&(f=!0,h=1,l!==!0&&(l=!0)),f)a=u,r!==null&&(u?r.length=u:r=null);else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf",keyword:"oneOf",params:{passingSchemas:h},message:"must match exactly one schema in oneOf"};r===null?r=[w]:r.push(w),a++}}}else{let d={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),a++}return da.errors=r,a===0}function ua(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ua.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[c]:r.push(c),a++}if(n.path===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[c]:r.push(c),a++}if(n.predicate===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"predicate"},message:"must have required property 'predicate'"};r===null?r=[c]:r.push(c),a++}if(n.value===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="id"||c==="path"||c==="predicate"||c==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.id!==void 0){let c=n.id;if(typeof c=="string"){if(D(c)>100){let d={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!wf.test(c)){let d={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.path!==void 0){let c=n.path;if(typeof c=="string"){if(D(c)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.predicate!==void 0&&n.predicate!=="contains"){let c={instancePath:e+"/predicate",schemaPath:"#/properties/predicate/const",keyword:"const",params:{allowedValue:"contains"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.value!==void 0){let c=n.value,d=a,u=!1,f=a;if(typeof c!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof c=="number"&&isFinite(c))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof c!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(c!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return ua.errors=r,a===0}function Jn(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Jn.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.digest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="version"||l==="digest")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!vf.test(l)){let c={instancePath:e+"/version",schemaPath:"#/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.digest!==void 0){let l=n.digest;if(typeof l=="string"){if(!fa.test(l)){let c={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Jn.errors=r,a===0}function ha(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ha.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.access===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"access"},message:"must have required property 'access'"};r===null?r=[c]:r.push(c),a++}if(n.contracts===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contracts"},message:"must have required property 'contracts'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="capabilities"||c==="access"||c==="collection_kind"||c==="people"||c==="files"||c==="configuration"||c==="contracts")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.capabilities!==void 0&&(pa(n.capabilities,{instancePath:e+"/capabilities",parentData:n,parentDataProperty:"capabilities",rootData:o,dynamicAnchors:s})||(r=r===null?pa.errors:r.concat(pa.errors),a=r.length)),n.access!==void 0&&n.access!=="full_collection"){let c={instancePath:e+"/access",schemaPath:"#/properties/access/const",keyword:"const",params:{allowedValue:"full_collection"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.collection_kind!==void 0&&n.collection_kind!=="hosted"){let c={instancePath:e+"/collection_kind",schemaPath:"#/properties/collection_kind/const",keyword:"const",params:{allowedValue:"hosted"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.people!==void 0){let c=n.people,d=a,u=!1,f=a;if(c&&typeof c=="object"&&!Array.isArray(c)&&c.required===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf/0/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[m]:r.push(m),a++}var l=f===a;u=u||l;let h=a;if(c&&typeof c=="object"&&!Array.isArray(c)&&c.optional===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf/1/required",keyword:"required",params:{missingProperty:"optional"},message:"must have required property 'optional'"};r===null?r=[m]:r.push(m),a++}var l=h===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let m={instancePath:e+"/people",schemaPath:"#/properties/people/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[m]:r.push(m),a++}if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.version===void 0){let m={instancePath:e+"/people",schemaPath:"#/properties/people/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[m]:r.push(m),a++}for(let m in c)if(!(m==="version"||m==="required"||m==="optional")){let b={instancePath:e+"/people",schemaPath:"#/properties/people/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};r===null?r=[b]:r.push(b),a++}if(c.version!==void 0&&c.version!==1){let m={instancePath:e+"/people/version",schemaPath:"#/properties/people/properties/version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[m]:r.push(m),a++}if(c.required!==void 0){let m=c.required;if(Array.isArray(m)){if(m.length<1){let y={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[y]:r.push(y),a++}let b=m.length;for(let y=0;y<b;y++){let v=m[y];if(!(v==="identity"||v==="members")){let A={instancePath:e+"/people/required/"+y,schemaPath:"#/$defs/peoplePermissions/items/enum",keyword:"enum",params:{allowedValues:BS.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[A]:r.push(A),a++}}let w=m.length,g;if(w>1){e:for(;w--;)for(g=w;g--;)if(In(m[w],m[g])){let y={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/uniqueItems",keyword:"uniqueItems",params:{i:w,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+w+" are identical)"};r===null?r=[y]:r.push(y),a++;break e}}}else{let b={instancePath:e+"/people/required",schemaPath:"#/$defs/peoplePermissions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}}if(c.optional!==void 0){let m=c.optional;if(Array.isArray(m)){if(m.length<1){let y={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[y]:r.push(y),a++}let b=m.length;for(let y=0;y<b;y++){let v=m[y];if(!(v==="identity"||v==="members")){let A={instancePath:e+"/people/optional/"+y,schemaPath:"#/$defs/peoplePermissions/items/enum",keyword:"enum",params:{allowedValues:BS.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[A]:r.push(A),a++}}let w=m.length,g;if(w>1){e:for(;w--;)for(g=w;g--;)if(In(m[w],m[g])){let y={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/uniqueItems",keyword:"uniqueItems",params:{i:w,j:g},message:"must NOT have duplicate items (items ## "+g+" and "+w+" are identical)"};r===null?r=[y]:r.push(y),a++;break e}}}else{let b={instancePath:e+"/people/optional",schemaPath:"#/$defs/peoplePermissions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}}}else{let m={instancePath:e+"/people",schemaPath:"#/properties/people/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[m]:r.push(m),a++}}if(n.files!==void 0&&(da(n.files,{instancePath:e+"/files",parentData:n,parentDataProperty:"files",rootData:o,dynamicAnchors:s})||(r=r===null?da.errors:r.concat(da.errors),a=r.length)),n.configuration!==void 0){let c=n.configuration;if(Array.isArray(c)){if(c.length>50){let u={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[u]:r.push(u),a++}let d=c.length;for(let u=0;u<d;u++)ua(c[u],{instancePath:e+"/configuration/"+u,parentData:c,parentDataProperty:u,rootData:o,dynamicAnchors:s})||(r=r===null?ua.errors:r.concat(ua.errors),a=r.length)}else{let d={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),a++}}if(n.contracts!==void 0){let c=n.contracts;if(Array.isArray(c)){if(c.length>20){let h={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[h]:r.push(h),a++}let d=c.length;for(let h=0;h<d;h++)Jn(c[h],{instancePath:e+"/contracts/"+h,parentData:c,parentDataProperty:h,rootData:o,dynamicAnchors:s})||(r=r===null?Jn.errors:r.concat(Jn.errors),a=r.length);let u=c.length,f;if(u>1){e:for(;u--;)for(f=u;f--;)if(In(c[u],c[f])){let h={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/uniqueItems",keyword:"uniqueItems",params:{i:u,j:f},message:"must NOT have duplicate items (items ## "+f+" and "+u+" are identical)"};r===null?r=[h]:r.push(h),a++;break e}}}else{let d={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return ha.errors=r,a===0}function ma(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ma.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.requirement===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"requirement"},message:"must have required property 'requirement'"};r===null?r=[c]:r.push(c),a++}if(n.operation===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"operation"},message:"must have required property 'operation'"};r===null?r=[c]:r.push(c),a++}if(n.path===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[c]:r.push(c),a++}if(n.value===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="requirement"||c==="operation"||c==="path"||c==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.requirement!==void 0){let c=n.requirement;if(typeof c=="string"){if(D(c)>100){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!wf.test(c)){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.operation!==void 0&&n.operation!=="set_add"){let c={instancePath:e+"/operation",schemaPath:"#/properties/operation/const",keyword:"const",params:{allowedValue:"set_add"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.path!==void 0){let c=n.path;if(typeof c=="string"){if(D(c)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.value!==void 0){let c=n.value,d=a,u=!1,f=a;if(typeof c!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof c=="number"&&isFinite(c))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof c!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(c!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return ma.errors=r,a===0}function ya(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ya.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[c]:r.push(c),a++}if(n.mode===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[c]:r.push(c),a++}if(n.source===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[c]:r.push(c),a++}if(n.target===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[c]:r.push(c),a++}if(n.digest===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="kind"||c==="mode"||c==="upgrade_from"||c==="source"||c==="target"||c==="digest")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.kind!==void 0){let c=n.kind;if(!(c==="contract"||c==="type"||c==="schema")){let d={instancePath:e+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:WS.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[d]:r.push(d),a++}}if(n.mode!==void 0){let c=n.mode;if(!(c==="managed"||c==="seed")){let d={instancePath:e+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:WS.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[d]:r.push(d),a++}}if(n.upgrade_from!==void 0){let c=n.upgrade_from,d=a,u=!1,f=null,h=a;if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.digest===void 0){let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[b]:r.push(b),a++}if(c.document===void 0){let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[b]:r.push(b),a++}for(let b in c)if(!(b==="digest"||b==="document"||b==="version")){let w={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};r===null?r=[w]:r.push(w),a++}if(c.digest!==void 0){let b=c.digest;if(typeof b=="string"){if(!fa.test(b)){let w={instancePath:e+"/upgrade_from/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/upgrade_from/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}}if(c.document!==void 0){let b=c.document;if(typeof b=="string"){if(D(b)>262144){let w={instancePath:e+"/upgrade_from/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/upgrade_from/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}}if(c.version!==void 0){let b=c.version;if(!(typeof b=="number"&&!(b%1)&&!isNaN(b)&&isFinite(b))){let w={instancePath:e+"/upgrade_from/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[w]:r.push(w),a++}if(typeof b=="number"&&isFinite(b)&&(b<1||isNaN(b))){let w={instancePath:e+"/upgrade_from/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[w]:r.push(w),a++}}}else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/$defs/typePackUpgradeBaseline/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[b]:r.push(b),a++}var l=h===a;l&&(u=!0,f=0);let m=a;if(Array.isArray(c)){if(c.length<1){let w={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[w]:r.push(w),a++}let b=c.length;for(let w=0;w<b;w++){let g=c[w];if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.digest===void 0){let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[y]:r.push(y),a++}if(g.document===void 0){let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="digest"||y==="document"||y==="version")){let v={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.digest!==void 0){let y=g.digest;if(typeof y=="string"){if(!fa.test(y)){let v={instancePath:e+"/upgrade_from/"+w+"/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[v]:r.push(v),a++}}else{let v={instancePath:e+"/upgrade_from/"+w+"/digest",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),a++}}if(g.document!==void 0){let y=g.document;if(typeof y=="string"){if(D(y)>262144){let v={instancePath:e+"/upgrade_from/"+w+"/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[v]:r.push(v),a++}}else{let v={instancePath:e+"/upgrade_from/"+w+"/document",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[v]:r.push(v),a++}}if(g.version!==void 0){let y=g.version;if(!(typeof y=="number"&&!(y%1)&&!isNaN(y)&&isFinite(y))){let v={instancePath:e+"/upgrade_from/"+w+"/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/type",keyword:"type",params:{type:"integer"},message:"must be integer"};r===null?r=[v]:r.push(v),a++}if(typeof y=="number"&&isFinite(y)&&(y<1||isNaN(y))){let v={instancePath:e+"/upgrade_from/"+w+"/version",schemaPath:"#/$defs/typePackUpgradeBaseline/properties/version/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/upgrade_from/"+w,schemaPath:"#/$defs/typePackUpgradeBaseline/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[b]:r.push(b),a++}var l=m===a;if(l&&u?(u=!1,f=[f,1]):l&&(u=!0,f=1),u)a=d,r!==null&&(d?r.length=d:r=null);else{let b={instancePath:e+"/upgrade_from",schemaPath:"#/properties/upgrade_from/oneOf",keyword:"oneOf",params:{passingSchemas:f},message:"must match exactly one schema in oneOf"};r===null?r=[b]:r.push(b),a++}}if(n.source!==void 0){let c=n.source;if(typeof c=="string"){if(D(c)>240){let d={instancePath:e+"/source",schemaPath:"#/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/source",schemaPath:"#/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/source",schemaPath:"#/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.target!==void 0){let c=n.target;if(typeof c=="string"){if(D(c)>240){let d={instancePath:e+"/target",schemaPath:"#/properties/target/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/target",schemaPath:"#/properties/target/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.digest!==void 0){let c=n.digest;if(typeof c=="string"){if(!fa.test(c)){let d={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return ya.errors=r,a===0}function ga(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ga.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[l]:r.push(l),a++}if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="kind"||l==="id"||l==="version"||l==="name"||l==="description"||l==="resources"||eP.test(l))){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.kind!==void 0&&n.kind!=="mdbase.type-pack"){let l={instancePath:e+"/kind",schemaPath:"#/properties/kind/const",keyword:"const",params:{allowedValue:"mdbase.type-pack"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!vf.test(l)){let c={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.name!==void 0){let l=n.name;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.description!==void 0){let l=n.description;if(typeof l=="string"){if(D(l)>500){let c={instancePath:e+"/description",schemaPath:"#/properties/description/maxLength",keyword:"maxLength",params:{limit:500},message:"must NOT have more than 500 characters"};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let c=l.length;for(let d=0;d<c;d++)ya(l[d],{instancePath:e+"/resources/"+d,parentData:l,parentDataProperty:d,rootData:o,dynamicAnchors:s})||(r=r===null?ya.errors:r.concat(ya.errors),a=r.length)}else{let c={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ga.errors=r,a===0}function ba(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ba.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest"},message:"must have required property 'manifest'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}if(n.provides===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"provides"},message:"must have required property 'provides'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="manifest"||l==="resources"||l==="provides")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.manifest!==void 0&&(ga(n.manifest,{instancePath:e+"/manifest",parentData:n,parentDataProperty:"manifest",rootData:o,dynamicAnchors:s})||(r=r===null?ga.errors:r.concat(ga.errors),a=r.length)),n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let c=l.length;for(let d=0;d<c;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.document===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="source"||f==="document")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(D(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(D(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.document!==void 0){let f=u.document;if(typeof f=="string"){if(D(f)>262144){let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let c={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.provides!==void 0){let l=n.provides;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++)Jn(l[f],{instancePath:e+"/provides/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Jn.errors:r.concat(Jn.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/provides",schemaPath:"#/properties/provides/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ba.errors=r,a===0}function wa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=wa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.event===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"event"},message:"must have required property 'event'"};r===null?r=[l]:r.push(l),a++}if(n.presentation===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"presentation"},message:"must have required property 'presentation'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="event"||l==="if"||l==="debounce"||l==="minimum_interval"||l==="presentation")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.event!==void 0&&(Jn(n.event,{instancePath:e+"/event",parentData:n,parentDataProperty:"event",rootData:o,dynamicAnchors:s})||(r=r===null?Jn.errors:r.concat(Jn.errors),a=r.length)),n.if!==void 0){let l=n.if;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.$expr===void 0){let c={instancePath:e+"/if",schemaPath:"#/properties/if/required",keyword:"required",params:{missingProperty:"$expr"},message:"must have required property '$expr'"};r===null?r=[c]:r.push(c),a++}for(let c in l)if(c!=="$expr"){let d={instancePath:e+"/if",schemaPath:"#/properties/if/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.$expr!==void 0){let c=l.$expr;if(typeof c=="string"){if(D(c)>4096){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/maxLength",keyword:"maxLength",params:{limit:4096},message:"must NOT have more than 4096 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e+"/if",schemaPath:"#/properties/if/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}}if(n.debounce!==void 0){let l=n.debounce;if(typeof l=="string"){if(!yf.test(l)){let c={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.minimum_interval!==void 0){let l=n.minimum_interval;if(typeof l=="string"){if(!yf.test(l)){let c={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.presentation!==void 0){let l=n.presentation;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.title===void 0){let c={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};r===null?r=[c]:r.push(c),a++}for(let c in l)if(!(c==="title"||c==="body"||c==="tag")){let d={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.title!==void 0){let c=l.title;if(typeof c=="string"){if(D(c)>80){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.body!==void 0){let c=l.body;if(typeof c=="string"){if(D(c)>160){let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/maxLength",keyword:"maxLength",params:{limit:160},message:"must NOT have more than 160 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.tag!==void 0){let c=l.tag;if(typeof c=="string"){if(D(c)>80){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return wa.errors=r,a===0}function gf(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=gf.evaluated;p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0);let l=a,c=!1,d=null,u=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.homepage===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"homepage"},message:"must have required property 'homepage'"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"redirect_uris"},message:"must have required property 'redirect_uris'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="web"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/0/properties/distribution/const",keyword:"const",params:{allowedValue:"web"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.project_url!==void 0){let g={instancePath:e+"/project_url",schemaPath:"#/oneOf/0/properties/project_url/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=u===a;if(m){c=!0,d=0;var f={};f.distribution=!0,f.homepage=!0,f.redirect_uris=!0,f.project_url=!0}let h=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.distribution===void 0){let g={instancePath:e,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"distribution"},message:"must have required property 'distribution'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="portable"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/1/properties/distribution/const",keyword:"const",params:{allowedValue:"portable"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.platform!==void 0){let g={instancePath:e+"/platform",schemaPath:"#/oneOf/1/properties/platform/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g={instancePath:e+"/homepage",schemaPath:"#/oneOf/1/properties/homepage/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris!==void 0){let g={instancePath:e+"/redirect_uris",schemaPath:"#/oneOf/1/properties/redirect_uris/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=h===a;if(m&&c?(c=!1,d=[d,1]):m&&(c=!0,d=1,f!==!0&&(f=f||{},f.distribution=!0,f.platform=!0,f.homepage=!0,f.redirect_uris=!0)),c)a=l,r!==null&&(l?r.length=l:r=null);else{let g={instancePath:e,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:d},message:"must match exactly one schema in oneOf"};r===null?r=[g]:r.push(g),a++}if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest_version===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest_version"},message:"must have required property 'manifest_version'"};r===null?r=[g]:r.push(g),a++}if(n.id===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[g]:r.push(g),a++}if(n.name===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[g]:r.push(g),a++}for(let g in n)if(!JS.call(zS.properties,g)){let y={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),a++}if(n.manifest_version!==void 0&&n.manifest_version!==1){let g={instancePath:e+"/manifest_version",schemaPath:"#/properties/manifest_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0){let g=n.distribution;if(!(g==="web"||g==="portable")){let y={instancePath:e+"/distribution",schemaPath:"#/properties/distribution/enum",keyword:"enum",params:{allowedValues:zS.properties.distribution.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),a++}}if(n.id!==void 0){let g=n.id;if(typeof g=="string"){if(D(g)>150){let y={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:150},message:"must NOT have more than 150 characters"};r===null?r=[y]:r.push(y),a++}if(D(g)<5){let y={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:5},message:"must NOT have fewer than 5 characters"};r===null?r=[y]:r.push(y),a++}if(!XS.test(g)){let y={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"},message:'must match pattern "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.name!==void 0){let g=n.name;if(typeof g=="string"){if(D(g)>100){let y={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[y]:r.push(y),a++}if(D(g)<1){let y={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.platform!==void 0&&n.platform!=="native"){let g={instancePath:e+"/platform",schemaPath:"#/properties/platform/const",keyword:"const",params:{allowedValue:"native"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g=n.homepage;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.project_url!==void 0){let g=n.project_url;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.icon!==void 0){let g=n.icon;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.redirect_uris!==void 0){let g=n.redirect_uris;if(Array.isArray(g)){if(g.length>10){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/maxItems",keyword:"maxItems",params:{limit:10},message:"must NOT have more than 10 items"};r===null?r=[k]:r.push(k),a++}if(g.length<1){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),a++}let y=g.length;for(let k=0;k<y;k++){let S=g[k];if(typeof S=="string"){if(!yn(S)){let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[x]:r.push(x),a++}}else{let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[x]:r.push(x),a++}}let v=g.length,A;if(v>1){let k={};for(;v--;){let S=g[v];if(typeof S=="string"){if(typeof k[S]=="number"){A=k[S];let x={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/uniqueItems",keyword:"uniqueItems",params:{i:v,j:A},message:"must NOT have duplicate items (items ## "+A+" and "+v+" are identical)"};r===null?r=[x]:r.push(x),a++;break}k[S]=v}}}}else{let y={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[y]:r.push(y),a++}}if(n.installation_origins!==void 0){let g=n.installation_origins;if(g&&typeof g=="object"&&!Array.isArray(g)){for(let y in g)if(!(y==="lab"||y==="staging"||y==="production")){let v={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}g.lab!==void 0&&(Gn(g.lab,{instancePath:e+"/installation_origins/lab",parentData:g,parentDataProperty:"lab",rootData:o,dynamicAnchors:s})||(r=r===null?Gn.errors:r.concat(Gn.errors),a=r.length)),g.staging!==void 0&&(Gn(g.staging,{instancePath:e+"/installation_origins/staging",parentData:g,parentDataProperty:"staging",rootData:o,dynamicAnchors:s})||(r=r===null?Gn.errors:r.concat(Gn.errors),a=r.length)),g.production!==void 0&&(Gn(g.production,{instancePath:e+"/installation_origins/production",parentData:g,parentDataProperty:"production",rootData:o,dynamicAnchors:s})||(r=r===null?Gn.errors:r.concat(Gn.errors),a=r.length))}else{let y={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.requirements!==void 0&&(ha(n.requirements,{instancePath:e+"/requirements",parentData:n,parentDataProperty:"requirements",rootData:o,dynamicAnchors:s})||(r=r===null?ha.errors:r.concat(ha.errors),a=r.length)),n.provisions!==void 0){let g=n.provisions;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.type_packs===void 0){let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/required",keyword:"required",params:{missingProperty:"type_packs"},message:"must have required property 'type_packs'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="configuration"||y==="type_packs")){let v={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.configuration!==void 0){let y=g.configuration;if(Array.isArray(y)){if(y.length>50){let A={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)ma(y[A],{instancePath:e+"/provisions/configuration/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?ma.errors:r.concat(ma.errors),a=r.length)}else{let v={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.type_packs!==void 0){let y=g.type_packs;if(Array.isArray(y)){if(y.length>20){let A={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)ba(y[A],{instancePath:e+"/provisions/type_packs/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?ba.errors:r.concat(ba.errors),a=r.length)}else{let v={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.notifications!==void 0){let g=n.notifications;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.criteria===void 0){let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/required",keyword:"required",params:{missingProperty:"criteria"},message:"must have required property 'criteria'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="criteria"||y==="native_delivery")){let v={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.criteria!==void 0){let y=g.criteria;if(Array.isArray(y)){if(y.length>50){let A={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)wa(y[A],{instancePath:e+"/notifications/criteria/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?wa.errors:r.concat(wa.errors),a=r.length)}else{let v={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.native_delivery!==void 0){let y=g.native_delivery,v=a,A=!1,k=null,S=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"firebase_project_id"},message:"must have required property 'firebase_project_id'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="firebase_project_id")){let C={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[C]:r.push(C),a++}if(y.mode!==void 0&&y.mode!=="managed_fcm"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/mode/const",keyword:"const",params:{allowedValue:"managed_fcm"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id!==void 0){let P=y.firebase_project_id;if(typeof P=="string"){if(D(P)>63){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/maxLength",keyword:"maxLength",params:{limit:63},message:"must NOT have more than 63 characters"};r===null?r=[C]:r.push(C),a++}if(D(P)<6){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/minLength",keyword:"minLength",params:{limit:6},message:"must NOT have fewer than 6 characters"};r===null?r=[C]:r.push(C),a++}if(!ZS.test(P)){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"},message:'must match pattern "^[a-z][a-z0-9-]*[a-z0-9]$"'};r===null?r=[C]:r.push(C),a++}}else{let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[C]:r.push(C),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=S===a;if(w){A=!0,k=0;var b=!0}let x=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.url===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"url"},message:"must have required property 'url'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="url")){let C={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[C]:r.push(C),a++}if(y.mode!==void 0&&y.mode!=="webhook"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/mode/const",keyword:"const",params:{allowedValue:"webhook"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.url!==void 0){let P=y.url;if(typeof P=="string"){if(!Zr.test(P)){let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[C]:r.push(C),a++}if(!yn(P)){let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[C]:r.push(C),a++}}else{let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[C]:r.push(C),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=x===a;if(w&&A?(A=!1,k=[k,1]):w&&(A=!0,k=1,b!==!0&&(b=!0)),A)a=v,r!==null&&(v?r.length=v:r=null);else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf",keyword:"oneOf",params:{passingSchemas:k},message:"must match exactly one schema in oneOf"};r===null?r=[P]:r.push(P),a++}}}else{let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let g={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),a++}return gf.errors=r,a===0}function Yn(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Yn.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){for(let l in n)if(!(l==="app-runtime"||l==="mobile")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n["app-runtime"]!==void 0){let l=n["app-runtime"];if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(typeof h=="string"){if(D(h)>255){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(D(h)<1){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!yn(h)){let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/app-runtime/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let c={instancePath:e+"/app-runtime",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.mobile!==void 0){let l=n.mobile;if(Array.isArray(l)){if(l.length>16){let f={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/maxItems",keyword:"maxItems",params:{limit:16},message:"must NOT have more than 16 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(typeof h=="string"){if(D(h)>255){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/maxLength",keyword:"maxLength",params:{limit:255},message:"must NOT have more than 255 characters"};r===null?r=[m]:r.push(m),a++}if(D(h)<1){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[m]:r.push(m),a++}if(!yn(h)){let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[m]:r.push(m),a++}}else{let m={instancePath:e+"/mobile/"+f,schemaPath:"#/$defs/installationOrigins/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){let f={};for(;d--;){let h=l[d];if(typeof h=="string"){if(typeof f[h]=="number"){u=f[h];let m={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[m]:r.push(m),a++;break}f[h]=d}}}}else{let c={instancePath:e+"/mobile",schemaPath:"#/$defs/installationOrigins/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Yn.errors=r,a===0}function va(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=va.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.contract_version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contract_version"},message:"must have required property 'contract_version'"};r===null?r=[l]:r.push(l),a++}if(n.required===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"required"},message:"must have required property 'required'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="contract_version"||l==="required"||l==="optional")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.contract_version!==void 0&&n.contract_version!==1){let l={instancePath:e+"/contract_version",schemaPath:"#/properties/contract_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.required!==void 0){let l=n.required;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/required",schemaPath:"#/properties/required/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(!(h==="collection.inspect"||h==="records.watch"||h==="records.read"||h==="records.query"||h==="records.validate"||h==="records.create"||h==="records.update"||h==="records.delete"||h==="records.rename"||h==="views.list"||h==="views.execute"||h==="views.source.read"||h==="views.source.create"||h==="views.source.update"||h==="views.source.delete"||h==="definitions.contracts.current"||h==="definitions.read"||h==="definitions.create"||h==="definitions.update"||h==="definitions.type-pack.inspect"||h==="definitions.type-pack.apply"||h==="collection.setup.apply"||h==="timers.list"||h==="timers.put"||h==="timers.cancel"||h==="timers.reconcile"||h==="sync.offline-replica"||h==="notifications.background-delivery"||h==="files.list"||h==="files.read"||h==="files.add"||h==="files.replace"||h==="files.move"||h==="files.delete")){let m={instancePath:e+"/required/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:HS.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/required",schemaPath:"#/properties/required/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/required",schemaPath:"#/properties/required/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.optional!==void 0){let l=n.optional;if(Array.isArray(l)){if(l.length>32){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/maxItems",keyword:"maxItems",params:{limit:32},message:"must NOT have more than 32 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++){let h=l[f];if(!(h==="collection.inspect"||h==="records.watch"||h==="records.read"||h==="records.query"||h==="records.validate"||h==="records.create"||h==="records.update"||h==="records.delete"||h==="records.rename"||h==="views.list"||h==="views.execute"||h==="views.source.read"||h==="views.source.create"||h==="views.source.update"||h==="views.source.delete"||h==="definitions.contracts.current"||h==="definitions.read"||h==="definitions.create"||h==="definitions.update"||h==="definitions.type-pack.inspect"||h==="definitions.type-pack.apply"||h==="collection.setup.apply"||h==="timers.list"||h==="timers.put"||h==="timers.cancel"||h==="timers.reconcile"||h==="sync.offline-replica"||h==="notifications.background-delivery"||h==="files.list"||h==="files.read"||h==="files.add"||h==="files.replace"||h==="files.move"||h==="files.delete")){let m={instancePath:e+"/optional/"+f,schemaPath:"#/$defs/applicationCapability/enum",keyword:"enum",params:{allowedValues:HS.enum},message:"must be equal to one of the allowed values"};r===null?r=[m]:r.push(m),a++}}let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/optional",schemaPath:"#/properties/optional/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/optional",schemaPath:"#/properties/optional/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return va.errors=r,a===0}function _a(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=_a.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.actions===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"actions"},message:"must have required property 'actions'"};r===null?r=[d]:r.push(d),a++}if(n.scope===void 0){let d={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"scope"},message:"must have required property 'scope'"};r===null?r=[d]:r.push(d),a++}for(let d in n)if(!(d==="actions"||d==="scope")){let u={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};r===null?r=[u]:r.push(u),a++}if(n.actions!==void 0){let d=n.actions;if(Array.isArray(d)){if(d.length>6){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/maxItems",keyword:"maxItems",params:{limit:6},message:"must NOT have more than 6 items"};r===null?r=[m]:r.push(m),a++}if(d.length<1){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[m]:r.push(m),a++}let u=d.length;for(let m=0;m<u;m++){let b=d[m];if(!(b==="list"||b==="read"||b==="add"||b==="replace"||b==="move"||b==="delete")){let w={instancePath:e+"/actions/"+m,schemaPath:"#/properties/actions/items/enum",keyword:"enum",params:{allowedValues:EE.properties.actions.items.enum},message:"must be equal to one of the allowed values"};r===null?r=[w]:r.push(w),a++}}let f=d.length,h;if(f>1){e:for(;f--;)for(h=f;h--;)if(In(d[f],d[h])){let m={instancePath:e+"/actions",schemaPath:"#/properties/actions/uniqueItems",keyword:"uniqueItems",params:{i:f,j:h},message:"must NOT have duplicate items (items ## "+h+" and "+f+" are identical)"};r===null?r=[m]:r.push(m),a++;break e}}}else{let u={instancePath:e+"/actions",schemaPath:"#/properties/actions/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[u]:r.push(u),a++}}if(n.scope!==void 0){let d=n.scope,u=a,f=!1,h=null,m=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}if(d.folders===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/required",keyword:"required",params:{missingProperty:"folders"},message:"must have required property 'folders'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(!(w==="kind"||w==="folders")){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="selected_folders"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/0/properties/kind/const",keyword:"const",params:{allowedValue:"selected_folders"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}if(d.folders!==void 0){let w=d.folders;if(Array.isArray(w)){if(w.length>100){let A={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[A]:r.push(A),a++}if(w.length<1){let A={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[A]:r.push(A),a++}let g=w.length;for(let A=0;A<g;A++){let k=w[A];if(typeof k=="string"){if(D(k)>1024){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[S]:r.push(S),a++}if(D(k)<1){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[S]:r.push(S),a++}if(!QS.test(k)){let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/pattern",keyword:"pattern",params:{pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"},message:'must match pattern "^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"'};r===null?r=[S]:r.push(S),a++}}else{let S={instancePath:e+"/scope/folders/"+A,schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[S]:r.push(S),a++}}let y=w.length,v;if(y>1){let A={};for(;y--;){let k=w[y];if(typeof k=="string"){if(typeof A[k]=="number"){v=A[k];let S={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/uniqueItems",keyword:"uniqueItems",params:{i:y,j:v},message:"must NOT have duplicate items (items ## "+v+" and "+y+" are identical)"};r===null?r=[S]:r.push(S),a++;break}A[k]=y}}}}else{let g={instancePath:e+"/scope/folders",schemaPath:"#/$defs/fileScope/oneOf/0/properties/folders/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[g]:r.push(g),a++}}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var c=m===a;if(c){f=!0,h=0;var l=!0}let b=a;if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.kind===void 0){let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[w]:r.push(w),a++}for(let w in d)if(w!=="kind"){let g={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:w},message:"must NOT have additional properties"};r===null?r=[g]:r.push(g),a++}if(d.kind!==void 0&&d.kind!=="collection"){let w={instancePath:e+"/scope/kind",schemaPath:"#/$defs/fileScope/oneOf/1/properties/kind/const",keyword:"const",params:{allowedValue:"collection"},message:"must be equal to constant"};r===null?r=[w]:r.push(w),a++}}else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[w]:r.push(w),a++}var c=b===a;if(c&&f?(f=!1,h=[h,1]):c&&(f=!0,h=1,l!==!0&&(l=!0)),f)a=u,r!==null&&(u?r.length=u:r=null);else{let w={instancePath:e+"/scope",schemaPath:"#/$defs/fileScope/oneOf",keyword:"oneOf",params:{passingSchemas:h},message:"must match exactly one schema in oneOf"};r===null?r=[w]:r.push(w),a++}}}else{let d={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[d]:r.push(d),a++}return _a.errors=r,a===0}function Aa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Aa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[c]:r.push(c),a++}if(n.path===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[c]:r.push(c),a++}if(n.predicate===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"predicate"},message:"must have required property 'predicate'"};r===null?r=[c]:r.push(c),a++}if(n.value===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="id"||c==="path"||c==="predicate"||c==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.id!==void 0){let c=n.id;if(typeof c=="string"){if(D(c)>100){let d={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!wf.test(c)){let d={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.path!==void 0){let c=n.path;if(typeof c=="string"){if(D(c)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.predicate!==void 0&&n.predicate!=="contains"){let c={instancePath:e+"/predicate",schemaPath:"#/properties/predicate/const",keyword:"const",params:{allowedValue:"contains"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.value!==void 0){let c=n.value,d=a,u=!1,f=a;if(typeof c!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof c=="number"&&isFinite(c))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof c!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(c!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return Aa.errors=r,a===0}function Xn(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Xn.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.digest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="version"||l==="digest")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!vf.test(l)){let c={instancePath:e+"/version",schemaPath:"#/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.digest!==void 0){let l=n.digest;if(typeof l=="string"){if(!fa.test(l)){let c={instancePath:e+"/digest",schemaPath:"#/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/digest",schemaPath:"#/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Xn.errors=r,a===0}function ka(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=ka.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.access===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"access"},message:"must have required property 'access'"};r===null?r=[l]:r.push(l),a++}if(n.contracts===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"contracts"},message:"must have required property 'contracts'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="capabilities"||l==="access"||l==="collection_kind"||l==="files"||l==="configuration"||l==="contracts")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.capabilities!==void 0&&(va(n.capabilities,{instancePath:e+"/capabilities",parentData:n,parentDataProperty:"capabilities",rootData:o,dynamicAnchors:s})||(r=r===null?va.errors:r.concat(va.errors),a=r.length)),n.access!==void 0&&n.access!=="full_collection"){let l={instancePath:e+"/access",schemaPath:"#/properties/access/const",keyword:"const",params:{allowedValue:"full_collection"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.collection_kind!==void 0&&n.collection_kind!=="hosted"){let l={instancePath:e+"/collection_kind",schemaPath:"#/properties/collection_kind/const",keyword:"const",params:{allowedValue:"hosted"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.files!==void 0&&(_a(n.files,{instancePath:e+"/files",parentData:n,parentDataProperty:"files",rootData:o,dynamicAnchors:s})||(r=r===null?_a.errors:r.concat(_a.errors),a=r.length)),n.configuration!==void 0){let l=n.configuration;if(Array.isArray(l)){if(l.length>50){let d={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[d]:r.push(d),a++}let c=l.length;for(let d=0;d<c;d++)Aa(l[d],{instancePath:e+"/configuration/"+d,parentData:l,parentDataProperty:d,rootData:o,dynamicAnchors:s})||(r=r===null?Aa.errors:r.concat(Aa.errors),a=r.length)}else{let c={instancePath:e+"/configuration",schemaPath:"#/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.contracts!==void 0){let l=n.contracts;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++)Xn(l[f],{instancePath:e+"/contracts/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Xn.errors:r.concat(Xn.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/contracts",schemaPath:"#/properties/contracts/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return ka.errors=r,a===0}function Sa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Sa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.requirement===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"requirement"},message:"must have required property 'requirement'"};r===null?r=[c]:r.push(c),a++}if(n.operation===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"operation"},message:"must have required property 'operation'"};r===null?r=[c]:r.push(c),a++}if(n.path===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"path"},message:"must have required property 'path'"};r===null?r=[c]:r.push(c),a++}if(n.value===void 0){let c={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};r===null?r=[c]:r.push(c),a++}for(let c in n)if(!(c==="requirement"||c==="operation"||c==="path"||c==="value")){let d={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(n.requirement!==void 0){let c=n.requirement;if(typeof c=="string"){if(D(c)>100){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}if(!wf.test(c)){let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},message:'must match pattern "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"'};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/requirement",schemaPath:"#/properties/requirement/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.operation!==void 0&&n.operation!=="set_add"){let c={instancePath:e+"/operation",schemaPath:"#/properties/operation/const",keyword:"const",params:{allowedValue:"set_add"},message:"must be equal to constant"};r===null?r=[c]:r.push(c),a++}if(n.path!==void 0){let c=n.path;if(typeof c=="string"){if(D(c)>1024){let d={instancePath:e+"/path",schemaPath:"#/properties/path/maxLength",keyword:"maxLength",params:{limit:1024},message:"must NOT have more than 1024 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/path",schemaPath:"#/properties/path/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/path",schemaPath:"#/properties/path/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(n.value!==void 0){let c=n.value,d=a,u=!1,f=a;if(typeof c!="string"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[w]:r.push(w),a++}var l=f===a;u=u||l;let h=a;if(!(typeof c=="number"&&isFinite(c))){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/1/type",keyword:"type",params:{type:"number"},message:"must be number"};r===null?r=[w]:r.push(w),a++}var l=h===a;u=u||l;let m=a;if(typeof c!="boolean"){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/2/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};r===null?r=[w]:r.push(w),a++}var l=m===a;u=u||l;let b=a;if(c!==null){let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf/3/type",keyword:"type",params:{type:"null"},message:"must be null"};r===null?r=[w]:r.push(w),a++}var l=b===a;if(u=u||l,u)a=d,r!==null&&(d?r.length=d:r=null);else{let w={instancePath:e+"/value",schemaPath:"#/$defs/configurationValue/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};r===null?r=[w]:r.push(w),a++}}}else{let c={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}return Sa.errors=r,a===0}function Pa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Pa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.kind===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[l]:r.push(l),a++}if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.version===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="kind"||l==="id"||l==="version"||l==="name"||l==="description"||l==="resources"||eP.test(l))){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.kind!==void 0&&n.kind!=="mdbase.type-pack"){let l={instancePath:e+"/kind",schemaPath:"#/properties/kind/const",keyword:"const",params:{allowedValue:"mdbase.type-pack"},message:"must be equal to constant"};r===null?r=[l]:r.push(l),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.version!==void 0){let l=n.version;if(typeof l=="string"){if(!vf.test(l)){let c={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/pattern",keyword:"pattern",params:{pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},message:'must match pattern "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/version",schemaPath:"#/$defs/contract/properties/version/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.name!==void 0){let l=n.name;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.description!==void 0){let l=n.description;if(typeof l=="string"){if(D(l)>500){let c={instancePath:e+"/description",schemaPath:"#/properties/description/maxLength",keyword:"maxLength",params:{limit:500},message:"must NOT have more than 500 characters"};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let c=l.length;for(let d=0;d<c;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.kind===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};r===null?r=[f]:r.push(f),a++}if(u.mode===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[f]:r.push(f),a++}if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.target===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};r===null?r=[f]:r.push(f),a++}if(u.digest===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/required",keyword:"required",params:{missingProperty:"digest"},message:"must have required property 'digest'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="kind"||f==="mode"||f==="source"||f==="target"||f==="digest")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.kind!==void 0){let f=u.kind;if(!(f==="contract"||f==="type"||f==="schema")){let h={instancePath:e+"/resources/"+d+"/kind",schemaPath:"#/$defs/typePackManifestResource/properties/kind/enum",keyword:"enum",params:{allowedValues:GS.properties.kind.enum},message:"must be equal to one of the allowed values"};r===null?r=[h]:r.push(h),a++}}if(u.mode!==void 0){let f=u.mode;if(!(f==="managed"||f==="seed")){let h={instancePath:e+"/resources/"+d+"/mode",schemaPath:"#/$defs/typePackManifestResource/properties/mode/enum",keyword:"enum",params:{allowedValues:GS.properties.mode.enum},message:"must be equal to one of the allowed values"};r===null?r=[h]:r.push(h),a++}}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(D(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(D(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackManifestResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.target!==void 0){let f=u.target;if(typeof f=="string"){if(D(f)>240){let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(D(f)<1){let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/target",schemaPath:"#/$defs/typePackManifestResource/properties/target/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.digest!==void 0){let f=u.digest;if(typeof f=="string"){if(!fa.test(f)){let h={instancePath:e+"/resources/"+d+"/digest",schemaPath:"#/$defs/typePackManifestResource/properties/digest/pattern",keyword:"pattern",params:{pattern:"^sha256:[0-9a-f]{64}$"},message:'must match pattern "^sha256:[0-9a-f]{64}$"'};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/digest",schemaPath:"#/$defs/typePackManifestResource/properties/digest/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackManifestResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let c={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Pa.errors=r,a===0}function xa(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=xa.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest"},message:"must have required property 'manifest'"};r===null?r=[l]:r.push(l),a++}if(n.resources===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resources"},message:"must have required property 'resources'"};r===null?r=[l]:r.push(l),a++}if(n.provides===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"provides"},message:"must have required property 'provides'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="manifest"||l==="resources"||l==="provides")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.manifest!==void 0&&(Pa(n.manifest,{instancePath:e+"/manifest",parentData:n,parentDataProperty:"manifest",rootData:o,dynamicAnchors:s})||(r=r===null?Pa.errors:r.concat(Pa.errors),a=r.length)),n.resources!==void 0){let l=n.resources;if(Array.isArray(l)){if(l.length>100){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/maxItems",keyword:"maxItems",params:{limit:100},message:"must NOT have more than 100 items"};r===null?r=[d]:r.push(d),a++}if(l.length<1){let d={instancePath:e+"/resources",schemaPath:"#/properties/resources/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[d]:r.push(d),a++}let c=l.length;for(let d=0;d<c;d++){let u=l[d];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.source===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"source"},message:"must have required property 'source'"};r===null?r=[f]:r.push(f),a++}if(u.document===void 0){let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/required",keyword:"required",params:{missingProperty:"document"},message:"must have required property 'document'"};r===null?r=[f]:r.push(f),a++}for(let f in u)if(!(f==="source"||f==="document")){let h={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};r===null?r=[h]:r.push(h),a++}if(u.source!==void 0){let f=u.source;if(typeof f=="string"){if(D(f)>240){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/maxLength",keyword:"maxLength",params:{limit:240},message:"must NOT have more than 240 characters"};r===null?r=[h]:r.push(h),a++}if(D(f)<1){let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/source",schemaPath:"#/$defs/typePackSourceResource/properties/source/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}if(u.document!==void 0){let f=u.document;if(typeof f=="string"){if(D(f)>262144){let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/maxLength",keyword:"maxLength",params:{limit:262144},message:"must NOT have more than 262144 characters"};r===null?r=[h]:r.push(h),a++}}else{let h={instancePath:e+"/resources/"+d+"/document",schemaPath:"#/$defs/typePackSourceResource/properties/document/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[h]:r.push(h),a++}}}else{let f={instancePath:e+"/resources/"+d,schemaPath:"#/$defs/typePackSourceResource/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[f]:r.push(f),a++}}}else{let c={instancePath:e+"/resources",schemaPath:"#/properties/resources/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}if(n.provides!==void 0){let l=n.provides;if(Array.isArray(l)){if(l.length>20){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[f]:r.push(f),a++}let c=l.length;for(let f=0;f<c;f++)Xn(l[f],{instancePath:e+"/provides/"+f,parentData:l,parentDataProperty:f,rootData:o,dynamicAnchors:s})||(r=r===null?Xn.errors:r.concat(Xn.errors),a=r.length);let d=l.length,u;if(d>1){e:for(;d--;)for(u=d;u--;)if(In(l[d],l[u])){let f={instancePath:e+"/provides",schemaPath:"#/properties/provides/uniqueItems",keyword:"uniqueItems",params:{i:d,j:u},message:"must NOT have duplicate items (items ## "+u+" and "+d+" are identical)"};r===null?r=[f]:r.push(f),a++;break e}}}else{let c={instancePath:e+"/provides",schemaPath:"#/properties/provides/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return xa.errors=r,a===0}function Ca(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=Ca.evaluated;if(p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0),n&&typeof n=="object"&&!Array.isArray(n)){if(n.id===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[l]:r.push(l),a++}if(n.event===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"event"},message:"must have required property 'event'"};r===null?r=[l]:r.push(l),a++}if(n.presentation===void 0){let l={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"presentation"},message:"must have required property 'presentation'"};r===null?r=[l]:r.push(l),a++}for(let l in n)if(!(l==="id"||l==="event"||l==="if"||l==="debounce"||l==="minimum_interval"||l==="presentation")){let c={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};r===null?r=[c]:r.push(c),a++}if(n.id!==void 0){let l=n.id;if(typeof l=="string"){if(D(l)>100){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[c]:r.push(c),a++}if(D(l)<1){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[c]:r.push(c),a++}if(!Ia.test(l)){let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/pattern",keyword:"pattern",params:{pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},message:'must match pattern "^[a-z0-9]+(?:[._-][a-z0-9]+)*$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/id",schemaPath:"#/$defs/identifier/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.event!==void 0&&(Xn(n.event,{instancePath:e+"/event",parentData:n,parentDataProperty:"event",rootData:o,dynamicAnchors:s})||(r=r===null?Xn.errors:r.concat(Xn.errors),a=r.length)),n.if!==void 0){let l=n.if;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.$expr===void 0){let c={instancePath:e+"/if",schemaPath:"#/properties/if/required",keyword:"required",params:{missingProperty:"$expr"},message:"must have required property '$expr'"};r===null?r=[c]:r.push(c),a++}for(let c in l)if(c!=="$expr"){let d={instancePath:e+"/if",schemaPath:"#/properties/if/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.$expr!==void 0){let c=l.$expr;if(typeof c=="string"){if(D(c)>4096){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/maxLength",keyword:"maxLength",params:{limit:4096},message:"must NOT have more than 4096 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/if/$expr",schemaPath:"#/properties/if/properties/%24expr/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e+"/if",schemaPath:"#/properties/if/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}}if(n.debounce!==void 0){let l=n.debounce;if(typeof l=="string"){if(!yf.test(l)){let c={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/debounce",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.minimum_interval!==void 0){let l=n.minimum_interval;if(typeof l=="string"){if(!yf.test(l)){let c={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/pattern",keyword:"pattern",params:{pattern:"^[0-9]+(ms|s|m|h|d)$"},message:'must match pattern "^[0-9]+(ms|s|m|h|d)$"'};r===null?r=[c]:r.push(c),a++}}else{let c={instancePath:e+"/minimum_interval",schemaPath:"#/$defs/duration/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[c]:r.push(c),a++}}if(n.presentation!==void 0){let l=n.presentation;if(l&&typeof l=="object"&&!Array.isArray(l)){if(l.title===void 0){let c={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};r===null?r=[c]:r.push(c),a++}for(let c in l)if(!(c==="title"||c==="body"||c==="tag")){let d={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};r===null?r=[d]:r.push(d),a++}if(l.title!==void 0){let c=l.title;if(typeof c=="string"){if(D(c)>80){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/title",schemaPath:"#/properties/presentation/properties/title/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.body!==void 0){let c=l.body;if(typeof c=="string"){if(D(c)>160){let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/maxLength",keyword:"maxLength",params:{limit:160},message:"must NOT have more than 160 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/body",schemaPath:"#/properties/presentation/properties/body/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}if(l.tag!==void 0){let c=l.tag;if(typeof c=="string"){if(D(c)>80){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/maxLength",keyword:"maxLength",params:{limit:80},message:"must NOT have more than 80 characters"};r===null?r=[d]:r.push(d),a++}if(D(c)<1){let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[d]:r.push(d),a++}}else{let d={instancePath:e+"/presentation/tag",schemaPath:"#/properties/presentation/properties/tag/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[d]:r.push(d),a++}}}else{let c={instancePath:e+"/presentation",schemaPath:"#/properties/presentation/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[c]:r.push(c),a++}}}else{let l={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[l]:r.push(l),a++}return Ca.errors=r,a===0}function bf(n,{instancePath:e="",parentData:t,parentDataProperty:i,rootData:o=n,dynamicAnchors:s={}}={}){let r=null,a=0,p=bf.evaluated;p.dynamicProps&&(p.props=void 0),p.dynamicItems&&(p.items=void 0);let l=a,c=!1,d=null,u=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.homepage===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"homepage"},message:"must have required property 'homepage'"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris===void 0){let g={instancePath:e,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"redirect_uris"},message:"must have required property 'redirect_uris'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="web"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/0/properties/distribution/const",keyword:"const",params:{allowedValue:"web"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.project_url!==void 0){let g={instancePath:e+"/project_url",schemaPath:"#/oneOf/0/properties/project_url/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=u===a;if(m){c=!0,d=0;var f={};f.distribution=!0,f.homepage=!0,f.redirect_uris=!0,f.project_url=!0}let h=a;if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.distribution===void 0){let g={instancePath:e,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"distribution"},message:"must have required property 'distribution'"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0&&n.distribution!=="portable"){let g={instancePath:e+"/distribution",schemaPath:"#/oneOf/1/properties/distribution/const",keyword:"const",params:{allowedValue:"portable"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.platform!==void 0){let g={instancePath:e+"/platform",schemaPath:"#/oneOf/1/properties/platform/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g={instancePath:e+"/homepage",schemaPath:"#/oneOf/1/properties/homepage/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}if(n.redirect_uris!==void 0){let g={instancePath:e+"/redirect_uris",schemaPath:"#/oneOf/1/properties/redirect_uris/false schema",keyword:"false schema",params:{},message:"boolean schema is false"};r===null?r=[g]:r.push(g),a++}}var m=h===a;if(m&&c?(c=!1,d=[d,1]):m&&(c=!0,d=1,f!==!0&&(f=f||{},f.distribution=!0,f.platform=!0,f.homepage=!0,f.redirect_uris=!0)),c)a=l,r!==null&&(l?r.length=l:r=null);else{let g={instancePath:e,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:d},message:"must match exactly one schema in oneOf"};r===null?r=[g]:r.push(g),a++}if(n&&typeof n=="object"&&!Array.isArray(n)){if(n.manifest_version===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"manifest_version"},message:"must have required property 'manifest_version'"};r===null?r=[g]:r.push(g),a++}if(n.id===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};r===null?r=[g]:r.push(g),a++}if(n.name===void 0){let g={instancePath:e,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};r===null?r=[g]:r.push(g),a++}for(let g in n)if(!JS.call(KS.properties,g)){let y={instancePath:e,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};r===null?r=[y]:r.push(y),a++}if(n.manifest_version!==void 0&&n.manifest_version!==1){let g={instancePath:e+"/manifest_version",schemaPath:"#/properties/manifest_version/const",keyword:"const",params:{allowedValue:1},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.distribution!==void 0){let g=n.distribution;if(!(g==="web"||g==="portable")){let y={instancePath:e+"/distribution",schemaPath:"#/properties/distribution/enum",keyword:"enum",params:{allowedValues:KS.properties.distribution.enum},message:"must be equal to one of the allowed values"};r===null?r=[y]:r.push(y),a++}}if(n.id!==void 0){let g=n.id;if(typeof g=="string"){if(D(g)>150){let y={instancePath:e+"/id",schemaPath:"#/properties/id/maxLength",keyword:"maxLength",params:{limit:150},message:"must NOT have more than 150 characters"};r===null?r=[y]:r.push(y),a++}if(D(g)<5){let y={instancePath:e+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:5},message:"must NOT have fewer than 5 characters"};r===null?r=[y]:r.push(y),a++}if(!XS.test(g)){let y={instancePath:e+"/id",schemaPath:"#/properties/id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"},message:'must match pattern "^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.name!==void 0){let g=n.name;if(typeof g=="string"){if(D(g)>100){let y={instancePath:e+"/name",schemaPath:"#/properties/name/maxLength",keyword:"maxLength",params:{limit:100},message:"must NOT have more than 100 characters"};r===null?r=[y]:r.push(y),a++}if(D(g)<1){let y={instancePath:e+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.platform!==void 0&&n.platform!=="native"){let g={instancePath:e+"/platform",schemaPath:"#/properties/platform/const",keyword:"const",params:{allowedValue:"native"},message:"must be equal to constant"};r===null?r=[g]:r.push(g),a++}if(n.homepage!==void 0){let g=n.homepage;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/homepage",schemaPath:"#/properties/homepage/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.project_url!==void 0){let g=n.project_url;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/project_url",schemaPath:"#/properties/project_url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.icon!==void 0){let g=n.icon;if(typeof g=="string"){if(!Zr.test(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[y]:r.push(y),a++}if(!yn(g)){let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[y]:r.push(y),a++}}else{let y={instancePath:e+"/icon",schemaPath:"#/properties/icon/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[y]:r.push(y),a++}}if(n.redirect_uris!==void 0){let g=n.redirect_uris;if(Array.isArray(g)){if(g.length>10){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/maxItems",keyword:"maxItems",params:{limit:10},message:"must NOT have more than 10 items"};r===null?r=[k]:r.push(k),a++}if(g.length<1){let k={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};r===null?r=[k]:r.push(k),a++}let y=g.length;for(let k=0;k<y;k++){let S=g[k];if(typeof S=="string"){if(!yn(S)){let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[x]:r.push(x),a++}}else{let x={instancePath:e+"/redirect_uris/"+k,schemaPath:"#/properties/redirect_uris/items/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[x]:r.push(x),a++}}let v=g.length,A;if(v>1){let k={};for(;v--;){let S=g[v];if(typeof S=="string"){if(typeof k[S]=="number"){A=k[S];let x={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/uniqueItems",keyword:"uniqueItems",params:{i:v,j:A},message:"must NOT have duplicate items (items ## "+A+" and "+v+" are identical)"};r===null?r=[x]:r.push(x),a++;break}k[S]=v}}}}else{let y={instancePath:e+"/redirect_uris",schemaPath:"#/properties/redirect_uris/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[y]:r.push(y),a++}}if(n.installation_origins!==void 0){let g=n.installation_origins;if(g&&typeof g=="object"&&!Array.isArray(g)){for(let y in g)if(!(y==="lab"||y==="staging"||y==="production")){let v={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}g.lab!==void 0&&(Yn(g.lab,{instancePath:e+"/installation_origins/lab",parentData:g,parentDataProperty:"lab",rootData:o,dynamicAnchors:s})||(r=r===null?Yn.errors:r.concat(Yn.errors),a=r.length)),g.staging!==void 0&&(Yn(g.staging,{instancePath:e+"/installation_origins/staging",parentData:g,parentDataProperty:"staging",rootData:o,dynamicAnchors:s})||(r=r===null?Yn.errors:r.concat(Yn.errors),a=r.length)),g.production!==void 0&&(Yn(g.production,{instancePath:e+"/installation_origins/production",parentData:g,parentDataProperty:"production",rootData:o,dynamicAnchors:s})||(r=r===null?Yn.errors:r.concat(Yn.errors),a=r.length))}else{let y={instancePath:e+"/installation_origins",schemaPath:"#/properties/installation_origins/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.requirements!==void 0&&(ka(n.requirements,{instancePath:e+"/requirements",parentData:n,parentDataProperty:"requirements",rootData:o,dynamicAnchors:s})||(r=r===null?ka.errors:r.concat(ka.errors),a=r.length)),n.provisions!==void 0){let g=n.provisions;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.type_packs===void 0){let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/required",keyword:"required",params:{missingProperty:"type_packs"},message:"must have required property 'type_packs'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="configuration"||y==="type_packs")){let v={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.configuration!==void 0){let y=g.configuration;if(Array.isArray(y)){if(y.length>50){let A={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)Sa(y[A],{instancePath:e+"/provisions/configuration/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?Sa.errors:r.concat(Sa.errors),a=r.length)}else{let v={instancePath:e+"/provisions/configuration",schemaPath:"#/properties/provisions/properties/configuration/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.type_packs!==void 0){let y=g.type_packs;if(Array.isArray(y)){if(y.length>20){let A={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/maxItems",keyword:"maxItems",params:{limit:20},message:"must NOT have more than 20 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)xa(y[A],{instancePath:e+"/provisions/type_packs/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?xa.errors:r.concat(xa.errors),a=r.length)}else{let v={instancePath:e+"/provisions/type_packs",schemaPath:"#/properties/provisions/properties/type_packs/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}}else{let y={instancePath:e+"/provisions",schemaPath:"#/properties/provisions/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}if(n.notifications!==void 0){let g=n.notifications;if(g&&typeof g=="object"&&!Array.isArray(g)){if(g.criteria===void 0){let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/required",keyword:"required",params:{missingProperty:"criteria"},message:"must have required property 'criteria'"};r===null?r=[y]:r.push(y),a++}for(let y in g)if(!(y==="criteria"||y==="native_delivery")){let v={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};r===null?r=[v]:r.push(v),a++}if(g.criteria!==void 0){let y=g.criteria;if(Array.isArray(y)){if(y.length>50){let A={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/maxItems",keyword:"maxItems",params:{limit:50},message:"must NOT have more than 50 items"};r===null?r=[A]:r.push(A),a++}let v=y.length;for(let A=0;A<v;A++)Ca(y[A],{instancePath:e+"/notifications/criteria/"+A,parentData:y,parentDataProperty:A,rootData:o,dynamicAnchors:s})||(r=r===null?Ca.errors:r.concat(Ca.errors),a=r.length)}else{let v={instancePath:e+"/notifications/criteria",schemaPath:"#/properties/notifications/properties/criteria/type",keyword:"type",params:{type:"array"},message:"must be array"};r===null?r=[v]:r.push(v),a++}}if(g.native_delivery!==void 0){let y=g.native_delivery,v=a,A=!1,k=null,S=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/required",keyword:"required",params:{missingProperty:"firebase_project_id"},message:"must have required property 'firebase_project_id'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="firebase_project_id")){let C={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[C]:r.push(C),a++}if(y.mode!==void 0&&y.mode!=="managed_fcm"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/mode/const",keyword:"const",params:{allowedValue:"managed_fcm"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.firebase_project_id!==void 0){let P=y.firebase_project_id;if(typeof P=="string"){if(D(P)>63){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/maxLength",keyword:"maxLength",params:{limit:63},message:"must NOT have more than 63 characters"};r===null?r=[C]:r.push(C),a++}if(D(P)<6){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/minLength",keyword:"minLength",params:{limit:6},message:"must NOT have fewer than 6 characters"};r===null?r=[C]:r.push(C),a++}if(!ZS.test(P)){let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/pattern",keyword:"pattern",params:{pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"},message:'must match pattern "^[a-z][a-z0-9-]*[a-z0-9]$"'};r===null?r=[C]:r.push(C),a++}}else{let C={instancePath:e+"/notifications/native_delivery/firebase_project_id",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/properties/firebase_project_id/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[C]:r.push(C),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=S===a;if(w){A=!0,k=0;var b=!0}let x=a;if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.mode===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"mode"},message:"must have required property 'mode'"};r===null?r=[P]:r.push(P),a++}if(y.url===void 0){let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/required",keyword:"required",params:{missingProperty:"url"},message:"must have required property 'url'"};r===null?r=[P]:r.push(P),a++}for(let P in y)if(!(P==="mode"||P==="url")){let C={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};r===null?r=[C]:r.push(C),a++}if(y.mode!==void 0&&y.mode!=="webhook"){let P={instancePath:e+"/notifications/native_delivery/mode",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/mode/const",keyword:"const",params:{allowedValue:"webhook"},message:"must be equal to constant"};r===null?r=[P]:r.push(P),a++}if(y.url!==void 0){let P=y.url;if(typeof P=="string"){if(!Zr.test(P)){let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/pattern",keyword:"pattern",params:{pattern:"^https://"},message:'must match pattern "^https://"'};r===null?r=[C]:r.push(C),a++}if(!yn(P)){let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/format",keyword:"format",params:{format:"uri"},message:'must match format "uri"'};r===null?r=[C]:r.push(C),a++}}else{let C={instancePath:e+"/notifications/native_delivery/url",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/properties/url/type",keyword:"type",params:{type:"string"},message:"must be string"};r===null?r=[C]:r.push(C),a++}}}else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[P]:r.push(P),a++}var w=x===a;if(w&&A?(A=!1,k=[k,1]):w&&(A=!0,k=1,b!==!0&&(b=!0)),A)a=v,r!==null&&(v?r.length=v:r=null);else{let P={instancePath:e+"/notifications/native_delivery",schemaPath:"#/$defs/nativeNotificationDelivery/oneOf",keyword:"oneOf",params:{passingSchemas:k},message:"must match exactly one schema in oneOf"};r===null?r=[P]:r.push(P),a++}}}else{let y={instancePath:e+"/notifications",schemaPath:"#/properties/notifications/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[y]:r.push(y),a++}}}else{let g={instancePath:e,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};r===null?r=[g]:r.push(g),a++}return bf.errors=r,a===0}var YS,zS,JS,D,XS,Zr,ZS,yn,BS,FS,In,VS,QS,wf,Ia,vf,fa,eP,WS,yf,tP,KS,HS,EE,GS,nP=I(()=>{"use strict";YS=gf,zS={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://mdbase.dev/connect/schemas/mdbase-app.v1.json",title:"mdbase connect bundled application manifest v1",type:"object",additionalProperties:!1,required:["manifest_version","id","name"],properties:{manifest_version:{const:1},distribution:{enum:["web","portable"],description:"Portable declarations use device authorization and do not claim a browser origin."},id:{type:"string",minLength:5,maxLength:150,pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$",description:"Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication."},name:{type:"string",minLength:1,maxLength:100},platform:{const:"native",description:"Unverified native app; permits literal IPv4 loopback HTTP on any port."},homepage:{type:"string",format:"uri",pattern:"^https://"},project_url:{type:"string",format:"uri",pattern:"^https://"},icon:{type:"string",format:"uri",pattern:"^https://"},redirect_uris:{type:"array",minItems:1,maxItems:10,uniqueItems:!0,items:{type:"string",format:"uri",description:"An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID."}},installation_origins:{type:"object",additionalProperties:!1,properties:{lab:{$ref:"#/$defs/installationOriginPolicy"},staging:{$ref:"#/$defs/installationOriginPolicy"},production:{$ref:"#/$defs/installationOriginPolicy"}}},requirements:{$ref:"#/$defs/requirements"},provisions:{type:"object",additionalProperties:!1,required:["type_packs"],properties:{configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationProvision"}},type_packs:{type:"array",maxItems:20,items:{$ref:"#/$defs/typePackProvision"}}}},notifications:{type:"object",additionalProperties:!1,required:["criteria"],properties:{criteria:{type:"array",maxItems:50,items:{$ref:"#/$defs/notificationCriterion"}},native_delivery:{$ref:"#/$defs/nativeNotificationDelivery"}}}},oneOf:[{required:["homepage","redirect_uris"],properties:{distribution:{const:"web"},homepage:!0,redirect_uris:!0,project_url:!1}},{required:["distribution"],properties:{distribution:{const:"portable"},platform:!1,homepage:!1,redirect_uris:!1}}],$defs:{installationOriginPolicy:{type:"object",additionalProperties:!1,properties:{"app-runtime":{$ref:"#/$defs/installationOrigins"},mobile:{$ref:"#/$defs/installationOrigins"}}},installationOrigins:{type:"array",maxItems:16,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:255,format:"uri"}},identifier:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},duration:{type:"string",pattern:"^[0-9]+(ms|s|m|h|d)$"},contract:{type:"object",additionalProperties:!1,required:["id","version","digest"],properties:{id:{$ref:"#/$defs/identifier"},version:{type:"string",pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},requirements:{type:"object",additionalProperties:!1,required:["access","contracts"],properties:{capabilities:{$ref:"#/$defs/capabilityRequirements"},access:{const:"full_collection",description:"Compatibility declaration for collection-level application authorization."},collection_kind:{const:"hosted",description:"Require a durable provider-backed collection with direct sync support."},people:{type:"object",additionalProperties:!1,required:["version"],anyOf:[{required:["required"]},{required:["optional"]}],properties:{version:{const:1},required:{$ref:"#/$defs/peoplePermissions"},optional:{$ref:"#/$defs/peoplePermissions"}}},files:{$ref:"#/$defs/fileRequirement"},configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationRequirement"}},contracts:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},capabilityRequirements:{type:"object",additionalProperties:!1,required:["contract_version","required"],properties:{contract_version:{const:2},required:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}},optional:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}}}},configurationValue:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},configurationRequirement:{type:"object",additionalProperties:!1,required:["id","path","predicate","value"],properties:{id:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},path:{type:"string",minLength:1,maxLength:1024},predicate:{const:"contains"},value:{$ref:"#/$defs/configurationValue"}}},configurationProvision:{type:"object",additionalProperties:!1,required:["requirement","operation","path","value"],properties:{requirement:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},operation:{const:"set_add"},path:{type:"string",minLength:1,maxLength:1024},value:{$ref:"#/$defs/configurationValue"}}},applicationCapability:{enum:["collection.read","records.create","records.edit","records.delete","views.manage","definitions.manage","background.schedule","offline.replica"]},peoplePermissions:{type:"array",minItems:1,uniqueItems:!0,items:{enum:["identity","members"]}},fileRequirement:{type:"object",additionalProperties:!1,required:["required","scope"],properties:{required:{$ref:"#/$defs/fileActions"},optional:{$ref:"#/$defs/fileActions"},scope:{$ref:"#/$defs/fileScope"}}},fileActions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},fileScope:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","folders"],properties:{kind:{const:"selected_folders"},folders:{type:"array",minItems:1,maxItems:100,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:1024,pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"}}}},{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{const:"collection"}}}]},typePackProvision:{type:"object",additionalProperties:!1,required:["manifest","resources","provides"],properties:{manifest:{$ref:"#/$defs/typePackManifest"},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackSourceResource"}},provides:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},typePackManifest:{type:"object",required:["kind","id","version","resources"],properties:{kind:{const:"mdbase.type-pack"},id:{$ref:"#/$defs/identifier"},version:{$ref:"#/$defs/contract/properties/version"},name:{type:"string",minLength:1,maxLength:100},description:{type:"string",maxLength:500},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackManifestResource"}}},patternProperties:{"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$":!0},additionalProperties:!1},typePackManifestResource:{type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},upgrade_from:{oneOf:[{$ref:"#/$defs/typePackUpgradeBaseline"},{type:"array",minItems:1,items:{$ref:"#/$defs/typePackUpgradeBaseline"}}]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},typePackUpgradeBaseline:{type:"object",additionalProperties:!1,required:["digest","document"],properties:{digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"},document:{type:"string",maxLength:262144},version:{type:"integer",minimum:1}}},typePackSourceResource:{type:"object",additionalProperties:!1,required:["source","document"],properties:{source:{type:"string",minLength:1,maxLength:240},document:{type:"string",maxLength:262144}}},notificationCriterion:{type:"object",additionalProperties:!1,required:["id","event","presentation"],properties:{id:{$ref:"#/$defs/identifier"},event:{$ref:"#/$defs/contract"},if:{type:"object",additionalProperties:!1,required:["$expr"],properties:{$expr:{type:"string",minLength:1,maxLength:4096}}},debounce:{$ref:"#/$defs/duration"},minimum_interval:{$ref:"#/$defs/duration"},presentation:{type:"object",additionalProperties:!1,required:["title"],properties:{title:{type:"string",minLength:1,maxLength:80},body:{type:"string",maxLength:160},tag:{type:"string",minLength:1,maxLength:80}}}}},nativeNotificationDelivery:{oneOf:[{type:"object",additionalProperties:!1,required:["mode","firebase_project_id"],properties:{mode:{const:"managed_fcm"},firebase_project_id:{type:"string",minLength:6,maxLength:63,pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"}}},{type:"object",additionalProperties:!1,required:["mode","url"],properties:{mode:{const:"webhook"},url:{type:"string",format:"uri",pattern:"^https://"}}}]}}},JS=Object.prototype.hasOwnProperty,D=(function(e){let t=e.length,i=0,o=0,s;for(;o<t;)i++,s=e.charCodeAt(o++),s>=55296&&s<=56319&&o<t&&(s=e.charCodeAt(o),(s&64512)===56320&&o++);return i}),XS=new RegExp("^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$","u"),Zr=new RegExp("^https://","u"),ZS=new RegExp("^[a-z][a-z0-9-]*[a-z0-9]$","u"),yn=(()=>{let n=/\/|:/,e=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;return function(i){return n.test(i)&&e.test(i)}})();Gn.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};BS={type:"array",minItems:1,uniqueItems:!0,items:{enum:["identity","members"]}},FS={enum:["collection.read","records.create","records.edit","records.delete","views.manage","definitions.manage","background.schedule","offline.replica"]},In=(function n(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var i,o,s;if(Array.isArray(e)){if(i=e.length,i!=t.length)return!1;for(o=i;o--!==0;)if(!n(e[o],t[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(s=Object.keys(e),i=s.length,i!==Object.keys(t).length)return!1;for(o=i;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[o]))return!1;for(o=i;o--!==0;){var r=s[o];if(!n(e[r],t[r]))return!1}return!0}return e!==e&&t!==t});pa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};VS={type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},QS=new RegExp("^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$","u");da.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};wf=new RegExp("^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$","u");ua.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Ia=new RegExp("^[a-z0-9]+(?:[._-][a-z0-9]+)*$","u"),vf=new RegExp("^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","u"),fa=new RegExp("^sha256:[0-9a-f]{64}$","u");Jn.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ha.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ma.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};eP=new RegExp("^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$","u"),WS={type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},upgrade_from:{oneOf:[{$ref:"#/$defs/typePackUpgradeBaseline"},{type:"array",minItems:1,items:{$ref:"#/$defs/typePackUpgradeBaseline"}}]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}};ya.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ga.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ba.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};yf=new RegExp("^[0-9]+(ms|s|m|h|d)$","u");wa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};gf.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};tP=bf,KS={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://mdbase.dev/connect/schemas/mdbase-app.legacy-v1.json",title:"mdbase connect bundled application manifest v1",type:"object",additionalProperties:!1,required:["manifest_version","id","name"],properties:{manifest_version:{const:1},distribution:{enum:["web","portable"],description:"Portable declarations use device authorization and do not claim a browser origin."},id:{type:"string",minLength:5,maxLength:150,pattern:"^[a-z][a-z0-9-]*(\\.[a-z][a-z0-9-]*){2,}$",description:"Stable reverse-domain application identifier. This is presentation metadata, not publisher authentication."},name:{type:"string",minLength:1,maxLength:100},platform:{const:"native",description:"Unverified native app; permits literal IPv4 loopback HTTP on any port."},homepage:{type:"string",format:"uri",pattern:"^https://"},project_url:{type:"string",format:"uri",pattern:"^https://"},icon:{type:"string",format:"uri",pattern:"^https://"},redirect_uris:{type:"array",minItems:1,maxItems:10,uniqueItems:!0,items:{type:"string",format:"uri",description:"An HTTPS URI on the homepage origin or a private-use scheme derived from the application ID."}},installation_origins:{type:"object",additionalProperties:!1,properties:{lab:{$ref:"#/$defs/installationOriginPolicy"},staging:{$ref:"#/$defs/installationOriginPolicy"},production:{$ref:"#/$defs/installationOriginPolicy"}}},requirements:{$ref:"#/$defs/requirements"},provisions:{type:"object",additionalProperties:!1,required:["type_packs"],properties:{configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationProvision"}},type_packs:{type:"array",maxItems:20,items:{$ref:"#/$defs/typePackProvision"}}}},notifications:{type:"object",additionalProperties:!1,required:["criteria"],properties:{criteria:{type:"array",maxItems:50,items:{$ref:"#/$defs/notificationCriterion"}},native_delivery:{$ref:"#/$defs/nativeNotificationDelivery"}}}},oneOf:[{required:["homepage","redirect_uris"],properties:{distribution:{const:"web"},homepage:!0,redirect_uris:!0,project_url:!1}},{required:["distribution"],properties:{distribution:{const:"portable"},platform:!1,homepage:!1,redirect_uris:!1}}],$defs:{installationOriginPolicy:{type:"object",additionalProperties:!1,properties:{"app-runtime":{$ref:"#/$defs/installationOrigins"},mobile:{$ref:"#/$defs/installationOrigins"}}},installationOrigins:{type:"array",maxItems:16,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:255,format:"uri"}},identifier:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z0-9]+(?:[._-][a-z0-9]+)*$"},duration:{type:"string",pattern:"^[0-9]+(ms|s|m|h|d)$"},contract:{type:"object",additionalProperties:!1,required:["id","version","digest"],properties:{id:{$ref:"#/$defs/identifier"},version:{type:"string",pattern:"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},requirements:{type:"object",additionalProperties:!1,required:["access","contracts"],properties:{capabilities:{$ref:"#/$defs/capabilityRequirements"},access:{const:"full_collection",description:"Compatibility declaration for collection-level application authorization."},collection_kind:{const:"hosted",description:"Require a durable provider-backed collection with direct sync support."},files:{$ref:"#/$defs/fileRequirement"},configuration:{type:"array",maxItems:50,items:{$ref:"#/$defs/configurationRequirement"}},contracts:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},capabilityRequirements:{type:"object",additionalProperties:!1,required:["contract_version","required"],properties:{contract_version:{const:1},required:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}},optional:{type:"array",maxItems:32,uniqueItems:!0,items:{$ref:"#/$defs/applicationCapability"}}}},configurationValue:{anyOf:[{type:"string"},{type:"number"},{type:"boolean"},{type:"null"}]},configurationRequirement:{type:"object",additionalProperties:!1,required:["id","path","predicate","value"],properties:{id:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},path:{type:"string",minLength:1,maxLength:1024},predicate:{const:"contains"},value:{$ref:"#/$defs/configurationValue"}}},configurationProvision:{type:"object",additionalProperties:!1,required:["requirement","operation","path","value"],properties:{requirement:{type:"string",minLength:1,maxLength:100,pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"},operation:{const:"set_add"},path:{type:"string",minLength:1,maxLength:1024},value:{$ref:"#/$defs/configurationValue"}}},applicationCapability:{enum:["collection.inspect","records.watch","records.read","records.query","records.validate","records.create","records.update","records.delete","records.rename","views.list","views.execute","views.source.read","views.source.create","views.source.update","views.source.delete","definitions.contracts.current","definitions.read","definitions.create","definitions.update","definitions.type-pack.inspect","definitions.type-pack.apply","collection.setup.apply","timers.list","timers.put","timers.cancel","timers.reconcile","sync.offline-replica","notifications.background-delivery","files.list","files.read","files.add","files.replace","files.move","files.delete"]},fileRequirement:{type:"object",additionalProperties:!1,required:["actions","scope"],properties:{actions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},scope:{$ref:"#/$defs/fileScope"}}},fileScope:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","folders"],properties:{kind:{const:"selected_folders"},folders:{type:"array",minItems:1,maxItems:100,uniqueItems:!0,items:{type:"string",minLength:1,maxLength:1024,pattern:"^(?!/)(?!\\.)(?!.*//)(?!.*\\\\)(?!.*/\\.)(?!(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*\\/(?:_contracts|_schemas|_types|_views|node_modules)(?:/|$))(?!.*/$).+$"}}}},{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{const:"collection"}}}]},typePackProvision:{type:"object",additionalProperties:!1,required:["manifest","resources","provides"],properties:{manifest:{$ref:"#/$defs/typePackManifest"},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackSourceResource"}},provides:{type:"array",maxItems:20,uniqueItems:!0,items:{$ref:"#/$defs/contract"}}}},typePackManifest:{type:"object",required:["kind","id","version","resources"],properties:{kind:{const:"mdbase.type-pack"},id:{$ref:"#/$defs/identifier"},version:{$ref:"#/$defs/contract/properties/version"},name:{type:"string",minLength:1,maxLength:100},description:{type:"string",maxLength:500},resources:{type:"array",minItems:1,maxItems:100,items:{$ref:"#/$defs/typePackManifestResource"}}},patternProperties:{"^x-[A-Za-z][A-Za-z0-9._:-]{0,127}$":!0},additionalProperties:!1},typePackManifestResource:{type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}},typePackSourceResource:{type:"object",additionalProperties:!1,required:["source","document"],properties:{source:{type:"string",minLength:1,maxLength:240},document:{type:"string",maxLength:262144}}},notificationCriterion:{type:"object",additionalProperties:!1,required:["id","event","presentation"],properties:{id:{$ref:"#/$defs/identifier"},event:{$ref:"#/$defs/contract"},if:{type:"object",additionalProperties:!1,required:["$expr"],properties:{$expr:{type:"string",minLength:1,maxLength:4096}}},debounce:{$ref:"#/$defs/duration"},minimum_interval:{$ref:"#/$defs/duration"},presentation:{type:"object",additionalProperties:!1,required:["title"],properties:{title:{type:"string",minLength:1,maxLength:80},body:{type:"string",maxLength:160},tag:{type:"string",minLength:1,maxLength:80}}}}},nativeNotificationDelivery:{oneOf:[{type:"object",additionalProperties:!1,required:["mode","firebase_project_id"],properties:{mode:{const:"managed_fcm"},firebase_project_id:{type:"string",minLength:6,maxLength:63,pattern:"^[a-z][a-z0-9-]*[a-z0-9]$"}}},{type:"object",additionalProperties:!1,required:["mode","url"],properties:{mode:{const:"webhook"},url:{type:"string",format:"uri",pattern:"^https://"}}}]}}};Yn.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};HS={enum:["collection.inspect","records.watch","records.read","records.query","records.validate","records.create","records.update","records.delete","records.rename","views.list","views.execute","views.source.read","views.source.create","views.source.update","views.source.delete","definitions.contracts.current","definitions.read","definitions.create","definitions.update","definitions.type-pack.inspect","definitions.type-pack.apply","collection.setup.apply","timers.list","timers.put","timers.cancel","timers.reconcile","sync.offline-replica","notifications.background-delivery","files.list","files.read","files.add","files.replace","files.move","files.delete"]};va.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};EE={type:"object",additionalProperties:!1,required:["actions","scope"],properties:{actions:{type:"array",minItems:1,maxItems:6,uniqueItems:!0,items:{enum:["list","read","add","replace","move","delete"]}},scope:{$ref:"#/$defs/fileScope"}}};_a.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Aa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Xn.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};ka.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Sa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};GS={type:"object",additionalProperties:!1,required:["kind","mode","source","target","digest"],properties:{kind:{enum:["contract","type","schema"]},mode:{enum:["managed","seed"]},source:{type:"string",minLength:1,maxLength:240},target:{type:"string",minLength:1,maxLength:240},digest:{type:"string",pattern:"^sha256:[0-9a-f]{64}$"}}};Pa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};xa.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};Ca.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1};bf.evaluated={props:!0,dynamicProps:!1,dynamicItems:!1}});var iP,rP,_f=I(()=>{iP="/settings/record_extensions",rP="yaml-document-records-v1"});function gb(n,e){let t=n===1?TE:n===2?qE:void 0;if(!(!t||!Object.hasOwn(t,e)))return[...t[e]]}var qE,oP,TE,t5,bb,Af=I(()=>{qE={"collection.read":["describe","changes","read","query","list_views","execute_view","read_view_source","validate","read_type"],"records.create":["create"],"records.edit":["update","rename"],"records.delete":["delete"],"views.manage":["create_view_source","update_view_source","delete_view_source"],"definitions.manage":["create_type","update_type","assess_type_pack","apply_type_pack"],"background.schedule":["list_timers","put_timer","cancel_timer","reconcile_timers"],"offline.replica":["sync"]},oP=["assess_collection_setup","apply_collection_setup"],TE=Object.freeze({"collection.inspect":Object.freeze(["describe"]),"records.watch":Object.freeze(["changes"]),"records.read":Object.freeze(["read"]),"records.query":Object.freeze(["query"]),"records.validate":Object.freeze(["validate"]),"records.create":Object.freeze(["create"]),"records.update":Object.freeze(["update"]),"records.delete":Object.freeze(["delete"]),"records.rename":Object.freeze(["rename"]),"views.list":Object.freeze(["list_views"]),"views.execute":Object.freeze(["execute_view"]),"views.source.read":Object.freeze(["read_view_source"]),"views.source.create":Object.freeze(["create_view_source"]),"views.source.update":Object.freeze(["update_view_source"]),"views.source.delete":Object.freeze(["delete_view_source"]),"definitions.contracts.current":Object.freeze([]),"definitions.read":Object.freeze(["read_type"]),"definitions.create":Object.freeze(["create_type"]),"definitions.update":Object.freeze(["update_type"]),"definitions.type-pack.inspect":Object.freeze(["assess_type_pack"]),"definitions.type-pack.apply":Object.freeze(["assess_type_pack","apply_type_pack"]),"collection.setup.apply":Object.freeze(["assess_collection_setup","apply_collection_setup"]),"timers.list":Object.freeze(["list_timers"]),"timers.put":Object.freeze(["put_timer"]),"timers.cancel":Object.freeze(["cancel_timer"]),"timers.reconcile":Object.freeze(["reconcile_timers"]),"sync.offline-replica":Object.freeze(["sync"]),"notifications.background-delivery":Object.freeze([]),"files.list":Object.freeze([]),"files.read":Object.freeze([]),"files.add":Object.freeze([]),"files.replace":Object.freeze([]),"files.move":Object.freeze([]),"files.delete":Object.freeze([])});t5=Object.freeze([1,2]),bb=Object.freeze(["application-authorization-v2-issuance"])});var sP=I(()=>{});var aP,wb=I(()=>{aP={access_denied:{category:"authorization",recovery:"reauthorize"},access_paused:{category:"availability",recovery:"resume_connector_access"},application_authorization_issuance_disabled:{category:"authorization",recovery:"reauthorize"},application_declaration_mismatch:{category:"authorization",recovery:"reauthorize"},application_identity_unavailable:{category:"compatibility",recovery:"upgrade_application"},application_reauthorization_required:{category:"authorization",recovery:"reauthorize"},application_semantic_version_mismatch:{category:"authorization",recovery:"reauthorize"},approval_window_blocked:{category:"authorization",recovery:"reauthorize"},authority_authorization_changed:{category:"authorization",recovery:"reauthorize"},authorization_binding_incompatible:{category:"compatibility",recovery:"upgrade_application"},authorization_cancelled:{category:"cancellation",recovery:"none"},authorization_expired:{category:"authorization",recovery:"reauthorize"},authorization_replayed:{category:"integrity",recovery:"reauthorize"},browser_required:{category:"compatibility",recovery:"none"},callback_url_required:{category:"validation",recovery:"fix_request"},capability_contract_incompatible:{category:"compatibility",recovery:"upgrade_application"},change_cursor_reset:{category:"conflict",recovery:"refresh"},collection_access_denied:{category:"authorization",recovery:"reauthorize"},collection_claimed_by_newer_runtime:{category:"compatibility",recovery:"upgrade_connector"},collection_configuration_invalid:{category:"validation",recovery:"repair_collection"},collection_contracts_missing:{category:"compatibility",recovery:"choose_collection"},collection_incompatible:{category:"compatibility",recovery:"choose_collection"},collection_invalid:{category:"validation",recovery:"repair_collection"},collection_kind_unsupported:{category:"compatibility",recovery:"choose_collection"},collection_mismatch:{category:"selection",recovery:"choose_collection"},collection_not_found:{category:"selection",recovery:"choose_collection"},collection_not_ready:{category:"selection",recovery:"choose_collection"},collection_not_selected:{category:"selection",recovery:"choose_collection"},collection_type_registry_invalid:{category:"validation",recovery:"repair_collection"},collection_unavailable:{category:"availability",recovery:"choose_collection"},collection_version_unsupported:{category:"compatibility",recovery:"upgrade_collection"},concurrent_modification:{category:"conflict",recovery:"refresh"},connector_busy:{category:"availability",recovery:"retry"},connector_identity_changed:{category:"integrity",recovery:"reauthorize"},connector_offline:{category:"availability",recovery:"retry"},connector_upgrade_required:{category:"compatibility",recovery:"upgrade_connector"},cursor_capacity_exhausted:{category:"availability",recovery:"retry"},device_authorization_failed:{category:"authorization",recovery:"reauthorize"},direct_operation_rejected:{category:"authorization",recovery:"reauthorize"},discovery_failed:{category:"availability",recovery:"retry"},durable_mutation_unsupported:{category:"compatibility",recovery:"upgrade_connector"},encrypted_relay_rejected:{category:"authorization",recovery:"reauthorize"},encryption_required:{category:"authorization",recovery:"reauthorize"},expired_token:{category:"authorization",recovery:"reauthorize"},file_changed_during_move:{category:"conflict",recovery:"refresh"},file_changed_during_read:{category:"conflict",recovery:"refresh"},file_index_warming:{category:"availability",recovery:"retry"},file_list_changed:{category:"conflict",recovery:"refresh"},file_move_failed:{category:"internal",recovery:"contact_support"},file_mutation_conflict:{category:"conflict",recovery:"resolve_conflict"},file_not_found:{category:"conflict",recovery:"refresh"},file_source_mismatch:{category:"conflict",recovery:"refresh"},file_upload_incomplete:{category:"conflict",recovery:"retry"},fresh_request_required:{category:"availability",recovery:"retry"},generation_expired:{category:"conflict",recovery:"refresh"},hosted_provider_unavailable:{category:"availability",recovery:"retry"},insufficient_access:{category:"authorization",recovery:"reauthorize"},invalid_application_authorization:{category:"validation",recovery:"fix_request"},invalid_application_manifest:{category:"validation",recovery:"fix_request"},invalid_callback:{category:"validation",recovery:"fix_request"},invalid_device_authorization_response:{category:"integrity",recovery:"contact_support"},invalid_encrypted_response:{category:"integrity",recovery:"contact_support"},invalid_loopback_url:{category:"validation",recovery:"fix_request"},invalid_mutation_id:{category:"validation",recovery:"fix_request"},invalid_operation_response:{category:"integrity",recovery:"contact_support"},invalid_path:{category:"validation",recovery:"fix_request"},invalid_preflight:{category:"conflict",recovery:"refresh"},invalid_push_payload:{category:"validation",recovery:"fix_request"},invalid_push_subscription:{category:"validation",recovery:"fix_request"},invalid_read_cursor:{category:"validation",recovery:"fix_request"},invalid_replica:{category:"authorization",recovery:"reauthorize"},invalid_request:{category:"validation",recovery:"fix_request"},invalid_token_response:{category:"integrity",recovery:"contact_support"},legacy_scope_reauthorization_required:{category:"authorization",recovery:"reauthorize"},managed_fcm_not_declared:{category:"compatibility",recovery:"fix_request"},manifest_load_failed:{category:"availability",recovery:"retry"},manifest_required:{category:"validation",recovery:"fix_request"},missing_grant_key:{category:"authorization",recovery:"reauthorize"},mutation_recovery_expired:{category:"compatibility",recovery:"none"},mutation_request_conflict:{category:"conflict",recovery:"resolve_conflict"},no_pending_mutation:{category:"conflict",recovery:"refresh"},not_authorized:{category:"authorization",recovery:"reauthorize"},not_remote_authority:{category:"compatibility",recovery:"choose_collection"},notification_criterion_not_declared:{category:"validation",recovery:"fix_request"},notification_grant_reauthorization_required:{category:"authorization",recovery:"reauthorize"},notification_reauthorization_required:{category:"authorization",recovery:"reauthorize"},notification_registration_failed:{category:"availability",recovery:"retry"},notification_unregistration_failed:{category:"availability",recovery:"retry"},notifications_not_declared:{category:"compatibility",recovery:"fix_request"},notifications_unavailable:{category:"availability",recovery:"retry"},operation_cancelled:{category:"cancellation",recovery:"none"},operation_failed:{category:"internal",recovery:"contact_support"},operation_invalid:{category:"validation",recovery:"fix_request"},operation_outcome_unknown:{category:"conflict",recovery:"resolve_outcome"},origin_denied:{category:"authorization",recovery:"reauthorize"},path_occupied:{category:"conflict",recovery:"resolve_conflict"},pending_mutation_unresolved:{category:"conflict",recovery:"resolve_outcome"},query_snapshot_changed:{category:"conflict",recovery:"refresh"},rate_limited:{category:"availability",recovery:"retry"},reconnect_required:{category:"authorization",recovery:"reauthorize"},redirect_uri_required:{category:"validation",recovery:"fix_request"},reference_updates_unsupported:{category:"compatibility",recovery:"fix_request"},registry_backup_invalid:{category:"integrity",recovery:"contact_support"},registry_busy:{category:"availability",recovery:"retry"},registry_corrupt:{category:"integrity",recovery:"repair_collection"},registry_migration_failed:{category:"internal",recovery:"contact_support"},registry_schema_incompatible:{category:"compatibility",recovery:"upgrade_connector"},relay_authorization_expired:{category:"authorization",recovery:"reauthorize"},relay_unavailable:{category:"availability",recovery:"retry"},replica_scope_denied:{category:"authorization",recovery:"reauthorize"},sandbox_unsupported:{category:"compatibility",recovery:"fix_request"},scope_changed:{category:"authorization",recovery:"reauthorize"},scope_denied:{category:"authorization",recovery:"reauthorize"},scope_epoch_stale:{category:"authorization",recovery:"reauthorize"},session_destroyed:{category:"cancellation",recovery:"none"},session_not_started:{category:"validation",recovery:"fix_request"},session_starting:{category:"availability",recovery:"retry"},stale_file_revision:{category:"conflict",recovery:"refresh"},storage_required:{category:"compatibility",recovery:"none"},sync_failed:{category:"availability",recovery:"retry"},temporarily_unavailable:{category:"availability",recovery:"retry"},timeout:{category:"availability",recovery:"retry"},timer_grant_unavailable:{category:"authorization",recovery:"reauthorize"},token_exchange_failed:{category:"availability",recovery:"retry"},transport_protocol_incompatible:{category:"compatibility",recovery:"upgrade_connector"},type_pack_provision_failed:{category:"validation",recovery:"repair_collection"},unknown_collection:{category:"selection",recovery:"choose_collection"},unsafe_file_path:{category:"validation",recovery:"fix_request"},unsupported_encryption:{category:"compatibility",recovery:"upgrade_application"},unsupported_operation:{category:"compatibility",recovery:"fix_request"}}});function LE(n,e,...[t={}]){let i=aP[n];return{problem_version:1,code:n,category:i.category,recovery:i.recovery,message:e,...t.details===void 0?{}:{details:t.details},...t.operationOutcome===void 0?{}:{operation_outcome:t.operationOutcome},...t.traceId===void 0?{}:{trace_id:t.traceId}}}function lP(n,e,...t){let i=t[0];return new vb(LE(n,e,...t),{status:i?.status,cause:i?.cause})}var vb,cP=I(()=>{wb();vb=class extends Error{problem;code;status;constructor(e,t={}){super(e.message,t.cause===void 0?void 0:{cause:t.cause}),this.problem=e,this.name="MdbaseConnectError",this.code=e.code,this.status=t.status}get retryable(){return this.problem.recovery==="retry"&&this.problem.operation_outcome!=="unknown"}get requiresAuthorization(){return this.problem.category==="authorization"}get outcomeUnknown(){return this.problem.operation_outcome==="unknown"}get recovery(){return this.problem.recovery}get details(){return this.problem.details}}});function pP(n,e={}){return{actions:[...new Set([...n.required,...e.includeOptional===!1?[]:n.optional??[]])],scope:structuredClone(n.scope)}}var a5,l5,_b=I(()=>{a5=new Uint8Array([77,68,66,70]),l5=new Uint8Array([77,68,66,82])});function hr(n){let e=n.capabilities===void 0?1:n.capabilities?.contract_version;return e!==1&&e!==2&&Oa("Unsupported declared capability contract version."),e}function Oa(n){throw lP("invalid_application_manifest",n,{details:{issues:[{path:"/requirements/capabilities",keyword:"authorizationSelection",message:n,params:{}}]}})}function uP(n,e){if(e.operations!==void 0&&e.capabilities!==void 0&&Oa("Specify operations or capabilities, not both."),e.operations!==void 0&&hr(n)!==1&&Oa("Exact operations authorization is only supported for legacy v1 declarations."),e.capabilities!==void 0){let t=new Set([...n.capabilities?.required??[],...n.capabilities?.optional??[]]);e.capabilities.some(i=>!t.has(i)||gb(hr(n),i)===void 0)&&Oa("Authorization can only include capabilities declared by the application.")}}function Ab(n,e){let{requirements:t}=n;if(uP(t,e),hr(t)===1){if(e.operations!==void 0)return[...new Set(e.operations)];if(e.capabilities===void 0)return[...dP]}let i=t.capabilities,s=[...i?.required??[],...e.capabilities??i?.optional??[]].flatMap(a=>gb(hr(t),a)??[]),r=(n.provisions?.type_packs.length??0)>0||(n.provisions?.configuration?.length??0)>0;return[...new Set([...s,...hr(t)===2&&r?oP:[]])]}function kb(n){let e=n.files;if(e)return hr(n)===1?((!("actions"in e)||"required"in e||"optional"in e)&&Oa("Legacy file declarations must use exact files.actions."),{actions:[...e.actions],scope:structuredClone(e.scope)}):("actions"in e&&Oa("V2 file declarations must use required/optional file actions."),pP(e))}var dP,fP=I(()=>{Af();_b();cP();dP=["describe","changes","read","query"]});function zE(n,e){let t=BE(e)?e:{};if(t.dry_run===!0&&$E.has(n))return null;if(n==="file_control"){let o=typeof t.type=="string"?t.type:"";return DE.has(o)?`file_control:${o}`:null}let i=UE[n];return i==="always"?n:i==="sync_action"&&t.action==="mutate"?"sync:mutate":null}function kf(n,e){return zE(n,e)!==null}function BE(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}var jE,NE,UE,DE,$E,h5,m5,Sf=I(()=>{jE=["describe","changes","read","query","list_views","execute_view","read_view_source","create_view_source","update_view_source","delete_view_source","validate","create","update","delete","rename","read_type","create_type","update_type","assess_type_pack","apply_type_pack","assess_collection_setup","apply_collection_setup","list_timers","put_timer","cancel_timer","reconcile_timers","sync"],NE=["list_files","stat_file","open_file_upload","open_file_download","move_file","delete_file","get_file_transfer_status","commit_file_upload","abort_file_transfer"],UE={describe:"never",changes:"never",read:"never",query:"never",list_views:"never",execute_view:"never",read_view_source:"never",create_view_source:"always",update_view_source:"always",delete_view_source:"always",validate:"never",create:"always",update:"always",delete:"always",rename:"always",read_type:"never",create_type:"always",update_type:"always",assess_type_pack:"never",apply_type_pack:"always",assess_collection_setup:"never",apply_collection_setup:"always",list_timers:"never",put_timer:"always",cancel_timer:"always",reconcile_timers:"always",sync:"sync_action"},DE=new Set(["open_file_upload","move_file","delete_file","commit_file_upload","abort_file_transfer"]),$E=new Set(["delete","rename"]),h5=new Set(jE),m5=new Set(NE)});var hP=I(()=>{});var b5,mP=I(()=>{b5=new TextEncoder});function bP(n,e,t=[],i=2){let o={operation_transport:Uc,authorization_binding:mr,semantic_capabilities:i},s=[...new Set(t)].filter(r=>r!==Uc).sort((r,a)=>a-r);return s.length>0&&(o.operation_transport_recovery=s),(n.some(r=>kf(r,{action:"mutate"}))||e?.actions.some(r=>r!=="list"&&r!=="read")===!0)&&(o.durable_mutation=1),o}function Pb(n){return yP.includes(n)}function wP(n){return gP.includes(n)}var Uc,VE,yP,mr,Sb,gP,WE,KE,_5,Pf=I(()=>{Sf();Uc=3,VE=2,yP=[Uc,VE],mr=5,Sb=4,gP=[mr,Sb],WE=2,KE=1,_5={operation_transport:[...yP],authorization_binding:[...gP],semantic_capabilities:[WE,1],durable_mutation:[KE]}});async function _P(n){let e=xf(n),i=new Uint8Array(await crypto.subtle.digest("SHA-256",Fo([HE,Ot(e)]))).slice(0,16);return i[6]=i[6]&15|128,i[8]=i[8]&63|128,[Dc(i.slice(0,4)),Dc(i.slice(4,6)),Dc(i.slice(6,8)),Dc(i.slice(8,10)),Dc(i.slice(10,16))].join("-")}function AP(n){let e=[xf(n.installation_signing_public_key),xf(n.grant_agreement_public_key),xf(n.grant_signing_public_key)];if(e.some((p,l)=>e.slice(l+1).some(c=>tq(p,c))))throw new Error("Application authorization keys must be distinct.");let t=xb(n.authorization_nonce),i=xb(n.code_challenge),o=n.contracts,s=o.operation_transport_recovery??[],r=n.requested_operations.some(p=>kf(p,{action:"mutate"}))||n.requested_files?.actions.some(p=>!["list","read"].includes(p))===!0;if(!wP(n.protocol_version)||t.byteLength!==32||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/u.test(n.application_declaration_id)||!/^[0-9a-f]{64}$/u.test(n.application_manifest_digest)||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/u.test(n.issued_at)||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/u.test(n.expires_at)||i.byteLength!==32||![o.operation_transport,o.authorization_binding,o.semantic_capabilities,o.durable_mutation??1].every(p=>Number.isInteger(p)&&p>0)||o.authorization_binding!==n.protocol_version||!Pb(o.operation_transport)||n.protocol_version===mr&&o.operation_transport!==Uc||s.some(p=>!Pb(p)||p===o.operation_transport)||new Set(s).size!==s.length||n.protocol_version===Sb&&s.length>0||s.length>0&&!r||(r?o.durable_mutation!==1:o.durable_mutation!==void 0)||n.requested_operations.length===0&&n.requested_files===void 0||new Set(n.requested_operations).size!==n.requested_operations.length||n.requested_operations.some(p=>!p||p.includes("\0"))||(n.flow==="authorization_code"?n.redirect_uri===void 0||n.state===void 0:n.flow!=="device_code"||n.redirect_uri!==void 0||n.state!==void 0))throw new Error("Application authorization binding is invalid.");XE(n.requested_files);let a=n.requested_operations.map(p=>Ot(new TextEncoder().encode(p)));return Fo([n.protocol_version===mr?YE:GE,vi(n.protocol_version),Ot(Cf(n.application_id)),Ot(Cf(n.authorization_id)),Ot(new TextEncoder().encode(n.application_declaration_id)),Ot(kP(n.application_manifest_digest)),Ot(Cf(n.application_installation_id)),...e.map(Ot),Ot(new TextEncoder().encode(n.flow)),Ot(t),Ot(new TextEncoder().encode(n.issued_at)),Ot(new TextEncoder().encode(n.expires_at)),vP(n.redirect_uri),vP(n.state),Ot(new TextEncoder().encode(n.code_challenge)),vi(o.operation_transport),...n.protocol_version===mr?[vi(s.length),...s.map(vi)]:[],vi(o.authorization_binding),vi(o.semantic_capabilities),JE(o.durable_mutation),vi(a.length),...a,ZE(n.requested_files),QE(n.collection_id)])}function JE(n){return n===void 0?new Uint8Array(1):Fo([new Uint8Array([1]),vi(n)])}function XE(n){if(n!==void 0&&(n.actions.length===0||new Set(n.actions).size!==n.actions.length||n.scope.kind==="selected_folders"&&(n.scope.folders.length===0||new Set(n.scope.folders).size!==n.scope.folders.length||n.scope.folders.some(e=>!e||e.includes("\0")))))throw new Error("Application authorization file request is invalid.")}function ZE(n){if(n===void 0)return new Uint8Array(1);let e=n.actions.map(t=>Ot(new TextEncoder().encode(t)));return Fo([new Uint8Array([1]),vi(e.length),...e,Ot(new TextEncoder().encode(n.scope.kind)),...n.scope.kind==="selected_folders"?[vi(n.scope.folders.length),...n.scope.folders.map(t=>Ot(new TextEncoder().encode(t)))]:[]])}function vP(n){return n===void 0?new Uint8Array(1):Fo([new Uint8Array([1]),Ot(new TextEncoder().encode(n))])}function QE(n){return n===void 0?new Uint8Array(1):Fo([new Uint8Array([1]),Ot(Cf(n))])}function xf(n){let e=xb(n);if(e.byteLength!==65||e[0]!==4)throw new Error("Application authorization public key is invalid.");return e}function xb(n){if(!/^[A-Za-z0-9_-]+$/u.test(n))throw new Error("Invalid base64url value.");let e=n.replaceAll("-","+").replaceAll("_","/"),t=e.padEnd(Math.ceil(e.length/4)*4,"="),i=Uint8Array.from(atob(t),o=>o.charCodeAt(0));if(eq(i)!==n)throw new Error("Non-canonical base64url value.");return i}function Cf(n){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu.test(n))throw new Error("Invalid UUID value.");let e=n.replaceAll("-","");return kP(e)}function kP(n){if(!/^[0-9a-f]+$/u.test(n)||n.length%2!==0)throw new Error("Invalid hexadecimal value.");return Uint8Array.from({length:n.length/2},(e,t)=>Number.parseInt(n.slice(t*2,t*2+2),16))}function Ot(n){return Fo([vi(n.byteLength),n])}function vi(n){let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n,!1),e}function Fo(n){let e=new Uint8Array(n.reduce((i,o)=>i+o.byteLength,0)),t=0;for(let i of n)e.set(i,t),t+=i.byteLength;return e}function eq(n){return btoa(String.fromCharCode(...n)).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")}function tq(n,e){return n.byteLength===e.byteLength&&n.every((t,i)=>t===e[i])}function Dc(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}var HE,GE,YE,SP=I(()=>{Sf();Pf();HE=new TextEncoder().encode("mdbase-connect application installation id v2\0"),GE=new TextEncoder().encode("mdbase-connect application authorization proof v4\0"),YE=new TextEncoder().encode("mdbase-connect application authorization proof v5\0")});var If,PP=I(()=>{If={id:"mdbase.runtime.timer.fired",version:"1.0.0",digest:"sha256:41105be7a7abf33b31ced47e1e1965242236e40ccaea286b959b0a8c591f5642"}});function CP(n,e){let t=n.protocol.slice(0,-1),i=e?.toLowerCase().split(".").reverse().join(".");return t.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(t)&&!["http","https","file","javascript","data"].includes(t)&&(!i||t===i||t.startsWith(`${i}.`))&&n.username===""&&n.password===""&&n.hostname.length>0&&n.hash===""}var nq,iq,rq,oq,sq,aq,lq,E5,cq,q5,Cb,xP,$c,zc=I(()=>{Af();sP();_f();wb();fP();_b();Sf();hP();mP();Pf();Af();SP();PP();_f();Pf();nq="contract-setup-v1",iq="file-relay-v1",rq="protocol-usage-report-v1",oq="policy-freshness-lease-v1",sq=["application-authorization-v4","authorization-activation","encrypted-relay","policy-ack"],aq=["durable-mutation-journal-v1","durable-file-lifecycle-v1","contract-metadata-read-v1"],lq="candidate-b-activation-v1",E5=[...bb,...aq,"mutation-replay-after-credential-retirement-v1",lq],cq="application-declaration-evidence-v1",q5=[...bb,cq,...sq,oq,"application-authorization-v5",nq,iq,rq,rP],Cb=1,xP="mdbase-authority-request-proof-v1",$c={version:"x-mdbase-proof-version",timestamp:"x-mdbase-proof-timestamp",nonce:"x-mdbase-proof-nonce",signature:"x-mdbase-proof-signature"}});function uq(n,e={}){return fq(n,e,!0)}function qP(n){let e=Ee(Ee(n).requirements);return e.capabilities===void 0?1:Ee(e.capabilities).contract_version}function fq(n,e,t){let i=gq(n,e.maxBytes??Ef);if(i)return Rf([i]);let o=t?qP(n):2;if(o!==1&&o!==2)return Rf([le("/requirements/capabilities/contract_version","contractVersion","must declare supported contract version 1 or 2")]);let s=Ee(n).platform==="native",r=e.allowLocal||s?Cq(n,!e.allowLocal):n,a=mq(o===1?dq:pq,r);if(!a.valid)return a;let p=[...bq(n,e.allowLocal===!0),...o===1?xq(n):Pq(n),...vq(n),...kq(n)];return p.length===0?{valid:!0,issues:[]}:Rf(p)}function Bc(n,e={}){let t=uq(n,e);if(!t.valid)throw new Ob(t.issues);return qP(n)===1?{contractVersion:1,manifest:IP(n)}:{contractVersion:2,manifest:IP(n)}}function IP(n){let e=structuredClone(n);return{...e,requirements:{configuration:[],...e.requirements},provisions:{type_packs:[],configuration:[],...e.provisions},notifications:e.notifications??{criteria:[]}}}function hq(n){return n.map(e=>`${e.path||"/"} ${e.message}`).join("; ")}function mq(n,e){if(n(e))return{valid:!0,issues:[]};let t=(n.errors??[]).map(yq),i=t.filter(o=>o.keyword!=="oneOf");return Rf(i.length>0?i:t)}function yq(n){let e=n.params;return n.keyword==="required"&&typeof e.missingProperty=="string"?{path:Rb(n.instancePath,e.missingProperty),keyword:n.keyword,message:"is required",params:e}:n.keyword==="additionalProperties"&&typeof e.additionalProperty=="string"?{path:Rb(n.instancePath,e.additionalProperty),keyword:n.keyword,message:"is not allowed",params:e}:{path:n.instancePath,keyword:n.keyword,message:n.message??"is invalid",params:e}}function Rb(n,e){let t=e.replaceAll("~","~0").replaceAll("/","~1");return`${n}/${t}`}function gq(n,e){let t=TP(n,"",new WeakSet);if(t)return t;try{let i=JSON.stringify(n),o=new TextEncoder().encode(i).byteLength;return o<=e?void 0:le("/","maxBytes",`must not exceed ${e} UTF-8 bytes`,{maxBytes:e,actualBytes:o})}catch{return le("/","json","must be serializable as JSON")}}function TP(n,e,t){if(n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n))return;if(typeof n!="object")return le(e||"/","json","must be a JSON value");if(t.has(n))return le(e||"/","json","must not contain circular references");let i=Object.getPrototypeOf(n);if(!Array.isArray(n)&&i!==Object.prototype&&i!==null)return le(e||"/","json","must be a plain JSON object");t.add(n);let o=Array.isArray(n)?n.map((s,r)=>[String(r),s]):Object.entries(n);for(let[s,r]of o){let a=TP(r,Rb(e,s),t);if(a)return a}t.delete(n)}function bq(n,e){let t=Ee(n),i=t.platform==="native";for(let[o,s]of Object.entries(Ee(t.installation_origins)))for(let[r,a]of Object.entries(Ee(s)))for(let[p,l]of a.entries()){let c=`/installation_origins/${o}/${r}/${p}`;try{if(i&&(r!=="app-runtime"||!yr(l)))return[le(c,"origin","native applications require canonical IPv4 loopback HTTP app-runtime origins")];let d=new URL(l),u=(Ib(d,o==="lab")||i&&yr(l))&&d.origin===l,f=r==="mobile"&&d.protocol==="capacitor:"&&/^[a-z0-9.-]+$/u.test(d.hostname)&&`${d.protocol}//${d.host}`===l,h=r==="app-runtime"&&/^chrome-extension:\/\/[a-p]{32}$/u.test(l);if(!u&&!f&&!h||l.includes("*")||d.username||d.password||d.search||d.hash)return[le(c,"origin","must be an exact HTTPS, loopback HTTP, mobile capacitor or Chrome extension origin without wildcards")]}catch{return[le(c,"origin","must be an exact installation origin")]}}if(t.distribution==="portable"){if(t.project_url===void 0)return t.icon===void 0?[]:[le("/icon","origin","requires a project_url on the same origin")];try{let o=new URL(String(t.project_url));return o.protocol!=="https:"?[le("/project_url","protocol","must use HTTPS")]:t.icon!==void 0&&new URL(String(t.icon)).origin!==o.origin?[le("/icon","origin","must use the project_url origin")]:[]}catch{return[le("/","url","contains an invalid URL")]}}try{let o=new URL(String(t.homepage));if(i?!Of(String(t.homepage)):!Ib(o,e))return[le("/homepage","protocol",i?"native applications require canonical IPv4 loopback HTTP":"must use HTTPS (or loopback HTTP in local mode)")];for(let[s,r]of t.redirect_uris.entries()){if(String(r).includes("*"))return[le(`/redirect_uris/${s}`,"url","must be an exact URI without wildcards")];let a=new URL(String(r));if(i&&["http:","https:"].includes(a.protocol)&&!Of(String(r)))return[le(`/redirect_uris/${s}`,"origin","native HTTP(S) redirects require canonical IPv4 loopback HTTP")];if(a.origin===o.origin&&!Ib(a,e)&&!(i&&Of(String(r))))return[le(`/redirect_uris/${s}`,"protocol","must use HTTPS (or loopback HTTP in local mode)")];let p=wq(a,String(t.id));if(a.origin!==o.origin&&!p)return[le(`/redirect_uris/${s}`,"origin","must use the homepage origin or a private-use scheme matching the application ID")]}return t.icon!==void 0&&new URL(String(t.icon)).origin!==o.origin?[le("/icon","origin","must use the homepage origin")]:[]}catch{return[le("/","url","contains an invalid URL")]}}function wq(n,e){let t=n.protocol.slice(0,-1);return CP(n)&&(t===e||t.startsWith(`${e}.`))}function vq(n){let e=Ee(n),t=Ee(e.requirements),i=Array.isArray(t.contracts)?t.contracts:[],o=new Set(i.map(p=>{let l=Ee(p);return`${l.id}@${l.version}`})),s=Ee(e.provisions),r=Array.isArray(s.type_packs)?s.type_packs:[],a=[];for(let[p,l]of r.entries()){let c=Ee(l),d=Array.isArray(c.provides)?c.provides:[];for(let u of d){let f=Ee(u);o.has(`${f.id}@${f.version}`)||a.push(le(`/provisions/type_packs/${p}/provides`,"contractRequirement","may only contain contracts required by the application"))}a.push(..._q(c,`/provisions/type_packs/${p}`))}return a}function _q(n,e=""){let t=Ee(n),i=Ee(t.manifest),o=Array.isArray(i.resources)?i.resources.map(Ee):[],s=Array.isArray(t.resources)?t.resources.map(Ee):[],r=new Map(s.map(p=>[String(p.source),p.document]));if(r.size!==s.length||new Set(o.map(p=>String(p.source))).size!==o.length||o.length!==s.length)return[le(`${e}/resources`,"resourceSet","must match manifest source paths exactly")];let a=[];for(let[p,l]of o.entries()){let c=`${e}/manifest/resources/${p}`,d=String(l.source),u=r.get(d);if(typeof u!="string"){a.push(le(`${e}/resources`,"resourceSet",`is missing manifest source ${d}`));continue}MP(u)!==l.digest&&a.push(le(`${c}/digest`,"digest","does not match the embedded document")),l.upgrade_from!==void 0&&a.push(...Aq(l,u,`${c}/upgrade_from`))}return a}function Aq(n,e,t){if(n.kind!=="type"||n.mode!=="seed")return[le(t,"seedUpgrade","is only allowed for seed types")];let i=OP(e),o=Array.isArray(n.upgrade_from),s=(o?n.upgrade_from:[n.upgrade_from]).map(Ee),r=new Set,a=[];for(let[p,l]of s.entries()){let c=o?`${t}/${p}`:t,d=String(l.document);l.digest!==MP(d)?a.push(le(`${c}/digest`,"digest","does not match the baseline document")):r.has(l.digest)?a.push(le(`${c}/digest`,"uniqueBaseline","duplicates another upgrade baseline")):l.digest===n.digest&&a.push(le(`${c}/digest`,"seedUpgrade","must not be the resource's own document")),r.add(l.digest);let u=OP(d);!i||!u||u.kind!==i.kind||u.name!==i.name?a.push(le(`${c}/document`,"seedUpgrade","must be a type document with the same kind and name as the resource")):l.version!==void 0&&u.version!==l.version&&a.push(le(`${c}/version`,"seedUpgrade","must equal the version the baseline document declares"))}return a}function OP(n){let e=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(n)?.[1];if(e===void 0)return;let t=mb(e,{uniqueKeys:!0});if(!(t.errors.length>0||!Cn(t.contents)))return{kind:t.get("kind"),name:t.get("name"),version:t.get("version")}}function MP(n){return`sha256:${bs(it(o_(n)))}`}function kq(n){let e=Ee(n),t=Ee(e.requirements),i=Ee(e.provisions),o=Array.isArray(t.configuration)?t.configuration:[],s=Array.isArray(i.configuration)?i.configuration:[],r=[],a=new Map;for(let[c,d]of o.entries()){let u=Ee(d),f=String(u.id),h=String(u.path),m=RP(h,u.value);m&&r.push(le(`/requirements/configuration/${c}/path`,"configurationPointer",m)),a.has(f)?r.push(le(`/requirements/configuration/${c}/id`,"uniqueRequirement",`duplicates configuration requirement ${f}`)):a.set(f,{path:h,value:u.value,index:c})}let p=new Set,l=new Set;for(let[c,d]of s.entries()){let u=Ee(d),f=String(u.requirement),h=String(u.path),m=RP(h,u.value);m&&r.push(le(`/provisions/configuration/${c}/path`,"configurationPointer",m));let b=a.get(f);if(!b){r.push(le(`/provisions/configuration/${c}/requirement`,"configurationRequirement",`references unknown configuration requirement ${f}`));continue}p.has(f)&&r.push(le(`/provisions/configuration/${c}/requirement`,"uniqueProvision",`configuration requirement ${f} may have exactly one provision`)),p.add(f),h!==b.path&&r.push(le(`/provisions/configuration/${c}/path`,"configurationRequirement",`must equal /requirements/configuration/${b.index}/path`)),JSON.stringify(u.value)!==JSON.stringify(b.value)&&r.push(le(`/provisions/configuration/${c}/value`,"configurationRequirement",`must equal /requirements/configuration/${b.index}/value`));let w=`${h}\0${JSON.stringify(u.value)}`;l.has(w)&&r.push(le(`/provisions/configuration/${c}`,"uniqueContribution","duplicates another configuration path and value contribution")),l.add(w)}for(let[c,d]of a)p.has(c)||r.push(le(`/requirements/configuration/${d.index}`,"configurationProvision",`requires one provision linked by id ${c}`));return r}function RP(n,e){if(n===iP)return Sq.includes(e)?void 0:"accepts only the record extensions md and base";if(!n.startsWith("/")||new TextEncoder().encode(n).byteLength>1024)return"must be a bounded RFC 6901 JSON pointer";let t=n.slice(1).split("/");if(t.length<2||t.length>16)return"must address a value below an x-* extension namespace";let i=[];for(let o of t){if(/~(?:[^01]|$)/u.test(o))return"contains an invalid RFC 6901 escape";let s=o.replaceAll("~1","/").replaceAll("~0","~");if(s.length===0||s==="-"||/^\d+$/u.test(s)||[...s].some(r=>/\p{Cc}/u.test(r)))return"contains a disallowed object-key segment";i.push(s)}return/^x-[a-z0-9][a-z0-9-]*$/u.test(i[0])?void 0:"must be inside a top-level x-* extension namespace"}function Pq(n){let e=Ee(n),t=Ee(e.requirements),i=Ee(t.capabilities),o=[];t.access!=="full_collection"&&o.push(le("/requirements/access","collectionAccess","must explicitly request full_collection; legacy or omitted access is not widened"));let s=Array.isArray(i.required)?i.required.map(String):[],a=(Array.isArray(i.optional)?i.optional.map(String):[]).find(b=>s.includes(b));a&&o.push(le("/requirements/capabilities/optional","disjoint",`must not repeat required capability ${a}`));let p=Ee(t.files),l=Array.isArray(p.required)?p.required.map(String):[],d=(Array.isArray(p.optional)?p.optional.map(String):[]).find(b=>l.includes(b));d&&o.push(le("/requirements/files/optional","disjoint",`must not repeat required file action ${d}`));let u=Ee(t.people),f=Array.isArray(u.required)?u.required.map(String):[],m=(Array.isArray(u.optional)?u.optional.map(String):[]).find(b=>f.includes(b));return m&&o.push(le("/requirements/people/optional","disjoint",`must not repeat required people permission ${m}`)),o}function xq(n){let e=Ee(n),t=Ee(e.requirements),i=Ee(t.capabilities),o=[];if(t.access!=="full_collection"&&o.push(le("/requirements/access","collectionAccess","must explicitly request full_collection; legacy or omitted access is not widened")),Object.keys(i).length===0)return o;let s=Array.isArray(i.required)?i.required.map(String):[],r=Array.isArray(i.optional)?i.optional.map(String):[],a=r.find(h=>s.includes(h));a&&o.push(le("/requirements/capabilities/optional","disjoint",`must not repeat required capability ${a}`));let p=new Set([...s,...r]),l=Ee(e.provisions);p.has("definitions.type-pack.apply")&&t.access!=="full_collection"&&o.push(le("/requirements/access","typePackAccess","must be full_collection for definitions.type-pack.apply")),Array.isArray(l.type_packs)&&l.type_packs.length>0&&!s.includes("collection.setup.apply")&&o.push(le("/requirements/capabilities/required","collectionSetupCapability","must require collection.setup.apply when bundled type packs are declared"));let c=Array.isArray(l.configuration)&&l.configuration.length>0,d=c||Array.isArray(l.type_packs)&&l.type_packs.length>0;c&&!s.includes("collection.setup.apply")&&o.push(le("/requirements/capabilities/required","collectionSetupCapability","must require collection.setup.apply when configuration provisions are declared")),p.has("collection.setup.apply")&&(t.access!=="full_collection"&&o.push(le("/requirements/access","collectionSetupAccess","must be full_collection for collection.setup.apply")),d||o.push(le("/provisions","collectionSetupProvision","must declare a configuration provision or type pack for collection.setup.apply"))),p.has("notifications.background-delivery")&&!Array.isArray(Ee(e.notifications).criteria)&&o.push(le("/notifications/criteria","notificationCapability","must be declared for notifications.background-delivery"));let u=Ee(t.files),f=Array.isArray(u.actions)?new Set(u.actions.map(String)):new Set;for(let h of["list","read","add","replace","move","delete"]){let m=`files.${h}`;p.has(m)!==f.has(h)&&o.push(le("/requirements/capabilities","fileCapability",`${m} and requirements.files.actions.${h} must be declared together`))}return o}function Cq(n,e=!1){let t=Ee(n);if(t.distribution==="portable")return n;let i={...t};for(let o of["homepage","icon"])typeof i[o]=="string"&&(i[o]=EP(i[o],e));return Array.isArray(i.redirect_uris)&&(i.redirect_uris=i.redirect_uris.map(o=>typeof o=="string"?EP(o,e):o)),i}function EP(n,e){try{let t=new URL(n);return t.protocol==="http:"&&(e?Of(n):LP(t.hostname))&&(t.protocol="https:"),t.href}catch{return n}}function yr(n){if(typeof n!="string"||!/^http:\/\/127\.0\.0\.1(?::[1-9][0-9]{0,4})?$/.test(n))return!1;try{return new URL(n).origin===n}catch{return!1}}function Of(n){let e=/^http:\/\/[^/?#]+/.exec(n)?.[0];return yr(e)}function Ib(n,e){return n.protocol==="https:"||e&&n.protocol==="http:"&&LP(n.hostname)}function LP(n){return n==="localhost"||n==="127.0.0.1"||n==="[::1]"||n==="::1"}function Rf(n){return{valid:!1,issues:n}}function le(n,e,t,i={}){return{path:n,keyword:e,message:t,params:i}}function Ee(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{}}var Ef,Ob,pq,dq,Sq,Ra=I(()=>{Or();ws();$S();nP();_f();zc();Ef=524288,Ob=class extends Error{issues;constructor(e){super(`Invalid application manifest: ${hq(e)}`),this.issues=e,this.name="AppManifestValidationError"}},pq=YS,dq=tP;Sq=["md","base"]});function Qr(n){return!1}function Ea(n){return n==="lab"||n==="staging"||n==="production"}function en(n){return n==="lab"}function qa(n){try{let e=new URL(n);return e.protocol==="http:"&&e.hostname==="127.0.0.1"&&Number(e.port)>0&&e.origin===n&&!e.username&&!e.password}catch{return!1}}var bt=I(()=>{"use strict";iu()});function On(n){return n.protocol==="https:"||n.protocol==="http:"?n.origin:`${n.protocol}//${n.host}`}function Eb(n,e=!1,t){if(typeof n!="string"||n.length>512)return null;let i;try{i=new URL(n)}catch{return null}if(i.username||i.password||i.search||i.hash||!["","/"].includes(i.pathname)||On(i)!==n)return null;switch(i.protocol){case"https:":return"web";case"http:":return t==="native"&&yr(n)?"native":e&&ot(n)?"web":null;case"capacitor:":return!i.port&&/^[a-z0-9.-]{1,253}$/.test(i.hostname)?"mobile":null;case"chrome-extension:":return/^[a-p]{32}$/.test(i.host)?"extension":null;case"moz-extension:":return Iq.test(i.host)?"extension":null;default:return null}}function Rt(){let n=globalThis.location;if(!n)return null;if(typeof n.origin=="string"&&n.origin!=="null")return n.origin;try{return On(new URL(n.href))}catch{return null}}var Iq,Lt,Zn=I(()=>{"use strict";Ra();bt();Iq=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;Lt=(n,e=!1,t)=>Eb(n,e,t)!==null});function NP(n,e){let t=jP.get(n);return(!t||!/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(e.id)||e.id==="00000000-0000-0000-0000-000000000000")&&jt(),e.supersededDeclaredId!==void 0&&e.supersededDeclaredId!==n.id&&jt(),gr({...n,id:e.id,name:e.name,storage:e.supersededDeclaredId===void 0?t:{...n.storage}})}function jt(){throw _("invalid_request","invalid application declaration","application_declaration")}function qb(n,e=new Set,t=0,i={nodes:0,chars:0}){if((++i.nodes>524288||t>64)&&jt(),typeof n=="string")return i.chars+=n.length,i.chars>524288&&jt(),n;if(n===null||typeof n=="boolean")return n;if(typeof n=="number")return Number.isFinite(n)||jt(),n;(typeof n!="object"||e.has(n)||Object.getOwnPropertySymbols(n).length)&&jt(),e.add(n);try{if(Array.isArray(n))return(n.length>524288||Object.keys(n).length!==n.length)&&jt(),Object.freeze(Array.from({length:n.length},(s,r)=>{let a=Object.getOwnPropertyDescriptor(n,String(r));return(!a||!("value"in a))&&jt(),qb(a.value,e,t+1,i)}));Object.getPrototypeOf(n)!==Object.prototype&&Object.getPrototypeOf(n)!==null&&jt();let o=Object.create(null);for(let s of Object.keys(n)){i.chars+=s.length;let r=Object.getOwnPropertyDescriptor(n,s);(i.chars>524288||!r||!("value"in r))&&jt(),o[s]=qb(r.value,e,t+1,i)}return Object.freeze(o)}finally{e.delete(n)}}function qf(n){return JSON.parse(JSON.stringify(n.manifest))}function gr(n){let e=qb(n);(!e||Array.isArray(e)||Object.keys(e).some(m=>!["id","name","origin","environment","manifest","storage","installationKind"].includes(m)))&&jt();let{id:t,name:i,origin:o,environment:s,manifest:r}=e;(typeof t!="string"||!t||t.length>256||!/^[a-z0-9][a-z0-9._-]*$/.test(t)||t==="00000000-0000-0000-0000-000000000000"||typeof i!="string"||!i.trim()||new TextEncoder().encode(i).length>100||/[\u0000-\u001f\u007f]/.test(i)||typeof o!="string"||typeof s!="string"||!Ea(s)||!r||Array.isArray(r)||typeof r!="object")&&jt(),Qr(s)&&!qa(o)&&jt();let a=Eb(o,en(s),r.platform==="native"?"native":void 0),p=e.installationKind??(a==="mobile"?"mobile":"app-runtime");(a===null||p!=="app-runtime"&&p!=="mobile"||a==="mobile"&&p!=="mobile"||(a==="extension"||a==="native")&&p!=="app-runtime")&&jt();let l=e.storage;l!==void 0&&(!l||Array.isArray(l)||typeof l!="object"||Object.keys(l).some(m=>!["joinDatabaseName","setupDatabaseName","unsyncedDatabaseName","applicationNamespace"].includes(m)))&&jt();let c=l,d=c?.applicationNamespace??t,u=typeof d=="string"&&d!==t?`namespace.${gg(JSON.stringify([t,d]))}`:t,f={joinDatabaseName:c?.joinDatabaseName??`mdbase.${u}.native-collection-join.v1`,setupDatabaseName:c?.setupDatabaseName??`mdbase.${u}.native-model-setup.v1`,unsyncedDatabaseName:c?.unsyncedDatabaseName??`mdbase.${u}.unsynced.v1`,applicationNamespace:d};for(let m of Object.values(f))(typeof m!="string"||!m||m.length>256||/[\u0000-\u001f\u007f]/.test(m))&&jt();new Set([f.joinDatabaseName,f.setupDatabaseName,f.unsyncedDatabaseName]).size!==3&&jt();let h=Object.freeze({id:t,name:i,origin:o,environment:s,installationKind:p,manifest:r,storage:Object.freeze(f)});return jP.set(h,Object.freeze({...c})),h}var jP,Ta=I(()=>{"use strict";Pu();Zn();re();bt();jP=new WeakMap});function Fc(n){if(n!==null&&typeof n=="object"){for(let e of Object.values(n))Fc(e);Object.freeze(n)}return n}function eo(n){let e=Bc(qf(n),{allowLocal:en(n.environment)}),t=Fc(e.manifest),i=t.requirements,o=hr(i),s=Fc(Ab(t,{})),r=kb(i),a=Fc(bP(s,r,void 0,o)),p=i.capabilities,l=p?.contract_version===2?Object.freeze({capabilityContractVersion:2,requiredNativeCapabilities:Object.freeze([...p.required])}):null;return Object.freeze({contractVersion:e.contractVersion,manifest:t,semanticVersion:o,operations:s,...r?{files:Fc(r)}:{},contracts:a,nativeCapabilities:l})}var Tf=I(()=>{"use strict";zc();Ra();Ta();bt()});function DP(n,e){if(typeof n!="string"||!n.length)throw Vc();let t=new URL(n),i=e&&ot(n);if(t.origin!==n||t.username||t.password||t.protocol!=="https:"&&!i)throw Vc();return n}function Qn(n){let{environment:e,release:t}=n;if(!Ea(e)||!t||t.schema!=="mdbn-app-trust/release/1"||t.environment!==e||!/^[0-9a-f]{64}$/.test(t.assetSha256)||!t.source||t.source.repository!=="mdbase-dev/mdbase-connect"||!/^[0-9a-f]{40}$/.test(t.source.commit)||!/^[A-Za-z0-9.+-]{1,64}$/.test(t.source.version)||!Array.isArray(t.trustedRoots)||!t.trustedRoots.length||t.trustedRoots.length>64||t.trustedRoots.some(p=>!(p instanceof Uint8Array)||p.length!==32||p.every(l=>l===0))||!(t.policyPins instanceof Uint8Array)||!t.policyPins.length||t.policyPins.length>65536)throw Vc();let i=Qr(e),o=DP(t.cpOrigin,i),s=DP(t.logOrigin,i),r=n.appOrigin;if(i&&![o,s,r].every(qa)||!Lt(r,en(e),n.platform))throw Vc();let a=Object.freeze({environment:e,appOrigin:r,cpOrigin:o,logOrigin:s,assetSha256:t.assetSha256,allowLoopbackHttp:en(e)&&new URL(r).protocol==="http:",allowNativeLoopbackHttp:n.platform==="native"&&Lt(r,!1,"native")&&new URL(r).protocol==="http:"});return $P.add(a),a}function zP(n){return!!n&&typeof n=="object"&&$P.has(n)}var $P,Vc,to=I(()=>{"use strict";Zn();bt();$P=new WeakSet,Vc=()=>new Error("app environment: explicit authenticated build context required")});function Vo(){return Object.freeze({...Tb,trustedRoots:Object.freeze(Rq.map(BP)),policyPins:BP(Eq)})}var Tb,Rq,Eq,BP,Mf=I(()=>{Tb={schema:"mdbn-app-trust/release/1",environment:"production",cpOrigin:"https://connect.mdbase.dev",logOrigin:"https://log.mdbase.dev",assetSha256:"7912e40838213e60b65848350d319a48019021317b112e3326429b250f0133d7",source:{commit:"36abd4b065be9495a7f5ae0808865a1f2279af04",repository:"mdbase-dev/mdbase-connect",version:"0.1.0-beta.141"}};Object.freeze(Tb.source);Object.freeze(Tb);Rq=Object.freeze(["d9f6e481aa47ae9e0373c8994fe6edb3131d8ac3cf3cbc1be58672a8543c932d"]),Eq="8281825070a2bd532b5544dfb77617d4040ca6a25820d9f6e481aa47ae9e0373c8994fe6edb3131d8ac3cf3cbc1be58672a8543c932d818350c580fb092af10eb030605bd6e478e6f158206b587b1b32ba84b3d630868fe8e5396339f0c0ed2c59324a67824c1a2028040c5070a2bd532b5544dfb77617d4040ca6a2",BP=n=>{let e=new Uint8Array(n.length/2);for(let t=0;t<e.length;t++)e[t]=parseInt(n.slice(t*2,t*2+2),16);return e}});function Lb(n){if(!n||typeof n!="object"||Array.isArray(n))throw br();return n}function jb(n){return n===null||typeof n=="string"||typeof n=="boolean"||typeof n=="number"?JSON.stringify(n):Array.isArray(n)?`[${n.map(jb).join(",")}]`:`{${Object.entries(n).filter(([,t])=>t!==void 0).sort(([t],[i])=>t<i?-1:t>i?1:0).map(([t,i])=>`${JSON.stringify(t)}:${jb(i)}`).join(",")}}`}async function jf(n){let e=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(jb(n))));return Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}function Tq(n,e){let t=[[n,e]],i=0;for(;t.length;){if(++i>524288)return!1;let[o,s]=t.pop();if(o===s)continue;if(!o||!s||typeof o!="object"||typeof s!="object"||Array.isArray(o)!==Array.isArray(s))return!1;let r=Object.keys(o);if(r.length!==Object.keys(s).length)return!1;for(let a of r){if(!Object.hasOwn(s,a))return!1;t.push([o[a],s[a]])}}return!0}async function Nf(n){let e=n.declaration,t=n.signal,i=n.isCurrent,o=n.fetch??globalThis.fetch,s=e.manifest,r=gr(e);function a(){try{if(!t.aborted&&n.signal===t&&n.declaration===e&&n.isCurrent===i&&e.id===r.id&&e.name===r.name&&e.origin===r.origin&&e.environment===r.environment&&e.manifest===s&&i.call(n)===!0&&!t.aborted)return}catch{}throw _("cancelled","Application registration fenced","application_registration_fenced")}a();let p,l;try{p=Qn({environment:r.environment,appOrigin:r.origin,platform:r.manifest.platform==="native"?"native":void 0,release:Vo()})}catch{throw a(),_("unavailable","SDK registration environment unavailable","application_registration_unavailable")}try{l=Bc(qf(r),{allowLocal:en(r.environment)}).manifest}catch{throw Wc()}let c=r.environment==="local"?[]:l.installation_origins?.[r.environment]?.[r.installationKind]??[];if(l.name!==r.name||l.distribution==="portable"||new URL(l.homepage).origin!==r.origin&&!c.includes(r.origin)&&!("platform"in l&&l.platform==="native"&&r.installationKind==="app-runtime"&&yr(r.origin)))throw Wc();let d=JSON.stringify({manifest:l}),u=`${p.cpOrigin}/v1/apps/register`,f=`mdbase.app.registration.v1.${encodeURIComponent(p.cpOrigin)}.${encodeURIComponent(l.id)}`,h=()=>{try{return globalThis.localStorage??null}catch{return null}},m=h()?await jf(l).catch(()=>null):null;a();let b=x=>{if(m)try{h()?.setItem(f,JSON.stringify({v:1,digest:m,declaredId:r.id,...x}))}catch{}};{let x=null;try{let P=h()?.getItem(f);x=P?Lb(JSON.parse(P)):null}catch{x=null}if(x&&m&&x.v===1&&x.digest===m&&x.declaredId===r.id&&typeof x.id=="string"&&Mb.test(x.id)&&x.id!==VP&&x.name===l.name&&typeof x.manifestDigest=="string"&&/^[0-9a-f]{64}$/.test(x.manifestDigest)&&(x.supersededDeclaredId===void 0||x.supersededDeclaredId===r.id))return Object.freeze({id:x.id,name:l.name,manifestDigest:x.manifestDigest,...x.supersededDeclaredId!==void 0?{supersededDeclaredId:r.id}:{}})}if(new TextEncoder().encode(d).length>Ef+32||typeof o!="function")throw Wc();let w=new AbortController,g=()=>w.abort(),y=setTimeout(g,15e3);y.unref?.(),t.addEventListener("abort",g,{once:!0});function v(){if(a(),w.signal.aborted)throw Lf()}async function A(x){let P=x.headers.get("content-length");if(!x.body||P!==null&&(!/^(0|[1-9][0-9]*)$/.test(P)||Number(P)>8192))return x.body?.cancel().catch(()=>{}),null;let C=x.body.getReader(),E=new Uint8Array(8192),O=0;try{for(;;){let L=await C.read();if(v(),L.done)break;if(O+L.value.length>E.length)return null;E.set(L.value,O),O+=L.value.length}return jo(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(E.subarray(0,O))))}catch(L){if(L instanceof se)throw L;return null}finally{C.cancel().catch(()=>{})}}async function k(x){let P=new Uint8Array(2*Ef+8192),C=0,E=x.headers.get("content-length");if(E!==null&&/^(0|[1-9][0-9]*)$/.test(E)&&Number(E)>P.length)throw x.body?.cancel().catch(()=>{}),br();if(!x.body)throw br();let O=x.body.getReader();try{for(;;){let L=await O.read();try{if(v(),L.done)break;if(C+L.value.length>P.length)throw br();P.set(L.value,C),C+=L.value.length}finally{L.value?.fill(0)}}try{return Lb(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,C))))}catch{throw br()}}finally{P.fill(0),O.cancel().catch(()=>{}),O.releaseLock()}}async function S(x){let P=Lb(x.application),C=P.id,E=P.manifest_digest;if(typeof C!="string"||!Mb.test(C)||C===VP)throw br();let O=Mb.test(r.id)&&C!==r.id,L=O?Wc:br;if(O&&E!==await jf(l).catch(()=>null))throw Wc();if(v(),typeof E!="string"||!/^[0-9a-f]{64}$/.test(E)||P.name!==l.name||P.canonical_identity!==`bundle:${l.id}:sha256:${E}`||P.family_identity!==`bundle:${l.id}`||P.distribution!=="web")throw L();if(!P.application_declaration)throw _("upgrade_required","Canonical registration evidence unavailable","application_registration_unsupported");let z;try{z=Bc(P.application_declaration,{allowLocal:en(r.environment)}).manifest}catch{throw br()}if(!Tq(l,z))throw L();return v(),Object.freeze({id:C,name:l.name,manifestDigest:E,...O?{supersededDeclaredId:r.id}:{}})}try{for(let x=0;x<3;x++){v();let P;try{if(P=await o(u,{method:"POST",headers:{"content-type":"application/json"},body:d,signal:w.signal,credentials:"omit",redirect:"error",cache:"default",referrerPolicy:"no-referrer"}),v(),P.redirected||P.url&&P.url!==u)throw br();if(!P.ok){if(qq.has(P.status))throw await P.body?.cancel().catch(()=>{}),Lf();let E=await A(P);throw _("forbidden","Application registration refused",E?{reason:"application_registration_refused",details:new Map([["code",E.code],["paths",[...E.paths]]])}:"application_registration_refused")}let C=await S(await k(P));return b(C),C}catch(C){if(P?.body?.cancel().catch(()=>{}),v(),C instanceof se&&C.reason!=="application_registration_unknown")throw C;if(x===2)throw Lf();await new Promise((E,O)=>{let L=()=>{clearTimeout(z),w.signal.removeEventListener("abort",L);try{v(),E()}catch(ee){O(ee)}},z=setTimeout(L,x===0?250:1e3);z.unref?.(),w.signal.addEventListener("abort",L,{once:!0}),w.signal.aborted&&L()})}}throw Lf()}finally{clearTimeout(y),t.removeEventListener("abort",g),w.abort()}}var Mb,VP,qq,Wc,br,Lf,Uf=I(()=>{"use strict";Ra();Ra();to();re();Ta();Mf();bt();hu();Mb=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,VP="00000000-0000-0000-0000-000000000000",qq=new Set([408,429,500,502,503,504]),Wc=()=>_("invalid_request","Application registration binding mismatch","application_registration_binding"),br=()=>_("unavailable","Application registration evidence invalid","application_registration_response"),Lf=()=>_("outcome_unknown","Original application registration outcome unknown","application_registration_unknown")});function JP(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:null}function XP(n,e,t){if(!/^[A-Za-z0-9_-]+$/.test(n))return!1;try{let i=atob(n.replaceAll("-","+").replaceAll("_","/"));return i.length===e&&(t===void 0||i.charCodeAt(0)===t)&&btoa(i).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")===n}catch{return!1}}function Bf(n,e){let t=JP(n),i=JP(t?.native_completion);if(!i||!Object.hasOwn(i,"version")||i.version!==1||Object.keys(i).length!==YP.length+1||YP.some(r=>!Object.hasOwn(i,r)||typeof i[r]!="string"))throw La();let o=i;for(let r of["account_id","authorization_request_id","application_id","application_installation_id","collection_id","grant_id"])if(!Dq.test(o[r]))throw La();if(!o.application_declaration_id||!/^[0-9a-f]{64}$/.test(o.application_manifest_digest)||!XP(o.grant_signing_public_key,65,4)||!XP(o.client_noise_public_key,32))throw La();try{if(new URL(o.application_origin).origin!==o.application_origin)throw La()}catch{throw La()}let s={account_id:e.accountId,authorization_request_id:e.authorizationRequestId,application_id:e.applicationId,application_declaration_id:e.declarationId,application_manifest_digest:e.manifestDigest,application_installation_id:e.applicationInstallationId,application_origin:e.applicationOrigin,collection_id:e.collectionId,grant_signing_public_key:e.grantSigningPublicKey,client_noise_public_key:e.clientNoisePublicKey};if(Object.entries(s).some(([r,a])=>o[r]!==a)||e.grantId!==void 0&&o.grant_id!==e.grantId||t.collection_id!==o.collection_id||t.grant_id!==o.grant_id||t.application_origin!==o.application_origin)throw La();return Object.freeze({...o})}var YP,Dq,La,Nb=I(()=>{"use strict";re();YP=["account_id","authorization_request_id","application_id","application_declaration_id","application_manifest_digest","application_installation_id","application_origin","collection_id","grant_id","grant_signing_public_key","client_noise_public_key"],Dq=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,La=()=>_("unauthenticated","native completion does not match the original approved preparation")});function Ub(n,e,t,i,o,s){return Bf({native_completion:n,collection_id:e.collectionId,grant_id:n?.grant_id,application_origin:o},{accountId:t,authorizationRequestId:e.authorizationRequestId,applicationId:i,applicationOrigin:o,collectionId:e.collectionId,manifestDigest:s,declarationId:n?.application_declaration_id,applicationInstallationId:n?.application_installation_id,grantSigningPublicKey:n?.grant_signing_public_key,clientNoisePublicKey:n?.client_noise_public_key})}var ZP=I(()=>{"use strict";Nb()});function wr(n){let e=()=>new TypeError("invalid collection display name");if(typeof n!="string"||/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/.test(n))throw e();for(let i=0;i<n.length;i++){let o=n.charCodeAt(i);if(o>=55296&&o<=56319){let s=n.charCodeAt(++i);if(!(s>=56320&&s<=57343))throw e()}else if(o>=56320&&o<=57343)throw e()}let t=n.trim();if(!t.length||t.length>200)throw e();return t}var Gc=I(()=>{"use strict"});function Ff(n){let e=[n.account,n.installation,n.collection];if(e.some(t=>typeof t!="string"||!QP.test(t)))throw new Ke("invalid_scope");return`mdbase-app-${e.map(t=>t.toLowerCase()).join("-")}`}function Db(n){let e=[n.account,n.installation];if(e.some(t=>typeof t!="string"||!QP.test(t)))throw new Ke("invalid_scope");return`mdbase-app-installation-${e.map(t=>t.toLowerCase()).join("-")}`}function Jc(n,e,t){return Yc(n,Ff(e),t)}function Xc(n,e,t){return Yc(n,Db(e),t)}function Zc(n){return typeof n=="string"&&n.length>0&&n.length<=64&&!/[^A-Za-z0-9_-]/.test(n)}function Ko(n){return typeof n=="string"&&n.length>0&&n.length<=256&&!/[\u0000-\u001f\u007f]/.test(n)}function ex(n){let e=tx({cpOrigin:n.cpOrigin,appId:n.appId});if(n.storageNamespace===void 0)return e;if(!Ko(n.storageNamespace))throw new Ke("invalid_scope");return`mdbase-app-sign-in-namespace-v1-${JSON.stringify([n.cpOrigin,n.appId,n.storageNamespace])}`}function tx(n){let e=new URL(n.cpOrigin);if(e.origin!==n.cpOrigin||e.username||e.password||!["https:","http:"].includes(e.protocol)||!Zc(n.appId))throw new Ke("invalid_scope");if(n.owner===void 0)return`mdbase-app-sign-in-v1-${n.appId}-${n.cpOrigin}`;if(!Ko(n.owner))throw new Ke("invalid_scope");return`mdbase-app-sign-in-v2-${JSON.stringify([n.cpOrigin,n.owner,n.appId])}`}function nx(n,e,t){if(e.storageNamespace!==void 0&&(!Ko(e.owner)||e.owner.startsWith("bundle:")))throw new Ke("invalid_scope");let i=tx(e),o=ex(e);return e.owner===void 0?Yc(n,o,t):(async()=>{let s=await Yc(n,o,t);try{let r=await Yc(n,i,t);return{release:async()=>{await r.release(),await s.release()}}}catch(r){throw await s.release(),r}})()}function ix(n,e,t){try{return n.request(ex(e),{mode:"shared",signal:t},async()=>{})}catch(i){return Promise.reject(i)}}function Yc(n,e,t){if(!n)return Promise.reject(new Ke("unavailable"));if(t?.aborted)return Promise.reject(new Ke("aborted"));let i,o=new Promise(d=>{i=d}),s,r,a=new Promise((d,u)=>{s=d,r=u}),p=!1,l=()=>{p=!0,r(new Ke("aborted"))};t?.addEventListener("abort",l,{once:!0});let c=Promise.resolve().then(()=>n.request(e,{mode:"exclusive",ifAvailable:!0},async d=>{if(t?.removeEventListener("abort",l),p||t?.aborted){r(new Ke("aborted"));return}if(!d){r(new Ke("busy"));return}s({release:()=>(i(),c)}),await o}));return c.catch(()=>{t?.removeEventListener("abort",l),r(new Ke("unavailable"))}),a}async function rx(n){let e=n.closeTimeoutMs??5e3;if(!Number.isSafeInteger(e)||e<1||e>3e4)throw new RangeError("invalid Worker close timeout");let t=n.signal,i=Object.freeze({account:n.scope.account,installation:n.scope.installation,collection:n.scope.collection});Ff(i);let o=await Xc(n.locks,i,t),s;try{s=await Jc(n.locks,i,t)}catch(h){throw await o.release(),h}let r={release:async()=>{await s.release(),await o.release()}},a;try{if(t?.aborted)throw new Ke("aborted");a=n.create(i)}catch{throw await r.release(),new Ke(t?.aborted?"aborted":"initialization_failed")}let p,l=Object.freeze({scope:Object.freeze({account:i.account,installation:i.installation}),isCurrent:()=>!p&&!t?.aborted}),c,d=new Promise((h,m)=>{c=()=>m(new Ke("aborted"))}),u=()=>p??=(async()=>{t?.removeEventListener("abort",f);let h;try{await Promise.race([Promise.resolve().then(()=>a.stop()),new Promise(m=>{h=setTimeout(m,e)})])}catch{}finally{h&&clearTimeout(h)}try{a.terminate()}catch{throw new Ke("shutdown_failed")}await r.release()})(),f=()=>{c(),u().catch(()=>{})};t?.addEventListener("abort",f,{once:!0});try{if(t?.aborted)throw new Ke("aborted");if(await Promise.race([Promise.resolve().then(()=>n.initialize(a,t,i,l)),d]),t?.aborted||p)throw new Ke("aborted");return{worker:a,scope:i,close:u}}catch{throw await u(),new Ke(t?.aborted?"aborted":"initialization_failed")}}var Ke,QP,no=I(()=>{"use strict";Ke=class extends Error{constructor(t){super(`app replica owner: ${t}`);this.reason=t;this.name="AppReplicaOwnerError"}reason},QP=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i});function ax(n){if(typeof CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw Ye();return n}function ox(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="encrypted,key,revision,version")throw Ye();let e=n;if(e.version!==1||!Number.isSafeInteger(e.revision)||e.revision<0||!(e.encrypted instanceof Uint8Array)||e.encrypted.length<29||e.encrypted.length>sx+28)throw Ye();return{version:1,revision:e.revision,key:ax(e.key),encrypted:new Uint8Array(e.encrypted)}}var ja,Vf,sx,Qc,Ye,$q,Wf,lx=I(()=>{"use strict";bt();Zn();no();ja="installation-sign-in",Vf="original",sx=128*1024,Qc=class extends Error{constructor(t){super(`app installation storage ${t}; preserve storage and reopen`);this.reason=t}reason},Ye=(n="unavailable")=>new Qc(n),$q=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);Wf=class n{constructor(e,t){this.options=e;this.lease=t;this.namespace=JSON.stringify(e.owner===void 0?["mdbase.app-installation.v1",e.origin,e.cpOrigin,e.appId]:["mdbase.app-installation.v2",e.origin,e.cpOrigin,e.owner,e.appId])}options;lease;db=null;record=null;closing=!1;closeResult=null;namespace;static async open(e,t){let i=Object.freeze({origin:e.origin,cpOrigin:e.cpOrigin,appId:e.appId,...e.owner===void 0?{}:{owner:e.owner},...e.storageNamespace===void 0?{}:{storageNamespace:e.storageNamespace},mode:e.mode,signal:e.signal,locks:e.locks,allowLoopbackHttp:e.allowLoopbackHttp===!0,allowNativeLoopbackHttp:e.allowNativeLoopbackHttp===!0}),o=null,s=null,r=null;try{if(!Lt(i.origin,i.allowLoopbackHttp===!0,i.allowNativeLoopbackHttp?"native":void 0))throw Ye();{let l=i.cpOrigin,c=new URL(l),d=i.allowLoopbackHttp&&ot(l);if(c.origin!==l||c.username||c.password||c.protocol!=="https:"&&!d)throw Ye()}if(i.owner!==void 0&&!Ko(i.owner)||!["fresh","existing","open"].includes(i.mode)||!Zc(i.appId)||i.signal.aborted||Rt()!==i.origin||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof CryptoKey!="function")throw Ye();let a=await nx(i.locks,i,i.signal);if(o=new n(i,a),o.check(),i.mode!=="existing"){s=t(),o.check(),o.bound(s);let l=ax(await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));o.check(),r={version:1,revision:0,key:l,encrypted:await o.encrypt(l,0,s)},s.fill(0),s=null}o.db=await o.openDatabase(r),o.check(),o.db.onversionchange=()=>{o.close()},o.record=await o.readRecord(),o.check(),s=await o.decrypt(o.record),o.check(),o.bound(s);let p={store:o,plaintext:s};return s=null,p}catch(a){throw await o?.close(),Ye(a instanceof Ke&&a.reason==="busy"?"busy":"unavailable")}finally{s?.fill(0),r?.encrypted.fill(0)}}isCurrent(){try{return this.check(),!0}catch{return!1}}check(){if(this.closing||this.options.signal.aborted||Rt()!==this.options.origin)throw Ye()}bound(e){if(!(e instanceof Uint8Array)||!e.length||e.length>sx)throw Ye()}aad(e){return new TextEncoder().encode(`${this.namespace}:${e}`)}async encrypt(e,t,i){this.check(),this.bound(i);let o=crypto.getRandomValues(new Uint8Array(12)),s=this.aad(t),r=new Uint8Array(i),a=null;try{a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:o,additionalData:s},e,r)),this.check();let p=new Uint8Array(12+a.length);return p.set(o),p.set(a,12),p}finally{r.fill(0),a?.fill(0),o.fill(0),s.fill(0)}}async decrypt(e){this.check();let t=this.aad(e.revision),i=new Uint8Array(e.encrypted.subarray(0,12)),o=new Uint8Array(e.encrypted.subarray(12));try{let s=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:i,additionalData:t},e.key,o));try{return this.check(),this.bound(s),s}catch{throw s.fill(0),Ye()}}finally{i.fill(0),o.fill(0),t.fill(0)}}openDatabase(e){return new Promise((t,i)=>{this.check();let o=this.options,s=o.owner===void 0?`mdbase.app.installation.v1.${encodeURIComponent(o.cpOrigin)}.${o.appId}`:`mdbase.app.installation.v2.${encodeURIComponent(o.cpOrigin)}.${encodeURIComponent(o.owner)}.${o.appId}`,r=indexedDB.open(s,1),a=!1,p=!1,l=()=>{a=!0;try{r.transaction?.abort()}catch{}i(Ye())},c=()=>this.options.signal.removeEventListener("abort",l);this.options.signal.addEventListener("abort",l,{once:!0}),r.onblocked=l,r.onupgradeneeded=()=>{try{if(this.check(),a||!e||r.result.objectStoreNames.length)throw Ye();r.result.createObjectStore(ja).add(e,Vf),p=!0}catch{r.transaction?.abort()}},r.onerror=()=>{c(),i(Ye())},r.onsuccess=()=>{c();try{if(this.check(),a||this.options.mode==="fresh"&&!p||r.result.objectStoreNames.length!==1||!r.result.objectStoreNames.contains(ja))throw Ye();t(r.result)}catch{r.result.close(),i(Ye())}}})}readRecord(){return new Promise((e,t)=>{if(this.check(),!this.db)throw Ye();let i=this.db.transaction(ja,"readonly",{durability:"strict"}),o=null,s=()=>{try{i.abort()}catch{}},r=()=>this.options.signal.removeEventListener("abort",s);this.options.signal.addEventListener("abort",s,{once:!0}),i.onerror=i.onabort=()=>{r(),o?.encrypted.fill(0),t(Ye())},i.oncomplete=()=>{r();try{if(this.check(),!o)throw Ye();e(o)}catch{o?.encrypted.fill(0),t(Ye())}};let a=i.objectStore(ja).get(Vf);a.onsuccess=()=>{try{this.check(),o=ox(a.result)}catch{s()}}})}async commit(e){let t=null;try{if(this.check(),!this.record||this.record.revision>=Number.MAX_SAFE_INTEGER)throw Ye();let i=this.record;t={version:1,revision:i.revision+1,key:i.key,encrypted:await this.encrypt(i.key,i.revision+1,e)},this.check(),await new Promise((o,s)=>{if(this.check(),!this.db)throw Ye();let r=this.db.transaction(ja,"readwrite",{durability:"strict"}),a=()=>{try{r.abort()}catch{}},p=()=>this.options.signal.removeEventListener("abort",a);this.options.signal.addEventListener("abort",a,{once:!0}),r.onerror=r.onabort=()=>{p(),s(Ye())},r.oncomplete=()=>{p();try{this.check(),o()}catch{s(Ye())}};let l=r.objectStore(ja),c=l.get(Vf);c.onsuccess=()=>{let d=null;try{if(this.check(),d=ox(c.result),d.revision!==i.revision||!$q(d.encrypted,i.encrypted))throw Ye();l.put(t,Vf)}catch{a()}finally{d?.encrypted.fill(0)}}}),this.check(),i.encrypted.fill(0),this.record=t,t=null}catch{throw await this.close(),Ye()}finally{t?.encrypted.fill(0)}}close(){return this.closeResult??=(async()=>{this.closing=!0,this.db?.close(),this.db=null,this.record?.encrypted.fill(0),this.record=null,await this.lease.release()})()}}});function _e(n){if(typeof n!="string"||!zq.test(n)||U(n).every(e=>e===0))throw q("response");return n}function Wt(n,e){if(typeof n!="string"||!e.test(n))throw q("response");return n}function Ie(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw q("response");return n}function Bq(n){if(typeof n!="string"||n.length>320||!/^[^\s@\u0000-\u001f\u007f]+@[^\s@\u0000-\u001f\u007f]+$/.test(n))throw q("response");return n}function Na(n,e=!1){let[t,i,o,s]=e?["accountEmail","portalConfirmed","accountProvider","accountLogin"]:["account_email","account_selection_confirmed","account_provider","account_login"];return[t,i,o,s].some(r=>Object.hasOwn(n,r))?`,${t},${i}${Object.hasOwn(n,o)||Object.hasOwn(n,s)?`,${o},${s}`:""}`:""}function Kf(n,e=!1){let t=Na(n,e);if(!t)return{};let i=e?n.accountEmail:n.account_email,o=e?n.portalConfirmed:n.account_selection_confirmed,s=e?n.accountProvider:n.account_provider,r=e?n.accountLogin:n.account_login;if(o!==!0)throw q("response");if(t.includes(e?"accountProvider":"account_provider")){if(i!==null||s!=="github"||typeof r!="string"||!r.length||new TextEncoder().encode(r).byteLength>100||/[\s\u0000-\u001f\u007f]/.test(r))throw q("response");return{accountEmail:null,portalConfirmed:!0,accountProvider:"github",accountLogin:r}}return{accountEmail:Bq(i),portalConfirmed:!0}}function cx(n,e){if(n.portalConfirmed&&(e.portalConfirmed!==!0||n.accountEmail!==e.accountEmail||n.accountProvider!==e.accountProvider||n.accountLogin!==e.accountLogin))throw q("binding")}function Vb(n){return Object.hasOwn(n,"timer_consent")||Object.hasOwn(n,"timer_grants")?",timer_consent,timer_grants":""}function zb(n,e,t,i,o){if(!Vb(n))return;if(![!0,!1,null].includes(n.timer_consent)||!Array.isArray(n.timer_grants)||n.timer_grants.length>1e3)throw q("response");let s=n.timer_grants.map(r=>{let a=Ie(r,"grant_id,collection_id,declaration_digest"),p=_e(a.collection_id);if(!t.includes(p))throw q("response");return Object.freeze({grantId:_e(a.grant_id),collectionId:p,declarationDigest:Wt(a.declaration_digest,/^[0-9a-f]{64}$/)})});if(new Set(s.map(r=>r.grantId)).size!==s.length||new Set(s.map(r=>r.collectionId)).size!==s.length||(n.timer_consent===!0?!i||!o||!s.some(r=>r.collectionId===o):s.length!==0)||new Set(s.map(r=>r.declarationDigest)).size>1)throw q("response");return n.timer_consent===null?void 0:Object.freeze({requestId:e,approved:n.timer_consent===!0,grants:Object.freeze(s.filter(r=>r.collectionId===o))})}function Bb(n){let e=Ie(n,"grantId,kind,targetDigest,channelId,pending");if(!["web_push","fcm"].includes(e.kind)||![null,"register","delete"].includes(e.pending)||e.channelId===null&&e.pending!=="register")throw q("response");return Object.freeze({grantId:_e(e.grantId),kind:e.kind,targetDigest:Wt(e.targetDigest,/^[0-9a-f]{64}$/),channelId:e.channelId===null?null:_e(e.channelId),pending:e.pending})}function Fb(n){if(!Array.isArray(n)||n.length>1e3)throw q("response");let e=new Set;return Object.freeze(n.map(t=>{let i=p=>t&&typeof t=="object"&&p in t?`,${p}`:"",o=Ie(t,`collection_id,display_name,role${i("availability")}${i("file_actions")}`),s=_e(o.collection_id);if(e.has(s)||typeof o.display_name!="string"||!o.display_name.length||o.display_name.length>1024||o.role!=="owner"&&o.role!=="editor"&&o.role!=="viewer")throw q("response");let r=Fn(o.availability),a="file_actions"in o?Wb(o.file_actions):null;return e.add(s),Object.freeze({collectionId:s,displayName:o.display_name,role:o.role,...r?{availability:r}:{},...a?{fileActions:a}:{}})}))}function Wb(n,e=Hf,t=!0){if(!Array.isArray(n)||n.length>Hf.length||!t&&!n.length||new Set(n).size!==n.length||n.some(i=>!e.includes(i)))throw q("response");return Object.freeze(Hf.filter(i=>n.includes(i)))}function px(n){let e=n.collectionHint??null;if(e!==null&&(typeof e!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(e)||e==="00000000-0000-0000-0000-000000000000"))throw q("binding");return e}function dx(n,e,t){return n===e||t!==null&&n===`${e}?collection_hint=${t}`?n:null}var Xe,q,$b,Rn,zq,Hf,Ua,ep=I(()=>{"use strict";ZP();Nr();ge();bt();Gc();to();lx();no();Wn();Xe=class extends Error{constructor(t,i){super(`app installation sign-in: ${t}`);this.reason=t;this.server=i;this.name="AppInstallationSignInError"}reason;server},q=n=>new Xe(n),$b=new WeakSet,Rn=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),zq=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;Hf=["list","read","add","replace","move","delete"];Ua=class n{constructor(e,t,i){this.store=e;this.state=t;this.options=i;this.request=i.fetch??((o,s)=>globalThis.fetch(o,s)),this.parent=i.signal,this.parent.addEventListener("abort",this.onAbort,{once:!0}),this.check()}store;state;options;closed=!1;busy=!1;nativeAcknowledged=!1;expiredRequestId=null;wrongAccountRequestId=null;lifetime=new AbortController;request;parent;onAbort=()=>{this.close()};static async open(e){let t=Object.freeze({...e,...e.recoveryFor?{recoveryFor:Object.freeze({...e.recoveryFor})}:{}}),i=null;try{if(!["lab","staging","production"].includes(t.environment)||!Zc(t.appId)||typeof t.appName!="string"||!t.appName.length||t.appName.length>100||t.appName.trim()!==t.appName||t.installationKind!==void 0&&t.installationKind!=="app-runtime"&&t.installationKind!=="mobile")throw q("binding");let o=t.environmentSelection;if(t.requestedCreateCollections!==void 0&&typeof t.requestedCreateCollections!="boolean"||t.freshRequestedCreateCollections!==void 0&&typeof t.freshRequestedCreateCollections!="boolean")throw q("binding");if(t.recoveryFor!==void 0){let r=Ie(t.recoveryFor,"accountId,collectionId");if(_e(r.accountId),_e(r.collectionId),!t.owner||t.requestedCreateCollections===!0||t.freshRequestedCreateCollections===!0)throw q("binding")}if(o!==void 0&&(!zP(o)||o.environment!==t.environment||o.appOrigin!==t.origin||o.cpOrigin!==t.cpOrigin||t.allowLoopbackHttp===!0&&!o.allowLoopbackHttp||t.allowNativeLoopbackHttp===!0&&!o.allowNativeLoopbackHttp))throw q("binding");i=await Wf.open({...t,allowLoopbackHttp:o?.allowLoopbackHttp??t.allowLoopbackHttp,allowNativeLoopbackHttp:o?.allowNativeLoopbackHttp??t.allowNativeLoopbackHttp},()=>{let r=crypto.getRandomValues(new Uint8Array(32));try{let a=`pair_${btoa(String.fromCharCode(...r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;return new TextEncoder().encode(JSON.stringify({version:3,renewal:null,requestedCreateCollections:t.requestedCreateCollections??t.freshRequestedCreateCollections??!1,collectionIds:[],createCollections:!1,consentRequest:null,requestId:crypto.randomUUID(),installationId:crypto.randomUUID(),deviceId:crypto.randomUUID(),secret:a,appId:t.appId,...t.owner===void 0?{}:{owner:t.owner},kind:t.installationKind??"app-runtime",origin:t.origin,cpOrigin:t.cpOrigin,environment:t.environment,selection:null,confirmed:!1,nativeStarted:!1,proof:null,token:null,...t.recoveryFor?{recoveryFor:t.recoveryFor}:{}}))}finally{r.fill(0)}});let s=this.decode(i.plaintext,t);return new n(i.store,s,t)}catch(o){throw await i?.store.close(),o instanceof Xe?o:o instanceof Qc&&o.reason==="busy"?q("open_in_another_tab"):q("recovery_required")}finally{i?.plaintext.fill(0)}}static decode(e,t){let i=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e)),o="version,requestId,installationId,deviceId,secret,appId,kind,origin,cpOrigin,environment,selection,confirmed,nativeStarted,proof,token",s=i?.version===1,r=`${o},requestedCreateCollections,collectionIds,createCollections,consentRequest`,a=s?{...Ie(i,o),version:3,renewal:null,requestedCreateCollections:!1,collectionIds:[],createCollections:!1,consentRequest:null}:i?.version===2?{...Ie(i,r),version:3,renewal:null}:Ie(i,`${r},renewal${Object.hasOwn(i,"collectionSelection")?",collectionSelection":""}${Object.hasOwn(i,"timerConsent")?",timerConsent":""}${Object.hasOwn(i,"timerChannel")?",timerChannel":""}${Object.hasOwn(i,"owner")?",owner":""}${Object.hasOwn(i,"collectionListing")?",collectionListing":""}${Object.hasOwn(i,"collectionRecoveries")?",collectionRecoveries":""}${Object.hasOwn(i,"recoveryFor")?",recoveryFor":""}${Object.hasOwn(i,"nativeAuthorization")?",nativeAuthorization":""}${Object.hasOwn(i,"nativeSelection")?",nativeSelection":""}${Object.hasOwn(i,"nativeGrants")?",nativeGrants":""}`);if(a.version!==3||a.appId!==t.appId||a.owner!==t.owner||a.kind!==(t.installationKind??"app-runtime")||a.origin!==t.origin||a.cpOrigin!==t.cpOrigin||a.environment!==t.environment||typeof a.confirmed!="boolean"||typeof a.nativeStarted!="boolean")throw q("recovery_required");let p=a;if(typeof p.requestedCreateCollections!="boolean"||typeof p.createCollections!="boolean"||t.requestedCreateCollections!==void 0&&t.requestedCreateCollections!==p.requestedCreateCollections)throw q("binding");if(p.collectionIds=this.collectionIds(p.collectionIds),p.recoveryFor!==void 0){let l=Ie(p.recoveryFor,"accountId,collectionId");_e(l.accountId),_e(l.collectionId)}if(p.recoveryFor===void 0!=(t.recoveryFor===void 0)||p.recoveryFor?.accountId!==t.recoveryFor?.accountId||p.recoveryFor?.collectionId!==t.recoveryFor?.collectionId||p.recoveryFor&&(p.requestedCreateCollections||p.createCollections||p.selection&&p.selection.accountId!==p.recoveryFor.accountId||p.token&&(p.nativeSelection?p.collectionIds.length!==0||p.nativeSelection.collectionId!==p.recoveryFor.collectionId:p.collectionIds.length!==1||p.collectionIds[0]!==p.recoveryFor.collectionId||p.collectionSelection?.selectedCollectionId!==p.recoveryFor.collectionId)))throw q("recovery_required");if(p.consentRequest!==null){let l=Ie(p.consentRequest,`requestId,secret,requestedCreateCollections,challenge,completed,addedCollectionIds,approvedCreateCollections${Na(p.consentRequest,!0)}`);if(Kf(l,!0),_e(l.requestId),Wt(l.secret,/^pair_[A-Za-z0-9_-]{43}$/),l.requestId===p.requestId||l.secret===p.secret||typeof l.requestedCreateCollections!="boolean"||typeof l.completed!="boolean"||typeof l.approvedCreateCollections!="boolean"||l.approvedCreateCollections&&!l.requestedCreateCollections||(l.challenge!==null&&Wt(l.challenge,/^[0-9a-f]{64}$/),this.collectionIds(l.addedCollectionIds),!p.token||!p.selection||l.completed&&l.challenge===null))throw q("recovery_required")}if(p.createCollections&&!p.token||p.collectionIds.length&&!p.token)throw q("recovery_required");if(p.collectionSelection!==void 0){let l=Ie(p.collectionSelection,"requestId,selectedCollectionId,createdCollectionIds");if(_e(l.requestId),!p.token||!p.collectionIds.includes(_e(l.selectedCollectionId))||this.collectionIds(l.createdCollectionIds).some(c=>!p.collectionIds.includes(c)))throw q("recovery_required")}if(_e(p.requestId),_e(p.installationId),_e(p.deviceId),Wt(p.secret,/^pair_[A-Za-z0-9_-]{43}$/),p.renewal!==null){let l=Ie(p.renewal,"requestId,secret");if(_e(l.requestId),Wt(l.secret,/^pair_[A-Za-z0-9_-]{43}$/),l.requestId===p.requestId||l.secret===p.secret)throw q("recovery_required")}if(p.timerChannel!==void 0){if(!p.token||!p.selection)throw q("recovery_required");try{p.timerChannel=Bb(p.timerChannel)}catch{throw q("recovery_required")}}if(p.timerConsent!==void 0){let l=Ie(p.timerConsent,"requestId,approved,grants");if(_e(l.requestId),!p.token||!p.selection||typeof l.approved!="boolean"||!Array.isArray(l.grants)||l.grants.length>1)throw q("recovery_required");let c=l.grants.map(u=>{let f=Ie(u,"grantId,collectionId,declarationDigest");return{grant_id:f.grantId,collection_id:f.collectionId,declaration_digest:f.declarationDigest}}),d=p.selection.portalConfirmed===!0||p.consentRequest?.portalConfirmed===!0;p.timerConsent=zb({timer_consent:l.approved,timer_grants:c},_e(l.requestId),p.collectionIds,d,c[0]?.collection_id)}if(p.selection!==null){let l=Ie(p.selection,`accountId,connectorId,challenge,approvalMode${Na(p.selection,!0)}`);if(_e(l.accountId),_e(l.connectorId),Wt(l.challenge,/^[0-9a-f]{64}$/),l.approvalMode!=="password-ak1")throw q("response");Kf(l,!0)}if(p.proof!==null&&this.proof(p.proof),p.token!==null&&Wt(p.token,/^idev_[A-Za-z0-9_-]{43}$/),p.confirmed&&!p.selection||p.nativeStarted&&!p.confirmed||p.proof&&!p.nativeStarted||p.token&&!p.proof||p.collectionListing!==void 0&&(!p.token||!p.confirmed||!p.selection||!p.proof||Fb(p.collectionListing).some(l=>!p.collectionIds.includes(l.collectionId))))throw q("recovery_required");if(p.collectionRecoveries!==void 0){if(!p.token||!p.confirmed||!p.selection||!p.proof||!p.collectionRecoveries||typeof p.collectionRecoveries!="object"||Array.isArray(p.collectionRecoveries))throw q("recovery_required");let l=Object.entries(p.collectionRecoveries);if(l.length>1e3||l.some(([c,d])=>!(p.collectionIds.includes(_e(c))||p.nativeGrants?.some(u=>u.collection_id===c))||d!==null&&!_e(d)))throw q("recovery_required")}if(p.nativeAuthorization){let l=Ie(p.nativeAuthorization,"requestId,authorizationId,applicationId,manifestDigest");if(_e(l.requestId),_e(l.authorizationId),l.applicationId!==p.appId||!p.proof||!p.confirmed)throw q("recovery_required");Wt(l.manifestDigest,/^[0-9a-f]{64}$/)}if(p.nativeSelection){let l=Ie(p.nativeSelection,"requestId,authorizationRequestId,collectionId");if(_e(l.requestId),_e(l.authorizationRequestId),_e(l.collectionId),!p.token||!p.nativeAuthorization||l.requestId!==p.nativeAuthorization.requestId||l.authorizationRequestId!==p.nativeAuthorization.authorizationId)throw q("recovery_required")}if(p.nativeGrants&&(!p.token||!p.selection||!Array.isArray(p.nativeGrants)||p.nativeGrants.length>1e3||(p.nativeGrants=p.nativeGrants.map(l=>Ub(l,{requestId:p.requestId,authorizationRequestId:l.authorization_request_id,collectionId:l.collection_id},p.selection.accountId,p.appId,p.origin,l.application_manifest_digest)),new Set(p.nativeGrants.map(l=>l.collection_id)).size!==p.nativeGrants.length)))throw q("recovery_required");return p}static collectionIds(e){if(!Array.isArray(e)||e.length>1e3)throw q("response");let t=e.map(_e);if(new Set(t).size!==t.length)throw q("response");return t}static proof(e){let t=Ie(e,"sign_pk,kem_pk,noise_pk,sig");return{sign_pk:Wt(t.sign_pk,/^[0-9a-f]{64}$/),kem_pk:Wt(t.kem_pk,/^[0-9a-f]{64}$/),noise_pk:Wt(t.noise_pk,/^[0-9a-f]{64}$/),sig:Wt(t.sig,/^[0-9a-f]{128}$/)}}isCurrent(){return!this.closed&&!this.parent.aborted&&!this.lifetime.signal.aborted&&this.store.isCurrent()}check(){if(!this.isCurrent())throw q("fenced")}view(){this.check();let e=this.state,t=e.consentRequest?.portalConfirmed?e.consentRequest:e.selection;return Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:`${e.cpOrigin}/pair/${e.requestId}`,state:e.token?"paired":e.proof?"awaiting_approval":e.confirmed?"account_confirmed":e.selection?"account_selected":"pending",accountId:e.selection?.accountId??null,accountEmail:t?.accountEmail??null,...t?.accountProvider?{accountProvider:t.accountProvider,accountLogin:t.accountLogin}:{},collectionSelection:e.collectionSelection?Object.freeze({...e.collectionSelection,createdCollectionIds:Object.freeze([...e.collectionSelection.createdCollectionIds])}):null,nativeSelection:e.nativeSelection&&e.nativeGrants?.some(i=>i.authorization_request_id===e.nativeSelection.authorizationRequestId&&i.collection_id===e.nativeSelection.collectionId)?Object.freeze({...e.nativeSelection}):null,nativeGrants:Object.freeze([...e.nativeGrants??[]]),...e.timerConsent?{timerConsent:e.timerConsent}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections,requestedCreateCollections:e.requestedCreateCollections})}async save(e){this.check();let t=new TextEncoder().encode(JSON.stringify(e));try{await this.store.commit(t),this.check(),this.state=e}catch{throw await this.close(),q("recovery_required")}finally{t.fill(0)}}async exclusive(e){if(this.check(),this.busy)throw q("busy");this.busy=!0;try{return await e()}finally{this.busy=!1}}async json(e,t,i,o){this.check(),this.wrongAccountRequestId=null;let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);this.lifetime.signal.addEventListener("abort",r,{once:!0});let p=null,l=null,c=!1,d=!1,u=new Uint8Array(o?.get||e.endsWith("/exchange")?1024*1024:64*1024),f=0;try{if(p=await this.request(`${this.state.cpOrigin}${e}`,{method:o?.get?"GET":o?.patch?"PATCH":o?.delete?"DELETE":"POST",headers:{...o?{authorization:`Bearer ${o.bearer}`}:t?{authorization:`Bearer ${this.state.secret}`}:{},...i===void 0?{}:{"content-type":"application/json"}},body:i===void 0?void 0:JSON.stringify(i),credentials:"omit",redirect:"error",cache:"default",referrerPolicy:"no-referrer",signal:s.signal}),this.check(),s.signal.aborted)throw q("outcome_unknown");let h=p.headers.get("content-length");if(h!==null&&/^(0|[1-9][0-9]*)$/.test(h)&&Number(h)>u.length)throw s.abort(),q("response");if(!p.body)throw q("response");for(l=p.body.getReader();;){let{done:b,value:w}=await l.read();try{if(this.check(),s.signal.aborted)throw q("outcome_unknown");if(b){c=!0;break}if(f+w.length>u.length)throw s.abort(),q("response");u.set(w,f),f+=w.length}finally{w?.fill(0)}}d=!0;let m=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(u.subarray(0,f)));if(!m||typeof m!="object"||Array.isArray(m))throw q("response");if(!p.ok){let b=m.error;if(!o&&p.status===404&&(e==="/v1/pairing-requests"||e===`/v1/pairing-requests/${this.state.requestId}/exchange`||e===`/v1/pairing-requests/${this.state.requestId}/attest`)&&b&&typeof b=="object"&&!Array.isArray(b)&&(b.code==="installation_pairing_expired"||b.code==="installation_pairing_denied"))throw this.expiredRequestId=this.state.requestId,q(b.code==="installation_pairing_expired"?"expired":"refused");let w=ji(p.status,m,p.headers);throw new Xe(St(w)??"refused",w)}return{status:p.status,value:m}}catch(h){this.check();let m=h instanceof Xe?h:q(o?.get&&!s.signal.aborted&&!(h instanceof DOMException&&h.name==="AbortError")?d?"response":!p||p.ok?"unavailable":"refused":"outcome_unknown");throw p&&!p.ok&&$b.add(m),m}finally{u.fill(0),c||(l?.cancel()??p?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(a),this.lifetime.signal.removeEventListener("abort",r)}}start(e={}){let t;try{t=px(e)}catch(i){return Promise.reject(i)}return this.exclusive(()=>this.startRequest(t))}renewExpiredPairing(){return this.exclusive(async()=>{let e=this.state;if(e.token||this.expiredRequestId!==e.requestId)throw q("recovery_required");let t=crypto.getRandomValues(new Uint8Array(32));try{let i=crypto.randomUUID(),o=`pair_${btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;if(i===e.requestId||i===e.renewal?.requestId||o===e.secret)throw q("binding");return await this.save({...e,requestId:i,secret:o,renewal:{requestId:e.requestId,secret:e.secret}}),this.expiredRequestId=null,await this.startRequest()}finally{t.fill(0)}})}async startRequest(e=null){if(this.state.token)return this.view();let t=this.state;if(t.recoveryFor&&e!==null&&e!==t.recoveryFor.collectionId)throw q("binding");let{status:i,value:o}=await this.json("/v1/pairing-requests",!1,{installation:{app_id:t.appId,request_id:t.requestId,pairing_secret:t.secret,installation_id:t.installationId,device_id:t.deviceId,kind:t.kind,requested_create_collections:t.requestedCreateCollections,...t.recoveryFor?{recovery_collection_id:t.recoveryFor.collectionId}:{},...t.renewal?{renewal:{request_id:t.renewal.requestId,pairing_secret:t.renewal.secret}}:{}},...e?{collection_hint:e}:{}});if(i!==200&&i!==201)throw q("response");Ie(o,`pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name${this.recoveryTargetKeys()}`),this.assertRecoveryTarget(o);let s=dx(o.verification_uri,`${t.cpOrigin}/pair/${t.requestId}`,e);if(o.pairing_id!==t.requestId||o.pairing_secret!==t.secret||s===null||o.installation_device!==!0||o.app_id!==t.appId||o.app_origin!==t.origin||o.app_name!==this.options.appName||!Number.isSafeInteger(o.expires_in)||o.expires_in<0||o.expires_in>600)throw q("response");return this.expiredRequestId=null,Object.freeze({...this.view(),verificationUri:s})}recoveryTargetKeys(){return this.state.recoveryFor?",recovery_collection_id":""}assertRecoveryTarget(e){if(this.state.recoveryFor&&_e(e.recovery_collection_id)!==this.state.recoveryFor.collectionId)throw q("binding")}selected(e){let t=this.state;if(this.assertRecoveryTarget(e),e.request_id!==t.requestId||e.installation_id!==t.installationId||e.device_id!==t.deviceId||e.kind!==t.kind||e.app_id!==t.appId||e.app_origin!==t.origin||e.approval_mode!=="password-ak1"||!Number.isSafeInteger(e.expires_at)||e.expires_at<0)throw q("response");let i={accountId:_e(e.account_id),connectorId:_e(e.connector_id),challenge:Wt(e.challenge,/^[0-9a-f]{64}$/),approvalMode:"password-ak1"};if(t.selection&&(i.accountId!==t.selection.accountId||i.connectorId!==t.selection.connectorId||i.challenge!==t.selection.challenge||i.approvalMode!==t.selection.approvalMode))throw q("binding");if(Object.assign(i,Kf(e)),t.selection&&cx(t.selection,i),t.recoveryFor&&i.accountId!==t.recoveryFor.accountId)throw e.status==="account_selected"&&!t.selection&&!t.confirmed&&!t.nativeStarted&&!t.proof&&!t.token?(this.wrongAccountRequestId=t.requestId,q("recovery_account_mismatch")):q("binding");return this.wrongAccountRequestId=null,i}canAbandonWrongAccount(){let e=this.state;return this.isCurrent()&&e.recoveryFor!==void 0&&this.wrongAccountRequestId===e.requestId&&!e.selection&&!e.confirmed&&!e.nativeStarted&&!e.proof&&!e.token&&!e.consentRequest}exchange(){return this.exclusive(async()=>{if(this.state.token)return this.view();let{status:e,value:t}=await this.json(`/v1/pairing-requests/${this.state.requestId}/exchange`,!0);if(t.status==="pending"){if(Ie(t,"status"),e!==202||this.state.selection)throw q("response");return this.view()}let i=`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${Na(t)}${this.recoveryTargetKeys()}`;if(t.status==="account_selected"||t.status==="awaiting_approval"){if(Ie(t,i),e!==202||t.status==="awaiting_approval"&&!this.state.proof)throw q("response");let b=this.selected(t);return JSON.stringify(b)!==JSON.stringify(this.state.selection)&&await this.save({...this.state,selection:b}),this.view()}let o=Object.hasOwn(t,"collection_ids")||Object.hasOwn(t,"create_collections"),s=Object.hasOwn(t,"selected_collection_id")||Object.hasOwn(t,"created_collection_ids"),r=Object.hasOwn(t,"native_selection");if(Ie(t,`${i},connector,token,registration${o?",collection_ids,create_collections":""}${s?",selected_collection_id,created_collection_ids":""}${r?",native_selection":""}${Vb(t)}`),e!==200||t.status!=="paired"||!this.state.confirmed||!this.state.proof)throw q("response");let a=this.selected(t),p=Ie(t.connector,"id,name"),l=Ie(t.registration,"device_id,sign_pk,kem_pk,noise_pk");if(p.id!==a.connectorId||p.name!==this.options.appName||l.device_id!==this.state.deviceId||l.sign_pk!==this.state.proof.sign_pk||l.kem_pk!==this.state.proof.kem_pk||l.noise_pk!==this.state.proof.noise_pk)throw q("binding");let c=o?n.collectionIds(t.collection_ids):[],d=o?t.create_collections:!1;if(typeof d!="boolean"||d&&!this.state.requestedCreateCollections)throw q("response");let u=s?this.collectionSelection(t,c,this.state.requestId):void 0,f=r?this.parseNativeSelection(t.native_selection,this.state.requestId):void 0;if(r&&(!o||s||d||c.length!==0||t.timer_consent===!0))throw q("response");if(this.state.recoveryFor&&f&&f.collectionId!==this.state.recoveryFor.collectionId||this.state.recoveryFor&&!f&&(d||c.length!==1||c[0]!==this.state.recoveryFor.collectionId||u?.selectedCollectionId!==this.state.recoveryFor.collectionId||u.createdCollectionIds.length!==0))throw q("binding");if(t.timer_consent===!0&&!u)throw q("response");let h=zb(t,this.state.requestId,c,a.portalConfirmed===!0,u?.selectedCollectionId),m=Wt(t.token,/^idev_[A-Za-z0-9_-]{43}$/);return await this.save({...this.state,selection:a,token:m,collectionIds:c,createCollections:d,nativeSelection:f,...f?{collectionSelection:void 0}:u?{collectionSelection:u}:{},...h?{timerConsent:h}:{}}),this.view()})}parseNativeSelection(e,t){let i=Ie(e,"authorization_request_id,collection_id"),o=this.state.nativeAuthorization;if(!o||o.requestId!==t||_e(i.authorization_request_id)!==o.authorizationId)throw q("binding");return Object.freeze({requestId:t,authorizationRequestId:o.authorizationId,collectionId:_e(i.collection_id)})}pendingNativeSelection(){return this.check(),this.state.nativeSelection??null}nativeAuthorizationContext(e){this.check(),this.owned(e);let t=this.state,i=t.consentRequest&&!t.consentRequest.completed?t.consentRequest:null,o=i?.challenge??t.selection?.challenge,s=i?i.portalConfirmed:t.selection?.portalConfirmed;if(!t.proof||!t.confirmed||!s||!o||t.token&&!i)return null;let r=i?.requestId??t.requestId,a=t.nativeAuthorization;return Object.freeze({requestId:r,accountId:t.selection.accountId,appId:t.appId,challenge:o,...a?.requestId===r?{authorizationId:a.authorizationId}:{}})}attachNativeAuthorization(e,t,i){let o=Object.freeze({...t}),s=Object.freeze({...i}),r=e.isCurrent;return this.exclusive(async()=>{this.owned(e);let a=this.nativeAuthorizationContext(e);if(!a||e.isCurrent!==r||a.requestId!==o.requestId||a.challenge!==o.challenge||a.accountId!==o.accountId||s.applicationId!==a.appId||!/^[0-9a-f]{64}$/.test(s.manifestDigest)||(_e(s.authorizationId),a.authorizationId&&a.authorizationId!==s.authorizationId))throw q("binding");await this.save({...this.state,nativeAuthorization:{...s,requestId:a.requestId}});let p=a.requestId===this.state.requestId?this.state.secret:this.state.consentRequest.secret,{status:l,value:c}=await this.json(`/v1/pairing-requests/${a.requestId}/native-authorization`,!1,{authorization_request_id:s.authorizationId},{bearer:p});if(this.owned(e),e.isCurrent!==r)throw q("fenced");if(Ie(c,"request_id,authorization_request_id,account_id"),l!==200||c.request_id!==a.requestId||c.authorization_request_id!==s.authorizationId||c.account_id!==a.accountId)throw q("binding")})}completeNativeAuthorization(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{i();let o=this.state,s=o.nativeSelection,r=o.nativeAuthorization;if(!this.nativeAcknowledged||!s||!r)throw q("binding");let a=Ub(t,s,o.selection.accountId,o.appId,o.origin,r.manifestDigest);await this.save({...o,nativeGrants:[...(o.nativeGrants??[]).filter(p=>p.collection_id!==s.collectionId),a]}),i()})}collectionSelection(e,t,i){let o=_e(e.selected_collection_id),s=n.collectionIds(e.created_collection_ids);if(!t.includes(o)||s.some(r=>!t.includes(r)))throw q("response");return Object.freeze({requestId:i,selectedCollectionId:o,createdCollectionIds:Object.freeze(s)})}collectionConsentView(){this.check();let e=this.state.consentRequest;return e?Object.freeze({requestId:e.requestId,verificationUri:`${this.state.cpOrigin}/pair/${e.requestId}`,state:e.completed?"scope_updated":"pending",requestedCreateCollections:e.requestedCreateCollections,addedCollectionIds:Object.freeze([...e.addedCollectionIds]),approvedCreateCollections:e.approvedCreateCollections,accountEmail:e.accountEmail??null,...e.accountProvider?{accountProvider:e.accountProvider,accountLogin:e.accountLogin}:{},accountSelectionConfirmed:e.portalConfirmed===!0}):null}consentGuard(e){let t=e.isCurrent;return()=>{if(this.check(),this.owned(e),this.receipt(),e.isCurrent!==t)throw q("fenced")}}async consentWindow(e,t){try{return await t()}catch(i){let o=i instanceof Xe?i.server?.code:null;if((o==="installation_pairing_denied"||o==="installation_pairing_expired")&&i instanceof Xe&&i.server?.status===404){let s=this.state.consentRequest;throw s&&!s.completed&&s.requestId===e&&await this.save({...this.state,consentRequest:null}),q(o==="installation_pairing_expired"?"expired":"refused")}throw i}}startCollectionConsent(e,t=!1,i={}){let o=this.consentGuard(e),s;try{s=px(i)}catch(a){return Promise.reject(a)}let r=async()=>{if(o(),this.state.recoveryFor||typeof t!="boolean")throw q("binding");let a=this.state.consentRequest;if(!a||a.completed){let h=crypto.getRandomValues(new Uint8Array(32));try{let m=`pair_${btoa(String.fromCharCode(...h)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`;a={requestId:crypto.randomUUID(),secret:m,requestedCreateCollections:t,challenge:null,completed:!1,addedCollectionIds:[],approvedCreateCollections:!1},await this.save({...this.state,consentRequest:a}),o()}finally{h.fill(0)}}else if(a.requestedCreateCollections!==t)throw q("binding");let p=this.state,l=p.token,c=a,{status:d,value:u}=await this.consentWindow(c.requestId,()=>this.json("/v1/pairing-requests",!1,{installation:{app_id:p.appId,request_id:c.requestId,pairing_secret:c.secret,installation_id:p.installationId,device_id:p.deviceId,kind:p.kind,requested_create_collections:c.requestedCreateCollections,reconsent:!0},...s?{collection_hint:s}:{}},{bearer:l}));o(),Ie(u,"pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name");let f=null;if(d!==200&&d!==201||u.pairing_id!==a.requestId||u.pairing_secret!==a.secret||(f=dx(u.verification_uri,`${p.cpOrigin}/pair/${a.requestId}`,s))===null||u.installation_device!==!0||u.app_id!==p.appId||u.app_origin!==p.origin||u.app_name!==this.options.appName||!Number.isSafeInteger(u.expires_in)||u.expires_in<0||u.expires_in>600||l!==this.state.token)throw q("response");return Object.freeze({...this.collectionConsentView(),verificationUri:f})};return this.exclusive(async()=>{let a=this.state.consentRequest,p=a!==null&&!a.completed;try{return await r()}catch(l){if(p&&this.state.consentRequest===null&&l instanceof Xe&&(l.reason==="refused"||l.reason==="expired"))return await r();throw l}})}exchangeCollectionConsent(e){let t=this.consentGuard(e);return this.exclusive(async()=>{t();let i=this.state.consentRequest,o=this.state;if(!i)throw q("binding");if(i.completed)return this.collectionConsentView();let{status:s,value:r}=await this.consentWindow(i.requestId,()=>this.json(`/v1/pairing-requests/${i.requestId}/exchange`,!1,void 0,{bearer:i.secret}));t();let a=Na(r),p=`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${a}`,l=r.status==="scope_updated",c=l&&(Object.hasOwn(r,"selected_collection_id")||Object.hasOwn(r,"created_collection_ids")),d=l&&Object.hasOwn(r,"native_selection");if(Ie(r,`${p}${l?",added_collection_ids,approved_create_collections":""}${c?",selected_collection_id,created_collection_ids":""}${d?",native_selection":""}${l?Vb(r):""}`),!l&&(s!==202||r.status!=="awaiting_approval")||l&&s!==200||r.request_id!==i.requestId||r.account_id!==o.selection.accountId||r.connector_id!==o.selection.connectorId||r.device_id!==o.deviceId||r.installation_id!==o.installationId||r.kind!==o.kind||r.app_id!==o.appId||r.app_origin!==o.origin||r.approval_mode!==o.selection.approvalMode||!Number.isSafeInteger(r.expires_at)||r.expires_at<0)throw q("binding");let u=Kf(r);if(i.portalConfirmed&&!a)throw q("response");cx(i,u);let f=Wt(r.challenge,/^[0-9a-f]{64}$/);if(i.challenge!==null&&i.challenge!==f)throw q("binding");if(!l)return(i.challenge===null||a&&!i.portalConfirmed)&&await this.save({...o,consentRequest:{...i,...u,challenge:f}}),t(),this.collectionConsentView();let h=n.collectionIds(r.added_collection_ids);if(typeof r.approved_create_collections!="boolean"||r.approved_create_collections&&!i.requestedCreateCollections)throw q("response");let m=n.collectionIds([...new Set([...o.collectionIds,...h])]),b=c?this.collectionSelection(r,m,i.requestId):void 0,w=d?this.parseNativeSelection(r.native_selection,i.requestId):void 0;if(d&&(c||h.length!==0||r.approved_create_collections!==!1||r.timer_consent===!0)||r.timer_consent===!0&&!b)throw q("response");let g=zb(r,i.requestId,h,u.portalConfirmed===!0,b?.selectedCollectionId);return await this.save({...o,collectionIds:m,nativeSelection:w,...w?{collectionSelection:void 0}:b?{collectionSelection:b}:{},...g?{timerConsent:g}:{},createCollections:o.createCollections||r.approved_create_collections,consentRequest:{...i,...u,challenge:f,completed:!0,addedCollectionIds:h,approvedCreateCollections:r.approved_create_collections}}),t(),this.collectionConsentView()})}listApprovedCollections(e){let t=this.consentGuard(e);return this.exclusive(async()=>{t();let i;try{i=await this.json("/v1/next/collections?include=file_actions",!1,void 0,{bearer:this.state.token,get:!0})}catch(c){if(t(),c instanceof Xe&&c.reason==="unavailable"&&!c.server&&!$b.has(c)&&this.state.collectionListing!==void 0)return Object.freeze(Fb(this.state.collectionListing).filter(d=>this.state.collectionIds.includes(d.collectionId)).map(d=>Object.freeze({...d,fileActions:Object.freeze([])})));if(c instanceof Xe&&(c.server||$b.has(c))&&this.state.collectionListing!==void 0){let d={...this.state};delete d.collectionListing,await this.save(d),t()}throw c}t();let{status:o,value:s}=i;if(Ie(s,"collections"),o!==200)throw q("response");let r=Fb(s.collections),a=s.collections.filter(c=>this.state.collectionIds.includes(c.collection_id)).map(c=>{let d={...c};return delete d.file_actions,d}),p={...this.state};delete p.collectionListing;let l={...p,collectionListing:a};return await this.save(new TextEncoder().encode(JSON.stringify(l)).length<=128*1024?l:p),t(),r})}collectionRecoveries(){return this.check(),Object.freeze({...this.state.collectionRecoveries})}retireCollectionScope(e,t,i=null){let o=this.consentGuard(e);return this.exclusive(async()=>{if(o(),_e(t),!(this.state.collectionIds.includes(t)||this.state.nativeGrants?.some(s=>s.collection_id===t)))throw q("binding");if(i!==null){if(_e(i),this.state.collectionRecoveries?.[t]!==i)throw q("fenced")}else if(Object.hasOwn(this.state.collectionRecoveries??{},t))return;await this.saveRecovery(t,null),o()})}freshCollectionInstallation(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{if(i(),_e(t),!Object.hasOwn(this.state.collectionRecoveries??{},t))throw q("binding");let o=this.state.collectionRecoveries[t];if(o!==null)return o;let s=crypto.randomUUID();return await this.saveRecovery(t,s),i(),s})}async saveRecovery(e,t){let i={...this.state,collectionRecoveries:{...this.state.collectionRecoveries,[e]:t}};new TextEncoder().encode(JSON.stringify(i)).length>128*1024&&delete i.collectionListing,await this.save(i)}startFileAccess(e,t,i,o){let s=this.consentGuard(e),r;try{if(_e(t),r=Wb([...i],Hf,!1),r.length!==i.length)throw q("binding")}catch{return Promise.reject(q("binding"))}return this.exclusive(async()=>{s();let a=crypto.getRandomValues(new Uint8Array(32));try{let p=crypto.randomUUID(),l=`pair_${btoa(String.fromCharCode(...a)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}`,c=this.state,d=c.token,{status:u,value:f}=await this.json("/v1/pairing-requests",!1,{installation:{app_id:c.appId,request_id:p,pairing_secret:l,installation_id:c.installationId,device_id:c.deviceId,kind:c.kind,requested_create_collections:!1,reconsent:!0,file_access:{collection_id:t,actions:[...r],reason:o}}},{bearer:d});s(),Ie(f,"pairing_id,pairing_secret,verification_uri,expires_in,installation_device,app_id,app_origin,app_name");let h=`${c.cpOrigin}/pair/${p}`;if(u!==200&&u!==201||f.pairing_id!==p||f.pairing_secret!==l||f.verification_uri!==h||f.installation_device!==!0||f.app_id!==c.appId||f.app_origin!==c.origin||f.app_name!==this.options.appName||!Number.isSafeInteger(f.expires_in)||f.expires_in<0||f.expires_in>600||d!==this.state.token)throw q("response");return Object.freeze({requestId:p,secret:l,collectionId:t,actions:r,verificationUri:h,expiresAt:Date.now()+f.expires_in*1e3})}finally{a.fill(0)}})}exchangeFileAccess(e,t){let i=this.consentGuard(e);return this.exclusive(async()=>{i();let o=this.state,{status:s,value:r}=await this.json(`/v1/pairing-requests/${t.requestId}/exchange`,!1,void 0,{bearer:t.secret});if(i(),r.status==="pending"){if(Ie(r,"status"),s!==202)throw q("response");return Object.freeze({state:"pending"})}if(r.status==="account_selected"||r.status==="awaiting_approval"){if(Ie(r,`status,request_id,account_id,connector_id,device_id,installation_id,kind,challenge,approval_mode,app_id,app_origin,expires_at${Na(r)}`),s!==202||r.request_id!==t.requestId||r.account_id!==o.selection?.accountId||r.installation_id!==o.installationId||r.device_id!==o.deviceId||r.app_id!==o.appId)throw q("binding");return Object.freeze({state:"pending"})}if(r.status==="declined"){if(Ie(r,"status,request_id"),s!==200||r.request_id!==t.requestId)throw q("response");return Object.freeze({state:"declined"})}if(Ie(r,"status,request_id,collection_id,file_actions"),s!==200||r.status!=="file_access_updated"||r.request_id!==t.requestId||r.collection_id!==t.collectionId)throw q("response");return Object.freeze({state:"granted",actions:Wb(r.file_actions,t.actions,!1)})})}renameApprovedCollection(e,t,i){let o;try{_e(t),o=wr(i)}catch{return Promise.reject(q("binding"))}let s=this.consentGuard(e);return this.exclusive(async()=>{if(s(),!this.state.collectionIds.includes(t))throw q("refused");let{status:r,value:a}=await this.json(`/v1/next/collections/${t}/name`,!1,{display_name:o},{bearer:this.state.token,patch:!0});s();let p=Ie(a,"collection_id,display_name");if(r!==200||p.collection_id!==t||p.display_name!==o)throw q("response");return Object.freeze({collectionId:t,displayName:o})})}deleteApprovedCollection(e,t,i){let o;try{_e(t),o=wr(i)}catch{return Promise.reject(q("binding"))}let s=this.consentGuard(e);return this.exclusive(async()=>{if(s(),!this.state.collectionIds.includes(t))throw q("refused");let{status:r,value:a}=await this.json(`/v1/next/collections/${t}`,!1,{confirm_name:o},{bearer:this.state.token,delete:!0});s();let p=Ie(a,"collection_id,deleted");if(r!==200||p.collection_id!==t||p.deleted!==!0)throw q("response");return Object.freeze({collectionId:t,deleted:!0})})}signOutInstallation(){return this.exclusive(async()=>{let e=this.state.token;if(!e)throw q("binding");try{let{status:t,value:i}=await this.json("/v1/next/installation",!1,void 0,{bearer:e,delete:!0});if(t!==200||i.ok!==!0||i.revoked!==!0||!Number.isSafeInteger(i.collections)||i.collections<0||i.fence!=="closed"&&i.fence!=="committed_with_degraded_fence")throw q("response");return"revoked"}catch(t){if(t instanceof Xe&&t.server?.status===401&&t.server.code==="invalid_connector")return"already_signed_out";throw t}})}hasWebPushChannel(){return this.check(),this.state.timerChannel?.kind==="web_push"}confirmPortalSelectedAccount(){return this.exclusive(async()=>{let e=this.state.selection;if(!e?.portalConfirmed)throw q("account_confirmation_required");if(this.state.confirmed||await this.save({...this.state,confirmed:!0}),this.check(),this.state.selection!==e)throw q("binding");return this.view()})}confirmSelectedAccount(e){return this.exclusive(async()=>{if(!this.state.selection||e!==this.state.selection.accountId)throw q("binding");return this.state.confirmed||await this.save({...this.state,confirmed:!0}),this.view()})}confirmedSelection(){if(this.check(),!this.state.confirmed||!this.state.selection)throw q("account_confirmation_required");let e=this.state,t=e.selection;return Object.freeze({accountId:t.accountId,connectorId:t.connectorId,installationId:e.installationId,deviceId:e.deviceId,kind:e.kind,cpOrigin:e.cpOrigin,approvalMode:t.approvalMode,isCurrent:()=>this.isCurrent()})}owned(e){let t=this.confirmedSelection();if(e.isCurrent()!==!0||e.scope.account!==t.accountId||e.scope.installation!==t.installationId)throw q("fenced")}prepareOriginalDevice(e){let t=e.isCurrent,i=()=>{try{return this.check(),this.owned(e),e.isCurrent===t}catch{return!1}};return this.exclusive(async()=>{if(!i())throw q("fenced");let o=this.state.nativeStarted?"existing":"fresh";if(this.state.nativeStarted||await this.save({...this.state,nativeStarted:!0}),!i())throw q("fenced");return Object.freeze({mode:o,pin:Object.freeze({...this.confirmedSelection(),isCurrent:i,installationOwned:i})})})}attest(e){let{runtime:t,custody:i,persistence:o,installation:s}=e,r=s.isCurrent,a=()=>{if(this.check(),this.owned(s),s.isCurrent!==r||!t.deviceCustodyCurrent(this.confirmedSelection(),i))throw q("fenced")};return this.exclusive(async()=>{if(a(),!this.state.nativeStarted)throw q("recovery_required");if(this.state.token)return this.view();if(!this.state.proof){await o.pending(new Uint8Array(i.envelope),{signal:this.lifetime.signal}),a();let d=Uint8Array.from(this.state.selection.challenge.match(/../g),f=>parseInt(f,16)),u=null;try{let f=t.signCpEnrol(d);u=f.signature,a(),await this.save({...this.state,proof:n.proof({sign_pk:Rn(f.signPublicKey),kem_pk:Rn(f.kemPublicKey),noise_pk:Rn(f.noisePublicKey),sig:Rn(u)})}),a()}finally{d.fill(0),u?.fill(0)}}let p=this.state.proof;if(p.sign_pk!==Rn(i.signPublicKey)||p.kem_pk!==Rn(i.kemPublicKey)||p.noise_pk!==Rn(i.noisePublicKey))throw q("binding");let{status:l,value:c}=await this.json(`/v1/pairing-requests/${this.state.requestId}/attest`,!0,p);if(a(),Ie(c,"ok"),l!==200||c.ok!==!0)throw q("response");return this.view()})}receipt(){let e=this.state,t=e.proof;if(this.check(),!e.token||!t||!e.selection)throw q("binding");let i=o=>Uint8Array.from(o.match(/../g),s=>parseInt(s,16));return Object.freeze({connectorId:e.selection.connectorId,deviceId:e.deviceId,installationId:e.installationId,signPublicKey:i(t.sign_pk),kemPublicKey:i(t.kem_pk),noisePublicKey:i(t.noise_pk)})}acknowledge(e){let{runtime:t,custody:i,persistence:o,installation:s}=e,r=s.isCurrent,a=()=>{if(this.check(),this.owned(s),s.isCurrent!==r||!t.deviceCustodyCurrent(this.confirmedSelection(),i))throw q("fenced")};return this.exclusive(async()=>{a();let p=this.receipt();if(Rn(p.signPublicKey)!==Rn(i.signPublicKey)||Rn(p.kemPublicKey)!==Rn(i.kemPublicKey)||Rn(p.noisePublicKey)!==Rn(i.noisePublicKey))throw q("binding");return await o.registered(p,{signal:this.lifetime.signal}),a(),t.acknowledgeDeviceRegistration(p),a(),this.nativeAcknowledged=!0,p})}originalTimerChannel(e){if(this.check(),this.receipt(),!this.state.timerConsent?.approved||!this.state.timerConsent.grants.some(i=>i.grantId===e))throw q("fenced");let t=this.state.timerChannel;return t?.grantId===e?t:null}retainTimerChannel(e,t){return this.exclusive(async()=>{if(this.originalTimerChannel(e),t!==null&&Bb(t).grantId!==e)throw q("binding");await this.save({...this.state,timerChannel:t===null?void 0:Bb(t)}),this.originalTimerChannel(e)})}session(e){return this.receipt(),this.confirmedHostSession(e,this.state.environment)}confirmedHostSession(e,t){let i=this.confirmedSelection();if(t!==this.state.environment)throw q("binding");let o=new URL(e);if(o.origin!==e||o.protocol!=="https:"&&!!1||o.username||o.password)throw q("binding");return Object.freeze({...i,logOrigin:e,timerConsent:()=>(this.check(),this.state.timerConsent??null),connectorBearer:async({signal:s})=>{if(this.check(),s.aborted||!this.state.token)throw q("fenced");return this.state.token}})}async close(){this.closed||(this.closed=!0,this.lifetime.abort(),this.parent.removeEventListener("abort",this.onAbort),this.state.secret="",this.state.token=null,this.state.consentRequest&&(this.state.consentRequest.secret=""),this.state.renewal&&(this.state.renewal.secret=""),this.state.renewal=null),await this.store.close()}}});function Da(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw ae("shape");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw ae("shape");return e}function Yf(n,e){let t=Da(n);if(t>BigInt(e))throw ae("shape");return Number(t)}function Ho(n){if(!(n instanceof Map))throw ae("shape");return n}function Jf(n){let e=[];for(let[t,i]of n){if(typeof t!="number"||!Number.isSafeInteger(t)||t<0)throw ae("shape");e.push([t,i])}return new Map(e.sort(([t],[i])=>t-i))}function Go(n,e){if(!(n instanceof Uint8Array)||e!==void 0&&n.length!==e)throw ae("shape");return n}function Xf(n,e){return n.length===e.length&&n.every((t,i)=>t===e[i])}function ux(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}function fx(n){return btoa(String.fromCharCode(...n))}function Hb(n,e){let t;try{t=new URL(n)}catch{throw ae("binding")}if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(e&&ot(n)))throw ae("binding");return t.origin}function hx(n,e){let t=n.headers.get("content-length");return t!==null&&/^(0|[1-9][0-9]*)$/.test(t)&&Number(t)>e}function Wq(n,e,t,i,o,s,r){let a=Gf.encode("mdbase/v1/ls-http"),p=Gf.encode(t),l=Gf.encode("/v1/rpc"),c=Gf.encode(o),d=it(c),u=it(s);c.fill(0);let f=new Uint8Array(1+a.length+p.length+1+l.length+1+16+96),h=0;for(let b of[Uint8Array.of(a.length),a,p,Uint8Array.of(0),l,Uint8Array.of(0),U(i),d,u,r])f.set(b,h),h+=b.length;let m=it(f);return f.fill(0),Object.freeze({endpoint:n,originalCallId:e,frame:s.slice(),token:o,method:t,path:"/v1/rpc",collection:i,nonce:r.slice(),bodyHash:u,tokenHash:d,digest:m})}function mx(n){return/^[0-9a-f]{64}$/.test(n)?Uint8Array.from(n.match(/../g).map(e=>parseInt(e,16))):null}function Yq(n){try{let e=ue(n).get(3);if(!(e instanceof Map))return!1;let t=e;return t.get(0)==="unauthenticated"&&(t.get(1)==="nonce"||t.get(1)==="replay")}catch{return!1}}var Kb,tp,Fq,Vq,Gf,gn,ae,Kq,Hq,Gq,$a,np=I(()=>{"use strict";bt();Or();Je();ge();Wn();Kb=16*1024*1024,tp=9*1024*1024,Fq=new Set(["append","read","head","subscribe","unsubscribe","put_object","get_object","has_objects","put_snapshot","get_snapshot","endorse_snapshot","stream_join","stream_leave","stream_send"]),Vq=new Set(["host","content-length","transfer-encoding","connection","keep-alive","upgrade","te","trailer","expect","range","cookie","authorization","proxy-authorization","origin","referer","accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","date","dnt","permissions-policy","set-cookie","via"]),Gf=new TextEncoder,gn=class extends Error{constructor(t,i){super(`app log transport: ${t}`);this.reason=t;this.server=i;this.name="AppHttpLogError"}reason;server},ae=n=>new gn(n);Kq=4e4,Hq=6,Gq="x-mdbase-next-nonce";$a=class{constructor(e,t={}){this.authority=e;try{if(this.endpointId=Da(e.endpoint),this.endpoint=this.endpointId,this.collection=e.collection,this.collectionBytes=U(this.collection),this.loopback=t.allowLoopbackHttp===!0,this.base=Hb(e.origin,this.loopback),!Array.isArray(e.directOrigins)||e.directOrigins.length>32)throw ae("binding");this.approved=new Set([this.base,...e.directOrigins.map(i=>Hb(i,this.loopback))]),this.fetchImpl=t.fetch??globalThis.fetch,this.now=t.now??Date.now}catch{throw ae("binding")}}authority;endpoint;collection;endpointId;collectionBytes;base;approved;fetchImpl;now;loopback;commitId=(1n<<64n)-1n;spares=[];responseId=0;receiving=new Map;responseProgress(){return[...this.receiving].map(([e,t])=>({id:e,bytes:t}))}isCurrent(){try{return this.authority.isCurrent()===!0&&Da(this.authority.endpoint)===this.endpointId&&this.authority.collection===this.collection&&Hb(this.authority.origin,this.loopback)===this.base}catch{return!1}}check(e){if(e.aborted||!this.isCurrent())throw ae("fenced")}request(e){if(e.length>Kb)throw ae("shape");let t=Ho(ue(e));if(t.get(0)!==0||typeof t.get(2)!="string")throw ae("shape");let i=t.get(2),o=Ho(t.get(3));if(!Fq.has(i)||!Xf(Go(o.get(0),16),this.collectionBytes))throw ae("shape");return{id:Da(t.get(1)),method:i,params:o}}response(e,t){let i=Ho(ue(e));if(i.get(0)!==1||Da(i.get(1))!==t||i.has(2)===i.has(3))throw ae("shape");return i}async fetch(e,t,i,o){this.check(i);let s=new AbortController,r=()=>s.abort();i.addEventListener("abort",r,{once:!0});let a=setTimeout(r,o);a.unref?.();try{let p=this.fetchImpl,l=(t.method??"GET")==="GET"?"no-store":"default",c=await p(e,{...t,signal:s.signal,redirect:"error",credentials:"omit",cache:l,referrerPolicy:"no-referrer"});if(!this.isCurrent()||i.aborted)throw c.body?.cancel().catch(()=>{}),ae("fenced");return this.withCleanup(c,()=>{clearTimeout(a),i.removeEventListener("abort",r)})}catch{throw clearTimeout(a),i.removeEventListener("abort",r),ae(i.aborted||!this.isCurrent()?"fenced":"unavailable")}}cleanups=new WeakMap;withCleanup(e,t){return this.cleanups.set(e,t),e}release(e){this.cleanups.get(e)?.(),this.cleanups.delete(e)}async read(e,t,i,o){let s=new Uint8Array(Math.min(1024,t)),r=0,a=null;try{if(this.check(i),hx(e,t))throw ae("integrity");if(!e.body)return s.subarray(0,0);for(a=e.body.getReader();;){let{done:p,value:l}=await a.read();try{if(this.check(i),p)break;if(r+l.length>t)throw ae("integrity");if(r+l.length>s.length){let c=new Uint8Array(Math.min(t,Math.max(s.length*2,r+l.length)));c.set(s.subarray(0,r)),s.fill(0),s=c}s.set(l,r),r+=l.length,o(l.length)}finally{l?.fill(0)}}return s.subarray(0,r)}catch(p){throw s.fill(0),(a?.cancel()??e.body?.cancel())?.catch(()=>{}),p}finally{a?.releaseLock(),this.release(e)}}async refusal(e,t,i){let o;try{let r=await this.read(e,8192,t,i);try{o=Ks(r)}finally{r.fill(0)}}catch(r){if(r instanceof gn&&r.reason==="fenced")return r;o=void 0}let s=ji(e.status,o,e.headers);return new gn(St(s)??"unavailable",s)}takeSpare(){for(let e=this.spares.pop();e;e=this.spares.pop()){let t=this.now()-e.at;if(t>=0&&t<Kq)return e.nonce;e.nonce.fill(0)}return null}keepSpare(e){let t=mx(e.headers.get(Gq)??"");if(t)for(this.spares.push({nonce:t,at:this.now()});this.spares.length>Hq;)this.spares.shift().nonce.fill(0)}async freshNonce(e,t){let i=await this.fetch(`${this.base}/v1/nonce`,{},e,15e3);if(!i.ok)throw await this.refusal(i,e,t);let o=await this.read(i,128,e,t);try{this.check(e);let s=mx(new TextDecoder("utf-8",{fatal:!0}).decode(o).trim());if(!s)throw ae("shape");return s}finally{o.fill(0)}}async rpc(e,t,i,o,s,r=i,a=!0){this.check(o);let p=await this.authority.accessToken({signal:o});if(this.check(o),typeof p!="string"||!p||p.length>16*1024||/[\r\n]/.test(p))throw ae("shape");let l=a?this.takeSpare():null,c=l??await this.freshNonce(o,s);this.check(o);let d=Wq(this.endpoint,r,t,this.collection,p,e,c);c.fill(0);let u=null;try{if(u=await this.authority.signLogProof(d,{signal:o}),this.check(o),!(u instanceof Uint8Array)||u.length!==64)throw ae("shape");let f=await this.fetch(`${this.base}/v1/rpc`,{method:"POST",headers:{authorization:`Bearer ${p}`,"content-type":"application/cbor","x-mdbase-nonce":ux(d.nonce),"x-mdbase-sig":ux(u)},body:e},o,15e3);if(this.keepSpare(f),f.status===401&&this.authority.invalidateToken?.(p),!f.ok)throw await this.refusal(f,o,s);let h=await this.read(f,t==="append"?64*1024:Kb,o,s);try{this.check(o),this.response(h,i)}catch(m){throw h.fill(0),m}return l&&Yq(h)?(h.fill(0),await this.rpc(e,t,i,o,s,r,!1)):h}finally{u?.fill(0),d.frame.fill(0),d.nonce.fill(0),d.bodyHash.fill(0),d.tokenHash.fill(0),d.digest.fill(0)}}direct(e,t){let i=Ho(e),o=i.get(0),s=Ho(i.get(1)),r=i.get(2);if(typeof o!="string"||o.length>16*1024||typeof r!="number"||!Number.isSafeInteger(r))throw ae("shape");let a;try{a=new URL(o)}catch{throw ae("shape")}if(a.username||a.password||a.hash||!this.approved.has(a.origin))throw ae("binding");let p=new Headers,l=new Set;if(s.size>32)throw ae("shape");for(let[c,d]of s){if(typeof c!="string"||typeof d!="string")throw ae("shape");let u=c.toLowerCase();if(!/^[a-z0-9!#$%&'*+.^_`|~-]+$/.test(u)||Vq.has(u)||u.startsWith("proxy-")||u.startsWith("sec-")||u.startsWith("x-mdbase-")||u.startsWith("x-http-method")||l.has(u)||d.length>8*1024||/[\r\n]/.test(d))throw ae("shape");if(u==="x-amz-checksum-sha256"&&d!==fx(t))throw ae("integrity");l.add(u),p.set(u,d)}if(r-this.now()<=5e3)throw ae("unavailable");return{url:a.href,headers:p,expires:r}}timeout(e,t){let i=e.expires-this.now();if(i<=5e3)throw ae("unavailable");return Math.min(i,3e4+Math.ceil(t/(128*1024))*1e3)}async upload(e,t,i){this.check(i);let o;try{o=await this.fetch(e.url,{method:"PUT",headers:e.headers,body:t},i,this.timeout(e,t.length))}catch(s){if(this.check(i),s instanceof gn&&s.reason==="unavailable")return;throw s}try{if(this.check(i),o.ok||o.status===408||o.status===425||o.status===429||o.status>=500)return;throw ae("unavailable")}finally{o.body?.cancel().catch(()=>{}),this.release(o)}}async download(e,t,i,o,s){let r=new Uint8Array(t),a=0,p=0;try{for(let l=0;l<32&&p<5;l++){this.check(o);let c=a,d=new Headers(e.headers);c>0&&d.set("range",`bytes=${c}-${t-1}`);let u;try{u=await this.fetch(e.url,{headers:d},o,this.timeout(e,t-c))}catch{this.check(o),p++;continue}let f=null;try{if(this.check(o),[401,403,404,410].includes(u.status))throw ae("unavailable");if([408,425,429].includes(u.status)||u.status>=500){p++;continue}if(u.status!==(c===0?200:206)||hx(u,t-c)||(c>0?u.headers.get("content-range")!==`bytes ${c}-${t-1}/${t}`:u.headers.has("content-range"))||u.headers.has("content-encoding")&&u.headers.get("content-encoding")!=="identity")throw ae("integrity");let h=u.headers.get("x-amz-checksum-sha256");if(h!==null&&h!==fx(i)||!u.body)throw ae("integrity");for(f=u.body.getReader();;){let m;try{m=await f.read()}catch{this.check(o);break}try{if(this.check(o),m.done)break;if(m.value.length>t-a)throw ae("integrity");r.set(m.value,a),a+=m.value.length,s(m.value.length)}finally{m.value?.fill(0)}}}finally{(f?.cancel()??u.body?.cancel())?.catch(()=>{}),f?.releaseLock(),this.release(u)}if(a===t){if(!Xf(it(r),i))throw ae("integrity");return r}p=a>c?0:p+1}throw ae("unavailable")}catch(l){throw r.fill(0),l}}async send(e,t){let i=null,o=null,s=null,r=null,a=null,p=++this.responseId,l=0;this.receiving.set(p,l);let c=d=>{l+=d,this.receiving.set(p,l)};try{if(this.check(t.signal),Da(e.endpoint)!==this.endpointId||!(e.frame instanceof Uint8Array)||e.frame.length>Kb||e.sidecar!==void 0&&(!(e.sidecar instanceof Uint8Array)||e.sidecar.length>tp))throw ae("shape");i=e.frame.slice(),o=e.sidecar?.slice()??null;let d=this.request(i);if(o&&d.method!=="put_object")throw ae("shape");if(d.method==="put_object"){let h=Yf(d.params.get(3),tp),m=Go(d.params.get(4),32),b=d.params.get(5);if(h===0||o!==null&&(b!==void 0||o.length<=1024*1024)||o===null&&h>1024*1024)throw ae("shape");let w=o??Go(b);if(w.length!==h||!Xf(it(w),m))throw ae("integrity")}s=await this.rpc(i,d.method,d.id,t.signal,c),this.check(t.signal);let u=this.response(s,d.id);if(u.has(3)){let h=s;return s=null,h}if(d.method==="put_object"){let h=Ho(u.get(2)),m=h.get(0);if(m===0||m===2){if(h.has(1))throw ae("shape");let A=s;return s=null,A}if(m!==1||!o)throw ae("shape");let b=Go(d.params.get(4),32),w=Go(d.params.get(1),32);if(await this.upload(this.direct(h.get(1),b),o,t.signal),this.check(t.signal),this.commitId===d.id||this.commitId===0n)throw ae("unavailable");let g=this.commitId--;a=pe(new Map([[0,0],[1,g],[2,"commit_object"],[3,new Map([[0,this.collectionBytes],[1,w]])]]));let y=await this.rpc(a,"commit_object",g,t.signal,c,d.id);try{this.check(t.signal);let A=this.response(y,g),k=A.get(2);if(A.has(3)||!(k instanceof Map)||k.size!==1||k.get(0)!==!0)throw ae("unavailable")}finally{y.fill(0)}let v=new Map(h);return v.delete(1),v.set(0,0),u.set(2,Jf(v)),pe(Jf(u))}if(d.method==="get_object"){let h=Ho(u.get(2)),m=Yf(h.get(2),tp),b=Go(h.get(3),32);if(m===0||h.has(0)===h.has(1))throw ae("shape");let w=d.params.get(2),g=0,y=m;if(w!==void 0&&(!Array.isArray(w)||w.length!==2||(g=Yf(w[0],tp),y=Yf(w[1],tp),g>m||y>m-g)))throw ae("shape");if(h.has(0)){let A=Go(h.get(0));if(A.length!==y||y===m&&!Xf(it(A),b))throw ae("integrity");let k=s;return s=null,k}r=await this.download(this.direct(h.get(1),b),m,b,t.signal,c),this.check(t.signal);let v=new Map(h);return v.delete(1),v.set(0,r.subarray(g,g+y)),u.set(2,Jf(v)),pe(Jf(u))}let f=s;return s=null,f}catch(d){if(d instanceof gn)throw d;if(t.signal.aborted||!this.isCurrent())throw ae("fenced");let u=null;try{u=d.server}catch{}let f=Pn(u)?St(u):null;throw f&&Pn(u)?new gn(f,u):ae("unavailable")}finally{this.receiving.delete(p),i?.fill(0),o?.fill(0),s?.fill(0),r?.fill(0),a?.fill(0)}}}});function yx(n,e){let t;try{t=new URL(n)}catch{throw st("binding")}if(t.username||t.password||t.pathname!=="/"||t.search||t.hash||t.protocol!=="https:"&&!(e&&ot(n)))throw st("binding");return t.origin}function gx(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw st("binding");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw st("binding");return e}function Jq(n){return[...n].map(e=>e.toString(16).padStart(2,"0")).join("")}function Xq(n){if(!n||typeof n!="object"||Array.isArray(n))throw st("response");return n}var ei,st,Gb,za,ip=I(()=>{"use strict";bt();ge();np();Wn();ei=class extends Error{constructor(t,i){super(`app CP authority: ${t}`);this.reason=t;this.server=i;this.name="AppCpAuthorityError"}reason;server},st=n=>new ei(n),Gb=n=>new ei(St(n)??"unavailable",n);za=class{constructor(e,t,i={}){this.runtime=e;this.session=t;this.tokenCache=i.tokenCache??null;try{this.endpoint=gx(t.endpoint),this.collection=t.collection,this.connectorId=t.connectorId,this.deviceId=t.deviceId;for(let o of[this.collection,this.connectorId,this.deviceId])if(U(o).every(r=>r===0))throw st("binding");if(this.rawCpOrigin=t.cpOrigin,this.rawLogOrigin=t.logOrigin,this.cpOrigin=yx(this.rawCpOrigin,i.allowLoopbackHttp===!0),this.origin=yx(this.rawLogOrigin,i.allowLoopbackHttp===!0),this.directOrigins=Object.freeze([...t.directOrigins]),this.now=i.now??Date.now,this.fetchImpl=i.fetch??globalThis.fetch,this.transport=new $a(this,i),!this.scopeCurrent())throw st("binding");e.bindCpConnector(t)}catch{throw st("binding")}}runtime;session;endpoint;collection;origin;directOrigins;cpOrigin;connectorId;deviceId;rawCpOrigin;rawLogOrigin;now;fetchImpl;lifetime=new AbortController;authenticated=!1;token=null;tokenCache;cacheTried=!1;transport;scopeCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&gx(this.session.endpoint)===this.endpoint&&this.session.collection===this.collection&&this.session.connectorId===this.connectorId&&this.session.deviceId===this.deviceId&&this.session.cpOrigin===this.rawCpOrigin&&this.session.logOrigin===this.rawLogOrigin}catch{return!1}}isCurrent(){return this.authenticated&&this.scopeCurrent()}check(e){if(!this.scopeCurrent())throw this.close(),st("fenced");if(e.aborted)throw st("fenced")}logTransport(){if(!this.isCurrent())throw st("fenced");return this.transport}async signLogProof(e,t){if(this.check(t.signal),!this.authenticated)throw st("fenced");return this.runtime.signLogHttp(e)}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort();o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let a=setTimeout(r,15e3);a.unref?.();let p=null,l=null,c=new Uint8Array(32*1024),d=0;try{let u=this.fetchImpl;if(p=await u(`${this.cpOrigin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted)throw st("unavailable");let f=p.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>c.length)throw s.abort(),p.ok?st("unavailable"):Gb(ji(p.status,void 0,p.headers));if(!p.body)throw p.ok?st("response"):Gb(ji(p.status,void 0,p.headers));for(l=p.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(o),s.signal.aborted)throw st("unavailable");if(h)break;if(d+m.length>c.length)throw s.abort(),st("response");c.set(m,d),d+=m.length}finally{m?.fill(0)}}if(!p.ok)throw Gb(ji(p.status,Ks(c.subarray(0,d)),p.headers));return Xq(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c.subarray(0,d))))}catch(u){throw this.check(o),u instanceof ei?u:st("unavailable")}finally{c.fill(0),(l?.cancel()??p?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async accessToken(e){let t=null,i=null;try{if(this.check(e.signal),this.token&&this.token.expires-this.now()>5e3)return this.token.value;if(!this.token&&this.tokenCache&&!this.cacheTried){this.cacheTried=!0;let p=await this.tokenCache.read(this.cacheKey(),this.now());if(this.check(e.signal),p)return this.token={value:p.value,expires:p.expires},this.authenticated=!0,p.value}let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw st("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||(t=Uint8Array.from(s.challenge.match(/../g).map(p=>parseInt(p,16))),i=this.runtime.signCpLogToken(t),this.check(e.signal),!(i instanceof Uint8Array)||i.length!==64))throw st("response");let r=JSON.stringify({device_id:this.deviceId,challenge:s.challenge,sig:Jq(i),capabilities:["collection_mode_switch_v1"]}),a=await this.json(`/v1/next/collections/${this.collection}/log-token`,o,r,e.signal);if(this.check(e.signal),typeof a.token!="string"||!a.token||a.token.length>16*1024||/[^\x21-\x7e]/.test(a.token)||typeof a.expires_at!="number"||!Number.isSafeInteger(a.expires_at)||a.expires_at-this.now()<=5e3||a.expires_at-this.now()>16*6e4)throw st("response");return this.token={value:a.token,expires:a.expires_at},this.authenticated=!0,this.tokenCache?.write(this.cacheKey(),this.token).catch(()=>{}),a.token}catch(o){throw o instanceof ei?o:st(this.scopeCurrent()?"unavailable":"fenced")}finally{t?.fill(0),i?.fill(0)}}cacheKey(){return[this.rawCpOrigin,this.rawLogOrigin,this.connectorId,this.deviceId,this.collection].join(" ")}invalidateToken(e){this.token?.value===e&&(this.token=null,this.tokenCache?.drop(this.cacheKey()).catch(()=>{}))}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.token=null,this.authenticated=!1,this.runtime.retireLog())}}});function Yb(n,e){if(typeof n!="string"||!n.length||n.length%2||n.length>e*2||!/^[0-9a-f]+$/.test(n))throw ke("response");return Uint8Array.from(n.match(/../g),t=>parseInt(t,16))}function Jb(n){if(!n||typeof n!="object"||Array.isArray(n))throw ke("response");return n}var tn,ke,Zq,Zf,bx,Ba,rp=I(()=>{"use strict";ge();bt();Gc();Wn();tn=class extends Error{constructor(t,i=!1,o){super(`app cloud copy bootstrap: ${t}`);this.reason=t;this.retryable=i;this.server=o;this.name="AppCloudCopyBootstrapError"}reason;retryable;server},ke=(n,e=!1)=>new tn(n,e),Zq=new Set([408,429,500,502,503,504]),Zf=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),bx=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join("");Ba=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.trust=i;this.persistence=o;try{if(this.storageCallbacks=Object.freeze({restore:o.restore,pending:o.pending,completed:o.completed}),this.scope=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,collection:t.collection,purpose:t.purpose,cpOrigin:t.cpOrigin,logOrigin:t.logOrigin}),this.callbacks=Object.freeze({current:t.isCurrent,owned:t.installationOwned,bearer:t.connectorBearer}),this.local=Qr(i.environment),!1)throw ke("binding");this.loopback=s.allowLoopbackHttp===!0||this.local;for(let p of[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId,this.scope.collection])if(U(p).every(l=>l===0))throw ke("binding");if(this.origin(this.scope.cpOrigin),this.origin(this.scope.logOrigin),i.schema!=="mdbn-app-trust/release/1"||!(["lab","staging","production"].includes(i.environment)||this.loopback&&i.environment==="test"||this.local)||i.cpOrigin!==this.scope.cpOrigin||i.logOrigin!==this.scope.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||i.source.repository!=="mdbase-dev/mdbase-connect"||!/^[0-9a-f]{40}$/.test(i.source.commit)||!i.source.version||i.source.version.length>64||!Array.isArray(i.trustedRoots)||i.trustedRoots.length<1||i.trustedRoots.length>64||!(i.policyPins instanceof Uint8Array)||!i.policyPins.length||i.policyPins.length>65536)throw ke("binding");this.trustFields=Object.freeze({schema:i.schema,environment:i.environment,assetSha256:i.assetSha256,...i.source}),this.roots=Object.freeze(i.trustedRoots.map(p=>{if(!(p instanceof Uint8Array)||p.length!==32||p.every(l=>l===0))throw ke("binding");return new Uint8Array(p)})),this.pins=new Uint8Array(i.policyPins);let r=s.displayName,a=r===void 0?void 0:wr(r);if(a!==void 0&&this.scope.purpose!=="create"||(this.operation=Object.freeze({...e.registeredDeviceReceipt(),...a===void 0?{}:{displayName:a},accountId:this.scope.accountId,collection:this.scope.collection,purpose:this.scope.purpose,assetSha256:i.assetSha256,cpOrigin:this.scope.cpOrigin,logOrigin:this.scope.logOrigin}),this.request=s.fetch??globalThis.fetch,this.now=s.now??Date.now,!this.current()))throw ke("binding")}catch{throw e.retireLog(),ke("binding")}}runtime;session;trust;persistence;attempted=!1;adopted=!1;originalSignal=null;completion=null;lifetime=new AbortController;scope;callbacks;trustFields;roots;pins;operation;storageCallbacks;request;now;loopback;local;origin(e){if(this.local&&!qa(e))throw ke("binding");let t=new URL(e);if(t.origin!==e||t.username||t.password||t.protocol!=="https:"&&!(this.loopback&&ot(e)))throw ke("binding");return t.origin}current(){try{let e=this.session,t=this.trust,i=this.trustFields;return!this.lifetime.signal.aborted&&!this.originalSignal?.aborted&&(this.adopted||this.runtime.cloudCopyCollectionCurrent(e))&&this.persistence.restore===this.storageCallbacks.restore&&this.persistence.pending===this.storageCallbacks.pending&&this.persistence.completed===this.storageCallbacks.completed&&e.isCurrent===this.callbacks.current&&e.installationOwned===this.callbacks.owned&&e.connectorBearer===this.callbacks.bearer&&this.callbacks.current.call(e)===!0&&this.callbacks.owned.call(e)===!0&&Object.entries(this.scope).every(([o,s])=>e[o]===s)&&t.cpOrigin===this.scope.cpOrigin&&t.logOrigin===this.scope.logOrigin&&t.schema===i.schema&&t.environment===i.environment&&t.assetSha256===i.assetSha256&&t.source.repository===i.repository&&t.source.commit===i.commit&&t.source.version===i.version&&t.trustedRoots.length===this.roots.length&&t.trustedRoots.every((o,s)=>Zf(o,this.roots[s]))&&Zf(t.policyPins,this.pins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw this.close(),ke("fenced")}operationCopy(e){for(let t of["accountId","connectorId","deviceId","installationId","collection","purpose","cpOrigin","logOrigin","assetSha256","displayName"])if(e[t]!==this.operation[t])throw ke("response");for(let t of["signPublicKey","kemPublicKey","noisePublicKey"])if(!(e[t]instanceof Uint8Array)||!Zf(e[t],this.operation[t]))throw ke("response");return Object.freeze({...this.operation,signPublicKey:new Uint8Array(this.operation.signPublicKey),kemPublicKey:new Uint8Array(this.operation.kemPublicKey),noisePublicKey:new Uint8Array(this.operation.noisePublicKey)})}copy(e){if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw ke("response");return Object.freeze({operation:this.operationCopy(e.operation),genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hash(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.length);o[0]=i.length,o.set(i,1),o.set(e,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));return this.check(t),`sha256:${bx(s)}`}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let p=new Uint8Array(1024*1024),l=0,c=null,d=null;try{let u=this.request;if(c=await u(`${this.scope.cpOrigin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted)throw ke("unavailable",!0);if(!c.ok){let h=await this.problem(c,o),m=St(h),b=!m&&Zq.has(c.status);throw new tn(m??(b?"unavailable":"refused"),b,h)}let f=c.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>p.length)throw s.abort(),ke("response");if(!c.body)throw ke("response");for(d=c.body.getReader();;){let{done:h,value:m}=await d.read();try{if(this.check(o),s.signal.aborted)throw ke("unavailable",!0);if(h)break;if(l+m.length>p.length)throw s.abort(),ke("response");p.set(m,l),l+=m.length}finally{m?.fill(0)}}try{return Jb(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(p.subarray(0,l))))}catch{throw ke("response")}}catch(u){throw this.check(o),u instanceof tn?u:ke("unavailable",!0)}finally{p.fill(0),(d?.cancel()??c?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async problem(e,t){let i=new Uint8Array(8192),o=0,s=e.body?.getReader();try{for(;s;){let{done:r,value:a}=await s.read();try{if(this.check(t),r)break;if(o+a.length>i.length){o=0;break}i.set(a,o),o+=a.length}finally{a?.fill(0)}}}catch{this.check(t),o=0}finally{s?.cancel().catch(()=>{}),s?.releaseLock()}try{return ji(e.status,o?Ks(i.subarray(0,o)):void 0,e.headers)}finally{i.fill(0)}}async challenge(e,t){for(let i=0;i<3;i++)try{return await this.json("/v1/next/devices/challenge",e,void 0,t)}catch(o){if(!(o instanceof tn)||o.reason!=="unavailable"||!o.retryable||i===2)throw o;this.check(t),await new Promise((s,r)=>{let a=()=>{clearTimeout(l),t.removeEventListener("abort",p),this.lifetime.signal.removeEventListener("abort",p);try{this.check(t),s()}catch(c){r(c)}},p=()=>a(),l=setTimeout(a,i===0?250:1e3);l.unref?.(),t.addEventListener("abort",p,{once:!0}),this.lifetime.signal.addEventListener("abort",p,{once:!0}),(t.aborted||this.lifetime.signal.aborted)&&a()})}throw ke("unavailable",!0)}async bootstrap(e){let{signal:t,reconcile:i}=e,o=Object.freeze({signal:t}),s=null,r=null;try{if(this.originalSignal??=t,t!==this.originalSignal||(this.check(t),this.attempted))throw ke("fenced");this.attempted=!0;let a=await this.storageCallbacks.restore.call(this.persistence,o);if(this.check(t),a.state==="completed"){let b=this.copy(a.metadata);if(await this.hash(b.genesisItem,t)!==b.expectedGenesis)throw ke("response");return this.completion=this.copy(b),b}if(a.state==="pending"){if(this.operationCopy(a.operation),i!=="explicit-unknown-outcome")throw ke("outcome_unknown")}else if(a.state!=="none")throw ke("response");await this.storageCallbacks.pending.call(this.persistence,this.operationCopy(this.operation),o),this.check(t);let p=await this.callbacks.bearer.call(this.session,o);if(this.check(t),typeof p!="string"||!p||p.length>16384||/[^\x21-\x7e]/.test(p))throw ke("binding");let l=await this.challenge(p,t);if(s=Yb(l.challenge,32),s.length!==32||typeof l.expires_at!="number"||!Number.isSafeInteger(l.expires_at)||l.expires_at-this.now()<=5e3||l.expires_at-this.now()>16*6e4)throw ke("response");let c=this.scope.purpose==="create";if(r=c?this.runtime.signCloudCopyCreate(s):this.runtime.signCloudCopyJoin(s),this.check(t),r.length!==64)throw ke("response");let d;try{d=await this.json(c?"/v1/next/collections/cloud-copy":`/v1/next/collections/${this.scope.collection}/devices`,p,JSON.stringify({device_id:this.scope.deviceId,capabilities:["collection_mode_switch_v1"],challenge:l.challenge,sig:bx(r),...c?{collection_id:this.scope.collection,...this.operation.displayName===void 0?{}:{display_name:this.operation.displayName}}:{}}),t)}catch(b){throw b instanceof tn&&b.reason==="unavailable"?ke("outcome_unknown"):b}if(d.collection_id!==this.scope.collection||d.log_url!==this.scope.logOrigin)throw ke("response");if(c){let b=Yb(d.root_public_key,32);if(d.state!=="cloud-copy"||d.owner_account!==this.scope.accountId||!this.roots.some(w=>Zf(w,b)))throw ke("response")}else if(typeof d.enrolled_at!="number"||!Number.isSafeInteger(d.enrolled_at)||d.enrolled_at<1)throw ke("response");let u=Jb(d.device);if(u.device_id!==this.scope.deviceId||typeof u.token!="string"||!u.token||u.token.length>16384||/[^\x21-\x7e]/.test(u.token)||typeof u.expires_at!="number"||!Number.isSafeInteger(u.expires_at)||u.expires_at-this.now()<=5e3||u.expires_at-this.now()>16*6e4)throw ke("response");let f=Jb(d.genesis);if(f.seq!==1)throw ke("response");let h=Yb(f.item,256*1024),m=this.copy({operation:this.operation,genesisItem:h,expectedGenesis:await this.hash(h,t)});return await this.storageCallbacks.completed.call(this.persistence,this.copy(m),o),this.check(t),this.completion=this.copy(m),m}catch(a){throw this.close(),a instanceof tn?a:ke("unavailable")}finally{s?.fill(0),r?.fill(0)}}adoptCollection(e,t){let{signal:i,replicaId:o,endpoint:s,opened:r,sqliteVersion:a,cloudCopyOptIn:p}=e;try{if(this.check(i),this.adopted||!this.completion||i!==this.originalSignal||p!==!0)throw ke("binding");let l={replicaId:o,endpoint:s,opened:r,sqliteVersion:a,collection:this.scope.collection,deviceId:this.scope.deviceId,state:"cloud_copy",cloudCopyOptIn:!0,trustedRoots:this.roots.map(c=>new Uint8Array(c)),policyPins:new Uint8Array(this.pins),trustedSigners:[],expectedGenesis:this.completion.expectedGenesis};this.runtime.adoptDevice(l,t),this.adopted=!0,this.check(i)}catch(l){throw this.close(),l instanceof tn?l:ke("unavailable")}}close(){this.completion=null,this.lifetime.abort(),this.runtime.retireLog()}}});function vx(n){try{if(n instanceof _i)return n;if(n instanceof Xe){if(n.reason==="outcome_unknown")return new _i("collection_delete_outcome_unknown");if(n.reason==="binding")return new _i("collection_delete_invalid");let e=$r(n.server)?.code;if(e&&Object.hasOwn(wx,e))return new _i(wx[e]);if(n.reason==="refused"&&!n.server)return new _i("collection_delete_not_approved")}}catch{}return new _i("collection_delete_failed")}var _i,wx,_x=I(()=>{"use strict";ep();Wn();_i=class extends Error{constructor(t){super(`collection delete: ${t}`);this.code=t;this.name="AppCollectionDeleteError"}code},wx=Object.assign(Object.create(null),{collection_name_mismatch:"collection_delete_name_mismatch",not_owner:"collection_delete_not_owner",not_found:"collection_delete_not_found",migration_frozen:"collection_delete_frozen",busy:"collection_delete_busy",not_member:"collection_delete_not_approved",device_not_enrolled:"collection_delete_not_approved",installation_collection_not_approved:"collection_delete_not_approved",installation_not_current:"collection_delete_sign_in",identity_not_current:"collection_delete_sign_in",device_revoked:"collection_delete_sign_in",invalid_request:"collection_delete_invalid"})});function Ax(n){return typeof n=="string"&&/^[a-zA-Z0-9_-]{16,128}$/.test(n)}function Xb(n,e){let t=()=>{throw new Se("application_worker_binding")};if(!Array.isArray(n)||n.length!==5||n[0]!==ti||n[1]!==e||!Number.isInteger(n[2])||n[2]<0||n[2]>Qf||n[2]===0&&n[3]!=="foreground"&&n[3]!=="approvalClosed"||n[2]!==0&&n[3]==="approvalClosed")return t();let i=n[3],o=n[4];["start","authorize","renewExpiredPairing","select","clearSelection","forget","refreshCollections","signOut","deleteCollection","requestFileAccess","pollFileAccess","openUnsynced","attachUnsynced","detachUnsynced","retireUnsynced","discardUnsynced","foreground","approvalClosed","close"].includes(i)||t();let s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;if(i==="requestFileAccess")return(!Array.isArray(o)||o.length!==3||typeof o[0]!="string"||!s.test(o[0])||!Array.isArray(o[1])||!o[1].length||o[1].length>6||o[1].some(r=>typeof r!="string"||!["list","read","add","replace","move","delete"].includes(r))||typeof o[2]!="string"||!o[2]||o[2].length>140)&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],Object.freeze([...o[1]]),o[2]])]);if(i==="pollFileAccess")(typeof o!="string"||!s.test(o))&&t();else if(i==="select"||i==="forget")(typeof o!="string"||!o||o.length>256||/[\u0000-\u001f\u007f]/.test(o))&&t();else{if(i==="deleteCollection")return(!Array.isArray(o)||o.length!==2||typeof o[0]!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(o[0])||typeof o[1]!="string"||!o[1]||o[1].length>1024)&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],o[1]])]);if(i==="retireUnsynced")return(!Array.isArray(o)||o.length!==2||o.some(r=>typeof r!="string"||!s.test(r))||o[0]===o[1])&&t(),Object.freeze([n[0],n[1],n[2],i,Object.freeze([o[0],o[1]])]);i==="authorize"?o!==null&&(typeof o!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(o)||o==="00000000-0000-0000-0000-000000000000")&&t():i==="foreground"?typeof o!="boolean"&&t():i==="approvalClosed"?o!==!0&&t():o!==null&&t()}return Object.freeze([...n])}var ti,Qf,Se,eh=I(()=>{"use strict";ti="mdbn-application-worker/1",Qf=4294967295,Se=class extends Error{constructor(t){super("SDK application Worker unavailable");this.code=t;this.name="ApplicationWorkerError"}code}});function th(n){let e=n.cpOrigin,t=n.signal,i=n.isCurrent,o=n.open,s=()=>{let f=!1;try{f=!t.aborted&&i()===!0}catch{}if(!f)throw new Nt("application_popup_fenced")};s();let r;try{r=new URL(e)}catch{throw new Nt("application_popup_binding")}let a=n.allowLoopbackHttp===!0&&ot(e);if(r.origin!==e||r.username||r.password||r.search||r.hash||r.pathname!=="/"||r.protocol!=="https:"&&!a)throw new Nt("application_popup_binding");let p;try{p=o()}catch{throw new Nt("application_popup_unavailable")}if(p===null)throw new Nt("application_popup_blocked");if(kx.has(p))throw new Nt("application_popup_binding");kx.add(p);let l=!1,c=null,d=()=>{if(l){if(c)throw c;return}l=!0,t.removeEventListener("abort",u);try{p.close()}catch{throw c=new Nt("application_popup_stop_failed"),c}},u=()=>{try{d()}catch{}};t.addEventListener("abort",u,{once:!0});try{s()}catch(f){throw d(),f}return Object.freeze({close:d,get closed(){try{return l||p.closed?.()===!0}catch{return!1}},focus(){if(s(),!l){try{p.focus?.()}catch{throw new Nt("application_popup_unavailable")}s()}},navigate(f){if(s(),l)throw new Nt("application_popup_fenced");let h;try{h=new URL(f)}catch{throw new Nt("application_popup_binding")}if(h.origin!==e||h.username||h.password)throw new Nt("application_popup_binding");try{p.navigate(h.href)}catch(m){throw m instanceof Nt?m:new Nt("application_popup_unavailable")}if(s(),l)throw new Nt("application_popup_fenced")}})}function Qq(){let n=0,e=0;try{let t=globalThis.window;n=Math.max(0,Math.round(t.screenX+(t.outerWidth-Px)/2)),e=Math.max(0,Math.round(t.screenY+(t.outerHeight-xx)/2))}catch{}return`popup,width=${Px},height=${xx},left=${Number.isFinite(n)?n:0},top=${Number.isFinite(e)?e:0}`}function nh(n,e,t,i=!1){return{cpOrigin:n,signal:e,isCurrent:t,allowLoopbackHttp:i,open(){let o=globalThis.window.open("about:blank","_blank",Qq());if(!o)return null;let s=Sx.get(o);if(s)return s;let r={navigate(a){if(o.closed)throw new Nt("application_popup_fenced");o.location.href=a},close(){let a=!o.closed;if(o.close(),a)try{globalThis.window.focus()}catch{}},focus(){try{o.focus()}catch{}},closed:()=>o.closed};return Sx.set(o,r),r}}}function Cx(n,e,t,i,o=!1){return{cpOrigin:n,signal:e,isCurrent:t,allowLoopbackHttp:o,open(){let s=!1;return{navigate(r){let a=new URL(r);i.returnUrl!==void 0&&a.searchParams.set("return_url",i.returnUrl),s=!0,Promise.resolve().then(()=>i.open(a.href)).catch(()=>{})},close(){s&&i.close&&Promise.resolve().then(()=>i.close()).catch(()=>{})}}}}}var Nt,kx,Sx,Px,xx,Zb=I(()=>{"use strict";bt();Nt=class extends Error{constructor(t){super("application authorization popup unavailable");this.reason=t;this.name="ApplicationPortalError"}reason},kx=new WeakSet;Sx=new WeakMap,Px=620,xx=760});function Yo(n,e=null){if(n instanceof De)return n;let t=n?.name??"",i=n instanceof Error?n.message:String(n),o=n?.resultCode,s=typeof o=="number"?o&255:null;return t==="QuotaExceededError"||/quota/i.test(i)||s===13?new De("Full",i,e):s===11||s===26||/malformed|not a database|SQLITE_CORRUPT|SQLITE_NOTADB/i.test(i)?new De("Corrupt",i,e):t==="NoModificationAllowedError"||s===5||s===6||/SQLITE_BUSY|SQLITE_LOCKED|NoModificationAllowed/i.test(i)?new De("Busy",i,e):s===1||s===19||s===20||s===25||/SQLITE_ERROR|SQLITE_CONSTRAINT|syntax/i.test(i)?new De("Sql",i,e):new De("Other",i,e)}function Qb(n){if(typeof n=="bigint")return n;if(typeof n=="number"&&Number.isSafeInteger(n))return BigInt(n);throw new De("Other","SQLite integer is not losslessly represented")}var De,Ix,Ox,Rx,Ex,qx,eT,ih,ew=I(()=>{"use strict";De=class extends Error{constructor(t,i,o=null){super(`${t}${o===null?"":`@${o}`}(${i})`);this.kind=t;this.detail=i;this.stmt=o;this.name="IndexError"}kind;detail;stmt},Ix=1,Ox=2,Rx=3,Ex=4,qx=5;eT="CREATE TABLE IF NOT EXISTS _mdbn_host(k TEXT PRIMARY KEY, v) WITHOUT ROWID",ih=class n{constructor(e,t,i){this.sqlite3=e;this.db=t;this.info=i}sqlite3;db;info;cache=new Map;closed=!1;static open(e,t,i={}){try{let o=i.synchronous??"NORMAL";if(o!=="NORMAL"&&o!=="FULL")throw new De("Other","unsupported synchronous profile");if(i.pragmas!==!1&&(t.exec("PRAGMA locking_mode=EXCLUSIVE"),t.exec("PRAGMA journal_mode=WAL"),t.exec(`PRAGMA synchronous=${o}`)),i.verifyPragmas&&(String(t.selectValue("PRAGMA locking_mode")).toLowerCase()!=="exclusive"||String(t.selectValue("PRAGMA journal_mode")).toLowerCase()!=="wal"||t.selectValue("PRAGMA synchronous")!==(o==="FULL"?2:1)))throw new De("Other","SQLite did not apply the requested storage profile");let s=t.selectValue("SELECT count(*) FROM sqlite_master WHERE name='_mdbn_host'")>0,r=t.selectValue("SELECT count(*) FROM sqlite_master");t.exec(eT);let a="Fresh";return s?a=t.selectValue("SELECT v FROM _mdbn_host WHERE k='clean'")===1?"Existing":"Unclean":r>0&&(a="Unclean"),t.exec("INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES ('clean', 0)"),new n(e,t,{durability:"Disposable",opened:a,sqliteVersion:e.capi.sqlite3_libversion_number(),quotaSuspect:i.quotaSuspect??!1})}catch(o){throw Yo(o)}}prepare(e){let t=this.cache.get(e);return t||(t=this.db.prepare(e),this.cache.set(e,t)),t}bind(e,t){e.clearBindings(),t.forEach((i,o)=>{let s=o+1;switch(i.kind){case"Null":e.bind(s,null);break;case"Integer":e.bind(s,i.value);break;case"Real":e.bind(s,i.value);break;case"Text":e.bind(s,i.value);break;case"Blob":e.bindAsBlob(s,i.value);break}})}column(e,t){let i=this.sqlite3.capi;switch(i.sqlite3_column_type(e.pointer,t)){case qx:return{kind:"Null"};case Ix:{let o=i.sqlite3_column_int64(e.pointer,t);return{kind:"Integer",value:Qb(o)}}case Ox:return{kind:"Real",value:i.sqlite3_column_double(e.pointer,t)};case Rx:return{kind:"Text",value:e.getString(t)};case Ex:return{kind:"Blob",value:e.getBlob(t)??new Uint8Array(0)};default:return{kind:"Null"}}}run(e,t){if(this.closed)throw new De("Other","index closed");let i=this.sqlite3.capi,o=e.mode==="Transaction",s=[],r=0,a=0,p=13,l=c=>{if(t){if(!Number.isSafeInteger(c)||c<0||c>t.maxBytes-p)throw new De("Full","index reply byte budget exceeded");p+=c}};if(t&&([t.maxBytes,t.maxRows,t.maxValues,t.maxColumns].some(c=>!Number.isSafeInteger(c)||c<0)||t.maxBytes<p))throw new De("Full","invalid index reply budget");if(o)try{this.db.exec("BEGIN IMMEDIATE")}catch(c){throw Yo(c)}for(let c=0;c<e.stmts.length;c++){let d=e.stmts[c];try{let u=this.prepare(d.sql);try{this.bind(u,d.params);let f=u.columnCount;if(t&&(!Number.isSafeInteger(f)||f<0||f>t.maxColumns))throw new De("Full","index reply column budget exceeded");l(24);let h=[];for(;u.step();){if(t&&++r>t.maxRows)throw new De("Full","index reply row budget exceeded");for(let m=0;m<f;m++){if(t){if(++a>t.maxValues)throw new De("Full","index reply value budget exceeded");let b=i.sqlite3_column_type(u.pointer,m);if(b===Rx||b===Ex)l(5),l(i.sqlite3_column_bytes(u.pointer,m));else if(b===Ix||b===Ox)l(9);else if(b===qx)l(1);else throw new De("Other","unknown SQLite value type")}h.push(this.column(u,m))}}s.push({columns:f,values:h,changes:Qb(i.sqlite3_changes(this.db.pointer)),lastInsertRowid:Qb(i.sqlite3_last_insert_rowid(this.db.pointer))})}finally{u.reset()}}catch(u){if(o)try{this.db.exec("ROLLBACK")}catch{}throw Yo(u,c)}}if(o)try{this.db.exec("COMMIT")}catch(c){try{this.db.exec("ROLLBACK")}catch{}throw Yo(c)}return s}close(e={}){if(!this.closed){this.closed=!0;for(let t of this.cache.values())try{t.finalize()}catch{}if(this.cache.clear(),e.markClean!==!1)try{this.db.exec("INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES ('clean', 1)")}catch{}this.db.close()}}}});function oT(n){let e=new tw(n);if(!e.take(8).every((r,a)=>r===Mx[a]))throw Et();let t=e.byte();if(t===1)throw e.done(),new De("Other","app database reset requires explicit recovery; automatic wipe refused");if(t!==0)throw Et();let i=e.byte();if(i>1)throw Et();let o=e.count(bn.maxStatements,8),s=[];for(let r=0;r<o;r++){let a=e.text(bn.maxSqlBytes),p=e.count(bn.maxParameters,1),l=[];for(let c=0;c<p;c++)l.push(e.value());s.push({sql:a,params:l})}return e.done(),{mode:i===0?"Transaction":"Autocommit",stmts:s}}function sT(n,e){if(!Array.isArray(n)||n.length!==e)throw Et();let t=new rh(2);t.u32(n.length);let i=0;for(let o of n){if(!Number.isSafeInteger(o.columns)||o.columns<0||o.columns>bn.maxColumns)throw io();if(!Array.isArray(o.values)||(o.columns===0?o.values.length!==0:o.values.length%o.columns!==0))throw Et();if(i+=o.columns===0?0:o.values.length/o.columns,i>bn.maxRows||o.values.length>bn.maxValues)throw io();t.u32(o.columns),t.int(o.changes,!1),t.int(o.lastInsertRowid,!0),t.u32(o.values.length);for(let s of o.values)t.value(s)}return t.done()}function aT(n,e){let t=n instanceof De?n.kind:"Other",i={Sql:0,Corrupt:1,Full:2,Busy:3,Other:4},o=new rh(3);o.byte(i[t]);let s=n instanceof De?n.stmt:null;return e!==null&&s!==null&&Number.isSafeInteger(s)&&s>=0&&s<e?(o.byte(1),o.u32(s)):o.byte(0),o.data(Lx.encode("app index operation failed; reopen and reconcile")),o.done()}function Tx(n,e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<0||t<0||e>4294967295||t>4294967295||e>n.buffer.byteLength||t>n.buffer.byteLength-e)throw Et()}function jx(n,e){let t=!1,i=!1;return(o,s)=>{if(t)throw i=!0,n.fence(),Et();t=!0,i=!1;try{let r=e();if(Tx(r.memory,o,s),s>bn.maxBytes)throw n.fence(),io();let a=n.run(new Uint8Array(r.memory.buffer,o,s).slice()),p=r.alloc(a.length);if(Tx(r.memory,p,a.length),i||p===0||p<o+s&&o<p+a.length)throw Et();return new Uint8Array(r.memory.buffer,p,a.length).set(a),BigInt(p)<<32n|BigInt(a.length)}catch(r){throw n.fence(),r}finally{t=!1}}}var Mx,bn,tT,nT,iT,Et,io,rT,Lx,tw,rh,oh,Nx=I(()=>{"use strict";ew();Mx=Uint8Array.of(77,68,66,73,68,88,0,1),bn=Object.freeze({maxBytes:4*1024*1024,maxStatements:16384,maxValues:131072,maxRows:4096,maxColumns:100,maxSqlBytes:100*1024,maxParameters:100}),tT=-(1n<<63n),nT=(1n<<63n)-1n,iT=(1n<<64n)-1n,Et=()=>new De("Other","invalid app index ABI"),io=()=>new De("Full","app index ABI budget exceeded"),rT=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}),Lx=new TextEncoder,tw=class{constructor(e){this.bytes=e;if(e.length>bn.maxBytes)throw io();this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}bytes;pos=0;values=0;view;take(e){if(!Number.isSafeInteger(e)||e<0||e>this.bytes.length-this.pos)throw Et();let t=this.bytes.subarray(this.pos,this.pos+e);return this.pos+=e,t}byte(){return this.take(1)[0]}u32(){let e=this.pos;return this.take(4),this.view.getUint32(e,!0)}count(e,t){let i=this.u32();if(i>e)throw io();if(i>Math.floor((this.bytes.length-this.pos)/t))throw Et();return i}data(e){return this.take(this.count(e,1))}text(e){return rT.decode(this.data(e))}value(){if(++this.values>bn.maxValues)throw io();switch(this.byte()){case 0:return{kind:"Null"};case 1:{let e=this.pos;return this.take(8),{kind:"Integer",value:this.view.getBigInt64(e,!0)}}case 2:{let e=this.pos;this.take(8);let t=this.view.getFloat64(e,!0);if(!Number.isFinite(t))throw Et();return{kind:"Real",value:t}}case 3:return{kind:"Text",value:this.text(bn.maxBytes)};case 4:return{kind:"Blob",value:this.data(bn.maxBytes).slice()};default:throw Et()}}done(){if(this.pos!==this.bytes.length)throw Et()}};rh=class{parts=[];length=0;values=0;constructor(e){this.put(Mx),this.byte(e)}put(e){if(e.length>bn.maxBytes-this.length)throw io();this.length+=e.length,this.parts.push(e)}byte(e){this.put(Uint8Array.of(e))}u32(e){if(!Number.isSafeInteger(e)||e<0||e>4294967295)throw Et();let t=new Uint8Array(4);new DataView(t.buffer).setUint32(0,e,!0),this.put(t)}int(e,t){if(typeof e!="bigint"||e<(t?tT:0n)||e>(t?nT:iT))throw Et();let i=new Uint8Array(8),o=new DataView(i.buffer);t?o.setBigInt64(0,e,!0):o.setBigUint64(0,e,!0),this.put(i)}data(e){this.u32(e.length),this.put(e)}value(e){if(++this.values>bn.maxValues)throw io();switch(e.kind){case"Null":this.byte(0);return;case"Integer":this.byte(1),this.int(e.value,!0);return;case"Real":{if(!Number.isFinite(e.value))throw Et();this.byte(2);let t=new Uint8Array(8);new DataView(t.buffer).setFloat64(0,e.value,!0),this.put(t);return}case"Text":this.byte(3),this.data(Lx.encode(e.value));return;case"Blob":this.byte(4),this.data(e.value);return;default:throw Et()}}done(){let e=new Uint8Array(this.length),t=0;for(let i of this.parts)e.set(i,t),t+=i.length;return e}};oh=class{constructor(e){this.index=e}index;fenced=!1;get needsRecovery(){return this.fenced||this.index.needsRecovery}fence(){this.fenced=!0,this.index.fence()}run(e){let t=null;try{if(this.needsRecovery)throw Et();let i=oT(e);t=i.stmts.length;let o=bn;return sT(this.index.run(i,o),t)}catch(i){return this.fence(),aT(i,t)}}}});function iw(n){let e=[n.account,n.installation,n.collection];if(e.some(i=>!lT.test(i)))throw new De("Other","invalid app storage scope");let t=`mdbase-app-${e.map(i=>i.toLowerCase()).join("-")}`;return{vfs:t,directory:`.${t}`}}async function Ux(n,e){let t=iw(e),i,o,s;try{i=await n.installOpfsSAHPoolVfs({name:t.vfs,directory:t.directory,initialCapacity:6}),i.isPaused?.()&&await i.unpauseVfs(),o=new i.OpfsSAHPoolDb("/app.db");let r=ih.open(n,o,{synchronous:"FULL",verifyPragmas:!0});if(s=new nw(r),r.info.opened==="Unclean"){let a=s.run({mode:"Autocommit",stmts:[{sql:"PRAGMA quick_check",params:[]}]}),p=a[0]?.values;if(a.length!==1||p?.length!==1||p[0]?.kind!=="Text"||p[0].value!=="ok")throw s=void 0,r.close({markClean:!1}),o=void 0,new De("Corrupt","app database integrity check failed; recovery required")}return{index:s,pool:i}}catch(r){let a=!1;try{s?s.close():o?.close()}catch{a=!0}try{i?.pauseVfs?.()}catch{a=!0}let p=Yo(r);throw new De(a?"Other":p.kind,"app SQLite open failed; recovery required",p.stmt)}}var lT,nw,Dx=I(()=>{"use strict";ew();lT=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;nw=class{constructor(e){this.inner=e}inner;fenced=!1;closed=!1;get info(){return this.inner.info}get needsRecovery(){return this.fenced}fence(){this.fenced=!0}run(e,t){if(this.closed||this.fenced)throw new De("Other","app database fenced or closed; reopen and reconcile");try{return t?this.inner.run(e,t):this.inner.run(e)}catch(i){this.fenced=!0;let o=Yo(i);throw new De(o.kind,"app SQLite operation failed; reopen and reconcile",o.stmt)}}reset(){throw new De("Other","app database reset requires explicit recovery; automatic wipe refused")}close(){this.closed||(this.closed=!0,this.inner.close({markClean:!this.fenced}))}}});function $x(n){let e=Object.freeze({...n});if(!/^[0-9a-f]{64}$/.test(e.wasmSha256)||!Number.isSafeInteger(e.maxWasmBytes)||e.maxWasmBytes<1||e.maxWasmBytes>4*1024*1024||typeof e.loadWasm!="function"||typeof e.initialize!="function")throw Fa("binding");return async({scope:t,signal:i})=>{let o=Object.freeze({account:t.account,installation:t.installation,collection:t.collection});iw(o);let s=()=>{if(i.aborted||Object.entries(o).some(([y,v])=>t[y]!==v))throw Fa("fenced")};s();let r=globalThis.WorkerGlobalScope;if(typeof r!="function"||!(globalThis instanceof r))throw Fa("unsupported");let a=await e.loadWasm({signal:i});if(s(),!(a instanceof Uint8Array)||a.byteLength<1||a.byteLength>e.maxWasmBytes)throw Fa("binding");let p=new Uint8Array(a),l=new Uint8Array(await crypto.subtle.digest("SHA-256",p));if(s(),Array.from(l,y=>y.toString(16).padStart(2,"0")).join("")!==e.wasmSha256)throw Fa("binding");let c=await e.initialize({wasmBinary:p,print(){},printErr(){}});s();let d=await Ux(c,o),u=d.index,f=new oh(u),h={import:y=>jx(f,y),fence:()=>f.fence(),get needsRecovery(){return f.needsRecovery}},m=y=>({kind:"Text",value:y}),b=Object.freeze({list(y){let[v]=u.run({mode:"Autocommit",stmts:[{sql:"SELECT v FROM _mdbn_host WHERE k >= 'w:' AND k < 'w;' ORDER BY k LIMIT 1024",params:[]}]}),A=[],k=0;for(let S of v?.values??[])if(S.kind==="Text"){if(k+=S.value.length,k>y)break;A.push(S.value)}return A},put(y,v){u.run({mode:"Autocommit",stmts:[{sql:"INSERT OR REPLACE INTO _mdbn_host(k, v) VALUES (?, ?)",params:[m(`w:${y}`),m(v)]}]})},remove(y){u.run({mode:"Autocommit",stmts:[{sql:"DELETE FROM _mdbn_host WHERE k = ?",params:[m(`w:${y}`)]}]})}}),w=null,g=()=>w??=Promise.resolve().then(async()=>{try{u.close(),await d.pool.pauseVfs()}catch{throw f.fence(),Fa("unavailable")}});return(i.aborted||Object.entries(o).some(([y,v])=>t[y]!==v))&&f.fence(),Object.freeze({sql:h,opened:{Fresh:"fresh",Existing:"existing",Unclean:"unclean"}[u.info.opened],sqliteVersion:u.info.sqliteVersion,ledger:b,close:g})}}var rw,Fa,zx=I(()=>{"use strict";Dx();Nx();rw=class extends Error{constructor(t){super(`app collection SQL: ${t}`);this.reason=t;this.name="AppCollectionSqlError"}reason},Fa=n=>new rw(n)});var vr,ow=I(()=>{"use strict";vr=Object.freeze({plaintextBytes:524288,operations:64,readbacks:128,pathCodeUnits:1024})});function Q(n){throw new rn(n)}function nn(n,e){return Object.keys(n).sort().join()===e}function sw(n){return(!n||!nn(n,"account,collection,installation")||Object.values(n).some(e=>typeof e!="string"||!aw.test(e)||e==="00000000-0000-0000-0000-000000000000"))&&Q("binding"),Object.freeze({account:n.account,installation:n.installation,collection:n.collection})}function Bx(n){for(let e of n){let t=e.charCodeAt(0);if(t<32||t===127)return!0}return n.includes("\\")}function cT(n){(!Array.isArray(n)||n.length!==2)&&Q("binding");let e=n.map(t=>((!t||typeof t!="object"||!nn(t,"doc,kind,mustNotExist,path")||t.kind!=="resource_put"||t.mustNotExist!==!0||typeof t.path!="string"||typeof t.doc!="string"||!t.doc.length||t.path.length>1024||!t.path.endsWith(".md")||t.path.startsWith("/")||Bx(t.path)||t.path.split("/").some(i=>!i||i==="."||i===".."))&&Q("binding"),Object.freeze({kind:"resource_put",path:t.path,doc:t.doc,mustNotExist:!0})));return(e[0].path===e[1].path||Wi.encode(JSON.stringify(e)).byteLength>Ai)&&Q("binding"),Object.freeze(e)}function sp(n){return typeof n=="string"&&n.length>0&&n.length<=vr.pathCodeUnits&&!n.startsWith("/")&&!Bx(n)&&!n.split("/").some(e=>!e||e==="."||e==="..")}function Xo(n){let e=n;(!e||typeof e!="object"||!nn(e,"assessmentDigest,ops,pack,readback")||!e.pack||typeof e.pack!="object"||!nn(e.pack,"digest,id,version")||typeof e.pack.id!="string"||!e.pack.id.length||typeof e.pack.version!="string"||!e.pack.version.length||typeof e.pack.digest!="string"||!Jo.test(e.pack.digest)||typeof e.assessmentDigest!="string"||!Jo.test(e.assessmentDigest)||!Array.isArray(e.ops)||!e.ops.length||e.ops.length>vr.operations||!Array.isArray(e.readback)||!e.readback.length||e.readback.length>vr.readbacks)&&Q("binding");let t=e.ops.map(r=>{(!r||typeof r!="object"||!sp(r.path)||"baseRevision"in r&&(typeof r.baseRevision!="string"||!Jo.test(r.baseRevision)))&&Q("binding");let a="baseRevision"in r?{baseRevision:r.baseRevision}:{};return r.kind==="resource_put"?((!nn(r,"baseRevision"in r?"baseRevision,doc,kind,mustNotExist,path":"doc,kind,mustNotExist,path")||typeof r.doc!="string"||typeof r.mustNotExist!="boolean")&&Q("binding"),Object.freeze({kind:r.kind,path:r.path,doc:r.doc,...a,mustNotExist:r.mustNotExist})):((r.kind!=="resource_delete"||!nn(r,"baseRevision"in r?"baseRevision,kind,path":"kind,path"))&&Q("binding"),Object.freeze({kind:r.kind,path:r.path,...a}))}),i=new Set,o=e.readback.map(r=>((!r||typeof r!="object"||!nn(r,"doc,path")||!sp(r.path)||r.doc!==null&&typeof r.doc!="string"||i.has(r.path))&&Q("binding"),i.add(r.path),Object.freeze({path:r.path,doc:r.doc})));for(let r of t){let a=o.find(p=>p.path===r.path);(!a||a.doc!==(r.kind==="resource_put"?r.doc:null))&&Q("binding")}let s=Object.freeze({pack:Object.freeze({id:e.pack.id,version:e.pack.version,digest:e.pack.digest}),assessmentDigest:e.assessmentDigest,ops:Object.freeze(t),readback:Object.freeze(o)});return Wi.encode(JSON.stringify(s)).byteLength>Ai&&Q("binding"),s}function xt(n){let e=n;(!e||typeof e!="object"||!nn(e,Object.hasOwn(e,"planKind")?"assessmentDigest,packs,planKind,provisionDigest,resourceOps,resourceReadback,sources":Object.hasOwn(e,"sourcePolicy")?"assessmentDigest,packs,provisionDigest,resourceOps,resourceReadback,sourcePolicy,sources":"assessmentDigest,packs,provisionDigest,resourceOps,resourceReadback,sources")||Object.hasOwn(e,"sourcePolicy")&&(e.sourcePolicy!=="current-only"||e.sources?.length!==0)||typeof e.assessmentDigest!="string"||!Jo.test(e.assessmentDigest)||typeof e.provisionDigest!="string"||!Jo.test(e.provisionDigest)||!Array.isArray(e.packs)||!e.packs.length&&e.planKind!=="configuration-only"||e.packs.length>16||!Array.isArray(e.resourceOps)||!Array.isArray(e.sources)||!e.resourceOps.length&&!e.sources.length||e.resourceOps.length+e.sources.length>vr.operations||!Array.isArray(e.resourceReadback)||!e.resourceReadback.length||e.resourceReadback.length+e.sources.length>vr.readbacks)&&Q("binding"),Object.hasOwn(e,"planKind")&&(e.planKind!=="configuration-only"||e.packs.length!==0||!e.resourceOps.length||e.resourceOps.some(c=>!c||c.kind!=="resource_put"||!["mdbase.yaml","mdbase.provisions.yaml"].includes(c.path)))&&Q("binding");let t=new Set,i=e.packs.map(c=>((!c||typeof c!="object"||!nn(c,"digest,id,version")||typeof c.id!="string"||!c.id.length||c.id.length>150||t.has(c.id)||typeof c.version!="string"||!c.version.length||c.version.length>256||typeof c.digest!="string"||!Jo.test(c.digest))&&Q("binding"),t.add(c.id),Object.freeze({...c}))),o=new Set,s=e.resourceReadback.map(c=>((!c||typeof c!="object"||!nn(c,"doc,path")||!sp(c.path)||o.has(c.path)||c.doc!==null&&typeof c.doc!="string")&&Q("binding"),o.add(c.path),Object.freeze({...c}))),r=e.resourceOps.map(c=>{(!c||typeof c!="object"||!sp(c.path))&&Q("binding");let d=Object.hasOwn(c,"baseRevision");d&&(typeof c.baseRevision!="string"||!Jo.test(c.baseRevision))&&Q("binding"),c.kind==="resource_put"?(!nn(c,d?"baseRevision,doc,kind,mustNotExist,path":"doc,kind,mustNotExist,path")||typeof c.doc!="string"||typeof c.mustNotExist!="boolean"||(c.mustNotExist?d:!d))&&Q("binding"):(c.kind!=="resource_delete"||!d||!nn(c,"baseRevision,kind,path"))&&Q("binding");let u=s.find(f=>f.path===c.path);return(!u||u.doc!==(c.kind==="resource_put"?c.doc:null))&&Q("binding"),Object.freeze({...c})}),a=new Set,p=e.sources.map(c=>((!c||typeof c!="object"||!nn(c,"document,id,path")||!sp(c.path)||o.has(c.path)||typeof c.id!="string"||!aw.test(c.id)||c.id==="00000000-0000-0000-0000-000000000000"||a.has(c.id)||typeof c.document!="string"||!c.document.length)&&Q("binding"),o.add(c.path),a.add(c.id),Object.freeze({...c}))),l=Object.freeze({...e.planKind==="configuration-only"?{planKind:e.planKind}:{},...e.sourcePolicy==="current-only"?{sourcePolicy:e.sourcePolicy}:{},assessmentDigest:e.assessmentDigest,provisionDigest:e.provisionDigest,packs:Object.freeze(i),resourceOps:Object.freeze(r),resourceReadback:Object.freeze(s),sources:Object.freeze(p)});return Wi.encode(JSON.stringify(l)).byteLength>Ai&&Q("binding"),l}function qt(n,e,t=0){t>8&&Q("binding");let i=n;(!i||typeof i!="object"||i.version!==1&&i.version!==2&&i.version!==3&&i.version!==4||!nn(i,i.version===1?"mutationId,ops,phase,scope,version":i.version===4?"mutationId,phase,plan,previous,scope,version":"mutationId,phase,plan,scope,version")||typeof i.mutationId!="string"||!aw.test(i.mutationId)||i.mutationId==="00000000-0000-0000-0000-000000000000"||!(op.includes(i.phase)||i.phase==="rejected"&&(i.version===3||i.version===4)))&&Q("recovery_required");let o=sw(i.scope);if(JSON.stringify(o)!==JSON.stringify(e)&&Q("binding"),i.version===1)return Object.freeze({version:1,scope:o,mutationId:i.mutationId,ops:cT(i.ops),phase:i.phase});if(i.version===4){let r=qt(i.previous,e,t+1);r.phase!=="verified"&&Q("recovery_required");for(let l=r;l.mutationId===i.mutationId&&Q("binding"),l.version===4;)l=l.previous;let a=xt(i.plan);a.resourceOps.some(l=>l.kind!=="resource_put"||!l.mustNotExist&&!["mdbase.yaml","mdbase.lock.yaml","mdbase.provisions.yaml"].includes(l.path))&&Q("binding");let p=Object.freeze({version:4,scope:o,mutationId:i.mutationId,plan:a,phase:i.phase,previous:r});return Wi.encode(JSON.stringify({...p,phase:"confirmed"})).byteLength>Ai&&Q("binding"),p}if(i.version===3){xt(i.plan).sourcePolicy!==void 0&&Q("binding");let r=Object.freeze({version:3,scope:o,mutationId:i.mutationId,plan:xt(i.plan),phase:i.phase});return Wi.encode(JSON.stringify({...r,phase:"confirmed"})).byteLength>Ai&&Q("binding"),r}let s=Object.freeze({version:2,scope:o,mutationId:i.mutationId,plan:Xo(i.plan),phase:i.phase});return Wi.encode(JSON.stringify({...s,phase:"confirmed"})).byteLength>Ai&&Q("binding"),s}function sh(n){return n.version!==2&&Q("recovery_required"),n}function pT(n,e,t){return t(),globalThis.indexedDB||Q("recovery_required"),new Promise((i,o)=>{let s=indexedDB.open(n,1),r=!1,a=()=>{r=!0,e.removeEventListener("abort",a);try{s.transaction?.abort()}catch{}o(new rn("recovery_required"))};e.addEventListener("abort",a,{once:!0}),s.onupgradeneeded=()=>{try{t(),(r||s.result.objectStoreNames.length)&&Q("recovery_required"),s.result.createObjectStore(Va)}catch{a()}},s.onerror=s.onblocked=a,s.onsuccess=()=>{e.removeEventListener("abort",a);try{t(),(r||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Va))&&Q("recovery_required"),i(s.result)}catch{s.result.close(),o(new rn("recovery_required"))}}})}var Va,op,aw,Ai,Jo,Wi,rn,Wa,Zo=I(()=>{"use strict";bt();ow();Va="original-model-operation",op=["prepared","attempted","confirmed","verified"],aw=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Ai=vr.plaintextBytes,Jo=/^sha256:[0-9a-f]{64}$/,Wi=new TextEncoder,rn=class extends Error{constructor(t){super("Preserve the original collection setup operation.");this.reason=t}reason};Wa=class{constructor(e){this.owner=e;this.scope=sw(e.scope),(typeof e.isCurrent!="function"||[e.databaseName,e.applicationNamespace].some(o=>typeof o!="string"||!o.length||o.length>256||/[\u0000-\u001f\u007f]/.test(o)))&&Q("binding"),this.current=e.isCurrent,this.pins=JSON.stringify([e.databaseName,e.applicationNamespace,e.appOrigin,e.cpOrigin]);let t=new URL(e.appOrigin),i=new URL(e.cpOrigin);(t.origin!==e.appOrigin||i.origin!==e.cpOrigin||i.protocol!=="https:"&&!!1)&&Q("binding"),this.namespace=JSON.stringify([e.appOrigin,e.cpOrigin,e.applicationNamespace,this.scope.account,this.scope.installation,this.scope.collection]),this.binding=JSON.stringify(this.scope)}owner;scope;namespace;binding;stopped=!1;turn=Promise.resolve();pins;current;close(){this.stopped=!0}check(e){e.throwIfAborted();let t=!1;try{t=!this.stopped&&this.owner.isCurrent===this.current&&this.current.call(this.owner)===!0&&JSON.stringify([this.owner.databaseName,this.owner.applicationNamespace,this.owner.appOrigin,this.owner.cpOrigin])===this.pins&&JSON.stringify(sw(this.owner.scope))===this.binding}catch{}t||(this.stopped=!0,Q("fenced"))}async exclusive(e,t){this.check(e);let i=this.turn,o,s=new Promise(a=>{o=a});this.turn=i.then(()=>s);let r;try{await new Promise((p,l)=>{let c=()=>l(e.reason);e.addEventListener("abort",c,{once:!0}),i.then(()=>{e.removeEventListener("abort",c),p()})}),this.check(e),r=await pT(this.owner.databaseName,e,()=>this.check(e)),this.check(e);let a=await t(r);return this.check(e),a}finally{r?.close(),o()}}read(e,t){return this.check(t),new Promise((i,o)=>{let s=e.transaction(Va,"readonly"),r=s.objectStore(Va).get(this.namespace),a=()=>s.abort();t.addEventListener("abort",a,{once:!0}),s.onabort=s.onerror=()=>{t.removeEventListener("abort",a),o(new rn("recovery_required"))},s.oncomplete=()=>{t.removeEventListener("abort",a),i(r.result)}})}aad(e){return Wi.encode(JSON.stringify([this.namespace,1,e]))}async unwrap(e,t){if(this.check(t),e===void 0)return null;(!e||!nn(e,"ciphertext,iv,key,revision,version")||e.version!==1||!Number.isSafeInteger(e.revision)||e.revision<1||!(e.key instanceof CryptoKey)||e.key.extractable||e.key.type!=="secret"||e.key.algorithm.name!=="AES-GCM"||!e.key.usages.includes("encrypt")||!e.key.usages.includes("decrypt")||!(e.iv instanceof Uint8Array)||e.iv.byteLength!==12||!(e.ciphertext instanceof ArrayBuffer)||e.ciphertext.byteLength>Ai+2048)&&Q("recovery_required");let i;try{i=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:e.iv,additionalData:this.aad(e.revision)},e.key,e.ciphertext)),this.check(t);let o=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(i));return(o?.version===2||o?.version===3||o?.version===4)&&i.byteLength>Ai&&Q("recovery_required"),qt(o,this.scope)}catch(o){throw o instanceof rn||t.aborted?o:new rn("recovery_required")}finally{i?.fill(0)}}async commit(e,t,i,o){this.check(o);let s=(t?.revision??0)+1;Number.isSafeInteger(s)||Q("fenced");let r=t?.key??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),a=crypto.getRandomValues(new Uint8Array(12)),p=Wi.encode(JSON.stringify(i));p.byteLength>Ai&&(p.fill(0),Q("binding"));let l;try{l=await crypto.subtle.encrypt({name:"AES-GCM",iv:a,additionalData:this.aad(s)},r,p)}finally{p.fill(0)}this.check(o);try{await new Promise((c,d)=>{let u=e.transaction(Va,"readwrite",{durability:"strict"}),f=()=>u.abort();o.addEventListener("abort",f,{once:!0}),u.onerror=u.onabort=()=>{o.removeEventListener("abort",f),d(new rn("outcome_unknown"))},u.oncomplete=()=>{o.removeEventListener("abort",f),c()};let h=u.objectStore(Va),m=h.get(this.namespace);m.onsuccess=()=>{try{this.check(o);let b=m.result;if(b===void 0!=(t===void 0)||b&&b.revision!==t?.revision){u.abort();return}h.put({version:1,revision:s,key:r,iv:a,ciphertext:l},this.namespace)}catch{u.abort()}}})}catch(c){throw this.stopped=!0,c}return this.check(o),i}load(e){return this.exclusive(e,async t=>this.unwrap(await this.read(t,e),e))}prepare(e,t){let i=Xo(e);return Wi.encode(JSON.stringify({version:2,scope:this.scope,mutationId:this.scope.collection,plan:i,phase:"confirmed"})).byteLength>Ai&&Q("binding"),this.exclusive(t,async o=>{let s=await this.read(o,t),r=await this.unwrap(s,t);if(r){let p=sh(r);return JSON.stringify(p.plan)!==JSON.stringify(i)&&Q("binding"),p}let a=sh(qt({version:2,scope:this.scope,mutationId:crypto.randomUUID(),plan:i,phase:"prepared"},this.scope));return this.commit(o,s,a,t)})}prepareResources(e,t){let i=xt(e);return i.sourcePolicy!==void 0&&Q("binding"),Wi.encode(JSON.stringify({version:3,scope:this.scope,mutationId:this.scope.collection,plan:i,phase:"confirmed"})).byteLength>Ai&&Q("binding"),this.exclusive(t,async o=>{let s=await this.read(o,t),r=await this.unwrap(s,t);if(r&&!(r.version===3&&r.phase==="rejected"))return r.version!==3&&Q("recovery_required"),JSON.stringify(r.plan)!==JSON.stringify(i)&&Q("binding"),r;let a=qt({version:3,scope:this.scope,mutationId:crypto.randomUUID(),plan:i,phase:"prepared"},this.scope);return a.version!==3&&Q("binding"),this.commit(o,s,a,t)})}prepareResourceRound(e,t,i){let o=xt(e);return this.exclusive(i,async s=>{let r=await this.read(s,i),a=await this.unwrap(r,i);a?.version===4&&a.phase==="rejected"&&(a=a.previous),(!a||a.mutationId!==t)&&Q("binding"),a.phase!=="verified"&&Q("recovery_required");let p=qt({version:4,scope:this.scope,mutationId:crypto.randomUUID(),plan:o,phase:"prepared",previous:a},this.scope);return p.version!==4&&Q("binding"),this.commit(s,r,p,i)})}advanceResource(e,t,i){return this.exclusive(i,async o=>{let s=await this.read(o,i),r=await this.unwrap(s,i);(!r||r.version!==3&&r.version!==4)&&Q("recovery_required"),r.mutationId!==e&&Q("binding"),r.phase==="rejected"&&Q("recovery_required");let a=op.indexOf(r.phase),p=op.indexOf(t);if((p<a||p>a+1)&&Q("recovery_required"),p===a)return r;let l=qt({...r,phase:t},this.scope);return l.version!==3&&l.version!==4&&Q("binding"),this.commit(o,s,l,i)})}recordResourceAttempt(e,t){return this.advanceResource(e,"attempted",t)}recordResourceConfirmed(e,t){return this.advanceResource(e,"confirmed",t)}recordResourceVerified(e,t){return this.advanceResource(e,"verified",t)}recordResourceRejected(e,t){return this.exclusive(t,async i=>{let o=await this.read(i,t),s=await this.unwrap(o,t);if((!s||s.version!==3&&s.version!==4)&&Q("recovery_required"),s.mutationId!==e&&Q("binding"),s.phase==="rejected")return s;s.phase!=="attempted"&&Q("recovery_required");let r=qt({...s,phase:"rejected"},this.scope);return r.version!==3&&r.version!==4&&Q("binding"),this.commit(i,o,r,t)})}advance(e,t,i){return this.exclusive(i,async o=>{let s=await this.read(o,i),r=await this.unwrap(s,i);r||Q("recovery_required");let a=sh(r);a.mutationId!==e&&Q("binding"),a.phase==="rejected"&&Q("recovery_required");let p=op.indexOf(a.phase),l=op.indexOf(t);return(l<p||l>p+1)&&Q("recovery_required"),l===p?a:this.commit(o,s,sh(qt({...a,phase:t},this.scope)),i)})}recordAttempt(e,t){return this.advance(e,"attempted",t)}recordConfirmed(e,t){return this.advance(e,"confirmed",t)}recordVerified(e,t){return this.advance(e,"verified",t)}}});function Fx(n){if(!n||typeof n!="object")return null;let e=n;if(typeof e.mutationId!="string"||!dT.test(e.mutationId)||!Array.isArray(e.records)||!e.records.every(i=>typeof i=="string")||typeof e.createdAt!="number"||e.state!=="pending"&&e.state!=="rejected")return null;let t=e.problem;return t!==void 0&&(!t||typeof t.code!="string"||typeof t.message!="string"||typeof t.recovery!="string")?null:{mutationId:e.mutationId,records:[...e.records],createdAt:e.createdAt,state:e.state,...t?{problem:{code:t.code,recovery:t.recovery,message:t.message,...t.reason?{reason:t.reason}:{}}}:{}}}var dT,Vx=I(()=>{"use strict";dT=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function ah(n){if(!n||typeof n!="object"||Array.isArray(n))throw wn();let e=Object.getPrototypeOf(n);if(e!==Object.prototype&&e!==null)throw wn();let t=Object.create(null);for(let i of Reflect.ownKeys(n)){if(typeof i!="string")throw wn();let o=Object.getOwnPropertyDescriptor(n,i);if(!o||!("value"in o))throw wn();o.enumerable&&(t[i]=o.value)}return t}function lw(n){if(typeof n!="string"||!n.trim()||uT.encode(n).byteLength>4096)throw wn();return n}function Kx(n){let e=lw(n),t=new URL(e);if(!["http:","https:"].includes(t.protocol)||t.username||t.password)throw wn();return e}function Wx(n){let e=ah(n),t={issuer:Kx(e.issuer),subject:lw(e.subject),name:lw(e.name)};if(e.account_id!==void 0){if(typeof e.account_id!="string"||!fT.test(e.account_id)||e.account_id==="00000000-0000-0000-0000-000000000000")throw wn();t.account_id=e.account_id}return t}function hT(n){if(!Array.isArray(n)||Object.getPrototypeOf(n)!==Array.prototype||n.length>1e3)throw wn();for(let t of Reflect.ownKeys(n)){let i=Object.getOwnPropertyDescriptor(n,t);if(typeof t!="string"||!i||!("value"in i))throw wn()}let e=[];for(let t=0;t<n.length;t++){let i=Object.getOwnPropertyDescriptor(n,String(t));if(!i||!("value"in i))throw wn();e.push(i.value)}return e}function Ka(n,e){try{let t=ah(e);if(n==="identity"){let o=Wx(t);return t.person_settings_url!==void 0&&(o.person_settings_url=Kx(t.person_settings_url)),o}if(n!=="members")throw wn();return{members:hT(t.members).map(o=>{let s=ah(o),r=Wx(s),a=s.role;if(a!=="owner"&&a!=="editor"&&a!=="viewer")throw wn();return{...r,role:a}})}}catch{throw wn()}}function Hx(n,e){try{if(e instanceof se)switch(e.code){case"forbidden":return{code:"forbidden",reason:n==="members"&&e.reason==="people_permission_declined"?"people_permission_declined":"people_access"};case"unauthenticated":case"cancelled":return{code:"unauthenticated",reason:"people_fenced"};case"upgrade_required":return{code:"upgrade_required",reason:"people_unsupported"}}}catch{}return{code:"unavailable",reason:"people_response"}}function Gx(n){let e=ah(n);if(!(e.code==="forbidden"&&["people_permission_declined","people_access"].includes(e.reason)||e.code==="unauthenticated"&&e.reason==="people_fenced"||e.code==="upgrade_required"&&e.reason==="people_unsupported"||e.code==="unavailable"&&["people_response","people_busy"].includes(e.reason))||Object.keys(e).length!==2)throw wn();return _(e.code,"people metadata request failed",e.reason)}function lh(n,e){if(!e.peopleAuthority)throw _("upgrade_required","people metadata is unsupported","people_unsupported");return new Ur(n,e.peopleAuthority)}var wn,uT,fT,ap=I(()=>{"use strict";re();lu();wn=()=>_("unavailable","invalid people response","people_response"),uT=new TextEncoder,fT=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function ni(n){if(!Qo(n)||Object.keys(n).some(i=>i!=="adopt"))throw ce("binding");if(n.adopt===void 0)return Object.freeze({});let e=n.adopt;if(!Qo(e)||Object.keys(e).length>256)throw ce("binding");let t={};for(let[i,o]of Object.entries(e)){if(!Ki(i)||typeof o!="string"||!cp.test(o))throw ce("binding");t[i]=o}return Object.freeze({adopt:Object.freeze(t)})}function mT(n){if(!Qo(n)||!lp(n,"configuration,packs,staged")||!Array.isArray(n.packs)||n.packs.length>16||!Array.isArray(n.configuration)||n.configuration.length>64||!Array.isArray(n.staged)||n.staged.length>1024)throw ce("binding");let e=n.packs.map(o=>{if(!Qo(o)||!lp(o,"id,installedVersion,resources,status,version")||!Ki(o.id,150)||!Ki(o.version,128)||!["current","install","upgrade","downgrade","reconfigure","conflict"].includes(o.status)||!(o.installedVersion===null||Ki(o.installedVersion,128))||!Array.isArray(o.resources)||o.resources.length>1024)throw ce("binding");let s=o.resources.map(r=>{if(!Qo(r)||!lp(r,"action,installed,kind,mode,target",["currentDigest","reason"])||!Ki(r.target)||!Ki(r.kind,64)||r.mode!=="managed"&&r.mode!=="seed"||typeof r.installed!="boolean"||!["create","update","delete","adopt","preserve","conflict"].includes(r.action)||r.currentDigest!==void 0&&(typeof r.currentDigest!="string"||!cp.test(r.currentDigest))||r.reason!==void 0&&!Ki(r.reason,8192))throw ce("binding");return Object.freeze({...r})});return Object.freeze({id:o.id,version:o.version,status:o.status,installedVersion:o.installedVersion,resources:Object.freeze(s)})}),t=n.configuration.map(o=>{if(!Qo(o)||!lp(o,"action,path,requirement",["value"])||!Ki(o.requirement,256)||!Ki(o.path,1024)||o.action!=="add"&&o.action!=="conflict"||!(o.value===void 0||o.value===null||["string","number","boolean"].includes(typeof o.value)))throw ce("binding");return Object.freeze({...o})}),i=n.staged.map(o=>{if(!Qo(o)||!lp(o,"document,path")||!Ki(o.path)||typeof o.document!="string"||o.document.length>512*1024)throw ce("binding");return Object.freeze({path:o.path,document:o.document})});return Object.freeze({packs:Object.freeze(e),configuration:Object.freeze(t),staged:Object.freeze(i)})}function es(n,e=!1){let t=n;if(!t||typeof t!="object"||Object.keys(t).sort().join(",")!==(e?"assessmentDigest,review,status":"assessmentDigest,status")||!["current","provision","conflict"].includes(t.status)||typeof t.assessmentDigest!="string"||!cp.test(t.assessmentDigest))throw ce("binding");return Object.freeze({status:t.status,assessmentDigest:t.assessmentDigest,...e?{review:mT(t.review)}:{}})}function Yx(n){let e=Object.freeze({account:n.scope.account,installation:n.scope.installation,collection:n.scope.collection});if(Object.values(e).some(t=>!Ha.test(t)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(t))||!Ha.test(n.generation))throw ce("binding");return{scope:e,generation:n.generation,binding:JSON.stringify([e.account,e.installation,e.collection])}}function Ga(n){try{return new TextEncoder().encode(JSON.stringify(n)).byteLength<=yT}catch{return!1}}function Jx(n,e,t){t=Object.freeze({...t});let i=Yx(e),o=!1,s=null,r=null,a=0,p={},l=t.setupTurn,c=()=>{l?.owner===p&&(l.owner=null)},d=()=>{if(o||t.signal.aborted||t.isCurrent()!==!0)throw ce()},u=(m,b,w)=>{d();let g=[1,i.binding,i.generation,m,b,w];if(!Ga(g))throw ce("binding");n.postMessage(g)},f=()=>{if(!o){o=!0,c(),n.onmessage=n.onmessageerror=null;try{n.postMessage([1,i.binding,i.generation,0,"closed",null])}catch{}n.close()}},h=()=>{try{f()}finally{t.onProtocolFailure()}};return n.onmessageerror=h,n.onmessage=m=>{let b=m.data;try{if(d(),Array.isArray(b)&&b.length===6&&b[0]===1&&b[1]===i.binding&&b[2]===i.generation&&b[3]===0&&b[4]==="detach"&&b[5]===null){h();return}if(!Array.isArray(b)||b.length!==6||b[0]!==1||b[1]!==i.binding||b[2]!==i.generation||!Number.isInteger(b[3])||b[3]<1||b[3]>4294967295||!vT.includes(b[4])||!Ga(b))throw ce("binding");let w=b[3],g=b[4],y=b[5];if(w<=a)throw ce("binding");if(a=w,gT(g)){let k=null;try{let S=t.ledger?.()??null;if(!S)throw ce("recovery_required");if(g==="ledgerList"){if(y!==null)throw ce("binding");k=S.list(wT)}else if(g==="ledgerRemove"){if(typeof y!="string"||!Ha.test(y))throw ce("binding");S.remove(y)}else{if(!Array.isArray(y)||y.length!==2||typeof y[0]!="string"||!Ha.test(y[0])||typeof y[1]!="string"||y[1].length>bT)throw ce("binding");S.put(y[0],y[1])}}catch(S){u(w,"error",S instanceof ii?S.reason:"recovery_required");return}u(w,"result",k);return}if(s){u(w,"error","busy");return}if(l&&_T(g)&&l.owner!==null&&l.owner!==p){u(w,"error","busy");return}let v=async()=>{d();let k=null;switch(g){case"resourcesAssess":case"resourcesApply":{let S=t.resourceSetup;if(!S)throw ce("recovery_required");if(g==="resourcesAssess"){let x=Array.isArray(y);if(x&&y.length!==2)throw ce("binding");k=x?es(await S.assess(y[0],t.signal,ni(y[1])),!0):es(await S.assess(y,t.signal))}else{if(!Array.isArray(y)||y.length!==2&&y.length!==3||typeof y[1]!="string"||!cp.test(y[1]))throw ce("binding");k=xt(y.length===3?await S.apply(y[0],y[1],t.signal,ni(y[2])):await S.apply(y[0],y[1],t.signal))}d();break}case"peopleIdentity":case"peopleMembers":{if(y!==null)throw ce("binding");let S=t.peopleAuthority;if(!S)throw _("upgrade_required","people metadata is unsupported","people_unsupported");let x=()=>{if(d(),S.collection!==i.scope.collection||S.isCurrent()!==!0)throw _("unauthenticated","people scope changed","people_fenced")};x();let P=ch(g),C=await S.request(P,{signal:t.signal});if(x(),k=Ka(P,C),x(),!Ga([1,i.binding,i.generation,w,"result",k]))throw _("unavailable","invalid people response","people_response");break}case"load":if(y!==null)throw ce("binding");c(),k=await t.journal.load(t.signal);break;case"prepare":k=await t.journal.prepare(Xo(y),t.signal),d(),l&&(l.owner=p);break;case"prepareResources":k=await t.journal.prepareResources(xt(y),t.signal),d(),l&&(l.owner=p);break;case"prepareResourceRound":if(!Array.isArray(y)||y.length!==2||typeof y[1]!="string")throw ce("binding");k=await t.journal.prepareResourceRound(xt(y[0]),y[1],t.signal),d(),l&&(l.owner=p);break;case"assess":if(y!=="ready"&&y!=="setup_required")throw ce("binding");t.assess(y);break;case"foreground":if(typeof y!="boolean")throw ce("binding");t.foreground(y);break;case"recordResourceRejected":{if(typeof y!="string"||!Ha.test(y))throw ce("binding");let S=t.resourceSetup?.rejected;if(!S||await S(y,t.signal)!==!0)throw ce("recovery_required");d(),k=await t.journal.recordResourceRejected(y,t.signal),c();break}default:if(typeof y!="string"||!Ha.test(y))throw ce("binding");k=await t.journal[g](y,t.signal),(g==="recordVerified"||g==="recordResourceVerified")&&c()}d(),u(w,"result",k)},A=s=Promise.resolve().then(v).catch(k=>{if(!(o||t.signal.aborted))try{let S=ch(g);u(w,"error",S?Hx(S,k):k instanceof rn||k instanceof ii?k.reason:"recovery_required")}catch{h()}});A.finally(()=>{s===A&&(s=null)}).catch(()=>{})}catch{h()}},n.start(),{close(){return r||(r=Promise.resolve().then(async()=>{f(),await s}),r)}}}function ph(n,e,t){t=Object.freeze({...t});let i=Yx(e),o=!1,s=1,r=null,a=new Map,p=()=>{if(o||t.signal.aborted||t.isCurrent()!==!0)throw ce()},l=()=>{if(o)return;o=!0,t.signal.removeEventListener("abort",l),n.onmessage=n.onmessageerror=null;let v=r;r=null,v?.finish(void 0,ce(cw(v.action)?"fenced":"outcome_unknown"));for(let A of a.values())A(void 0,ce("fenced"));a.clear();try{n.postMessage([1,i.binding,i.generation,0,"detach",null])}catch{}try{n.close()}finally{t.onClose()}};t.signal.addEventListener("abort",l,{once:!0}),n.onmessageerror=l,n.onmessage=v=>{try{p();let A=v.data;if(!Array.isArray(A)||A.length!==6||A[0]!==1||A[1]!==i.binding||A[2]!==i.generation||!Ga(A))throw ce();if(A[3]===0&&A[4]==="closed"&&A[5]===null){l();return}let k=a.get(A[3]);if(k&&["result","error"].includes(A[4])){a.delete(A[3]),k(A[4]==="result"?A[5]:void 0,A[4]==="error"?ce(A[5]==="binding"?"binding":"recovery_required"):void 0);return}if(!r||A[3]!==r.id||!["result","error"].includes(A[4]))throw ce();let S=r,x=A[4]==="error"?ch(S.action)&&A[5]!=="busy"?Gx(A[5]):A[5]==="busy"?ce("busy"):ce(["binding","fenced","recovery_required","outcome_unknown"].includes(A[5])?A[5]:"recovery_required"):void 0;r=null,S.finish(A[4]==="result"?A[5]:void 0,x)}catch{l()}},n.start();let c=(v,A,k)=>{try{if(p(),k.aborted)throw ce();if(r)throw ce("busy");if(s>4294967295)throw l(),ce()}catch(x){return Promise.reject(x)}let S=s++;return new Promise((x,P)=>{let C=!1,E=()=>O(void 0,ce(cw(v)?"fenced":"outcome_unknown")),O=(L,z)=>{C||(C=!0,k.removeEventListener("abort",E),z?P(z):x(L))};r={id:S,action:v,finish:O},k.addEventListener("abort",E,{once:!0});try{let L=[1,i.binding,i.generation,S,v,A];if(!Ga(L))throw ce("binding");n.postMessage(L)}catch(L){r=null,O(void 0,L),l()}})},d=(v,A)=>{try{if(p(),s>4294967295)throw l(),ce()}catch(S){return Promise.reject(S)}let k=s++;return new Promise((S,x)=>{a.set(k,(P,C)=>C?x(C):S(P));try{let P=[1,i.binding,i.generation,k,v,A];if(!Ga(P))throw ce("binding");n.postMessage(P)}catch(P){a.delete(k),x(P)}})},u=Object.freeze({async list(){let v=await d("ledgerList",null);if(!Array.isArray(v))throw ce("recovery_required");return v.flatMap(A=>{try{let k=Fx(JSON.parse(String(A)));return k?[k]:[]}catch{return[]}})},async put(v){await d("ledgerPut",[v.mutationId,JSON.stringify(v)])},async remove(v){await d("ledgerRemove",v)}}),f=(v,A)=>{let k=cw(v)?"fenced":"outcome_unknown";try{if(p(),A.aborted)throw ce()}catch{throw ce(k)}},h=async(v,A,k)=>{let S=await c(v,A,k);f(v,k);let x=qt(S,i.scope);return f(v,k),x},m=async(v,A,k)=>{let S=await h(v,A,k);if(f(v,k),S.version!==2)throw ce("recovery_required");return S},b=async(v,A,k)=>{let S=await h(v,A,k);if(f(v,k),S.version!==3&&S.version!==4)throw ce("recovery_required");return S},w=Object.freeze({scope:i.scope,async load(v){let A=await c("load",null,v);f("load",v);let k=A===null?null:qt(A,i.scope);return f("load",v),k},prepare:(v,A)=>m("prepare",Xo(v),A),recordAttempt:(v,A)=>m("recordAttempt",v,A),recordConfirmed:(v,A)=>m("recordConfirmed",v,A),recordVerified:(v,A)=>m("recordVerified",v,A),async prepareResources(v,A){let k=await b("prepareResources",xt(v),A);if(f("prepareResources",A),k.version!==3)throw ce("recovery_required");return k},async prepareResourceRound(v,A,k){let S=await b("prepareResourceRound",[xt(v),A],k);if(f("prepareResourceRound",k),S.version!==4)throw ce("recovery_required");return S},recordResourceAttempt:(v,A)=>b("recordResourceAttempt",v,A),recordResourceConfirmed:(v,A)=>b("recordResourceConfirmed",v,A),recordResourceVerified:(v,A)=>b("recordResourceVerified",v,A),recordResourceRejected:(v,A)=>b("recordResourceRejected",v,A)}),g=t.people===!0?Object.freeze({collection:i.scope.collection,isCurrent(){try{return p(),!0}catch{return!1}},async request(v,A={}){if(v!=="identity"&&v!=="members")throw _("invalid_request","invalid people resource");let k=v==="identity"?"peopleIdentity":"peopleMembers",S=A.signal??t.signal;try{let x=await c(k,null,S);f(k,S);let P=Ka(v,x);return f(k,S),P}catch(x){try{f(k,S)}catch{throw _("unauthenticated","people scope changed","people_fenced")}throw x instanceof ii?_(x.reason==="busy"?"unavailable":"unauthenticated","people metadata request failed",x.reason==="busy"?"people_busy":"people_fenced"):x}}}):void 0,y=Object.freeze({async assess(v,A,k){let S=k!==void 0,x=await c("resourcesAssess",S?[v,ni(k)]:v,A);f("resourcesAssess",A);let P=es(x,S);return f("resourcesAssess",A),P},async apply(v,A,k,S){if(!cp.test(A))throw ce("binding");let x=await c("resourcesApply",S===void 0?[v,A]:[v,A,ni(S)],k);f("resourcesApply",k);let P=xt(x);return f("resourcesApply",k),P}});return Object.freeze({journal:w,close:l,resourceSetup:y,ledger:u,...g?{peopleAuthority:g}:{},async assess(v,A){await c("assess",v,A),f("assess",A)},async setForeground(v,A){await c("foreground",v,A),f("foreground",A)}})}var cp,Qo,Ki,lp,yT,Ha,ii,ce,gT,bT,wT,vT,ch,cw,_T,ro=I(()=>{"use strict";Zo();re();Vx();ap();cp=/^sha256:[0-9a-f]{64}$/,Qo=n=>!!n&&typeof n=="object"&&!Array.isArray(n)&&Object.getPrototypeOf(n)===Object.prototype,Ki=(n,e=4096)=>typeof n=="string"&&n.length>0&&n.length<=e;lp=(n,e,t=[])=>{let i=e.split(",");return i.every(o=>Object.hasOwn(n,o))&&Object.keys(n).every(o=>i.includes(o)||t.includes(o))};yT=512*1024+8192,Ha=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,ii=class extends Error{constructor(t){super(`app collection control: ${t}`);this.reason=t;this.name="AppCollectionControlError"}reason},ce=(n="fenced")=>new ii(n);gT=n=>n==="ledgerList"||n==="ledgerPut"||n==="ledgerRemove",bT=16*1024,wT=448*1024,vT=["load","prepare","prepareResources","prepareResourceRound","recordAttempt","recordConfirmed","recordVerified","recordResourceAttempt","recordResourceConfirmed","recordResourceVerified","recordResourceRejected","assess","foreground","peopleIdentity","peopleMembers","resourcesAssess","resourcesApply","ledgerList","ledgerPut","ledgerRemove"],ch=n=>n==="peopleIdentity"?"identity":n==="peopleMembers"?"members":null,cw=n=>n==="load"||n==="assess"||n==="foreground"||n==="resourcesAssess"||n==="resourcesApply"||ch(n)!==null,_T=n=>n==="load"||n==="prepare"||n==="prepareResources"||n==="prepareResourceRound"||n.startsWith("record")});function pw(n){let e=[n.account,n.installation,n.collection];if(e.some(o=>typeof o!="string"||!AT.test(o))||typeof n.isCurrent!="function")throw ct();let t=JSON.stringify(e.map(o=>o.toLowerCase())),i=n.isCurrent.bind(n);return{binding:t,current:()=>{try{return i()===!0&&JSON.stringify([n.account,n.installation,n.collection].map(o=>o.toLowerCase()))===t}catch{return!1}}}}function Qx(n,e,t,i,o){let s=pw(e),r=!1,a=()=>{if(!r){r=!0,n.onmessage=null,n.onmessageerror=null;try{n.postMessage([1,s.binding,"close"])}catch{}n.close(),i()}},p=()=>{if(r||!s.current())throw a(),ct()};return n.onmessageerror=a,n.onmessage=l=>{try{p();let c=l.data;if(!Array.isArray(c)||c[0]!==1||c[1]!==s.binding)throw ct();if(c.length===3&&c[2]==="close"){a();return}if(c.length===5&&kT.includes(c[2])){let u=c[2],f=c[3],h=c[4],m=Xx(u);if(!o||!Number.isInteger(f)||f<1||f>4294967295||!(h instanceof Uint8Array)||!h.length||h.length>m)throw ct();p(),o(u,f,h);return}if(c.length!==4||c[2]!=="frame"||!(c[3]instanceof Uint8Array)||c[3].length===0||c[3].length>qr)throw ct();let d=ue(new Uint8Array(c[3]));p(),t(d)}catch{a()}},n.start(),{close:a,send(l){try{p();let c=pe(l);if(!c.length||c.length>qr)throw ct();p(),n.postMessage([1,s.binding,"frame",c],[c.buffer])}catch{throw a(),ct()}},control(l,c,d){try{p();let u=Xx(l);if(!Number.isInteger(c)||c<1||c>4294967295||!(d instanceof Uint8Array)||!d.length||d.length>u||!(d.buffer instanceof ArrayBuffer)||d.byteOffset!==0||d.byteLength!==d.buffer.byteLength)throw ct();p(),n.postMessage([1,s.binding,l,c,d],[d.buffer])}catch{throw a(),ct()}},current:p}}function PT(n){if(!(n instanceof Map))return!1;let e=n;return e.get(0)===0&&ST.has(e.get(2))}function dh(n,e,t,i){if(!pw(t).current())throw ct();let s;try{s=n.connect({collection:t.collection})}catch{throw e.close(),ct()}let r;try{r=Qx(e,t,p=>{if(s.send(p),i&&PT(p))try{i(p.get(2))}catch{}},()=>s.close(),(p,l,c)=>{let d;try{if(p==="bases-request"&&typeof n.executeBases=="function")d=n.executeBases(s,c);else if((p==="bases-list-views-request"||p==="bases-read-view-source-request")&&typeof n.discoverBases=="function")d=n.discoverBases(s,p==="bases-list-views-request"?"list-views":"read-view-source",c);else throw ct()}finally{c.fill(0)}try{r.current(),r.control(Zx(p),l,d)}catch(u){throw d.byteLength&&d.fill(0),u}}),s.onframe=p=>{try{r.send(p)}catch{}},s.onclose=()=>r.close()}catch{throw s.close(),e.close(),ct()}let a=Object.freeze({async assess(p,l,c){if(l.throwIfAborted(),r.current(),!n.setupResources)throw ct();let d=c===void 0?n.setupResources(s,"assess",p):n.setupResources(s,"assess",p,void 0,c);return r.current(),l.throwIfAborted(),d},async apply(p,l,c,d){if(c.throwIfAborted(),r.current(),!n.setupResources)throw ct();let u=d===void 0?n.setupResources(s,"apply",p,l):n.setupResources(s,"apply",p,l,d);return r.current(),c.throwIfAborted(),u},async rejected(p,l){if(l.throwIfAborted(),r.current(),!n.resourceRejected)return!1;let c=n.resourceRejected(s,p);return r.current(),l.throwIfAborted(),c}});return{close:()=>r.close(),resourceSetup:a}}function uh(n,e){let t=pw(e),i=!1,o=!1,s,r=null,a=[],p=()=>_("cancelled","Bases read cancelled"),l=1;return{description:"app-local",close(){o=!0,s?s.close():n.close()},async open(c,d){if(i)throw ct();if(!t.current()||d?.aborted||o)throw n.close(),ct();i=!0;let u,f=s=Qx(n,e,b=>u?.onframe?.(b),()=>{let b=r;r=null;let w=a.splice(0);b?.finish(void 0,p());for(let g of w)g.finish(void 0,p());u?.onclose?.(ct())},(b,w,g)=>{if(!r||b!==r.response||w!==r.id)throw g.fill(0),ct();let y=r;r=null,y.finish(g),h()});function h(){if(r||a.length===0)return;let b=a.shift();r=b;try{if(f.current(),r!==b){h();return}if(l>4294967295)throw f.close(),ct();b.id=l++,f.control(b.kind,b.id,b.request)}catch(w){r===b&&(r=null),b.finish(void 0,w),h()}}let m=(b,w,g)=>{try{if(f.current(),g?.aborted)throw p();if(!(w instanceof Uint8Array)||!w.length||w.length>128*1024)throw _("invalid_request","Bases request bytes exceed bound");if(a.length>=32)throw _("unavailable","Bases read queue is full","bases_read_backpressure")}catch(v){return Promise.reject(v)}let y=new Uint8Array(w);return new Promise((v,A)=>{let k=!1,S=(C,E)=>{if(r!==x&&y.byteLength&&y.fill(0),k){C?.byteLength&&C.fill(0);return}k=!0,g?.removeEventListener("abort",P),E!==void 0?A(E):v(C)},x={kind:b,request:y,response:Zx(b),finish:S},P=()=>{let C=a.indexOf(x);C!==-1&&a.splice(C,1),r===x&&x.id===void 0&&(r=null),S(void 0,p())};a.push(x),g?.addEventListener("abort",P,{once:!0}),h()})};u={onframe:null,onclose:null,send:b=>f.send(b),close:()=>f.close(),readAppBases:(b,w)=>m("bases-request",b,w),readAppBasesDiscovery(b,w,g){return b!=="list-views"&&b!=="read-view-source"?Promise.reject(_("invalid_request","unknown native Bases read")):m(b==="list-views"?"bases-list-views-request":"bases-read-view-source-request",w,g)}};try{if(d?.aborted||o)throw ct();return await zs({connect:()=>u}).open(c,d)}catch{throw f.close(),ct()}}}}var AT,ct,kT,Zx,Xx,ST,fh=I(()=>{"use strict";Je();re();du();Ml();AT=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/iu,ct=()=>_("unavailable","app local facade unavailable; reopen and reconcile");kT=["bases-request","bases-response","bases-list-views-request","bases-list-views-response","bases-read-view-source-request","bases-read-view-source-response"],Zx=n=>n==="bases-request"?"bases-response":n==="bases-list-views-request"?"bases-list-views-response":"bases-read-view-source-response",Xx=n=>n.endsWith("request")?128*1024:n==="bases-response"?qr:1024*1024;ST=new Set(["submit","resolve_hold","open_upload","upload_chunk","commit_upload","abort_upload","fetch_file","read_file","ack_chunks"])});function bh(n){let e=n.manifest.requirements.files;return e?Object.freeze({required:Object.freeze([...n.files?.actions??[]]),optional:Object.freeze([...e.optional??[]])}):null}function wh(n,e){return n.collections.find(t=>t.collectionId===e)?.fileActions??[]}function uC(n,e){let t=i=>n.required.includes(i)||n.optional.includes(i)&&e().includes(i);return Object.freeze({allows:t,check(i){if(!t(i))throw dC(i,n.optional.includes(i))}})}function fC(n,e,t,i){let o=e?.files,s=t?.reason;if(!Array.isArray(o)||!o.length||o.some(a=>!BT.includes(a))||new Set(o).size!==o.length)throw _("invalid_request","Invalid file actions","access_invalid");if(typeof s!="string"||!s.trim()||s.length>140||/[\u0000-\u001f\u007f\u2028\u2029]/.test(s))throw _("invalid_request","Reason must be one line, 1-140 characters","access_invalid");let r=[];for(let a of o)if(!n?.required.includes(a)){if(!n?.optional.includes(a))throw dC(a,!1);i.includes(a)||r.push(a)}return Object.freeze(r)}function hC(n,e,t){let i=n.grant?.actions??[...new Set([...e?.required??[],...t])];return Object.freeze({status:"granted",actions:Object.freeze([...i])})}function VT(n,e){return new Promise(t=>{let i=0,o=a=>{clearInterval(r),n.removeEventListener("abort",s),t(a)},s=()=>o(!1),r=setInterval(()=>{e.closed?o(!0):++i>=3&&o(!1)},500);n.addEventListener("abort",s,{once:!0})})}async function mC(n,e,t){let i=r=>{try{e.close()}catch{}return r},o;try{o=await n.start()}catch(r){if(t.aborted)return i(gh);throw r}let s=o.fileAccess?.requestId;for(let r=!1;;){let a=n.native().fileAccess;if(!s||a?.requestId!==s)return i(gh);if(a.state==="granted")return i(n.granted());if(a.state==="declined")return i(FT);if(a.state==="expired"||r||t.aborted||(r=await VT(t,e),t.aborted))return i(gh);await n.poll(s).catch(()=>{})}}var BT,dC,gh,FT,vh=I(()=>{"use strict";re();BT=["list","read","add","replace","move","delete"];dC=(n,e)=>e?_("forbidden",`File action ${n} needs requestAccess first`,"access_required"):_("forbidden",`File action ${n} is not declared`,"access_undeclared");gh=Object.freeze({status:"cancelled"}),FT=Object.freeze({status:"declined"})});function JT(n){let e=n==="contract"?"shared format for this app's notes":n==="type"?"note type for this app":n==="schema"?"set of checks for this app's note properties":"setup item this app needs";return{the:`the ${e}`,bare:e}}function Ph(n){if(n===void 0)return Object.freeze([]);if(!Array.isArray(n)||n.length>HT)throw new TypeError("setup records: at most 32 { path, document } entries");let e=new Set,t=new TextEncoder,i=0;return Object.freeze(n.map(o=>{let s=o?.path,r=o?.document;if(typeof s!="string"||!/\.md$/i.test(s)||s.length>1024||s.startsWith("/")||s.split("/").some(a=>!a||a==="."||a==="..")||e.has(s.toLowerCase())||typeof r!="string"||!r.length||(i+=t.encode(r).length+t.encode(s).length)>GT)throw new TypeError("setup records: each needs a unique relative .md path and a document (256 KiB in total)");return e.add(s.toLowerCase()),Object.freeze({path:s,document:r})}))}function _C(n,e){return n.status!=="current"||n.refusal||e.facets.contracts.assessment?.status!=="setup_required"?n:Object.freeze({...n,status:"conflict",summary:vC,refusal:Object.freeze({code:"setup_unresolved",message:vC})})}function up(n,e){let t=n.review,i=n.status==="current"?"current":n.status==="conflict"?"conflict":"setup",o=[],s=[],r={},a=new Set(t.staged.map(u=>u.path));for(let u of t.packs)for(let f of u.resources){let h=JT(f.kind),m=`T${h.the.slice(1)}`,b=f.kind==="contract"?", so other apps can work with them":"";switch(f.action){case"create":o.push({kind:"create",target:f.target,message:`Add ${h.the}${b}.`});break;case"update":o.push({kind:"update",target:f.target,message:`Update ${h.the}.`});break;case"delete":o.push({kind:"delete",target:f.target,message:`Remove ${h.the}, which this app no longer uses.`});break;case"adopt":o.push({kind:"adopt",target:f.target,message:a.has(f.target)?`Replace ${h.the} with this app's version. Yours isn't kept.`:`Use your existing ${h.bare}, which already matches this app's.`});break;case"preserve":case"conflict":{if(f.action==="preserve"&&f.reason===void 0)break;let w=f.mode==="seed",g=f.currentDigest!==void 0&&(w||!f.installed);g&&(r[f.target]=f.currentDigest),s.push({target:f.target,...g?{adoptable:{digest:f.currentDigest}}:{},message:g&&w?`Your ${h.bare} has changes that can't be combined with the version this app needs. You can replace it with this app's version.`:g?`This collection already has a ${h.bare} that differs from the one this app needs. You can replace it with this app's version.`:f.installed?`${m} was changed after this app set it up, so it can't be updated automatically.`:`${m} can't be set up automatically.`});break}default:break}}for(let u of t.configuration){let f=ZT(u.path);u.action==="add"?o.push({kind:"setting",target:f,message:f==="include"?"Include this app's files when reading the collection.":f==="record extensions"&&typeof u.value=="string"?`Read .${u.value.replace(/^\./,"")} files as notes in this collection.`:"Adjust a collection setting this app needs."}):s.push({target:f,message:"A collection setting differs from what this app needs, so it can't be changed automatically."})}let p=i==="current"?[]:e.records.map(u=>Object.freeze({path:u.path,action:u.free?"create":"skip"}));for(let u of p)u.action==="create"&&o.push({kind:"record",target:u.path,message:`Create the starter note "${YT(u.path)}".`});i==="setup"&&o.length===0&&s.length===0&&o.push({kind:"update",target:"Setup record",message:"Update this collection's record of this app's setup. Your notes and note types stay as they are."}),i==="current"&&s.length&&(i="conflict");let l=(e.newer?.major.length??0)>0||t.packs.some(u=>u.installedVersion&&Uo(u.installedVersion,u.version)==="installed_newer_major"),c;i!=="current"&&!e.canManage?c={code:"setup_forbidden",message:"This app doesn't have permission to set up this collection."}:l?c={code:"installed_newer",message:"A newer version of this app set up this collection. Update the app to continue."}:s.length?c={code:"setup_conflict",message:s.length===Object.keys(r).length?`${s.length===1?"One item differs":`${s.length} items differ`} from what this app needs. Choose whether to use this app's version to continue.`:"Some items can't be set up automatically. Resolve them, then try again."}:p.some(u=>u.action==="create")&&!e.canCreateRecords&&(c={code:"setup_records_forbidden",message:"This app doesn't have permission to create notes in this collection."});let d=i==="current"?"Everything this app needs is already set up.":c?c.message:`This app will make ${XT(o.length,"change")} to this collection.${o.every(u=>u.kind==="create"||u.kind==="record"||u.kind==="adopt"&&!a.has(u.target))?" Nothing already in it is changed.":""}`;return Object.freeze({status:i,canApply:i==="setup"&&c===void 0,digest:n.assessmentDigest,summary:d,changes:Object.freeze(o.map(u=>Object.freeze(u))),conflicts:Object.freeze(s.map(u=>Object.freeze(u))),adoptable:Object.freeze(r),packs:Object.freeze([...t.packs.map(u=>Object.freeze({id:u.id,version:u.version,status:u.status,...u.installedVersion?{installedVersion:u.installedVersion,relation:Uo(u.installedVersion,u.version)}:{}})),...(e.newer?.kept??[]).map(u=>Object.freeze({id:u.id,version:u.version,status:"current",installedVersion:u.installedVersion,relation:"installed_newer"}))]),staged:t.staged,records:Object.freeze(p),...c?{refusal:Object.freeze(c)}:{}})}var HT,GT,YT,XT,ZT,vC,xh=I(()=>{"use strict";_u();HT=32,GT=256*1024,YT=n=>(n.split("/").pop()??n).replace(/\.(md|ya?ml|json)$/i,"");XT=(n,e,t=`${e}s`)=>`${n} ${n===1?e:t}`,ZT=n=>(n.split("/").filter(Boolean).pop()??n).replace(/[_-]+/g," ");vC="This collection is missing something this app needs, and setup can't add it. A note type this app set up may have been changed or removed. Restore it, then try again."});function CC(){throw _("unavailable","SDK release trust unavailable: package authenticated LAB or production inputs","application_release_trust_unavailable")}var IC=I(()=>{"use strict";re()});function OC(n,e){let t=()=>_("unauthenticated","people scope changed","people_fenced"),i={collection:n,isCurrent:()=>e.holds(n),async request(o,s={}){if(o!=="identity"&&o!=="members")throw _("invalid_request","invalid people resource");for(let r=0;;r++){if(s.signal?.throwIfAborted(),!i.isCurrent())throw t();let a=await e.accessToken(n,r>0),{status:p,body:l}=await iM(e,`/v1/authorities/${n}/${o}`,a,s.signal);if(!i.isCurrent())throw t();if(!(p===401&&r===0)){if(p===401)throw _("unauthenticated","people credential is no longer current","people_fenced");if(p===403){let c=l?.error?.code;throw c==="approval_required"?hn("approval_required"):_("forbidden","people access was refused",o==="members"&&c==="insufficient_access"?"people_permission_declined":"people_access")}if(p===404)throw _("upgrade_required","people metadata is unsupported","people_unsupported");if(p!==200||!l)throw vw();return l}}}};return i}async function iM(n,e,t,i){let o=new AbortController,s=()=>o.abort();i?.addEventListener("abort",s,{once:!0});let r=setTimeout(s,nM);r.unref?.();try{let a=await n.fetch(`${n.cpOrigin}${e}`,{method:"GET",headers:{authorization:`Bearer ${t}`},signal:o.signal,redirect:"error",credentials:"omit",cache:"no-store",referrerPolicy:"no-referrer"}),p=await a.text();if(p.length>tM)throw vw();let l=null;try{let c=JSON.parse(p);c&&typeof c=="object"&&!Array.isArray(c)&&(l=c)}catch{l=null}return{status:a.status,body:l}}catch(a){throw i?.aborted?_("cancelled","request cancelled"):a instanceof se?a:vw()}finally{clearTimeout(r),i?.removeEventListener("abort",s)}}var tM,nM,vw,RC=I(()=>{"use strict";Nr();re();tM=1024*1024,nM=15e3,vw=()=>_("unavailable","people metadata is unavailable","people_response")});function kw(n){if(!/^sha256:[a-f0-9]{64}$/.test(n))throw Gi();return Uint8Array.from(n.slice(7).match(/../g),e=>parseInt(e,16))}function _w(n){if(!(n instanceof Map)||[...n.keys()].some(e=>typeof e!="number"))throw Gi();return n}function Ch(n,e){if(!(n instanceof Uint8Array)||n.length!==e)throw Gi();return n.slice()}function Aw(n){if(n instanceof yt)return n.value;if(n instanceof Map){if([...n.keys()].some(e=>typeof e!="string"))throw Gi();return Object.fromEntries([...n].map(([e,t])=>[e,Aw(t)]))}if(Array.isArray(n))return n.map(Aw);if(n===null||["string","boolean","number"].includes(typeof n))return n;throw Gi()}async function fp(n,e,t,i){let o=pe(new Map([[0,1],[1,e],...t].sort(([r],[a])=>Number(r)-Number(a)))),s;try{s=await n.declaredSetup(o,i);let r=_w(ue(s));if(r.get(0)!==1)throw Gi();let a=r.get(1),p=a==="review"?[0,1,2,3,4,5,6,7,8,9,10]:a==="pending"?[0,1,2]:a==="receipt"?[0,1,3]:a==="cancelled"?[0,1]:[];if(r.size!==p.length||p.some(f=>!r.has(f)))throw Gi();if(a==="cancelled")return{kind:a};if(a==="receipt")return{kind:a,receipt:kt.dec(r.get(3))};let l=Ch(r.get(2),16);if(a==="pending")return{kind:a,ticket:l};if(a!=="review"||!["ready","setup_required","incompatible"].includes(r.get(3))||typeof r.get(8)!="string")throw Gi();let c=_w(r.get(9)),d=r.get(10);if(!(c instanceof Map)||c.size!==2||![c.get(0),c.get(1)].every(f=>Number.isSafeInteger(f)&&Number(f)>=0&&Number(f)<=256)||!Array.isArray(d)||d.length>32)throw Gi();let u=d.map(f=>{let h=_w(f);if(h.size!==2||typeof h.get(0)!="string"||!["create","skip"].includes(h.get(1)))throw Gi();return Object.freeze({path:h.get(0),action:h.get(1)})});return{kind:a,ticket:l,revision:Ch(r.get(4),32),declaration:EC(Ch(r.get(7),32)),application:r.get(8),promoted:c.get(0),retained:c.get(1),records:Object.freeze(u),assessment:es({status:r.get(3)==="ready"?"current":r.get(3)==="incompatible"?"conflict":"provision",assessmentDigest:"sha256:"+EC(Ch(r.get(5),32)),review:Aw(r.get(6))},!0)}}finally{o.fill(0),s?.fill(0)}}var Gi,EC,qC=I(()=>{"use strict";Je();re();ro();At();Gi=()=>_("internal","Invalid Native setup reply.","declared_setup_codec"),EC=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")});function rM(n){return new Promise((e,t)=>{if(n?.aborted)return t(_("cancelled","Setup cancelled."));let i=()=>{clearTimeout(o),t(_("cancelled","Setup cancelled."))},o=setTimeout(()=>{n?.removeEventListener("abort",i),e()},100);n?.addEventListener("abort",i,{once:!0})})}function TC(n){let{client:e,journal:t}=n,i=n.operations.includes("assess_collection_setup")&&n.operations.includes("apply_collection_setup"),o=new WeakMap,s=new WeakSet,r=!1;async function a(m){if(r)throw _("rate_limited","A setup operation is already running.");r=!0;try{return await m()}finally{r=!1}}async function p(m,b){if(m||await e.readyForRead(b),await n.assertCurrent(),b?.aborted)throw _("cancelled","Setup cancelled.");if(m&&(m.closed||e.currentSession()!==m))throw so()}async function l(m,b){try{await fp(m,"cancel",[[2,b]],AbortSignal.timeout(1e3))}catch{}}async function c(m={}){await p(void 0,m.signal);let b=await e.readyForRead(m.signal);await p(b,m.signal);let w=await jf(n.manifest);await p(b,m.signal);let g=ni(m.adopt===void 0?{}:{adopt:m.adopt}),y=Ph(m.records),v=[];g.adopt&&Object.keys(g.adopt).length&&v.push([3,new Map(Object.entries(g.adopt).map(([k,S])=>[k,kw(S)]))]),y.length&&v.push([4,y.map(k=>new Map([[0,k.path],[1,k.document]]))]);let A;try{let k=await fp(b,"assess",v,m.signal);await p(b,m.signal);for(let S=0;k.kind==="pending";S++){if(A=k.ticket,S>=512)throw hp();await rM(m.signal),await p(b,m.signal),k=await fp(b,"poll",[[2,A]],m.signal),await p(b,m.signal)}if(k.kind!=="review")throw hp();if(A=k.ticket,k.declaration!==w||k.application!==n.manifest?.id)throw so();if(k.records.length!==y.length||k.records.some((S,x)=>S.path!==y[x].path))throw hp();return{s:b,review:k,options:{records:y,...g.adopt?{adopt:Object.freeze({...g.adopt})}:{}}}}catch(k){throw A&&await l(b,A),k}}async function d(m){await p(void 0,m);let b=await t.load();if(await p(void 0,m),!b)return;let w;try{w=await e.receipt(b,m)}catch(g){throw is(b,g)}if(await p(void 0,m),w.mutation!==b||w.state!=="confirmed"&&w.state!=="rejected")throw is(b);await t.clear(b)}function u(m,b){let w=up(b.assessment,{canManage:!0,canCreateRecords:m.hello.grant.capabilities.includes("records.create"),records:b.records.map(y=>({path:y.path,free:y.action==="create"}))});if(!b.promoted)return w;let g=Object.freeze([...w.changes,{kind:"record",target:"Existing files",message:`Recognize ${b.promoted} existing ${b.promoted===1?"file":"files"} as notes, preserving their contents.`}]);return Object.freeze({...w,changes:g,summary:`This app will make ${g.length} ${g.length===1?"change":"changes"} to this collection.`})}let f=(m,b)=>JSON.stringify([m.status,m.canApply,m.summary,m.changes,m.conflicts,m.adoptable,m.packs,m.staged,m.records,m.refusal??null,b.promoted,b.retained]),h={async assess(m={}){let b=await h.plan(m),w=o.get(b);return w&&(await l(w.session,w.review.ticket),await p(w.session,m.signal)),b.status==="current"?"ready":b.status==="conflict"?"incompatible":"setup_required"},async plan(m={}){return a(async()=>{if(await p(void 0,m.signal),!i){if(n.operations.includes("apply_collection_setup")||n.operations.includes("assess_collection_setup"))throw hp();let v=up({status:"current",assessmentDigest:`sha256:${"0".repeat(64)}`,review:{configuration:[],packs:[],staged:[]}},{canManage:!1,canCreateRecords:!1,records:[]});return s.add(v),v}await d(m.signal);let{s:b,review:w,options:g}=await c(m),y=u(b,w);return o.set(y,{session:b,review:w,options:g,consumed:!1}),y})},async apply(m,b={}){return a(async()=>{if(s.has(m))return await p(void 0,b.signal),"ready";let w=o.get(m);if(!w)throw new TypeError("setup.apply needs the original plan returned by setup.plan");if(w.consumed)throw so();if(m.refusal)throw _(m.refusal.code==="setup_conflict"?"conflict":"forbidden",m.refusal.message,m.refusal.code);if(m.status==="current"){await p(w.session,b.signal);let g=await c({signal:b.signal});if(await l(g.s,g.review.ticket),g.review.assessment.status!=="current")throw so();return"ready"}w.consumed=!0;for(let g=0;;g++){let y=crypto.randomUUID(),v;try{v=await t.begin(y)}catch(S){throw is(y,S)}if(v!==y)throw is(v);let A=!1,k=!1;try{await p(w.session,b.signal),A=!0;let S=await fp(w.session,"apply",[[2,w.review.ticket],[3,U(y)],[4,w.review.revision],[5,kw(w.review.assessment.assessmentDigest)]],b.signal);if(await n.assertCurrent(),S.kind!=="receipt"||S.receipt.mutation!==y)throw is(y);let x=S.receipt.state==="pending"?await e.awaitReceipt(y,3e4,b.signal):S.receipt;if(await n.assertCurrent(),x.mutation!==y||x.state!=="confirmed"&&x.state!=="rejected")throw is(y);if(k=!0,await t.clear(y),x.state==="rejected"||(x.conflicts?.length??0)>0||x.status!==void 0&&x.status!=="applied")throw so(y,x.problem);let P=await c({signal:b.signal});if(P.review.assessment.status!=="current")throw hp();return await l(P.s,P.review.ticket),"ready"}catch(S){if(!A||k||ty(S)&&S.code!=="outcome_unknown"){if(await t.clear(y),!k&&(ty(S)?S.code==="not_found"||S.code==="conflict":!A&&X(S,"conflict")&&S.reason==="setup_changed")){if(g)throw so(y,S);let P=await c({...w.options,signal:b.signal});try{if(await p(P.s,b.signal),P.review.assessment.status!=="provision"||f(u(P.s,P.review),P.review)!==f(m,w.review))throw so(y,S)}catch(C){throw await l(P.s,P.review.ticket),C}w={...w,session:P.s,review:P.review};continue}throw new se((X(S)?S:so()).toProblem(),{mutationId:y,cause:S})}throw is(y,S)}}})}};return Object.freeze(h)}var so,is,hp,MC=I(()=>{"use strict";re();ge();Ll();ro();xh();Uf();qC();so=(n,e)=>new se(_("conflict","This collection changed since setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e?{cause:e}:{}}),is=(n,e)=>new se(_("outcome_unknown","Reconcile the original setup before trying again.","setup_outcome_unknown").toProblem(),{mutationId:n,...e?{cause:e}:{}}),hp=()=>_("unavailable","Native setup is unavailable.","resource_setup_unavailable")});function jC(n){let e=new Uint8Array([...n.aad,...new TextEncoder().encode("\0declared-setup-attempt-v1")]),t=()=>_("unavailable","Protected Native setup attempt storage is unavailable.","grant_storage");async function i(){let s=await n.grant();await n.assertCurrent(s);let r=await n.store();if(!r.getSetupAttempt||!r.putSetupAttemptIfAbsent||!r.deleteSetupAttempt)throw t();return{grant:s,store:r}}async function o(s,r){let a;try{if(s.length<29||s.length>2048)throw t();a=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:s.slice(0,12),additionalData:e},r.refreshKey,s.slice(12)));let p=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(a)),l=Array.from(r.noisePublicKey,c=>c.toString(16).padStart(2,"0")).join("");if(p.version!==1||!LC.test(p.mid)||p.noise!==l||Object.keys(p).sort().join(",")!=="mid,noise,version")throw t();return await n.assertCurrent(r),p.mid}catch{throw t()}finally{a?.fill(0)}}return{async load(){let{grant:s,store:r}=await i(),a=await r.getSetupAttempt(s.collection);return await n.assertCurrent(s),a?o(a,s):void 0},async begin(s){if(!LC.test(s))throw t();let{grant:r,store:a}=await i(),p=crypto.getRandomValues(new Uint8Array(12)),l=new TextEncoder().encode(JSON.stringify({version:1,mid:s,noise:Array.from(r.noisePublicKey,u=>u.toString(16).padStart(2,"0")).join("")})),c;try{c=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:p,additionalData:e},r.refreshKey,l))}finally{l.fill(0)}await n.assertCurrent(r);let d=await a.putSetupAttemptIfAbsent(r.collection,new Uint8Array([...p,...c]));return o(d,r)},async clear(s){let{grant:r,store:a}=await i(),p=await a.getSetupAttempt(r.collection);p&&await o(p,r)===s&&(await n.assertCurrent(r),await a.deleteSetupAttempt(r.collection,p))}}}var LC,NC=I(()=>{"use strict";re();LC=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/});function mp(){throw _("unauthenticated","the stored grant belongs to another app","grant_storage")}function UC(n,e,t={}){let i=globalThis.indexedDB;if(!i)throw _("unavailable","IndexedDB is not available here","grant_storage");let o=t.owner;if(o!==void 0&&!Ko(o))throw _("invalid_request","invalid grant store owner","grant_storage");let s=o===void 0?`mdbase.app-grants.v1.${encodeURIComponent(n)}.${e}`:`mdbase.app-grants.v2.${encodeURIComponent(n)}.${encodeURIComponent(o)}.${e}`,r=h=>h===void 0||o===void 0||h.owner===o?h:mp(),a=h=>o===void 0||h===void 0||h.owner===o,p=h=>o===void 0?h:{...h,owner:o},l=null,c=()=>l??=new Promise((h,m)=>{let b=i.open(s,2);b.onupgradeneeded=()=>{for(let w of[Sw,rs,Xa])b.result.objectStoreNames.contains(w)||b.result.createObjectStore(w)},b.onsuccess=()=>{b.result.onversionchange=()=>{b.result.close(),l=null},h(b.result)},b.onerror=()=>{l=null,m(_("unavailable","grant storage could not be opened","grant_storage"))}}),d=async(h,m,b)=>{let w=await c();return new Promise((g,y)=>{let v=w.transaction([...h],m,{durability:"strict"}),A,k=!1;v.oncomplete=()=>k?g(A):y(_("unavailable","grant storage returned no result","grant_storage")),v.onabort=v.onerror=()=>y(_("unavailable","grant storage transaction failed","grant_storage"));try{b(v,S=>{A=S,k=!0})}catch{try{v.abort()}catch{}}})},u=(h,m,b)=>d([h],m,(w,g)=>b(w.objectStore(h),g)),f=(h,m)=>u(h,"readonly",(b,w)=>{let g=b.get(m);g.onsuccess=()=>w(g.result)});return{getSetupAttempt:async h=>r(await f(Xa,h))?.bytes,putSetupAttemptIfAbsent:async(h,m)=>r(await u(Xa,"readwrite",(b,w)=>{let g=b.get(h);g.onsuccess=()=>{if(g.result!==void 0)return w(g.result);let y=p({bytes:m.slice()});b.add(y,h).onsuccess=()=>w(y)}})).bytes,deleteSetupAttempt:async(h,m)=>{await u(Xa,"readwrite",(w,g)=>{let y=w.get(h);y.onsuccess=()=>{if(!a(y.result))return g("refused");let v=y.result?.bytes;if(!v||v.length!==m.length||!v.every((A,k)=>A===m[k]))return g("done");w.delete(h).onsuccess=()=>g("done")}})==="refused"&&mp()},getIdentity:async()=>r(await f(Sw,"installation")),putIdentityIfAbsent:async h=>r(await u(Sw,"readwrite",(m,b)=>{let w=m.get("installation");w.onsuccess=()=>{if(w.result!==void 0)return b(w.result);let g=p(h);m.add(g,"installation").onsuccess=()=>b(g)}})),getGrant:async h=>r(await f(rs,h)),listGrants:async()=>(await u(rs,"readonly",(h,m)=>{let b=h.getAll();b.onsuccess=()=>m(b.result)})).map(h=>r(h)),putGrant:async h=>{await u(rs,"readwrite",(b,w)=>{let g=b.get(h.collection);g.onsuccess=()=>{if(!a(g.result))return w("refused");b.put(p(h),h.collection).onsuccess=()=>w("done")}})==="refused"&&mp()},deleteGrant:async h=>{await u(rs,"readwrite",(b,w)=>{let g=b.get(h);g.onsuccess=()=>{if(!a(g.result))return w("refused");b.delete(h).onsuccess=()=>w("done")}})==="refused"&&mp()},clearGrants:async()=>{await d([rs,Xa],"readwrite",(m,b)=>{let w=!1,g=2,y=()=>{--g===0&&b(w?"refused":"done")};for(let v of[rs,Xa]){let A=m.objectStore(v);if(o===void 0){A.clear().onsuccess=y;continue}let k=A.openCursor();k.onsuccess=()=>{let S=k.result;if(!S)return y();a(S.value)?S.delete():w=!0,S.continue()}}})==="refused"&&mp()}}}var Sw,rs,Xa,DC=I(()=>{"use strict";no();re();Sw="identity",rs="grants",Xa="native-setup-attempts"});var WC={};ps(WC,{MdbaseAppGrants:()=>Iw,deliverAppGrantCallback:()=>cM,mergeCollectionEntries:()=>dM});function aM(n){try{let e=Uint8Array.from(atob(n.replaceAll("-","+").replaceAll("_","/")),t=>t.charCodeAt(0));return e.length===32&&sn(e)===n}catch{return!1}}function cM(n){let e=globalThis.BroadcastChannel;if(!e)throw _("unavailable","BroadcastChannel is not available","authorization_callback");let t=new e(VC);t.postMessage({type:"callback",url:String(n)}),t.close()}function pM(){return{subscribe(n){let e=globalThis.BroadcastChannel;if(!e)throw _("unavailable","BroadcastChannel is not available","authorization_callback");let t=new e(VC);return t.onmessage=i=>{let o=i.data;o?.type==="callback"&&typeof o.url=="string"&&n(o.url)},()=>t.close()}}}function dM(n,e){let t=new Map;for(let i of n)t.set(i.collectionId,Object.freeze({collectionId:i.collectionId,displayName:i.displayName,kind:"cloud_copy",availability:i.availability??Object.freeze({state:"available"}),role:i.role}));for(let i of e)t.has(i.collectionId)||t.set(i.collectionId,Object.freeze({collectionId:i.collectionId,displayName:i.displayName,kind:"private",availability:i.availability,role:i.role}));return[...t.values()].sort((i,o)=>i.displayName.localeCompare(o.displayName)||i.collectionId.localeCompare(o.collectionId))}async function Cw(n,e){let t=new Uint8Array(await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},n,e));if(t.length!==64)throw _("internal","unexpected signature length","authorization_signature");let i=0n;for(let s of t.subarray(32))i=i<<8n|BigInt(s);if(i<=$C/2n)return t;let o=$C-i;for(let s=63;s>=32;s--)t[s]=Number(o&0xffn),o>>=8n;return t}async function uM(n,e,t,i){let o=Math.floor(Date.now()/1e3),s=crypto.randomUUID(),r=[xP,Cb,"POST",e,await FC(t),await FC(i),o,s].join(`
130
- `);return{[$c.version]:String(Cb),[$c.timestamp]:String(o),[$c.nonce]:s,[$c.signature]:sn(await Cw(n,new TextEncoder().encode(r)))}}async function Pw(n,e){let t=await crypto.subtle.generateKey({name:e,namedCurve:"P-256"},!1,n);return{privateKey:t.privateKey,publicKey:sn(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey)))}}async function fM(){let n;try{n=await crypto.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{throw _("unavailable","this browser cannot keep a non-extractable X25519 key","browser_unsupported")}if(n.privateKey.extractable)throw _("unavailable","the Noise key must be non-extractable","browser_unsupported");return{privateKey:n.privateKey,publicKey:new Uint8Array(await crypto.subtle.exportKey("raw",n.publicKey))}}function hM(n){return{publicKey:n.noisePublicKey.slice(),dh:async e=>{let t=await crypto.subtle.importKey("raw",e,{name:"X25519"},!1,[]);return new Uint8Array(await crypto.subtle.deriveBits({name:"X25519",public:t},n.noisePrivateKey,256))}}}function mM(n,e){let t=new AbortController,i=()=>t.abort(),o=setTimeout(i,e);return o.unref?.(),n?.addEventListener("abort",i,{once:!0}),n?.aborted&&t.abort(),{signal:t.signal,done:()=>{clearTimeout(o),n?.removeEventListener("abort",i)}}}async function yM(n,e){let t=globalThis.navigator?.locks;if(t)return t.request(n,{mode:"exclusive"},e);let i=Oh.get(n)??Promise.resolve(),o,s=new Promise(r=>{o=r});Oh.set(n,s),await i;try{return await e()}finally{o(),Oh.get(n)===s&&Oh.delete(n)}}var oM,VC,ao,sM,$C,lM,sn,Ih,zC,BC,FC,Rh,Za,xw,Yi,Oh,Iw,KC=I(()=>{"use strict";zc();to();Ta();Pu();Tf();IC();Uf();ge();Nr();re();Xy();Mo();Ls();kd();ec();lu();RC();MC();NC();ey();DC();Nb();oM=new Set(["owner","editor","viewer"]),VC="mdbase.app-grant.v1",ao=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,sM=15e3;$C=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),lM=new TextEncoder().encode("mdbase-next client noise key v1\0");sn=n=>{let e="";for(let t of n)e+=String.fromCharCode(t);return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Ih=n=>crypto.getRandomValues(new Uint8Array(n)),zC=n=>{let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n),e},BC=(...n)=>{let e=new Uint8Array(n.reduce((i,o)=>i+o.length,0)),t=0;for(let i of n)e.set(i,t),t+=i.length;return e};FC=async n=>sn(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n))));Rh=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),Za=(n,e)=>!!e&&n.collection===e.collection&&n.owner===e.owner&&Rh(n.noisePublicKey,e.noisePublicKey),xw=(n,e)=>Za(n,e)&&Rh(n.refresh,e.refresh),Yi=()=>_("cancelled","the stored grant changed during this operation"),Oh=new Map;Iw=class{constructor(e){this.options=e;this.declaration=gr(e.declaration),this.cpOrigin=Qn({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:CC()}).cpOrigin;try{this.redirect=new URL(e.redirectUri)}catch{throw _("invalid_request","redirectUri must be an absolute URL","redirect_uri")}if(this.redirect.origin!==this.declaration.origin||this.redirect.hash)throw _("invalid_request","redirectUri must be on the app's origin, without a fragment","redirect_uri");this.fetcher=e.fetch??globalThis.fetch.bind(globalThis),this.callbacks=e.callbacks??pM(),this.storeValue=e.store??null}options;declaration;cpOrigin;redirect;fetcher;callbacks;storeValue;registration=null;tokens=new Map;refreshing=new Map;forgotten=new Set;epoch=0;register(){let e=this.registration??=Nf({declaration:this.options.declaration,signal:new AbortController().signal,isCurrent:()=>!0,fetch:this.fetcher});return e.catch(()=>{this.registration===e&&(this.registration=null)}),e}ownerValue=null;owner(){return this.ownerValue??=Ik(eo(this.declaration).manifest.id,Su(this.declaration))}async store(){if(this.storeValue)return this.storeValue;let e=this.owner();return this.storeValue=UC(this.cpOrigin,(await this.register()).id,{owner:e})}async identity(){let e=await this.store(),t=await e.getIdentity();if(t)return t;let i=await Pw(["sign"],"ECDSA");return e.putIdentityIfAbsent({version:1,privateKey:i.privateKey,publicKey:i.publicKey})}async request(e,t,i){let o=mM(i,sM);try{let s;try{s=await this.fetcher(`${this.cpOrigin}${e}`,{...t,redirect:"error",signal:o.signal})}catch{throw i?.aborted?_("cancelled","request cancelled"):_("unavailable","cannot reach the control plane","control_unreachable")}let r=null;try{let a=await s.json();a&&typeof a=="object"&&!Array.isArray(a)&&(r=a)}catch{r=null}return{status:s.status,body:r}}finally{o.done()}}async authorize(e){e=Object.freeze({...e});let t=await this.prepareAuthorization(e).catch(i=>{throw e.popup.close(),i});try{e.popup.navigate(t.authorizationUri);let{collectionId:i}=await t.finish(e);return{collectionId:i}}finally{t.cancel();try{e.popup.close()}catch{}}}async prepareAuthorization(e={}){if(e=Object.freeze({...e}),e.collection!==void 0&&!ao.test(e.collection))throw _("invalid_request","collection must be a UUID");if(e.expectedAccountId!==void 0&&(!ao.test(e.expectedAccountId)||!e.authorizationNonce))throw _("invalid_request","original account and challenge required","authorization_binding");if(e.authorizationNonce!==void 0&&(!/^[A-Za-z0-9_-]{43}$/.test(e.authorizationNonce)||!aM(e.authorizationNonce)))throw _("invalid_request","invalid original challenge","authorization_binding");let t=new AbortController,i=e.signal?AbortSignal.any([e.signal,t.signal]):t.signal,o=this.epoch,s=()=>{if(i.aborted)throw _("cancelled","authorization fenced","authorization_cancelled");if(o!==this.epoch)throw Yi()};s();let r=await this.register(),a=eo(this.declaration),p=await this.identity(),l=await Pw(["deriveBits"],"ECDH"),c=await Pw(["sign"],"ECDSA"),d=await fM(),u=sn(Ih(32)),f=sn(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(u)))),h=sn(Ih(24)),m=crypto.randomUUID(),b=new Date,w={protocol_version:mr,authorization_id:m,application_id:r.id,application_declaration_id:String(a.manifest.id),application_manifest_digest:r.manifestDigest,application_installation_id:await _P(p.publicKey),installation_signing_public_key:p.publicKey,grant_agreement_public_key:l.publicKey,grant_signing_public_key:c.publicKey,flow:"authorization_code",authorization_nonce:e.authorizationNonce??sn(Ih(32)),issued_at:b.toISOString(),expires_at:new Date(b.getTime()+10*6e4).toISOString(),redirect_uri:this.redirect.href,state:h,code_challenge:f,contracts:a.contracts,requested_operations:[...a.operations],...a.files?{requested_files:a.files}:{},...e.collection?{collection_id:e.collection}:{}},g={binding:w,signature:sn(await Cw(p.privateKey,AP(w)))},y=BC(lM,zC(16),U(m),zC(32),d.publicKey),v={public_key:sn(d.publicKey),signature:sn(await Cw(c.privateKey,y))};s();let A=await this.request("/oauth/authorization_request",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:r.id,redirect_uri:this.redirect.href,code_challenge:f,code_challenge_method:"S256",state:h,operations:a.operations.join(","),...e.collection?{collection_id:e.collection}:{},application_authorization:JSON.stringify(g),client_noise_key:JSON.stringify(v)})},i);s();let k=A.body?.authorization_uri;if(A.status!==200||A.body?.authorization_id!==m||typeof k!="string"||!k.startsWith(`${this.cpOrigin}/oauth/authorize?`))throw _("unavailable",`authorization could not be started (${A.status})`,"authorization_start");let S=null,x=this.awaitCallback(h,{navigate(){},close(){},get closed(){return S?.closed===!0}},{popup:{navigate(){},close(){}},signal:i,timeoutMs:e.timeoutMs});x.catch(()=>{});let P=!1;return Object.freeze({applicationId:r.id,manifestDigest:r.manifestDigest,authorizationId:m,authorizationUri:k,cancel:()=>t.abort(),finish:async C=>{if(C=Object.freeze({...C}),P)throw _("invalid_request","original authorization already consumed","authorization_binding");P=!0,S=C.popup;let E=()=>t.abort();C.signal?.addEventListener("abort",E,{once:!0}),C.signal?.aborted&&t.abort();try{s();let O=C.collection??e.collection;if(O!==void 0&&!ao.test(O))throw _("invalid_request","invalid approved collection","authorization_binding");if(e.collection&&O!==e.collection)throw _("forbidden","a different collection was approved","collection_mismatch");if(e.expectedAccountId&&!O)throw _("invalid_request","original Private choice required","authorization_binding");let L=await x;s();let z=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:L,client_id:r.id,redirect_uri:this.redirect.href,code_verifier:u})},i);s();let ee=e.expectedAccountId?Bf(z.body,{accountId:e.expectedAccountId,authorizationRequestId:m,applicationId:r.id,declarationId:w.application_declaration_id,manifestDigest:r.manifestDigest,applicationInstallationId:w.application_installation_id,applicationOrigin:this.redirect.origin,collectionId:O,grantSigningPublicKey:c.publicKey,clientNoisePublicKey:sn(d.publicKey)}):void 0,V=await this.saveTokens(z,{noise:d,signing:c.privateKey,collection:O,check:s});return s(),{collectionId:V,...ee?{nativeCompletion:ee}:{}}}finally{C.signal?.removeEventListener("abort",E),t.abort()}}})}awaitCallback(e,t,i){let o=Math.min(Math.max(i.timeoutMs??6e5,1e3),18e5);return new Promise((s,r)=>{let a=null,p=f=>{c(),clearTimeout(d),clearInterval(u),i.signal?.removeEventListener("abort",l),f()},l=()=>p(()=>r(_("cancelled","authorization cancelled","authorization_cancelled"))),c=this.callbacks.subscribe(f=>{let h;try{h=new URL(f)}catch{return}if(h.origin!==this.redirect.origin||h.pathname!==this.redirect.pathname||h.searchParams.get("state")!==e)return;if(h.searchParams.get("error"))return p(()=>r(_("forbidden","access was not approved","authorization_denied")));let b=h.searchParams.get("code");if(!b)return p(()=>r(_("unavailable","the authorization callback has no code","authorization_callback")));p(()=>s(b))}),d=setTimeout(()=>p(()=>r(_("cancelled","authorization timed out","authorization_timed_out"))),o),u=setInterval(()=>{let f=!1;try{f=t.closed===!0}catch{f=!1}if(!f){a=null;return}a??=Date.now(),Date.now()-a>=3e3&&p(()=>r(_("cancelled","the authorization window was closed","authorization_cancelled")))},500);i.signal?.addEventListener("abort",l,{once:!0}),i.signal?.aborted&&l()})}async saveTokens(e,t){let i=e.body;if(e.status!==200||!i)throw e.status===400&&i&&typeof i.error=="string"&&i.error==="invalid_grant"?_("unauthenticated","the grant is no longer valid","grant_invalid"):e.status===400?hn("sync_required"):_("unavailable",`token request failed (${e.status})`,"token_error");let o=i.access_token,s=i.refresh_token,r=i.collection_id,a=i.expires_in,p=i.refresh_expires_in;if(typeof o!="string"||typeof s!="string"||typeof r!="string"||!ao.test(r)||typeof a!="number"||!(a>0)||typeof p!="number"||!(p>0))throw _("unavailable","invalid token response","token_response");let l=r.toLowerCase();if(t.collection&&t.collection.toLowerCase()!==l)throw _("forbidden","a different collection was approved","collection_mismatch");if(t.previous&&t.previous.collection!==l)throw _("unavailable","the token names another collection","token_response");let c=t.previous?.refreshKey??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),d=Ih(12),u=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:d,additionalData:this.aad(l)},c,new TextEncoder().encode(s))),f=t.noise??{privateKey:t.previous.noisePrivateKey,publicKey:t.previous.noisePublicKey},h=t.signing??t.previous?.signingPrivateKey,m={version:1,collection:l,noisePrivateKey:f.privateKey,noisePublicKey:f.publicKey,refreshKey:c,refresh:BC(d,u),refreshExpiresAt:Date.now()+p*1e3,...h?{signingPrivateKey:h}:{},...t.previous?.owner?{owner:t.previous.owner}:{}},b=this.epoch;return await this.withLock(l,"commit",async()=>{let w=await this.store();if(b!==this.epoch||t.previous&&!xw(t.previous,await w.getGrant(l)))throw Yi();t.check?.(),await w.putGrant(m);let g=await w.getGrant(l);if(!g||!Rh(m.noisePublicKey,g.noisePublicKey)||!Rh(m.refresh,g.refresh))throw Yi();t.check?.(),this.tokens.set(l,{access:o,expiresAt:Date.now()+a*1e3,collection:l,owner:g.owner,noisePublicKey:g.noisePublicKey.slice()}),this.forgotten.delete(l)}),l}aad(e){return new TextEncoder().encode(`mdbase.app-grant.v2\0${this.cpOrigin}\0${this.owner()}\0${e}`)}async accessToken(e,t=!1){let i=await this.heldGrant(e),o=this.tokens.get(e);if(!t&&o&&Za(i,o)&&o.expiresAt-Date.now()>6e4)return o.access;let s=this.refreshing.get(e);if(s&&xw(i,s.grant)){let p=await s.work;return await this.assertCurrent(i),p}let r=this.withLock(e,"refresh",async()=>{let p=await this.assertCurrent(i);return this.refresh(e,p)}),a={grant:i,work:r};this.refreshing.set(e,a);try{let p=await r;return await this.assertCurrent(i),p}finally{this.refreshing.get(e)===a&&this.refreshing.delete(e)}}withLock(e,t,i){return yM(`mdbase.app-grant.${t}:${JSON.stringify([this.cpOrigin,this.owner(),e])}`,i)}async heldGrant(e){let t=await(await this.store()).getGrant(e);if(!t)throw hn("sync_required");return{...t,noisePublicKey:t.noisePublicKey.slice(),refresh:t.refresh.slice()}}async assertCurrent(e){let t=await(await this.store()).getGrant(e.collection);if(!Za(e,t))throw Yi();return t}async refresh(e,t){if(t.refreshExpiresAt<=Date.now())throw hn("sync_required");let i;try{let p=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.refresh.slice(0,12),additionalData:this.aad(e)},t.refreshKey,t.refresh.slice(12));i=new TextDecoder().decode(p)}catch{throw _("unauthenticated","the stored grant could not be read","grant_storage")}let o=await this.register(),s=new URLSearchParams({grant_type:"refresh_token",refresh_token:i,client_id:o.id}),r=t.signingPrivateKey?await uM(t.signingPrivateKey,"/oauth/token",s.toString(),i):{},a=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",...r},body:s});try{await this.saveTokens(a,{previous:t})}catch(p){throw X(p,"unauthenticated")&&p.reason==="grant_invalid"&&await this.withLock(e,"commit",async()=>{let l=await this.store();if(!xw(t,await l.getGrant(e)))throw Yi();await l.deleteGrant(e),this.forgotten.add(e);let c=this.tokens.get(e);c&&Za(t,c)&&this.tokens.delete(e)}),p}return a.body.access_token}async route(e,t){for(let i=0;;i++){let o=await this.accessToken(e,i>0),s=await this.request(`/v1/next/collections/${encodeURIComponent(e)}/route`,{headers:{authorization:`Bearer ${o}`}},t);if(s.status===401&&i===0)continue;if(s.status===401)throw _("unauthenticated","the control plane refused the access token");if(s.status===409)throw _("unauthenticated","this app's key is not registered with its grant","client_key_required");if(s.status!==200||!s.body)throw _("unavailable",`control plane answered ${s.status}`,"control_error");let r=s.body;if(typeof r.collection!="string"||r.collection.toLowerCase()!==e||!Array.isArray(r.targets))throw _("unauthenticated","the route does not match this collection's grant","route_mismatch");let p=Fn(r.availability)??(Us(r,null).length?{state:"available"}:{state:"unavailable",reason:r.reason==="no_device_registered"?"no_device_registered":"device_offline"});return{token:o,route:r,availability:p}}}async verifiedStoredNativeGrant(e){let t=await this.register(),i=await(await this.store()).getGrant(e.collection_id);return!!i&&e.application_id===t.id&&e.application_origin===this.declaration.origin&&i.owner===this.owner()&&sn(i.noisePublicKey)===e.client_noise_public_key}async collections(e={}){let t=await(await this.store()).listGrants(),i=[];for(let s of t)(e.bindings===void 0||e.bindings.some(r=>r.collection_id===s.collection&&r.application_origin===this.declaration.origin&&sn(s.noisePublicKey)===r.client_noise_public_key))&&i.push(s);let o=new Set(i.map(s=>s.collection));for(let s of i){let r;try{r=await this.accessToken(s.collection)}catch(l){if(X(l)&&(l.code==="unauthenticated"&&l.reason==="grant_invalid"||l.code==="forbidden"&&l.reason==="sync_required"))continue;throw l}await this.assertCurrent(s);let a=await this.request("/v1/next/apps/collections",{headers:{authorization:`Bearer ${r}`}},e.signal);if(await this.assertCurrent(s),a.status===401)throw await this.withLock(s.collection,"commit",async()=>{await this.assertCurrent(s);let l=this.tokens.get(s.collection);if(l?.access!==r||!Za(s,l))throw Yi();this.tokens.delete(s.collection)}),_("unauthenticated","the control plane refused the collection listing token");if(a.status!==200||!Array.isArray(a.body?.collections))throw _("unavailable",`control plane answered ${a.status}`,"control_error");let p=[];for(let l of a.body.collections){let c=typeof l.collection=="string"?l.collection.toLowerCase():"";if(!ao.test(c)||p.some(f=>f.collectionId===c))continue;let d=Fn(l.availability);if(l.state!=="synced_e2e"&&!d)continue;let u=o.has(c)?d??{state:"opening"}:{state:"unavailable",reason:"sync_required"};p.push(Object.freeze({collectionId:c,displayName:typeof l.name=="string"?l.name:"Collection",operations:Object.freeze(Array.isArray(l.operations)?l.operations.filter(f=>typeof f=="string"):[]),availability:Object.freeze(u),role:oM.has(l.role)?l.role:null}))}return p}return[]}async availability(e,t={}){let i=e.toLowerCase();try{return(await this.route(i,t.signal)).availability}catch(o){if(X(o)&&o.details instanceof Map&&typeof o.details.get("availability")=="string")return Fn({state:"unavailable",reason:o.details.get("availability")});throw o}}async waitForAvailable(e,t={}){let i=Date.now()+Math.min(Math.max(t.timeoutMs??6e4,0),6e5),o=Math.max(t.intervalMs??3e3,1e3),s=null;for(;;){if(t.signal?.aborted)throw _("cancelled","wait cancelled");let r=await this.availability(e,t.signal?{signal:t.signal}:{});if((!s||r.state!==s.state||r.state==="unavailable"&&s.state==="unavailable"&&r.reason!==s.reason)&&t.onAvailability?.(r),s=r,r.state==="available"||r.state==="unavailable"&&(r.reason==="sync_required"||r.reason==="access_removed"))return r;let a=i-Date.now();if(a<=0)return r;await new Promise(p=>{let l=setTimeout(c,Math.min(o,a));function c(){clearTimeout(l),t.signal?.removeEventListener("abort",c),p()}t.signal?.addEventListener("abort",c,{once:!0})})}}connector(e){let t=e.toLowerCase();if(!ao.test(t))throw _("invalid_request","collection must be a UUID");let i=null,o=this.options.webSocket,s;return Ad({description:`app-grant:${t}`,open:async(r,a)=>{let p=await(s??=this.heldGrant(t));await this.assertCurrent(p);let c=await Li({description:`app-grant:${t}`,staticKey:hM(p),target:async d=>{await this.assertCurrent(p);let{token:u,route:f,availability:h}=await this.route(t,d);if(await this.assertCurrent(p),h.state==="unavailable")throw hn(h.reason);if(!ao.test(f.grant))throw _("unauthenticated","the route names no grant","route_mismatch");let m=Us(f,i)[0];if(!m)throw hn("device_offline");let b=new Uint8Array(32);for(let w=0;w<32;w++)b[w]=parseInt(m.noise_pk.slice(2*w,2*w+2),16);return{prologue:Mi(U(m.relay_collection),U(f.grant),U(m.device)),remoteStatic:b,device:m.device,openCarrier:async w=>{await this.assertCurrent(p);let g=await js(m.url,{accessToken:u,collection:m.relay_collection,grant:f.grant,device:m.device,devicePublicKey:b},o,w);try{return await this.assertCurrent(p),g}catch(y){throw g.close(),y}}}}}).open(r,a);try{await this.assertCurrent(p)}catch(d){throw c.port.close(),d}return q_(c.port,p),i=c.device??null,c},get target(){return i}})}people(e,t){let i=e.toLowerCase();if(!ao.test(i))throw _("invalid_request","collection must be a UUID");return new Ur(t,OC(i,{cpOrigin:this.cpOrigin,fetch:this.fetcher,accessToken:(o,s)=>this.accessToken(o,s),holds:o=>!this.forgotten.has(o)}))}setup(e){let t=eo(this.declaration),i,o=async()=>{let r=e.currentSession(),a=r&&M_(r);if(!a||a.collection!==e.collection||(i??=a,!Za(i,a)))throw Yi();return i};return TC({assertCurrent:async()=>this.assertCurrent(await o()),journal:jC({store:()=>this.store(),grant:o,assertCurrent:r=>this.assertCurrent(r),aad:this.aad(e.collection)}),client:e,manifest:t.manifest,operations:t.operations})}async forget(e,t={}){let i=e.toLowerCase(),o=t.expectedNoisePublicKey;await this.withLock(i,"commit",async()=>{let s=await this.store(),r=await s.getGrant(i);if(o!==void 0&&r&&sn(r.noisePublicKey)!==o)throw Yi();await s.deleteGrant(i),this.forgotten.add(i),this.tokens.delete(i)})}async forgetAllGrants(){this.epoch++;let e=await this.store(),t=[];try{t=(await e.listGrants()).map(o=>o.collection).sort()}catch{}for(let o of t)this.forgotten.add(o);let i=async(o,s)=>o.length?this.withLock(o[0],"commit",()=>i(o.slice(1),s)):s();await i(t,async()=>{if(this.tokens.clear(),typeof e.clearGrants=="function"){await e.clearGrants();return}for(let o of await e.listGrants())await e.deleteGrant(o.collection),this.forgotten.add(o.collection);if((await e.listGrants()).length)throw _("unavailable","grant storage could not be cleared","grant_storage")}),this.tokens.clear()}}});function JC(n){let e=0,t=0;try{let i=n?.records.status.pending;e=typeof i=="number"&&i>0?i:0}catch{e=0}try{t=n?.records.ledger?.getSnapshot().pending.length??0}catch{t=0}return Math.max(e,t)}function XC(n=0){let e=n===1?"1 change hasn't":n>1?`${n} changes haven't`:"Some changes haven't";return _("conflict",`${e} reached mdbase yet. Wait for them to finish, or sign out anyway and lose them on this device.`,{reason:"sign_out_pending_writes",details:n})}var ZC=I(()=>{"use strict";re()});function yp(n,e){return new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})})}var Ow=I(()=>{"use strict"});function Th(n,e){if(typeof n!="string"||!e.test(n))throw de("invalid_request","timer_input");return encodeURIComponent(n)}function co(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw de("invalid_request","timer_input");return n}function QC(n){let e=co(n,"id,fire_at");if(Th(e.id,Rw),typeof e.fire_at!="string"||!/^\d{4}-\d{2}-\d{2}T/.test(e.fire_at)||!Number.isFinite(Date.parse(e.fire_at)))throw de("invalid_request","timer_input");return{id:e.id,fire_at:e.fire_at}}function Ew(n){if(typeof n!="string"||!n.length||n.length>100)throw de("invalid_request","timer_input")}function SM(n,e,t){let i=`${n}/${Th(t[0],kM)}`;if(e==="list"&&t.length===1)return{path:i,method:"GET",write:!1};if(e==="put"&&t.length===3){let o=co(t[2],"criterion_id,fire_at");return Ew(o.criterion_id),QC({id:t[1],fire_at:o.fire_at}),{path:`${i}/${Th(t[1],Rw)}`,method:"PUT",body:o,write:!0}}if(e==="cancel"&&t.length===3){let o=t[2];if(o!==void 0&&(!Number.isSafeInteger(o)||o<1))throw de("invalid_request","timer_input");return{path:`${i}/${Th(t[1],Rw)}${o===void 0?"":`?generation=${o}`}`,method:"DELETE",write:!0}}if((e==="reconcile"||e==="reconcileWithReceipt")&&t.length===2){let o=co(t[1],`criterion_id,timers${e==="reconcileWithReceipt"?",recovery":""}`);if(Ew(o.criterion_id),!Array.isArray(o.timers)||o.timers.length>1e4)throw de("invalid_request","timer_input");let s=o.timers.map(QC);if(new Set(s.map(r=>r.id)).size!==s.length)throw de("invalid_request","timer_input");if(e==="reconcileWithReceipt"){let r=co(o.recovery,"protocol_version,operation_id,expected_revision");if(r.protocol_version!==1||typeof r.operation_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(r.operation_id)||!Number.isSafeInteger(r.expected_revision)||r.expected_revision<0||r.expected_revision>=Number.MAX_SAFE_INTEGER)throw de("invalid_request","timer_input")}return{path:`${i}/reconcile`,method:"POST",body:{...o,timers:s},write:!0}}if(e==="lookupOperation"&&t.length===2&&typeof t[1]=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(t[1]))return{path:`${i}/operations/${t[1]}`,method:"GET",write:!1};throw de("invalid_request","timer_input")}function tI(n,e){let t=eI(e.scope),i=e.generation,o=`/v1/next/collections/${e.scope.collection}/background-grants/${e.grantId}/timers`,s=!1,r=0,a=null,p=null,l=()=>{if(s||e.signal.aborted||!e.isCurrent())throw de("unauthenticated","timer_fenced")},c=()=>{if(p)return p;s=!0,e.signal.removeEventListener("abort",d),a?.ctrl.abort();try{n.postMessage([1,t,i,"close"])}finally{n.removeEventListener("message",u),n.close()}return p=Promise.resolve().then(async()=>{await a?.work})},d=()=>{c()},u=f=>{let h=f.data;if(!Array.isArray(h)||h[0]!==1||h[1]!==t||h[2]!==i){c();return}if(h.length===4&&h[3]==="close"){c();return}if(h.length===5&&h[4]==="cancel"&&Number.isSafeInteger(h[3])&&h[3]>0){a&&a.id===h[3]&&a.ctrl.abort();return}if(h.length!==6||!Number.isSafeInteger(h[3])||h[3]<=r||a||typeof h[4]!="string"||!Array.isArray(h[5])){c();return}let m=h[3],b=h[4],w=h[5],g=new AbortController;r=m;let y=!1,v=b!=="list"&&b!=="lookupOperation",A=Promise.resolve().then(async()=>{let k=setTimeout(()=>g.abort(),1e4),S,x,P=new Uint8Array(gp),C=0,E=()=>{x?.cancel().catch(()=>{})};g.signal.addEventListener("abort",E,{once:!0});try{l(),g.signal.throwIfAborted();let O=o.slice(0,-7)+"/notifications/channels",L,z,ee=null;if(b==="vapid"&&w.length===0){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");e.journal.read(),L={path:"/v1/notifications/vapid-public-key",method:"GET",write:!1}}else if(b==="registerChannel"&&w.length===1){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");let Y=w[0],te=co(Y,`kind,criteria,${Y?.kind==="web_push"?"subscription":"token"}`);if(!["web_push","fcm"].includes(te.kind)||!Array.isArray(te.criteria)||!te.criteria.length||te.criteria.length>100||(te.criteria.forEach(Ew),new Set(te.criteria).size!==te.criteria.length))throw de("invalid_request","timer_input");let ze;if(te.kind==="fcm"){if(typeof te.token!="string"||te.token.length<16||te.token.length>4096||/[\s\u0000-\u001f\u007f]/.test(te.token))throw de("invalid_request","timer_input");ze={transport:"fcm",token:te.token}}else{let $=co(te.subscription,"endpoint,expirationTime,keys"),J=co($.keys,"p256dh,auth");if(typeof $.endpoint!="string"||$.endpoint.length>2048||typeof J.p256dh!="string"||typeof J.auth!="string"||!/^[A-Za-z0-9_-]{87}$/.test(J.p256dh)||!/^[A-Za-z0-9_-]{22}$/.test(J.auth))throw de("invalid_request","timer_input");let be;try{be=new URL($.endpoint)}catch{throw de("invalid_request","timer_input")}if(be.protocol!=="https:"||be.username||be.password||be.hash||be.href!==$.endpoint||$.expirationTime!==null&&(!Number.isFinite($.expirationTime)||$.expirationTime<0))throw de("invalid_request","timer_input");ze={subscription:$}}L={path:O,method:"POST",write:!0,body:{installation_id:e.scope.installation,criteria:[...te.criteria].sort(),...ze}};let mt=new TextEncoder().encode(JSON.stringify(L.body)),j;try{j=[...new Uint8Array(await crypto.subtle.digest("SHA-256",mt))].map($=>$.toString(16).padStart(2,"0")).join("")}finally{mt.fill(0)}l(),g.signal.throwIfAborted();let K=e.journal.read();if(ee=K,K?.pending)throw de("outcome_unknown","timer_channel_reapproval_required");z={grantId:e.grantId,kind:te.kind,targetDigest:j,channelId:K?.channelId??null,pending:"register"}}else if(b==="unregisterChannel"&&w.length===1&&["web_push","fcm"].includes(w[0])){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");let Y=e.journal.read();if(ee=Y,!Y){n.postMessage([1,t,i,m,!0,void 0]);return}if(Y.pending==="register")throw de("outcome_unknown","timer_channel_reapproval_required");if(Y.kind!==w[0]||!Y.channelId)throw de("invalid_request","timer_channel_kind");z={...Y,pending:"delete"},L={path:`${O}/${Y.channelId}`,method:"DELETE",write:!0}}else L=SM(o,b,w);v=L.write;let V=L.body===void 0?void 0:JSON.stringify(L.body);if(V&&new TextEncoder().encode(V).length>gp)throw de("invalid_request","timer_input");let ne=await e.bearer();if(l(),g.signal.throwIfAborted(),typeof ne!="string"||!/^(idev_|ct_)[A-Za-z0-9_-]{43}$/.test(ne))throw de("unauthenticated","timer_credential");z&&(await e.journal.write(z),l(),g.signal.throwIfAborted()),y=v;let G=e.fetch;if(S=await G(`${e.cpOrigin}${L.path}`,{method:L.method,body:V,headers:{authorization:`Bearer ${ne}`,...V===void 0?{}:{"content-type":"application/json"}},credentials:"omit",redirect:"error",cache:L.method==="GET"?"no-store":"default",referrerPolicy:"no-referrer",signal:g.signal}),l(),g.signal.throwIfAborted(),S.redirected)throw de("unavailable","timer_response");if(b==="unregisterChannel"&&S.status===204){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(S.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"||!S.body)throw de("unavailable","timer_response");let W=S.headers.get("content-length");if(W&&/^\d+$/.test(W)&&Number(W)>gp)throw de("unavailable","timer_response");for(x=S.body.getReader();;){let Y=await x.read();try{if(l(),g.signal.throwIfAborted(),Y.done)break;if(C+Y.value.length>gp)throw de("unavailable","timer_response");P.set(Y.value,C),C+=Y.value.length}finally{Y.value?.fill(0)}}let Z=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,C)));if(b==="unregisterChannel"&&S.status===404&&Z?.error?.code==="channel_not_found"){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(!S.ok)throw S.status>=500?de("unavailable","timer_http"):Z?.error?.operation_outcome==="unknown"?de("outcome_unknown","timer_write_unknown"):(z&&(await e.journal.write(ee),l(),g.signal.throwIfAborted()),y=!1,_(S.status===401||S.status===403?"unauthenticated":S.status===409?"conflict":S.status===404?"upgrade_required":S.status===429?"rate_limited":"invalid_request","Native timer request was refused.","timer_refused"));if(l(),g.signal.throwIfAborted(),b==="registerChannel"){if(typeof Z?.channel_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(Z.channel_id))throw de("unavailable","timer_channel_response");await e.journal.write({...z,channelId:Z.channel_id,pending:null}),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,{channelId:Z.channel_id,installationId:e.scope.installation,criteria:L.body.criteria}])}else n.postMessage([1,t,i,m,!0,Z])}catch(O){let L=y?de("outcome_unknown","timer_write_unknown"):O instanceof se?O:de(g.signal.aborted?"cancelled":"unavailable","timer_request");s||n.postMessage([1,t,i,m,!1,L.code,L.reason])}finally{clearTimeout(k),g.signal.removeEventListener("abort",E),P.fill(0),(x?.cancel()??S?.body?.cancel())?.catch(()=>{}),x?.releaseLock(),a?.id===m&&(a=null)}});a={id:m,ctrl:g,work:A}};n.addEventListener("message",u),n.start(),e.signal.addEventListener("abort",d,{once:!0});try{l()}catch(f){throw c(),f}return Object.freeze({close:c})}function nI(n,e,t){let i=eI(e.scope),o=e.generation,s=!1,r=0,a=null,p=()=>{if(s)return;s=!0,t.signal.removeEventListener("abort",p);let y=a;a=null,y?.signal?.removeEventListener("abort",y.abort),y?.reject(de(y.write?"outcome_unknown":"cancelled","timer_port_closed"));try{n.postMessage([1,i,o,"close"])}finally{n.removeEventListener("message",l),n.close(),t.onClose()}},l=y=>{let v=y.data;if(!Array.isArray(v)||v[0]!==1||v[1]!==i||v[2]!==o){p();return}if(v.length===4&&v[3]==="close"){p();return}let A=a;if(!A||v[3]!==A.id||!(v.length===6&&v[4]===!0||v.length===7&&v[4]===!1&&typeof v[5]=="string"&&xr(v[5]))){p();return}a=null,A.signal?.removeEventListener("abort",A.abort),v[4]?A.resolve(v[5]):A.reject(_(v[5],"Native timer request could not complete.",typeof v[6]=="string"?v[6]:void 0))},c=(y,v,A,k=!1)=>{if(s||t.signal.aborted||A.signal?.aborted)return Promise.reject(de("cancelled","timer_port_closed"));if(a||d&&!k)return Promise.reject(de("unavailable","timer_port_busy"));if(r>=Number.MAX_SAFE_INTEGER)return p(),Promise.reject(de("unavailable","timer_port_closed"));let S=++r,x=y!=="list"&&y!=="lookupOperation"&&y!=="vapid";return new Promise((P,C)=>{let E=()=>{try{n.postMessage([1,i,o,S,"cancel"])}catch{p()}C(de(x?"outcome_unknown":"cancelled","timer_request_cancelled"))};a={id:S,write:x,resolve:P,reject:C,abort:E,signal:A.signal},A.signal?.addEventListener("abort",E,{once:!0});try{if(new TextEncoder().encode(JSON.stringify(v)).length>gp)throw de("invalid_request","timer_input");n.postMessage([1,i,o,S,y,v])}catch(O){a=null,A.signal?.removeEventListener("abort",E),C(O)}})},d=!1,u=()=>{if(s||t.signal.aborted)throw de("cancelled","timer_port_closed")},f=y=>{if(!y?.length||y.length>100||y.some(v=>typeof v!="string"||!v.length||v.length>100)||new Set(y).size!==y.length)throw de("invalid_request","timer_channel_criteria_required");return[...y].sort()},h=(y,v)=>{let A=co(y,"channelId,installationId,criteria");if(typeof A.channelId!="string"||A.installationId!==e.scope.installation||JSON.stringify(A.criteria)!==JSON.stringify(v))throw de("outcome_unknown","timer_channel_response");return{channelId:A.channelId,installationId:e.scope.installation,criteria:[...v]}},m=async(y,v)=>{if(u(),y.signal?.throwIfAborted(),d||a)throw de("unavailable","timer_port_busy");d=!0;try{return await v()}finally{d=!1}},b=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw de("invalid_request","timer_channel_installation");let A=y.serviceWorker;if(!A?.pushManager||typeof A.pushManager.getSubscription!="function"||typeof A.pushManager.subscribe!="function")throw de("invalid_request","timer_push_platform");let k=await c("vapid",[],y,!0);if(u(),y.signal?.throwIfAborted(),typeof k.public_key!="string"||!/^[A-Za-z0-9_-]{87}$/.test(k.public_key))throw de("unavailable","timer_vapid_response");let S=atob(k.public_key.replace(/-/g,"+").replace(/_/g,"/")),x=Uint8Array.from(S,E=>E.charCodeAt(0));if(x.length!==65||x[0]!==4||btoa(S).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")!==k.public_key)throw de("unavailable","timer_vapid_response");let P=await A.pushManager.getSubscription();if(u(),y.signal?.throwIfAborted(),P){let E=P.options.applicationServerKey;if(!E||E.byteLength!==x.length||new Uint8Array(E).some((O,L)=>O!==x[L]))throw de("invalid_request","timer_push_key_changed")}if(!P&&(P=await A.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:x}),s||t.signal.aborted||y.signal?.aborted))throw await P.unsubscribe(),de("cancelled","timer_port_closed");let C=P.toJSON();return h(await c("registerChannel",[{kind:"web_push",criteria:v,subscription:{endpoint:C.endpoint,expirationTime:C.expirationTime??null,keys:C.keys}}],y,!0),v)}),w=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw de("invalid_request","timer_channel_installation");return{...h(await c("registerChannel",[{kind:"fcm",criteria:v,token:y.token}],y,!0),v),transport:"fcm"}}),g=(y,v)=>m(v,async()=>{if(await c("unregisterChannel",["web_push"],v,!0),u(),v.signal?.throwIfAborted(),y){let A=await y.pushManager.getSubscription();u(),v.signal?.throwIfAborted(),A&&await A.unsubscribe(),u(),v.signal?.throwIfAborted()}});return n.addEventListener("message",l),n.start(),t.signal.addEventListener("abort",p,{once:!0}),t.signal.aborted&&p(),Object.freeze({list:(y,v)=>c("list",[y],v),put:(y,v,A,k)=>c("put",[y,v,A],k),cancel:(y,v,A,k)=>c("cancel",[y,v,A],k),reconcile:(y,v,A)=>c("reconcile",[y,v],A),reconcileWithReceipt:(y,v,A)=>c("reconcileWithReceipt",[y,v],A),lookupOperation:(y,v,A)=>c("lookupOperation",[y,v],A),registerWebPush:b,unregisterWebPush:g,registerFcm:w,unregisterFcm:y=>m(y,async()=>{await c("unregisterChannel",["fcm"],y,!0)}),close:p})}var kM,Rw,gp,de,eI,qw=I(()=>{"use strict";re();kM=/^[A-Za-z0-9._-]{1,64}$/,Rw=/^[A-Za-z0-9._:-]{1,128}$/,gp=2*1024*1024,de=(n,e)=>_(n,"Native timer request could not complete.",e),eI=n=>JSON.stringify([n.account,n.installation,n.collection])});var el,PM,xM,po,an,tl,Mh=I(()=>{"use strict";el="original-join",PM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,xM="00000000-0000-0000-0000-000000000000",po=class extends Error{constructor(t){super(`app collection join: ${t}`);this.reason=t;this.name="AppCollectionJoinError"}reason},an=(n="recovery_required")=>new po(n),tl=class{options;key;busy=!1;constructor(e){let t=Object.freeze({account:e.scope.account,installation:e.scope.installation,collection:e.scope.collection});if(Object.values(t).some(i=>typeof i!="string"||!PM.test(i)||i===xM)||typeof e.databaseName!="string"||!e.databaseName.length||e.databaseName.length>256||/[\u0000-\u001f\u007f]/.test(e.databaseName)||typeof e.isCurrent!="function")throw an("binding");this.options=Object.freeze({databaseName:e.databaseName,scope:t,isCurrent:e.isCurrent}),this.key=JSON.stringify([t.account,t.installation,t.collection])}check(e){if(e.aborted||this.options.isCurrent()!==!0)throw an("fenced")}marker(e){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).sort().join()!=="account,collection,installation,phase,version")throw an();let t=e;if(t.version!==1||t.phase!=="attempted"&&t.phase!=="completed"||Object.entries(this.options.scope).some(([i,o])=>t[i]!==o))throw an();return t}open(e){if(this.check(e),!globalThis.indexedDB)throw an();return new Promise((t,i)=>{let o=indexedDB.open(this.options.databaseName,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(an())};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(this.check(e),s||o.result.objectStoreNames.length)throw an();o.result.createObjectStore(el)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{r();try{if(this.check(e),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(el))throw an();t(o.result)}catch{o.result.close(),i(an())}}})}async change(e,t){if(this.check(t),this.busy)throw an("busy");this.busy=!0;let i=null;try{return i=await this.open(t),this.check(t),await new Promise((o,s)=>{this.check(t);let r=i.transaction(el,"readwrite",{durability:"strict"}),a=null,p,l=()=>{try{r.abort()}catch{}},c=()=>t.removeEventListener("abort",l);t.addEventListener("abort",l,{once:!0}),r.onabort=r.onerror=()=>{c(),s(p??an())},r.oncomplete=()=>{c();try{if(this.check(t),!a)throw an();o(Object.freeze(a))}catch{s(an())}};let d=r.objectStore(el),u=d.get(this.key);u.onsuccess=()=>{try{this.check(t);let f=u.result;if(f===void 0){if(e!=="prepare")throw an();d.add({version:1,...this.options.scope,phase:"attempted"},this.key),a={outcomeMode:"fresh",phase:"attempted"}}else{let h=this.marker(f);e==="complete"&&h.phase!=="completed"&&d.put({...h,phase:"completed"},this.key),a={outcomeMode:"existing",phase:e==="complete"?"completed":h.phase}}}catch(f){p=f,l()}}})}catch(o){throw o instanceof po?o:an()}finally{i?.close(),this.busy=!1}}prepare(e){return this.change("prepare",e.signal)}async syncedBefore(e){return await this.synced("read",e.signal)===!0}async markSynced(e){await this.synced("mark",e.signal)}async synced(e,t){let i=null;try{i=await this.open(t),this.check(t);let o=JSON.stringify([this.options.scope.account,this.options.scope.installation,this.options.scope.collection,"synced"]);return await new Promise(s=>{let r=i.transaction(el,e==="mark"?"readwrite":"readonly"),a=!1;r.onabort=r.onerror=()=>s(!1),r.oncomplete=()=>s(e==="mark"||a);let p=r.objectStore(el);if(e==="mark")p.put({version:1,synced:!0},o);else{let l=p.get(o);l.onsuccess=()=>{let c=l.result;a=!!c&&c.version===1&&c.synced===!0}}})}catch{return!1}finally{i?.close()}}async complete(e){await this.change("complete",e.signal)}}});function iI(n){let e=Object.freeze({...n,setupJournal:Object.freeze({...n.setupJournal})}),t=$x(e.sql);if(typeof e.handoff!="function")throw Ji("binding");let i=new Set;return async o=>{let s=JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection]);if(i.has(s))throw Ji("fenced");i.add(s);let{host:r,installation:a,signal:p,collection:l,setupPolicy:c}=o,d=a.isCurrent,u=l.displayName,f=he=>{if(Z())try{o.onProgress?.(he)}catch{}},h=Object.freeze({account:o.scope.account,installation:o.scope.installation,collection:o.scope.collection}),m=JSON.stringify([h.account,h.installation,h.collection]),b=new AbortController,w=!1,g=!0,y=null,v=null,A=null,k=null,S=null,x=null,P=null,C=null,E="setup_required",O=null,L=!1,z=null,ee=!1,V=null,ne=new Map,G=null,W=new Set,Z=()=>{try{return!w&&!b.signal.aborted&&!p.aborted&&o.signal===p&&o.host===r&&o.installation===a&&a.isCurrent===d&&d.call(a)===!0&&o.collection===l&&o.setupPolicy===c&&a.scope.account===h.account&&a.scope.installation===h.installation&&JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection])===m&&l.collectionId===h.collection}catch{return!1}},Y=()=>{if(!Z())throw Ji("fenced")},te=()=>{for(let he of[...W])try{he()}catch{}},ze=()=>{if(A)return A;w=!0,E="setup_required",y!==null&&clearTimeout(y),y=null,z!==null&&clearTimeout(z),z=null;try{O?.close()}catch{}O=null;try{r.onLogWork?.(null)}catch{}p.removeEventListener("abort",mt);let he=[...ne.values()];return ne.clear(),A=Promise.resolve().then(async()=>{let me=!1;try{await S?.close()}catch{me=!0}try{await k?.close()}catch{me=!0}for(let Fe of he){try{await Fe.timers?.close()}catch{me=!0}try{await Fe.control.close()}catch{me=!0}try{Fe.data.port1.postMessage([1,JSON.stringify([h.account,h.installation,h.collection]),"close"])}catch{me=!0}for(let Tn of[Fe.data.port1,Fe.data.port2,Fe.command.port1,Fe.command.port2])try{Tn.close()}catch{me=!0}}try{P?.port1.postMessage([1,JSON.stringify([h.account,h.installation,h.collection]),"close"])}catch{me=!0}for(let Fe of[P?.port1,P?.port2,C?.port1,C?.port2])try{Fe?.close()}catch{me=!0}await v?.catch(()=>{});try{x?.close()}catch{me=!0}if(me)throw Ji("unavailable");W.clear(),i.delete(s)}),b.abort(),te(),A},mt=()=>{ze().catch(()=>{})},j=null,K=0,$=()=>{let he=St(G);if(he!==null)return he==="collection_migrating"?Math.min(6e5,Math.max(5e3,G?.retryAfterMs??3e4)):3e5;let me=Math.min(6e4,1e3*2**Math.min(Math.max(K,ye),6));return j?.kind==="offline"?qe?me:null:j?.kind==="server_busy"||j?.kind==="rate_limited"?j.retryAfterMs??me:ye||j?me:250},J=()=>{let he=null;try{he=r.serverProblem()}catch{he=null}let me=null;try{me=r.transportHealth()}catch{me=null}K=me?K+1:0;let Fe=JSON.stringify(me)===JSON.stringify(j);(he!==G||!Fe)&&(G=he,j=me,te())},be=Number.POSITIVE_INFINITY,ye=0,we=0,et=!1,qe=null,Dt=he=>{let me=he&&typeof he=="object"&&typeof he.code=="string"?he.code:null;try{console.debug("mdbase: sync turn failed",{reason:j?.kind??St(G)??me??"unknown",failures:ye})}catch{}},tt=()=>{if(g||Date.now()-we>=IM)return!1;try{return r.pendingWrites()>0}catch{return!1}},Ve=()=>{if(!Z())return;if(!g&&!tt()&&!ee){v||O?.suspend();return}if(y!==null||v)return;let he=ee?0:$();ee=!1,he!==null&&(y=setTimeout(()=>{if(y=null,!Z())return;let me=g&&Date.now()>=be;me&&(be=Number.POSITIVE_INFINITY);let Fe=v=me?r.wakeCollectionLog({signal:b.signal}):r.driveCollection({signal:b.signal});Fe.then(()=>{v===Fe&&(v=null),ye=0,et=!0,Z()&&J(),qe?.(),Ve()},Tn=>{v===Fe&&(v=null),ye++,Z()&&J(),Dt(Tn),qe?.(),Ve()})},he))},qn=()=>{Z()&&(ee=!0,y!==null&&clearTimeout(y),y=null,Ve())},kr=he=>{L!==he&&(L=he,te())},xi=he=>{if(z!==null&&clearTimeout(z),z=null,he){kr(!1);return}if(!O?.available){kr(V===null);return}O.suspended||(z=setTimeout(()=>{z=null,Z()&&!O?.live&&kr(!0)},CM))},Sr=he=>{if(Y(),he){(!O?.live||j?.kind==="offline")&&(be=0),ye=0,K=0,j?.kind==="offline"&&(ee=!0);try{O?.resume(),O&&!O.live&&xi(!1)}catch{}}else g&&(we=Date.now());g=he,y!==null&&clearTimeout(y),y=null,Ve()},as=()=>new Promise((he,me)=>{let Fe,Tn=null,Mn=nt=>{qe=null,Tn!==null&&clearTimeout(Tn),b.signal.removeEventListener("abort",Ci),nt?me(nt):he()},Ci=()=>Mn(Ji("fenced"));b.signal.addEventListener("abort",Ci,{once:!0}),qe=()=>{if(!Z()){Mn(Ji("fenced"));return}if(V!==null){Mn();return}let nt="first_turn";if(et)try{nt=typeof r.initialSync=="function"?r.initialSync():null}catch{nt="unavailable"}if(nt===null||nt==="offline"||j?.kind==="offline"){Mn();return}let ri=null;if(nt==="waiting_for_key"&&typeof r.keyWaitDetail=="function")try{ri=r.keyWaitDetail()}catch{ri=null}let ls=nt+(ri?JSON.stringify(ri):"");if(ls!==Fe){Fe=ls;try{console.debug("mdbase: waiting for the first sync",{...ri,reason:nt})}catch{}}},Tn=setTimeout(()=>Mn(),OM),qe()});p.addEventListener("abort",mt,{once:!0});try{Y(),x=new Wa({...e.setupJournal,scope:h,isCurrent:Z});let he=new tl({databaseName:e.joinDatabaseName,scope:h,isCurrent:Z}),me=await he.prepare({signal:b.signal});Y(),f("joining"),await r.bootstrapCloudCopy({scope:h,collectionCurrent:Z,purpose:"join",outcomeMode:me.outcomeMode,signal:b.signal,...me.outcomeMode==="existing"?{reconcile:"explicit-unknown-outcome"}:{},fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp,allowNativeLoopbackHttp:e.allowNativeLoopbackHttp}),Y(),await he.complete({signal:b.signal}),Y();let Fe=r.registeredReceipt();if(Fe.installationId!==h.installation)throw Ji("binding");let Tn=null,Mn=async He=>{let Ze=await t(He);return Tn=Ze.ledger??null,Ze};f("opening_store"),await r.openCollectionSql({signal:b.signal,replicaId:Fe.deviceId,endpoint:0,openSql:Mn}),Y(),f("connecting_log");let Ci=Date.now()+RM;for(let He=0;;He++)try{await r.startCollectionLog({signal:b.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),Y();break}catch(Ze){Y();let dt=Ze instanceof ei&&Ze.reason==="unavailable"?Ze.server:null;if(!Pn(dt)||dt.status!==503||dt.code!=="busy"||St(dt)!==null||He+1>=EM)throw Ze;let Ii=dt.retryAfterMs??1e3*2**He;if(Date.now()+Ii>=Ci||(await yp(Ii,b.signal),Y(),Date.now()>=Ci))throw Ze}let nt=await he.syncedBefore({signal:b.signal});Y(),f("syncing"),await r.waitForVerifiedRead({signal:b.signal,cold:!nt,onProgress:f}),Y(),r.onLogWork?.(qn),Ve();try{O=typeof r.openLogPush=="function"?r.openLogPush({push:He=>{Z()&&(r.pushLog(He),qn())},live:xi,ended:He=>{V=He,qn(),xi(!1),qe?.(),te()}}):null}catch{O=null}O?(O.start(),xi(!1)):L=!0,nt&&(f("syncing"),await as()),Y(),f("checking_setup"),he.markSynced({signal:b.signal}).catch(()=>{});let ri=await x.load(b.signal);Y();let ls=ri&&ri.version!==1&&(ri.phase==="attempted"||ri.phase==="confirmed")?"reconcile-original":ri===null&&c==="approved-new-collection"?"approved-new":"inspect",cs=crypto.randomUUID(),uv=e.people===!0?{people:!0}:{},XI={owner:null},fv=(He,Ze,dt,Ii)=>Jx(Ze,{scope:h,generation:cs},{journal:x,resourceSetup:r.attachDataFacade(He),signal:b.signal,isCurrent:Z,ledger:()=>Z()?Tn:null,setupTurn:XI,assess(Pr){Y(),E=Pr,te()},foreground:dt,onProtocolFailure:Ii,...e.people===!0?{peopleAuthority:r.peopleAuthority()}:{}});S=r.openTimersPort({scope:h,generation:cs,signal:b.signal}),Y(),P=new MessageChannel,C=new MessageChannel,k=fv(P.port1,C.port1,Sr,mt),Y();let hv=He=>{if(P&&C&&He.dataPort===P.port2){let dt={data:P,command:C,control:k,timers:S};P=null,C=null,k=null,S=null;try{r.detachDataFacade(dt.data.port1)}catch{}dt.timers?.close().catch(()=>{}),dt.control?.close().catch(()=>{});for(let Ii of[dt.data.port1,dt.command.port1])try{Ii.close()}catch{}return}let Ze=ne.get(He.dataPort);if(Ze){ne.delete(He.dataPort);try{r.detachDataFacade(Ze.data.port1)}catch{}Ze.timers?.close().catch(()=>{}),Ze.control.close().catch(()=>{});for(let dt of[Ze.data.port1,Ze.command.port1])try{dt.close()}catch{}}},ZI=Object.freeze({scope:h,generation:cs,isCurrent:Z,setForeground:Sr,attach:()=>{if(!Z()||V!==null)return null;let He=new MessageChannel,Ze=new MessageChannel,dt=null,Ii=null;try{dt=r.openTimersPort({scope:h,generation:cs,signal:b.signal});let Pr=null;return Ii=fv(He.port1,Ze.port1,()=>{},()=>{Pr&&hv(Pr)}),Pr=Object.freeze({schema:"mdbn-app-collection/1",scope:h,generation:cs,displayName:u,setupMode:ls==="reconcile-original"?ls:"inspect",dataPort:He.port2,controlPort:Ze.port2,...uv,...dt?{timerPort:dt.port}:{}}),ne.set(He.port2,{data:He,command:Ze,control:Ii,timers:dt}),Pr}catch{try{r.detachDataFacade(He.port1)}catch{}dt?.close().catch(()=>{}),Ii?.close().catch(()=>{});for(let Pr of[He.port1,He.port2,Ze.port1,Ze.port2])Pr.close();return null}},detach:hv}),QI={get state(){return Z()?E:"setup_required"},get problem(){return Z()?G:null},get health(){return Z()?j:null},get live(){return Z()?!L:null},get ended(){return Z()?V:null},connection:ZI,close:ze,subscribe(He){return Y(),W.add(He),()=>{W.delete(He)}}};return e.handoff(Object.freeze({schema:"mdbn-app-collection/1",scope:h,generation:cs,displayName:u,setupMode:ls,dataPort:P.port2,controlPort:C.port2,...uv,...S?{timerPort:S.port}:{}})),Y(),Ve(),Object.freeze(QI)}catch(he){throw await ze(),he}}}async function Lh(n,e){if(n.schema!=="mdbn-app-collection/1"||nl.has(n.dataPort)||nl.has(n.controlPort)||n.dataPort===n.controlPort||!["inspect","approved-new","reconcile-original"].includes(n.setupMode)||n.people!==void 0&&n.people!==!0||e.signal.aborted||n.timerPort&&(nl.has(n.timerPort)||n.timerPort===n.dataPort||n.timerPort===n.controlPort))throw Ji("binding");nl.add(n.dataPort),nl.add(n.controlPort),n.timerPort&&nl.add(n.timerPort);let t=Object.freeze({...n.scope}),i=n.generation,o=n.setupMode,s=n.people===!0,r=n.dataPort,a=n.controlPort,p=e.signal,l=!1,c=null,d=null,u=null,f,h=()=>{if(!l){l=!0,p.removeEventListener("abort",h);for(let m of[()=>f?.close(),()=>d?.close(),()=>c?.close(),()=>u?.close(),()=>r.close(),()=>a.close()])try{m()}catch{}}};p.addEventListener("abort",h,{once:!0});try{if(u=uh(r,{...t,isCurrent:()=>!l&&!p.aborted}),d=ph(a,{scope:t,generation:i},{signal:p,isCurrent:()=>!l,onClose:h,...s?{people:!0}:{}}),n.timerPort&&(f=new Ds(nI(n.timerPort,{scope:t,generation:i},{signal:p,onClose:()=>{}}),{criteria:e.timerCriteria??[]})),c=await qi.connect({app:e.app,connector:u,reconnect:!1,signal:p,ledger:d.ledger}),l||p.aborted)throw c.close(),Ji("fenced");let m=s?lh(c,d):void 0;return Object.freeze({client:c,resourceSetup:d.resourceSetup,...m?{people:m}:{},journal:d.journal,scope:t,setupMode:o,close:h,...f?{timers:f}:{},assess:(b,w)=>d.assess(b,w),setForeground:(b,w)=>d.setForeground(b,w)})}catch(m){throw h(),m}}var CM,IM,OM,RM,EM,bp,Ji,nl,Tw=I(()=>{"use strict";Wn();ip();Ow();Cs();sg();qw();zx();Mh();Zo();ro();fh();ap();CM=1e4,IM=12e4,OM=2e3,RM=15e3,EM=3,bp=class extends Error{constructor(t){super(`app web collection: ${t}`);this.reason=t;this.name="AppWebCollectionError"}reason},Ji=n=>new bp(n);nl=new WeakSet});var Ut,jh,qM,il,Mw=I(()=>{"use strict";Tw();Ut=class extends Error{constructor(t){super("SDK application connection unavailable");this.code=t;this.name="ApplicationUiConnectionError"}code},jh=new WeakSet,qM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,il=class{app;signal;current=null;pending=null;opening=null;retiring=null;closing=null;epoch=0;timerCriteria;constructor(e,t,i=[]){this.app=Object.freeze({...e}),this.signal=t,this.timerCriteria=Object.freeze([...i]),t.addEventListener("abort",this.abort,{once:!0})}abort=()=>{this.close().catch(()=>{})};connection(e){let t=this.current?.public;return t?.id===e&&t.isCurrent()?t:null}owned(){return this.current?.public.isCurrent()?this.current.ui:null}adopt(e,t){let i=t.caller,o=t.isCurrent,s=[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]];if(s.some(g=>!(g instanceof MessagePort))||new Set(s).size!==s.length||s.some(g=>jh.has(g))){for(let g of new Set(s))g instanceof MessagePort&&!jh.has(g)&&(jh.add(g),g.close());return Promise.reject(new Ut("application_connection_binding"))}for(let g of s)jh.add(g);let r=g=>{for(let y of s)y.close();return Promise.reject(new Ut(g))};if(this.pending||this.current||this.retiring)return r("application_connection_busy");if(this.closing||this.signal.aborted||i.aborted||!o())return r("application_connection_fenced");let a=Object.freeze({...e.scope}),p=e.generation,l=e.displayName;if(e.schema!=="mdbn-app-collection/1"||Object.keys(a).sort().join()!=="account,collection,installation"||Object.values(a).some(g=>!qM.test(g)||g==="00000000-0000-0000-0000-000000000000")||typeof p!="string"||!p||p.length>256||typeof l!="string"||!l.trim()||new TextEncoder().encode(l).length>4096||!["inspect","approved-new","reconcile-original"].includes(e.setupMode))return r("application_connection_binding");if(e.people!==!0)return r("application_connection_people_unavailable");let c=Object.freeze({...e,scope:a,generation:p,displayName:l}),d=new AbortController,u=this.epoch;this.opening=d;let f=()=>d.abort();i.addEventListener("abort",f,{once:!0});let h=AbortSignal.any([this.signal,d.signal]),m=()=>!h.aborted&&!this.closing&&!this.retiring&&this.epoch===u&&o(),b=null,w=Promise.resolve().then(async()=>{if(!m()||i.aborted)throw new Ut("application_connection_fenced");if(b=await Lh(c,{app:this.app,signal:h,timerCriteria:this.timerCriteria}),!m()||i.aborted)throw new Ut("application_connection_fenced");if(b.client.collection!==a.collection||b.client.link!=="open")throw new Ut("application_connection_binding");if(!b.people)throw new Ut("application_connection_people_unavailable");let g=b,y=b.people,v=Object.freeze({id:a.collection,scope:a,generation:p,displayName:l,records:g.client,files:g.client.files,people:y,...g.timers?{timers:g.timers}:{},isCurrent:()=>m()&&this.current?.ui===g&&g.client.link==="open"});return this.current={public:v,ui:g,lifetime:d},v}).catch(g=>{d.abort(),b?.close();for(let y of s)y.close();throw g}).finally(()=>{i.removeEventListener("abort",f),this.pending===w&&(this.pending=null,this.opening=null)});return this.pending=w,w}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.current,t=this.pending;this.opening?.abort(),e?.lifetime.abort();let i=Promise.resolve().then(async()=>{await t?.catch(()=>{}),e?.ui.close(),this.current===e&&(this.current=null)});return this.retiring=i,i.then(()=>{this.retiring===i&&(this.retiring=null)},()=>{}),i}close(){return this.closing?this.closing:(this.closing=Promise.resolve().then(()=>this.retire()),this.signal.removeEventListener("abort",this.abort),++this.epoch,this.opening?.abort(),this.current?.lifetime.abort(),this.closing)}}});function UM(n){if(n.capabilityContractVersion!==2)throw _("upgrade_required","unsupported readiness capability projection","readiness_capability_version");if(!Array.isArray(n.contracts)||n.contracts.length>128||!Array.isArray(n.requiredNativeCapabilities)||n.requiredNativeCapabilities.length>64)throw Ct("unsupported");let e=n.contracts.map(i=>{if(!i||!ol(i.id,256)||!ol(i.version,128)||!NM.test(i.digest))throw Ct("unsupported");return Object.freeze({id:i.id,version:i.version,digest:i.digest})}),t=n.requiredNativeCapabilities.map(i=>{if(!ol(i,128))throw Ct("unsupported");return i});if(new Set(e.map(i=>JSON.stringify([i.id,i.version]))).size!==e.length||new Set(t).size!==t.length||n.typeIssues!==void 0&&n.typeIssues!=="block"&&n.typeIssues!=="degrade")throw Ct("unsupported");return Object.freeze({capabilityContractVersion:2,typeIssues:n.typeIssues??"block",contracts:Object.freeze(e),requiredNativeCapabilities:Object.freeze(t)})}function DM(n){let e=n instanceof Map?n.get("path"):null;return typeof e=="string"&&e?e:null}function rl(n,e){return Object.freeze({reason:n,...n==="fenced"&&e?{detail:e}:{}})}function Lw(n){if(!X(n))return;let e=n.details instanceof Map?n.details.get("condition"):void 0,t=TM.find(i=>i===e);if(t)return t;if(n.code==="unauthenticated")return"read_unauthenticated";if(n.code==="cancelled")return"read_cancelled"}function jw(n){try{if(X(n)){if(n.code==="unauthenticated"||n.code==="cancelled")return"fenced";if(n.code==="too_large")return"budget";if(n.code==="upgrade_required"||n.code==="forbidden")return"unsupported";if(n.reason==="readiness_changed"||n.reason==="cursor_stale"||n.reason==="cursor_expired")return"changed";if(n.reason==="readiness_busy")return"busy";if(n.reason==="readiness_catalog_response")return"catalog_response"}}catch{}return"unavailable"}function Uw(n){let e=n.status;return JSON.stringify([e.mode,e.confirmedThrough,e.headKnown,e.pending,e.holds,e.unresolved,e.connection,e.installing,e.resyncing,e.incidents.map(t=>t.kind),e.confirmedHead])}function Dw(n){return n.mode==="local_only"}function sl(n){return JSON.stringify(n,(e,t)=>typeof t=="bigint"?`${t}n`:t instanceof Map?[...t.entries()]:t instanceof Uint8Array?[...t]:t)}function oI(n,e,t){return new Nw(n,e,t)}var TM,MM,LM,jM,rI,NM,ol,Ct,Nw,$w=I(()=>{"use strict";re();TM=["binding_invalid","binding_aborted","binding_not_current","readiness_closed","read_aborted","session_closed","session_replaced","session_collection_mismatch","read_unauthenticated","read_cancelled"],MM=4096,LM=2*1024*1024,jM=64,rI=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,NM=/^sha256:[0-9a-f]{64}$/,ol=(n,e=4096)=>typeof n=="string"&&!!n.trim()&&new TextEncoder().encode(n).length<=e,Ct=(n,e)=>_(n==="fenced"?"unauthenticated":n==="budget"?"too_large":"unavailable","collection readiness unavailable",{reason:`readiness_${n}`,...e?{details:new Map([["condition",e]])}:{}});Nw=class{constructor(e,t,i){this.client=e;if(this.declared=UM(t),!rI.test(i.collection)||i.collection==="00000000-0000-0000-0000-000000000000"||!rI.test(i.generation))throw Ct("fenced","binding_invalid");this.binding=Object.freeze({collection:i.collection,generation:i.generation,signal:i.signal,isCurrent:i.isCurrent.bind(i)}),this.readSignal=AbortSignal.any([this.binding.signal,this.lifetime.signal]),this.check(),this.binding.signal.addEventListener("abort",this.abort,{once:!0})}client;declared;binding;lifetime=new AbortController;readSignal;listeners=new Set;snapshotValue=Object.freeze({checking:!1,assessment:null,problem:null});watch=null;stops=[];pending=null;epoch=0;dirty=!1;scheduled=!1;retries=0;failures=0;closed=!1;lastStatus=null;assessedSession;assessedEpoch;assessedCatalog=null;probing=null;probeAgain=!1;abort=()=>{this.close()};getSnapshot(){if(this.snapshotValue.assessment)try{this.check(void 0,this.assessedSession,this.assessedEpoch)}catch(e){let t=jw(e);t==="fenced"&&!this.closed&&!this.binding.signal.aborted&&this.binding.isCurrent()===!0&&(t="changed"),this.retryLater(t)||this.publish({checking:!1,assessment:null,problem:rl(t,Lw(e))})}return this.snapshotValue}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e){this.snapshotValue=Object.freeze(e);for(let t of this.listeners)try{t()}catch{}}check(e,t,i){e?.throwIfAborted();let o=this.fenceDetail(e);if(o)throw Ct("fenced",o);if(t?.closed)throw Ct("fenced","session_closed");if(t&&t!==this.client.currentSession())throw Ct("fenced","session_replaced");if(t&&t.hello.collection!==this.binding.collection)throw Ct("fenced","session_collection_mismatch");if(i!==void 0&&(i!==this.epoch||this.watch?.state!=="active"))throw Ct("changed")}fenceDetail(e){if(this.binding.signal.aborted)return"binding_aborted";if(this.closed)return"readiness_closed";if(e?.aborted)return"read_aborted";if(this.binding.isCurrent()!==!0)return"binding_not_current"}invalidate=()=>{if(this.closed)return;if(this.pending||!this.snapshotValue.assessment||this.assessedCatalog===null||this.client.link!=="open"){this.recheck();return}if(this.probing){this.probeAgain=!0;return}let e=this.snapshotValue.assessment,t=this.assessedCatalog,i=this.client.describe(this.readSignal).then(o=>{this.closed||this.snapshotValue.assessment!==e||sl(o)!==t&&this.recheck()},()=>{this.closed||this.recheck()});this.probing=i.finally(()=>{this.probing=null,this.probeAgain&&!this.closed&&(this.probeAgain=!1,this.invalidate())})};recheck(){this.closed||(this.epoch++,this.dirty=!0,this.publish({checking:!0,assessment:null,problem:null}),this.schedule())}schedule(){if(this.closed||this.pending||this.scheduled||!this.dirty||this.watch?.state!=="active"||this.client.link!=="open")return;this.scheduled=!0;let e=()=>{this.scheduled=!1,!this.closed&&this.dirty&&!this.pending&&this.watch?.state==="active"&&this.client.link==="open"&&this.refresh(void 0,!0).catch(()=>{})};this.retries?setTimeout(e,Math.min(5e3,100*2**this.retries,this.retrySince===null?5e3:Math.max(0,15e3-(Date.now()-this.retrySince)))):queueMicrotask(e)}retrySince=null;retryLater(e,t=!1){if(this.closed)return!1;if((e==="busy"||e==="changed")&&(this.retrySince??=Date.now(),Date.now()-this.retrySince>=15e3))return this.dirty=!1,this.publish({checking:!1,assessment:null,problem:rl("busy_timeout")}),!0;if(e==="unavailable"&&t&&this.failures<5)this.failures++;else if(e!=="changed"&&e!=="busy")return!1;return this.dirty=!0,this.retries=Math.min(this.retries+1,6),this.publish({checking:!0,assessment:null,problem:null}),this.schedule(),!0}attach(){this.watch||(this.watch=this.client.watchChanges(void 0,this.invalidate),this.stops.push(this.watch.subscribe(this.invalidate),this.client.onLink(this.invalidate),this.client.onStatus(e=>{let t=Uw(this.client);(t!==this.lastStatus||Dw(e))&&(this.lastStatus=t,this.invalidate())})))}start(e){return this.refresh(e)}refresh(e,t=!1){try{if(this.check(e),this.pending)throw Ct("busy")}catch(a){return Promise.reject(a)}t||(this.retrySince=null);let i=AbortSignal.any([this.binding.signal,this.lifetime.signal,...e?[e]:[]]),o,s,r=Promise.resolve().then(async()=>{this.check(i),this.attach();let a=await this.client.readyForRead(i);this.check(i,a),await this.watch.ready,this.check(i,a);let p=this.epoch;this.dirty=!1,this.check(i,a,p);let l=await this.inventory(i,a,p),c=await this.client.describe(this.readSignal);this.check(i,a,p);let d=this.evaluate(c,a),u=sl(c);for(let b of d.paths){let w=l.find(y=>y.path===b);if(!w)throw Ct("changed");let g=await this.client.resources.get(b,this.readSignal);if(this.check(i,a,p),g.path!==w.path||g.revision!==w.revision||g.size!==w.size||g.state!=="confirmed")throw Ct("changed")}let f=await this.inventory(i,a,p);if(JSON.stringify(l)!==JSON.stringify(f))throw Ct("changed");this.check(i,a,p);let h=Object.freeze({collection:this.binding.collection,generation:this.binding.generation,resources:Object.freeze(f)}),m=Object.freeze({status:d.status,problem:d.reason?rl(d.reason):null,witness:h,...d.unavailable.length?{unavailableTypes:Object.freeze(d.unavailable)}:{}});return o=a,s=p,this.retries=0,this.failures=0,this.retrySince=null,this.assessedSession=a,this.assessedEpoch=p,this.assessedCatalog=u,this.publish({checking:!1,assessment:m,problem:m.problem}),this.check(i,a,p),m}).catch(a=>{let p=i.aborted||this.closed?"fenced":jw(a);throw this.retryLater(p,t)||this.publish({checking:!1,assessment:null,problem:rl(p,this.fenceDetail(i)??Lw(a))}),a});return this.pending=r,this.publish({checking:!0,assessment:null,problem:null}),r.finally(()=>{this.pending===r&&(this.pending=null),this.schedule()}).catch(()=>{}),r.then(a=>{try{if(this.check(i,o,s),this.snapshotValue.assessment!==a)throw Ct("changed");return a}catch(p){let l=i.aborted?"fenced":jw(p);throw this.snapshotValue.assessment===a&&!this.retryLater(l)&&this.publish({checking:!1,assessment:null,problem:rl(l,this.fenceDetail(i)??Lw(p))}),p}})}async inventory(e,t,i){let o=[],s=new Set,r,a="",p=0;for(let l=0;l<jM;l++){this.check(e,t,i);let c=await this.client.resources.list({text:!1,limit:128,...r?{cursor:r}:{},signal:this.readSignal});this.check(e,t,i);for(let d of c.resources){if(!ol(d.path)||d.path<=a||!ol(d.revision,128)||!Number.isSafeInteger(d.size)||d.size<0||d.state!=="confirmed")throw Ct("catalog_response");a=d.path;let u=Object.freeze({path:d.path,revision:d.revision,size:d.size,state:d.state});if(p+=new TextEncoder().encode(JSON.stringify(u)).length,o.length>=MM||p>LM)throw Ct("budget");o.push(u)}if(c.complete===!0&&c.cursor===void 0)return o;if(c.complete!==!1||!ol(c.cursor)||s.has(c.cursor))throw Ct("catalog_response");s.add(c.cursor),r=c.cursor}throw Ct("budget")}evaluate(e,t){let i=e.issues.filter(d=>d.severity==="error"),o=new Set;for(let d of i){let u=DM(d.details);if(!u)return{status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};o.add(u)}let s={status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};if(this.declared.requiredNativeCapabilities.some(d=>!t.hello.grant.capabilities.includes(d)))return{status:"incompatible",reason:"capability_missing",paths:[],unavailable:[]};let r=new Set,a=new Set,p=new Set;for(let d of e.contracts){let u=JSON.stringify([d.id,d.version]);if(a.has(u))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};a.add(u)}for(let d of e.types){if(p.has(d.name))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};p.add(d.name)}let l,c=[];for(let d of this.declared.contracts){let u=e.contracts.find(f=>f.id===d.id&&f.version===d.version);if(!u){l??="contract_missing";continue}if(u.digest!==d.digest)return{status:"incompatible",reason:"contract_mismatch",paths:[],unavailable:[]};if(r.add(u.path),o.has(u.path))return s;if(!u.implementedBy.length){l??="implementation_missing";continue}for(let f of u.implementedBy){let h=e.types.find(m=>m.name===f);if(!h||!h.implements.some(m=>m.contract===d.id&&m.version===d.version))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};if(r.add(h.path),o.has(h.path)){if(this.declared.typeIssues!=="degrade")return s;c.some(m=>m.name===h.name)||c.push(Object.freeze({name:h.name,path:h.path,contract:Object.freeze({id:d.id,version:d.version}),problem:Object.freeze({code:"readiness_type_invalid"})}))}}}return{status:l?"setup_required":"ready",...l?{reason:l}:{},paths:[...r].sort(),unavailable:c}}async close(){if(!this.closed){this.closed=!0,this.dirty=!1,this.lifetime.abort(),this.binding.signal.removeEventListener("abort",this.abort);for(let e of this.stops.splice(0))e();this.watch?.(),this.watch=null,this.publish({checking:!1,assessment:null,problem:rl("fenced",this.fenceDetail())})}await this.pending?.catch(()=>{})}}});function zM(n){let e=o=>o?Object.freeze({code:`readiness_${o.reason}`,...o.detail?{detail:o.detail}:{}}):null,t=e(n.problem),i=n.assessment?.unavailableTypes;return Object.freeze({checking:n.checking,assessment:n.assessment?Object.freeze({status:n.assessment.status,problem:e(n.assessment.problem),...i?.length?{unavailableTypes:i}:{}}):null,problem:t})}var sI,$M,wp,Xi,Nh,aI=I(()=>{"use strict";ac();re();$w();sI=["configuration","files"],$M=["people","notifications"],wp=class extends Error{constructor(t,i){super("SDK application readiness unavailable");this.code=t;this.detail=i;this.name="ApplicationReadinessError"}code;detail},Xi=(n,e=!1,t)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n,...t?{detail:t}:{}}):null});Nh=class{connection;signal;observed;native;sources;listeners=new Set;stops=[];pending=null;closing=null;checking=!1;closed=!1;advisory=Promise.resolve();lastReady=null;constructor(e){this.connection=e.connection,this.signal=e.signal,this.observed=e.isCurrent,this.sources=Object.freeze({configuration:e.configuration,files:e.files,people:e.people,notifications:e.notifications}),this.native=e.nativeRequirements?oI(this.connection.records,e.nativeRequirements,{collection:this.connection.id,generation:this.connection.generation,signal:this.signal,isCurrent:()=>this.current()}):null,this.native&&this.stops.push(this.native.subscribe(this.changed));for(let t of Object.values(this.sources))t&&this.stops.push(t.subscribe(this.changed));this.signal.addEventListener("abort",this.abort,{once:!0})}fenceDetail(){try{return this.signal.aborted?"scope_aborted":this.closed?"scope_closed":this.observed()!==!0?"observer_not_current":this.connection.isCurrent()?this.connection.records.collection!==this.connection.id?"collection_mismatch":null:"connection_not_current"}catch{return"currentness_check_failed"}}current(){return this.fenceDetail()===null}connectionProblem(){if(!this.closed&&!this.signal.aborted&&this.connection.records.collection===this.connection.id&&this.connection.records.link==="closed"){let e=this.connection.records.linkProblem;if(X(e)){let t=No(e);return t&&t.key!=="unknown"?t.key:e.code}}return"readiness_fenced"}changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getSnapshot(){let e=this.current(),t=Xi(e?"readiness_unsupported":"readiness_fenced"),i=t;if(e&&this.native){let u=this.native.getSnapshot(),f=u.assessment?.witness,h=f&&f.collection!==this.connection.id?"native_witness_collection_mismatch":f&&f.generation!==this.connection.generation?"native_witness_generation_mismatch":null;i=h?Xi("readiness_fenced",!1,h):zM(u)}let o=u=>{if(!e)return t;let f=this.sources[u];if(!f)return Xi(`${u}_unsupported`);try{let h=f.getSnapshot();return Object.freeze({checking:h.checking,assessment:h.assessment?Object.freeze({...h.assessment,problem:h.assessment.problem?Object.freeze({...h.assessment.problem}):null}):null,problem:h.problem?Object.freeze({...h.problem}):null})}catch{return Xi(`${u}_unavailable`)}},s=Object.freeze({capabilities:i,contracts:i,configuration:o("configuration"),files:o("files"),people:o("people"),notifications:o("notifications")}),r=[s.capabilities,s.contracts,s.configuration,s.files],a=e&&(this.checking||r.some(u=>u.checking)),p=null,l=null;if(!e)l=Object.freeze({code:"readiness_fenced"});else if(!a){let u=["capabilities","contracts",...sI].find(f=>s[f].problem);if(l=u?s[u].problem:null,u&&l?.code==="readiness_fenced"&&!l.detail&&(l=Object.freeze({...l,detail:`${u}_facet`})),r.every(f=>f.assessment!==null)){let f=r.find(w=>w.assessment?.status==="incompatible"),h=r.find(w=>w.assessment?.status==="setup_required"),m=f??h,b=i.assessment?.unavailableTypes;p=Object.freeze({status:f?"incompatible":h?"setup_required":"ready",problem:m?.assessment?.problem??null,...b?.length?{unavailableTypes:b}:{}})}}let c=this.fenceDetail();if(c)return this.lastReady=null,Object.freeze({checking:!1,assessment:null,problem:Object.freeze({code:this.connectionProblem(),detail:c}),facets:Object.freeze({capabilities:Xi("readiness_fenced",!1,c),contracts:Xi("readiness_fenced",!1,c),configuration:Xi("readiness_fenced",!1,c),files:Xi("readiness_fenced",!1,c),people:Xi("readiness_fenced",!1,c),notifications:Xi("readiness_fenced",!1,c)})});let d=!l||/_(changed|busy)$/.test(l.code);if(l===null&&p!==null&&!a)this.lastReady=Object.freeze({checking:a,assessment:p,problem:l,facets:s});else{if(this.lastReady&&d&&(a||p===null)&&(this.lastReady.assessment?.status==="ready"||!this.checking))return Object.freeze({...this.lastReady,facets:s});this.lastReady=null}return Object.freeze({checking:a,assessment:p,problem:l,facets:s})}refresh(e={}){let t=e.signal,i=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(i)return Promise.reject(new wp("application_readiness_fenced",i));if(this.pending)return Promise.reject(new wp("application_readiness_busy"));this.checking=!0;let o=Promise.resolve().then(async()=>{if(!this.current())return this.getSnapshot();await this.advisory,this.native&&await this.native.start();for(let s of sI){let r=this.sources[s];if(!this.current())break;r&&await r.refresh()}return await this.reassessAfterSetup(),this.getSnapshot()}).finally(()=>{if(this.pending!==o)return;this.pending=null,this.checking=!1;let s=(async()=>{for(let r of $M){let a=this.sources[r];if(!this.current())break;a&&await a.refresh().catch(()=>{})}})();this.advisory=s,this.changed()}).then(()=>this.getSnapshot());return this.pending=o,this.changed(),o.then(s=>{let r=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(r)throw new wp("application_readiness_fenced",r);return s})}async reassessAfterSetup(){if(!this.native||!this.current())return;let e=this.native.getSnapshot(),t=null;try{t=this.sources.configuration?.getSnapshot()??null}catch{}e.checking||e.assessment?.status!=="setup_required"||t?.checking||t?.assessment?.status!=="ready"||await this.native.start().catch(i=>{if(!(X(i)&&i.reason==="readiness_busy"))throw i})}close(){return this.closing?this.closing:(this.closed=!0,this.checking=!1,this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{for(let e of this.stops.splice(0))e();for(let e of Object.values(this.sources))await e?.close();await this.native?.close(),await this.pending?.catch(()=>{}),await this.advisory,this.listeners.clear()}),this.changed(),this.closing)}}});function BM(n){let e=new Set,t=[],i=[];for(let o of n.review?.packs??[]){if(o.status!=="conflict"&&o.status!=="downgrade")continue;let s=o.installedVersion?Uo(o.installedVersion,o.version):"unknown";s==="installed_newer"&&!o.resources.some(r=>r.action==="conflict")?(e.add(o.id),i.push(Object.freeze({id:o.id,version:o.version,installedVersion:o.installedVersion}))):s==="installed_newer_major"&&t.push(o.id)}return Object.freeze({kept:Object.freeze(i),compatible:e,major:Object.freeze(t)})}function FM(n,e){let t=n,i=t.provisions?.type_packs;return!e.size||!Array.isArray(i)?n:{...t,provisions:{...t.provisions,type_packs:i.filter(o=>!(typeof o?.manifest?.id=="string"&&e.has(o.manifest.id)))}}}function cI(n){return new Proxy({},{get(e,t){let i=Reflect.get(n,t,n);return typeof i!="function"?i:async(...o)=>{let s=o.find(a=>a instanceof AbortSignal),r=Date.now()+VM;for(let a=25;;a=Math.min(a*2,500))try{return await i.apply(n,o)}catch(p){if(!(p instanceof ii&&p.reason==="busy")||!s)throw p;if(Date.now()+a>r)throw Be("busy_timeout");await WM(a,s)}}}})}function dI(n,e){let t=Object.freeze({...n,scope:Object.freeze({...n.scope}),journal:cI(n.journal)});if(e&&(e=cI(e)),Object.values(t.scope).some(j=>!lI.test(j)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(j))||!lI.test(t.generation)||!["inspect","approved-new","reconcile-original"].includes(t.setupMode))throw Be("binding");let i=JSON.stringify([t.scope.account,t.scope.installation,t.scope.collection]),o=new AbortController,s=AbortSignal.any([t.signal,o.signal]),r=new Set,a=_r(),p=null,l=null,c=!1,d,u=null,f=!1,h=!1,m=0,b=!1,w=!1,g=null,y=null,v=()=>{try{return JSON.stringify([t.client.link,Uw(t.client)])}catch{return null}},A=[],k=new WeakMap;function S(j,K){if(j?.throwIfAborted(),c||s.aborted||t.isCurrent()!==!0||JSON.stringify([t.journal.scope.account,t.journal.scope.installation,t.journal.scope.collection])!==i||K&&(K.closed||t.client.currentSession()!==K||K.hello.collection!==t.scope.collection))throw Be("fenced")}function x(j){a=Object.freeze(j);for(let K of r)try{K()}catch{}}function P(){if(c)return;let j=v();if(j!==null&&j===y)return;if(y=j,p||!a.assessment||u===null||t.client.link!=="open"){C();return}if(f){h=!0;return}f=!0;let K=a,$=u;t.client.describe(s).then(J=>{!c&&a===K&&sl(J)!==$&&C()},()=>{c||C()}).finally(()=>{f=!1,h&&!c&&(h=!1,y=null,P())})}function C(){c||(b=!0,p||x(_r(null,!0)),E())}function E(){c||p||w||!b||(w=!0,setTimeout(()=>{if(w=!1,c||p||!b)return;let j=te(!1,{},void 0,!0);g=p,j.catch(()=>{})},m?Math.min(5e3,250*2**m):50))}function O(){if(a.assessment)try{S(void 0,d)}catch{c||s.aborted||t.isCurrent()!==!0?x(_r("configuration_fenced")):(b=!0,y=null,x(_r(null,!0)),E())}return a}async function L(j,K,$){let J=await t.client.awaitReceipt(j.mutationId,12e4,s);if(S(K,$),J.mutation!==j.mutationId||J.state!=="confirmed"||J.status!=="applied"||(J.conflicts?.length??0)!==0||J.published==="publishing"||J.published==="not_published")throw Be("recovery_required");return J}async function z(j,K,$){let J,be=0,ye=0,we=new Set,et=new Set,qe=new TextEncoder;for(let Dt=0;Dt<64;Dt++){S(K,$);let tt=await t.client.resources.list({text:!1,limit:128,...J===void 0?{}:{cursor:J},signal:s});if(S(K,$),tt.resources.length>128)throw Be("recovery_required");for(let Ve of tt.resources){let qn=qe.encode(Ve.path).length;if(be++,ye+=qn+128,!Ve.path||qn>4096||et.has(Ve.path)||Ve.state!=="confirmed"||!zw.test(Ve.revision)||!Number.isSafeInteger(Ve.size)||Ve.size<0||be>4096||ye>2*1024*1024||j.has(Ve.path))throw Be("recovery_required");et.add(Ve.path)}if(tt.complete===!0&&tt.cursor===void 0)return;if(tt.complete!==!1||!tt.resources.length||typeof tt.cursor!="string"||!tt.cursor||qe.encode(tt.cursor).length>4096||we.has(tt.cursor))throw Be("recovery_required");we.add(tt.cursor),J=tt.cursor}throw Be("recovery_required")}async function ee(j,K,$){let J=j.version===2?j.plan.readback:j.plan.resourceReadback,be=new Set(J.filter(ye=>ye.doc===null).map(ye=>ye.path));be.size&&await z(be,K,$);for(let ye of J){if(ye.doc===null)continue;let we=await t.client.resources.get(ye.path,s);if(S(K,$),we.path!==ye.path||we.text!==ye.doc||we.state!=="confirmed")throw Be("recovery_required")}if(j.version!==2)for(let ye of j.plan.sources){let we=await t.client.get(ye.id,void 0,s);if(S(K,$),we.id!==ye.id||we.path!==ye.path||we.state.state!=="confirmed"||we.state.hold||we.state.unresolved)throw Be("recovery_required")}}async function V(j,K,$){return await L(j,K,$),j.phase==="attempted"&&(j=j.version===2?await t.journal.recordConfirmed(j.mutationId,s):await t.journal.recordResourceConfirmed(j.mutationId,s),S(K,$)),j.phase==="verified"||(await ee(j,K,$),j.phase==="confirmed"&&(j=j.version===2?await t.journal.recordVerified(j.mutationId,s):await t.journal.recordResourceVerified(j.mutationId,s),S(K,$))),j}async function ne(j,K){let $=await t.journal.load(s);if(S(j,K),!$)return{journaled:!1,previous:null};if($=qt($,t.scope),$.version===1||$.phase==="prepared")throw Be("recovery_required");if($.phase==="attempted"&&($.version===3||$.version===4)&&t.journal.recordResourceRejected){let J=await t.client.awaitReceipt($.mutationId,12e4,s);S(j,K),J.mutation===$.mutationId&&J.state==="rejected"&&($=qt(await t.journal.recordResourceRejected($.mutationId,s),t.scope),S(j,K))}if($.version===1)throw Be("recovery_required");return $.phase==="rejected"?{journaled:!0,previous:$.version===4?$.previous:null}:{journaled:!0,previous:await V($,j,K)}}async function G(j,K){let $=t.compiledManifest.manifest,J=await Bw(e.assess($,s,j),j),be=J;J.status==="conflict"&&!J.review&&(be=await e.assess($,s,ni({})));let ye=BM(be);if(!ye.compatible.size)return{assessed:J,manifest:$,newer:ye};let we=FM($,ye.compatible),et=K?j??ni({}):j;return J=await Bw(e.assess(we,s,et),et),{assessed:J,manifest:we,newer:ye}}async function W(j,K,$={}){S(K);let J=await t.client.readyForRead(s);S(K,J),A.length||(y=v(),A.push(t.client.onStatus(Sr=>{Dw(Sr)&&(y=null),P()}),t.client.onLink(P))),b=!1;let{journaled:be,previous:ye}=await ne(K,J);if(!e)throw Be("unsupported");let we=null;try{we=sl(await t.client.describe(s))}catch{}S(K,J);let et=await G($.decisions,!1),qe=et.assessed,Dt=et.manifest;if(S(K,J),!zw.test(qe.assessmentDigest)||!["current","provision","conflict"].includes(qe.status))throw Be("response");if($.expected!==void 0&&qe.assessmentDigest!==$.expected)throw Fw();let tt=!be&&t.setupMode==="approved-new";if(qe.status==="provision"&&(j||tt)){if(t.setupMode==="reconcile-original")throw Be("recovery_required");if(!(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack"))||!J.hello.grant.capabilities.includes("definitions.manage"))throw Be("not_authorized");let Sr=$.records??[];if(Sr.length&&!J.hello.grant.capabilities.includes("records.create"))throw Be("not_authorized");let as=xt(await Bw(e.apply(Dt,qe.assessmentDigest,s,$.decisions),$.decisions));if(S(K,J),as.assessmentDigest!==qe.assessmentDigest)throw Be("response");if(as.sources.length)throw Be("unsupported_source_provision");let he=Sr.length?xt({...as,sources:Sr.map(nt=>({id:crypto.randomUUID(),path:nt.path,document:nt.document}))}):as,me;if(ye){if(!t.journal.prepareResourceRound)throw Be("recovery_required");me=await t.journal.prepareResourceRound(he,ye.mutationId,s)}else me=await t.journal.prepareResources(he,s);if(S(K,J),me=qt(me,t.scope),me.version!==3&&me.version!==4||me.phase!=="prepared"||JSON.stringify(me.plan)!==JSON.stringify(he))throw Be("recovery_required");let Fe=qt(await t.journal.recordResourceAttempt(me.mutationId,s),t.scope);if(S(K,J),Fe.version!==3&&Fe.version!==4||Fe.mutationId!==me.mutationId||Fe.phase!=="attempted"||JSON.stringify(Fe.plan)!==JSON.stringify(he))throw Be("recovery_required");let Tn=[...he.resourceOps,...he.sources.map(nt=>({kind:"create",id:nt.id,path:nt.path,document:nt.document}))],Mn=await t.client.submit(Tn,{mutationId:me.mutationId,wait:"confirmed",signal:s});if(S(K,J),Mn.length!==1||Mn[0].mutationId!==me.mutationId)throw Be("recovery_required");let Ci;try{Ci=await Mn[0].confirmed}catch(nt){throw S(K,J),Mn[0].receipt.state!=="rejected"||!t.journal.recordResourceRejected?nt:(await t.journal.recordResourceRejected(me.mutationId,s),S(K,J),Fw(me.mutationId,nt))}if(S(K,J),Ci.state!=="confirmed"||Ci.status!=="applied"||(Ci.conflicts?.length??0)!==0)throw Be("recovery_required");await V(Fe,K,J),b=!1,y=v();try{we=sl(await t.client.describe(s))}catch{we=null}if(qe=await e.assess(Dt,s),S(K,J),qe.status!=="current"||!zw.test(qe.assessmentDigest))throw Be("recovery_required")}let Ve=qe.status==="conflict"?et.newer.major.length?"installed_newer":"configuration_conflict":null,qn=Ve?Object.freeze({code:Ve}):null,kr=Object.freeze({status:qe.status==="current"?"ready":qe.status==="conflict"?"incompatible":"setup_required",problem:qn});d=J,u=we;let xi=Object.freeze({checking:!1,assessment:kr,problem:qn});return m=0,x(b?_r(null,!0):xi),S(K,J),xi}function Z(j={}){try{S(j.signal)}catch(J){return Promise.reject(J)}let K=p,$=(K?K.then(()=>{},()=>{}):Promise.resolve()).then(()=>Y(j));return p=$,$.finally(()=>{p===$&&(p=null)}).catch(()=>{}),$}async function Y(j){let K=Ph(j.records),$=ni(j.adopt===void 0?{}:{adopt:j.adopt}),J=AbortSignal.any([s,...j.signal?[j.signal]:[]]),be=await t.client.readyForRead(s);if(S(J,be),await ne(J,be),!e)throw Be("unsupported");let{assessed:ye,newer:we}=await G($,!0);if(S(J,be),!ye.review)throw Be("response");let et=[];if(ye.status!=="current")for(let tt of K){let Ve=await t.client.find({path:tt.path},void 0,s);S(J,be),et.push({path:tt.path,free:Ve===null})}let qe=be.hello.grant.capabilities,Dt=up(ye,{records:et,canManage:qe.includes("definitions.manage")&&(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack")),canCreateRecords:qe.includes("records.create"),newer:we});return k.set(Dt,Object.freeze({decisions:$,records:K.filter(tt=>et.some(Ve=>Ve.path===tt.path&&Ve.free))})),Dt}function te(j,K={},$,J=!1){try{S(K.signal)}catch(we){return Promise.reject(we)}if(p&&p===g){let we=p;return we.then(()=>{},()=>{}).then(()=>p&&p!==we?Promise.reject(Be("busy")):te(j,K,$))}if(p)return Promise.reject(Be("busy"));let be=AbortSignal.any([s,...K.signal?[K.signal]:[]]),ye=Promise.resolve().then(()=>W(j,be,$)).catch(we=>{let et=s.aborted||be.aborted,qe=X(we)&&we.reason==="configuration_busy_timeout";qe&&(b=!1);let Dt=!et&&!qe&&(b||pI(we));throw Dt&&pI(we)&&(b=!0,m=Math.min(m+1,4)),!et&&!qe&&!b&&J&&m<5&&!c&&t.isCurrent()===!0&&(m++,b=!0,Dt=!0),x(Dt?_r(null,!0):_r(et?"configuration_fenced":qe?"configuration_busy_timeout":"configuration_unavailable")),we});return p=ye,x(_r(null,!0)),ye.finally(()=>{p===ye&&(p=null),g===ye&&(g=null),E()}).catch(()=>{}),ye.then(we=>(S(be,d),we))}let ze=()=>{if(!l){c=!0,t.signal.removeEventListener("abort",mt),o.abort();for(let K of A.splice(0))K();x(_r("configuration_fenced"));let j=p;l=Promise.resolve().then(async()=>{await j})}return l},mt=()=>{ze().catch(()=>{})};return t.signal.addEventListener("abort",mt,{once:!0}),Object.freeze({getSnapshot:O,subscribe(j){return r.add(j),()=>{r.delete(j)}},assess:j=>te(!1,j),configure:j=>te(!0,j),plan:Z,async apply(j,K={}){let $=k.get(j);if(!$)throw new TypeError("setup.apply needs a plan returned by setup.plan");if(j.refusal)throw _(j.refusal.code==="setup_conflict"?"conflict":j.refusal.code==="installed_newer"?"upgrade_required":"forbidden",j.refusal.message,j.refusal.code);if(j.status==="current"){await te(!1,K,{decisions:$.decisions,expected:j.digest});return}await te(!0,K,{decisions:$.decisions,expected:j.digest,records:$.records})},close:ze})}var lI,zw,Be,Fw,Bw,VM,WM,pI,_r,uI=I(()=>{"use strict";re();Zo();$w();ro();_u();xh();lI=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,zw=/^sha256:[0-9a-f]{64}$/,Be=n=>_("unavailable","application configuration unavailable",`configuration_${n}`),Fw=(n,e)=>new se(_("conflict","This collection changed since the setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e===void 0?{}:{cause:e}}),Bw=async(n,e)=>{try{return await n}catch(t){throw e?.adopt&&Object.keys(e.adopt).length&&X(t,"unavailable")&&t.reason==="resource_setup_unavailable"?Fw(void 0,t):t}};VM=15e3,WM=(n,e)=>new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})});pI=n=>X(n)&&n.reason==="configuration_busy",_r=(n=null,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n}):null})});function fI(n){return{issuer:n.issuer,subject:n.subject,name:n.name,...n.accountId===void 0?{}:{account_id:n.accountId}}}function hI(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.people,p=n.isCurrent.bind(n),l=typeof a?.current=="function"?a.current.bind(a):void 0,c=typeof a?.members=="function"?a.members.bind(a):void 0,d=new Set,u=os(null),f=!1,h=!1,m=null;function b(){try{return f||r.aborted||p()!==!0?!1:!f&&!r.aborted&&n.scope===e&&n.generation===s&&n.signal===r&&n.people===a&&!!s&&s.length<=256&&[t,i,o].every(k=>typeof k=="string"&&!!k&&k.length<=128)&&e.account===t&&e.installation===i&&e.collection===o}catch{return!1}}function w(k){u=b()?k:Ar;for(let S of[...d])try{S()}catch{}b()||(u=Ar)}function g(){return b()||(u=Ar),u}function y(){if(!f){f=!0,r.removeEventListener("abort",y),u=Ar;for(let k of[...d])try{k()}catch{}d.clear()}}r.addEventListener("abort",y,{once:!0}),r.aborted&&y();function v(k,S){return!b()||S?.aborted?Promise.reject(vp()):new Promise((x,P)=>{let C=!1,E=(z,ee)=>{C||(C=!0,S?.removeEventListener("abort",O),r.removeEventListener("abort",O),d.delete(L),ee!==void 0?P(ee):x(z))},O=()=>E(void 0,vp()),L=()=>{b()||O()};d.add(L),S?.addEventListener("abort",O,{once:!0}),r.addEventListener("abort",O,{once:!0}),k.then(()=>{!b()||S?.aborted?O():E(g())},()=>E(void 0,vp())),(!b()||S?.aborted)&&O()})}function A(k={}){let S=k.signal;if(!b()||S?.aborted)return Promise.reject(vp());if(m)return Promise.reject(_("unavailable","People readiness READ is occupied","people_readiness_busy"));let x=Promise.resolve().then(async()=>{if(!b())return Ar;if(!l||!c)return os("people_unsupported");try{let C=await l({signal:r});if(!b()||(Ka("identity",{...fI(C),...C.personSettingsUrl===void 0?{}:{person_settings_url:C.personSettingsUrl}}),!b()))return Ar;let E=await c({signal:r});return b()?!Array.isArray(E)||E.length>1e3?os("people_response"):(Ka("members",{members:Array.from(E,O=>({...fI(O),role:O.role}))}),b()?KM:Ar):Ar}catch{return os(b()?"people_unavailable":"people_fenced")}});m=x,w(os(null,!0));let P=x.then(C=>(w(C),g()),()=>(w(os("people_unavailable")),g())).finally(()=>{m===x&&(m=null)});return v(P,S)}return Object.freeze({getSnapshot:g,subscribe(k){return f?()=>{}:(d.add(k),()=>{d.delete(k)})},start(k={}){return h?v(m??Promise.resolve(g()),k.signal):!b()||k.signal?.aborted?Promise.reject(vp()):(h=!0,A(k))},refresh:A,close:y})}var os,Ar,KM,vp,mI=I(()=>{"use strict";ap();re();os=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:Object.freeze({code:n})}),Ar=os("people_fenced"),KM=Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),vp=()=>_("cancelled","People readiness ended","people_readiness_fenced")});function Uh(n){if(!n||!Array.isArray(n.criteria))return Object.freeze([]);let e=n.criteria.filter(t=>t?.event?.id===If.id&&t.event.version===If.version&&t.event.digest===If.digest).map(t=>t.id);return Object.freeze([...new Set(e)])}var Vw=I(()=>{"use strict";zc()});function yI(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.isCurrent.bind(n),p=n.notifications,l=p?.declaration,c=p?.timerNamespace,d=n.timers,u=typeof d?.list=="function"?d.list.bind(d):void 0,f=new Set,h=ki(null),m=!1,b=!1,w=null;function g(){try{return m||r.aborted||a()!==!0?!1:!m&&!r.aborted&&n.signal===r&&n.scope===e&&n.generation===s&&!!s&&s.length<=256&&[t,i,o].every(x=>typeof x=="string"&&!!x&&x.length<=128)&&e.account===t&&e.installation===i&&e.collection===o&&n.notifications===p&&p?.declaration===l&&p?.timerNamespace===c&&n.timers===d}catch{return!1}}function y(x){h=g()?x:Dh;for(let P of[...f])try{P()}catch{}g()||(h=Dh)}function v(){return g()||(h=Dh),h}function A(){if(!m){m=!0,r.removeEventListener("abort",A),h=Dh;for(let x of[...f])try{x()}catch{}f.clear()}}r.addEventListener("abort",A,{once:!0}),r.aborted&&A();function k(x,P){return!g()||P?.aborted?Promise.reject(_p()):new Promise((C,E)=>{let O=!1,L=(V,ne)=>{O||(O=!0,P?.removeEventListener("abort",z),r.removeEventListener("abort",z),f.delete(ee),ne!==void 0?E(ne):C(V))},z=()=>L(void 0,_p()),ee=()=>{g()||z()};f.add(ee),P?.addEventListener("abort",z,{once:!0}),r.addEventListener("abort",z,{once:!0}),x.then(()=>{!g()||P?.aborted?z():L(v())},()=>L(void 0,_p())),(!g()||P?.aborted)&&z()})}function S(x={}){let P=x.signal;if(!g()||P?.aborted)return Promise.reject(_p());if(w)return Promise.reject(_("unavailable","Notification readiness READ is occupied","notification_readiness_busy"));let C=Promise.resolve().then(async()=>{if(!g())return ki("notifications_fenced");if(l===null&&p&&Object.hasOwn(p,"declaration"))return Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null});if(!u&&Uh(l).length)return ki("notifications_consent_required");if(!l||typeof l!="object"||!u||typeof c!="string"||!/^[A-Za-z0-9._-]{1,64}$/.test(c))return ki("notifications_unsupported");try{let O=await u(c,{signal:r});return g()?!O||O.namespace!==c||!Array.isArray(O.timers)||O.timers.length>1e4?ki("notifications_response"):ki("notifications_unsupported"):ki("notifications_fenced")}catch{return ki(g()?"notifications_unavailable":"notifications_fenced")}});w=C,y(ki(null,!0));let E=C.then(O=>(y(O),v()),()=>(y(ki("notifications_unavailable")),v())).finally(()=>{w===C&&(w=null)});return k(E,P)}return Object.freeze({getSnapshot:v,subscribe(x){return m?()=>{}:(f.add(x),()=>{f.delete(x)})},start(x={}){return b?k(w??Promise.resolve(v()),x.signal):!g()||x.signal?.aborted?Promise.reject(_p()):(b=!0,S(x))},refresh:S,close:A})}var HM,ki,Dh,_p,gI=I(()=>{"use strict";re();Vw();HM=n=>Object.freeze({code:n}),ki=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:HM(n)}),Dh=ki("notifications_fenced"),_p=()=>_("cancelled","Notification readiness ended","notification_readiness_fenced")});function vI(n){let e=new Set,t=!1,i=()=>{if(t||!n.isCurrent())return bI;let s=n.declaration;if(!s)return Ww;let r;try{r=n.grant()}catch{return GM}return r?s.required.some(a=>!r.actions.includes(a))?wI("files_access_missing"):n.scope==="collection"&&r.scope.kind!=="collection"?wI("files_scope_missing"):Ww:Ww},o=i();return Object.freeze({getSnapshot:()=>t||!n.isCurrent()?bI:o,subscribe(s){return t?()=>{}:(e.add(s),()=>{e.delete(s)})},async refresh(){let s=i();if(s!==o){o=s;for(let r of[...e])try{r()}catch{}}return o},close(){t=!0,e.clear()}})}var $h,Ww,bI,GM,wI,_I=I(()=>{"use strict";$h=n=>Object.freeze(n),Ww=$h({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),bI=$h({checking:!1,assessment:null,problem:Object.freeze({code:"files_fenced"})}),GM=$h({checking:!1,assessment:null,problem:Object.freeze({code:"files_unavailable"})}),wI=n=>$h({checking:!1,assessment:Object.freeze({status:"incompatible",problem:Object.freeze({code:n})}),problem:null})});var zh,AI=I(()=>{"use strict";Mw();aI();uI();mI();gI();Vw();Nl();vh();_I();zh=class{constructor(e,t,i,o="block",s=()=>[]){this.typeIssues=o;this.consented=s;this.compiled=e,this.signal=i,this.ui=new il(t,i,Uh(this.compiled.manifest.notifications)),i.addEventListener("abort",this.abort,{once:!0})}typeIssues;consented;ui;signal;compiled;listeners=new Set;selected=null;epoch=0;opening=null;retiring=null;closing=null;changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}connection(e){return this.ui.connection(e)}getReadiness(){return this.selected?.readiness.getSnapshot()??null}selectedId(){return this.selected?.connection.id??null}adopt(e,t,i){let o=this.epoch,s=()=>!this.signal.aborted&&!this.closing&&!this.retiring&&this.epoch===o&&i(),r=!!this.opening||!!this.selected||!!this.retiring||!!this.closing,a=this.ui.adopt(e,{caller:t,isCurrent:s});if(r)return a;let p=null,l=[],c=a.then(d=>{if(!s()||t.aborted)throw new Ut("application_connection_fenced");let u=this.ui.owned();if(!u)throw new Ut("application_connection_binding");let f=bh(this.compiled);f&&z_(d.files,uC(f,()=>this.consented(d.id)));let h=new AbortController,m=AbortSignal.any([this.signal,h.signal]);p=h;let b=()=>s()&&d.isCurrent(),w={scope:d.scope,generation:d.generation,signal:m,isCurrent:b},g=dI({client:d.records,compiledManifest:this.compiled,journal:u.journal,...w,setupMode:u.setupMode},u.resourceSetup);l.push(()=>g.close());let y={getSnapshot:g.getSnapshot,subscribe:g.subscribe,refresh:g.assess,close:g.close},v=hI({people:d.people,...w});l.push(()=>v.close());let A=this.compiled.manifest.notifications,k=yI({notifications:{declaration:A?.criteria?.length?A:null},timers:d.timers,...w});l.push(()=>k.close());let S=this.compiled.manifest.requirements.files?.scope?.kind,x=vI({declaration:f,scope:typeof S=="string"?S:null,grant:()=>d.files.grant,isCurrent:b});l.push(()=>x.close());let P=this.compiled.nativeCapabilities?{...this.compiled.nativeCapabilities,contracts:this.compiled.manifest.requirements.contracts,typeIssues:this.typeIssues}:null,C=new Nh({connection:d,nativeRequirements:P,signal:m,isCurrent:b,configuration:y,files:x,people:v,notifications:k}),E=C.subscribe(this.changed);return this.selected={connection:d,lifetime:h,readiness:C,configuration:g,unsubscribe:E},p=null,l.length=0,this.changed(),d}).catch(async d=>{p?.abort();let f=(await Promise.allSettled([this.ui.retire(),...l.map(h=>Promise.resolve().then(h))])).find(h=>h.status==="rejected");throw f?.status==="rejected"?f.reason:d}).finally(()=>{this.opening===c&&(this.opening=null)});return this.opening=c,c}assess(e={}){return!this.selected||!this.selected.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new Ut("application_connection_fenced")):this.selected.readiness.refresh(e)}async configure(e={}){let t=this.selected,i=this.epoch;if(!t||!t.connection.isCurrent()||this.retiring||this.closing)throw new Ut("application_connection_fenced");if(await t.configuration.configure(e),e.signal?.aborted||this.epoch!==i||this.selected!==t||!t.connection.isCurrent())throw new Ut("application_connection_fenced");return t.readiness.refresh(e)}planSetup(e={}){let t=this.selected;return!t||!t.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new Ut("application_connection_fenced")):t.configuration.plan(e)}async applySetup(e,t={}){let i=this.selected,o=this.epoch;if(!i||!i.connection.isCurrent()||this.retiring||this.closing)throw new Ut("application_connection_fenced");if(await i.configuration.apply(e,t),t.signal?.aborted||this.epoch!==o||this.selected!==i||!i.connection.isCurrent())throw new Ut("application_connection_fenced");return i.readiness.refresh(t)}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.selected,t=this.opening;e?.lifetime.abort(),e?.unsubscribe();let i=this.ui.retire(),o=Promise.resolve().then(async()=>{let r=(await Promise.allSettled([i,t?.catch(()=>{}),e?.readiness.close()])).find(a=>a.status==="rejected");if(r?.status==="rejected")throw r.reason;this.selected===e&&(this.selected=null)});return this.retiring=o,this.changed(),o.then(()=>{this.retiring===o&&(this.retiring=null),this.changed()},()=>{}),o}close(){return this.closing?this.closing:(this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{await this.retire(),await this.ui.close(),this.listeners.clear()}),this.closing)}}});function kI(n){return typeof n=="string"&&YM.includes(n)}var YM,SI=I(()=>{"use strict";YM=["joining","opening_store","connecting_log","syncing","loading_snapshot","replaying","waiting_for_key","verifying_read","checking_setup"]});function Kw(n,e){return!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join()?al():n}function Hw(n){(typeof n!="string"||!JM.test(n)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(n))&&al()}function PI(n){let e=Kw(n,"rpc,action,value");if((!Number.isSafeInteger(e.rpc)||e.rpc<1||e.rpc>4294967295)&&al(),e.action==="cancel")e.value!==null&&al();else if(e.action==="prepare"){let t=Kw(e.value,`requestId,accountId,appId,challenge${Object.hasOwn(e.value,"authorizationId")?",authorizationId":""}`);for(let i of["requestId","accountId","appId"])Hw(t[i]);t.authorizationId!==void 0&&Hw(t.authorizationId),(typeof t.challenge!="string"||!/^[0-9a-f]{64}$/.test(t.challenge))&&al()}else if(e.action==="finish"){let t=Kw(e.value,"requestId,authorizationRequestId,collectionId");for(let i of Object.keys(t))Hw(t[i])}else al();return Object.freeze({...e,value:e.value===null?null:Object.freeze({...e.value})})}var JM,al,xI=I(()=>{"use strict";eh();JM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,al=()=>{throw new Se("application_worker_binding")}});function Gw(n){if(!n||typeof n!="object"||Array.isArray(n))throw new Se("application_worker_binding");let e=n;if(!["not_started","starting","signed_out","authorizing","unselected","opening","setup_required","ready","blocked","closed"].includes(e.status)||!(e.openingProgress==null||typeof e.openingProgress=="string")||!Array.isArray(e.collections)||e.collections.length>1024||!(e.selectedCollectionId===null||typeof e.selectedCollectionId=="string")||!(e.problem===null||typeof e.problem=="string"&&/^[a-z0-9_-]{1,128}$/.test(e.problem))||!(e.unsynced==null||typeof e.unsynced=="object"&&e.unsynced.collectionId===e.selectedCollectionId&&typeof e.unsynced.sessionStatus=="string")||!(e.unsyncedWork==null||typeof e.unsyncedWork=="object"&&Number.isSafeInteger(e.unsyncedWork.since)&&e.unsyncedWork.since>=0))throw new Se("application_worker_binding");return Object.freeze({...e,openingProgress:kI(e.openingProgress)?e.openingProgress:null})}var ll,Bh,CI=I(()=>{"use strict";SI();xI();eh();ll=class extends Error{constructor(t){super("SDK application operation unavailable");this.code=t;this.name="ApplicationWorkerReplyError"}code};Bh=class{port;binding;owner;nextId=0;active=null;portal=null;fault=null;stopping=null;stopReply=null;watch=null;abandoned=!1;constructor(e,t,i){if(!Ax(t))throw new Se("application_worker_binding");this.port=e,this.binding=t,this.owner=Object.freeze({...i}),e.addEventListener("message",this.message),e.addEventListener("messageerror",this.messageError),e.start()}id(){if(this.nextId===Qf)throw new Se("application_worker_stop_failed");return++this.nextId}send(e,t,i){let o=Xb([ti,this.binding,e,t,i],this.binding);try{this.port.postMessage(o)}catch{throw this.quarantine("application_worker_unavailable"),this.fault}}request(e,t,i,o){if(this.fault||this.stopping||i.aborted)return Promise.reject(this.fault??new Se("application_worker_fenced"));if(this.active)return Promise.reject(new Se("application_worker_busy"));let s;try{s=this.id(),Xb([ti,this.binding,s,e,t],this.binding)}catch(p){return Promise.reject(p)}if(o){if(!["authorize","renewExpiredPairing","requestFileAccess"].includes(e))return Promise.reject(new Se("application_worker_binding"));this.portal?.life.abort();try{this.portal?.value.close()}catch{return this.quarantine("application_worker_stop_failed"),Promise.reject(this.fault)}this.portal={id:s,value:o,caller:i,life:new AbortController,lastRpc:0,busy:!1},this.watchPortal()}let r,a=new Promise(p=>{r=p});return new Promise((p,l)=>{let c={id:s,caller:i,done:a,finish:r,resolve:p,reject:l,fenced:!1,reply:!1,handoff:null,cancel:()=>{c.fenced=!0,l(new Se("application_worker_fenced"))}};this.active=c,i.addEventListener("abort",c.cancel,{once:!0});try{this.send(s,e,t)}catch(d){l(d)}i.aborted&&c.cancel()})}drain(){return this.fault?Promise.reject(this.fault):this.active?.done??Promise.resolve()}setForeground(e){!this.stopping&&!this.fault&&this.send(0,"foreground",e)}watchPortal(){this.watch!==null&&clearInterval(this.watch),this.watch=null;let e=this.portal;!e||!("closed"in e.value)||(this.watch=setInterval(()=>{if(this.portal!==e||this.stopping||this.fault){clearInterval(this.watch),this.watch=null;return}let t=!1;try{t=e.value.closed===!0}catch{}if(t){clearInterval(this.watch),this.watch=null,e.lastRpc===0&&(this.portal=null);try{this.send(0,"approvalClosed",!0)}catch{}}},500))}messageError=()=>this.quarantine("application_worker_unavailable");quarantine(e){if(!this.fault){this.fault=new Se(e),this.active&&(this.active.fenced=!0,this.active.reject(this.fault)),this.stopReply?.reject(this.fault);try{this.owner.failed?.(this.fault)}catch{}}}message=e=>{try{let t=e.data;if(!Array.isArray(t)||t.length!==5||t[0]!==ti||t[1]!==this.binding||!Number.isInteger(t[3])||t[3]<0||t[3]>Qf)throw new Se("application_worker_binding");if(this.fault)return;let[,,i,o,s]=t;if(i==="nativeSnapshot"){if(o!==0)throw new Se("application_worker_binding");let l=Gw(s);this.stopping||this.owner.snapshot(l);return}if(i==="fatal"){if(o!==0)throw new Se("application_worker_binding");this.quarantine("application_worker_stop_failed");return}if(i==="nativeAuthorization"){let l=PI(s),c=this.portal;if(!c||c.id!==o||this.stopping||c.caller.aborted||l.rpc<=c.lastRpc)throw new Se("application_worker_fenced");if(c.lastRpc=l.rpc,l.action==="cancel")c.life.abort();else if(c.busy)throw new Se("application_worker_binding");l.action!=="cancel"&&(c.busy=!0);let d=AbortSignal.any([c.caller,c.life.signal]);Promise.resolve().then(()=>{if(!this.owner.nativeAuthorization)throw new Se("application_worker_unavailable");return this.owner.nativeAuthorization(l,c.value,d)}).then(u=>{if(d.aborted||this.portal!==c||this.stopping)throw new Se("application_worker_fenced");this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!0,value:u}])},()=>{this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}).catch(()=>{try{this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}catch{}}).finally(()=>{c.busy=!1});return}if(i==="portal"){if(!s||!["navigate","close"].includes(s.action))throw new Se("application_worker_binding");let l=this.portal;if(!l||l.id!==o)return;if(s.action==="close")l.life.abort(),l.value.close(),this.portal=null;else{if(this.stopping||typeof s.uri!="string"||s.uri.length>8192)throw new Se("application_worker_binding");l.value.navigate(s.uri)}return}if(i==="handoff"&&o===0){if(!s||s.schema!=="mdbn-app-collection/1")throw new Se("application_worker_binding");let l=[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]];if(l.some(c=>!(c instanceof MessagePort)))throw new Se("application_worker_binding");if(this.stopping||!this.owner.attached){for(let c of l)c.close();return}this.owner.attached(s);return}if(i==="handoff"){let l=this.active;if(!l||l.id!==o||l.reply||l.handoff)throw new Se("application_worker_binding");if(this.stopping){if(!s||s.schema!=="mdbn-app-collection/1")throw new Se("application_worker_binding");for(let c of[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]]){if(!(c instanceof MessagePort))throw new Se("application_worker_binding");c.close()}l.handoff=Promise.resolve();return}l.handoff=Promise.resolve().then(()=>this.owner.handoff(s,l.caller)),l.handoff.catch(()=>{});return}if(i!=="reply"||!s||typeof s.ok!="boolean"||!s.ok&&(!s.problem||typeof s.problem.code!="string"||s.problem.code.length>128))throw new Se("application_worker_binding");let r=this.stopReply;if(r&&r.id===o){if(s.ok){let l=Gw(s.snapshot);if(l.status!=="closed"||l.selectedCollectionId!==null)throw new Se("application_worker_stop_failed");r.resolve()}else r.reject(new Se("application_worker_stop_failed"));return}let a=this.active;if(!a||a.id!==o||a.reply)throw new Se("application_worker_binding");a.reply=!0;let p=s.ok?Gw(s.snapshot):null;this.settle(a,p,s.ok?null:Object.freeze({code:s.problem.code}))}catch{this.quarantine("application_worker_binding")}};async settle(e,t,i){try{if(await e.handoff,e.fenced||e.caller.aborted||this.stopping||this.fault)throw this.fault??new Se("application_worker_fenced");if(i)throw new ll(i.code);t&&e.resolve(t)}catch(o){e.reject(o)}finally{e.caller.removeEventListener("abort",e.cancel),this.active===e&&(this.active=null),e.finish()}}abandon(){if(this.abandoned)return;this.abandoned=!0,this.fault||(this.fault=new Se("application_worker_fenced")),this.watch!==null&&(clearInterval(this.watch),this.watch=null);let e=this.active;e&&(e.fenced=!0,e.reject(this.fault),e.finish(),this.active=null),this.stopReply?.reject(this.fault),this.stopReply=null,this.portal?.life.abort();try{this.portal?.value.close()}catch{}this.portal=null;try{this.owner.releaseWorker()}catch{}this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}close(){if(this.stopping)return this.stopping;let e=this.active;return e&&(e.fenced=!0,e.reject(new Se("application_worker_fenced"))),this.stopping=Promise.resolve().then(async()=>{if(this.fault)throw new Se("application_worker_stop_failed");this.portal?.life.abort(),this.portal?.value.close(),this.portal=null;let t=this.id();if(await new Promise((i,o)=>{this.stopReply={id:t,resolve:i,reject:o};try{this.send(t,"close",null)}catch(s){o(s)}}),await e?.done,this.fault)throw new Se("application_worker_stop_failed");this.owner.releaseWorker(),this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}).catch(t=>{throw this.quarantine("application_worker_stop_failed"),t}),this.stopping}}});var II={};ps(II,{ApplicationRuntime:()=>Jw,ApplicationRuntimeError:()=>ln});var ln,Yw,Jw,OI=I(()=>{"use strict";ZC();AI();Mw();bt();vh();CI();Zb();ln=class extends Error{constructor(t){super("SDK application runtime unavailable");this.code=t;this.name="ApplicationRuntimeError"}code},Yw=()=>{let n=Object.freeze({checking:!1,assessment:null,problem:null});return Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:n,contracts:n,configuration:n,files:n,people:n,notifications:n})})},Jw=class{lifetime=new AbortController;scope;worker;cpOrigin;lab;appName;sourceAdopt=null;listeners=new Set;unsubscribe;raw=Object.freeze({status:"not_started",collections:Object.freeze([]),selectedCollectionId:null,signIn:null,problem:null,timing:null});snapshot=Object.freeze({...this.raw,readiness:Yw()});pending=null;closing=null;epoch=0;loggedProblem=null;assessing=!1;retiring=!1;closed=!1;stopped=!1;stopFailed=!1;constructor(e){this.cpOrigin=e.cpOrigin,this.appName=e.declaration.name,this.lab=en(e.declaration.environment),this.scope=new zh(e.compiledManifest,{name:e.declaration.name,version:"1"},this.lifetime.signal,e.typeIssues,t=>wh(this.raw,t)),this.worker=new Bh(e.port,e.binding,{snapshot:t=>{this.closed||(this.raw=t,this.followSession(),this.publish())},handoff:(t,i)=>{if(this.sourceAdopt)return this.sourceAdopt(t,i);let o=this.epoch;return this.scope.adopt(t,i,()=>!this.closed&&this.epoch===o).then(()=>{this.portsFailed=null},s=>{throw this.portsFailed=t.scope.collection,s})},attached:t=>this.attached(t),releaseWorker:e.releaseWorker,...e.nativeAuthorization?{nativeAuthorization:e.nativeAuthorization}:{},failed:t=>{this.closed||(this.raw=Object.freeze({...this.raw,status:"blocked",problem:t.code}),this.publish())}}),this.unsubscribe=this.scope.subscribe(()=>this.publish())}portsFailed=null;attached(e){let t=()=>{for(let o of[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]])try{o.close()}catch{}};if(this.closed){t();return}let i=this.lifetime.signal;this.queue(()=>this.action(async()=>{if(this.raw.selectedCollectionId!==e.scope.collection)return t(),this.snapshot;this.scope.selectedId()!==null&&(++this.epoch,await this.retireOwn());let o=this.epoch;return await this.scope.adopt(e,i,()=>!this.closed&&this.epoch===o).catch(s=>{throw this.portsFailed=e.scope.collection,s}),this.portsFailed=null,this.complete(this.raw,i)},i)).catch(()=>{this.closed||this.publish()})}followSession(){if(this.pending)return;let e=this.raw.status==="ready"||this.raw.status==="setup_required",t=this.raw.selectedCollectionId,i=this.scope.selectedId();if(i!==null&&(i!==t||!e&&this.raw.status!=="opening"&&this.raw.status!=="authorizing")){let o=this.lifetime.signal;this.queue(()=>this.action(async()=>(this.scope.selectedId()===i&&(++this.epoch,await this.retireOwn()),this.publish(),this.snapshot),o)).catch(()=>{})}}connection(e){return this.closed?null:this.scope.connection(e)}getSnapshot(){return this.snapshot}getNativeSnapshot(){return this.raw}async queue(e){for(;this.pending&&!this.closed;)await this.pending.catch(()=>{});return e()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(){if(this.closed)this.snapshot=Object.freeze({...this.raw,status:this.stopped?"closed":"blocked",problem:this.stopped?null:this.stopFailed?"application_stop_failed":"application_closing",selectedCollectionId:null,readiness:Yw()});else{let e=this.scope.getReadiness()??Yw(),t=this.raw.status,i=this.raw.problem,o,s=this.raw.selectedCollectionId,r=this.retiring&&e.problem?.code==="readiness_fenced",a=s!==null&&(this.scope.getReadiness()===null||r)&&this.portsFailed!==s;if((t==="ready"||t==="setup_required")&&a)t="opening";else if(t==="ready"||t==="setup_required"){let l=this.assessing&&!e.assessment&&e.problem?.code!=="readiness_fenced";if(t=e.checking||l?"opening":e.assessment?.status==="ready"?"ready":e.assessment?.status==="setup_required"?"setup_required":"blocked",t==="blocked"){let c=e.problem??e.assessment?.problem;i=c?.code??"application_readiness_unavailable",o=c?.detail}}let p=`${i}:${o??""}`;if(t==="blocked"&&i&&p!==this.loggedProblem){this.loggedProblem=p;try{o?console.error("mdbase application blocked:",i,o):console.error("mdbase application blocked:",i)}catch{}}else t!=="blocked"&&(this.loggedProblem=null);this.snapshot=Object.freeze({...this.raw,status:t,problem:i,openingProgress:t==="opening"?e.checking?"checking_setup":this.raw.openingProgress??null:null,collections:Object.freeze(this.raw.collections.map(l=>Object.freeze({...l}))),readiness:e})}for(let e of[...this.listeners])try{e()}catch{}}retireOwn(){return this.retiring=!0,this.scope.retire()}settled(){return this.assessing=!1,this.publish(),this.snapshot}signal(e){return e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal}action(e,t){if(this.closed||t.aborted)return Promise.reject(new ln("application_fenced"));if(this.pending)return Promise.reject(new ln("application_busy"));this.assessing=!0;let i=Promise.resolve().then(async()=>{if(this.closed||t.aborted)throw new ln("application_fenced");let o=await e();if(this.closed||t.aborted)throw new ln("application_fenced");return o}).finally(async()=>{(this.assessing||this.retiring)&&(this.assessing=!1,this.retiring=!1,this.publish()),await this.worker.drain(),this.pending===i&&(this.pending=null)});return this.pending=i,i}async complete(e,t){if(this.closed||t.aborted)throw new ln("application_fenced");let i=!!(e.selectedCollectionId&&this.scope.connection(e.selectedCollectionId));if(this.raw=e,this.assessing=i,this.publish(),i){try{await this.scope.assess({signal:t}).catch(()=>{})}finally{this.assessing=!1}this.publish()}if(this.closed||t.aborted)throw new ln("application_fenced");return this.snapshot}start(e={}){let t=this.signal(e);return this.action(async()=>this.complete(await this.worker.request("start",null,t),t),t)}authorizeReserved(e,t={},i=null){let o=this.signal(t);return this.action(async()=>this.complete(await this.worker.request("authorize",i,o,e),o),o).catch(s=>{throw e.close(),s})}authorize(e={}){let t=this.signal(e),i;try{i=th(nh(this.cpOrigin,t,()=>!this.closed,this.lab))}catch(o){return Promise.reject(o)}return this.authorizeReserved(i,e)}select(e,t={}){let i=this.signal(t);return this.action(async()=>{if(this.raw.selectedCollectionId===e&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(e)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,i):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||i.aborted)throw new ln("application_fenced");return this.complete(await this.worker.request("select",e,i),i)},i)}openUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null;if(i!==null&&this.raw.selectedCollectionId===i&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(i)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,t):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||t.aborted)throw new ln("application_fenced");return this.complete(await this.worker.request("openUnsynced",null,t),t)},t)}async retireUnsynced(e,t,i={}){let o=this.signal(i),s=!0;return await this.queue(()=>this.action(async()=>{try{return this.complete(await this.worker.request("retireUnsynced",[e,t],o),o)}catch(r){if(r instanceof ll&&r.code==="application_worker_busy")return s=!1,this.snapshot;throw r}},o)),s}discardUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null,o=i!==null&&this.raw.selectedCollectionId===i;if(o){++this.epoch;let s=this.retireOwn();if(this.publish(),await s,this.closed||t.aborted)throw new ln("application_fenced")}try{return this.complete(await this.worker.request("discardUnsynced",null,t),t)}catch(s){throw o&&s instanceof ll&&s.code==="application_worker_busy"&&!this.closed&&!t.aborted&&this.complete(await this.worker.request("openUnsynced",null,t),t),s}},t)}async withUnsyncedSource(e,t={}){let i=this.signal(t),o=new il({name:this.appName,version:"1"},i),s=null;try{if(await this.queue(()=>this.action(async()=>{this.sourceAdopt=(r,a)=>(s=o.adopt(r,{caller:a,isCurrent:()=>!this.closed&&!i.aborted}),s.then(()=>{}));try{await this.worker.request("attachUnsynced",null,i)}finally{this.sourceAdopt=null}return this.snapshot},i)),!s)throw new ln("application_connection_unavailable");return await e(await s,i)}finally{if(await o.close().catch(()=>{}),!this.closed){let r=this.lifetime.signal;await this.queue(()=>this.action(async()=>(await this.worker.request("detachUnsynced",null,r),this.snapshot),r)).catch(()=>{})}}}assess(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.assess({signal:t}),this.settled()),t).then(i=>i.readiness)}configure(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.configure({signal:t}),this.settled()),t)}planSetup(e={}){let t=this.signal(e);return this.closed||t.aborted?Promise.reject(new ln("application_fenced")):this.scope.planSetup({...e,signal:t})}applySetup(e,t={}){let i=this.signal(t);return this.action(async()=>(await this.scope.applySetup(e,{signal:i}),this.settled()),i)}clearSelection(e={}){let t=this.signal(e);return this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("clearSelection",null,t),t)),t)}forget(e,t={}){let i=this.signal(t);return this.action(async()=>(this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,i),i)),i)}refreshCollections(e={}){let t=this.signal(e);return this.action(async()=>(this.raw=await this.worker.request("refreshCollections",null,t),this.publish(),this.snapshot),t)}signOut(e={}){let t=this.signal(e),i=this.raw.selectedCollectionId,o=e.discard!==!0&&i?JC(this.scope.connection(i)):0;return o>0?Promise.reject(XC(o)):this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("signOut",null,t),t)),t)}deleteCollection(e,t,i={}){let o=this.signal(i);return this.action(async()=>(await this.worker.request("deleteCollection",[e,t],o),this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,o),o)),o)}requestFileAccess(e,t,i,o,s={}){let r=this.signal(s);return this.action(async()=>(this.raw=await this.worker.request("requestFileAccess",[t,i,o],r,e),this.publish(),this.snapshot),r).catch(a=>{throw e.close(),a})}pollFileAccess(e){let t=this.lifetime.signal;return this.action(async()=>(this.raw=await this.worker.request("pollFileAccess",e,t),this.publish(),this.snapshot),t)}setForeground(e){this.closed||this.worker.setForeground(e)}abandon(){this.closed||(this.closed=!0,this.stopped=!0,++this.epoch,this.unsubscribe(),this.listeners.clear(),this.closing=Promise.resolve(),this.worker.abandon(),this.lifetime.abort())}close(){return this.closing?this.closing:(this.closed=!0,++this.epoch,this.lifetime.abort(),this.unsubscribe(),this.closing=Promise.resolve().then(async()=>{await Promise.all([this.scope.close(),this.worker.close()]),await this.pending?.catch(()=>{}),this.stopped=!0,this.publish(),this.listeners.clear()}).catch(()=>{throw this.stopFailed=!0,this.publish(),new ln("application_stop_failed")}),this.publish(),this.closing)}}});var N2={};ps(N2,{ACCOUNT_KEY_STATES:()=>gy,API_VERSIONS:()=>dd,AppHost:()=>dv,COLLECTION_UNAVAILABLE_REASONS:()=>Gy,CborError:()=>Oe,Client:()=>Ed,DESCRIBE_TYPING_MAX_PATHS:()=>Rl,DESCRIBE_TYPING_MAX_TYPES:()=>Ol,DEVICE_KINDS:()=>yy,ERROR_CODES:()=>Rp,FilesApi:()=>ks,Float64:()=>yt,HOLD_COMPARE_SCHEME:()=>sc,HOLD_TITLE:()=>oc,IkInitiator:()=>qs,IkResponder:()=>nu,LiveQuery:()=>xs,MAX_CONVENIENCE_BYTES:()=>ud,MAX_DEPTH:()=>am,MDBASE_NOTIFICATION_CLICK:()=>lg,MDBASE_NOTIFICATION_TYPE:()=>rc,MdbaseApplicationUnavailableError:()=>Ap,MdbaseClient:()=>qi,MdbaseConnect:()=>dl,MdbaseError:()=>se,MdbasePeopleClient:()=>Ur,NoiseError:()=>rt,PERSON_CONTRACT:()=>ng,PROBLEM_CODES:()=>vk,PresenceApi:()=>Ps,READ_MANY_MAX_CONCURRENCY:()=>oy,READ_MANY_MAX_REFS:()=>ry,RecordReader:()=>Tl,SESSION_LIFETIME_MS:()=>Fy,SLOW_OPENING_MS:()=>ku,SchemaError:()=>ie,Session:()=>wo,TEMPORAL_HINTS:()=>Yp,TimersApi:()=>Ds,WasmRuntime:()=>Bs,Write:()=>ko,applicationPhase:()=>lc,approvalReadiness:()=>kA,bytesEqual:()=>fO,clientPrologue:()=>Mi,collectionUnavailableError:()=>hn,compareVersions:()=>yg,connect:()=>ky,controlRouteResolver:()=>Y0,createMdbase:()=>qI,createViewSource:()=>wd,decode:()=>ue,describeDiagnostic:()=>wu,describeError:()=>No,describeHold:()=>pk,diffEdits:()=>td,duplexCarrier:()=>Jy,effectiveCapabilities:()=>TI,encode:()=>pe,encodeSecret:()=>An,fileGrant:()=>iy,formatSas:()=>xA,framedPort:()=>ld,fromHex:()=>ds,generateKeyPair:()=>Ts,handleMdbaseNotificationClick:()=>lk,handleMdbasePush:()=>ak,holdCompareLink:()=>ug,holdNotice:()=>dk,inProcessConnector:()=>zs,indexedDbKeyStorage:()=>eg,isCollectionUnavailableReason:()=>Ns,isConfirmed:()=>G0,isErrorCode:()=>xr,isMdbaseError:()=>X,isReadyPhase:()=>Ck,isValid:()=>dO,keyPairFromSecret:()=>T0,loadOrCreateClientKey:()=>W0,localLinkConnector:()=>z0,localLinkFirstPayload:()=>Zy,mdbaseError:()=>_,memoryKeyStorage:()=>Qy,memoryWriteLedgerStore:()=>Pd,nextRelayConnector:()=>$0,noiseChannel:()=>Vy,noiseConnector:()=>Li,orderTargets:()=>Us,parseCollectionAvailability:()=>Fn,parseHoldCompareLink:()=>ck,parseMdbaseNativeNotification:()=>cg,parseMdbasePush:()=>pu,parseVersion:()=>Hs,pipeCloseError:()=>Lo,portPair:()=>R_,problemCodeOf:()=>hg,queryPages:()=>hd,readMany:()=>fd,readMdbaseNotificationData:()=>pg,readViewSourceRecord:()=>bd,recoveryFor:()=>yO,relayConnector:()=>N0,relayPipeCarrier:()=>js,resolveRecordLinks:()=>B_,revisionOf:()=>ai,routeFromControl:()=>tg,sameIdentity:()=>au,showMdbaseNotification:()=>dg,staticKeyOf:()=>eu,streamCarrier:()=>L0,structMap:()=>uO,summarizeStatus:()=>ou,syncStatusText:()=>uk,toHex:()=>oi,toPlain:()=>vs,toValue:()=>ut,updateViewSource:()=>vd,uuidv7:()=>Nn,valueEquals:()=>Rr,versionRelation:()=>Uo,webSocketCarrier:()=>Ms,wire:()=>Wm});Je();ge();re();At();At();Cs();sy();dy();Nl();Nl();uy();Ll();Ml();Ri();ge();re();Mo();Ls();ec();function N0(n){let e=U(n.collection),t=n.grant?U(n.grant):null;return Li({description:`relay:${n.collection}`,staticKey:n.staticKey,target:async()=>{let i=await n.resolveRoute();if(!i)throw _("unavailable","no device of this collection is online","no_device_online");return{prologue:Mi(e,t,U(i.targetDevice)),remoteStatic:i.noisePublicKey,device:i.targetDevice,openCarrier:o=>i.pipe?js(i.url,{accessToken:i.pipe.accessToken,collection:i.pipe.collection,grant:n.grant??"",device:i.targetDevice,devicePublicKey:i.noisePublicKey},n.webSocket,o):Ms(i.url,n.webSocket,o)}}})}Xy();Ls();Mo();Je();ge();re();At();Mo();Ls();var hR=new Uint8Array(16);function Zy(n,e){if(n.length!==32)throw _("invalid_request","the link token is 32 bytes");let t=er.dec(e);if(t.kind!=="request"||t.method!=="hello")throw _("internal","expected the hello request");return pe(new Map([[0,n],[1,t.params]]))}function z0(n){let e=U(n.collection),t=n.staticKey??Ts(),i=null;return Li({description:"localhost-link",staticKey:t,firstPayload:o=>Zy(i.token,o),target:async()=>{i=typeof n.link=="function"?await n.link():n.link;let o=i;if(!Number.isInteger(o.port)||o.port<=0||o.port>65535)throw _("unavailable","invalid local link port","daemon_not_running");let s=Mi(e,null,n.localOnly?hR:U(o.device));return{prologue:s,preamble:s,remoteStatic:o.noisePublicKey,openCarrier:r=>Ms(`ws://127.0.0.1:${o.port}/v1/plugin`,n.webSocket,r)}}})}zy();re();function Qy(){let n=new Map;return{get:async e=>n.get(e),put:async(e,t)=>{n.set(e,t)},putIfAbsent:async(e,t)=>{let i=n.get(e);return i||(n.set(e,t),t)},delete:async e=>{n.delete(e)}}}function eg(n="mdbase-keys",e="keys"){let t=globalThis.indexedDB;if(!t)throw _("invalid_request","IndexedDB is not available here; pass another KeyStorage");let i=()=>new Promise((r,a)=>{let p=t.open(n,1);p.onupgradeneeded=()=>p.result.createObjectStore(e),p.onsuccess=()=>r(p.result),p.onerror=()=>a(p.error)}),o=async(r,a)=>{let p=await i();try{return await new Promise((l,c)=>{let d=p.transaction(e,r),u,f=!1;d.oncomplete=()=>f?l(u):c(_("unavailable","key storage transaction completed without a result","key_storage")),d.onabort=()=>c(d.error??_("unavailable","key storage transaction aborted","key_storage")),d.onerror=()=>c(d.error??_("unavailable","key storage transaction failed","key_storage"));try{a(d.objectStore(e),h=>{u=h,f=!0})}catch(h){d.abort(),c(h)}})}finally{p.close()}},s=(r,a)=>o(r,(p,l)=>{let c=a(p);c.onsuccess=()=>l(c.result)});return{get:r=>s("readonly",a=>a.get(r)),put:(r,a)=>s("readwrite",p=>p.put(a,r)).then(()=>{}),putIfAbsent:(r,a)=>o("readwrite",(p,l)=>{let c=p.get(r);c.onsuccess=()=>{if(c.result!==void 0){l(c.result);return}try{let d=p.add(a,r);d.onsuccess=()=>l(a)}catch{p.transaction.abort()}}}),delete:r=>s("readwrite",a=>a.delete(r)).then(()=>{})}}function V0(){return globalThis.crypto?.subtle}async function mR(){let n=V0();if(!n)return null;try{let e=await n.generateKey({name:"X25519"},!1,["deriveBits"]),t=new Uint8Array(await n.exportKey("raw",e.publicKey));return{kind:"webcrypto",privateKey:e.privateKey,publicKey:t}}catch{return null}}function yR(n){return n.kind==="raw"?{publicKey:n.publicKey,nonExtractable:!1,dh:e=>ar.getSharedSecret(n.secretKey,e)}:{publicKey:n.publicKey,nonExtractable:!n.privateKey.extractable,dh:async e=>{let t=V0(),i=await t.importKey("raw",e,{name:"X25519"},!1,[]),o=await t.deriveBits({name:"X25519",public:i},n.privateKey,256);return new Uint8Array(o)}}}var gR=Qy(),B0=new WeakMap;function F0(n,e){if(e&&(n.kind!=="webcrypto"||n.privateKey.extractable!==!1||n.privateKey.type!=="private"||n.privateKey.algorithm.name!=="X25519"||!n.privateKey.usages.includes("deriveBits")))throw _("invalid_request","a non-extractable X25519 key is required; explicitly reauthorize incompatible stored identities","key_storage")}async function W0(n,e={}){let t=e.storage??(globalThis.indexedDB?eg():gR),i=e.requireNonExtractable,o=B0.get(t);o||(o=new Map,B0.set(t,o));let s=o.get(n);s||(s=(async()=>{let r=await t.get(n);if(r)return r;let a=await mR();if(!a){if(i)throw _("invalid_request","this platform cannot keep a non-extractable X25519 key","key_storage");let p=ar.utils.randomSecretKey();a={kind:"raw",secretKey:p,publicKey:ar.getPublicKey(p)}}return F0(a,i),t.putIfAbsent?t.putIfAbsent(n,a):(await t.put(n,a),a)})(),o.set(n,s));try{let r=await s;return F0(r,i),yR(r)}finally{o.get(n)===s&&o.delete(n)}}by();var K0={collection_not_yet_migrated:"Your collection needs an upgrade on your computer; your changes are safe",collection_migrating:"Your collection is being upgraded; changes will sync when it's done",update_required:"Update the app to keep syncing",account_suspended:"Syncing is paused: your account is suspended"},H0={offline:"You're offline",unreachable:"Can't reach the sync service",server_busy:"The sync service is busy; trying again shortly",rate_limited:"Syncing is paused for a moment",auth:"Sign in again to keep syncing"};function ou(n,e,t,i){let o=n.mode!=="local_only"&&t&&Object.hasOwn(H0,t.kind)?t.kind:null,s={pending:n.pending,holds:n.holds,conflicts:n.unresolved,confirmedThrough:n.mode==="local_only"?null:n.confirmedThrough,health:o,live:n.mode==="local_only"||typeof i!="boolean"?null:i},r=n.pending>0?`, ${n.pending} change${n.pending===1?"":"s"} waiting`:"";if(n.mode==="local_only")return{...s,kind:"local",text:n.pending?`Saving${r}`:"Saved on this device"};if(e&&Object.hasOwn(K0,e))return{...s,kind:e,text:`${K0[e]}${r}`};if(n.installing)return{...s,kind:"installing",text:`Loading the collection (${n.installing.done}/${n.installing.total})`};if(o){let p=n.pending?`. ${n.pending} change${n.pending===1?" is":"s are"} saved on this device and will sync later`:"";return{...s,kind:o==="offline"||o==="unreachable"?"offline":n.confirmedThrough<n.headKnown?"catching_up":"synced",text:`${H0[o]}${p}`}}if(n.connection!=="online")return{...s,kind:"offline",text:`Offline; synced through ${n.confirmedThrough}${r}`};if(n.confirmedThrough<n.headKnown)return{...s,kind:"catching_up",text:`Catching up (${n.confirmedThrough}/${n.headKnown})${r}`};let a=s.live===!1?". Live updates are paused; changes from other devices appear when you come back to this app":"";return{...s,kind:"synced",text:`Synced through ${n.confirmedThrough}${r}${a}`}}function G0(n){return n.state==="confirmed"}vy();ec();iu();Je();Nr();re();function tg(n,e){for(let t of n.targets??[]){if(!/^[0-9a-f]{64}$/i.test(t.noise_pk)||!t.url||!t.device)continue;let i={url:t.url,targetDevice:t.device,noisePublicKey:ds(t.noise_pk)};return t.relay_collection&&(i.pipe={collection:t.relay_collection,accessToken:e}),i}return null}function Y0(n){let e;try{e=new URL(n.server)}catch{throw _("invalid_request","The control plane requires an HTTPS origin")}if(e.protocol!=="https:"&&!!1||e.username||e.password||e.pathname!=="/"||e.search||e.hash)throw _("invalid_request","The control plane requires an HTTPS origin without credentials, path, query or fragment");let t=`${e.origin}/v1/next/collections/${encodeURIComponent(n.collection)}/route`,i=n.fetch??globalThis.fetch.bind(globalThis);return async()=>{let o=await n.accessToken(),s;try{s=await i(t,{headers:{authorization:`Bearer ${o}`},redirect:"error"})}catch{throw _("unavailable","cannot reach the control plane","control_unreachable")}if(s.status===401)throw _("unauthenticated","the control plane refused the access token");if(s.status===409)throw _("unauthenticated","this app's key is not registered with its grant","client_key_required");if(!s.ok)throw _("unavailable",`control plane answered ${s.status}`,"control_error");let r=await s.json(),a=Fn(r.availability);if(a?.state==="unavailable")throw hn(a.reason);let p=tg(r,o);if(!p&&r.reason==="no_device_registered")throw _("unavailable","this collection has no device set up to serve it","no_device_registered");return p}}Nr();lu();sg();re();var rc="mdbase.notification",lg="mdbase.notification.click",nk=/^[\x21-\x7e]{1,256}$/,PR=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,Dr=n=>_("invalid_request",n,"invalid_push_payload"),xR=()=>_("upgrade_required","The push uses an envelope version this SDK does not support.","unsupported_push_version");function rk(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{throw Dr("The push payload is not JSON.")}else if(n&&typeof n=="object"&&typeof n.json=="function")try{n=n.json()}catch{throw Dr("The push payload is not JSON.")}if(!n||typeof n!="object"||Array.isArray(n))throw Dr("The push payload is not an object.");return n}function $s(n,e,t){return typeof n=="string"&&n.length>=e&&n.length<=t}function ok(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=n;return!$s(e.title,1,80)||e.body!==void 0&&!$s(e.body,0,160)||e.tag!==void 0&&!$s(e.tag,1,80)?null:Object.freeze({title:e.title,...typeof e.body=="string"&&e.body.length?{body:e.body}:{},...typeof e.tag=="string"?{tag:e.tag}:{}})}function sk(n,e,t){if(n.type!==rc)throw Dr("The payload is not an mdbase notification.");if(e!==1)throw typeof e=="number"&&Number.isSafeInteger(e)&&e>1?xR():Dr("The payload has no valid envelope version.");if(!$s(n.signal_id,1,256)||!nk.test(n.signal_id)||!$s(n.cursor,1,256)||!nk.test(n.cursor)||!$s(n.criterion_id,1,100)||!PR.test(n.criterion_id))throw Dr("The payload is not an mdbase notification.");return Object.freeze({version:1,signalId:n.signal_id,criterionId:n.criterion_id,cursor:n.cursor,presentation:t})}function pu(n){let e=rk(n),t=sk(e,e.version,ok(e.presentation));if(!t.presentation)throw Dr("The push has no valid presentation.");return t}function cg(n){if(!n||typeof n!="object"||Array.isArray(n))throw Dr("The native notification data is not an object.");let e=n,t=typeof e.version=="string"&&/^[1-9][0-9]{0,8}$/.test(e.version)?Number(e.version):e.version;return sk(e,t,null)}function pg(n){try{return cg(n)}catch{return null}}function CR(n){return{type:rc,version:n.version,signal_id:n.signalId,criterion_id:n.criterionId,cursor:n.cursor}}async function dg(n,e,t={}){let i=pu(e),o=i.presentation;return await n.showNotification(o.title,{...o.body?{body:o.body}:{},...o.tag?{tag:o.tag}:{},...t.icon?{icon:t.icon}:{},...t.badge?{badge:t.badge}:{},data:CR(i)}),i}function ag(n){return globalThis[n]}function IR(n){let e=globalThis.location;if(typeof e?.origin=="string"&&e.origin!=="null")return e.origin;try{return n?new URL(n).origin:null}catch{return null}}function ik(n,e,t){let i=()=>_("invalid_request",`The notification click ${t} must be on the app's own origin.`,"click_target_cross_origin");if(typeof n!="string")throw i();if(e===null){if(!n.startsWith("/")||n.startsWith("//")||n.startsWith("/\\"))throw i();return n}let o;try{o=new URL(n,`${e}/`)}catch{throw i()}if(o.origin!==e)throw i();return o.href}function ak(n,e={}){let t;try{t=rk(n.data?.text()??null)}catch{return!1}if(t.type!==rc)return!1;let i=e.registration??ag("registration");if(!i)throw _("invalid_request","No service worker registration to show the notification.","push_registration_missing");let o={...e.icon?{icon:e.icon}:{},...e.badge?{badge:e.badge}:{}};return n.waitUntil((async()=>{try{pu(t)}catch(s){let r=s instanceof se&&s.reason==="unsupported_push_version"?ok(t.presentation):null;if(!r)throw s;return await i.showNotification(r.title,{...r.body?{body:r.body}:{},...r.tag?{tag:r.tag}:{},...o}),null}return dg(i,t,o)})()),!0}function lk(n,e={}){let t=pg(n.notification.data);if(!t)return!1;n.notification.close();let i=e.clients??ag("clients"),o=ag("registration")?.scope,s=IR(o),r=e.scope===void 0?o:ik(e.scope,s,"scope"),a=e.url===void 0?r??"/":ik(e.url,s,"url");return i&&n.waitUntil((async()=>{let l=(await i.matchAll({type:"window",includeUncontrolled:!0})).find(d=>!r||d.url.startsWith(r));if(!l)return i.openWindow(a);await l.focus();let c={type:lg,notification:t};return l.postMessage(c),l})()),!0}du();Je();re();ge();var Bs=class n{constructor(e){this.instance=e}instance;ports=new Map;timer=null;opened=!1;get x(){if(!this.instance)throw _("unavailable","runtime instance was discarded after an ABI failure");return this.instance}discard(){this.instance=null,this.timer&&clearInterval(this.timer),this.timer=null;for(let e of[...this.ports.values()])e.end();this.ports.clear()}static async instantiate(e){return new n(await this.load(e))}static async load(e,t){let i=null,o=null,s=t?.(()=>{if(!o)throw _("unavailable","runtime imports called before initialization");return o})??{},r=new TextDecoder,a={host_app_sql:(c,d)=>0n,host_now_ms:()=>Date.now(),host_local_date:(c,d,u,f)=>{try{let h=r.decode(new Uint8Array(i.buffer,d,u)),m=new Intl.DateTimeFormat("en-CA",{timeZone:h,year:"numeric",month:"2-digit",day:"2-digit"}).format(c);return/^\d{4}-\d{2}-\d{2}$/.test(m)?(new Uint8Array(i.buffer,f,10).set(new TextEncoder().encode(m)),10):0}catch{return 0}},host_default_zone:(c,d)=>{let u=new TextEncoder().encode(Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"),f=Math.min(u.length,d);return new Uint8Array(i.buffer,c,f).set(u.subarray(0,f)),f},host_random:(c,d)=>{let u=new Uint8Array(i.buffer,c,d);for(let f=0;f<d;f+=65536)globalThis.crypto.getRandomValues(u.subarray(f,f+65536))}},{instance:p}=await WebAssembly.instantiate(e,{env:{...a,...s}}),l=p.exports;return o=l,i=l.memory,l}put(e){if(e.length===0)return[0,0];let t=this.x.alloc(e.length);return new Uint8Array(this.x.memory.buffer,t,e.length).set(e),[t,e.length]}takeOut(e){let t=Number(e>>32n),i=Number(e&0xffffffffn);if(i===0)return new Uint8Array(0);let o=new Uint8Array(this.x.memory.buffer,t,i).slice();return this.x.dealloc(t,i),o}info(){let e=ue(this.takeOut(this.x.rt_info())),t=i=>{let[o,s]=i;return{major:o,minor:s}};return{abiMajor:e.get(0),runtimeVersion:e.get(1),sem:t(e.get(2)),serves:e.get(3).map(t)}}open(e){let t=this.x;if(this.opened)throw _("unavailable","runtime is already open");let i=e.queryExecutionProfile,o;if(i!==void 0){if(i!=="memory_constrained"&&i!=="desktop")throw _("invalid_request","unknown query execution profile");if(typeof t.rt_open_profile!="function")throw _("unavailable","runtime does not support explicit query profile initialization");o=i==="memory_constrained"?0:1}let s=An(new Map([[0,U(e.collection)],[1,U(e.replicaId)],[2,U(e.deviceId)],[3,e.mode==="local_only"?0:1],[4,e.signSecretKey],[5,e.kemSecretKey],[6,e.e2e??!1]])),r;try{let a=this.put(s);r=this.takeOut(o===void 0?t.rt_open(...a):t.rt_open_profile(...a,o))}catch(a){throw this.discard(),a}finally{s.fill(0)}if(r.length)throw _("unavailable",`runtime failed to open: ${new TextDecoder().decode(r)}`);this.markOpened()}markOpened(){this.opened=!0,this.timer??=setInterval(()=>this.tick(),1e3),this.timer.unref?.()}tick(){this.x.rt_tick(Date.now()),this.flush()}connect(e={}){let t=null,i=!1,o=[],s={onframe:null,onclose:null,send:r=>{if(i)throw _("unavailable","port closed");let a=pe(r);if(t===null){let p=e.grant&&e.clientKey?new Uint8Array([...U(e.grant),...e.clientKey]):new Uint8Array(0),l=ue(this.takeOut(this.x.rt_hello(...this.put(p),...this.put(a)))),c=BigInt(l[0]),d=ue(l[1]);queueMicrotask(()=>{s.onframe?.(d),c===0n&&s.end()}),c!==0n&&(t=c,this.ports.set(c,s),this.flush());return}this.x.rt_frame(t,...this.put(a)),this.flush()},close:()=>{i||(i=!0,t!==null&&(this.ports.delete(t),this.x.rt_close(t)),s.onclose?.())},deliver:r=>s.onframe?s.onframe(r):o.push(r),end:()=>{i||(i=!0,t!==null&&this.ports.delete(t),s.onclose?.())}};return s}sessionForPort(e){for(let[t,i]of this.ports)if(i===e)return t;return null}flush(){let e=this.takeOut(this.x.rt_poll());if(!e.length)return;let t=ue(e),i=new Set(t.filter(o=>o[1]===null).map(o=>BigInt(o[0])));for(let o of t){let[s,r]=o,a=this.ports.get(BigInt(s));if(a)if(r===null)a.end();else{let p=ue(r);if(i.has(BigInt(s))){if(p instanceof Map){let l=p;l.get(0)===2&&l.get(1)==="closed"&&a.deliver(p)}}else queueMicrotask(()=>a.deliver(p))}}}dispose(){this.timer&&clearInterval(this.timer);for(let e of[...this.ports.values()])e.close()}};var oc="mdbase protected your edit",OR={conflict:{cause:"This file was also changed on another device while you were editing it.",detail:"Your version is kept here and is not synced until you choose what to keep."},unknown_provenance:{cause:"This file changed on disk in a way mdbase could not trace to an app or a sync.",detail:"The bytes on disk are kept here and are not synced until you confirm them."},deleted_elsewhere:{cause:"This file was deleted on another device after you edited it.",detail:"Your version is kept here; nothing is deleted until you choose."},read_only:{cause:"Changed with view access.",detail:"Edit access will not sync these changes. Submit or discard them."},editor_busy:{cause:"An editor still has this file open with unsaved changes.",detail:"mdbase waits so that it never overwrites what you are typing."},suspect_write:{cause:"The last write to this file looked incomplete, for example after a crash.",detail:"The file is kept aside and is not synced until you confirm it."}},RR={keep_mine:{label:"Keep mine",description:"Sync the version on this device.",resolution:"keep_mine",needs:"records.edit",discardsMine:!1},take_theirs:{label:"Take theirs",description:"Replace this file with the synced version.",resolution:"take_theirs",needs:"records.edit",discardsMine:!0},keep_both:{label:"Keep both",description:"Save your version as a copy next to the synced one.",resolution:"keep_both",needs:"records.edit",discardsMine:!1},delete:{label:"Delete",description:"Accept the deletion and remove this file here too.",resolution:"delete",needs:"records.delete",discardsMine:!0},use:{label:"Use merged",description:"Sync the document you merged.",resolution:"use",needs:"records.edit",discardsMine:!1},compare:{label:"Compare side by side",description:"Open both versions to merge them.",discardsMine:!1}},ER={conflict:["keep_mine","take_theirs","compare","keep_both"],unknown_provenance:["keep_mine","take_theirs","compare","keep_both"],deleted_elsewhere:["keep_mine","delete"],read_only:["keep_mine","take_theirs","compare","keep_both"],editor_busy:["keep_mine","take_theirs","compare"],suspect_write:["keep_mine","take_theirs","compare","keep_both"]},sc="mdbase://hold/compare",uu=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ug(n,e){if(!uu.test(n)||!uu.test(e))throw new Error("holdCompareLink: collection and id are UUIDs");return`${sc}?collection=${n.toLowerCase()}&id=${e.toLowerCase()}`}function ck(n){if(typeof n!="string"||n.length>512||!n.startsWith(`${sc}?`))return null;let e=new URLSearchParams(n.slice(sc.length+1)),t=e.get("collection")??"",i=e.get("id")??"";return!uu.test(t)||!uu.test(i)?null:{collectionId:t.toLowerCase(),id:i.toLowerCase()}}function pk(n,e){let t=n.reason==="read_only",i=n.theirs!==void 0,o=(e.canCompare??!0)&&i,s=p=>!p||!e.capabilities||e.capabilities.includes(p),r=ER[n.reason].filter(p=>p==="compare"?o:(!t||e.host===!0)&&(p!=="take_theirs"||i||t)).map(p=>{let l={action:p,...RR[p]};return t&&p==="take_theirs"&&(l.label="Discard local changes",l.description="Discard unsynced changes on this device.",l.needs="collection.read"),l}).filter(p=>s(p.needs)),a=OR[n.reason];return{id:n.id,path:n.path,reason:n.reason,title:oc,cause:a.cause,detail:a.detail,since:n.since,saves:n.saves,hasTheirs:i,actions:r,reversible:!t,reversibleNote:t?"Copy before discarding.":"You can change your mind later: resolving is an ordinary change, and the previous version stays in the collection's history. Keep both if you want your version kept as a file as well.",compareLink:o?ug(e.collectionId,n.id):null}}function dk(n){return n.length?n.length===1?`${oc}: ${n[0].path} is waiting for your choice.`:`${oc}: ${n.length} files are waiting for your choice.`:null}function uk(n){let e=(i,o)=>`${i} ${o}`,t=`, plus ${e(n.pending,"pending")}, plus ${e(n.holds,"held")}`;return n.mode==="local_only"?`Saved on this device${t}`:`Confirmed through ${n.confirmedThrough}${t}`}ac();_u();ac();var ku=15e3,Au=(n,e)=>{try{return!!n&&n.id===e&&n.isCurrent()}catch{return!1}},Gs=(n,e)=>No(n,e?{cpOrigin:e}:{}),Do=(n,e)=>Gs(n,e);function lc(n,e={}){let t=XR(n,e),i=ZR(t,n,e);return i.kind==="opening"&&n.status==="opening"&&n.selectedCollectionId===i.collectionId&&n.openingProgress?{...i,progress:n.openingProgress}:i}function XR(n,e){let t=e.cpOrigin,i=n.selection,o=i?.requested??null;if(n.status==="closed")return{kind:"closed"};if(n.problem==="application_not_yet_available"||n.problem==="application_worker_unavailable"||n.problem==="browser_unsupported"||n.problem==="application_storage_unavailable")return{kind:"unavailable",problem:Do(n.problem,t)};if(i?.state==="invalid")return{kind:"problem",collectionId:null,problem:Do(i.problem??"application_selection_invalid",t)};let s=n.signIn?.state==="paired";if(i?.state==="approving"||n.status==="authorizing"){let c=i?.approval??null;return s?c?.kind==="add"?{kind:"authorizing",purpose:"add",collectionId:null}:{kind:"authorizing",purpose:"approve",collectionId:c?.collectionId??o?.collectionId??null}:{kind:"authorizing",purpose:"sign_in",collectionId:c?.collectionId??o?.collectionId??null}}let r=n.unsynced??null;if(r&&n.selectedCollectionId===r.collectionId){let c=r.collectionId;return n.status==="ready"&&Au(e.connection,c)?{kind:"unsynced",collectionId:c,connection:e.connection,rechecking:n.readiness.checking}:n.status==="blocked"||n.status==="setup_required"&&!n.readiness.checking&&n.readiness.assessment?{kind:"problem",collectionId:c,problem:(n.status==="blocked"?Gs(n,t):Gs(n.readiness,t))??Do("open_failed",t)}:{kind:"opening",collectionId:c,displayName:null,slow:!!e.slow}}if(n.status==="not_started"||n.status==="starting"){let c=o?.collectionId??null;return c&&n.status==="starting"?{kind:"opening",collectionId:c,displayName:o?.displayName??null,slow:!!e.slow}:{kind:"starting"}}if(n.status==="signed_out")return{kind:"signed_out",notice:n.problem?Gs(n,t):null};if(n.status==="blocked"){let c=n.selectedCollectionId??o?.collectionId??null;return n.problem==="recovery_account_mismatch"?{kind:"problem",collectionId:c,problem:No(n,{cpOrigin:t,recoveryAccountLabel:n.recoveryAccountLabel})}:{kind:"problem",collectionId:c,problem:c&&n.removedScopeIds?.includes(c)?Do("installation_scope_removed",t):Gs(n,t)??Do("open_failed",t)}}if(i?.state==="approval_required"&&o?.collectionId&&n.removedScopeIds?.includes(o.collectionId))return{kind:"problem",collectionId:o.collectionId,problem:Do("installation_scope_removed",t)};if(i?.state==="approval_required"&&o?.collectionId)return{kind:"needs_approval",collectionId:o.collectionId,displayName:o.displayName,declined:i.problem==="application_selection_not_approved"};if(i?.state==="pending"&&o?.collectionId)return{kind:"opening",collectionId:o.collectionId,displayName:o.displayName,slow:!!e.slow};let a=i?.usable??(n.status==="ready"||n.status==="setup_required"?n.collections.find(c=>c.collectionId===n.selectedCollectionId)??null:null);if(n.status==="setup_required"&&a)return n.readiness.assessment?.status==="incompatible"?{kind:"problem",collectionId:a.collectionId,problem:Gs(n.readiness,t)??Do("incompatible",t)}:{kind:"needs_setup",collectionId:a.collectionId,collection:a};if(n.status==="ready"&&a&&Au(e.connection,a.collectionId))return{kind:"ready",collectionId:a.collectionId,collection:a,connection:e.connection,rechecking:n.readiness.checking,problem:null,unavailableTypes:n.readiness.assessment?.unavailableTypes??[]};let p=n.status==="opening"||n.status==="ready"||i?.state==="opening"||i?.state==="usable",l=n.selectedCollectionId??o?.collectionId??null;if(p&&l){let c=n.collections.find(d=>d.collectionId===l)?.displayName??o?.displayName??null;return{kind:"opening",collectionId:l,displayName:c,slow:!!e.slow}}return{kind:"choosing",lastApproval:i?.lastApproval??null}}function ZR(n,e,t){let i=t.previous;return i?.kind==="needs_setup"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&e.readiness.checking?i:i?.kind==="unsynced"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&Au(t.connection,i.collectionId)?{...i,connection:t.connection,rechecking:!0}:!i||i.kind!=="ready"||n.kind==="ready"||!Au(t.connection,i.collectionId)||e.selectedCollectionId!==i.collectionId?n:n.kind==="opening"&&n.collectionId===i.collectionId?{...i,connection:t.connection,rechecking:!0,problem:null}:n.kind==="problem"&&n.problem.transient?{...i,connection:t.connection,rechecking:!0,problem:n.problem}:n}function Ck(n,e){return n?.kind==="ready"&&(e===void 0||n.collectionId===e)}Ta();ac();Zn();Tf();Ra();bt();var Oq=["http","https","file","javascript","data","blob","about","capacitor","chrome-extension","moz-extension"];function UP(n,e,t){if(typeof n!="string"||!n||n.length>2048||n.includes("*"))return!1;let i=e&&typeof e=="object"?e.redirect_uris:void 0;if(!Array.isArray(i)||!i.includes(n))return!1;let{id:o,homepage:s,platform:r}=e,a;try{a=new URL(n)}catch{return!1}if(a.username||a.password||a.hash)return!1;if(a.protocol==="https:"||a.protocol==="http:"){let l;try{l=new URL(String(s))}catch{return!1}return a.origin===l.origin&&(a.protocol==="https:"||r==="native"&&yr(a.origin)||t&&ot(a.origin))}let p=a.protocol.slice(0,-1);return typeof o=="string"&&p.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(p)&&!Oq.includes(p)&&(p===o||p.startsWith(`${o}.`))&&a.hostname.length>0}Uf();to();Zn();re();Mf();bt();var Wo={runtime:{sha256:"e70b55216318f5d12bde51ef75120c8f8fd285816e596817e766d484085aa073",bytes:3838960,maxBytes:3838960,source:{repository:"mdbase-dev/mdbase-connect",commit:"d9abf0ee991f4b7d3b558eb3def05b8285d5afc1"}},sqlite:{sha256:"2ee8f3dab694532afc8840e07703127287662d08b74e6ff50491ce63f00d5752",bytes:868907,maxBytes:11e5,initializer:{sha256:"a6d3fe46aa3f924e7686329f97b0564549ef1f787e0c19924179aef7f72bcc01",bytes:642742},asyncProxy:{sha256:"9f1970e05ee07a79332498858740b705eeb1dcee03bc150f6f690bc0fb5f0a06",bytes:32505}}};var Df={},Lq=Object.freeze({sha256:Wo.runtime.sha256,bytes:Wo.runtime.bytes,maxBytes:Wo.runtime.maxBytes}),jq=Object.freeze({sha256:Wo.sqlite.sha256,bytes:Wo.sqlite.bytes,maxBytes:Wo.sqlite.maxBytes}),Kc=()=>_("unavailable","SDK packaged application assets unavailable","application_packaged_assets_unavailable");function WP(n,e,t){if(!Ea(n))throw Kc();let i=Vo();Qn({environment:n,appOrigin:e,platform:t,release:i});let o,s;try{let p=new URL(Df.url);if(On(p)!==e||p.username||p.password||p.search||p.hash||(o=new URL("../native/runtime.wasm",Df.url),s=new URL("../native/sqlite3.wasm",Df.url),On(o)!==e||On(s)!==e))throw Kc()}catch{throw Kc()}let r=(p,l)=>Object.freeze({url:p.href,...l}),a=async p=>{let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l))throw Kc();let c=new URL("../native/sqlite3.js",Df.url),{default:d}=await import(c.href);return globalThis.sqlite3ApiConfig={disable:{vfs:{opfs:!0,"opfs-wl":!0}}},d(p)};return Object.freeze({release:()=>Vo(),runtime:r(o,Lq),sqlite:r(s,jq),initializeSqlite:a})}Mf();bt();to();Zn();var Vt=class extends Error{constructor(t){super("SDK collection selection unavailable");this.code=t;this.name="ApplicationSelectionError"}code},Hc=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Ft=(n,e,t=null)=>Object.freeze({requestedCollectionId:n,source:e,problem:t});function KP(n,e){return n.source!=="none"?n:e.storedId!==void 0&&e.storedId!==null?Hc(e.storedId)?Ft(e.storedId,"stored"):Ft(null,"stored","application_selection_invalid"):e.collections.length>1024||e.collections.some(t=>!Hc(t.collectionId))||new Set(e.collections.map(t=>t.collectionId)).size!==e.collections.length?Ft(null,"none","application_selection_metadata"):e.preferredId!==void 0&&e.preferredId!==null?Hc(e.preferredId)&&e.collections.some(t=>t.collectionId===e.preferredId)?Ft(e.preferredId,"preferred"):Ft(null,"preferred","application_selection_metadata"):e.collections.length===1?Ft(e.collections[0].collectionId,"sole"):Ft(null,"none")}var $f=class{port;origin;parameter;fallback;listeners=new Set;snapshot=Ft(null,"none");stopListening=null;started=!1;closed=!1;constructor(e,t={},i=null){let o,s;try{o=new URL(e),s=new URL(t.fallbackPath??"/",o)}catch{throw new Vt("application_selection_binding")}let r=t.parameter??"collection";if(!Lt(e,!0)||On(o)!==e||On(s)!==e||s.username||s.password||s.search||s.hash||typeof r!="string"||!/^[a-z][a-zA-Z0-9_.-]{0,63}$/.test(r)||["code","state","error","error_description"].includes(r))throw new Vt("application_selection_binding");this.origin=e,this.parameter=r,this.fallback=s.href,this.port=i}getSnapshot(){return this.snapshot}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.snapshot:(this.started=!0,this.stopListening=this.port?.listen(()=>{this.closed||this.publish(this.read())})??null,this.publish(this.read()),this.snapshot)}check(){if(this.closed)throw new Vt("application_selection_fenced")}url(){let e;try{e=new URL(this.port.href())}catch{throw new Vt("application_selection_binding")}if(On(e)!==this.origin||e.username||e.password)throw new Vt("application_selection_binding");return e}read(){if(!this.port)return Ft(null,"none");let e;try{e=this.url().searchParams.getAll(this.parameter)}catch{return Ft(null,"url","application_selection_binding")}return e.length===0?Ft(null,"none"):e.length!==1?Ft(null,"url","application_selection_duplicate"):e[0]===""?Ft(null,"url","application_selection_empty"):Hc(e[0])?Ft(e[0],"url"):Ft(null,"url","application_selection_invalid")}publish(e){if(!(this.snapshot.requestedCollectionId===e.requestedCollectionId&&this.snapshot.source===e.source&&this.snapshot.problem===e.problem)){this.snapshot=e;for(let t of[...this.listeners])try{t()}catch{}}}select(e,t={}){if(this.check(),e!==null&&!Hc(e))throw new Vt("application_selection_invalid");let i=t.history??"replace";if(i!=="push"&&i!=="replace")throw new Vt("application_selection_binding");if(this.port){let o=this.url(),s=o.href;e===null?o.searchParams.delete(this.parameter):o.searchParams.set(this.parameter,e),o.href!==s&&this.port.write(o.href,i)}return this.publish(Ft(e,e===null?"none":"user")),this.snapshot}returnUrl(e){this.check();try{let t=new URL(e,this.origin);if(On(t)===this.origin&&!t.username&&!t.password)return t.href}catch{}return this.fallback}close(){if(this.closed)return;this.closed=!0;let e=this.stopListening;this.stopListening=null,e?.(),this.listeners.clear()}};function HP(){if(typeof window>"u"||!window.location||!window.history)return null;let n=window;return Object.freeze({href:()=>n.location.href,write:(e,t)=>{t==="push"?n.history.pushState(n.history.state,"",e):n.history.replaceState(n.history.state,"",e)},listen:e=>(n.addEventListener("popstate",e),()=>n.removeEventListener("popstate",e))})}var Nq=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Ma=n=>n.status==="ready"||n.status==="setup_required",GP=n=>n.signIn?.state==="paired"&&(n.status==="unselected"||n.status==="blocked"||Ma(n)),Uq=n=>n.status==="not_started"||n.status==="starting"||n.status==="signed_out"||n.status==="authorizing",Vi=(n,e)=>e===null?null:n.collections.find(t=>t.collectionId===e)??null,zf=class{browser;session;memory;preferredId;schedule;listeners=new Set;stops=[];value;key="";startTarget=null;startApplied=!1;attempted=void 0;lastRequested=null;opening=null;approval=null;lastApproval=null;declined=null;remembered=void 0;queued=!1;started=!1;closed=!1;constructor(e){this.browser=e.browser,this.session=e.session,this.memory=e.memory??null,this.preferredId=e.preferredId??null,this.schedule=e.schedule??(t=>{setTimeout(t,0)}),this.value=this.derive(),this.key=JSON.stringify(this.value)}getSnapshot(){return this.value}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.value:(this.started=!0,this.browser.start(),this.stops.push(this.browser.subscribe(this.changed),this.session.subscribe(this.changed)),this.changed(),this.value)}select(e,t={}){this.check(),this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}),this.declined=null,this.refresh(),e===null&&this.remember(null);let i=this.session.getSnapshot();return e!==null&&i.selectedCollectionId===e&&i.status==="opening"?(this.attempted=e,Promise.resolve(this.value)):this.whenIdle(async()=>{let o=this.session.getSnapshot();this.requested().requestedCollectionId===e&&((e===null?o.selectedCollectionId===null&&o.status!=="opening":o.selectedCollectionId===e&&Ma(o)||!Vi(o,e))||await this.run(e,t,!0))}).then(()=>this.value)}chooseAnother(e={}){return this.select(null,{...e,history:"push"})}approve(e,t={}){if(this.check(),e!=null&&!Nq(e))return Promise.reject(new Vt("application_selection_invalid"));if(this.approval&&!this.approval.settled)return Promise.reject(new Vt("application_selection_busy"));e!=null&&e!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}));let i=this.session.getSnapshot().signIn,o=i?.nativeSelection?.requestId??i?.collectionSelection?.requestId??null,s,r=e===null?null:this.requested().requestedCollectionId;try{s=this.session.authorize({...t.signal?{signal:t.signal}:{},collectionHint:r})}catch(c){return Promise.reject(c)}let a=r===null?"add":"collection",p=new Set(this.session.getSnapshot().collections.map(c=>c.collectionId)),l={receipt:o,kind:a,collectionId:r,before:p,settled:!1};return this.approval=l,this.lastApproval=null,this.declined=null,this.attempted=void 0,this.refresh(),s.then(()=>(l.settled=!0,this.changed(),this.value),c=>{if(this.approval===l){this.approval=null;let d=c?.code;(d==="cancelled"||d==="aborted")&&(this.lastApproval=Object.freeze({kind:a,outcome:"closed",collectionId:r}))}throw this.changed(),c})}clearLastApproval(){this.check(),this.lastApproval=null,this.refresh()}reauthorize(e={}){this.check();let t=this.value.usable?.collectionId??this.requested().requestedCollectionId;return t===null?Promise.reject(new Vt("application_selection_empty")):this.approve(t,e)}resync(){this.closed||(this.attempted=void 0,this.approval=null,this.changed())}close(){if(!this.closed){this.closed=!0;for(let e of this.stops.splice(0))try{e()}catch{}this.browser.close(),this.listeners.clear()}}check(){if(this.closed)throw new Vt("application_selection_fenced")}requested(){let e=this.browser.getSnapshot(),t=this.startTarget;return t&&e.source==="user"&&e.requestedCollectionId===t.requestedCollectionId?t:e}changed=()=>{this.closed||(this.refresh(),!(this.queued||!this.started)&&(this.queued=!0,this.schedule(()=>{this.queued=!1,this.reconcile()})))};refresh(){let e=this.requested().requestedCollectionId;e!==this.lastRequested&&(this.lastRequested=e,this.attempted=void 0,this.declined!==e&&(this.declined=null));let t=this.derive(),i=JSON.stringify(t);if(t.state==="usable"&&this.remember(t.usable.collectionId),i!==this.key){this.key=i,this.value=Object.freeze(t);for(let o of[...this.listeners])try{o()}catch{}}}remember(e){if(!(!this.memory||this.remembered===e)){this.remembered=e;try{this.memory.write(e)}catch{}}}derive(){let e=this.session.getSnapshot(),t=this.requested(),i=t.requestedCollectionId,o=Vi(e,i),s=Ma(e)?Vi(e,e.selectedCollectionId):null,r,a=null;t.problem?(r="invalid",a=t.problem):this.approval?r="approving":i===null?r="none":s?.collectionId===i?r="usable":e.selectedCollectionId===i&&(e.status==="blocked"||e.status==="opening")?r=e.status==="blocked"?"blocked":"opening":GP(e)?o?r="opening":this.session.listing?.()?r="pending":(r="approval_required",this.declined===i&&(a="application_selection_not_approved")):r="pending";let p=this.approval?Object.freeze({kind:this.approval.kind,collectionId:this.approval.collectionId,reopenable:this.approval.settled}):null;return Object.freeze({state:r,problem:a,approval:p,lastApproval:this.lastApproval,usable:s?Object.freeze({...s}):null,requested:Object.freeze({collectionId:i,source:t.source,displayName:o?.displayName??null,approved:o!==null})})}async whenIdle(e){for(;this.opening;)await this.opening;this.check(),await e()}run(e,t={},i=!1){this.attempted=e;let o=t.signal?{signal:t.signal}:{},s=Promise.resolve().then(()=>e===null?this.session.clear(o):this.session.open(e,o)),r=s.then(()=>{},()=>{}).finally(()=>{this.opening===r&&(this.opening=null,this.changed())});return this.opening=r,i?s.then(()=>{}):r}async reconcile(){if(this.closed||this.opening)return;let e=this.session.getSnapshot();if(this.approval)if(this.approval.settled&&e.status==="signed_out"&&e.problem!==null){let o=this.approval;this.approval=null,this.attempted=void 0,this.lastApproval=Object.freeze({kind:o.kind,outcome:e.problem==="approval_window_closed"?"closed":"declined",collectionId:o.collectionId}),this.refresh()}else{if(!this.approval.settled||Uq(e))return;let o=e.signIn?.nativeSelection;if(o&&o.requestId!==this.approval.receipt&&!Vi(e,o.collectionId)&&this.session.listing?.())return;this.finishApproval(e)}if(!GP(e))return;if(!this.startApplied)if(this.browser.getSnapshot().source==="none"){let o=null;try{o=this.memory?.read()??null}catch{}if(o!==null&&!Vi(e,o)&&this.session.listing?.())return;this.startApplied=!0;let s=KP(this.browser.getSnapshot(),{storedId:o,preferredId:this.preferredId,collections:e.collections});s.requestedCollectionId!==null&&!s.problem&&(this.browser.select(s.requestedCollectionId,{history:"replace"}),this.startTarget=s,this.refresh())}else this.startApplied=!0;let t=this.requested(),i=t.requestedCollectionId;if(!t.problem){if(i===null){this.attempted!==null&&e.selectedCollectionId!==null&&Ma(e)&&this.run(null);return}if(e.selectedCollectionId===i&&(Ma(e)||e.status==="opening")){this.attempted=i;return}!Vi(e,i)||this.attempted===i||this.run(i)}}finishApproval(e){let t=this.approval,i=t.receipt;this.approval=null,this.attempted=void 0;let o=u=>u!==null&&Vi(e,u)?t.before.has(u)?"unchanged":"added":e.approval?.outcome==="closed"?"closed":"declined",s=e.signIn?.collectionSelection,r=e.signIn?.nativeSelection,p=(r&&r.requestId!==i&&Vi(e,r.collectionId)?r.collectionId:null)??(s&&s.requestId!==i&&Vi(e,s.selectedCollectionId)?s.selectedCollectionId:null);if(p!==null){p!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(p,{history:"replace"})),this.lastApproval=Object.freeze({kind:t.kind,outcome:o(p),collectionId:p}),this.refresh(),e.selectedCollectionId===p&&(Ma(e)||e.status==="opening")?this.attempted=p:this.run(p);return}let l=this.requested().requestedCollectionId;l!==null&&!Vi(e,l)&&(this.declined=l);let c=t.kind==="add"?e.collections.find(u=>!t.before.has(u.collectionId))?.collectionId??null:null,d=t.kind==="add"?c:t.collectionId??l;this.lastApproval=Object.freeze({kind:t.kind,outcome:o(d),collectionId:d}),this.refresh()}};eh();Zb();re();Je();ge();re();At();Or();Je();ge();Wn();var eC=16*1024*1024,xT=9*1024*1024,CT=64,IT=64*1024*1024,OT=new Set(["append","read","head","subscribe","unsubscribe","put_object","get_object","has_objects","put_snapshot","get_snapshot","endorse_snapshot","stream_join","stream_leave","stream_send"]),pt=class extends Error{constructor(t){super(`app log host: ${t}`);this.reason=t;this.name="AppLogHostError"}reason};function ts(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw new pt("invalid_call");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw new pt("invalid_call");return e}function hh(n,e){return n.length===e.length&&n.every((t,i)=>t===e[i])}var RT=new Set(["read","head","subscribe","get_object","has_objects","put_object","get_snapshot"]),ET=6;function tC(n){try{return n.server}catch{return null}}function qT(n){try{return n.reason}catch{return null}}function dw(n,e=globalThis.navigator?.onLine){let t=tC(n);if(Pn(t)){let i=t.retryAfterMs;return t.status===429?{kind:"rate_limited",retryAfterMs:i}:t.status>=500?{kind:"server_busy",retryAfterMs:i}:t.status===401||t.status===403?{kind:"auth"}:null}return qT(n)!=="unavailable"?null:e===!1?{kind:"offline"}:{kind:"unreachable"}}var ns=class{constructor(e,t,i){this.runtime=e;this.transport=t;try{if(this.endpoint=ts(i.endpoint),this.collection=U(i.collection),ts(t.endpoint)!==this.endpoint||!hh(U(t.collection),this.collection))throw new Error}catch{throw new pt("invalid_binding")}if(this.rounds=i.maxRounds??64,!Number.isSafeInteger(this.rounds)||this.rounds<1||this.rounds>64)throw new RangeError("invalid app log pump rounds")}runtime;transport;abort=new AbortController;endpoint;collection;rounds;work=null;closed=!1;failed=!1;retired=!1;problem=null;terminal=null;health=null;sent=0;readAfter=[-1n,-1n];readAdvances=0;get fenced(){return this.failed}get callsSent(){return this.sent}get readProgress(){return this.readAdvances}responseProgress(){return this.transport.responseProgress?.()??[]}get serverProblem(){return this.problem}get terminalProblem(){return this.terminal}get transportHealth(){return this.health}current(){if(this.closed||this.failed)return!1;if(ts(this.transport.endpoint)!==this.endpoint||!hh(U(this.transport.collection),this.collection))throw new pt("invalid_binding");return this.transport.isCurrent()===!0?!0:(this.retire(),!1)}retire(){if(this.closed=!0,this.abort.abort(),!this.retired){this.retired=!0;try{this.runtime.retireLog()}catch{throw this.failed=!0,new pt("fenced")}}}capture(e){if(!Array.isArray(e)||e.length>CT)throw new pt("invalid_call");let t=0,i=new Set,o=[];try{for(let s of e){if(ts(s.endpoint)!==this.endpoint||!(s.frame instanceof Uint8Array)||s.frame.length>eC||s.sidecar!==void 0&&(!(s.sidecar instanceof Uint8Array)||s.sidecar.length>xT))throw new pt("invalid_call");if(t+=s.frame.length+(s.sidecar?.length??0),t>IT)throw new pt("invalid_call");let r=ue(s.frame);if(!(r instanceof Map))throw new pt("invalid_call");let a=r;if(a.size!==4||a.get(0)!==0||!OT.has(a.get(2)))throw new pt("invalid_call");let p=ts(a.get(1));if(i.has(p))throw new pt("invalid_call");i.add(p);let l=a.get(3),c=l instanceof Map?l.get(0):void 0;if(!(c instanceof Uint8Array)||!hh(c,this.collection)||s.sidecar!==void 0&&a.get(2)!=="put_object")throw new pt("invalid_call");if(s.sidecar!==void 0){let u=l,f=u.get(4);if(s.sidecar.length<=1024*1024||ts(u.get(3))!==BigInt(s.sidecar.length)||u.has(5)||!(f instanceof Uint8Array)||!hh(f,it(s.sidecar)))throw new pt("invalid_call")}let d=a.get(2)==="read"?{after:ts(l.get(1)),control:l.get(3)===1}:void 0;o.push({id:p,method:a.get(2),...d?{read:d}:{},call:{endpoint:this.endpoint,frame:s.frame.slice(),...s.sidecar?{sidecar:s.sidecar.slice()}:{}}})}return o}catch{for(let s of o)this.wipe(s);throw new pt("invalid_call")}}wipe(e){e.call.frame.fill(0),e.call.sidecar?.fill(0)}pump(){return this.work?this.work:this.failed?Promise.reject(new pt("fenced")):this.closed?Promise.resolve({quiet:!0}):(this.work=Promise.resolve().then(()=>this.drive()).finally(()=>{this.work=null}),this.work)}async drive(){try{for(let e=0;e<this.rounds;e++){if(!this.current())return{quiet:!0};let t=this.capture(this.runtime.takeLogCalls());if(!t.length)return{quiet:!0};this.sent+=t.length;let i=[];try{for(let o=0;o<t.length;){if(!this.current())return{quiet:!0};let s=o+1,r=l=>RT.has(t[l].method);if(r(o))for(;s<t.length&&s-o<ET&&r(s);)s++;let a=t.slice(o,s);o=s;let p=a.map(l=>this.transport.send(l.call,{signal:this.abort.signal}).then(c=>({reply:c,error:null}),c=>({reply:null,error:c})));i.push(...p);for(let[l,c]of a.entries()){let{reply:d,error:u}=await p[l];if(d===null){if(!this.current())return{quiet:!0};let f=tC(u);if(Pn(f)){let m=St(f);m&&(this.problem=f),(m||f.status===403&&f.code==="forbidden")&&(this.terminal??=f)}let h=dw(u);h&&(this.health=h),this.runtime.logNoResponse(c.id);continue}try{if(!this.current())return{quiet:!0};if(!(d instanceof Uint8Array)||d.length>eC){this.runtime.logNoResponse(c.id);continue}if(this.runtime.acceptLogReply(c.id,d)!==!0)this.runtime.logNoResponse(c.id);else if(this.problem=null,this.health=null,c.read){let f=c.read.control?1:0;c.read.after>this.readAfter[f]&&(this.readAfter[f]=c.read.after,this.readAdvances++)}}finally{d instanceof Uint8Array&&d.fill(0)}}}}finally{for(let o of await Promise.all(i))o.reply instanceof Uint8Array&&o.reply.fill(0);for(let o of t)this.wipe(o)}}return{quiet:!1}}catch{throw this.failed=!0,this.retire(),new pt("fenced")}}async drainForAuthenticatedReconnect(){if(this.closed||this.failed||this.retired)throw new pt("fenced");if(this.closed=!0,this.abort.abort(),this.retired=!0,await this.work?.catch(()=>{}),this.failed)throw new pt("fenced")}async close(){this.retire(),await this.work?.catch(()=>{})}};ro();Zo();function pp(n,e,t=0,i={nodes:0}){if(t>32||++i.nodes>65536)throw _("invalid_request","resource DATA exceeds bound");if(n===null||typeof n=="boolean"||typeof n=="string"||typeof n=="number"&&Number.isFinite(n))return n;if(Array.isArray(n))return n.map(r=>pp(r,e,t+1,i));let o=e?n!==null&&typeof n=="object"&&Object.getPrototypeOf(n)===Object.prototype?Object.entries(n):null:n instanceof Map?[...n]:null;if(!o)throw _("invalid_request","invalid resource DATA");let s=new Map;for(let[r,a]of o){if(typeof r!="string"||s.has(r))throw _("invalid_request","invalid resource DATA");s.set(r,pp(a,e,t+1,i))}return e?s:Object.fromEntries(s)}var on=class extends Error{reason="strict_device_approval";constructor(){super("this account uses strict device approval; add this device from your desktop"),this.name="AppStrictDeviceApprovalError"}},M=()=>_("unavailable","app runtime unavailable; reopen and reconcile");function nC(n){if(!(n instanceof Uint8Array)||n.length===0||n.length>64*1024)throw M();return new Uint8Array(n)}function vn(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw M();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw M();return e}var iC=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);function Kt(n){if(!(n instanceof Uint8Array)||n.length!==32)throw M();return n}var Ya=class n extends Bs{constructor(t,i){super(t);this.sqlBinding=i}sqlBinding;attempted=!1;active=!1;retired=!1;collection=null;deviceId=null;connectorId=null;cpPin=null;deviceAttempted=!1;deviceActive=!1;deviceRegistered=!1;devicePin=null;installationId=null;publicIdentity=null;noiseEnvelope=null;cloudSource=null;cloudCallback=null;cloudCollection=null;cloudPurpose=null;cloudIssued=!1;privateAttempted=!1;privateSource=null;prospectiveCollection=null;privatePurpose=null;sasCommitment=null;privateEnrolAcknowledged=!1;endpoint=null;logGeneration=0n;pump=null;transport=null;get sql(){return this.sqlBinding.sql}get app(){return this.x}static async create(t,i){if(i.needsRecovery)throw M();return this.instantiateApp(t,i)}static async createDevice(t){return this.instantiateApp(t,null)}static async instantiateApp(t,i){let o={sql:i,exports:null,run:null},s=await this.load(t,a=>(o.exports=a,o.run=i?.import(a)??null,{host_app_sql:(p,l)=>o.run?.(p,l)??0n})),r=["rt_app_account_key_unlock","rt_app_account_key_status","rt_app_account_key_device_setup","rt_app_private_collection_pin","rt_app_private_enrol_restore","rt_app_private_enrol_commitment","rt_app_private_create_sign","rt_app_private_device_enrol_sign","rt_app_device_open","rt_app_device_registered","rt_app_device_adopt","rt_app_device_retire","rt_app_cp_enrol_sign","rt_app_verify_handover","rt_app_cp_bind_connector","rt_app_cp_log_token_sign","rt_app_open","rt_app_log_bind","rt_app_log_generation","rt_app_log_reconnect","rt_app_log_http_sign","rt_app_log_calls","rt_app_log_reply","rt_app_log_no_response","rt_app_log_retire","rt_app_log_push","rt_app_observations","rt_app_shutdown"];if(!(s.memory instanceof WebAssembly.Memory)||r.some(a=>typeof s[a]!="function"))throw M();return new n(s,o)}open(t){throw M()}fail(){try{(this.active||this.attempted)&&this.sql?.fence()}finally{this.active=!1,this.deviceActive=!1,this.discard()}}guard(t){try{return t()}catch{throw this.fail(),M()}}openAppConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery)throw M();this.attempted=!0;let o=vn(t.endpoint);if(!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295)throw M();let s=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,r=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(s<0||r<0||typeof t.cloudCopyOptIn!="boolean"||s===1!==t.cloudCopyOptIn||(i=An(new Map([[0,3],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,o],[5,t.trustedRoots.map(Kt)],[6,t.trustedSigners.map(U)],[7,Cp(t.expectedGenesis)],[8,s],[9,t.cloudCopyOptIn],[10,Kt(t.signSecretKey)],[11,Kt(t.kemSecretKey)],[12,r],[13,t.sqliteVersion],[16,nC(t.policyPins)]])),i.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_open(...this.put(i)))).length)throw M();this.collection=t.collection,this.deviceId=t.deviceId,this.endpoint=o,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),M()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}openUnsyncedConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery||typeof this.app.rt_app_open_local!="function"||(this.attempted=!0,!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295))throw M();let o=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(o<0||(i=An(new Map([[0,1],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[12,o],[13,t.sqliteVersion]])),this.guard(()=>this.takeOut(this.app.rt_app_open_local(...this.put(i)))).length))throw M();this.collection=t.collection,this.deviceId=t.deviceId,this.active=!0,this.markOpened()}catch{throw this.fail(),M()}finally{i?.fill(0)}}tick(){this.active&&!this.retired&&this.guard(()=>super.tick())}connect(t={}){if(!this.active||this.retired||t.collection!==void 0&&(typeof t.collection!="string"||t.collection.toLowerCase()!==this.collection?.toLowerCase()))throw M();let i=super.connect(t),o=i.send.bind(i),s=i.close.bind(i);return i.send=r=>this.guard(()=>o(r)),i.close=()=>this.guard(()=>s()),i}executeBases(t,i){return this.readBases(t,i,"execute")}discoverBases(t,i,o){if(i!=="list-views"&&i!=="read-view-source")throw M();return this.readBases(t,o,i)}readBases(t,i,o){let s=this.sessionForPort(t),r=o==="execute"?this.app.rt_app_bases_execute:o==="list-views"?this.app.rt_app_bases_list_views:this.app.rt_app_bases_read_view_source;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||s===null||typeof r!="function")throw M();if(!(i instanceof Uint8Array)||!i.length||i.length>128*1024)throw _("invalid_request","Bases request bytes exceed bound");let a=new Uint8Array(i);try{let p=this.guard(()=>{let l=vn(r.call(this.app,s,...this.put(a))),c=Number(l&0xffffffffn);if(!c||c>(o==="execute"?16:1)*1024*1024)throw M();return this.takeOut(l)});if(!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==s)throw p.fill(0),M();return p}finally{a.fill(0)}}setupResources(t,i,o,s,r){let a=this.sessionForPort(t),p=this.app.rt_app_resources;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||a===null||typeof p!="function")throw _("unavailable","resource setup unsupported","resource_setup_unsupported");if(i!=="assess"&&i!=="apply"||i==="apply"&&(typeof s!="string"||!/^sha256:[0-9a-f]{64}$/.test(s)))throw M();let l=r!==void 0,c=[1,i==="apply"?1:0,pp(o,!0),s??null];l&&c.push(pp(ni(r),!0));let d=pe(c);if(!d.length||d.length>512*1024)throw d.fill(0),_("invalid_request","resource DATA exceeds bound");let u;try{if(u=this.guard(()=>{let m=vn(p.call(this.app,a,...this.put(d))),b=Number(m&0xffffffffn);if(!b||b>512*1024)throw M();return this.takeOut(m)}),!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==a)throw M();let f=this.guard(()=>ue(u));if(!Array.isArray(f)||f.length!==3||f[0]!==1||typeof f[1]!="boolean")throw M();if(f[1]===!1)throw _("unavailable","resource setup unavailable","resource_setup_unavailable");let h=pp(f[2],!1);return i==="assess"?es(h,l):xt(h)}finally{d.fill(0),u?.fill(0)}}resourceRejected(t,i){let o=null;try{let s=this.sessionForPort(t),r=this.app.rt_app_receipt_rejected;return!this.active||this.retired||s===null||typeof r!="function"||!/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(i)?!1:(o=U(i),this.guard(()=>r.call(this.app,s,...this.put(o)))===1&&this.active&&!this.retired&&this.sessionForPort(t)===s)}catch{return!1}finally{o?.fill(0)}}verifyHandover(t,i,o){let s=null,r=null;try{let a=this.sessionForPort(t),p=i.collection,l=i.deviceId;if(!this.active||this.retired||a===null||p!==this.collection||i.isCurrent()!==!0||!(o instanceof Uint8Array)||o.length>64*1024)return null;s=new Uint8Array(o),r=U(l);let c=this.guard(()=>this.takeOut(this.app.rt_app_verify_handover(a,...this.put(r),...this.put(s))));if(c.length===0||this.sessionForPort(t)!==a||i.isCurrent()!==!0||i.collection!==p||i.deviceId!==l)return null;let d=this.guard(()=>$p.dec(ue(c)));return d.seq===0||[d.chain,d.policyGeneration,d.catalogGeneration].some(u=>u===`sha256:${"00".repeat(32)}`)?null:d}catch{return null}finally{s?.fill(0),r?.fill(0)}}bindCpConnector(t){let i=null;try{if(!this.active||this.retired||this.pump||this.cpPin||t.isCurrent()!==!0||t.deviceId!==this.deviceId||t.collection!==this.collection)throw M();let o=t.connectorId;if(i=U(o),i.every(s=>s===0)||this.guard(()=>this.app.rt_app_cp_bind_connector(...this.put(i)))!==1)throw M();this.connectorId=o,this.cpPin=t}catch{throw M()}finally{i?.fill(0)}}deviceCurrent(){try{let t=this.devicePin;return this.deviceActive&&!this.retired&&t!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId}catch{return!1}}publicResult(t){if(t.length>1024)throw M();let i=ue(t);if(!(i instanceof Map))throw M();let o=i;if(o.size!==4||[0,1,2,3].some(r=>!o.has(r)))throw M();let s=r=>{let a=o.get(r);if(!(a instanceof Uint8Array)||a.length!==32||a.every(p=>p===0))throw M();return new Uint8Array(a)};return{m:o,identity:Object.freeze({signPublicKey:s(0),kemPublicKey:s(1),noisePublicKey:s(2)})}}openDeviceConsuming(t){let i=null;try{if(this.deviceAttempted||this.attempted||this.retired)throw M();this.deviceAttempted=!0;let o=t.pin;if(this.devicePin=o,this.connectorId=o.connectorId,this.deviceId=o.deviceId,this.installationId=o.installationId,this.deviceActive=!0,!this.deviceCurrent())throw M();let s=[this.connectorId,this.deviceId,this.installationId].map(U);if(s.some(l=>l.every(c=>c===0)))throw M();let r=t.opened;if(r.mode!=="fresh"&&r.mode!=="existing"||r.mode==="existing"&&(!(r.envelope instanceof Uint8Array)||!r.envelope.length||r.envelope.length>1024))throw M();i=An(new Map([[0,1],[1,s[0]],[2,s[1]],[3,s[2]],[4,r.mode==="fresh"?0:1],[5,Kt(t.signSecretKey)],[6,Kt(t.kemSecretKey)],[7,r.mode==="fresh"?new Uint8Array:new Uint8Array(r.envelope)]]));let a=this.guard(()=>this.takeOut(this.app.rt_app_device_open(...this.put(i))));if(!a.length||!this.deviceCurrent())throw M();let p=this.guard(()=>{let{m:l,identity:c}=this.publicResult(a),d=l.get(3);if(!(d instanceof Uint8Array)||!d.length||d.length>1024)throw M();return{...c,envelope:new Uint8Array(d)}});return this.publicIdentity={signPublicKey:new Uint8Array(p.signPublicKey),kemPublicKey:new Uint8Array(p.kemPublicKey),noisePublicKey:new Uint8Array(p.noisePublicKey)},this.noiseEnvelope=new Uint8Array(p.envelope),Object.freeze(p)}catch{throw this.retireLog(),M()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}deviceCustodyCurrent(t,i){try{return this.deviceCurrent()&&!this.active&&this.publicIdentity!==null&&this.noiseEnvelope!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId&&i.envelope instanceof Uint8Array&&i.envelope.length===this.noiseEnvelope.length&&i.envelope.every((o,s)=>o===this.noiseEnvelope[s])&&["signPublicKey","kemPublicKey","noisePublicKey"].every(o=>i[o]instanceof Uint8Array&&i[o].length===32&&i[o].every((s,r)=>s===this.publicIdentity[o][r]))}catch{return!1}}acknowledgeDeviceRegistration(t){let i=null;try{if(!this.deviceCurrent()||this.active||this.deviceRegistered||!this.publicIdentity||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId)throw M();for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(Kt(t[o]).some((s,r)=>s!==this.publicIdentity[o][r]))throw M();if(i=An(new Map([[0,U(t.connectorId)],[1,U(t.deviceId)],[2,U(t.installationId)],[3,new Uint8Array(t.signPublicKey)],[4,new Uint8Array(t.kemPublicKey)],[5,new Uint8Array(t.noisePublicKey)]])),this.guard(()=>this.app.rt_app_device_registered(...this.put(i)))!==1||!this.deviceCurrent())throw M();this.deviceRegistered=!0}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}prepareCloudCopyCollection(t){let i=null;try{if(t.approvalMode==="strict")throw new on;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","join"].includes(t.purpose)||(this.cloudSource=t,this.cloudCallback=t.isCurrent,this.cloudCollection=t.collection,this.cloudPurpose=t.purpose,!this.cloudCopyCollectionCurrent(t)))throw M();let o=U(t.collection);if(o.every(s=>s===0)||(i=An(new Map([[0,o],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_cloud_copy_pin(...this.put(i)))!==1||!this.cloudCopyCollectionCurrent(t)))throw M()}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i?.fill(0)}}cloudCopyCollectionCurrent(t){try{let i=this.cloudSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&(!t||t===i)&&i.isCurrent===this.cloudCallback&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.cloudCollection&&i.purpose===this.cloudPurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signCloudCopyCreate(t){return this.signCloudCopy(t,"create")}signCloudCopyJoin(t){return this.signCloudCopy(t,"join")}signCloudCopy(t,i){let o=null,s=null;try{if(this.cloudIssued||!this.cloudCopyCollectionCurrent()||this.cloudPurpose!==i||(this.cloudIssued=!0,o=new Uint8Array(Kt(t)),s=this.guard(()=>this.takeOut(i==="create"?this.app.rt_app_cloud_copy_create_sign(...this.put(o)):this.app.rt_app_cloud_copy_join_sign(...this.put(o)))),s.length!==64||!this.cloudCopyCollectionCurrent()))throw M();return s}catch{throw s?.fill(0),this.retireLog(),M()}finally{o?.fill(0)}}preparePrivateCollection(t,i){let o=null,s=null;try{if(t.approvalMode==="strict")throw new on;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","enrol"].includes(t.purpose)||(this.privateAttempted=!0,this.privateSource=t,this.prospectiveCollection=t.collection,this.privatePurpose=t.purpose,!this.privateCollectionCurrent()))throw M();let r=U(t.collection);if(r.every(a=>a===0))throw M();if(i.mode==="fresh"){if(o=An(new Map([[0,r],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_private_collection_pin(...this.put(o)))!==1)throw M()}else if(i.mode==="existing"){let a=i.marker,p=this.publicIdentity;if(t.purpose!=="enrol"||!p||a.collection!==t.collection||a.connectorId!==this.connectorId||a.deviceId!==this.deviceId||a.installationId!==this.installationId||typeof a.acknowledged!="boolean")throw M();for(let c of["signPublicKey","kemPublicKey","noisePublicKey"])if(!iC(Kt(a[c]),p[c]))throw M();let l=new Uint8Array(Kt(a.sasCommitment));if(l.every(c=>c===0)||(s=l,o=An(new Map([[0,1],[1,r],[2,U(a.connectorId)],[3,U(a.deviceId)],[4,U(a.installationId)],[5,new Uint8Array(a.signPublicKey)],[6,new Uint8Array(a.kemPublicKey)],[7,new Uint8Array(a.noisePublicKey)],[8,l],[9,a.acknowledged]])),this.privateEnrolAcknowledged=a.acknowledged,this.guard(()=>this.app.rt_app_private_enrol_restore(...this.put(o)))!==1))throw M()}else throw M();if(!this.privateCollectionCurrent())throw M();if(t.purpose==="enrol"){let a=this.guard(()=>this.takeOut(this.app.rt_app_private_enrol_commitment()));if(a.length!==32||a.every(p=>p===0)||s!==null&&!iC(a,s))throw M();this.sasCommitment=new Uint8Array(a)}}catch(r){throw this.retireLog(),r instanceof on?r:M()}finally{o?.fill(0)}}registeredDeviceReceipt(){if(!this.deviceCurrent()||!this.deviceRegistered||!this.publicIdentity)throw M();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateEnrolMarker(){if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||!this.publicIdentity)throw M();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,collection:this.prospectiveCollection,sasCommitment:new Uint8Array(this.sasCommitment),acknowledged:this.privateEnrolAcknowledged,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateCollectionCurrent(t){try{if(t&&(t.isCurrent()!==!0||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId||t.collection!==this.prospectiveCollection||t.purpose!==this.privatePurpose||t.approvalMode!=="password-ak1"))return!1;let i=this.privateSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.prospectiveCollection&&i.purpose===this.privatePurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signPrivateCreate(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="create")throw M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_create_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw M();return o}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}signPrivateDeviceEnrol(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||this.privateEnrolAcknowledged)throw M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_device_enrol_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw M();return Object.freeze({signature:o,sasCommitment:new Uint8Array(this.sasCommitment)})}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}adoptDevice(t,i){let o=null;try{if(!this.deviceCurrent()||!this.deviceRegistered||this.attempted||this.active||t.deviceId!==this.deviceId||this.privateSource&&(!this.privateCollectionCurrent()||t.collection!==this.prospectiveCollection)||this.cloudSource&&(!this.cloudCopyCollectionCurrent()||t.collection!==this.cloudCollection||t.state!=="cloud_copy"||t.cloudCopyOptIn!==!0))throw M();let s=nC(t.policyPins);if(i){if(this.sql||i.needsRecovery||!this.sqlBinding.exports)throw M();this.sqlBinding.sql=i,this.sqlBinding.run=i.import(this.sqlBinding.exports)}if(!this.sql||this.sql.needsRecovery)throw M();this.attempted=!0;let r=vn(t.endpoint),a=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,p=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(a<0||p<0||typeof t.cloudCopyOptIn!="boolean"||a===1!==t.cloudCopyOptIn||!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295||(o=An(new Map([[0,4],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,r],[5,t.trustedRoots.map(Kt)],[6,t.trustedSigners.map(U)],[7,Cp(t.expectedGenesis)],[8,a],[9,t.cloudCopyOptIn],[10,null],[11,null],[12,p],[13,t.sqliteVersion],[14,U(this.connectorId)],[15,U(this.installationId)],[16,s]])),o.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_device_adopt(...this.put(o)))).length||!this.deviceCurrent())throw M();this.collection=t.collection,this.endpoint=r,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),M()}finally{o?.fill(0)}}signCpEnrol(t){let i=null;try{if(!this.deviceCurrent()||!this.publicIdentity||this.active||this.pump)throw this.retireLog(),M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_cp_enrol_sign(...this.put(i))));if(!this.deviceCurrent())throw this.retireLog(),M();if(!o.length)throw M();let{m:s,identity:r}=this.guard(()=>this.publicResult(o)),a=s.get(3);if(!(a instanceof Uint8Array)||a.length!==64||["signPublicKey","kemPublicKey","noisePublicKey"].some(p=>r[p].some((l,c)=>l!==this.publicIdentity[p][c])))throw M();return Object.freeze({...r,signature:new Uint8Array(a)})}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}signCpLogToken(t){let i=null;try{if(!this.active||this.retired||!this.cpPin)throw M();let o=this.cpPin,s=!1;try{s=o.isCurrent()===!0&&o.connectorId===this.connectorId&&o.deviceId===this.deviceId&&o.collection===this.collection}catch{}if(!s)throw this.retireLog(),M();i=new Uint8Array(Kt(t));let r=this.guard(()=>this.takeOut(this.app.rt_app_cp_log_token_sign(...this.put(i))));if(r.length!==64)throw r.fill(0),M();return r}catch{throw M()}finally{i?.fill(0)}}bindLogTransport(t){try{if(!this.active||this.retired||this.pump||this.endpoint===null||this.collection===null||t.isCurrent()!==!0||vn(t.endpoint)!==this.endpoint||t.collection!==this.collection)throw M()}catch{throw M()}let i=U(this.collection);if(this.guard(()=>this.app.rt_app_log_bind(this.endpoint,...this.put(i)))!==1)throw M();if(this.logGeneration=this.guard(()=>vn(this.app.rt_app_log_generation())),this.logGeneration===0n)throw this.retireLog(),M();return this.pump=new ns(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}requestLogHead(){return!this.active||this.retired||this.pump===null||typeof this.app.rt_app_log_head!="function"?!1:this.guard(()=>this.app.rt_app_log_head())===1}get supportsLogPush(){return typeof this.app.rt_app_log_hello_sign=="function"}signLogHello(t,i){let o=null;try{if(!this.supportsLogPush||!this.active||this.retired||!this.pump||!this.transport||this.logGeneration===0n||!this.transport.isCurrent()||!(t instanceof Uint8Array)||t.length!==32||typeof i!="string"||i.length===0||i.length>16*1024||/[^\x21-\x7e]/.test(i))return null;let s=new TextEncoder().encode(i);o=new Uint8Array(32+s.length),o.set(t,0),o.set(s,32),s.fill(0);let r=this.logGeneration,a=this.guard(()=>this.takeOut(this.app.rt_app_log_hello_sign(r,...this.put(o))));return a.length!==64?(a.fill(0),null):a}catch{return null}finally{o?.fill(0)}}async reconnectLogTransport(t){let i=this.pump,o=this.logGeneration,s=()=>this.active&&!this.retired&&this.pump===i&&i!==null&&this.transport===t&&t.isCurrent()===!0&&vn(t.endpoint)===this.endpoint&&t.collection===this.collection;try{if(!s()||(await i.drainForAuthenticatedReconnect(),!s()))throw M();this.pump=null,this.transport=null;let r=U(this.collection);try{if(this.guard(()=>this.app.rt_app_log_reconnect(this.endpoint,...this.put(r)))!==1)throw M()}finally{r.fill(0)}if(this.logGeneration=this.guard(()=>vn(this.app.rt_app_log_generation())),this.logGeneration<=o||!t.isCurrent()||this.retired||!this.active)throw M();return this.pump=new ns(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}catch{throw this.retireLog(),M()}}signLogHttp(t){let i=null;try{if(!this.active||!this.pump||!this.transport||this.logGeneration===0n||this.endpoint===null||t.path!=="/v1/rpc"||t.collection!==this.collection||vn(t.endpoint)!==this.endpoint||!this.transport.isCurrent()||!(t.frame instanceof Uint8Array)||t.frame.length===0||t.frame.length>16*1024*1024||!(t.nonce instanceof Uint8Array)||t.nonce.length!==32||typeof t.token!="string"||t.token.length===0||t.token.length>16*1024||/[^\x21-\x7e]/.test(t.token))throw M();i=An(new Map([[0,t.frame],[1,t.token],[2,t.nonce]]));let o=this.guard(()=>this.takeOut(this.app.rt_app_log_http_sign(this.endpoint,this.logGeneration,vn(t.originalCallId),...this.put(i))));if(o.length!==64)throw o.fill(0),M();return o}catch{throw M()}finally{i?.fill(0)}}takeLogCalls(){return!this.active||this.retired?[]:this.guard(()=>{let t=this.takeOut(this.app.rt_app_log_calls());if(!t.length)return[];let i=ue(t);if(!Array.isArray(i)||i.length>64)throw M();return i.map(o=>{if(!(o instanceof Map))throw M();let s=o,r=s.get(0),a=s.get(1),p=s.get(2);if(vn(r)!==this.endpoint||!(a instanceof Uint8Array)||p!==void 0&&!(p instanceof Uint8Array))throw M();return{endpoint:r,frame:a,...p!==void 0?{sidecar:p}:{}}})})}acceptLogReply(t,i){return!this.active||this.retired?!1:this.guard(()=>this.app.rt_app_log_reply(vn(t),...this.put(i))===1)}logNoResponse(t){this.active&&!this.retired&&this.guard(()=>this.app.rt_app_log_no_response(vn(t)))}retireLog(){this.logGeneration=0n,!this.retired&&(this.retired=!0,this.cpPin=null,this.connectorId=null,this.devicePin=null,this.installationId=null,this.privateSource=null,this.prospectiveCollection=null,this.privatePurpose=null,this.sasCommitment?.fill(0),this.sasCommitment=null,this.publicIdentity=null,this.noiseEnvelope?.fill(0),this.noiseEnvelope=null,this.deviceActive=!1,this.deviceRegistered=!1,this.active?this.guard(()=>{super.dispose(),this.app.rt_app_log_retire()}):this.deviceAttempted&&this.guard(()=>this.app.rt_app_device_retire()))}pushLog(t){return!this.active||this.retired||!this.pump||!this.transport?!1:this.guard(()=>{let i=this.transport;return i.isCurrent()!==!0||vn(i.endpoint)!==this.endpoint||i.collection!==this.collection?(this.retireLog(),!1):this.app.rt_app_log_push(...this.put(t))===1})}accountKeyCurrent(t){try{return this.active&&!this.retired&&t.isCurrent()===!0&&t.approvalMode==="password-ak1"&&t.collection===this.collection&&t.deviceId===this.deviceId&&t.connectorId===this.connectorId&&t.installationId===this.installationId&&this.devicePin!==null&&this.devicePin.isCurrent()===!0&&this.devicePin.connectorId===this.connectorId&&this.devicePin.deviceId===this.deviceId&&this.devicePin.installationId===this.installationId}catch{return!1}}accountKeyState(t){let i=ue(t);if(!(i instanceof Map))throw M();let o=i;if(o.size!==2||!o.has(0)||!o.has(1))throw M();let s=o.get(0),r=o.get(1);if(s===0||s===1){if(r!==null)throw M();return Object.freeze({state:s===0?"pending":"keyed"})}if(s!==2||typeof r!="string"||!["not_private","not_ready","not_enrolled","not_authorized","device_missing","enrolment_mismatch","not_keyed","no_wrap","inconsistent","failed","outcome_unknown"].includes(r))throw M();return Object.freeze({state:"refused",reason:r})}unlockAccountKeyConsuming(t,i){try{if(t.approvalMode==="strict")throw new on;if(!this.accountKeyCurrent(t))throw M();Kt(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_unlock(...this.put(i)))));if(!this.accountKeyCurrent(t))throw M();return o}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i instanceof Uint8Array&&i.fill(0)}}setupAccountKeyDeviceConsuming(t,i){try{if(t.approvalMode==="strict")throw new on;if(!this.accountKeyCurrent(t))throw M();Kt(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_device_setup(...this.put(i)))));if(!this.accountKeyCurrent(t))throw M();return o.state==="refused"?o:Object.freeze({state:o.state==="keyed"?"recovery_keyed":"recovery_pending"})}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i instanceof Uint8Array&&i.fill(0)}}accountKeyStatus(t){try{if(!this.accountKeyCurrent(t))throw M();let i=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_status())));if(!this.accountKeyCurrent(t))throw M();return i}catch{throw this.retireLog(),M()}}observations(){if(!this.active||this.retired)throw M();return this.guard(()=>{let t=ue(this.takeOut(this.app.rt_app_observations()));if(!(t instanceof Map))throw M();let i=t;for(let o of[1,2,3,4])if(typeof i.get(o)!="boolean")throw M();return{status:tr.dec(i.get(0)),keyringRebuilding:i.get(1),keyringRebuildFailed:i.get(2),snapshotInstallAvailable:i.get(3),requiresReopen:i.get(4)}})}async close(){return this.pump&&(await this.pump.close(),this.pump=null,this.transport=null),this.shutdown()}shutdown(){if(!this.active)return this.deviceAttempted&&!this.retired&&this.retireLog(),this.discard(),!1;if(this.pump)return this.pump.close().catch(()=>{}),this.fail(),!1;try{return this.retireLog(),super.dispose(),this.guard(()=>this.app.rt_app_shutdown()===1)&&this.sql!==null&&!this.sql.needsRecovery}finally{this.active=!1,this.discard()}}dispose(){this.shutdown()}};var Ja="unsynced",TT="current";var uw="moved.",mh=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;var fw=class extends Error{constructor(t){super(`app unsynced collection: ${t}`);this.reason=t;this.name="AppUnsyncedCollectionError"}reason},En=(n="unavailable")=>new fw(n);function MT(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="account,collection,device,installation,replica,version")throw En();let e=n,t=[e.account,e.installation,e.collection,e.replica,e.device];if(e.version!==1||t.some(i=>typeof i!="string"||!mh.test(i))||new Set(t).size!==t.length)throw En();return Object.freeze({...e})}function rC(n,e){if(e.throwIfAborted(),!globalThis.indexedDB)throw En();return new Promise((t,i)=>{let o=indexedDB.open(n,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(En("fenced"))};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(s||o.result.objectStoreNames.length)throw En();o.result.createObjectStore(Ja)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{if(r(),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Ja)){o.result.close(),i(En());return}t(o.result)}})}async function LT(n,e,t,i,o){let s=await rC(n,o);try{return await new Promise((r,a)=>{let p=s.transaction(Ja,i?"readwrite":"readonly",{durability:"strict"}),l=null,c=null;p.onabort=p.onerror=()=>a(c??En()),p.oncomplete=()=>r(l);let d=p.objectStore(Ja),u=d.get(e);u.onsuccess=()=>{try{if(u.result!==void 0){l=t(u.result);return}if(!i)return;let f=t(i());d.add(f,e),l=f}catch(f){c=f,p.abort()}}})}finally{s.close()}}async function jT(n,e,t){let i=await rC(n,e);try{return await new Promise((o,s)=>{let r=i.transaction(Ja,"readwrite",{durability:"strict"}),a,p=null;r.onabort=r.onerror=()=>s(p??En()),r.oncomplete=()=>o(a),t(r.objectStore(Ja),l=>{a=l},l=>{p=l,r.abort()})})}finally{i.close()}}var oC=/^sha256:[0-9a-f]{64}$/;function sC(n){let e=n;if(!e||e.version!==1||!e.revisions||typeof e.revisions!="object"||Array.isArray(e.revisions))throw En();let t=new Map;for(let[i,o]of Object.entries(e.revisions)){if(!mh.test(i)||typeof o!="string"||!oC.test(o))throw En();t.set(i,o)}return t}async function aC(n,e,t){if(!mh.test(e))throw En("binding");return await LT(n,uw+e,sC,null,t)??new Map}function lC(n,e,t,i){for(let[o,s]of t)if(!mh.test(o)||!oC.test(s))return Promise.reject(En("binding"));return jT(n,i,(o,s,r)=>{let a=o.get(TT),p=o.get(uw+e);p.onsuccess=()=>{try{if(a.result===void 0||MT(a.result).collection!==e){r(En());return}let l=p.result===void 0?new Map:sC(p.result);for(let[c,d]of t)l.set(c,d);o.put({version:1,revisions:Object.fromEntries(l)},uw+e),s()}catch(l){r(l)}}})}var bV=720*60*60*1e3;re();var hw=new WeakMap,NT=100,UT=(n,e)=>`unsynced/1\0${n}\0${e}`;async function yh(n,e,t){try{return await n.get(e,void 0,t)}catch(i){if(X(i,"not_found"))return null;throw i}}function DT(n,e){let t=n.lastIndexOf("/"),i=n.lastIndexOf("."),o=i>t+1?i:n.length;return`${n.slice(0,o)} ${e}${n.slice(o)}`}async function $T(n,e){let t=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`unsynced/1\0copy\0${n}\0${e}`))).slice(0,16);t[6]=t[6]&15|128,t[8]=t[8]&63|128;let i=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}function zT(n){if(n.document===void 0)throw _("invalid_request","the source record has no document");return{path:n.path,document:n.document}}async function mw(n,e,t={}){let{signal:i}=t,o=t.map??zT;if(n.collection===e.collection)throw _("invalid_request","a collection cannot be transferred into itself");let s=t.ledger?await t.ledger.read(n.collection,i):new Map,r=new Map,a=await e.describe(i?{signal:i}:{}),p=new Set(a.types.map(w=>w.name.toLowerCase())),l=[],c=new Map,d=new Set,u=new Set,f=0;for await(let w of n.pages({},{body:!0,document:!0},i))for(let g of w.records){i?.throwIfAborted();let y=null;if(await yh(e,g.id,i)){let S=s.get(g.id);if(S===void 0&&r.set(g.id,g.revision),S===void 0||S===g.revision){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}if(y=await $T(g.id,g.revision),await yh(e,y,i)){r.set(g.id,g.revision),l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}}let v=await o(g);if(v===null){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"skipped"}));continue}if(!v||typeof v!="object"||v.id!==void 0&&v.id!==g.id)throw _("invalid_request","the transfer map must keep the record ID");r.set(g.id,g.revision);let A=v.path??g.path,k=A;for(let S=2;d.has(k.toLowerCase())||await yh(e,{path:k},i);S++){if(S>NT)throw _("conflict",`no free path beside ${A}`,"path_taken");k=DT(A,S)}d.add(k.toLowerCase());for(let S of v.type?[v.type]:g.types)p.has(S.toLowerCase())||u.add(S);c.set(g.id,Object.freeze({...v,id:y??g.id,path:k})),k!==A&&!y&&f++,l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:y?"changed":"create",path:k,...y?{copyId:y}:k!==A?{renamedFrom:A}:{}}))}let h=new Map;if(t.addTypes&&u.size){let w=new Map((await n.describe(i?{signal:i}:{})).types.map(g=>[g.name.toLowerCase(),g]));for(let g of[...u].sort()){let y=w.get(g.toLowerCase());if(!y?.revision)continue;let v;try{v=(await n.resources.get(y.path,i)).text}catch(A){if(X(A,"not_found"))continue;throw A}typeof v=="string"&&(h.set(y.name,v),u.delete(g))}}let m=w=>l.filter(g=>g.outcome===w).length,b=Object.freeze({source:n.collection,destination:e.collection,items:Object.freeze(l),missingTypes:Object.freeze([...u].sort()),addTypes:Object.freeze([...h.keys()].sort()),counts:Object.freeze({create:m("create"),present:m("present"),skipped:m("skipped"),renamed:f,changed:m("changed")})});return hw.set(b,Object.freeze({inputs:c,types:h,map:t.map,ledger:t.ledger,settle:r})),b}async function cC(n,e,t,i){let o=hw.get(n);if(!o)throw _("invalid_request","plan the transfer first");if(e.collection!==n.source||t.collection!==n.destination)return!1;let s=await mw(e,t,{...o.map?{map:o.map}:{},...o.ledger?{ledger:o.ledger}:{},...i?{signal:i}:{}});return s.counts.create===0&&s.counts.changed===0}async function pC(n,e,t={}){let i=hw.get(n),{signal:o}=t;if(!i)throw _("invalid_request","plan the transfer first");let{inputs:s}=i;if(e.collection!==n.destination)throw _("invalid_request","the plan is for another collection");let r=n.items.filter(m=>m.outcome==="create"||m.outcome==="changed"),a=[],p=[],l=0,c=n.counts.present,d=0,u=()=>{try{t.onProgress?.(Object.freeze({done:d,total:r.length}))}catch{}};i.ledger&&i.settle.size&&await i.ledger.record(n.source,i.settle,o);let f=[],h=[];for(let[m,b]of i.types){o?.throwIfAborted();try{await e.createType(b,o?{signal:o}:{}),f.push(m)}catch(w){o?.throwIfAborted(),X(w,"conflict")?f.push(m):h.push(Object.freeze({name:m,code:X(w)?w.code:"unavailable"}))}}u();for(let m of r){o?.throwIfAborted();try{let b=await e.create(s.get(m.sourceId),{intent:UT(n.source,m.copyId??m.sourceId),...o?{signal:o}:{}});p.push(b.mutationId),l++}catch(b){o?.throwIfAborted(),await yh(e,m.copyId??m.sourceId,o).catch(()=>null)?c++:a.push(Object.freeze({sourceId:m.sourceId,code:X(b)?b.code:"unavailable"}))}d++,u()}return Object.freeze({source:n.source,destination:n.destination,created:l,present:c,skipped:n.counts.skipped,failed:Object.freeze(a),addedTypes:Object.freeze(f),failedTypes:Object.freeze(h),mutations:Object.freeze(p),retired:!1})}vh();hu();no();Pu();var yC="mdbn-app-tabs/1",yw="\0mdbn-port";var dp=n=>typeof n=="string"&&/^[0-9a-f-]{36}$/.test(n);function WT(n){if(!n||typeof n!="object")return null;let e=n;switch(e.k){case"join":case"leave":return dp(e.tab)?e:null;case"leader":case"bye":case"fault":case"signedOut":case"signedIn":return dp(e.leader)?e:null;case"joined":return dp(e.tab)&&dp(e.leader)&&typeof e.binding=="string"?e:null;case"m":return dp(e.tab)&&typeof e.up=="boolean"&&Number.isSafeInteger(e.s)&&e.s>=0?e:null;default:return null}}function gw(n){if(!n||typeof n!="object")return!1;let e=Object.getPrototypeOf(n);return e===Object.prototype||e===null}function bw(n,e,t=0){return n instanceof MessagePort?{[yw]:e(n)}:t>=6?n:Array.isArray(n)?n.map(i=>bw(i,e,t+1)):gw(n)?Object.fromEntries(Object.entries(n).map(([i,o])=>[i,bw(o,e,t+1)])):n}function ww(n,e,t,i=0){if(gw(n)&&Object.keys(n).length===1&&Number.isSafeInteger(n[yw])){let o=e(n[yw]);return t.push(o),o}return i>=6?n:Array.isArray(n)?n.map(o=>ww(o,e,t,i+1)):gw(n)?Object.fromEntries(Object.entries(n).map(([o,s])=>[o,ww(s,e,t,i+1)])):n}var _h=class{constructor(e,t){this.send=e;this.up=t;this.next=t?1:2}send;up;streams=new Map;next;bridge(e,t){this.streams.set(t,e),e.onmessage=i=>{let o=i.ports.length?bw(i.data,s=>{let r=this.next;return this.next+=2,this.bridge(s,r),r}):i.data;try{this.send(t,o)}catch{}}}deliver(e,t){let i=this.streams.get(e);if(!i)return;let o=[],s=ww(t,r=>{let a=new MessageChannel;return this.bridge(a.port1,r),a.port2},o);try{i.postMessage(s,o)}catch{for(let r of o)r.close()}}close(){for(let e of this.streams.values()){e.onmessage=null;try{e.close()}catch{}}this.streams.clear()}},Ah=class{constructor(e,t,i,o=()=>{}){this.env=t;this.lost=i;this.signedInElsewhere=o;this.base=e.storageNamespace===void 0?`${yC}/${e.cpOrigin}/${e.appId}/${e.build}`:`${yC}/namespace/${JSON.stringify([e.cpOrigin,e.appId,e.build,e.storageNamespace])}`}env;lost;signedInElsewhere;tab=crypto.randomUUID();base;channel=null;presence=null;leading=null;hub=null;follower=null;signingOut=!1;announced=!1;joining=null;get leader(){return this.leading!==null}open(){if(this.channel)return this.channel;let e=new this.env.BroadcastChannel(this.base);return e.onmessage=t=>this.received(WT(t.data)),this.channel=e,e}post(e){this.channel?.postMessage(e)}hold(e,t,i){return new Promise((o,s)=>{let r=p=>{if(!p){o(null);return}return new Promise(l=>o(l))};(t?this.env.locks.request(e,{ifAvailable:!0},r):this.env.locks.request(e,{signal:i},r)).catch(s)})}async elect(e){if(e.throwIfAborted(),this.open(),this.presence??=await this.hold(`${this.base}/tab/${this.tab}`,!0),e.throwIfAborted(),this.leading||(this.leading=await this.hold(`${this.base}/leader`,!0)),this.leading)return e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};let t=new AbortController,i=()=>t.abort();e.addEventListener("abort",i,{once:!0});let o=this.hold(`${this.base}/leader`,!1,t.signal),s;try{s=await new Promise((c,d)=>{o.then(u=>{u&&c({release:u})},()=>{}),this.joining={resolve:c,reject:d},e.addEventListener("abort",()=>d(e.reason),{once:!0}),this.post({k:"join",tab:this.tab})})}catch(c){throw this.joining=null,t.abort(),c}finally{e.removeEventListener("abort",i)}if(this.joining=null,"release"in s)return this.leading=s.release,e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};e.aborted&&(t.abort(),e.throwIfAborted());let r=new MessageChannel,a=this.tab,p=new _h((c,d)=>this.post({k:"m",tab:a,up:!0,s:c,d}),!0);p.bridge(r.port2,0);let l={leader:s.leader,tunnel:p,wait:t,port:r.port1,left:!1,signedOut:!1};return this.follower=l,o.then(c=>{if(c){if(this.follower!==l||l.left){c();return}this.leading=c,this.departed(l)}},()=>{}),{kind:"follower",port:r.port1,binding:s.binding,leave:()=>this.leave(l)}}lead(e){!this.leading||this.hub||(this.hub={followers:new Map,worker:e,faulted:!1},this.post({k:"leader",leader:this.tab}))}fault(){!this.hub||this.hub.faulted||(this.hub.faulted=!0,this.post({k:"fault",leader:this.tab}))}signedOut(){this.hub&&(this.signingOut=!0,this.post({k:"signedOut",leader:this.tab}))}signedIn(){!this.hub||this.announced||this.signingOut||(this.announced=!0,this.post({k:"signedIn",leader:this.tab}))}resign(){let e=this.hub,t=this.signingOut;this.hub=null,this.signingOut=!1,this.announced=!1,e&&this.post({k:"bye",leader:this.tab,...t?{signedOut:!0}:{}});let i=this.leading;if(this.leading=null,i?.(),e){for(let o of e.followers.values())o.watch.abort(),o.tunnel.close();e.followers.clear()}}leave(e){e.left||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower===e&&(this.follower=null,this.post({k:"leave",tab:this.tab})))}departed(e,t=!1){e.left||this.follower!==e||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower=null,this.lost(t||e.signedOut))}release(){this.joining?.reject(new DOMException("released","AbortError")),this.joining=null,this.follower&&this.leave(this.follower),this.resign();let e=this.presence;this.presence=null,e?.(),this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}received(e){if(!e)return;let t=this.hub,i=this.follower;switch(e.k){case"join":{if(!t||t.followers.has(e.tab)||e.tab===this.tab)return;let o=crypto.randomUUID(),s=new MessageChannel,r=e.tab,a=new _h((l,c)=>this.post({k:"m",tab:r,up:!1,s:l,d:c}),!1);a.bridge(s.port1,0);let p=new AbortController;t.followers.set(r,{binding:o,tunnel:a,watch:p});try{t.worker.attach(s.port2,o)}catch{t.followers.delete(r),a.close();return}this.post({k:"joined",tab:r,binding:o,leader:this.tab}),t.faulted&&this.post({k:"fault",leader:this.tab}),this.hold(`${this.base}/tab/${r}`,!1,p.signal).then(l=>{l?.(),this.drop(t,r)},()=>{});return}case"leave":t&&this.drop(t,e.tab);return;case"joined":if(e.tab===this.tab&&this.joining){let o=this.joining;this.joining=null,o.resolve({binding:e.binding,leader:e.leader})}return;case"leader":this.joining&&this.post({k:"join",tab:this.tab});return;case"bye":i&&i.leader===e.leader&&this.departed(i,e.signedOut===!0);return;case"signedOut":i&&i.leader===e.leader&&(i.signedOut=!0);return;case"signedIn":!t&&!i&&!this.joining&&e.leader!==this.tab&&this.signedInElsewhere();return;case"fault":i&&!i.left&&i.leader===e.leader&&i.port.dispatchEvent(new MessageEvent("messageerror"));return;case"m":e.up&&t?t.followers.get(e.tab)?.tunnel.deliver(e.s,e.d):!e.up&&i&&e.tab===this.tab&&i.tunnel.deliver(e.s,e.d);return}}drop(e,t){let i=e.followers.get(t);if(i){e.followers.delete(t),i.watch.abort(),i.tunnel.close();try{e.worker.detach(i.binding)}catch{}}}};function Hi(n){try{return n()}catch{return}}function KT(){let n=Hi(()=>globalThis.crypto?.subtle),e=Hi(()=>globalThis.navigator?.storage),t=Hi(()=>typeof e?.getDirectory=="function"?()=>e.getDirectory.call(e):void 0);return{subtle:n,abortSignalAny:Hi(()=>typeof AbortSignal=="function"&&typeof AbortSignal.any=="function")===!0,randomUUID:Hi(()=>typeof globalThis.crypto?.randomUUID=="function")===!0,worker:Hi(()=>typeof Worker=="function")===!0,messageChannel:Hi(()=>typeof MessageChannel=="function")===!0,locks:Hi(()=>typeof globalThis.navigator?.locks?.request=="function")===!0,broadcastChannel:Hi(()=>typeof BroadcastChannel=="function")===!0,indexedDB:Hi(()=>typeof globalThis.indexedDB<"u")===!0,getDirectory:t}}async function gC(n=KT()){let e=[];if(n.subtle||e.push("web_crypto"),n.abortSignalAny||e.push("abort_signal_any"),n.randomUUID||e.push("random_uuid"),n.worker||e.push("worker"),n.messageChannel||e.push("message_channel"),n.locks||e.push("web_locks"),n.broadcastChannel||e.push("broadcast_channel"),n.indexedDB||e.push("indexed_db"),n.subtle)try{await n.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{e.push("x25519")}if(e.length)return{ok:!1,problem:"browser_unsupported",missing:Object.freeze(e)};if(typeof n.getDirectory!="function")return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])};try{await n.getDirectory()}catch{return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])}}return{ok:!0}}function kh(n,e,t={pendingForMs:0,connection:"online"}){if(!Number.isSafeInteger(n)||n<0)throw new RangeError("invalid unsynced count");return n===0?{kind:"no_pending_edits",unsynced:0,warning:null}:{kind:"not_yet_synced",unsynced:n,warning:!e.persistent&&(t.pendingForMs>=3e4||t.connection==="offline")?"storage_may_be_evicted":null}}function bC(n){switch(n){case"pending":return"not_yet_synced";case"confirmed":return"saved";case"rejected":return"rejected";case"unknown":return"outcome_unknown";default:throw new RangeError("invalid receipt state")}}var wC="Some changes are only on this device. Stay online so they can sync.";async function Sh(n,e,t=!1){let i=!1;try{i=await n?.persisted()===!0,!i&&t&&(i=await n?.persist?.()===!0)}catch{}return{persistent:i,installed:e}}xh();var AC=Object.freeze(new Set);function kC(n,e){let t=`mdbase.${n}.forgotten-collections.v1.${encodeURIComponent(e)}`,i=()=>{try{return globalThis.localStorage??null}catch{return null}},o=null,s=()=>{let a=null;try{a=i()?.getItem(t)??null}catch{}if(o&&o.raw===a)return o;let p=null,l=AC;try{let c=a?JSON.parse(a):null;c?.v===1&&typeof c.account=="string"&&c.account.length<=64&&Array.isArray(c.ids)&&c.ids.length<=1024&&c.ids.every(d=>typeof d=="string"&&d.length>0&&d.length<=64)&&(p=c.account,l=Object.freeze(new Set(c.ids)))}catch{}return o={raw:a,account:p,ids:l},o},r=(a,p)=>{try{p.size?i()?.setItem(t,JSON.stringify({v:1,account:a,ids:[...p].slice(-1024)})):i()?.removeItem(t)}catch{}o=null};return Object.freeze({read(a){let p=s();return a&&p.account===a?p.ids:AC},add(a,p){let l=s(),c=new Set(l.account===a?l.ids:[]);c.has(p)||(c.add(p),r(a,c))},remove(a,p){let l=s();if(l.account!==a||!l.ids.has(p))return!1;let c=new Set(l.ids);return c.delete(p),r(a,c),!0},clear(){try{i()?.removeItem(t)}catch{}o=null}})}var QT=new Set(["owner","editor","viewer"]),oo=(n,e=512)=>typeof n=="string"&&n.length>0&&n.length<=e,eM=new Set(["unselected","opening","setup_required","ready"]);function SC(n){let e=n;return!e||typeof e!="object"||!oo(e.collectionId,64)||typeof e.displayName!="string"||e.displayName.length>512||!QT.has(e.role)?null:Object.freeze({collectionId:e.collectionId,displayName:e.displayName,role:e.role})}function PC(n){let e=n;return!e||typeof e!="object"||e.state!=="paired"||!oo(e.requestId,64)||!oo(e.installationId,64)||!oo(e.deviceId,64)||!oo(e.appId,64)||e.kind!=="app-runtime"&&e.kind!=="mobile"||!oo(e.verificationUri,2048)||!oo(e.accountId,64)||!Array.isArray(e.collectionIds)||e.collectionIds.length>1024||!e.collectionIds.every(t=>oo(t,64))?null:Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:e.verificationUri,state:"paired",accountId:e.accountId,...typeof e.accountEmail=="string"&&e.accountEmail.length<=320?{accountEmail:e.accountEmail}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections===!0,requestedCreateCollections:e.requestedCreateCollections===!0})}function xC(n,e){let t=`mdbase.${n}.session-hint.v1.${encodeURIComponent(e)}`,i=null,o=null,s=()=>{try{return globalThis.localStorage??null}catch{return null}},r=()=>{let p=null;try{p=s()?.getItem(t)??null}catch{return null}if(i&&i.raw===p)return i.value;let l=null;try{let c=p?JSON.parse(p):null,d=c?.v===1?PC(c.signIn):null,u=Array.isArray(c?.collections)&&c.collections.length<=1024?c.collections.map(SC):null;d&&u&&u.every(f=>f!==null)&&(l=Object.freeze({signIn:d,collections:Object.freeze(u)}))}catch{l=null}return i={raw:p,value:l},l},a=()=>{o=null;try{s()?.removeItem(t)}catch{}};return Object.freeze({read:r,clear:a,observe(p){if(p.status==="signed_out"&&p.signIn===null){o!==""&&(a(),o="");return}if(!eM.has(p.status)||p.signIn?.state!=="paired")return;let l=PC(p.signIn),c=p.collections.map(SC);if(!l||!c.every(u=>u!==null))return;let d=JSON.stringify({v:1,signIn:l,collections:c});if(d!==o){o=d;try{s()?.setItem(t,d)}catch{}}}})}Hy();re();function gM(n,e){return new Promise((t,i)=>{let o=()=>{clearTimeout(s),i(_("cancelled","The original collection closed."))};if(n.aborted){i(_("cancelled","The original collection closed."));return}let s=setTimeout(()=>{n.removeEventListener("abort",o),t()},e);n.addEventListener("abort",o,{once:!0})})}var bM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Qa=Object.freeze({checking:!1,assessment:null,problem:null}),wM=Object.freeze({capabilities:Qa,contracts:Qa,configuration:Qa,files:Qa,people:Qa,notifications:Qa}),lo=(n,e)=>{let t=e?Object.freeze({status:e,problem:e==="incompatible"?Object.freeze({code:"incompatible"}):null}):null;return Object.freeze({checking:n,assessment:t,problem:null,facets:Object.freeze({...wM,configuration:Object.freeze({checking:n,assessment:t,problem:null})})})},Eh=n=>n==="approval_required"?"device_approval_required":n,vM=n=>n.state==="opening"||n.state==="unavailable"&&n.reason!=="sync_required"&&n.reason!=="access_removed"&&n.reason!=="collection_deleted",HC=n=>{if(X(n)){let e=n.details instanceof Map?n.details.get("availability"):void 0;return typeof e=="string"?Eh(e):n.reason??n.code}return"open_failed"},GC=n=>{if(!X(n))return;let e=j0(n.details);return Object.freeze({name:"MdbaseError",code:n.code,...e?{relay:e}:{}})};function _M(n){let e=n.manifest?.redirect_uris;return(Array.isArray(e)?e.filter(i=>typeof i=="string"):[]).find(i=>{try{return new URL(i).origin===n.origin}catch{return!1}})??new URL("/",n.origin).href}function YC(n,e,t){if(n.signIn?.state!=="paired"||!e.length&&!t)return n;let i=new Set(n.collections.map(p=>p.collectionId)),o=e.filter(p=>!i.has(p.collectionId)),s=o.length?Object.freeze([...n.collections,...o]):n.collections;if(!t||n.status!=="unselected"||i.has(t.collectionId))return s===n.collections?n:Object.freeze({...n,collections:s});let{problemDetail:r,...a}=n;return Object.freeze({...a,collections:s,status:t.status,selectedCollectionId:t.collectionId,problem:t.problem,transport:null,live:null,...t.problemDetail?{problemDetail:t.problemDetail}:{},..."readiness"in n?{readiness:t.readiness}:{}})}var qh=class{options;loading=null;list=Object.freeze([]);open=null;listed=null;settled=null;refreshing=null;closed=!1;bindings=null;bindingsAccount=null;native=null;revision=0;constructor(e){this.options=e}grants(){let e=this.loading??=(this.options.grants??(async()=>{let{MdbaseAppGrants:t}=await Promise.resolve().then(()=>(KC(),WC));return new t({declaration:this.options.declaration,redirectUri:_M(this.options.declaration)})}))();return e.catch(()=>{this.loading===e&&(this.loading=null)}),e}changed(){if(!this.closed){this.revision++;try{this.options.onChange()}catch{}}}bind(e,t){let i=t.filter(o=>o.account_id===e);this.bindingsAccount===e&&JSON.stringify(i)===JSON.stringify(this.bindings)||(this.bindingsAccount=e,this.bindings=Object.freeze([...i]),this.settled=null,this.listed=null,this.setList([]))}async nativeAuthorization(e,t,i){if(e.action==="cancel")return this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,null;if(this.closed||i.aborted)throw _("cancelled","Original Native authorization fenced");if(e.action==="prepare"){if(this.native||e.value.authorizationId)throw _("unauthenticated","Original Native preparation unavailable");let a={context:e.value,portal:t,prepared:null,life:new AbortController};this.native=a;let p=AbortSignal.any([i,a.life.signal]),l=await this.grants();if(!l.prepareAuthorization)throw _("unavailable","Native authorization unavailable");let c=btoa(String.fromCharCode(...Uint8Array.from(e.value.challenge.match(/../g),u=>parseInt(u,16)))).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,""),d=await l.prepareAuthorization({authorizationNonce:c,expectedAccountId:e.value.accountId,signal:p});if(a.prepared=d,this.native!==a||p.aborted||d.applicationId!==e.value.appId)throw d.cancel(),_("unauthenticated","Original application registration mismatch");return Object.freeze({authorizationId:d.authorizationId,applicationId:d.applicationId,manifestDigest:d.manifestDigest})}let o=this.native,s=o?.prepared;if(!o||!s||o.portal!==t||o.context.requestId!==e.value.requestId||s.authorizationId!==e.value.authorizationRequestId)throw _("unauthenticated","Original Native preparation unavailable");let r=await s.finish({popup:t,collection:e.value.collectionId,signal:AbortSignal.any([i,o.life.signal])});if(this.native!==o||i.aborted||!r.nativeCompletion)throw _("unauthenticated","Original Native completion unavailable");return r.nativeCompletion}entries(){return this.list}has(e){return this.list.some(t=>t.collectionId===e)||this.open?.id===e}state(){return this.open?.state??null}connection(e){let t=this.open;return t&&t.id===e&&t.state.status==="ready"?t.connection:null}listing(e){return!this.closed&&e!==null&&this.settled!==e}ensure(e){this.settled!==e&&!this.refreshing&&this.refresh(e).catch(()=>{})}refresh(e=this.listed){if(this.closed)return Promise.resolve();if(this.refreshing)return this.refreshing;let t=(async()=>{try{let i=await this.grants(),o=this.bindings,s=[];if(o)for(let a of o)a.account_id===e&&await i.verifiedStoredNativeGrant?.(a)&&s.push(a);let r=await i.collections(o===null?{}:{bindings:s});if(this.closed||o!==this.bindings)return;this.listed=e,this.setList(r)}finally{!this.closed&&e!==null&&this.settled!==e&&(this.settled=e,this.changed())}})().finally(()=>{this.refreshing===t&&(this.refreshing=null)});return this.refreshing=t,t}setList(e){let t=Object.freeze(e.filter(i=>bM.test(i.collectionId)).map(i=>Object.freeze({collectionId:i.collectionId,displayName:i.displayName,role:i.role??"editor",availability:i.availability,kind:"private"})));JSON.stringify(t)!==JSON.stringify(this.list)&&(this.list=t,this.changed())}setAvailability(e,t){this.list.some(i=>i.collectionId===e&&JSON.stringify(i.availability)!==JSON.stringify(t))&&(this.list=Object.freeze(this.list.map(i=>i.collectionId===e?Object.freeze({...i,availability:t}):i)),this.changed())}set(e,t){if(this.open!==e||e.life.signal.aborted)return;let{problemDetail:i,...o}=e.state,{problemDetail:s,...r}=t,a=r.problem===null?void 0:s??(r.problem===void 0?i:void 0);e.state=Object.freeze({...o,...r,...a?{problemDetail:a}:{}}),this.changed()}async openCollection(e,t){if(this.closed)throw _("cancelled","Private collections closed","application_entry_fenced");this.close(!1);let i={id:e,life:new AbortController,client:null,setup:null,connection:null,stopLink:null,state:Object.freeze({collectionId:e,status:"opening",problem:null,readiness:lo(!0,null)})};this.open=i,this.changed();let o=i.life.signal;try{let s=await this.grants(),r=this.bindings?.find(d=>d.account_id===t.account&&d.collection_id===e),a=async()=>{if(this.bindings!==null&&(!r||this.bindingsAccount!==t.account||!this.bindings.includes(r)||!await s.verifiedStoredNativeGrant?.(r)))throw _("unauthenticated","Original account-bound Native grant unavailable");if(o.aborted)throw _("cancelled","Original Native open fenced")};await a();let p=await s.availability(e,{signal:o});if(this.setAvailability(e,p),vM(p)&&(p.state==="unavailable"&&this.set(i,{status:"blocked",problem:Eh(p.reason),readiness:lo(!1,null)}),p=await s.waitForAvailable(e,{signal:o,timeoutMs:this.options.waitMs??10*6e4,onAvailability:d=>{this.setAvailability(e,d),d.state==="unavailable"?this.set(i,{status:"blocked",problem:Eh(d.reason)}):this.set(i,{status:"opening",problem:null,readiness:lo(!0,null)})}})),p.state!=="available"){if(p.state==="opening")throw _("unavailable","The collection is still getting ready","collection_unavailable");this.set(i,{status:"blocked",problem:Eh(p.reason),readiness:lo(!1,null)});return}this.set(i,{status:"opening",problem:null}),await a();let l=await(this.options.connect??AM(this.options.declaration))(s,e,o);if(this.open!==i||o.aborted||l.collection!==e){if(l.close(),this.open===i&&!o.aborted)throw _("invalid_request","a different collection opened","collection_mismatch");return}i.client=l,i.setup=s.setup(l),i.connection=Object.freeze({id:e,displayName:this.list.find(d=>d.collectionId===e)?.displayName??"Collection",scope:Object.freeze({account:t.account,installation:t.installation,collection:e}),generation:crypto.randomUUID(),records:l,files:l.files,people:s.people(e,l),isCurrent:()=>this.open===i&&!o.aborted&&!this.closed}),await this.assessOpen(i);let c=0;i.stopLink=l.onLink((d,u)=>{u?this.set(i,{problem:HC(u),problemDetail:GC(u)}):d==="open"&&this.set(i,{problem:null});let f=++c;s.availability(e,{signal:o}).then(h=>{this.open===i&&!o.aborted&&f===c&&this.setAvailability(e,h)}).catch(()=>{})})}catch(s){throw this.open===i&&!o.aborted&&this.set(i,{status:"blocked",problem:HC(s),problemDetail:GC(s),readiness:lo(!1,null)}),s}}async assessOpen(e){this.set(e,{readiness:lo(!0,e.state.readiness.assessment?.status??null)});let t=1e3;for(;;){if(this.open!==e||e.life.signal.aborted)throw _("cancelled","The original collection closed.");let i;try{i=await e.setup.assess({signal:e.life.signal})}catch(o){if(!X(o)||o.code!=="rate_limited")throw o;let s=o.retryAfterMs;await gM(e.life.signal,Math.min(2147483647,Math.max(t,typeof s=="number"&&Number.isFinite(s)?s:0))),t=Math.min(3e4,t*2);continue}if(this.open!==e||e.life.signal.aborted)throw _("cancelled","The original collection closed.");return this.set(e,{status:i==="ready"?"ready":"setup_required",problem:null,readiness:lo(!1,i)}),i}}current(){let e=this.open;if(!e?.setup||e.life.signal.aborted)throw _("invalid_request","No Private collection is open","application_connection_fenced");return e}isOpen(){return this.open!==null}async assess(){let e=this.current();return await this.assessOpen(e),e.state.readiness}plan(e){return this.current().setup.plan(e)}async apply(e,t={}){let i=this.current(),o=await i.setup.apply(e,t);this.set(i,{status:o==="ready"?"ready":"setup_required",problem:null,readiness:lo(!1,o)})}async configure(e={}){let i=await this.current().setup.plan(e.signal?{signal:e.signal}:{});await this.apply(i,e)}async add(e,t,i){let o;try{o=await this.grants()}catch(r){throw e.close(),r}let s=await o.authorize({popup:e,...t?{collection:t}:{},...i?{signal:i}:{}});return await this.refresh().catch(()=>{}),s.collectionId}async forget(e){this.open?.id===e&&this.close();let t=await this.grants(),i=this.bindings?.find(o=>o.collection_id===e&&o.account_id===this.bindingsAccount);(this.bindings===null||i&&await t.verifiedStoredNativeGrant?.(i))&&await(i?t.forget(e,{expectedNoisePublicKey:i.client_noise_public_key}):t.forget(e)),this.list.some(o=>o.collectionId===e)&&(this.list=Object.freeze(this.list.filter(o=>o.collectionId!==e)),this.changed())}async forgetAll(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close();try{await(await this.grants()).forgetAllGrants()}finally{this.list=Object.freeze([]),this.listed=null,this.settled=null,this.changed()}}close(e=!0){let t=this.open;if(t){this.open=null,t.life.abort(),t.stopLink?.();try{t.client?.close()}catch{}e&&this.changed()}}dispose(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close(!1),this.closed=!0}};function AM(n){return async(e,t,i)=>{let{connect:o}=await Promise.resolve().then(()=>(Cs(),Ed));return o({connector:e.connector(t),app:{name:n.id,version:"1"},signal:i})}}var Vh={};function XM(n){let e=globalThis.document;return!e||typeof e.addEventListener!="function"||e.visibilityState!=="hidden"?Promise.resolve():new Promise((t,i)=>{let o=()=>{e.visibilityState!=="hidden"&&(e.removeEventListener("visibilitychange",o),n.removeEventListener("abort",s),t())},s=()=>{e.removeEventListener("visibilitychange",o),i(n.reason)};e.addEventListener("visibilitychange",o),n.addEventListener("abort",s,{once:!0})})}var RI=new WeakMap;function ZM(n){let e=n.unsynced;if(!e)return n;let t=RI.get(n);return t||(t=Object.freeze({...n,status:e.sessionStatus,selectedCollectionId:null,unsynced:null}),RI.set(n,t)),t}var Ap=class extends Error{code="application_not_yet_available";constructor(){super("MdbaseConnect application runtime is not yet available"),this.name="MdbaseApplicationUnavailableError"}},Zw=Object.freeze({code:"application_not_yet_available"}),cl=Object.freeze({checking:!1,assessment:null,problem:Zw}),QM=Object.freeze({checking:!1,assessment:null,problem:Zw,facets:Object.freeze({capabilities:cl,contracts:cl,configuration:cl,files:cl,people:cl,notifications:cl})}),pl=Object.freeze({checking:!1,assessment:null,problem:null}),Fh=Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:pl,contracts:pl,configuration:pl,files:pl,people:pl,notifications:pl})}),Xw=()=>new Ap,EI=Object.freeze({state:"none",problem:null,usable:null,requested:Object.freeze({collectionId:null,source:"none",displayName:null,approved:!1})});function e2(){let n={status:"blocked",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:Zw.code,timing:null,readiness:QM,selection:EI},e=Object.freeze({...n,phase:lc(n),sync:null,writes:null,links:null}),t=()=>Promise.reject(Xw());return Object.freeze({getSnapshot:()=>e,subscribe:()=>()=>{},start:t,authorize:t,select:t,approve:t,reauthorize:t,refreshCollectionList:t,requestAccess:t,chooseAnother:t,assess:t,configure:t,setup:Object.freeze({plan:t,apply:t}),clearSelection:t,forget:t,deleteCollection:t,setForeground(){throw Xw()},close:t,signOut:t})}var t2=n=>typeof Worker=="function"&&typeof MessageChannel=="function"&&Rt()!==null&&Lt(n,!0);function n2(n,e){if(n===void 0)return null;let t=()=>{throw _("invalid_request","Invalid sign-in opener","application_sign_in_opener")};if(!n||typeof n!="object"||typeof n.open!="function"||n.close!==void 0&&typeof n.close!="function")return t();let i=n.returnUrl;i!==void 0&&(UP(i,e.manifest,en(e.environment))||t());let o=n.open.bind(n),s=n.close?.bind(n);return Object.freeze({open:o,...s?{close:s}:{},...i!==void 0?{returnUrl:i}:{}})}async function i2(n){let e=!0;if(n.webPush){let t=globalThis.navigator?.serviceWorker,i;t&&typeof t.getRegistration=="function"&&(e=await Promise.race([(async()=>{let o=await(await t.getRegistration())?.pushManager?.getSubscription();return o?await o.unsubscribe():!0})().catch(()=>!1),new Promise(o=>{i=setTimeout(()=>o(!1),5e3)})]).finally(()=>clearTimeout(i)))}try{n.server==="incomplete"&&console.warn("mdbase: signed out on this device, but mdbase could not be reached to end the session. This device stays listed under the account until it is removed there."),(n.local==="incomplete"||!e)&&console.warn("mdbase: signed out, but some local data on this device could not be removed.")}catch{}}function r2(n){let e=`mdbase.${n}.selected-collection.v1`;return Object.freeze({read:()=>{try{return globalThis.localStorage?.getItem(e)??null}catch{return null}},write:t=>{try{t===null?globalThis.localStorage?.removeItem(e):globalThis.localStorage?.setItem(e,t)}catch{}}})}var dl=class{app;declaration;compiled;lifetime=new AbortController;listeners=new Set;nativeListeners=new Set;selection=null;memory=null;runtime=null;initialization=null;closing=null;closed=!1;foreground=!0;incarnation=0;hidden=null;tabs=null;election=null;signingOut=!1;snapshot=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,readiness:Fh});composed=null;hint=null;forgotten=null;handledApproval=null;refreshing=null;refreshedAt=0;approvalPortal=null;revision=0;links=null;cpOrigin=null;opening=null;syncing=null;storagePolicy=null;pendingSave=null;signIn;typeIssues;privates=null;unsyncedFirst;unsyncedTried=!1;overlaid=new WeakMap;constructor(e,t={}){this.declaration=gr(e),this.compiled=eo(this.declaration);let i=t.readiness?.typeIssues??"block";if(i!=="block"&&i!=="degrade")throw new TypeError('readiness.typeIssues must be "block" or "degrade"');if(this.typeIssues=i,this.unsyncedFirst=t.unsynced===!0,this.signIn=n2(t.signIn,this.declaration),!t2(this.declaration.origin)){this.app=e2();return}try{let s=this.environment().cpOrigin;this.cpOrigin=s,this.hint=xC(this.declaration.storage.applicationNamespace,s),this.forgotten=kC(this.declaration.storage.applicationNamespace,s),this.links=Object.freeze({account:`${s}/account`,manageAccess:`${s}/account/applications`})}catch{}t.followVisibility!==!1&&this.followVisibility(),this.followPageLifecycle(),this.followFocus(),this.followStoragePolicy(),this.memory=r2(this.declaration.storage.applicationNamespace),t.privateCollections!==!1&&(this.privates=new qh({declaration:this.declaration,onChange:()=>{this.revision++,this.notify()}})),this.selection=new zf({browser:new $f(this.declaration.origin,{},HP()),session:this.selectionSession(),memory:this.memory}),this.selection.subscribe(()=>{this.unforgetApproved(),this.notify(!1)});let o=()=>this.getSnapshot();this.app=Object.freeze({getSnapshot:o,subscribe:s=>(this.listeners.add(s),()=>{this.listeners.delete(s)}),start:s=>this.track(()=>this.call(async r=>{let a=r.getNativeSnapshot();a.status==="blocked"&&a.signIn&&a.selectedCollectionId===null?await r.queue(()=>r.start(s)):await this.started(r,s);let p=this.choose(),l=p.getSnapshot();l.state==="blocked"&&l.requested.approved&&l.requested.collectionId!==null&&await p.select(l.requested.collectionId,s);let c=r.getNativeSnapshot();this.unsyncedFirst&&!this.unsyncedTried&&c.status==="signed_out"&&!c.unsynced&&!c.signOutResult&&p.getSnapshot().requested.collectionId===null&&(this.unsyncedTried=!0,await r.queue(()=>r.openUnsynced(s)))}).catch(r=>{let a=this.runtime?.getNativeSnapshot();if(!(r?.code==="open_in_another_tab"&&a?.status==="blocked"&&a.problem==="open_in_another_tab"))throw r})),authorize:s=>this.track(()=>this.approve(void 0,s)),approve:(s,r)=>this.track(()=>this.approve(s,r)),reauthorize:s=>this.track(()=>{let r=this.choose(),a=r.getSnapshot(),p=this.privates?.state()?.collectionId??a.usable?.collectionId??a.requested.collectionId;return p?this.approve(p,s):r.reauthorize(s)}),addPrivateCollection:s=>this.track(()=>this.approve(null,s)),refreshCollectionList:s=>this.track(()=>Promise.all([this.call(r=>r.queue(()=>r.refreshCollections(s))),this.privates?.refresh(this.account()).catch(()=>{})])),requestAccess:(s,r)=>this.requestAccess(s,r),select:(s,r)=>this.track(()=>this.choose().select(s,{...r,history:"push"})),clearSelection:s=>this.track(()=>this.choose().select(null,s)),chooseAnother:s=>this.track(()=>this.choose().chooseAnother(s)),forget:(s,r)=>this.track(async()=>{let a=this.choose(),p=this.account();if(this.privates?.has(s)){await this.privates.forget(s),a.getSnapshot().requested.collectionId===s&&await a.select(null,r);return}if(p&&this.forgotten){this.forgotten.add(p,s),this.revision++,(a.getSnapshot().requested.collectionId===s||(this.runtime?.getSnapshot()??this.snapshot).selectedCollectionId===s)&&await a.select(null,r),this.notify(!1);return}await this.call(l=>l.queue(()=>l.forget(s,r))),a.getSnapshot().requested.collectionId===s&&await a.select(null,r)}),deleteCollection:(s,r)=>this.track(async()=>{let a=this.choose(),{confirmName:p,...l}=r??{};await this.call(c=>c.queue(()=>c.deleteCollection(s,p,l))),a.getSnapshot().requested.collectionId===s&&await a.select(null,l)}),assess:s=>this.privates?.isOpen()?this.privates.assess():this.call(r=>r.queue(()=>r.assess(s))),configure:s=>this.track(()=>this.privates?.isOpen()?this.privates.configure(s):this.call(r=>r.queue(()=>r.configure(s)))),setup:Object.freeze({plan:s=>(this.privates?.isOpen()?this.privates.plan(s):this.call(r=>r.queue(()=>r.planSetup(s)))).then(r=>_C(r,this.getSnapshot().readiness)),apply:(s,r)=>this.track(()=>this.privates?.isOpen()?this.privates.apply(s,r):this.call(a=>a.queue(()=>a.applySetup(s,r))))}),setForeground:s=>this.setForeground(s),close:()=>this.close(),signOut:s=>this.signOut(s),planUnsyncedTransfer:(s={})=>this.call(r=>{let a=this.transferDestination(null);return r.withUnsyncedSource((p,l)=>mw(p.records,a.records,{...s.map?{map:s.map}:{},...s.addTypes?{addTypes:!0}:{},ledger:this.transferLedger(),signal:l}),s)}),transferUnsynced:(s,r={})=>this.call(async a=>{let p=this.transferDestination(s?.destination??null),l=await pC(s,p.records,{...r.signal?{signal:r.signal}:{},...r.onProgress?{onProgress:r.onProgress}:{}});if(l.failed.length||l.failedTypes.length)return l;let c=r.signal?{signal:r.signal}:{};return await a.withUnsyncedSource((d,u)=>cC(s,d.records,p.records,u),c)?Object.freeze({...l,retired:await a.retireUnsynced(s.source,s.destination,c)}):l}),discardUnsynced:s=>this.track(async()=>{await this.call(async r=>(await this.started(r,s),r.queue(()=>r.discardUnsynced(s))))}),openUnsynced:s=>this.track(async()=>{let r=this.choose();this.privates?.close(),r.getSnapshot().requested.collectionId!==null&&await r.select(null,{...s,history:"replace"}),await this.call(async a=>(await this.started(a,s),a.queue(()=>a.openUnsynced(s))))})})}withPrivate(e){let t=this.privates;if(!t)return e;let i=this.overlaid.get(e);if(i&&i.revision===t.revision)return i.value;let o=YC(e,t.entries(),t.state());return this.overlaid.set(e,{revision:t.revision,value:o}),o}getSnapshot(){let e=this.withPrivate(this.runtime?.getSnapshot()??this.snapshot),t=this.selection?.getSnapshot()??EI,i=this.composed,o=e.signIn===null&&(e.status==="starting"||e.status==="blocked"&&e.problem==="open_in_another_tab")?this.hint?.read()??null:null;if(i&&i.base===e&&i.selection===t&&i.revision===this.revision&&i.hint===o)return i.value;let s=o?Object.freeze({...e,signIn:o.signIn,collections:o.collections}):e,r=this.forgotten?.read(s.signIn?.accountId)??null,a=r?.size&&s.collections.some(m=>r.has(m.collectionId)&&m.collectionId!==s.selectedCollectionId)?Object.freeze({...s,collections:Object.freeze(s.collections.filter(m=>!r.has(m.collectionId)||m.collectionId===s.selectedCollectionId))}):s,p=a.selectedCollectionId,l=p&&!this.closed?this.privates?.connection(p)??this.runtime?.connection(p)??null:null,c=lc({...a,selection:t},{connection:l,previous:i?.value.phase??null,...this.cpOrigin?{cpOrigin:this.cpOrigin}:{}});c=this.trackOpening(c);let d=this.trackSync(c,a.problem,a.transport??null,a.live??null),u=this.syncing?.writes()??null,f=this.trackSaveWarning(),h=Object.freeze({...a,selection:t,phase:c,sync:d,writes:u,storage:this.storagePolicy,saveWarning:f,links:this.linksFor(p)});return this.composed={base:e,selection:t,revision:this.revision,hint:o,value:h},h}linksFor(e){return this.links&&e?Object.freeze({...this.links,manageAccess:`${this.cpOrigin}/access?collection=${encodeURIComponent(e)}`}):this.links}trackSaveWarning(){let e=this.syncing,t=e?.status,i=t?.pending??0;if(this.pendingSave&&(this.closed||this.hidden||!i||this.pendingSave.id!==e?.id)&&this.clearPendingSave(),this.closed||this.hidden||!e||!t||!i)return null;if(!this.pendingSave){let o={id:e.id,since:performance.now(),timer:null};o.timer=setTimeout(()=>{this.pendingSave===o&&(o.timer=null,this.revision++,this.notify(!1))},3e4),this.pendingSave=o}return kh(i,this.storagePolicy??{persistent:!1,installed:!1},{pendingForMs:performance.now()-this.pendingSave.since,connection:t.connection}).warning}clearPendingSave(){this.pendingSave?.timer!==null&&this.pendingSave?.timer!==void 0&&clearTimeout(this.pendingSave.timer),this.pendingSave=null}trackOpening(e){let t=e.kind==="opening"?e.collectionId:null;if(this.opening&&this.opening.id!==t&&(clearTimeout(this.opening.timer),this.opening=null),t===null||this.closed)return e;if(!this.opening){let i={id:t,slow:!1,timer:setTimeout(()=>{this.opening===i&&(i.slow=!0,this.revision++,this.notify(!1))},ku)};this.opening=i}return e.kind==="opening"&&this.opening.slow?{...e,slow:!0}:e}trackSync(e,t,i,o){let s=e.kind==="ready"?e.collectionId:null;if(this.syncing&&this.syncing.id!==s){try{this.syncing.stop()}catch{}this.syncing=null}if(e.kind!=="ready"||this.closed)return null;if(!this.syncing){let r=e.connection.records,a=null;try{a=r.status}catch{}let p={id:e.collectionId,stop:()=>{},status:a,writes:()=>null},l=()=>{this.syncing===p&&(this.revision++,this.getSnapshot(),this.notify(!1))},c=()=>{},d=()=>{};try{c=r.onStatus(u=>{p.status=u,l()})}catch{}try{let u=r.ledger;d=u.subscribe(l),p.writes=()=>{try{return u.getSnapshot()}catch{return null}}}catch{}p.stop=()=>{c(),d()},this.syncing=p}try{e.connection.records.setTransportDeferred(i!==null)}catch{}return this.syncing.status?ou(this.syncing.status,t,i,o):null}nativeAuthorization(e,t,i){return!this.privates||this.closed||this.hidden?Promise.reject(_("unavailable","Native authorization unavailable")):this.privates.nativeAuthorization(e,t,AbortSignal.any([i,this.lifetime.signal]))}account(){return(this.runtime?.getSnapshot()??this.snapshot).signIn?.accountId??null}unforgetApproved(){let e=this.selection?.getSnapshot().lastApproval??null,t=this.account();!e||e===this.handledApproval||(this.handledApproval=e,t&&e.collectionId&&(e.outcome==="added"||e.outcome==="unchanged")&&this.forgotten?.remove(t,e.collectionId)&&this.revision++)}followFocus(){let e=typeof window>"u"?void 0:window,t=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let i=()=>{t?.visibilityState!=="hidden"&&this.refreshCollections()};e.addEventListener("focus",i,{signal:this.lifetime.signal}),t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",i,{signal:this.lifetime.signal})}refreshCollections(){let e=this.runtime,t=Date.now();if(!e||this.closed||this.hidden||this.refreshing||t-this.refreshedAt<2e3)return;let i=e.getNativeSnapshot();i.signIn?.state!=="paired"||i.status!=="unselected"&&i.status!=="ready"&&i.status!=="setup_required"||(this.refreshedAt=t,this.privates?.refresh(i.signIn.accountId).catch(()=>{}),this.refreshing=e.queue(()=>e.refreshCollections()).catch(()=>{}).finally(()=>{this.refreshing=null}))}followStoragePolicy(){let e=globalThis.navigator?.storage;if(!e||typeof e.persisted!="function")return;let t=()=>{try{return globalThis.matchMedia?.("(display-mode: standalone)").matches===!0||globalThis.navigator?.standalone===!0}catch{return!1}},i=(s=!1)=>{this.closed||Sh(e,t(),s).then(r=>{this.closed||this.storagePolicy?.persistent===r.persistent&&this.storagePolicy?.installed===r.installed||(this.storagePolicy=r,this.revision++,this.notify(!1))}).catch(()=>{})},o=globalThis.document;o&&typeof o.addEventListener=="function"&&o.addEventListener("visibilitychange",()=>{o.visibilityState!=="hidden"&&i()},{signal:this.lifetime.signal}),i(!0)}notify(e=!0){let t=this.runtime?.getSnapshot(),i=t?.signIn?.state==="paired"?t.signIn.accountId:null;if(i&&!this.closed&&!this.hidden&&(this.privates?.bind(i,t?.signIn?.nativeGrants??[]),this.privates?.ensure(i)),e)for(let o of[...this.nativeListeners])try{o()}catch{}for(let o of[...this.listeners])try{o()}catch{}}choose(){this.check();let e=this.selection;return e.start(),e}async track(e){return await e(),this.getSnapshot()}selectionSession(){return Object.freeze({getSnapshot:()=>this.withPrivate(ZM(this.runtime?.getNativeSnapshot()??this.snapshot)),subscribe:e=>(this.nativeListeners.add(e),()=>{this.nativeListeners.delete(e)}),open:(e,t={})=>this.call(async i=>{let o=this.privates,s=i.getNativeSnapshot().collections.some(p=>p.collectionId===e);if(!o||s||!o.has(e))return o?.close(),i.queue(()=>i.select(e,t));i.getNativeSnapshot().selectedCollectionId!==null&&await i.queue(()=>i.clearSelection(t));let r=i.getNativeSnapshot().signIn?.accountId,a=i.getNativeSnapshot().signIn?.installationId;if(!r||!a)throw _("unauthenticated","Sign in before opening a collection");o.openCollection(e,{account:r,installation:a}).catch(()=>{})}),clear:(e={})=>(this.privates?.close(),this.call(t=>t.queue(()=>t.clearSelection(e)))),authorize:(e={})=>this.authorize(e,e.collectionHint??null),listing:()=>this.privates?.listing(this.account())??!1})}check(){if(this.closed||this.hidden||this.lifetime.signal.aborted)throw _("cancelled","Application entry fenced","application_entry_fenced")}environment(){return Qn({environment:this.declaration.environment,appOrigin:this.declaration.origin,platform:this.declaration.manifest.platform==="native"?"native":void 0,release:Vo()})}initialize(){if(this.initialization)return this.initialization;let e=this.incarnation,t=Promise.resolve().then(async()=>{if(this.check(),typeof Vh.url!="string")throw Xw();let i=new URL(Vh.url);if(On(i)!==this.declaration.origin||Rt()!==this.declaration.origin)throw _("unavailable","Application module binding unavailable","application_worker_module_binding");let o=this.environment();WP(this.declaration.environment,this.declaration.origin,this.declaration.manifest.platform==="native"?"native":void 0);let s=await gC();if(this.check(),!s.ok)throw _("unavailable","This browser can't run mdbase",{reason:s.problem,details:new Map([["missing",s.missing.join(",")]])});let r=await Nf({declaration:this.declaration,signal:this.lifetime.signal,isCurrent:()=>!this.closed});this.check();let{ApplicationRuntime:a}=await Promise.resolve().then(()=>(OI(),II));if(this.check(),e!==this.incarnation)throw _("cancelled","Application entry fenced","application_entry_fenced");let p=NP(this.declaration,r);r.supersededDeclaredId&&console.info(`mdbase: ${wu("application_registration_id_superseded")}`);let l=Su(this.declaration),c=Object.freeze({cpOrigin:o.cpOrigin,appId:p.id,...l===null?{}:{storageNamespace:l}}),d=v=>(this.runtime=v,this.unsyncedTried=!1,v.subscribe(()=>{this.hint?.observe(v.getNativeSnapshot()),this.observeSignOut(v),v.getNativeSnapshot().signIn?.state==="paired"&&this.tabs?.signedIn(),this.notify(),this.awaitOtherTab(v,c)}),v.setForeground(this.foreground),this.notify(),v),u=this.tabsFor(c),f=new AbortController;this.election?.abort(),this.election=f;let h=u?await u.elect(AbortSignal.any([this.lifetime.signal,f.signal])):{kind:"leader"};if(this.closed||this.hidden||e!==this.incarnation||f.signal.aborted)throw h.kind==="follower"?h.leave():u?.resign(),_("cancelled","Application entry fenced","application_entry_fenced");if(h.kind==="follower")return d(new a({declaration:p,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:h.port,binding:h.binding,releaseWorker:()=>h.leave(),nativeAuthorization:(v,A,k)=>this.nativeAuthorization(v,A,k)}));let m=new MessageChannel,b=crypto.randomUUID(),w;try{w=new Worker(new URL("./worker.js",Vh.url),{type:"module"})}catch{throw u?.resign(),m.port1.close(),m.port2.close(),_("unavailable","Application Worker construction unavailable","application_worker_unavailable")}let g=v=>{v.preventDefault(),m.port1.dispatchEvent(new MessageEvent("messageerror")),u?.fault()};w.addEventListener("error",g);let y=new a({declaration:p,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:m.port1,binding:b,releaseWorker:()=>{w.removeEventListener("error",g),w.terminate(),u?.resign()},nativeAuthorization:(v,A,k)=>this.nativeAuthorization(v,A,k)});try{w.postMessage([ti,b,p,...l===null?[]:[l]],[m.port2])}catch{throw w.removeEventListener("error",g),w.terminate(),u?.resign(),m.port1.close(),m.port2.close(),_("unavailable","Application bootstrap unavailable","application_worker_binding")}return u?.lead({attach:(v,A)=>w.postMessage([ti,b,"attach",A],[v]),detach:v=>w.postMessage([ti,b,"detach",v])}),d(y)}).catch(i=>{let o=this.initialization===t;if(o&&(this.initialization=null),!this.closed&&o){let{problemDetail:s,...r}=this.snapshot,a=i instanceof se&&i.reason==="application_registration_refused"?jo(i.details):null;this.snapshot=Object.freeze({...r,status:"blocked",problem:typeof i?.reason=="string"?i.reason:typeof i?.code=="string"?i.code:"application_entry_unavailable",...a?{problemDetail:Object.freeze({name:"MdbaseError",code:i.code,registration:a})}:{}}),this.notify()}throw i});this.initialization=t;{let{problemDetail:i,signOutResult:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null})}return this.notify(),t}async call(e){this.check();let t=await this.initialize();return this.check(),e(t)}started(e,t){this.choose();let i=e.getNativeSnapshot().status;return i==="not_started"||i==="starting"||i==="blocked"&&!e.getNativeSnapshot().signIn?e.queue(()=>e.start(t)):Promise.resolve()}reservePortal(e){this.check();let t=this.environment(),i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=en(this.declaration.environment),s=()=>!this.closed,r=this.signIn?Cx(t.cpOrigin,i,s,this.signIn,o):nh(t.cpOrigin,i,s,o);return{portal:th(r),signal:i}}requestAccess(e,t){try{this.check();let i=this.runtime,o=i?.getNativeSnapshot(),s=o?.selectedCollectionId??null,r=bh(this.compiled),a=()=>s&&i?wh(i.getNativeSnapshot(),s):[],p=fC(r,e,t,a()),l=s?i.connection(s):null;if(!i||!s||!l)throw _("invalid_request","requestAccess needs an open collection","access_no_collection");let c=()=>hC(l.files,r,a());if(!p.length)return Promise.resolve(c());let{portal:d,signal:u}=this.reservePortal(t);return mC({granted:c,native:()=>i.getNativeSnapshot(),start:()=>i.queue(()=>i.requestFileAccess(d,s,p,t.reason,{signal:u})),poll:f=>i.queue(()=>i.pollFileAccess(f))},d,u)}catch(i){return Promise.reject(i)}}approve(e,t={}){let i=this.choose(),o=i.getSnapshot(),s=this.approvalPortal;if(s&&o.approval){if((e===void 0?o.requested.collectionId:e)!==o.approval.collectionId)return Promise.reject(new Vt("application_selection_busy"));if(t.signal?.aborted)throw _("cancelled","Application entry fenced","application_entry_fenced");return s.closed||s.focus(),Promise.resolve()}return i.approve(e,t)}authorize(e={},t=null){let i;try{i=this.approvalPortal=this.reservePortal(e).portal}catch(o){return Promise.reject(o)}return this.call(async o=>(await this.started(o,e),o.queue(()=>o.authorizeReserved(i,e,t)))).catch(o=>{try{i.close()}catch{}throw o})}async signOut(e={}){let t=await this.call(async s=>(await this.started(s,e),s));this.signingOut=!0;try{await t.queue(()=>t.signOut(e))}finally{this.signingOut=!1}let i=t.getNativeSnapshot().signOutResult??null;await this.signedOut(t,i);let o=this.snapshot.signOutResult??i;return o&&await i2(o),this.getSnapshot()}async signedOut(e,t,i=!1){i||this.tabs?.signedOut(),this.clearPendingSave(),++this.incarnation,this.runtime===e&&(this.runtime=null),this.initialization=null,this.hint?.clear(),this.forgotten?.clear(),this.handledApproval=null;let o=null;if(this.privates)try{await this.privates.forgetAll(),o="erased"}catch{o="incomplete"}let s=t&&o?Object.freeze({...t,grants:o,...o==="incomplete"?{local:"incomplete"}:{}}):t;this.snapshot=Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:!s&&o==="incomplete"?"sign_out_failed":null,timing:null,readiness:Fh,...s?{signOutResult:s}:{}});try{this.memory?.write(null)}catch{}if(this.selection&&!this.closed&&(this.selection.resync(),await this.selection.select(null,{history:"replace"}).catch(()=>{})),this.revision++,this.notify(),i){e.abandon();return}await e.close().catch(()=>{})}observeSignOut(e){let t=e.getNativeSnapshot().signOutResult;!t||this.signingOut||this.closed||this.runtime!==e||this.signedOut(e,t)}tabsFor(e){if(this.tabs)return this.tabs;let t=globalThis.navigator?.locks,i=globalThis.BroadcastChannel;return!t||typeof t.request!="function"||typeof i!="function"?null:(this.tabs=new Ah({...e,build:Vh.url},{locks:t,BroadcastChannel:i},this.leaderLost,this.signedInElsewhere),this.tabs)}leaderLost=e=>{if(this.closed||this.hidden)return;let t=this.runtime,i=t!==null||this.initialization!==null;if(this.election?.abort(),this.election=null,e&&t&&!this.signingOut?this.signedOut(t,t.getNativeSnapshot().signOutResult??null,!0):e&&i&&(++this.incarnation,this.initialization=null),!i||e){this.tabs?.resign();return}++this.incarnation,this.initialization=null,this.runtime=null,t?.abandon();let{problemDetail:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null,selectedCollectionId:null,readiness:Fh}),this.notify(),this.selection?.resync(),this.app.start().catch(()=>{})};signedInElsewhere=()=>{this.closed||this.hidden||this.signingOut||this.runtime!==null||this.initialization!==null||this.snapshot.status!=="signed_out"||(this.selection?.resync(),this.app.start().catch(()=>{}))};setForeground(e){this.foreground=e,this.runtime?.setForeground(e)}followVisibility(){let e=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let t=()=>{this.closed||this.setForeground(e.visibilityState!=="hidden")},i=()=>{e.visibilityState!=="hidden"&&t()};e.addEventListener("visibilitychange",t,{signal:this.lifetime.signal});let o=typeof window>"u"?void 0:window;o&&typeof o.addEventListener=="function"&&(o.addEventListener("focus",i,{signal:this.lifetime.signal}),o.addEventListener("online",i,{signal:this.lifetime.signal})),t()}followPageLifecycle(){let e=typeof window>"u"?void 0:window;if(!e||typeof e.addEventListener!="function")return;e.addEventListener("pagehide",this.pageHidden,{signal:this.lifetime.signal}),e.addEventListener("pageshow",this.pageShown,{signal:this.lifetime.signal});let t=globalThis.document;t&&typeof t.addEventListener=="function"&&(t.addEventListener("freeze",()=>this.pageHidden(),{signal:this.lifetime.signal}),t.addEventListener("resume",()=>this.pageShown({persisted:!0}),{signal:this.lifetime.signal}))}pageHidden=()=>{if(this.closed||this.hidden)return;let e=this.runtime,t=e!==null||this.initialization!==null;++this.incarnation,this.hidden=Object.freeze({resume:t}),this.clearPendingSave(),this.initialization=null,this.runtime=null,this.election?.abort(),this.election=null,e?.abandon(),this.tabs?.release();let{problemDetail:i,...o}=this.snapshot;this.snapshot=Object.freeze({...o,status:t?"starting":this.snapshot.status,problem:null,selectedCollectionId:null,readiness:Fh})};pageShown=e=>{let t=this.hidden;this.closed||!t||!e.persisted||(this.hidden=null,this.notify(),t.resume&&(this.selection?.resync(),this.app.start().catch(()=>{})))};awaitingOtherTab=!1;awaitOtherTab(e,t){let i=e.getNativeSnapshot(),o=globalThis.navigator?.locks;if(this.awaitingOtherTab||this.closed||i.status!=="blocked"||i.problem!=="open_in_another_tab"||!o)return;this.awaitingOtherTab=!0;let s=this.incarnation,r=this.lifetime.signal,a=()=>!this.closed&&!this.hidden&&s===this.incarnation&&this.runtime===e;ix(o,t,r).then(()=>XM(r)).then(()=>{this.awaitingOtherTab=!1,a()&&(this.selection?.resync(),this.app.start().catch(()=>{}))},()=>{this.awaitingOtherTab=!1})}close(){if(this.closing)return this.closing;if(this.closed=!0,this.lifetime.abort(),this.selection?.close(),this.election?.abort(),this.privates?.dispose(),this.opening&&(clearTimeout(this.opening.timer),this.opening=null),this.clearPendingSave(),this.syncing){try{this.syncing.stop()}catch{}this.syncing=null}return this.closing=Promise.resolve().then(async()=>{await this.initialization?.catch(()=>{}),await this.runtime?.close(),this.tabs?.release();{let{problemDetail:e,...t}=this.snapshot;this.snapshot=Object.freeze({...t,status:"closed",problem:null,selectedCollectionId:null})}this.runtime=null,this.notify(),this.listeners.clear(),this.nativeListeners.clear()}),this.closing}application(){return this.app}transferLedger(){let e=this.declaration.storage.unsyncedDatabaseName,t=new AbortController().signal;return Object.freeze({read:(i,o)=>aC(e,i,o??t),record:(i,o,s)=>lC(e,i,o,s??t)})}transferDestination(e){let t=this.getSnapshot().phase;if(t?.kind!=="ready")throw _("invalid_request","Open the collection to bring this work into first.","unsynced_transfer_needs_collection");if(e!==null&&t.collectionId!==e)throw _("invalid_request","This plan is for another collection. Plan the transfer again.","unsynced_transfer_plan_stale");return t.connection}connection(e){return this.closed?null:this.privates?.connection(e)??this.runtime?.connection(e)??null}};re();var Ht=n=>n;function qI(n,e={}){return o2(new dl(n,e))}function o2(n){let e=n.application(),t=()=>Ht(e.getSnapshot()),i=async o=>Ht(await e.approve(null,o));return Object.freeze({getSnapshot:t,subscribe:o=>e.subscribe(o),start:async o=>Ht(await e.start(o)),signIn:async o=>Ht(await e.authorize(o)),addCollection:i,addPrivateCollection:i,approve:async(o,s)=>Ht(await e.approve(o,s)),refreshCollectionList:async o=>{if(!e.refreshCollectionList)throw _("unavailable","Refreshing the collection list isn't available here.","application_not_yet_available");return Ht(await e.refreshCollectionList(o))},reauthorize:async o=>Ht(await e.reauthorize(o)),configure:async o=>Ht(await e.configure(o)),select:async(o,s)=>Ht(await e.select(o,s)),chooseAnother:async o=>Ht(await e.chooseAnother(o)),forget:async(o,s)=>Ht(await e.forget(o,s)),deleteCollection:async(o,s)=>Ht(await e.deleteCollection(o,s)),requestAccess:(o,s)=>e.requestAccess(o,s),assess:o=>e.assess(o),setup:Object.freeze({plan:o=>e.setup.plan(o),async apply(o,s){try{return Object.freeze({outcome:"applied",snapshot:Ht(await e.setup.apply(o,s))})}catch(r){if(X(r,"conflict")&&r.reason==="setup_changed")return Object.freeze({outcome:"changed",snapshot:t()});if(X(r,"outcome_unknown"))return Object.freeze({outcome:"unknown",snapshot:t()});throw r}}}),connection:o=>n.connection(o),setForeground:o=>e.setForeground(o),signOut:async o=>{if(!e.signOut)throw _("unavailable","Sign out isn't available here.","application_not_yet_available");return Ht(await e.signOut(o))},close:()=>e.close(),unsynced:Object.freeze({open:async o=>{if(!e.openUnsynced)throw _("unavailable","Working before connecting isn't available here.","application_not_yet_available");return Ht(await e.openUnsynced(o))},planTransfer:o=>{if(!e.planUnsyncedTransfer)throw _("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.planUnsyncedTransfer(o)},transfer:(o,s)=>{if(!e.transferUnsynced)throw _("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.transferUnsynced(o,s)},discard:async o=>{if(!e.discardUnsynced)throw _("unavailable","Discarding work isn't available here.","application_not_yet_available");return Ht(await e.discardUnsynced(o))}}),application:e})}Ta();Tf();re();function TI(n,e){let t=eo(gr(n)).manifest.requirements.capabilities;if(t?.contract_version!==2)return null;if(!e.isCurrent())throw _("invalid_request","the application connection is not current","application_connection_fenced");let i=new Set(e.records.hello.grant.capabilities),o=new Set(t.required),s=Object.freeze([...new Set([...t.required,...t.optional??[]])].map(r=>Object.freeze({id:r,requirement:o.has(r)?"required":"optional",state:i.has(r)?"available":"missing"})));return Object.freeze({values:s,requiredAvailable:s.every(r=>r.requirement==="optional"||r.state==="available"),missing:Object.freeze(s.filter(r=>r.state==="missing").map(r=>r.id))})}Cs();var dv={};ps(dv,{APP_BASES_PROFILE:()=>Xm,APP_COLLECTION_SETUP_LIMITS:()=>vr,AppCloudCopyBootstrapError:()=>tn,AppCloudCopyHostError:()=>uo,AppCollectionControlError:()=>ii,AppCollectionJoinError:()=>po,AppCollectionJoinLedger:()=>tl,AppCollectionSetupError:()=>rn,AppCollectionSetupJournal:()=>Wa,AppCpAuthorityError:()=>ei,AppCpCloudCopyBootstrap:()=>Ba,AppCpDeviceRegistration:()=>ul,AppCpLogAuthority:()=>za,AppCpPeopleAuthority:()=>bl,AppDeviceRegistrationError:()=>ss,AppHttpLogError:()=>gn,AppHttpLogTransport:()=>$a,AppIndexedDbDeviceKeyProtectedStore:()=>ml,AppIndexedDbDeviceKeyProvider:()=>hl,AppIndexedDbNoiseProtectedStore:()=>gl,AppInstallationSignInError:()=>Xe,AppLogHostError:()=>pt,AppLogPump:()=>ns,AppProtectedInstallationSignIn:()=>Ua,AppReplicaOwnerError:()=>Ke,AppStrictDeviceApprovalError:()=>on,AppWasmRuntime:()=>Ya,AppWebCloudCopyHost:()=>vl,AppWebCollectionError:()=>bp,AppWebDeviceKeyCustody:()=>fl,AppWebNoiseCustody:()=>yl,AppWebSignInSession:()=>rm,UNSYNCED_STORAGE_WARNING:()=>wC,acquireAppInstallationLease:()=>Xc,acquireAppReplicaLease:()=>Jc,appBrowserDirectAccess:()=>Jh,appCollectionControlClient:()=>ph,appInstallationLockName:()=>Db,appLocalConnector:()=>uh,appLogHealth:()=>dw,appModelPackPlan:()=>Xo,appModelResourcePlan:()=>xt,appMutationSaveState:()=>bC,appReplicaLockName:()=>Ff,appSaveState:()=>kh,appStoragePolicy:()=>Sh,attachAppLocalFacade:()=>dh,createAppCollectionPeople:()=>lh,createAppWebCollectionAdapter:()=>iI,decodeAppBasesCell:()=>bo,decodeAppBasesDiscoveryResult:()=>sd,decodeAppBasesResult:()=>id,decodeAppBasesSourceResult:()=>ad,decodeAppCollectionSetupIntent:()=>qt,encodeAppBasesDiscoveryRequest:()=>rd,encodeAppBasesRequest:()=>nd,encodeAppBasesSourceRequest:()=>od,openAppWebCollectionClient:()=>Lh,openOwnedAppWorker:()=>rx,probeAppStorage:()=>BI,selectAppEnvironment:()=>Qn,verifyAppHandover:()=>LI});fh();Zm();function MI(n,e){return n.seq===e.seq&&n.chain===e.chain&&n.policyGeneration===e.policyGeneration&&n.catalogGeneration===e.catalogGeneration}async function LI(n,e){let t=null;try{let{runtime:i,localPort:o,localClient:s,hostedClient:r,source:a}=n,p=r.hello,l=s.hello,c=a.collection,d=a.deviceId,u=r.authenticatedDevice;if(!(P=>typeof P=="string"&&P.replace(/-/g,"").toLowerCase()===d.replace(/-/g,"").toLowerCase())(u))return null;let h=p.status.confirmedHead,m=h?Object.freeze({...h}):void 0;if(!m||!p.headWitness||p.headWitness.length>64*1024||m.seq===0||p.collection!==c||l.collection!==c)return null;t=new Uint8Array(p.headWitness);let b=t,w=()=>{try{return!e.aborted&&n.isCurrent()===!0&&a.isCurrent()===!0&&l.collection===c&&a.collection===c&&a.deviceId===d&&s.hello===l}catch{return!1}},g=()=>{try{let P=i.observations();return!P.requiresReopen&&!P.keyringRebuilding&&!P.keyringRebuildFailed&&P.status.mode==="synced"&&P.status.confirmedHead!==void 0&&P.status.confirmedHead.seq>=m.seq}catch{return!1}},y=()=>{if(!w()||!g())return!1;let P=i.verifyHandover(o,a,b);return P!==null&&MI(P,m)},v=()=>{try{return!e.aborted&&w()&&r.hello===p&&r.authenticatedDevice===u}catch{return!1}};if(!v()||!y())return null;let A=await s.appliedPrefix(m.seq,e);if(!v()||!y()||A.seq!==m.seq||A.appliedThrough<m.seq||A.chain!==m.chain)return null;let k=Object.freeze({...m}),S=!1,x={head:k,appliedThrough:A.appliedThrough,isCurrent:()=>{if(S)return!1;try{return y()&&MI(k,m)}catch{return!1}},dispose:()=>{S=!0,b.fill(0)}};return t=null,x}catch{return null}finally{t?.fill(0)}}bt();ge();var ss=class extends Error{constructor(t){super(`app device registration: ${t}`);this.reason=t;this.name="AppDeviceRegistrationError"}reason},wt=n=>new ss(n),Wh=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),ul=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.persistence=o;try{this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,kind:t.kind});for(let a of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId])if(U(a).every(p=>p===0))throw wt("binding");if(t.kind!=="mobile"&&t.kind!=="app-runtime")throw wt("binding");this.rawOrigin=t.cpOrigin;let r=new URL(this.rawOrigin);if(r.username||r.password||r.pathname!=="/"||r.search||r.hash||r.protocol!=="https:"&&!(s.allowLoopbackHttp===!0&&ot(this.rawOrigin))||(this.origin=r.origin,this.now=s.now??Date.now,this.fetchImpl=s.fetch??globalThis.fetch,!(i.envelope instanceof Uint8Array)||!i.envelope.length||i.envelope.length>1024)||!e.deviceCustodyCurrent(t,i)||(this.custody=Object.freeze({signPublicKey:new Uint8Array(i.signPublicKey),kemPublicKey:new Uint8Array(i.kemPublicKey),noisePublicKey:new Uint8Array(i.noisePublicKey),envelope:new Uint8Array(i.envelope)}),!this.current()))throw wt("binding")}catch{throw e.retireLog(),wt("binding")}}runtime;session;persistence;attempted=!1;lifetime=new AbortController;origin;rawOrigin;scope;custody;now;fetchImpl;current(){try{return!this.lifetime.signal.aborted&&this.runtime.deviceCustodyCurrent(this.session,this.custody)&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.connectorId===this.scope.connectorId&&this.session.deviceId===this.scope.deviceId&&this.session.installationId===this.scope.installationId&&this.session.kind===this.scope.kind}catch{return!1}}check(e){if(!this.current()||e.aborted)throw this.close(),wt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let p=new Uint8Array(32*1024),l=0,c=null,d=null;try{let u=this.fetchImpl;if(c=await u(`${this.origin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!c.ok)throw wt("unavailable");let f=c.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>p.length)throw s.abort(),wt("response");if(!c.body)throw wt("response");for(d=c.body.getReader();;){let{done:m,value:b}=await d.read();try{if(this.check(o),s.signal.aborted)throw wt("unavailable");if(m)break;if(l+b.length>p.length)throw s.abort(),wt("response");p.set(b,l),l+=b.length}finally{b?.fill(0)}}let h=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(p.subarray(0,l)));if(!h||typeof h!="object"||Array.isArray(h))throw wt("response");return h}catch(u){throw this.check(o),u instanceof ss?u:wt("unavailable")}finally{p.fill(0),(d?.cancel()??c?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async register(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw wt("fenced");this.attempted=!0,await this.persistence.pending(new Uint8Array(this.custody.envelope),e),this.check(e.signal);let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw wt("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||s.expires_at-this.now()>16*6e4)throw wt("response");t=Uint8Array.from(s.challenge.match(/../g).map(l=>parseInt(l,16)));let r=this.runtime.signCpEnrol(t);this.check(e.signal),i=r.signature;let a=await this.json("/v1/next/devices",o,JSON.stringify({device_id:this.scope.deviceId,kind:this.scope.kind,capabilities:["collection_mode_switch_v1"],challenge:s.challenge,sign_pk:Wh(r.signPublicKey),kem_pk:Wh(r.kemPublicKey),noise_pk:Wh(r.noisePublicKey),sig:Wh(i)}),e.signal);if(this.check(e.signal),a.device_id!==this.scope.deviceId)throw wt("response");let p=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,signPublicKey:new Uint8Array(r.signPublicKey),kemPublicKey:new Uint8Array(r.kemPublicKey),noisePublicKey:new Uint8Array(r.noisePublicKey)});return await this.persistence.registered(p,e),this.check(e.signal),this.runtime.acknowledgeDeviceRegistration(p),p}catch(o){throw this.close(),o instanceof ss?o:wt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.custody.envelope.fill(0),this.runtime.retireLog())}};Je();ge();var Gt=()=>new Error("app device key custody unavailable; preserve storage and reopen"),fl=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned;let o=[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Gt();this.namespace=`mdbase.app-device-keys.v1:${o.map(s=>Array.from(s,r=>r.toString(16).padStart(2,"0")).join("")).join(":")}`,this.aad=pe(["mdbase/v1/app-device-keys-platform",...o]),this.check(new AbortController().signal)}catch{throw Gt()}}pin;key;store;scope;namespace;aad;current;owned;attempted=!1;check(e){try{if(e.aborted||this.pin.isCurrent!==this.current||this.pin.installationOwned!==this.owned||this.current.call(this.pin)!==!0||this.owned.call(this.pin)!==!0||this.pin.accountId!==this.scope.accountId||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Gt()}catch{throw Gt()}}async openNativeDevice(e,t){let i=null,o=null,s=!1;try{if(this.attempted)throw Gt();this.attempted=!0;let r=t.signal,a=t.mode;if(this.check(r),!["fresh","existing"].includes(a)||t.noise.mode!==a||t.noise.mode==="existing"&&!(t.noise.envelope instanceof Uint8Array))throw Gt();let p=t.noise.mode==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:new Uint8Array(t.noise.envelope)};if(p.mode==="existing"&&(!p.envelope.length||p.envelope.length>1024))throw Gt();let l=await this.store.read(this.namespace,{signal:r});if(this.check(r),a==="fresh"){if(l!==null)throw Gt();i=globalThis.crypto.getRandomValues(new Uint8Array(64));let u=globalThis.crypto.getRandomValues(new Uint8Array(12)),f=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:u,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,i));if(this.check(r),o=pe(new Map([[0,1],[1,u],[2,f]])),await this.store.create(this.namespace,o,{signal:r})!==!0)throw Gt();this.check(r)}else{if(!(l instanceof Uint8Array)||l.length===0||l.length>256)throw Gt();o=new Uint8Array(l);let u=ue(o);if(!(u instanceof Map))throw Gt();let f=u;if(f.size!==3||f.get(0)!==1)throw Gt();let h=f.get(1),m=f.get(2);if(!(h instanceof Uint8Array)||h.length!==12||!(m instanceof Uint8Array)||m.length!==80||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(h),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(m))),this.check(r),i.length!==64))throw Gt()}this.check(r);let c=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,isCurrent:()=>{try{return this.check(r),!0}catch{return!1}}});s=!0;let d=e.openDeviceConsuming({pin:c,signSecretKey:i.subarray(0,32),kemSecretKey:i.subarray(32),opened:p});return this.check(r),d}catch{if(s)try{e.retireLog()}catch{}throw Gt()}finally{i?.fill(0),o?.fill(0)}}};Zn();ge();var Kh="device-key-kek",jI="original-device-kek",vt=()=>new Error("app device key provider unavailable; preserve storage and reopen");function Hh(n){if(typeof globalThis.CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw vt();return n}function s2(n){if(n===void 0)return null;if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).length!==2||!Object.hasOwn(n,"version")||!Object.hasOwn(n,"key")||n.version!==1)throw vt();return Hh(n.key)}var hl=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;value=null;closed=!1;loaned=!1;scope;current;owned;static async open(e){let t=null;try{let{source:i,origin:o,mode:s,signal:r}=e;t=new n(i,o,r);let a=Object.values(t.scope).map(u=>{let f=U(u);if(f.every(h=>h===0))throw vt();return Array.from(f,h=>h.toString(16).padStart(2,"0")).join("")});if(!Lt(o,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||!["fresh","existing"].includes(s)||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof globalThis.CryptoKey!="function")throw vt();t.check(r);let p=crypto.subtle.generateKey.bind(crypto.subtle),l=`mdbase.app.device-key-kek.v1.${a.join(".")}`,c=await t.openDatabase(l,s);t.db=c,c.onversionchange=()=>t.close(),t.check(r);let d=await t.transaction("readonly",r,null);if(t.check(r),s==="existing"){if(d===null||typeof d=="boolean")throw vt();t.value=d}else{if(d!==null)throw vt();let u=Hh(await p({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));if(t.check(r),await t.transaction("readwrite",r,u)!==!0)throw vt();t.check(r),t.value=u}return t.check(r),t}catch{throw t?.close(),vt()}}check(e){try{if(this.closed||this.lifetime.aborted||e.aborted||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.scope).some(([t,i])=>this.source[t]!==i))throw vt()}catch{throw vt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,p=()=>{r=!0,o(vt())};this.lifetime.addEventListener("abort",p,{once:!0});let l=()=>this.lifetime.removeEventListener("abort",p);s.onblocked=p,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw vt();s.result.createObjectStore(Kh),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(vt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Kh))throw vt();i(s.result)}catch{s.result.close(),o(vt())}}})}transaction(e,t,i){return new Promise((o,s)=>{if(this.check(t),!this.db)throw vt();let r=this.db.transaction(Kh,e,{durability:"strict"}),a=r.objectStore(Kh),p=null,l=!1,c=()=>{l=!0;try{r.abort()}catch{}};t.addEventListener("abort",c,{once:!0}),this.lifetime.addEventListener("abort",c,{once:!0});let d=()=>{t.removeEventListener("abort",c),this.lifetime.removeEventListener("abort",c)};r.onerror=r.onabort=()=>{d(),p=null,s(vt())},r.oncomplete=()=>{d();try{if(this.check(t),l)throw vt();o(p)}catch{p=null,s(vt())}};let u=a.get(jI);u.onsuccess=()=>{try{this.check(t);let f=s2(u.result);e==="readonly"?p=f:(p=f===null,p===!0&&i!==null&&a.add({version:1,key:Hh(i)},jI))}catch{c()}}})}deviceCustodyKek(e){if(this.check(e.signal),this.loaned||!this.value)throw vt();return this.loaned=!0,Hh(this.value)}close(){this.closed||(this.closed=!0,this.value=null,this.db?.close(),this.db=null)}};Zn();ge();var Gh="original-device-keys",NI="custody",a2=256,cn=()=>new Error("app device key custody store unavailable");function UI(n){if(!(n instanceof Uint8Array)||!n.length||n.length>a2)throw cn();return new Uint8Array(n)}var ml=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.scope=i;this.namespace=o;this.origin=s;this.current=t.isCurrent,this.owned=t.installationOwned,e.onversionchange=()=>this.close()}db;source;scope;namespace;origin;closed=!1;current;owned;static async open(e){try{return await this.openChecked(e)}catch{throw cn()}}static async openChecked(e){let{source:t,signal:i,mode:o,origin:s}=e,r=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId}),a=t.isCurrent,p=t.installationOwned,l=()=>{try{return!i.aborted&&t.isCurrent===a&&t.installationOwned===p&&a.call(t)===!0&&p.call(t)===!0&&Object.keys(r).every(m=>t[m]===r[m])}catch{return!1}},c=[r.accountId,r.connectorId,r.deviceId,r.installationId].map(m=>{let b=U(m);if(b.every(w=>w===0))throw cn();return Array.from(b,w=>w.toString(16).padStart(2,"0")).join("")});if(!Lt(s,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||Rt()!==s||!["fresh","existing"].includes(o)||!l()||!globalThis.indexedDB)throw cn();let d=`mdbase.app-device-keys.v1:${c.join(":")}`,u=`mdbase.app.device-keys.v1.${c.join(".")}`,f=await new Promise((m,b)=>{let w=indexedDB.open(u,1),g=!1,y=()=>{g=!0,b(cn())};i.addEventListener("abort",y,{once:!0});let v=()=>i.removeEventListener("abort",y);w.onblocked=y,w.onupgradeneeded=()=>{if(g||o!=="fresh"||!l()||w.result.objectStoreNames.length!==0){w.transaction?.abort();return}w.result.createObjectStore(Gh)},w.onerror=()=>{v(),b(cn())},w.onsuccess=()=>{if(v(),g||!l()||w.result.objectStoreNames.length!==1||!w.result.objectStoreNames.contains(Gh)){w.result.close(),b(cn());return}m(w.result)}}),h=new n(f,t,r,d,s);try{h.check(i);let m=await h.read(d,{signal:i});try{if(o==="fresh"!=(m===null))throw cn();return h.check(i),h}finally{m?.fill(0)}}catch{throw h.close(),cn()}}check(e,t=this.namespace){try{if(this.closed||e.aborted||t!==this.namespace||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.keys(this.scope).some(i=>this.source[i]!==this.scope[i]))throw cn()}catch{throw cn()}}async read(e,t){let i=await this.transaction("readonly",e,t.signal,null);try{return this.check(t.signal,e),i}catch{throw i instanceof Uint8Array&&i.fill(0),cn()}}async create(e,t,i){this.check(i.signal,e);let o=UI(t);try{let s=await this.transaction("readwrite",e,i.signal,o);return this.check(i.signal,e),s===!0}finally{o.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(i,t);let a=this.db.transaction(Gh,e,{durability:"strict"}),p=a.objectStore(Gh),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>i.removeEventListener("abort",d);i.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(cn())},a.oncomplete=()=>{u();try{if(this.check(i,t),c)throw cn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(cn())}};let f=p.get(NI);f.onsuccess=()=>{let h=null;try{this.check(i,t),h=f.result===void 0?null:UI(f.result),e==="readonly"?(l=h,h=null):(l=h===null,l===!0&&o!==null&&p.add(new Uint8Array(o),NI))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};Je();ge();var Me=()=>new Error("app Noise custody unavailable; preserve storage and reopen"),kp=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),yl=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId});let o=[this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Me();this.namespace=`mdbase.app-noise.v1:${this.scope.connectorId}:${this.scope.deviceId}:${this.scope.installationId}`,this.aad=pe(["mdbase/v1/app-noise-platform",...o]),this.check(new AbortController().signal)}catch{throw Me()}}pin;key;store;scope;namespace;aad;check(e){try{if(e.aborted||this.pin.isCurrent()!==!0||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Me()}catch{throw Me()}}receiptValue(e){if(e.connectorId!==this.scope.connectorId||e.deviceId!==this.scope.deviceId||e.installationId!==this.scope.installationId)throw Me();let t=[e.signPublicKey,e.kemPublicKey,e.noisePublicKey];if(t.some(i=>!(i instanceof Uint8Array)||i.length!==32||i.every(o=>o===0)))throw Me();return t.map(i=>new Uint8Array(i))}receipt(e){if(e===null)return null;if(!Array.isArray(e)||e.length!==3||e.some(t=>!(t instanceof Uint8Array)||t.length!==32||t.every(i=>i===0)))throw Me();return Object.freeze({...this.scope,signPublicKey:new Uint8Array(e[0]),kemPublicKey:new Uint8Array(e[1]),noisePublicKey:new Uint8Array(e[2])})}markerValue(e){let t=U(e.collection);if(t.every(i=>i===0)||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(i=>i===0))throw Me();return[t,...this.receiptValue(e),new Uint8Array(e.sasCommitment),e.acknowledged]}marker(e,t){if(e===null)return null;if(!t||!Array.isArray(e)||e.length!==6||!(e[0]instanceof Uint8Array)||e[0].length!==16||e[0].every(r=>r===0)||typeof e[5]!="boolean")throw Me();let i=this.receipt(e.slice(1,4));for(let r of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(i[r],t[r]))throw Me();let o=e[4];if(!(o instanceof Uint8Array)||o.length!==32||o.every(r=>r===0))throw Me();let s=Array.from(e[0],r=>r.toString(16).padStart(2,"0")).join("");return Object.freeze({...i,collection:`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`,sasCommitment:new Uint8Array(o),acknowledged:e[5]})}async restore(e){let t=await this.read(e);return this.check(e.signal),t?.value??null}async read(e){let t=null,i=null;try{this.check(e.signal);let o=await this.store.read(this.namespace,e);if(this.check(e.signal),o===null)return null;if(!(o instanceof Uint8Array)||o.length===0||o.length>4096)throw Me();t=new Uint8Array(o);let s=ue(t);if(!(s instanceof Map))throw Me();let r=s,a=r.get(1),p=r.get(2);if(r.size!==3||r.get(0)!==1||!(a instanceof Uint8Array)||a.length!==12||!(p instanceof Uint8Array)||p.length<16||p.length>2064||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(p))),this.check(e.signal),i.length>2048))throw Me();let l=ue(i);if(!(l instanceof Map))throw Me();let c=l,d=c.get(1);if(!(c.get(0)===1&&c.size===3||c.get(0)===2&&c.size===4&&c.has(3))||!(d instanceof Uint8Array)||d.length===0||d.length>1024||!c.has(2))throw Me();let u=this.receipt(c.get(2)),f=c.get(0)===2?this.marker(c.get(3),u):null;return{value:Object.freeze({envelope:new Uint8Array(d),receipt:u,privateEnrolMarker:f}),encrypted:new Uint8Array(t)}}catch{throw Me()}finally{t?.fill(0),i?.fill(0)}}async write(e,t,i,o,s=null){let r=null,a=null;try{if(this.check(o.signal),!(e instanceof Uint8Array)||!e.length||e.length>1024)throw Me();let p=new Map([[0,s===null?1:2],[1,new Uint8Array(e)],[2,t===null?null:this.receiptValue(t)]]);if(s!==null){let u=this.markerValue(s);this.marker(u,t),p.set(3,u)}if(r=pe(p),r.length>2048)throw Me();let l=globalThis.crypto.getRandomValues(new Uint8Array(12)),c=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:l,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(r)));this.check(o.signal),a=pe(new Map([[0,1],[1,l],[2,c]]));let d=await this.store.compareAndSet(this.namespace,i,a,o);if(this.check(o.signal),d!==!0)throw Me()}catch{throw Me()}finally{r?.fill(0),a?.fill(0)}}async pending(e,t){let i=await this.read(t);if(this.check(t.signal),i){if(!kp(i.value.envelope,e))throw Me();return}await this.write(e,null,null,t),this.check(t.signal)}async privateEnrolPending(e,t){try{if(e.acknowledged!==!1)throw Me();await this.writePrivateMarker(e,!1,t)}catch{throw Me()}}async privateEnrolAcknowledged(e,t){try{await this.writePrivateMarker(e,!0,t)}catch{throw Me()}}async writePrivateMarker(e,t,i){this.check(i.signal);let o=this.marker(this.markerValue(e),e),s=await this.read(i);if(this.check(i.signal),!s?.value.receipt)throw Me();for(let a of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(o[a],s.value.receipt[a]))throw Me();let r=s.value.privateEnrolMarker;if(r){if(r.collection!==o.collection||!kp(r.sasCommitment,o.sasCommitment))throw Me();if(r.acknowledged){if(!t)throw Me();return}if(!t)return}else if(t)throw Me();await this.write(s.value.envelope,s.value.receipt,s.encrypted,i,Object.freeze({...o,acknowledged:t})),this.check(i.signal)}async registered(e,t){let i=await this.read(t);if(this.check(t.signal),!i)throw Me();if(i.value.receipt){for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(i.value.receipt[o],e[o]))throw Me();this.receiptValue(e);return}await this.write(i.value.envelope,e,i.encrypted,t),this.check(t.signal)}};Zn();ge();var Yh="opaque-noise",DI="custody",l2=4096,_n=()=>new Error("app noise custody store unavailable");function Qw(n){if(!(n instanceof Uint8Array)||n.byteLength<1||n.byteLength>l2)throw _n();return new Uint8Array(n)}function c2(n,e){return n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i])}function ev(n){if(U(n).every(t=>t===0))throw _n();return n.toLowerCase()}function tv(n,e){try{return n.isCurrent()===!0&&n.connectorId===e[0]&&n.deviceId===e[1]&&n.installationId===e[2]}catch{return!1}}var gl=class n{constructor(e,t,i,o){this.db=e;this.source=t;this.pins=i;this.origin=o;e.onversionchange=()=>this.close()}db;source;pins;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw _n()}}static async openChecked(e){let{source:t,signal:i}=e,o=[t.connectorId,t.deviceId,t.installationId];if(!Lt(e.origin,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||Rt()!==e.origin||!["fresh","existing"].includes(e.mode)||i.aborted||!tv(t,o)||typeof globalThis.indexedDB>"u")throw _n();let s=`mdbase.app.noise.v1.${ev(o[2])}.${ev(o[0])}.${ev(o[1])}`,r=await new Promise((p,l)=>{let c=indexedDB.open(s,1),d=!1,u=()=>{d=!0,l(_n())};i.addEventListener("abort",u,{once:!0});let f=()=>i.removeEventListener("abort",u);c.onblocked=u,c.onupgradeneeded=()=>{if(d||i.aborted||e.mode!=="fresh"||!tv(t,o)||c.result.objectStoreNames.length!==0){c.transaction?.abort();return}c.result.createObjectStore(Yh)},c.onerror=()=>{f(),l(_n())},c.onsuccess=()=>{if(f(),d||i.aborted||c.result.objectStoreNames.length!==1||!c.result.objectStoreNames.contains(Yh)){c.result.close(),l(_n());return}p(c.result)}}),a=new n(r,t,o,e.origin);try{let p=await a.read(a.namespace,{signal:i});if(e.mode==="fresh"!=(p===null))throw _n();return p?.fill(0),a.check(i),a}catch{throw a.close(),_n()}}get namespace(){return`mdbase.app-noise.v1:${this.pins[0]}:${this.pins[1]}:${this.pins[2]}`}check(e,t=this.namespace){if(this.closed||e.aborted||t!==this.namespace||Rt()!==this.origin||!tv(this.source,this.pins))throw _n()}async read(e,t){this.check(t.signal,e);let i=await this.transaction("readonly",t.signal,null,null);try{return this.check(t.signal),i}catch{throw i instanceof Uint8Array&&i.fill(0),_n()}}async compareAndSet(e,t,i,o){this.check(o.signal,e);let s=null,r=null;try{s=t===null?null:Qw(t),r=Qw(i);let a=await this.transaction("readwrite",o.signal,s,r);return this.check(o.signal),a===!0}finally{s?.fill(0),r?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(Yh,e,{durability:"strict"}),p=a.objectStore(Yh),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(_n())},a.oncomplete=()=>{u();try{if(this.check(t),c)throw _n();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(_n())}};let f=p.get(DI);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:Qw(f.result),e==="readonly"?(l=h,h=null):(l=c2(h,i),l===!0&&o!==null&&p.put(new Uint8Array(o),DI))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};rp();ip();bt();ge();re();var Si=()=>_("unavailable","people metadata is unavailable","people_response");function $I(n){if(!n||typeof n!="object"||Array.isArray(n))throw Si();return n}function zI(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw Si();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw Si();return e}var bl=class{constructor(e,t={}){this.session=e;this.rawOrigin=e.cpOrigin;let i=new URL(this.rawOrigin);if(i.username||i.password||i.pathname!=="/"||i.search||i.hash||i.protocol!=="https:"&&!(t.allowLoopbackHttp===!0&&ot(e.cpOrigin)))throw _("invalid_request","invalid people CP origin","people_binding");this.cpOrigin=i.origin,this.collection=e.collection,this.connector=e.connectorId,this.device=e.deviceId,this.ep=zI(e.endpoint);for(let o of[this.collection,this.connector,this.device])if(U(o).every(s=>s===0))throw _("invalid_request","nil people binding","people_binding");if(this.fetchImpl=t.fetch??globalThis.fetch,!this.isCurrent())throw _("unauthenticated","people scope is not current","people_fenced")}session;cpOrigin;rawOrigin;collection;connector;device;ep;fetchImpl;lifetime=new AbortController;isCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.collection===this.collection&&this.session.connectorId===this.connector&&this.session.deviceId===this.device&&zI(this.session.endpoint)===this.ep}catch{return!1}}check(e){if(e?.throwIfAborted(),!this.isCurrent())throw _("unauthenticated","people scope changed","people_fenced")}async request(e,t={}){if(e!=="identity"&&e!=="members")throw _("invalid_request","invalid people resource");this.check(t.signal);let i=new AbortController,o=()=>i.abort();t.signal?.addEventListener("abort",o,{once:!0}),this.lifetime.signal.addEventListener("abort",o,{once:!0});let s=setTimeout(o,15e3);s.unref?.();let r=new Uint8Array(1024*1024),a=0,p,l;try{let c=await this.session.connectorBearer({signal:i.signal});if(this.check(t.signal),i.signal.aborted)throw Si();if(typeof c!="string"||!/^(idev_|ct_)/.test(c)||c.length>16*1024||/[^\x21-\x7e]/.test(c))throw _("unauthenticated","invalid people credential","people_binding");let d=this.fetchImpl;if(p=await d(`${this.cpOrigin}/v1/authorities/${this.collection}/${e}?device_id=${this.device}`,{method:"GET",headers:{authorization:`Bearer ${c}`},signal:i.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(t.signal),i.signal.aborted)throw Si();let u=p.headers.get("content-length");if(u!==null&&/^(0|[1-9][0-9]*)$/.test(u)&&Number(u)>r.length||!p.body)throw Si();for(l=p.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(t.signal),i.signal.aborted)throw Si();if(h)break;if(a+m.length>r.length)throw Si();r.set(m,a),a+=m.length}finally{m?.fill(0)}}let f=$I(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(0,a))));if(this.check(t.signal),p.status===401)throw _("unauthenticated","people credential is no longer current","people_fenced");if(p.status===403){let h=$I(f.error);throw _("forbidden","people access was refused",e==="members"&&h.code==="people_permission_declined"?"people_permission_declined":"people_access")}if(p.status===404)throw _("upgrade_required","people metadata is unsupported","people_unsupported");if(!p.ok)throw Si();return f}catch(c){throw this.check(t.signal),c instanceof se?c:Si()}finally{i.abort(),r.fill(0),(l?.cancel()??p?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(s),t.signal?.removeEventListener("abort",o),this.lifetime.signal.removeEventListener("abort",o)}}close(){this.lifetime.abort()}};np();async function BI(n){if(!n.worker)return{supported:!1,reason:"worker_required"};if(!n.storage?.getDirectory)return{supported:!1,reason:"opfs_unavailable"};let e,t,i=!1,o,s={supported:!1,reason:"probe_failed"};try{let r=n.randomUUID();if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r))return s;t=r.toLowerCase(),e=await(await n.storage.getDirectory()).getDirectoryHandle(".mdbase-app-probes",{create:!0});let a=await e.getFileHandle(t,{create:!0});if(i=!0,!a.createSyncAccessHandle)s={supported:!1,reason:"sync_handle_unavailable"};else{o=await a.createSyncAccessHandle();let p=new Uint8Array([109,100,98,110]),l=new Uint8Array(p.length);if(o.write(p,{at:0})!==p.length)throw new Error("short probe write");if(o.flush(),o.read(l,{at:0})!==p.length||l.some((c,d)=>c!==p[d]))throw new Error("probe readback failed");s={supported:!0,backend:"opfs_sahpool_candidate",crashDurability:"unqualified",eviction:"possible"}}}catch{s={supported:!1,reason:"probe_failed"}}finally{let r=!0;try{o?.close()}catch{r=!1,s={supported:!1,reason:"cleanup_failed"}}if(i&&r&&e&&t)try{await e.removeEntry(t)}catch{s={supported:!1,reason:"cleanup_failed"}}}return s}no();to();Tw();ro();ap();Zo();ow();Mh();ep();var nv=Object.freeze({status:"unsupported"}),Jh=Object.freeze({snapshot(){return nv},async check(n={}){return n.signal?.throwIfAborted(),nv},async request(n={}){return n.signal?.throwIfAborted(),nv},disable(){}});Wn();ep();var rv="mdbase.app.log-token.v1",wl="tokens";function FI(){return new Promise(n=>{let e;try{e=indexedDB.open(rv,1)}catch{n(null);return}e.onupgradeneeded=()=>{try{e.result.createObjectStore(wl)}catch{}},e.onsuccess=()=>{let t=e.result;t.onversionchange=()=>t.close(),n(t.objectStoreNames.contains(wl)?t:(t.close(),null))},e.onerror=e.onblocked=()=>n(null)})}function iv(n,e){return FI().then(t=>new Promise(i=>{if(!t){i(null);return}let o=null;try{let s=t.transaction(wl,n),r=e(s.objectStore(wl));r&&(r.onsuccess=()=>{o=r.result??null}),s.oncomplete=()=>{t.close(),i(o)},s.onerror=s.onabort=()=>{t.close(),i(null)}}catch{t.close(),i(null)}}))}function VI(){return typeof indexedDB>"u"?null:Object.freeze({async read(n,e){let t=await iv("readonly",i=>i.get(n)).catch(()=>null);return!t||typeof t.value!="string"||!t.value||t.value.length>16*1024||/[^\x21-\x7e]/.test(t.value)||typeof t.expires!="number"||!Number.isSafeInteger(t.expires)||t.expires-e<6e4||t.expires-e>16*6e4?null:Object.freeze({value:t.value,expires:t.expires})},async write(n,e){await iv("readwrite",t=>t.put({value:e.value,expires:e.expires},n)).catch(()=>null)},async drop(n){await iv("readwrite",e=>e.delete(n)).catch(()=>null)}})}async function WI(n){let{cpOrigin:e,connectorId:t,deviceId:i}=n;if(!t||!i)return!0;let o=await FI();return o?new Promise(s=>{try{let r=o.transaction(wl,"readwrite"),a=r.objectStore(wl).openCursor();a.onsuccess=()=>{let p=a.result;if(p){if(typeof p.key=="string"){let l=p.key.split(" ");l.length===5&&l[0]===e&&l[2]===t&&l[3]===i&&p.delete()}p.continue()}},r.oncomplete=()=>{o.close(),s(!0)},r.onerror=r.onabort=()=>{o.close(),s(!1)}}catch{o.close(),s(!1)}}):!1}Ow();Zn();ge();Gc();Cs();re();du();ip();bt();Je();ge();var p2=4401,d2=4403,u2=4410,f2=3e4,h2=1e4,m2=6e4,y2=6e4,g2=15e3,b2=4,w2=64*1024,v2=1024*1024;function _2(n,e){let t=new URL(n);if(t.protocol==="https:")return`wss://${t.host}`;if(e&&ot(n))return`ws://${t.host}`;throw new Error("app log push: origin")}var A2=n=>[...n].map(e=>e.toString(16).padStart(2,"0")).join(""),KI=(n,e,t)=>pe(new Map([[0,0],[1,n],[2,e],[3,t]]));function k2(n){let e=n.get(3);if(!(e instanceof Map))return null;let t=e.get(0),i=e.get(1);return{code:typeof t=="string"?t:"unavailable",reason:typeof i=="string"?i:""}}var Xh=class{constructor(e,t,i={}){this.source=e;this.events=t;this.base=_2(e.origin,i.allowLoopbackHttp===!0),this.collectionBytes=U(e.collection);let o=i.WebSocket??globalThis.WebSocket;if(typeof o!="function")throw new Error("app log push: no WebSocket");this.Ws=o,this.random=i.random??Math.random,this.now=i.now??Date.now}source;events;base;collectionBytes;Ws;random;now;socket=null;connecting=!1;closed=!1;finished=null;unsupported=!1;paused=!1;isLive=!1;attempts=0;liveSince=0;retry=null;ping=null;pongDue=null;opening=null;unsigned=0;life=new AbortController;token=null;get live(){return this.isLive}get available(){return!this.unsupported&&this.finished===null&&!this.closed}get suspended(){return this.paused}start(){this.connect()}nudge(){this.unsupported=!1,this.unsigned=0,!(this.paused||this.socket||this.connecting||!this.available)&&(this.attempts=0,this.clearRetry(),this.connect())}suspend(){this.paused||!this.available||(this.paused=!0,this.clearRetry(),this.drop(1e3,"hidden"))}resume(){if(!this.paused){this.nudge();return}this.paused=!1,this.nudge()}close(){this.closed||(this.closed=!0,this.life.abort(),this.clearRetry(),this.drop(1e3,"closed"))}clearRetry(){this.retry!==null&&clearTimeout(this.retry),this.retry=null}clearPing(){this.ping!==null&&clearInterval(this.ping),this.ping=null,this.pongDue!==null&&clearTimeout(this.pongDue),this.pongDue=null,this.opening!==null&&clearTimeout(this.opening),this.opening=null}setLive(e){if(this.isLive!==e){this.isLive=e,e&&(this.liveSince=this.now());try{this.events.live(e)}catch{}}}end(e){if(!(this.finished||this.closed)){this.finished=e,this.clearRetry(),this.drop(1e3,e);try{this.events.ended(e)}catch{}}}drop(e,t){this.clearPing();let i=this.socket;if(this.socket=null,i){i.onopen=i.onmessage=i.onclose=i.onerror=null;try{i.close(e,t)}catch{}}this.setLive(!1)}schedule(e=!1){if(this.paused||!this.available||this.retry!==null)return;let t=e?0:Math.floor(this.random()*Math.min(y2,1e3*2**Math.min(this.attempts,6)));this.attempts++,this.retry=setTimeout(()=>{this.retry=null,this.connect()},t)}async connect(){if(this.paused||this.socket||this.connecting||!this.available)return;if(!this.source.isCurrent()){this.close();return}this.connecting=!0;let e,t,i;try{let r=this.life.signal;if(e=await this.source.accessToken({signal:r}),t=await this.source.nonce({signal:r}),this.paused||!this.available||!this.source.isCurrent())return;if(i=this.source.signHello(t,e),!i){++this.unsigned>=b2?this.unsupported=!0:this.schedule();return}this.unsigned=0}catch{this.connecting=!1,this.schedule();return}finally{this.connecting=!1}this.token=e;let o;try{o=new this.Ws(`${this.base}/v1/ws?c=${this.source.collection}&n=${A2(t)}`)}catch{this.schedule();return}o.binaryType="arraybuffer",this.socket=o;let s=KI(1,"hello",new Map([[0,[1,0]],[1,e],[2,U(this.source.deviceId)],[3,i]]));i.fill(0),t.fill(0),o.onopen=()=>{try{o.send(s)}catch{this.lost(o,1006)}},o.onmessage=r=>this.message(o,r.data),o.onclose=r=>this.lost(o,r.code),o.onerror=()=>{},this.opening=setTimeout(()=>{this.opening=null,this.lost(o,1006)},g2)}message(e,t){if(e!==this.socket)return;if(typeof t=="string"){t==="pong"&&this.pongDue!==null&&(clearTimeout(this.pongDue),this.pongDue=null);return}if(!(t instanceof ArrayBuffer)||t.byteLength>v2){this.lost(e,1009);return}let i=new Uint8Array(t),o;try{let a=ue(i);if(!(a instanceof Map))throw new Error;o=a}catch{this.lost(e,1007);return}if(o.get(0)===2){if(!this.isLive)return;if(this.deliver(i),o.get(1)==="closed"){let a=o.get(2),p=a instanceof Map?a.get(1):null;this.end(p==="gone"?"gone":p==="revoked"?"revoked":"forbidden")}return}if(o.get(0)!==1)return;let s=o.get(1),r=k2(o);if(s===1){if(r){this.refused(e,r);return}try{e.send(KI(2,"subscribe",new Map([[0,this.collectionBytes],[1,0],[2,w2]])))}catch{this.lost(e,1006)}return}if(s===2){if(r){this.refused(e,r);return}let a=o.get(2);if(!(a instanceof Map)){this.lost(e,1007);return}let p=a.get(0),l=a.get(1);this.startPing(e),this.setLive(!0),(typeof p=="number"||typeof p=="bigint")&&l instanceof Uint8Array&&l.length===32&&this.deliver(pe(new Map([[0,2],[1,"head"],[2,new Map([[0,this.collectionBytes],[1,p],[2,l]])]])))}}deliver(e){try{this.events.push(e)}catch{}}refused(e,t){if(t.code==="forbidden"&&t.reason==="credentials_revoked"){this.end("revoked");return}if(t.code==="forbidden"||t.code==="not_found"){this.end(t.code==="not_found"?"gone":"forbidden");return}if(t.code==="gone"){this.end("gone");return}t.code==="unauthenticated"&&this.token&&(this.source.invalidateToken?.(this.token),this.token=null),this.lost(e,1008)}startPing(e){this.clearPing(),this.ping=setInterval(()=>{if(!(e!==this.socket||this.pongDue!==null)){try{e.send("ping")}catch{this.lost(e,1006);return}this.pongDue=setTimeout(()=>{this.pongDue=null,this.lost(e,1006)},h2)}},f2)}lost(e,t){if(e!==this.socket)return;let i=this.isLive&&this.now()-this.liveSince>=m2;if(this.drop(1e3,"lost"),t===d2){this.end("forbidden");return}if(t===u2){this.end("gone");return}if(i&&(this.attempts=0),t===p2){this.token&&this.source.invalidateToken?.(this.token),this.token=null,this.attempts=0,this.schedule(!0);return}this.schedule()}};qw();Wn();np();function Zh(n){return n.mode==="local_only"?null:n.incidents.some(e=>e.kind==="waiting_for_key")?"waiting_for_key":n.installing?"installing":n.resyncing?"resyncing":n.connection==="offline"?"offline":n.headKnown===0?"head_unknown":n.confirmedThrough<n.headKnown?"behind":null}function HI(n){let e=n.incidents.find(r=>r.kind==="waiting_for_key");if(!e)return null;let t={through:n.confirmedThrough,head:n.headKnown},i=e.details,o=r=>i instanceof Map?i.get(r):i&&typeof i=="object"?i[r]:void 0,s=o("reason");typeof s=="string"&&/^[a-z_]{1,32}$/.test(s)&&(t.key=s);for(let r of["position","at"]){let a=o(r);(typeof a=="number"||typeof a=="bigint")&&(t[r]=Number(a))}return t}fh();rp();Je();ge();Gc();var Qh=264*1024+256,ov=264*1024,$e=()=>new Error("app cloud copy outcome unavailable; preserve storage and reopen"),sv=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),S2=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),em=class{constructor(e,t,i,o,s){this.source=e;this.store=o;this.key=i;try{this.mode=s.mode,this.lifetime=s.signal,this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256});let r=e.displayName;if(this.displayName=r===void 0?void 0:wr(r),this.displayName!==void 0&&e.purpose!=="create"||r!==this.displayName)throw $e();this.current=e.isCurrent,this.owned=e.installationOwned,this.io=Object.freeze({read:o.read,cas:o.compareAndSet});let a=[e.accountId,e.connectorId,e.deviceId,e.installationId,e.collection].map(U);if(a.some(p=>p.every(l=>l===0))||!["create","join"].includes(e.purpose)||!["fresh","existing"].includes(this.mode)||!/^[0-9a-f]{64}$/.test(e.assetSha256)||(this.keys=Object.freeze([t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(p=>{if(!(p instanceof Uint8Array)||p.length!==32||p.every(l=>l===0))throw $e();return new Uint8Array(p)})),t.connectorId!==e.connectorId||t.deviceId!==e.deviceId||t.installationId!==e.installationId)||typeof globalThis.CryptoKey!="function"||!(i instanceof CryptoKey)||i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||i.usages.length!==2||!i.usages.includes("encrypt")||!i.usages.includes("decrypt"))throw $e();this.aad=pe(["mdbase/v1/app-cloud-copy-outcome-platform",...a,e.purpose,e.cpOrigin,e.logOrigin,e.assetSha256,...this.keys]),this.check(this.lifetime)}catch{throw $e()}}source;store;closed=!1;key;fields;displayName;current;owned;io;keys;aad;mode;lifetime;check(e){try{if(this.closed||!this.key||e!==this.lifetime||e.aborted||this.source.displayName!==this.displayName||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||this.store.read!==this.io.read||this.store.compareAndSet!==this.io.cas||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw $e()}catch{throw $e()}}operation(e){if(e){if(e.displayName!==this.displayName)throw $e();for(let t of Object.keys(this.fields))if(e[t]!==this.fields[t])throw $e();for(let[t,i]of["signPublicKey","kemPublicKey","noisePublicKey"].entries())if(!(e[i]instanceof Uint8Array)||!sv(e[i],this.keys[t]))throw $e()}return Object.freeze({...this.fields,...this.displayName===void 0?{}:{displayName:this.displayName},signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2])})}metadata(e){let t=this.operation(e.operation);if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||typeof e.expectedGenesis!="string"||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw $e();return Object.freeze({operation:t,genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${S2(s)}`)throw $e()}async read(e){let t=null;try{this.check(e);let i=await this.io.read.call(this.store,Object.freeze({signal:e}));if(this.check(e),i===null){if(this.mode!=="fresh")throw $e();return null}if(!(i instanceof Uint8Array)||!i.length||i.length>Qh)throw $e();let o=new Uint8Array(i),s=ue(o);if(!(s instanceof Map))throw $e();let r=s;if(r.size!==3||r.get(0)!==1)throw $e();let a=r.get(1),p=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(p instanceof Uint8Array)||p.length<16||p.length>ov+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(p))),this.check(e),t.length>ov))throw $e();let l=ue(t);if(!(l instanceof Map))throw $e();let c=l,d=c.get(0)===1&&c.size===3;if(!d&&!(c.get(0)===2&&c.size===4)||(d?null:c.get(3))!==(this.displayName??null))throw $e();let u=c.get(1);if(!Array.isArray(u)||u.length!==3||u.some((m,b)=>!(m instanceof Uint8Array)||!sv(m,this.keys[b])))throw $e();let f=c.get(2),h=null;if(f!==null){if(!Array.isArray(f)||f.length!==2||!(f[0]instanceof Uint8Array)||typeof f[1]!="string")throw $e();h=this.metadata({operation:this.operation(),genesisItem:f[0],expectedGenesis:f[1]}),await this.hashChecked(h,e)}return{encrypted:o,metadata:h}}catch{throw $e()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i),o=pe(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e===null?null:[e.genesisItem,e.expectedGenesis]],[3,this.displayName??null]])),o.length>ov)throw $e();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));if(this.check(i),s=pe(new Map([[0,1],[1,r],[2,a]])),s.length>Qh)throw $e();let p=await this.io.cas.call(this.store,t,s,Object.freeze({signal:i}));if(this.check(i),p!==!0)throw $e()}catch{throw $e()}finally{o?.fill(0),s?.fill(0)}}async restore(e){let{signal:t}=e,i=await this.read(t);return this.check(t),i===null?Object.freeze({state:"none"}):i.metadata===null?Object.freeze({state:"pending",operation:this.operation()}):Object.freeze({state:"completed",metadata:this.metadata(i.metadata)})}async pending(e,t){let{signal:i}=t;this.check(i),this.operation(e);let o=await this.read(i);this.check(i),!o&&await this.write(null,null,i)}async completed(e,t){let{signal:i}=t;this.check(i);let o=this.metadata(e);await this.hashChecked(o,i);let s=await this.read(i);if(this.check(i),!s)throw $e();if(s.metadata){if(!sv(s.metadata.genesisItem,o.genesisItem)||s.metadata.expectedGenesis!==o.expectedGenesis)throw $e();return}await this.write(o,s.encrypted,i)}close(){this.closed=!0,this.key=null}};Zn();ge();var tm="public-outcome",av="operation",Yt=()=>new Error("app cloud copy outcome store unavailable; preserve storage and reopen"),P2=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function lv(n){if(!(n instanceof Uint8Array)||!n.length||n.length>Qh)throw Yt();return new Uint8Array(n)}var nm=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;closed=!1;fields;current;owned;get fenced(){return this.closed||this.lifetime.aborted}check(e){try{if(this.fenced||e!==this.lifetime||e.aborted||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw Yt()}catch{throw Yt()}}static async open(e){let{source:t,origin:i,mode:o,signal:s,allowLoopbackHttp:r}=e,a=null;try{a=new n(t,i,s);let p=[a.fields.accountId,a.fields.connectorId,a.fields.deviceId,a.fields.installationId,a.fields.collection].map(c=>{if(U(c).every(d=>d===0))throw Yt();return c.toLowerCase()});if(!Lt(i,r===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||!["fresh","existing"].includes(o)||!["create","join"].includes(a.fields.purpose)||!/^[0-9a-f]{64}$/.test(a.fields.assetSha256)||!globalThis.indexedDB)throw Yt();a.check(s),a.db=await a.openDatabase(`mdbase.app.cloud-copy-outcome.v1.${p.join(".")}.${a.fields.purpose}`,o),a.db.onversionchange=()=>a.close(),a.check(s);let l=await a.read(Object.freeze({signal:s}));try{if(o==="fresh"!=(l===null))throw Yt();a.check(s)}finally{l?.fill(0)}return a}catch{throw a?.close(),Yt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,p=()=>{r=!0,o(Yt())},l=()=>this.lifetime.removeEventListener("abort",p);this.lifetime.addEventListener("abort",p,{once:!0}),s.onblocked=p,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw Yt();s.result.createObjectStore(tm),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(Yt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(tm))throw Yt();i(s.result)}catch{s.result.close(),o(Yt())}}})}async read(e){let{signal:t}=e;this.check(t);let i=await this.transaction("readonly",t,null,null);return this.check(t),i}async compareAndSet(e,t,i){let{signal:o}=i;this.check(o);let s=e===null?null:lv(e),r=lv(t);try{let a=await this.transaction("readwrite",o,s,r);return this.check(o),a===!0}finally{s?.fill(0),r.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{if(this.check(t),!this.db)throw Yt();let a=this.db.transaction(tm,e,{durability:"strict"}),p=a.objectStore(tm),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Yt())},a.oncomplete=()=>{u();try{if(this.check(t),c)throw Yt();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Yt())}};let f=p.get(av);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:lv(f.result),e==="readonly"?(l=h,h=null):(l=P2(h,i),l===!0&&o!==null&&(i===null?p.add(new Uint8Array(o),av):p.put(new Uint8Array(o),av)))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db?.close(),this.db=null)}};var uo=class extends Error{constructor(t){super(`app cloud copy host: ${t}`);this.reason=t;this.name="AppCloudCopyHostError"}reason},x2=32,C2=8,Ae=n=>new uo(n),GI=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),vl=class n{constructor(e,t,i,o,s){this.source=e;this.installation=t;this.originalRelease=i;this.origin=o;this.lifetime=s;this.selected=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,kind:e.kind,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,approvalMode:e.approvalMode}),this.currentCallback=e.isCurrent,this.bearerCallback=e.connectorBearer,this.ownershipCallback=t.isCurrent;for(let r of[e.accountId,e.connectorId,e.deviceId,e.installationId])if(U(r).every(a=>a===0))throw Ae("binding");if(e.kind!=="app-runtime"&&e.kind!=="mobile"||i.schema!=="mdbn-app-trust/release/1"||i.cpOrigin!==e.cpOrigin||i.logOrigin!==e.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||!i.trustedRoots.length||i.trustedRoots.length>64||!i.policyPins.length||i.policyPins.length>65536)throw Ae("binding");if(this.trust=Object.freeze({...i,source:Object.freeze({...i.source}),trustedRoots:Object.freeze(i.trustedRoots.map(r=>{if(!(r instanceof Uint8Array)||r.length!==32||r.every(a=>a===0))throw Ae("binding");return new Uint8Array(r)})),policyPins:new Uint8Array(i.policyPins)}),this.pin=Object.freeze({...this.selected,isCurrent:()=>this.current(),installationOwned:()=>this.current(),connectorBearer:async({signal:r})=>{this.check(r);let a=await this.bearerCallback.call(this.source,Object.freeze({signal:r}));return this.check(r),a}}),e.approvalMode==="strict")throw new on;this.check(s)}source;installation;originalRelease;origin;lifetime;closing=!1;closeResult=null;provider=null;keys=null;noiseStore=null;key=null;noise=null;native=null;publicReceipt=null;signIn=null;originalCustody=null;collectionAttempted=!1;collectionSignal=null;collectionCurrent=null;outcomeStore=null;outcome=null;bootstrap=null;bootstrapConfirmed=!1;collectionScope=null;collectionSession=null;adoptedEndpoint=null;sqlAttempted=!1;sqlClose=null;collectionSql=null;logRequest=null;logLoopback=!1;logWork=null;authority=null;peopleMetadata=null;pump=null;timerPorts=new Set;readWork=null;readAbort=null;readClient=null;readVerified=!1;facades=new Map;logWorkListener=null;selected;currentCallback;bearerCallback;ownershipCallback;trust;pin;current(){try{let e=this.originalRelease,t=this.trust;return!this.closing&&!this.lifetime.aborted&&Rt()===this.origin&&this.source.isCurrent===this.currentCallback&&this.source.connectorBearer===this.bearerCallback&&this.installation.isCurrent===this.ownershipCallback&&this.currentCallback.call(this.source)===!0&&this.ownershipCallback.call(this.installation)===!0&&this.installation.scope.account===this.selected.accountId&&this.installation.scope.installation===this.selected.installationId&&Object.entries(this.selected).every(([i,o])=>this.source[i]===o)&&e.schema===t.schema&&e.environment===t.environment&&e.cpOrigin===t.cpOrigin&&e.logOrigin===t.logOrigin&&e.assetSha256===t.assetSha256&&e.source.repository===t.source.repository&&e.source.commit===t.source.commit&&e.source.version===t.source.version&&e.trustedRoots.length===t.trustedRoots.length&&e.trustedRoots.every((i,o)=>GI(i,t.trustedRoots[o]))&&GI(e.policyPins,t.policyPins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw Ae("fenced")}operationSignal(e){let t=AbortSignal.any([this.lifetime,...this.collectionSignal?[this.collectionSignal]:[],e]);return this.check(t),t}static async openOriginalDevice(e){let{session:t,installation:i,release:o,origin:s,mode:r,signal:a,loadRuntime:p,fetch:l,allowLoopbackHttp:c,allowNativeLoopbackHttp:d}=e,u=null;try{if(!["fresh","existing"].includes(r))throw Ae("binding");u=new n(t,i,o,s,a);let{custody:f,restored:h}=await u.openOwnedDevice({mode:r,signal:a,loadRuntime:p,allowLoopbackHttp:c,allowNativeLoopbackHttp:d,requireReceipt:!0});if(r==="existing")u.native.acknowledgeDeviceRegistration(h.receipt),u.check(a),u.publicReceipt=u.native.registeredDeviceReceipt();else{let m=await new ul(u.native,u.pin,f,u.noise,{fetch:l,allowLoopbackHttp:c}).register(Object.freeze({signal:a}));u.check(a),u.publicReceipt=m}return u}catch(f){throw await u?.close(),f instanceof uo||f instanceof on?f:Ae("unavailable")}}static async openInstallationDevice(e){let{signIn:t,installation:i,release:o,origin:s,signal:r,loadRuntime:a,allowLoopbackHttp:p,allowNativeLoopbackHttp:l}=e,c=null;try{let d=t.confirmedHostSession(o.logOrigin,o.environment);c=new n(d,i,o,s,r),c.signIn=t;let u=await t.prepareOriginalDevice(i);c.check(r);let{custody:f,restored:h}=await c.openOwnedDevice({mode:u.mode,signal:r,loadRuntime:a,allowLoopbackHttp:p,allowNativeLoopbackHttp:l,requireReceipt:!1});if(c.originalCustody=f,h?.receipt&&t.view().state!=="paired")throw Ae("recovery_required");return await c.noise.pending(new Uint8Array(f.envelope),{signal:r}),c.check(r),t.view().state==="paired"&&await c.completeInstallationSignIn(),c}catch(d){throw await c?.close(),d}}async attestInstallation(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw Ae("binding");let e=await this.signIn.attest({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation});return this.check(this.lifetime),e}async completeInstallationSignIn(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw Ae("binding");return await this.signIn.acknowledge({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation}),this.check(this.lifetime),this.publicReceipt=this.native.registeredDeviceReceipt(),this.registeredReceipt()}async openOwnedDevice(e){let{mode:t,signal:i,loadRuntime:o,allowLoopbackHttp:s,allowNativeLoopbackHttp:r,requireReceipt:a}=e;this.check(i),this.provider=await hl.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.key=this.provider.deviceCustodyKek({signal:i}),this.check(i),this.keys=await ml.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.noiseStore=await gl.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.noise=new yl(this.pin,this.key,this.noiseStore);let p=await this.noise.restore({signal:i});if(this.check(i),t==="existing"?!p||a&&!p.receipt:p!==null)throw Ae("recovery_required");let l=await o(Object.freeze({signal:i}));if(this.check(i),!(l instanceof Uint8Array)||!l.length)throw Ae("binding");this.native=await Ya.createDevice(new Uint8Array(l)),this.check(i);let c=await new fl(this.pin,this.key,this.keys).openNativeDevice(this.native,{signal:i,mode:t,noise:t==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:p.envelope}});return this.check(i),{custody:c,restored:p}}async bootstrapCloudCopy(e){let{scope:t,collectionCurrent:i,purpose:o,outcomeMode:s,signal:r,reconcile:a,fetch:p,allowLoopbackHttp:l,allowNativeLoopbackHttp:c}=e,d=this.operationSignal(r),u=e.displayName,f=u===void 0?void 0:wr(u);if(f!==void 0&&o!=="create"||(this.check(d),this.collectionAttempted||!this.native||!this.key||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||!["create","join"].includes(o)||!["fresh","existing"].includes(s)||U(t.collection).every(w=>w===0)))throw Ae("binding");let h=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),m=()=>{try{return this.current()&&!d.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(h).every(([w,g])=>t[w]===g)&&i.call(e)===!0&&this.outcomeStore?.fenced!==!0}catch{return!1}};if(!m())throw Ae("fenced");this.collectionAttempted=!0,this.collectionSignal=d,this.collectionCurrent=m,this.collectionScope=h;let b=Object.freeze({...this.pin,collection:h.collection,purpose:o,assetSha256:this.trust.assetSha256,...f===void 0?{}:{displayName:f},isCurrent:m});this.collectionSession=b;try{this.outcomeStore=await nm.open({source:b,origin:this.origin,mode:s,signal:d,allowLoopbackHttp:l,allowNativeLoopbackHttp:c}),this.checkCollection(d),this.outcome=new em(b,this.publicReceipt,this.key,this.outcomeStore,{mode:s,signal:d}),this.native.prepareCloudCopyCollection(b),this.checkCollection(d),this.bootstrap=new Ba(this.native,b,this.trust,this.outcome,{fetch:p,allowLoopbackHttp:l,...f===void 0?{}:{displayName:f}});let w=await this.bootstrap.bootstrap(Object.freeze({signal:d,...a?{reconcile:a}:{}}));return this.checkCollection(d),this.bootstrapConfirmed=!0,w}catch(w){throw await this.close(),w}}checkCollection(e){if(this.check(e),this.collectionCurrent?.()!==!0)throw Ae("fenced")}adoptCloudCopy(e,t){let i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.bootstrap||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw Ae("fenced");let o=e.endpoint;this.bootstrap.adoptCollection({...e,signal:this.collectionSignal},t),this.checkCollection(i),this.adoptedEndpoint=o}async openCollectionSql(e){let{replicaId:t,endpoint:i,openSql:o}=e,s=this.operationSignal(e.signal);if(this.checkCollection(s),!this.bootstrapConfirmed||!this.collectionScope||this.sqlAttempted||this.adoptedEndpoint!==null||U(t).every(r=>r===0)||typeof i!="bigint"&&!Number.isSafeInteger(i)||BigInt(i)<0n||BigInt(i)>(1n<<64n)-1n)throw Ae("binding");this.sqlAttempted=!0;try{let r=await o.call(e,Object.freeze({scope:this.collectionScope,signal:s})),a=r.close;if(this.sqlClose=async()=>{await a.call(r)},this.collectionSql=r.sql,this.checkCollection(s),e.openSql!==o)throw Ae("fenced");this.adoptCloudCopy({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion,cloudCopyOptIn:!0},r.sql)}catch(r){throw await this.close(),r}}async startCollectionLog(e){let{fetch:t,allowLoopbackHttp:i}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionSession||this.adoptedEndpoint===null)throw Ae("binding");let s=t??globalThis.fetch,r=i===!0;if(this.authority&&(s!==this.logRequest||r!==this.logLoopback))throw Ae("fenced");if(this.pump)return;if(this.logWork){await this.logWork,this.checkCollection(o);return}this.authority||(this.logRequest=s,this.logLoopback=r,this.authority=new za(this.native,Object.freeze({...this.collectionSession,endpoint:this.adoptedEndpoint,directOrigins:Object.freeze([])}),{fetch:s,allowLoopbackHttp:i,tokenCache:VI()}));let a=this.authority,p=(async()=>{await a.accessToken(Object.freeze({signal:o})),this.checkCollection(o),this.pump=this.native.bindLogTransport(a.logTransport())})();this.logWork=p;try{await p}finally{this.logWork===p&&(this.logWork=null)}}peopleAuthority(){if(this.checkCollection(this.lifetime),!this.collectionSession||this.adoptedEndpoint===null||!this.logRequest)throw Ae("binding");if(!this.peopleMetadata){let e=this.adoptedEndpoint,t=this.collectionSession,i=new bl(Object.freeze({...t,endpoint:e,directOrigins:Object.freeze([]),isCurrent:()=>this.collectionCurrent?.()===!0&&this.adoptedEndpoint===e,connectorBearer:async({signal:s})=>{s.throwIfAborted(),this.checkCollection(this.lifetime);let r=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),s.throwIfAborted(),r}}),{fetch:this.logRequest,allowLoopbackHttp:this.logLoopback}),o=Object.freeze({collection:i.collection,isCurrent:()=>i.isCurrent(),request:(s,r)=>i.request(s,r)});this.peopleMetadata={authority:i,view:o}}return this.peopleMetadata.view}openTimersPort(e){if(this.checkCollection(this.lifetime),!this.readVerified||!this.logRequest||!this.collectionScope||e.signal.aborted)throw Ae("binding");let{scope:t,generation:i,signal:o}=e,s=this.collectionScope;if(t.account!==s.account||t.installation!==s.installation||t.collection!==s.collection||U(i).every(h=>h===0))throw Ae("binding");let r=this.source.timerConsent,a=r?.call(this.source);if(!a?.approved)return null;let p=a.grants.find(h=>h.collectionId===t.collection);if(!p)return null;let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l)||U(p.grantId).every(h=>h===0)||!/^[0-9a-f]{64}$/.test(p.declarationDigest))throw Ae("binding");let c=JSON.stringify(a),d=new MessageChannel,u=()=>{try{return!o.aborted&&e.signal===o&&e.scope===t&&e.generation===i&&this.collectionCurrent?.()===!0&&this.current()&&t.account===s.account&&t.installation===s.installation&&t.collection===s.collection&&this.source.timerConsent===r&&JSON.stringify(r?.call(this.source))===c}catch{return!1}},f=tI(d.port1,{scope:s,generation:i,grantId:p.grantId,cpOrigin:new URL(this.selected.cpOrigin).origin,signal:o,isCurrent:u,fetch:this.logRequest,...this.signIn?{journal:{read:()=>this.signIn.originalTimerChannel(p.grantId),write:h=>this.signIn.retainTimerChannel(p.grantId,h)}}:{},bearer:async()=>{if(!u())throw Ae("fenced");let h=await this.bearerCallback.call(this.source,{signal:this.lifetime});if(!u())throw Ae("fenced");return h}});return this.timerPorts.add(f),Object.freeze({port:d.port2,close:async()=>{await f.close(),d.port2.close(),this.timerPorts.delete(f)}})}serverProblem(){return this.pump?.serverProblem??null}transportHealth(){return this.pump?.transportHealth??null}initialSync(){try{return this.native?Zh(this.native.observations().status):"unavailable"}catch{return"unavailable"}}keyWaitDetail(){try{return this.native?HI(this.native.observations().status):null}catch{return null}}pendingWrites(){try{return this.native?.observations().status.pending??0}catch{return 0}}pushLog(e){try{return this.native?.pushLog(e)===!0}catch{return!1}}openLogPush(e){this.checkCollection(this.lifetime);let t=this.native,i=this.authority,o=this.collectionSession,s=this.logRequest;if(!t||!this.pump||!i||!o||!s)throw Ae("binding");if(!t.supportsLogPush||typeof WebSocket!="function")return null;let r=this.logLoopback,a=i.origin,p=()=>{try{return this.collectionCurrent?.()===!0&&this.current()&&this.authority===i&&i.isCurrent()}catch{return!1}};return new Xh({origin:a,collection:i.collection,deviceId:o.deviceId,isCurrent:p,accessToken:l=>i.accessToken(l),invalidateToken:l=>i.invalidateToken(l),nonce:async({signal:l})=>{let c=await s(`${a}/v1/nonce`,{signal:l,cache:"no-store",credentials:"omit",redirect:"error",referrerPolicy:"no-referrer"}),d=(await c.text()).trim();if(!c.ok||!/^[0-9a-f]{64}$/.test(d))throw Ae("unavailable");return Uint8Array.from(d.match(/../g).map(u=>parseInt(u,16)))},signHello:(l,c)=>p()?t.signLogHello(l,c):null},e,{allowLoopbackHttp:r})}async driveCollection(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw Ae("binding");for(let i=0;i<C2;i++){let o=this.pump.callsSent;if(this.native.tick(),await this.pump.pump(),this.checkCollection(t),this.pump?.callsSent===o)break}}async wakeCollectionLog(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw Ae("binding");this.native.tick(),(await this.pump.pump()).quiet&&(this.checkCollection(t),this.native.requestLogHead()&&(await this.pump.pump(),this.checkCollection(t),this.native.tick()))}waitForVerifiedRead(e){let{timeoutMs:t=15e3,cold:i=!1}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionScope||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3||typeof i!="boolean"||i&&!this.pump)throw Ae("binding");if(this.readWork)return this.readWork.then(()=>{this.checkCollection(o)});let s=this.verifyRead(o,t,i,e.onProgress);return this.readWork=s,s.finally(()=>{this.readWork===s&&(this.readWork=null)}).catch(()=>{}),s}async verifyRead(e,t,i,o){let s=new AbortController,r=()=>s.abort();this.readAbort=s,e.addEventListener("abort",r,{once:!0});let a=null,p=Ae(i?"sync_stalled":"unavailable"),l,c=new Promise((h,m)=>{l=()=>m(p),s.signal.addEventListener("abort",l,{once:!0})});c.catch(()=>{});let d=null,u=h=>{if(h!==d){d=h;try{o?.(h)}catch{}}},f=()=>{this.checkCollection(e);let h=i?this.pump.terminalProblem:null;if(Pn(h))throw new gn(St(h)??"unavailable",h);let m=this.native.observations();if(m.requiresReopen||m.keyringRebuildFailed)throw Ae("recovery_required");let b=Zh(m.status);return u(b==="installing"?"loading_snapshot":b==="waiting_for_key"?"waiting_for_key":b==="behind"?"replaying":b===null?"verifying_read":"syncing"),m};this.readVerified=!1;try{if(this.pump){let m=()=>{let A=f();return[A.status.confirmedThrough,A.status.installing?.done??0,A.status.installing?.total??0,this.pump.readProgress]},b=m(),w=Date.now(),g=new Map,y=null,v=()=>{try{let A=Date.now(),k=m();k.some((C,E)=>C>b[E])&&(w=A,y=null),b=k.map((C,E)=>Math.max(C,b[E]));let S=this.pump.responseProgress(),x=new Set(S.map(C=>C.id));for(let C of g.keys())x.has(C)||g.delete(C);for(let C of S){let E=g.get(C.id);C.bytes>(E?.bytes??0)&&g.set(C.id,{bytes:C.bytes,at:A})}let P=t-(A-w);P<=0&&(y??=new Set(g.keys()),P=Math.max(0,...[...y].map(C=>{let E=g.get(C);return E?t-(A-E.at):0}))),P<=0?r():a=setTimeout(v,Math.min(250,P))}catch(A){p=A,r()}};a=setTimeout(v,Math.min(250,t))}else a=setTimeout(r,t);this.readClient=await Promise.race([qi.connect({app:{name:"app-local-read-gate",version:"1"},connector:zs(this.native,{collection:this.collectionScope.collection}),reconnect:!1,signal:s.signal}).then(m=>{if(s.signal.aborted)throw m.close(),Ae("unavailable");return m}),c]),this.checkCollection(e);let h=250;for(;!s.signal.aborted;){this.native.tick(),this.pump&&await Promise.race([this.pump.pump(),c]),this.checkCollection(e);let m=f();if(i&&Zh(m.status)!==null){await yp(h,s.signal),h=Math.min(1e3,h*2);continue}try{if(await Promise.race([this.readClient.query({limit:1},void 0,s.signal),c]),this.checkCollection(e),s.signal.aborted)throw Ae("unavailable");this.readVerified=!0;return}catch(b){if(this.checkCollection(e),!(b instanceof se)||b.code!=="unavailable"||!this.pump||s.signal.aborted)throw b}await yp(h,s.signal),h=Math.min(1e3,h*2)}throw Ae("unavailable")}catch(h){throw this.checkCollection(e),s.signal.aborted?p:h}finally{a!==null&&clearTimeout(a),e.removeEventListener("abort",r),s.signal.removeEventListener("abort",l),this.readClient?.close(),this.readClient=null,this.readAbort=null}}onLogWork(e){this.logWorkListener=e}attachDataFacade(e){if(this.checkCollection(this.lifetime),!this.native||!this.collectionScope||!this.readVerified||this.facades.size>=x2||this.facades.has(e))throw Ae("fenced");let t=Object.freeze({...this.collectionScope,isCurrent:()=>{try{return this.checkCollection(this.lifetime),!0}catch{return!1}}}),i=dh(this.native,e,t,()=>this.logWorkListener?.());return this.facades.set(e,i),i.resourceSetup}detachDataFacade(e){let t=this.facades.get(e);t&&(this.facades.delete(e),t.close())}registeredReceipt(){this.check(this.lifetime);let e=this.publicReceipt;if(!e)throw Ae("fenced");return Object.freeze({...e,signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}close(){if(this.closing=!0,this.readVerified=!1,this.readAbort?.abort(),this.closeResult)return this.closeResult;let e=!1;for(let t of[()=>this.readClient?.close(),()=>{for(let i of this.facades.values())i.close();this.facades.clear()},()=>this.peopleMetadata?.authority.close(),()=>this.bootstrap?.close(),()=>this.outcome?.close()])try{t()}catch{e=!0}return this.closeResult??=(async()=>{try{await Promise.all([...this.timerPorts].map(async i=>{try{await i.close()}catch{e=!0}})),this.timerPorts.clear();let t=await this.native?.close();if(this.collectionSql&&t!==!0&&this.collectionSql.fence(),this.authority?.close(),await this.sqlClose?.(),e)throw Ae("unavailable")}finally{this.key=null,this.noise=null,this.originalCustody?.envelope.fill(0),this.originalCustody=null,this.signIn=null,this.publicReceipt=null,this.outcomeStore?.close(),this.noiseStore?.close(),this.keys?.close(),this.provider?.close()}})()}};_x();re();ep();rp();Zo();ro();Mh();ip();np();no();Wn();var I2=new Set(["binding","fenced","busy","open_in_another_tab","account_confirmation_required","recovery_account_mismatch","outcome_unknown","response","refused","expired","recovery_required","unavailable","collection_migrating","collection_not_yet_migrated","account_suspended","update_required"]),O2=new Set(["AbortError","ConstraintError","DataCloneError","InvalidStateError","NotAllowedError","NotFoundError","NotReadableError","OperationError","QuotaExceededError","SecurityError","TimeoutError","TransactionInactiveError","UnknownError","VersionError"]),fo=(n,e,t,i)=>Object.freeze({problem:n,detail:Object.freeze({name:e,code:t,...i?{server:i}:{}})});function cv(n){try{for(let[e,t]of[[Xe,"AppInstallationSignInError"],[uo,"AppCloudCopyHostError"],[tn,"AppCloudCopyBootstrapError"],[rn,"AppCollectionSetupError"],[ii,"AppCollectionControlError"],[po,"AppCollectionJoinError"],[ei,"AppCpAuthorityError"],[gn,"AppHttpLogError"]])if(n instanceof e){let i=n.reason,o=("server"in n?$r(n.server):null)??void 0;return i==="sync_stalled"?fo("unavailable",t,i,o):I2.has(i)?fo(i,t,i,o):fo("open_failed",t,null,o)}if(n instanceof Ke&&n.reason==="busy")return fo("open_in_another_tab","AppReplicaOwnerError","busy");if(n instanceof se){let e=xr(n.code)?n.code:null;return fo(e==="outcome_unknown"?e:"open_failed","MdbaseError",e)}if(typeof DOMException<"u"&&n instanceof DOMException){let e=O2.has(n.name)?n.name:null;return fo("open_failed","DOMException",e)}for(let[e,t]of[[TypeError,"TypeError"],[RangeError,"RangeError"],[SyntaxError,"SyntaxError"],[ReferenceError,"ReferenceError"],[URIError,"URIError"],[EvalError,"EvalError"],[Error,"Error"]])if(n instanceof e)return fo("open_failed",t,null)}catch{}return fo("open_failed","UnknownError",null)}rp();to();no();ge();var R2=5e3,E2=n=>Array.from(U(n),e=>e.toString(16).padStart(2,"0")).join(""),Pi=n=>(U(n),n.toLowerCase());function im(n,e,t=R2){let i;return Promise.race([n.catch(()=>e),new Promise(o=>{i=setTimeout(()=>o(e),t)})]).finally(()=>clearTimeout(i))}function pv(n){return im(new Promise(e=>{let t=indexedDB.deleteDatabase(n);t.onsuccess=()=>e(!0),t.onerror=()=>e(!1)}),!1)}function q2(n){let e=encodeURIComponent(n.cpOrigin),t=`mdbase.app.installation.v1.${e}.${n.appId}`;return[n.owner===void 0?t:`mdbase.app.installation.v2.${e}.${encodeURIComponent(n.owner)}.${n.appId}`,t]}async function T2(n,e,t){let i=new Set(n.isolated?[]:n.databases);!n.isolated&&n.storageNamespace===void 0&&i.add(t);let{accountId:o,connectorId:s,deviceId:r,installationId:a}=n;if(o&&s&&r&&a){let p=[o,s,r,a].map(E2).join(".");i.add(`mdbase.app.device-key-kek.v1.${p}`),i.add(`mdbase.app.device-keys.v1.${p}`),i.add(`mdbase.app.noise.v1.${Pi(a)}.${Pi(s)}.${Pi(r)}`);let l=[o,s,r,a].map(Pi).join("."),c=[`mdbase.app.cloud-copy-outcome.v1.${l}.`,`mdbase.app.private-bootstrap.v1.${l}.`];for(let u of n.collectionIds){let f=Pi(u);for(let h of["create","join"])i.add(`${c[0]}${f}.${h}`);for(let h of["create","enrol"])i.add(`${c[1]}${f}.${h}`)}let d=indexedDB.databases;if(typeof d=="function"){let u=await im(d.call(indexedDB),[]);for(let{name:f}of u)f&&c.some(h=>f.startsWith(h))&&i.add(f)}}return i.delete(e),[...i]}async function M2(n,e){let t=globalThis.navigator?.storage;return typeof t?.getDirectory!="function"?!0:im((async()=>{let i=await t.getDirectory(),o=`.mdbase-app-${Pi(n)}-${Pi(e)}-`,s=[];for await(let a of i.keys())a.startsWith(o)&&s.push(a);let r=!0;for(let a of s)try{await i.removeEntry(a,{recursive:!0})}catch{r=!1}return r})(),!1)}async function YI(n,e){try{if(!globalThis.indexedDB||!n.accountId||!n.connectorId||!n.deviceId||!n.installationId)return!1;let t=Pi(e),i=[n.accountId,n.connectorId,n.deviceId,n.installationId].map(Pi).join("."),o=["create","join"].map(a=>`mdbase.app.cloud-copy-outcome.v1.${i}.${t}.${a}`);o.push(...["create","enrol"].map(a=>`mdbase.app.private-bootstrap.v1.${i}.${t}.${a}`));let s=await Promise.all(o.map(pv)),r=globalThis.navigator?.storage;if(typeof r?.getDirectory=="function"){let a=await r.getDirectory();try{await a.removeEntry(`.mdbase-app-${Pi(n.accountId)}-${Pi(n.installationId)}-${t}`,{recursive:!0})}catch(p){if(!(p instanceof DOMException&&p.name==="NotFoundError"))return!1}}return s.every(Boolean)}catch{return!1}}async function JI(n){if(!globalThis.indexedDB)return Object.freeze({ledger:!1,complete:!1});let[e,t]=q2(n),i=await pv(e),o=null;try{o=await T2(n,e,t)}catch{}let s=o?await Promise.all([...o,...n.isolated||n.storageNamespace!==void 0?[]:[rv]].map(pv)):[!1],r=n.storageNamespace===void 0?!0:await im(WI(n),!1),a=n.accountId&&n.installationId?await M2(n.accountId,n.installationId).catch(()=>!1):!0;return Object.freeze({ledger:i,complete:i&&r&&a&&s.every(Boolean)})}re();var L2=Object.freeze({status:"unselected",problem:null,transport:null,live:null}),_t=n=>new Xe(n),j2=new Set(["collection_not_yet_migrated","collection_migrating","account_suspended","update_required"]),rm=class{lifetime=new AbortController;flowLifetime=new AbortController;options;environment;listeners=new Set;flow=null;host=null;installation=null;installationLease=null;slots=new Map;focus=null;openingSlot=null;abortCollections=()=>{for(let e of this.slots.values())e.lifetime?.abort()};base=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null});snapshotValue=this.base;authorizationStartedAt=null;authorizationRetryAt=0;authorizationRateLimit=null;pending=null;polling=null;timer=null;closing=null;foreground=!0;receiptRead=null;foregroundRead=null;attested=!1;acknowledged=!1;consentPending=!1;fileAccess=null;freshApproval=!1;approvalWindow=null;nativePending=null;forgotten=new Set;removedScopes=new Set;onAbort=()=>{this.close().catch(()=>{})};constructor(e){this.options=Object.freeze({...e}),this.environment=Qn({environment:e.environment,appOrigin:e.origin,platform:e.allowNativeLoopbackHttp?"native":void 0,release:e.release}),e.signal.addEventListener("abort",this.onAbort,{once:!0}),this.lifetime.signal.addEventListener("abort",this.abortCollections,{once:!0})}getSnapshot(){return this.snapshotValue}snapshot(){return this.getSnapshot()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}viewFor(e,t={}){return t.bystander&&this.base.status==="authorizing"&&this.consentPending&&e!==null&&this.slots.has(e)?this.compose(e,!0):e===this.focus?this.snapshotValue:this.compose(e)}collectionView(e){return this.slots.get(e)?.view??null}heldCollections(){return[...this.slots.keys()]}compose(e,t=!1){let i=this.base,o=e===null?void 0:this.slots.get(e);if(!o)return i;if(i.status!=="unselected"&&!t)return Object.freeze({...i,selectedCollectionId:o.id,transport:o.view.transport,live:o.view.live});let{problemDetail:s,...r}=i,{problemDetail:a,...p}=o.view;return Object.freeze({...r,...t?{status:"unselected",problem:null,approval:null}:{},...p,selectedCollectionId:o.id,...a?{problemDetail:a}:{}})}connection(e=this.focus){let t=e===null?void 0:this.slots.get(e),i=this.base.status==="unselected"||this.base.status==="authorizing"&&this.consentPending;return!t||this.closing||this.options.signal.aborted||!t.usable||t.lifetime?.signal.aborted||!this.installation?.isCurrent()||!i||!["ready","setup_required"].includes(t.view.status)||!this.sameScope(t.scope,t.leaseScope)||t.scope?.collection!==t.id?null:t.selected?.connection??null}sameScope(e,t){return e!==null&&t!==null&&e.account===t.account&&e.installation===t.installation&&e.collection===t.collection&&e.account===this.installation?.scope.account&&e.installation===this.installation?.scope.installation}directAccess=Jh;checkDirectAccess(e){return this.check(),this.directAccess.check(e)}requestDirectAccess(e){return this.check(),this.directAccess.request(e)}check(){if(this.closing||this.options.signal.aborted||this.lifetime.signal.aborted)throw _t("fenced")}publish(e){this.check(),this.setBase(e),this.changed()}setBase(e){let{problemDetail:t,...i}=this.base,o=e.problem===null?void 0:e.problemDetail??t;this.base=Object.freeze({...i,...e,selectedCollectionId:null,signIn:this.flow?.view()??null,...o?{problemDetail:o}:{}})}publishSlot(e,t){if(this.check(),this.slots.get(e.id)!==e)return;let i=this.base.timing;if(this.authorizationStartedAt!==null&&(t.status==="ready"||t.status==="setup_required")){let p=Math.max(0,performance.now()-this.authorizationStartedAt);i=Object.freeze({firstScreenMs:i?.firstScreenMs??p,readyMs:t.status==="ready"?i?.readyMs??p:i?.readyMs??null})}this.setBase({timing:i});let{problemDetail:o,...s}=e.view,r=t.problem===null?void 0:t.problemDetail??o,a=(t.status??s.status)==="opening"?"openingProgress"in t?t.openingProgress??null:s.openingProgress??null:null;e.view=Object.freeze({...s,...t,openingProgress:a,...r?{problemDetail:r}:{}}),this.changed()}changed(){this.snapshotValue=this.compose(this.focus);for(let e of[...this.listeners])try{e()}catch{}}poll(e){this.pending||(this.operation(e).catch(()=>{}),this.polling=this.pending)}stopPolling(){this.timer!==null&&clearTimeout(this.timer),this.timer=null}operation(e,t=!1){if(this.check(),this.pending)return Promise.reject(_t("busy"));this.foregroundRead=null,this.stopPolling();let o=Promise.resolve().then(()=>(this.check(),e())).catch(async s=>{if(!t&&!this.closing&&!this.options.signal.aborted){let{problem:r,detail:a}=cv(s);if(r==="open_failed")try{console.error("mdbase web sign-in open failed",a.name,a.code)}catch{}let p=this.openingSlot;if(this.openingSlot=null,p&&this.slots.get(p.id)===p){let l=!1;try{l=s instanceof tn&&s.reason==="unavailable"&&s.retryable===!0&&p.view.status==="opening"&&this.base.collections.some(c=>c.collectionId===p.id)&&this.flow?.view().state==="paired"&&this.installation?.isCurrent()===!0}catch{}if(l){try{await this.closeSlot(p),this.check()}catch(c){throw!this.closing&&!this.options.signal.aborted&&this.publishSlot(p,{status:"blocked",problem:"recovery_required",problemDetail:cv(c).detail}),c}this.publishSlot(p,{status:"unselected",problem:r,problemDetail:a})}else this.publishSlot(p,{status:"blocked",problem:r,problemDetail:a})}else this.publish({status:"blocked",problem:r,problemDetail:a})}throw s});return this.pending=o,o.finally(()=>{this.pending===o&&(this.pending=null),this.schedulePoll()})}start(){return this.operation(async()=>{if(this.flow&&this.base.status!=="blocked")return this.getSnapshot();this.publish({status:"starting",problem:null,signOutResult:null});let e=this.options;this.flow??=await Ua.open({...e,mode:e.storeMode??"open",signal:this.flowLifetime.signal,environmentSelection:this.environment}),this.check();let t=this.flow.view();if(t.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!t.nativeSelection)throw _t("recovery_required");await this.openDevice(!1,this.options.recoveryFor!==void 0),this.flow.collectionConsentView()?.state==="pending"?(this.consentPending=!0,this.publish({status:"authorizing"})):await this.refreshCollections()}else this.publish({status:t.state==="pending"?"signed_out":"authorizing"});return this.getSnapshot()})}authorize(e={}){if(this.check(),this.authorizationRateLimit&&Date.now()<this.authorizationRetryAt)return Promise.reject(this.authorizationRateLimit);let t=this.pending!==null&&this.pending===this.polling?this.pending:null;if(!this.flow||this.pending&&!t)return Promise.reject(_t("busy"));let i=this.options.openPortal();return t?t.catch(()=>{}).then(()=>{try{this.check()}catch(s){throw i.close(),s}if(this.pending)throw i.close(),_t("busy");let o=this.base.status;return o!=="authorizing"&&o!=="signed_out"?(i.close(),this.getSnapshot()):this.beginAuthorization(i,e)}):this.beginAuthorization(i,e)}beginAuthorization(e,t){let i={collectionHint:t.collectionHint??null},o=this.flow.view();return this.authorizationStartedAt=performance.now(),this.publish({timing:Object.freeze({firstScreenMs:null,readyMs:null}),approval:null}),this.operation(async()=>{try{if(o.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!o.nativeSelection)throw _t("recovery_required");await this.openDevice(),this.check();let s=await this.flow.startCollectionConsent(this.installation,this.options.requestedCreateCollections??this.options.freshRequestedCreateCollections??!1,i);this.check(),this.consentPending=!0,e.navigate(s.verificationUri)}else{let s=await this.flow.start(i).catch(r=>this.renewFromGesture(r));this.check(),e.navigate(s.verificationUri)}return this.holdApprovalWindow(e),this.publish({status:"authorizing",problem:null}),await this.advance(),this.getSnapshot()}catch(s){throw s instanceof Xe&&s.server?.status===429&&(this.authorizationRateLimit=s,this.authorizationRetryAt=Date.now()+Math.min(Ws,Math.max(Vs,s.server.retryAfterMs??3e4))),e.close(),s}})}requestFileAccess(e,t,i){if(this.check(),!this.flow||this.pending)return Promise.reject(_t("busy"));let o=this.options.openPortal();return this.operation(async()=>{try{if(this.flow.view().state!=="paired"||!this.installation||!this.base.collections.some(r=>r.collectionId===e))throw _t("refused");let s=await this.flow.startFileAccess(this.installation,e,t,i);return this.check(),this.fileAccess=s,o.navigate(s.verificationUri),this.holdApprovalWindow(o),this.publish({fileAccess:Object.freeze({requestId:s.requestId,collectionId:e,actions:s.actions,state:"pending"})}),this.getSnapshot()}catch(s){throw o.close(),s}},!0)}pollFileAccess(e){let t=this.fileAccess;return!t||t.requestId!==e||this.pending||!this.flow||!this.installation?Promise.resolve(this.getSnapshot()):this.operation(async()=>{let i={state:"pending"};try{i=await this.flow.exchangeFileAccess(this.installation,t)}catch{}if(this.check(),this.fileAccess!==t||i.state==="pending"&&Date.now()<t.expiresAt)return this.getSnapshot();this.fileAccess=null,this.closeApprovalWindow();let o=i.state==="granted"?i.actions:null,s=o?Object.freeze(this.base.collections.map(r=>r.collectionId!==t.collectionId?r:Object.freeze({...r,fileActions:Object.freeze([...new Set([...r.fileActions??[],...o])])}))):this.base.collections;return this.publish({collections:s,fileAccess:Object.freeze({requestId:e,collectionId:t.collectionId,actions:o??t.actions,state:i.state==="pending"?"expired":i.state})}),this.getSnapshot()},!0)}async renewFromGesture(e){if(!(e instanceof Xe)||e.reason!=="expired"&&e.reason!=="refused")throw e;try{return await this.flow.renewExpiredPairing()}catch(t){throw t instanceof Xe&&t.reason==="recovery_required"?e:t}}renewExpiredPairing(){return this.operation(async()=>{if(!this.flow)throw _t("binding");return await this.flow.renewExpiredPairing(),this.check(),this.publish({status:"signed_out",problem:null}),this.getSnapshot()})}receiptGeneration(e){try{if(!e.isCurrent())return null;let t=e.view(),i=this.consentPending?e.collectionConsentView():null;return(this.consentPending?i?.state!=="pending":!["pending","awaiting_approval"].includes(t.state))?null:JSON.stringify([t.requestId,t.installationId,t.deviceId,t.accountId,t.state,this.consentPending,i?.requestId,i?.state])}catch{return null}}currentReceipt(e){try{return!this.closing&&!this.lifetime.signal.aborted&&!this.flowLifetime.signal.aborted&&!e.caller.aborted&&this.options.signal===e.caller&&this.flow===e.flow&&this.installation===e.installation&&(e.installation===null||e.installation.isCurrent()===!0)&&this.attested===e.attested&&this.acknowledged===e.acknowledged&&this.receiptGeneration(e.flow)===e.generation}catch{return!1}}async exchangeReceipt(e){let t=this.flow,i=this.pending,o=t?this.receiptGeneration(t):null,s=t&&i&&o!==null?Object.freeze({flow:t,operation:i,generation:o,caller:this.options.signal,installation:this.installation,attested:this.attested,acknowledged:this.acknowledged}):null;this.receiptRead=s;let r=!1;try{let a=await e();return r=a!=null,a}catch(a){if(a instanceof Xe&&a.reason==="outcome_unknown"&&this.flow?.isCurrent())return this.publish({status:"authorizing",problem:"outcome_unknown"}),null;throw a}finally{this.receiptRead===s&&(this.receiptRead=null),this.foregroundRead===s&&(!r||!s||!this.currentReceipt(s))&&(this.foregroundRead=null)}}async advance(){if(this.consentPending){let t;try{t=await this.exchangeReceipt(()=>this.flow.exchangeCollectionConsent(this.installation))}catch(i){if(!(i instanceof Xe)||i.reason!=="refused"&&i.reason!=="expired")throw i;this.check(),this.consentPending=!1,this.closeApprovalWindow(),this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"cancelled"})}),await this.refreshCollections();return}if(this.check(),!t)return;if(t.state==="scope_updated"){if(t.accountSelectionConfirmed!==!0)throw _t("account_confirmation_required");let i=this.flow.pendingNativeSelection?.();if(i?.requestId===t.requestId)await this.finishNativeChoice(i);else if(this.flow.view().collectionSelection?.requestId!==t.requestId)throw _t("response");this.consentPending=!1,this.freshApproval=!0,this.closeApprovalWindow(),await this.refreshCollections()}else await this.prepareNativeChoice(),this.publish({status:"authorizing",problem:null});return}let e=await this.exchangeReceipt(()=>this.flow.exchange());if(this.check(),!!e)if(e.state==="account_selected"&&(e=await this.flow.confirmPortalSelectedAccount(),this.check()),(e.state==="account_confirmed"||e.state==="awaiting_approval")&&(await this.openDevice(),this.check(),this.attested||(await this.host.attestInstallation(),this.check(),this.attested=!0),await this.prepareNativeChoice()),e.state==="paired"){let t=this.flow.pendingNativeSelection?.();if(t?.requestId===e.requestId)await this.finishNativeChoice(t);else if(e.collectionSelection?.requestId!==e.requestId)throw _t("response");this.freshApproval=!0,this.closeApprovalWindow(),await this.openDevice(),this.check(),await this.refreshCollections()}else this.publish({status:"authorizing",problem:null})}async prepareNativeChoice(){let e=this.approvalWindow?.nativeAuthorization;if(!e||!this.installation)return;let t=this.flow.nativeAuthorizationContext(this.installation);if(!t)return;let i=this.nativePending;if(!i){if(i={context:t,port:e,life:new AbortController,prepared:null,failed:!1,attempted:!1},this.nativePending=i,t.authorizationId){i.failed=!0;return}let o=i,s=AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,i.life.signal]);e.prepare(t,s).then(r=>{this.nativePending!==o||s.aborted||(o.prepared=Object.freeze({...r}))},()=>{o.failed=!0})}if(i.context.requestId!==t.requestId||i.context.accountId!==t.accountId||i.context.challenge!==t.challenge)throw _t("fenced");if(i.prepared&&!i.attempted){i.attempted=!0;try{await this.flow.attachNativeAuthorization(this.installation,i.context,i.prepared),this.check()}catch{i.failed=!0}}}async finishNativeChoice(e){let t=this.nativePending;if(!t||!t.prepared||!t.attempted||t.context.requestId!==e.requestId||t.prepared.authorizationId!==e.authorizationRequestId)throw _t("recovery_required");await this.openDevice(),this.check();let i=await t.port.finish(e,AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,t.life.signal]));if(this.check(),this.nativePending!==t||!this.acknowledged||!this.installation)throw _t("fenced");await this.flow.completeNativeAuthorization(this.installation,i),this.check()}holdApprovalWindow(e){this.approvalWindow!==e&&this.closeApprovalWindow(),this.approvalWindow=e}closeApprovalWindow(){let e=this.approvalWindow;this.approvalWindow=null;let t=this.nativePending;this.nativePending=null,t?.life.abort();try{t?.port.cancel()}catch{}if(e)try{e.close()}catch{}}async openDevice(e=!1,t=!1){if(!this.installation){let i=this.flow.confirmedSelection(),o=Object.freeze({account:i.accountId,installation:i.installationId});this.installationLease=await Xc(this.options.locks,o,this.lifetime.signal),this.check(),this.installation=Object.freeze({scope:o,isCurrent:()=>!this.closing&&!this.options.signal.aborted&&!this.lifetime.signal.aborted&&this.installationLease!==null})}t||!this.host&&!e&&this.acknowledged&&this.flow.view().state==="paired"&&[...this.slots.values()].some(i=>i.host!==null)||(this.host?!this.acknowledged&&this.flow.view().state==="paired"&&(await this.host.completeInstallationSignIn(),this.check(),this.acknowledged=!0):(this.host=await vl.openInstallationDevice({signIn:this.flow,installation:this.installation,release:this.options.release,origin:this.options.origin,signal:this.lifetime.signal,loadRuntime:this.options.loadRuntime,allowLoopbackHttp:this.environment.allowLoopbackHttp,allowNativeLoopbackHttp:this.environment.allowNativeLoopbackHttp}),this.check(),this.acknowledged=this.flow.view().state==="paired"))}async refreshCollections(){let e=await this.flow.listApprovedCollections(this.installation);this.check();for(let o of this.flow.view().collectionIds)e.some(s=>s.collectionId===o)||this.removedScopes.add(o);let t=Object.freeze(e.filter(o=>!this.forgotten.has(o.collectionId)));for(let o of this.slots.values()){if(o.usable&&o.selected&&!t.some(p=>p.collectionId===o.id)){o.usable=!1,o.lifetime?.abort(),await this.closeSlot(o),this.check(),this.deleteSlot(o);continue}let s=o.usable&&o.selected!==null&&t.some(p=>p.collectionId===o.id),{problemDetail:r,...a}=o.view;o.view=Object.freeze({...a,status:s?o.selected.state:"unselected",problem:null})}this.publish({status:"unselected",collections:t,problem:null});let i=this.flow.view().collectionSelection?.selectedCollectionId;(this.options.autoSelect??"only")==="only"&&(this.freshApproval&&i&&t.some(o=>o.collectionId===i)?await this.openSlot(i,!0):t.length===1&&await this.openSlot(t[0].collectionId,!0))}schedulePoll(){if(this.pending&&!this.closing&&!this.options.signal.aborted)return;let e=this.foregroundRead;this.foregroundRead=null;for(let i of this.closing||this.options.signal.aborted?[]:this.slots.values()){let o=this.retryAfterMs(i);o===null||i.timer!==null||i.view.status!=="blocked"||(i.timer=setTimeout(()=>{i.timer=null,!(this.slots.get(i.id)!==i||i.view.status!=="blocked"||i.view.problem!=="collection_migrating"||this.flow?.view().state!=="paired")&&this.operation(()=>this.openSlot(i.id)).catch(()=>{})},o))}if(this.closing||this.options.signal.aborted||this.timer!==null||this.base.status!=="authorizing")return;let t=this.foreground&&e&&this.currentReceipt(e)?e:null;this.timer=setTimeout(()=>{this.timer=null,this.poll(async()=>{t&&(!this.foreground||!this.currentReceipt(t))||await this.advanceApproval()})},t?0:this.foreground?this.base.problem==="outcome_unknown"?5e3:1e3:1e4)}retryAfterMs(e){let t=e.view;if(t.problem!=="collection_migrating")return null;let i=null;try{i=$r(t.problemDetail?.server)?.retryAfterMs??null}catch{i=null}return Math.min(Ws,Math.max(Vs,i??3e4))}setForeground(e){this.check();let t=e&&!this.foreground;this.foreground=e,this.stopPolling(),e?t&&this.receiptRead?.operation===this.pending&&(this.foregroundRead=this.receiptRead):this.foregroundRead=null,e&&this.base.status==="authorizing"&&!this.pending?this.poll(()=>this.advanceApproval()):this.schedulePoll()}approvalWindowClosed(){this.check(),!(this.pending||this.base.status!=="authorizing"||!this.approvalWindowGone())&&(this.stopPolling(),this.poll(()=>this.advanceApproval()))}approvalWindowGone(){let e=this.approvalWindow;try{return e?.closed===!0}catch{return!1}}async advanceApproval(){let e=this.approvalWindowGone()?this.approvalWindow:null;if(await this.advance(),this.check(),!(!e||this.approvalWindow!==e||this.base.status!=="authorizing")&&this.base.problem!=="outcome_unknown"){if(this.closeApprovalWindow(),this.consentPending){this.consentPending=!1,this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"closed"})}),await this.refreshCollections();return}this.publish({status:"signed_out",problem:"approval_window_closed",approval:Object.freeze({outcome:"closed"})})}}select(e){return this.operation(async()=>(await this.openSlot(e,!0),this.getSnapshot()))}openCollection(e){return this.operation(async()=>(await this.openSlot(e),this.viewFor(e)))}releaseCollection(e){return this.slots.has(e)?this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t),this.changed()),this.getSnapshot()}):Promise.resolve(this.getSnapshot())}async openSlot(e,t=!1){this.check();let i=this.base.collections.find(d=>d.collectionId===e);if(!i||this.flow?.view().state!=="paired"||!this.installation)throw _t("refused");let o=t?[...this.slots.values()].filter(d=>d.id!==e):[],s=this.slots.get(e);if(s&&s.usable&&s.selected&&!s.lifetime?.signal.aborted&&this.sameScope(s.scope,s.leaseScope)&&s.scope?.collection===e){for(let d of o)d.usable=!1,d.lifetime?.abort();this.focus=e,this.settleBase(),this.publishSlot(s,{status:s.selected.state,problem:null});for(let d of o)await this.closeSlot(d),this.check(),this.deleteSlot(d),this.changed();return}for(let d of o)d.usable=!1,d.lifetime?.abort();let r=s??{id:e,host:null,lease:null,leaseScope:null,selected:null,scope:null,lifetime:null,usable:!1,stopAssessment:null,timer:null,view:L2};r.usable=!1,r.lifetime?.abort(),this.slots.set(e,r),this.focus=e,this.openingSlot=r,this.settleBase(),this.publishSlot(r,{status:"opening",problem:null,openingProgress:null});for(let d of o)await this.closeSlot(d),this.check(),this.deleteSlot(d),this.changed();(r.lease||r.selected||r.host)&&await this.closeSlot(r),this.check(),await this.openDevice(!0),this.check(),r.host=this.host,this.host=null;let a=Object.freeze({...this.installation.scope,collection:e});r.lease=await Jc(this.options.locks,a,this.lifetime.signal),r.leaseScope=a,this.check(),r.lifetime=new AbortController;let p=this.freshApproval&&this.flow.view().collectionSelection?.createdCollectionIds.includes(e)===!0,l=r.lifetime,c=await this.options.openCollection({host:r.host,installation:this.installation,scope:a,collection:i,setupPolicy:p?"approved-new-collection":"explicit",signal:l.signal,onProgress:d=>{this.closing||this.slots.get(r.id)!==r||r.lifetime!==l||l.signal.aborted||r.view.status!=="opening"||r.view.openingProgress!==d&&this.publishSlot(r,{openingProgress:d})}});if(r.selected=c,r.scope=a,this.check(),c.state!=="ready"&&c.state!=="setup_required")throw _t("response");r.usable=!0,this.openingSlot===r&&(this.openingSlot=null),r.stopAssessment=c.subscribe?.(()=>{if(this.closing||this.slots.get(r.id)!==r||!r.usable||r.selected!==c||r.lifetime?.signal.aborted||!this.sameScope(r.scope,r.leaseScope)||r.scope?.collection!==r.id)return;let d=null;try{d=c.ended??null}catch{d=null}if(d){this.accessEnded(r,c,d);return}(c.state==="ready"||c.state==="setup_required")&&this.publishSlot(r,{status:c.state,...this.liveProblem(r,c)})})??null,this.publishSlot(r,{status:c.state,transport:null,live:null,openingProgress:null})}settleBase(){(this.base.status==="blocked"||this.base.status==="unselected")&&this.setBase({status:"unselected",problem:null})}deleteSlot(e){e.timer!==null&&clearTimeout(e.timer),e.timer=null,this.slots.get(e.id)===e&&this.slots.delete(e.id),this.focus===e.id&&(this.focus=null),this.openingSlot===e&&(this.openingSlot=null)}accessEnded(e,t,i){if(e.selected!==t||!e.usable)return;let o=i==="gone"?"collection_deleted":i==="revoked"?"unauthenticated":"access_removed";i!=="gone"&&this.removedScopes.add(e.id),e.usable=!1,this.publishSlot(e,{status:"blocked",problem:o,transport:null,live:null});let s=()=>{if(!(this.closing||this.options.signal.aborted||e.selected!==t||this.slots.get(e.id)!==e)){if(this.pending){this.pending.catch(()=>{}).then(s);return}this.operation(async()=>{if(await this.closeSlot(e),this.publishSlot(e,{status:"blocked",problem:o}),!(!this.flow||!this.installation||this.flow.view().state!=="paired"))try{let r=await this.flow.listApprovedCollections(this.installation);this.check(),this.publish({collections:Object.freeze(r.filter(a=>!this.forgotten.has(a.collectionId)))})}catch{}}).catch(()=>{})}};s()}liveProblem(e,t){let i=null;try{i=t.problem??null}catch{i=null}let o=null;try{o=t.health??null}catch{o=null}let s=o?Object.freeze({...o}):null,r=null;try{let p=t.live;r=typeof p=="boolean"?p:null}catch{r=null}let a=Pn(i)?St(i):null;return a&&i?{problem:a,problemDetail:Object.freeze({name:"AppHttpLogError",code:a,server:i}),transport:s,live:r}:{...j2.has(e.view.problem??"")?{problem:null}:{},transport:s,live:r}}async closeSlot(e){e.usable=!1,e.timer!==null&&clearTimeout(e.timer),e.timer=null;let t=e.stopAssessment;e.stopAssessment=null;try{t?.()}catch{}e.lifetime?.abort(),await e.selected?.close(),e.selected=null,e.scope=null,e.lifetime=null,await e.host?.close(),e.host=null,await e.lease?.release(),e.lease=null,e.leaseScope=null}async closeSlots(){for(let t of[...this.slots.values()])await this.closeSlot(t),this.deleteSlot(t);let e=this.host;this.host=null,await e?.close()}clearSelection(){return this.operation(async()=>(await this.closeSlots(),this.focus=null,this.publish({status:"unselected",problem:null}),this.getSnapshot()))}refreshCollectionList(){return this.pending||!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||this.base.status!=="unselected"?Promise.resolve(this.getSnapshot()):this.operation(async()=>(await this.refreshCollections(),this.getSnapshot()),!0)}scopeWasRemoved(e){return this.removedScopes.has(e)}removedScopeIds(){return Object.freeze([...this.removedScopes])}canAbandonWrongAccount(){return!this.closing&&!this.options.signal.aborted&&this.pending===null&&this.flow?.canAbandonWrongAccount()===!0&&this.installation===null&&this.host===null&&this.slots.size===0&&!this.attested&&!this.acknowledged}scopeRecoveryContext(){if(!this.flow||!this.installation||this.flow.view().state!=="paired")return null;let e=this.flow.view();return Object.freeze({accountId:this.installation.scope.account,accountLabel:e.accountEmail??(e.accountLogin?`@${e.accountLogin}`:null),references:this.flow.collectionRecoveries()})}prepareScopedRecovery(e,t){return this.check(),this.pending?this.pending.catch(()=>{}).then(()=>this.prepareScopedRecovery(e,t)):this.operation(async()=>{if(!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||!this.flow.view().collectionIds.includes(e))throw _t("binding");let i=this.flow.collectionRecoveries(),o=this.slots.get(e);if(t===void 0&&!Object.hasOwn(i,e)&&!this.scopeWasRemoved(e))throw _t("binding");o&&(await this.closeSlot(o),this.check(),this.deleteSlot(o)),await this.flow.retireCollectionScope(this.installation,e,t??null),this.check();let s=this.flow.confirmedSelection(),r=this.options;if(!await YI({cpOrigin:r.cpOrigin,appId:r.appId,accountId:s.accountId,connectorId:s.connectorId,installationId:s.installationId,deviceId:s.deviceId,collectionIds:[e],databases:[]},e))throw _t("recovery_required");this.check();let a=await this.flow.freshCollectionInstallation(this.installation,e);return this.check(),Object.freeze({accountId:s.accountId,reference:a})},!0)}forget(e){return this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t)),this.forgotten.add(e),this.publish({collections:Object.freeze(this.base.collections.filter(i=>i.collectionId!==e))}),this.getSnapshot()})}deleteCollection(e,t){let i=null;return this.operation(async()=>{let o=this.base.collections.find(s=>s.collectionId===e);if(!this.flow||!this.installation||!o)i=new _i("collection_delete_not_found");else if(o.role!=="owner")i=new _i("collection_delete_not_owner");else{try{await this.flow.deleteApprovedCollection(this.installation,e,t)}catch(s){i=vx(s)}this.check()}return this.getSnapshot()}).then(o=>{if(i)throw i;return o})}signOut(){this.check();let e=this.pending!==null&&this.pending===this.polling?this.pending:null;return Promise.resolve(e?.catch(()=>{})).then(()=>this.operation(async()=>{let t=this.flow,i=null,o=null,s=!1;try{i=t?.view()??null}catch{i=null}try{o=t?.confirmedSelection().connectorId??null}catch{o=null}try{s=t?.hasWebPushChannel()===!0}catch{s=!1}let r=[...new Set([...i?.collectionIds??[],...this.base.collections.map(c=>c.collectionId)])];this.closeApprovalWindow(),this.fileAccess=null,this.consentPending=!1;try{await this.closeSlots()}catch(c){throw this.failSignOut(),c}this.check();let a="not_paired";if(t&&i?.state==="paired"){try{a=await t.signOutInstallation()}catch{a="incomplete"}this.check()}this.flow=null,this.installation=null;try{await t?.close()}catch{}this.flowLifetime.abort(),this.flowLifetime=new AbortController,await this.installationLease?.release(),this.installationLease=null,this.attested=!1,this.acknowledged=!1,this.freshApproval=!1,this.authorizationStartedAt=null,this.receiptRead=null,this.foregroundRead=null,this.forgotten.clear(),this.removedScopes.clear();let p=this.options,l=await JI({cpOrigin:p.cpOrigin,appId:p.appId,...p.owner===void 0?{}:{owner:p.owner},...p.storageNamespace===void 0?{}:{storageNamespace:p.storageNamespace},accountId:i?.accountId??null,connectorId:o,installationId:i?.installationId??null,deviceId:i?.deviceId??null,collectionIds:r,databases:p.localDatabases??[],...p.recoveryFor?{isolated:!0}:{}});if(this.check(),!l.ledger)throw this.failSignOut(),_("unavailable","This device couldn't remove its sign-in data.","sign_out_failed");return this.emit(Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,signOutResult:Object.freeze({server:a,local:l.complete?"erased":"incomplete",webPush:s})})),this.getSnapshot()},!0))}failSignOut(){if(this.closing||this.options.signal.aborted)return;let e=null;try{e=this.flow?.view()??null}catch{e=null}let{problemDetail:t,...i}=this.base;this.focus=null,this.emit(Object.freeze({...i,status:"blocked",signIn:e,selectedCollectionId:null,problem:"sign_out_failed"}))}emit(e){if(this.check(),this.base=e,e.status==="signed_out"){for(let t of[...this.slots.values()])this.deleteSlot(t);this.focus=null}this.changed()}close(){if(this.closing)return this.closing;let e=this.pending;return this.foregroundRead=null,this.stopPolling(),this.options.signal.removeEventListener("abort",this.onAbort),this.closing=Promise.resolve().then(async()=>{await e?.catch(()=>{}),await this.closeSlots(),this.focus=null,await this.flow?.close(),this.flowLifetime.abort(),this.flow=null,this.installation=null,await this.installationLease?.release(),this.installationLease=null,this.base=Object.freeze({status:"closed",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:this.base.timing}),this.snapshotValue=this.base;for(let t of[...this.listeners])try{t()}catch{}this.listeners.clear()}),this.lifetime.abort(),this.closing}};return rO(N2);})();
130
+ `);return{[$c.version]:String(Cb),[$c.timestamp]:String(o),[$c.nonce]:s,[$c.signature]:sn(await Cw(n,new TextEncoder().encode(r)))}}async function Pw(n,e){let t=await crypto.subtle.generateKey({name:e,namedCurve:"P-256"},!1,n);return{privateKey:t.privateKey,publicKey:sn(new Uint8Array(await crypto.subtle.exportKey("raw",t.publicKey)))}}async function fM(){let n;try{n=await crypto.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{throw _("unavailable","this browser cannot keep a non-extractable X25519 key","browser_unsupported")}if(n.privateKey.extractable)throw _("unavailable","the Noise key must be non-extractable","browser_unsupported");return{privateKey:n.privateKey,publicKey:new Uint8Array(await crypto.subtle.exportKey("raw",n.publicKey))}}function hM(n){return{publicKey:n.noisePublicKey.slice(),dh:async e=>{let t=await crypto.subtle.importKey("raw",e,{name:"X25519"},!1,[]);return new Uint8Array(await crypto.subtle.deriveBits({name:"X25519",public:t},n.noisePrivateKey,256))}}}function mM(n,e){let t=new AbortController,i=()=>t.abort(),o=setTimeout(i,e);return o.unref?.(),n?.addEventListener("abort",i,{once:!0}),n?.aborted&&t.abort(),{signal:t.signal,done:()=>{clearTimeout(o),n?.removeEventListener("abort",i)}}}async function yM(n,e){let t=globalThis.navigator?.locks;if(t)return t.request(n,{mode:"exclusive"},e);let i=Oh.get(n)??Promise.resolve(),o,s=new Promise(r=>{o=r});Oh.set(n,s),await i;try{return await e()}finally{o(),Oh.get(n)===s&&Oh.delete(n)}}var oM,VC,ao,sM,$C,lM,sn,Ih,zC,BC,FC,Rh,Za,xw,Yi,Oh,Iw,KC=I(()=>{"use strict";zc();to();Ta();Pu();Tf();IC();Uf();ge();Nr();re();Xy();Mo();Ls();kd();ec();lu();RC();MC();NC();ey();DC();Nb();oM=new Set(["owner","editor","viewer"]),VC="mdbase.app-grant.v1",ao=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,sM=15e3;$C=BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),lM=new TextEncoder().encode("mdbase-next client noise key v1\0");sn=n=>{let e="";for(let t of n)e+=String.fromCharCode(t);return btoa(e).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,"")},Ih=n=>crypto.getRandomValues(new Uint8Array(n)),zC=n=>{let e=new Uint8Array(4);return new DataView(e.buffer).setUint32(0,n),e},BC=(...n)=>{let e=new Uint8Array(n.reduce((i,o)=>i+o.length,0)),t=0;for(let i of n)e.set(i,t),t+=i.length;return e};FC=async n=>sn(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n))));Rh=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),Za=(n,e)=>!!e&&n.collection===e.collection&&n.owner===e.owner&&Rh(n.noisePublicKey,e.noisePublicKey),xw=(n,e)=>Za(n,e)&&Rh(n.refresh,e.refresh),Yi=()=>_("cancelled","the stored grant changed during this operation"),Oh=new Map;Iw=class{constructor(e){this.options=e;this.declaration=gr(e.declaration),this.cpOrigin=Qn({environment:this.declaration.environment,appOrigin:this.declaration.origin,release:CC()}).cpOrigin;try{this.redirect=new URL(e.redirectUri)}catch{throw _("invalid_request","redirectUri must be an absolute URL","redirect_uri")}if(this.redirect.origin!==this.declaration.origin||this.redirect.hash)throw _("invalid_request","redirectUri must be on the app's origin, without a fragment","redirect_uri");this.fetcher=e.fetch??globalThis.fetch.bind(globalThis),this.callbacks=e.callbacks??pM(),this.storeValue=e.store??null}options;declaration;cpOrigin;redirect;fetcher;callbacks;storeValue;registration=null;tokens=new Map;refreshing=new Map;forgotten=new Set;epoch=0;register(){let e=this.registration??=Nf({declaration:this.options.declaration,signal:new AbortController().signal,isCurrent:()=>!0,fetch:this.fetcher});return e.catch(()=>{this.registration===e&&(this.registration=null)}),e}ownerValue=null;owner(){return this.ownerValue??=Ik(eo(this.declaration).manifest.id,Su(this.declaration))}async store(){if(this.storeValue)return this.storeValue;let e=this.owner();return this.storeValue=UC(this.cpOrigin,(await this.register()).id,{owner:e})}async identity(){let e=await this.store(),t=await e.getIdentity();if(t)return t;let i=await Pw(["sign"],"ECDSA");return e.putIdentityIfAbsent({version:1,privateKey:i.privateKey,publicKey:i.publicKey})}async request(e,t,i){let o=mM(i,sM);try{let s;try{s=await this.fetcher(`${this.cpOrigin}${e}`,{...t,redirect:"error",signal:o.signal})}catch{throw i?.aborted?_("cancelled","request cancelled"):_("unavailable","cannot reach the control plane","control_unreachable")}let r=null;try{let a=await s.json();a&&typeof a=="object"&&!Array.isArray(a)&&(r=a)}catch{r=null}return{status:s.status,body:r}}finally{o.done()}}async authorize(e){e=Object.freeze({...e});let t=await this.prepareAuthorization(e).catch(i=>{throw e.popup.close(),i});try{e.popup.navigate(t.authorizationUri);let{collectionId:i}=await t.finish(e);return{collectionId:i}}finally{t.cancel();try{e.popup.close()}catch{}}}async prepareAuthorization(e={}){if(e=Object.freeze({...e}),e.collection!==void 0&&!ao.test(e.collection))throw _("invalid_request","collection must be a UUID");if(e.expectedAccountId!==void 0&&(!ao.test(e.expectedAccountId)||!e.authorizationNonce))throw _("invalid_request","original account and challenge required","authorization_binding");if(e.authorizationNonce!==void 0&&(!/^[A-Za-z0-9_-]{43}$/.test(e.authorizationNonce)||!aM(e.authorizationNonce)))throw _("invalid_request","invalid original challenge","authorization_binding");let t=new AbortController,i=e.signal?AbortSignal.any([e.signal,t.signal]):t.signal,o=this.epoch,s=()=>{if(i.aborted)throw _("cancelled","authorization fenced","authorization_cancelled");if(o!==this.epoch)throw Yi()};s();let r=await this.register(),a=eo(this.declaration),p=await this.identity(),l=await Pw(["deriveBits"],"ECDH"),c=await Pw(["sign"],"ECDSA"),d=await fM(),u=sn(Ih(32)),f=sn(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(u)))),h=sn(Ih(24)),m=crypto.randomUUID(),b=new Date,w={protocol_version:mr,authorization_id:m,application_id:r.id,application_declaration_id:String(a.manifest.id),application_manifest_digest:r.manifestDigest,application_installation_id:await _P(p.publicKey),installation_signing_public_key:p.publicKey,grant_agreement_public_key:l.publicKey,grant_signing_public_key:c.publicKey,flow:"authorization_code",authorization_nonce:e.authorizationNonce??sn(Ih(32)),issued_at:b.toISOString(),expires_at:new Date(b.getTime()+10*6e4).toISOString(),redirect_uri:this.redirect.href,state:h,code_challenge:f,contracts:a.contracts,requested_operations:[...a.operations],...a.files?{requested_files:a.files}:{},...e.collection?{collection_id:e.collection}:{}},g={binding:w,signature:sn(await Cw(p.privateKey,AP(w)))},y=BC(lM,zC(16),U(m),zC(32),d.publicKey),v={public_key:sn(d.publicKey),signature:sn(await Cw(c.privateKey,y))};s();let A=await this.request("/oauth/authorization_request",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:r.id,redirect_uri:this.redirect.href,code_challenge:f,code_challenge_method:"S256",state:h,operations:a.operations.join(","),...e.collection?{collection_id:e.collection}:{},application_authorization:JSON.stringify(g),client_noise_key:JSON.stringify(v)})},i);s();let k=A.body?.authorization_uri;if(A.status!==200||A.body?.authorization_id!==m||typeof k!="string"||!k.startsWith(`${this.cpOrigin}/oauth/authorize?`))throw _("unavailable",`authorization could not be started (${A.status})`,"authorization_start");let S=null,x=this.awaitCallback(h,{navigate(){},close(){},get closed(){return S?.closed===!0}},{popup:{navigate(){},close(){}},signal:i,timeoutMs:e.timeoutMs});x.catch(()=>{});let P=!1;return Object.freeze({applicationId:r.id,manifestDigest:r.manifestDigest,authorizationId:m,authorizationUri:k,cancel:()=>t.abort(),finish:async C=>{if(C=Object.freeze({...C}),P)throw _("invalid_request","original authorization already consumed","authorization_binding");P=!0,S=C.popup;let E=()=>t.abort();C.signal?.addEventListener("abort",E,{once:!0}),C.signal?.aborted&&t.abort();try{s();let O=C.collection??e.collection;if(O!==void 0&&!ao.test(O))throw _("invalid_request","invalid approved collection","authorization_binding");if(e.collection&&O!==e.collection)throw _("forbidden","a different collection was approved","collection_mismatch");if(e.expectedAccountId&&!O)throw _("invalid_request","original Private choice required","authorization_binding");let L=await x;s();let z=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:L,client_id:r.id,redirect_uri:this.redirect.href,code_verifier:u})},i);s();let ee=e.expectedAccountId?Bf(z.body,{accountId:e.expectedAccountId,authorizationRequestId:m,applicationId:r.id,declarationId:w.application_declaration_id,manifestDigest:r.manifestDigest,applicationInstallationId:w.application_installation_id,applicationOrigin:this.redirect.origin,collectionId:O,grantSigningPublicKey:c.publicKey,clientNoisePublicKey:sn(d.publicKey)}):void 0,V=await this.saveTokens(z,{noise:d,signing:c.privateKey,collection:O,check:s});return s(),{collectionId:V,...ee?{nativeCompletion:ee}:{}}}finally{C.signal?.removeEventListener("abort",E),t.abort()}}})}awaitCallback(e,t,i){let o=Math.min(Math.max(i.timeoutMs??6e5,1e3),18e5);return new Promise((s,r)=>{let a=null,p=f=>{c(),clearTimeout(d),clearInterval(u),i.signal?.removeEventListener("abort",l),f()},l=()=>p(()=>r(_("cancelled","authorization cancelled","authorization_cancelled"))),c=this.callbacks.subscribe(f=>{let h;try{h=new URL(f)}catch{return}if(h.origin!==this.redirect.origin||h.pathname!==this.redirect.pathname||h.searchParams.get("state")!==e)return;if(h.searchParams.get("error"))return p(()=>r(_("forbidden","access was not approved","authorization_denied")));let b=h.searchParams.get("code");if(!b)return p(()=>r(_("unavailable","the authorization callback has no code","authorization_callback")));p(()=>s(b))}),d=setTimeout(()=>p(()=>r(_("cancelled","authorization timed out","authorization_timed_out"))),o),u=setInterval(()=>{let f=!1;try{f=t.closed===!0}catch{f=!1}if(!f){a=null;return}a??=Date.now(),Date.now()-a>=3e3&&p(()=>r(_("cancelled","the authorization window was closed","authorization_cancelled")))},500);i.signal?.addEventListener("abort",l,{once:!0}),i.signal?.aborted&&l()})}async saveTokens(e,t){let i=e.body;if(e.status!==200||!i)throw e.status===400&&i&&typeof i.error=="string"&&i.error==="invalid_grant"?_("unauthenticated","the grant is no longer valid","grant_invalid"):e.status===400?hn("sync_required"):_("unavailable",`token request failed (${e.status})`,"token_error");let o=i.access_token,s=i.refresh_token,r=i.collection_id,a=i.expires_in,p=i.refresh_expires_in;if(typeof o!="string"||typeof s!="string"||typeof r!="string"||!ao.test(r)||typeof a!="number"||!(a>0)||typeof p!="number"||!(p>0))throw _("unavailable","invalid token response","token_response");let l=r.toLowerCase();if(t.collection&&t.collection.toLowerCase()!==l)throw _("forbidden","a different collection was approved","collection_mismatch");if(t.previous&&t.previous.collection!==l)throw _("unavailable","the token names another collection","token_response");let c=t.previous?.refreshKey??await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]),d=Ih(12),u=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:d,additionalData:this.aad(l)},c,new TextEncoder().encode(s))),f=t.noise??{privateKey:t.previous.noisePrivateKey,publicKey:t.previous.noisePublicKey},h=t.signing??t.previous?.signingPrivateKey,m={version:1,collection:l,noisePrivateKey:f.privateKey,noisePublicKey:f.publicKey,refreshKey:c,refresh:BC(d,u),refreshExpiresAt:Date.now()+p*1e3,...h?{signingPrivateKey:h}:{},...t.previous?.owner?{owner:t.previous.owner}:{}},b=this.epoch;return await this.withLock(l,"commit",async()=>{let w=await this.store();if(b!==this.epoch||t.previous&&!xw(t.previous,await w.getGrant(l)))throw Yi();t.check?.(),await w.putGrant(m);let g=await w.getGrant(l);if(!g||!Rh(m.noisePublicKey,g.noisePublicKey)||!Rh(m.refresh,g.refresh))throw Yi();t.check?.(),this.tokens.set(l,{access:o,expiresAt:Date.now()+a*1e3,collection:l,owner:g.owner,noisePublicKey:g.noisePublicKey.slice()}),this.forgotten.delete(l)}),l}aad(e){return new TextEncoder().encode(`mdbase.app-grant.v2\0${this.cpOrigin}\0${this.owner()}\0${e}`)}async accessToken(e,t=!1){let i=await this.heldGrant(e),o=this.tokens.get(e);if(!t&&o&&Za(i,o)&&o.expiresAt-Date.now()>6e4)return o.access;let s=this.refreshing.get(e);if(s&&xw(i,s.grant)){let p=await s.work;return await this.assertCurrent(i),p}let r=this.withLock(e,"refresh",async()=>{let p=await this.assertCurrent(i);return this.refresh(e,p)}),a={grant:i,work:r};this.refreshing.set(e,a);try{let p=await r;return await this.assertCurrent(i),p}finally{this.refreshing.get(e)===a&&this.refreshing.delete(e)}}withLock(e,t,i){return yM(`mdbase.app-grant.${t}:${JSON.stringify([this.cpOrigin,this.owner(),e])}`,i)}async heldGrant(e){let t=await(await this.store()).getGrant(e);if(!t)throw hn("sync_required");return{...t,noisePublicKey:t.noisePublicKey.slice(),refresh:t.refresh.slice()}}async assertCurrent(e){let t=await(await this.store()).getGrant(e.collection);if(!Za(e,t))throw Yi();return t}async refresh(e,t){if(t.refreshExpiresAt<=Date.now())throw hn("sync_required");let i;try{let p=await crypto.subtle.decrypt({name:"AES-GCM",iv:t.refresh.slice(0,12),additionalData:this.aad(e)},t.refreshKey,t.refresh.slice(12));i=new TextDecoder().decode(p)}catch{throw _("unauthenticated","the stored grant could not be read","grant_storage")}let o=await this.register(),s=new URLSearchParams({grant_type:"refresh_token",refresh_token:i,client_id:o.id}),r=t.signingPrivateKey?await uM(t.signingPrivateKey,"/oauth/token",s.toString(),i):{},a=await this.request("/oauth/token",{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",...r},body:s});try{await this.saveTokens(a,{previous:t})}catch(p){throw X(p,"unauthenticated")&&p.reason==="grant_invalid"&&await this.withLock(e,"commit",async()=>{let l=await this.store();if(!xw(t,await l.getGrant(e)))throw Yi();await l.deleteGrant(e),this.forgotten.add(e);let c=this.tokens.get(e);c&&Za(t,c)&&this.tokens.delete(e)}),p}return a.body.access_token}async route(e,t){for(let i=0;;i++){let o=await this.accessToken(e,i>0),s=await this.request(`/v1/next/collections/${encodeURIComponent(e)}/route`,{headers:{authorization:`Bearer ${o}`}},t);if(s.status===401&&i===0)continue;if(s.status===401)throw _("unauthenticated","the control plane refused the access token");if(s.status===409)throw _("unauthenticated","this app's key is not registered with its grant","client_key_required");if(s.status!==200||!s.body)throw _("unavailable",`control plane answered ${s.status}`,"control_error");let r=s.body;if(typeof r.collection!="string"||r.collection.toLowerCase()!==e||!Array.isArray(r.targets))throw _("unauthenticated","the route does not match this collection's grant","route_mismatch");let p=Fn(r.availability)??(Us(r,null).length?{state:"available"}:{state:"unavailable",reason:r.reason==="no_device_registered"?"no_device_registered":"device_offline"});return{token:o,route:r,availability:p}}}async verifiedStoredNativeGrant(e){let t=await this.register(),i=await(await this.store()).getGrant(e.collection_id);return!!i&&e.application_id===t.id&&e.application_origin===this.declaration.origin&&i.owner===this.owner()&&sn(i.noisePublicKey)===e.client_noise_public_key}async collections(e={}){let t=await(await this.store()).listGrants(),i=[];for(let s of t)(e.bindings===void 0||e.bindings.some(r=>r.collection_id===s.collection&&r.application_origin===this.declaration.origin&&sn(s.noisePublicKey)===r.client_noise_public_key))&&i.push(s);let o=new Set(i.map(s=>s.collection));for(let s of i){let r;try{r=await this.accessToken(s.collection)}catch(l){if(X(l)&&(l.code==="unauthenticated"&&l.reason==="grant_invalid"||l.code==="forbidden"&&l.reason==="sync_required"))continue;throw l}await this.assertCurrent(s);let a=await this.request("/v1/next/apps/collections",{headers:{authorization:`Bearer ${r}`}},e.signal);if(await this.assertCurrent(s),a.status===401)throw await this.withLock(s.collection,"commit",async()=>{await this.assertCurrent(s);let l=this.tokens.get(s.collection);if(l?.access!==r||!Za(s,l))throw Yi();this.tokens.delete(s.collection)}),_("unauthenticated","the control plane refused the collection listing token");if(a.status!==200||!Array.isArray(a.body?.collections))throw _("unavailable",`control plane answered ${a.status}`,"control_error");let p=[];for(let l of a.body.collections){let c=typeof l.collection=="string"?l.collection.toLowerCase():"";if(!ao.test(c)||p.some(f=>f.collectionId===c))continue;let d=Fn(l.availability);if(l.state!=="synced_e2e"&&!d)continue;let u=o.has(c)?d??{state:"opening"}:{state:"unavailable",reason:"sync_required"};p.push(Object.freeze({collectionId:c,displayName:typeof l.name=="string"?l.name:"Collection",operations:Object.freeze(Array.isArray(l.operations)?l.operations.filter(f=>typeof f=="string"):[]),availability:Object.freeze(u),role:oM.has(l.role)?l.role:null}))}return p}return[]}async availability(e,t={}){let i=e.toLowerCase();try{return(await this.route(i,t.signal)).availability}catch(o){if(X(o)&&o.details instanceof Map&&typeof o.details.get("availability")=="string")return Fn({state:"unavailable",reason:o.details.get("availability")});throw o}}async waitForAvailable(e,t={}){let i=Date.now()+Math.min(Math.max(t.timeoutMs??6e4,0),6e5),o=Math.max(t.intervalMs??3e3,1e3),s=null;for(;;){if(t.signal?.aborted)throw _("cancelled","wait cancelled");let r=await this.availability(e,t.signal?{signal:t.signal}:{});if((!s||r.state!==s.state||r.state==="unavailable"&&s.state==="unavailable"&&r.reason!==s.reason)&&t.onAvailability?.(r),s=r,r.state==="available"||r.state==="unavailable"&&(r.reason==="sync_required"||r.reason==="access_removed"))return r;let a=i-Date.now();if(a<=0)return r;await new Promise(p=>{let l=setTimeout(c,Math.min(o,a));function c(){clearTimeout(l),t.signal?.removeEventListener("abort",c),p()}t.signal?.addEventListener("abort",c,{once:!0})})}}connector(e){let t=e.toLowerCase();if(!ao.test(t))throw _("invalid_request","collection must be a UUID");let i=null,o=this.options.webSocket,s;return Ad({description:`app-grant:${t}`,open:async(r,a)=>{let p=await(s??=this.heldGrant(t));await this.assertCurrent(p);let c=await Li({description:`app-grant:${t}`,staticKey:hM(p),target:async d=>{await this.assertCurrent(p);let{token:u,route:f,availability:h}=await this.route(t,d);if(await this.assertCurrent(p),h.state==="unavailable")throw hn(h.reason);if(!ao.test(f.grant))throw _("unauthenticated","the route names no grant","route_mismatch");let m=Us(f,i)[0];if(!m)throw hn("device_offline");let b=new Uint8Array(32);for(let w=0;w<32;w++)b[w]=parseInt(m.noise_pk.slice(2*w,2*w+2),16);return{prologue:Mi(U(m.relay_collection),U(f.grant),U(m.device)),remoteStatic:b,device:m.device,openCarrier:async w=>{await this.assertCurrent(p);let g=await js(m.url,{accessToken:u,collection:m.relay_collection,grant:f.grant,device:m.device,devicePublicKey:b},o,w);try{return await this.assertCurrent(p),g}catch(y){throw g.close(),y}}}}}).open(r,a);try{await this.assertCurrent(p)}catch(d){throw c.port.close(),d}return q_(c.port,p),i=c.device??null,c},get target(){return i}})}people(e,t){let i=e.toLowerCase();if(!ao.test(i))throw _("invalid_request","collection must be a UUID");return new Ur(t,OC(i,{cpOrigin:this.cpOrigin,fetch:this.fetcher,accessToken:(o,s)=>this.accessToken(o,s),holds:o=>!this.forgotten.has(o)}))}setup(e){let t=eo(this.declaration),i,o=async()=>{let r=e.currentSession(),a=r&&M_(r);if(!a||a.collection!==e.collection||(i??=a,!Za(i,a)))throw Yi();return i};return TC({assertCurrent:async()=>this.assertCurrent(await o()),journal:jC({store:()=>this.store(),grant:o,assertCurrent:r=>this.assertCurrent(r),aad:this.aad(e.collection)}),client:e,manifest:t.manifest,operations:t.operations})}async forget(e,t={}){let i=e.toLowerCase(),o=t.expectedNoisePublicKey;await this.withLock(i,"commit",async()=>{let s=await this.store(),r=await s.getGrant(i);if(o!==void 0&&r&&sn(r.noisePublicKey)!==o)throw Yi();await s.deleteGrant(i),this.forgotten.add(i),this.tokens.delete(i)})}async forgetAllGrants(){this.epoch++;let e=await this.store(),t=[];try{t=(await e.listGrants()).map(o=>o.collection).sort()}catch{}for(let o of t)this.forgotten.add(o);let i=async(o,s)=>o.length?this.withLock(o[0],"commit",()=>i(o.slice(1),s)):s();await i(t,async()=>{if(this.tokens.clear(),typeof e.clearGrants=="function"){await e.clearGrants();return}for(let o of await e.listGrants())await e.deleteGrant(o.collection),this.forgotten.add(o.collection);if((await e.listGrants()).length)throw _("unavailable","grant storage could not be cleared","grant_storage")}),this.tokens.clear()}}});function JC(n){let e=0,t=0;try{let i=n?.records.status.pending;e=typeof i=="number"&&i>0?i:0}catch{e=0}try{t=n?.records.ledger?.getSnapshot().pending.length??0}catch{t=0}return Math.max(e,t)}function XC(n=0){let e=n===1?"1 change hasn't":n>1?`${n} changes haven't`:"Some changes haven't";return _("conflict",`${e} reached mdbase yet. Wait for them to finish, or sign out anyway and lose them on this device.`,{reason:"sign_out_pending_writes",details:n})}var ZC=I(()=>{"use strict";re()});function yp(n,e){return new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})})}var Ow=I(()=>{"use strict"});function Th(n,e){if(typeof n!="string"||!e.test(n))throw de("invalid_request","timer_input");return encodeURIComponent(n)}function co(n,e){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join())throw de("invalid_request","timer_input");return n}function QC(n){let e=co(n,"id,fire_at");if(Th(e.id,Rw),typeof e.fire_at!="string"||!/^\d{4}-\d{2}-\d{2}T/.test(e.fire_at)||!Number.isFinite(Date.parse(e.fire_at)))throw de("invalid_request","timer_input");return{id:e.id,fire_at:e.fire_at}}function Ew(n){if(typeof n!="string"||!n.length||n.length>100)throw de("invalid_request","timer_input")}function SM(n,e,t){let i=`${n}/${Th(t[0],kM)}`;if(e==="list"&&t.length===1)return{path:i,method:"GET",write:!1};if(e==="put"&&t.length===3){let o=co(t[2],"criterion_id,fire_at");return Ew(o.criterion_id),QC({id:t[1],fire_at:o.fire_at}),{path:`${i}/${Th(t[1],Rw)}`,method:"PUT",body:o,write:!0}}if(e==="cancel"&&t.length===3){let o=t[2];if(o!==void 0&&(!Number.isSafeInteger(o)||o<1))throw de("invalid_request","timer_input");return{path:`${i}/${Th(t[1],Rw)}${o===void 0?"":`?generation=${o}`}`,method:"DELETE",write:!0}}if((e==="reconcile"||e==="reconcileWithReceipt")&&t.length===2){let o=co(t[1],`criterion_id,timers${e==="reconcileWithReceipt"?",recovery":""}`);if(Ew(o.criterion_id),!Array.isArray(o.timers)||o.timers.length>1e4)throw de("invalid_request","timer_input");let s=o.timers.map(QC);if(new Set(s.map(r=>r.id)).size!==s.length)throw de("invalid_request","timer_input");if(e==="reconcileWithReceipt"){let r=co(o.recovery,"protocol_version,operation_id,expected_revision");if(r.protocol_version!==1||typeof r.operation_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(r.operation_id)||!Number.isSafeInteger(r.expected_revision)||r.expected_revision<0||r.expected_revision>=Number.MAX_SAFE_INTEGER)throw de("invalid_request","timer_input")}return{path:`${i}/reconcile`,method:"POST",body:{...o,timers:s},write:!0}}if(e==="lookupOperation"&&t.length===2&&typeof t[1]=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(t[1]))return{path:`${i}/operations/${t[1]}`,method:"GET",write:!1};throw de("invalid_request","timer_input")}function tI(n,e){let t=eI(e.scope),i=e.generation,o=`/v1/next/collections/${e.scope.collection}/background-grants/${e.grantId}/timers`,s=!1,r=0,a=null,p=null,l=()=>{if(s||e.signal.aborted||!e.isCurrent())throw de("unauthenticated","timer_fenced")},c=()=>{if(p)return p;s=!0,e.signal.removeEventListener("abort",d),a?.ctrl.abort();try{n.postMessage([1,t,i,"close"])}finally{n.removeEventListener("message",u),n.close()}return p=Promise.resolve().then(async()=>{await a?.work})},d=()=>{c()},u=f=>{let h=f.data;if(!Array.isArray(h)||h[0]!==1||h[1]!==t||h[2]!==i){c();return}if(h.length===4&&h[3]==="close"){c();return}if(h.length===5&&h[4]==="cancel"&&Number.isSafeInteger(h[3])&&h[3]>0){a&&a.id===h[3]&&a.ctrl.abort();return}if(h.length!==6||!Number.isSafeInteger(h[3])||h[3]<=r||a||typeof h[4]!="string"||!Array.isArray(h[5])){c();return}let m=h[3],b=h[4],w=h[5],g=new AbortController;r=m;let y=!1,v=b!=="list"&&b!=="lookupOperation",A=Promise.resolve().then(async()=>{let k=setTimeout(()=>g.abort(),1e4),S,x,P=new Uint8Array(gp),C=0,E=()=>{x?.cancel().catch(()=>{})};g.signal.addEventListener("abort",E,{once:!0});try{l(),g.signal.throwIfAborted();let O=o.slice(0,-7)+"/notifications/channels",L,z,ee=null;if(b==="vapid"&&w.length===0){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");e.journal.read(),L={path:"/v1/notifications/vapid-public-key",method:"GET",write:!1}}else if(b==="registerChannel"&&w.length===1){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");let Y=w[0],te=co(Y,`kind,criteria,${Y?.kind==="web_push"?"subscription":"token"}`);if(!["web_push","fcm"].includes(te.kind)||!Array.isArray(te.criteria)||!te.criteria.length||te.criteria.length>100||(te.criteria.forEach(Ew),new Set(te.criteria).size!==te.criteria.length))throw de("invalid_request","timer_input");let ze;if(te.kind==="fcm"){if(typeof te.token!="string"||te.token.length<16||te.token.length>4096||/[\s\u0000-\u001f\u007f]/.test(te.token))throw de("invalid_request","timer_input");ze={transport:"fcm",token:te.token}}else{let $=co(te.subscription,"endpoint,expirationTime,keys"),J=co($.keys,"p256dh,auth");if(typeof $.endpoint!="string"||$.endpoint.length>2048||typeof J.p256dh!="string"||typeof J.auth!="string"||!/^[A-Za-z0-9_-]{87}$/.test(J.p256dh)||!/^[A-Za-z0-9_-]{22}$/.test(J.auth))throw de("invalid_request","timer_input");let be;try{be=new URL($.endpoint)}catch{throw de("invalid_request","timer_input")}if(be.protocol!=="https:"||be.username||be.password||be.hash||be.href!==$.endpoint||$.expirationTime!==null&&(!Number.isFinite($.expirationTime)||$.expirationTime<0))throw de("invalid_request","timer_input");ze={subscription:$}}L={path:O,method:"POST",write:!0,body:{installation_id:e.scope.installation,criteria:[...te.criteria].sort(),...ze}};let mt=new TextEncoder().encode(JSON.stringify(L.body)),j;try{j=[...new Uint8Array(await crypto.subtle.digest("SHA-256",mt))].map($=>$.toString(16).padStart(2,"0")).join("")}finally{mt.fill(0)}l(),g.signal.throwIfAborted();let K=e.journal.read();if(ee=K,K?.pending)throw de("outcome_unknown","timer_channel_reapproval_required");z={grantId:e.grantId,kind:te.kind,targetDigest:j,channelId:K?.channelId??null,pending:"register"}}else if(b==="unregisterChannel"&&w.length===1&&["web_push","fcm"].includes(w[0])){if(!e.journal)throw de("upgrade_required","native_timer_channel_journal_unavailable");let Y=e.journal.read();if(ee=Y,!Y){n.postMessage([1,t,i,m,!0,void 0]);return}if(Y.pending==="register")throw de("outcome_unknown","timer_channel_reapproval_required");if(Y.kind!==w[0]||!Y.channelId)throw de("invalid_request","timer_channel_kind");z={...Y,pending:"delete"},L={path:`${O}/${Y.channelId}`,method:"DELETE",write:!0}}else L=SM(o,b,w);v=L.write;let V=L.body===void 0?void 0:JSON.stringify(L.body);if(V&&new TextEncoder().encode(V).length>gp)throw de("invalid_request","timer_input");let ne=await e.bearer();if(l(),g.signal.throwIfAborted(),typeof ne!="string"||!/^(idev_|ct_)[A-Za-z0-9_-]{43}$/.test(ne))throw de("unauthenticated","timer_credential");z&&(await e.journal.write(z),l(),g.signal.throwIfAborted()),y=v;let G=e.fetch;if(S=await G(`${e.cpOrigin}${L.path}`,{method:L.method,body:V,headers:{authorization:`Bearer ${ne}`,...V===void 0?{}:{"content-type":"application/json"}},credentials:"omit",redirect:"error",cache:L.method==="GET"?"no-store":"default",referrerPolicy:"no-referrer",signal:g.signal}),l(),g.signal.throwIfAborted(),S.redirected)throw de("unavailable","timer_response");if(b==="unregisterChannel"&&S.status===204){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(S.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"||!S.body)throw de("unavailable","timer_response");let W=S.headers.get("content-length");if(W&&/^\d+$/.test(W)&&Number(W)>gp)throw de("unavailable","timer_response");for(x=S.body.getReader();;){let Y=await x.read();try{if(l(),g.signal.throwIfAborted(),Y.done)break;if(C+Y.value.length>gp)throw de("unavailable","timer_response");P.set(Y.value,C),C+=Y.value.length}finally{Y.value?.fill(0)}}let Z=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(P.subarray(0,C)));if(b==="unregisterChannel"&&S.status===404&&Z?.error?.code==="channel_not_found"){await e.journal.write(null),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,void 0]);return}if(!S.ok)throw S.status>=500?de("unavailable","timer_http"):Z?.error?.operation_outcome==="unknown"?de("outcome_unknown","timer_write_unknown"):(z&&(await e.journal.write(ee),l(),g.signal.throwIfAborted()),y=!1,_(S.status===401||S.status===403?"unauthenticated":S.status===409?"conflict":S.status===404?"upgrade_required":S.status===429?"rate_limited":"invalid_request","Native timer request was refused.","timer_refused"));if(l(),g.signal.throwIfAborted(),b==="registerChannel"){if(typeof Z?.channel_id!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(Z.channel_id))throw de("unavailable","timer_channel_response");await e.journal.write({...z,channelId:Z.channel_id,pending:null}),l(),g.signal.throwIfAborted(),n.postMessage([1,t,i,m,!0,{channelId:Z.channel_id,installationId:e.scope.installation,criteria:L.body.criteria}])}else n.postMessage([1,t,i,m,!0,Z])}catch(O){let L=y?de("outcome_unknown","timer_write_unknown"):O instanceof se?O:de(g.signal.aborted?"cancelled":"unavailable","timer_request");s||n.postMessage([1,t,i,m,!1,L.code,L.reason])}finally{clearTimeout(k),g.signal.removeEventListener("abort",E),P.fill(0),(x?.cancel()??S?.body?.cancel())?.catch(()=>{}),x?.releaseLock(),a?.id===m&&(a=null)}});a={id:m,ctrl:g,work:A}};n.addEventListener("message",u),n.start(),e.signal.addEventListener("abort",d,{once:!0});try{l()}catch(f){throw c(),f}return Object.freeze({close:c})}function nI(n,e,t){let i=eI(e.scope),o=e.generation,s=!1,r=0,a=null,p=()=>{if(s)return;s=!0,t.signal.removeEventListener("abort",p);let y=a;a=null,y?.signal?.removeEventListener("abort",y.abort),y?.reject(de(y.write?"outcome_unknown":"cancelled","timer_port_closed"));try{n.postMessage([1,i,o,"close"])}finally{n.removeEventListener("message",l),n.close(),t.onClose()}},l=y=>{let v=y.data;if(!Array.isArray(v)||v[0]!==1||v[1]!==i||v[2]!==o){p();return}if(v.length===4&&v[3]==="close"){p();return}let A=a;if(!A||v[3]!==A.id||!(v.length===6&&v[4]===!0||v.length===7&&v[4]===!1&&typeof v[5]=="string"&&xr(v[5]))){p();return}a=null,A.signal?.removeEventListener("abort",A.abort),v[4]?A.resolve(v[5]):A.reject(_(v[5],"Native timer request could not complete.",typeof v[6]=="string"?v[6]:void 0))},c=(y,v,A,k=!1)=>{if(s||t.signal.aborted||A.signal?.aborted)return Promise.reject(de("cancelled","timer_port_closed"));if(a||d&&!k)return Promise.reject(de("unavailable","timer_port_busy"));if(r>=Number.MAX_SAFE_INTEGER)return p(),Promise.reject(de("unavailable","timer_port_closed"));let S=++r,x=y!=="list"&&y!=="lookupOperation"&&y!=="vapid";return new Promise((P,C)=>{let E=()=>{try{n.postMessage([1,i,o,S,"cancel"])}catch{p()}C(de(x?"outcome_unknown":"cancelled","timer_request_cancelled"))};a={id:S,write:x,resolve:P,reject:C,abort:E,signal:A.signal},A.signal?.addEventListener("abort",E,{once:!0});try{if(new TextEncoder().encode(JSON.stringify(v)).length>gp)throw de("invalid_request","timer_input");n.postMessage([1,i,o,S,y,v])}catch(O){a=null,A.signal?.removeEventListener("abort",E),C(O)}})},d=!1,u=()=>{if(s||t.signal.aborted)throw de("cancelled","timer_port_closed")},f=y=>{if(!y?.length||y.length>100||y.some(v=>typeof v!="string"||!v.length||v.length>100)||new Set(y).size!==y.length)throw de("invalid_request","timer_channel_criteria_required");return[...y].sort()},h=(y,v)=>{let A=co(y,"channelId,installationId,criteria");if(typeof A.channelId!="string"||A.installationId!==e.scope.installation||JSON.stringify(A.criteria)!==JSON.stringify(v))throw de("outcome_unknown","timer_channel_response");return{channelId:A.channelId,installationId:e.scope.installation,criteria:[...v]}},m=async(y,v)=>{if(u(),y.signal?.throwIfAborted(),d||a)throw de("unavailable","timer_port_busy");d=!0;try{return await v()}finally{d=!1}},b=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw de("invalid_request","timer_channel_installation");let A=y.serviceWorker;if(!A?.pushManager||typeof A.pushManager.getSubscription!="function"||typeof A.pushManager.subscribe!="function")throw de("invalid_request","timer_push_platform");let k=await c("vapid",[],y,!0);if(u(),y.signal?.throwIfAborted(),typeof k.public_key!="string"||!/^[A-Za-z0-9_-]{87}$/.test(k.public_key))throw de("unavailable","timer_vapid_response");let S=atob(k.public_key.replace(/-/g,"+").replace(/_/g,"/")),x=Uint8Array.from(S,E=>E.charCodeAt(0));if(x.length!==65||x[0]!==4||btoa(S).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")!==k.public_key)throw de("unavailable","timer_vapid_response");let P=await A.pushManager.getSubscription();if(u(),y.signal?.throwIfAborted(),P){let E=P.options.applicationServerKey;if(!E||E.byteLength!==x.length||new Uint8Array(E).some((O,L)=>O!==x[L]))throw de("invalid_request","timer_push_key_changed")}if(!P&&(P=await A.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:x}),s||t.signal.aborted||y.signal?.aborted))throw await P.unsubscribe(),de("cancelled","timer_port_closed");let C=P.toJSON();return h(await c("registerChannel",[{kind:"web_push",criteria:v,subscription:{endpoint:C.endpoint,expirationTime:C.expirationTime??null,keys:C.keys}}],y,!0),v)}),w=y=>m(y,async()=>{let v=f(y.criteria);if(y.installationId!==void 0&&y.installationId!==e.scope.installation)throw de("invalid_request","timer_channel_installation");return{...h(await c("registerChannel",[{kind:"fcm",criteria:v,token:y.token}],y,!0),v),transport:"fcm"}}),g=(y,v)=>m(v,async()=>{if(await c("unregisterChannel",["web_push"],v,!0),u(),v.signal?.throwIfAborted(),y){let A=await y.pushManager.getSubscription();u(),v.signal?.throwIfAborted(),A&&await A.unsubscribe(),u(),v.signal?.throwIfAborted()}});return n.addEventListener("message",l),n.start(),t.signal.addEventListener("abort",p,{once:!0}),t.signal.aborted&&p(),Object.freeze({list:(y,v)=>c("list",[y],v),put:(y,v,A,k)=>c("put",[y,v,A],k),cancel:(y,v,A,k)=>c("cancel",[y,v,A],k),reconcile:(y,v,A)=>c("reconcile",[y,v],A),reconcileWithReceipt:(y,v,A)=>c("reconcileWithReceipt",[y,v],A),lookupOperation:(y,v,A)=>c("lookupOperation",[y,v],A),registerWebPush:b,unregisterWebPush:g,registerFcm:w,unregisterFcm:y=>m(y,async()=>{await c("unregisterChannel",["fcm"],y,!0)}),close:p})}var kM,Rw,gp,de,eI,qw=I(()=>{"use strict";re();kM=/^[A-Za-z0-9._-]{1,64}$/,Rw=/^[A-Za-z0-9._:-]{1,128}$/,gp=2*1024*1024,de=(n,e)=>_(n,"Native timer request could not complete.",e),eI=n=>JSON.stringify([n.account,n.installation,n.collection])});var el,PM,xM,po,an,tl,Mh=I(()=>{"use strict";el="original-join",PM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,xM="00000000-0000-0000-0000-000000000000",po=class extends Error{constructor(t){super(`app collection join: ${t}`);this.reason=t;this.name="AppCollectionJoinError"}reason},an=(n="recovery_required")=>new po(n),tl=class{options;key;busy=!1;constructor(e){let t=Object.freeze({account:e.scope.account,installation:e.scope.installation,collection:e.scope.collection});if(Object.values(t).some(i=>typeof i!="string"||!PM.test(i)||i===xM)||typeof e.databaseName!="string"||!e.databaseName.length||e.databaseName.length>256||/[\u0000-\u001f\u007f]/.test(e.databaseName)||typeof e.isCurrent!="function")throw an("binding");this.options=Object.freeze({databaseName:e.databaseName,scope:t,isCurrent:e.isCurrent}),this.key=JSON.stringify([t.account,t.installation,t.collection])}check(e){if(e.aborted||this.options.isCurrent()!==!0)throw an("fenced")}marker(e){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).sort().join()!=="account,collection,installation,phase,version")throw an();let t=e;if(t.version!==1||t.phase!=="attempted"&&t.phase!=="completed"||Object.entries(this.options.scope).some(([i,o])=>t[i]!==o))throw an();return t}open(e){if(this.check(e),!globalThis.indexedDB)throw an();return new Promise((t,i)=>{let o=indexedDB.open(this.options.databaseName,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(an())};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(this.check(e),s||o.result.objectStoreNames.length)throw an();o.result.createObjectStore(el)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{r();try{if(this.check(e),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(el))throw an();t(o.result)}catch{o.result.close(),i(an())}}})}async change(e,t){if(this.check(t),this.busy)throw an("busy");this.busy=!0;let i=null;try{return i=await this.open(t),this.check(t),await new Promise((o,s)=>{this.check(t);let r=i.transaction(el,"readwrite",{durability:"strict"}),a=null,p,l=()=>{try{r.abort()}catch{}},c=()=>t.removeEventListener("abort",l);t.addEventListener("abort",l,{once:!0}),r.onabort=r.onerror=()=>{c(),s(p??an())},r.oncomplete=()=>{c();try{if(this.check(t),!a)throw an();o(Object.freeze(a))}catch{s(an())}};let d=r.objectStore(el),u=d.get(this.key);u.onsuccess=()=>{try{this.check(t);let f=u.result;if(f===void 0){if(e!=="prepare")throw an();d.add({version:1,...this.options.scope,phase:"attempted"},this.key),a={outcomeMode:"fresh",phase:"attempted"}}else{let h=this.marker(f);e==="complete"&&h.phase!=="completed"&&d.put({...h,phase:"completed"},this.key),a={outcomeMode:"existing",phase:e==="complete"?"completed":h.phase}}}catch(f){p=f,l()}}})}catch(o){throw o instanceof po?o:an()}finally{i?.close(),this.busy=!1}}prepare(e){return this.change("prepare",e.signal)}async syncedBefore(e){return await this.synced("read",e.signal)===!0}async markSynced(e){await this.synced("mark",e.signal)}async synced(e,t){let i=null;try{i=await this.open(t),this.check(t);let o=JSON.stringify([this.options.scope.account,this.options.scope.installation,this.options.scope.collection,"synced"]);return await new Promise(s=>{let r=i.transaction(el,e==="mark"?"readwrite":"readonly"),a=!1;r.onabort=r.onerror=()=>s(!1),r.oncomplete=()=>s(e==="mark"||a);let p=r.objectStore(el);if(e==="mark")p.put({version:1,synced:!0},o);else{let l=p.get(o);l.onsuccess=()=>{let c=l.result;a=!!c&&c.version===1&&c.synced===!0}}})}catch{return!1}finally{i?.close()}}async complete(e){await this.change("complete",e.signal)}}});function iI(n){let e=Object.freeze({...n,setupJournal:Object.freeze({...n.setupJournal})}),t=$x(e.sql);if(typeof e.handoff!="function")throw Ji("binding");let i=new Set;return async o=>{let s=JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection]);if(i.has(s))throw Ji("fenced");i.add(s);let{host:r,installation:a,signal:p,collection:l,setupPolicy:c}=o,d=a.isCurrent,u=l.displayName,f=he=>{if(Z())try{o.onProgress?.(he)}catch{}},h=Object.freeze({account:o.scope.account,installation:o.scope.installation,collection:o.scope.collection}),m=JSON.stringify([h.account,h.installation,h.collection]),b=new AbortController,w=!1,g=!0,y=null,v=null,A=null,k=null,S=null,x=null,P=null,C=null,E="setup_required",O=null,L=!1,z=null,ee=!1,V=null,ne=new Map,G=null,W=new Set,Z=()=>{try{return!w&&!b.signal.aborted&&!p.aborted&&o.signal===p&&o.host===r&&o.installation===a&&a.isCurrent===d&&d.call(a)===!0&&o.collection===l&&o.setupPolicy===c&&a.scope.account===h.account&&a.scope.installation===h.installation&&JSON.stringify([o.scope.account,o.scope.installation,o.scope.collection])===m&&l.collectionId===h.collection}catch{return!1}},Y=()=>{if(!Z())throw Ji("fenced")},te=()=>{for(let he of[...W])try{he()}catch{}},ze=()=>{if(A)return A;w=!0,E="setup_required",y!==null&&clearTimeout(y),y=null,z!==null&&clearTimeout(z),z=null;try{O?.close()}catch{}O=null;try{r.onLogWork?.(null)}catch{}p.removeEventListener("abort",mt);let he=[...ne.values()];return ne.clear(),A=Promise.resolve().then(async()=>{let me=!1;try{await S?.close()}catch{me=!0}try{await k?.close()}catch{me=!0}for(let Fe of he){try{await Fe.timers?.close()}catch{me=!0}try{await Fe.control.close()}catch{me=!0}try{Fe.data.port1.postMessage([1,JSON.stringify([h.account,h.installation,h.collection]),"close"])}catch{me=!0}for(let Tn of[Fe.data.port1,Fe.data.port2,Fe.command.port1,Fe.command.port2])try{Tn.close()}catch{me=!0}}try{P?.port1.postMessage([1,JSON.stringify([h.account,h.installation,h.collection]),"close"])}catch{me=!0}for(let Fe of[P?.port1,P?.port2,C?.port1,C?.port2])try{Fe?.close()}catch{me=!0}await v?.catch(()=>{});try{x?.close()}catch{me=!0}if(me)throw Ji("unavailable");W.clear(),i.delete(s)}),b.abort(),te(),A},mt=()=>{ze().catch(()=>{})},j=null,K=0,$=()=>{let he=St(G);if(he!==null)return he==="collection_migrating"?Math.min(6e5,Math.max(5e3,G?.retryAfterMs??3e4)):3e5;let me=Math.min(6e4,1e3*2**Math.min(Math.max(K,ye),6));return j?.kind==="offline"?qe?me:null:j?.kind==="server_busy"||j?.kind==="rate_limited"?j.retryAfterMs??me:ye||j?me:250},J=()=>{let he=null;try{he=r.serverProblem()}catch{he=null}let me=null;try{me=r.transportHealth()}catch{me=null}K=me?K+1:0;let Fe=JSON.stringify(me)===JSON.stringify(j);(he!==G||!Fe)&&(G=he,j=me,te())},be=Number.POSITIVE_INFINITY,ye=0,we=0,et=!1,qe=null,Dt=he=>{let me=he&&typeof he=="object"&&typeof he.code=="string"?he.code:null;try{console.debug("mdbase: sync turn failed",{reason:j?.kind??St(G)??me??"unknown",failures:ye})}catch{}},tt=()=>{if(g||Date.now()-we>=IM)return!1;try{return r.pendingWrites()>0}catch{return!1}},Ve=()=>{if(!Z())return;if(!g&&!tt()&&!ee){v||O?.suspend();return}if(y!==null||v)return;let he=ee?0:$();ee=!1,he!==null&&(y=setTimeout(()=>{if(y=null,!Z())return;let me=g&&Date.now()>=be;me&&(be=Number.POSITIVE_INFINITY);let Fe=v=me?r.wakeCollectionLog({signal:b.signal}):r.driveCollection({signal:b.signal});Fe.then(()=>{v===Fe&&(v=null),ye=0,et=!0,Z()&&J(),qe?.(),Ve()},Tn=>{v===Fe&&(v=null),ye++,Z()&&J(),Dt(Tn),qe?.(),Ve()})},he))},qn=()=>{Z()&&(ee=!0,y!==null&&clearTimeout(y),y=null,Ve())},kr=he=>{L!==he&&(L=he,te())},xi=he=>{if(z!==null&&clearTimeout(z),z=null,he){kr(!1);return}if(!O?.available){kr(V===null);return}O.suspended||(z=setTimeout(()=>{z=null,Z()&&!O?.live&&kr(!0)},CM))},Sr=he=>{if(Y(),he){(!O?.live||j?.kind==="offline")&&(be=0),ye=0,K=0,j?.kind==="offline"&&(ee=!0);try{O?.resume(),O&&!O.live&&xi(!1)}catch{}}else g&&(we=Date.now());g=he,y!==null&&clearTimeout(y),y=null,Ve()},as=()=>new Promise((he,me)=>{let Fe,Tn=null,Mn=nt=>{qe=null,Tn!==null&&clearTimeout(Tn),b.signal.removeEventListener("abort",Ci),nt?me(nt):he()},Ci=()=>Mn(Ji("fenced"));b.signal.addEventListener("abort",Ci,{once:!0}),qe=()=>{if(!Z()){Mn(Ji("fenced"));return}if(V!==null){Mn();return}let nt="first_turn";if(et)try{nt=typeof r.initialSync=="function"?r.initialSync():null}catch{nt="unavailable"}if(nt===null||nt==="offline"||j?.kind==="offline"){Mn();return}let ri=null;if(nt==="waiting_for_key"&&typeof r.keyWaitDetail=="function")try{ri=r.keyWaitDetail()}catch{ri=null}let ls=nt+(ri?JSON.stringify(ri):"");if(ls!==Fe){Fe=ls;try{console.debug("mdbase: waiting for the first sync",{...ri,reason:nt})}catch{}}},Tn=setTimeout(()=>Mn(),OM),qe()});p.addEventListener("abort",mt,{once:!0});try{Y(),x=new Wa({...e.setupJournal,scope:h,isCurrent:Z});let he=new tl({databaseName:e.joinDatabaseName,scope:h,isCurrent:Z}),me=await he.prepare({signal:b.signal});Y(),f("joining"),await r.bootstrapCloudCopy({scope:h,collectionCurrent:Z,purpose:"join",outcomeMode:me.outcomeMode,signal:b.signal,...me.outcomeMode==="existing"?{reconcile:"explicit-unknown-outcome"}:{},fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp,allowNativeLoopbackHttp:e.allowNativeLoopbackHttp}),Y(),await he.complete({signal:b.signal}),Y();let Fe=r.registeredReceipt();if(Fe.installationId!==h.installation)throw Ji("binding");let Tn=null,Mn=async He=>{let Ze=await t(He);return Tn=Ze.ledger??null,Ze};f("opening_store"),await r.openCollectionSql({signal:b.signal,replicaId:Fe.deviceId,endpoint:0,openSql:Mn}),Y(),f("connecting_log");let Ci=Date.now()+RM;for(let He=0;;He++)try{await r.startCollectionLog({signal:b.signal,fetch:e.fetch,allowLoopbackHttp:e.allowLoopbackHttp}),Y();break}catch(Ze){Y();let dt=Ze instanceof ei&&Ze.reason==="unavailable"?Ze.server:null;if(!Pn(dt)||dt.status!==503||dt.code!=="busy"||St(dt)!==null||He+1>=EM)throw Ze;let Ii=dt.retryAfterMs??1e3*2**He;if(Date.now()+Ii>=Ci||(await yp(Ii,b.signal),Y(),Date.now()>=Ci))throw Ze}let nt=await he.syncedBefore({signal:b.signal});Y(),f("syncing"),await r.waitForVerifiedRead({signal:b.signal,cold:!nt,onProgress:f}),Y(),r.onLogWork?.(qn),Ve();try{O=typeof r.openLogPush=="function"?r.openLogPush({push:He=>{Z()&&(r.pushLog(He),qn())},live:xi,ended:He=>{V=He,qn(),xi(!1),qe?.(),te()}}):null}catch{O=null}O?(O.start(),xi(!1)):L=!0,nt&&(f("syncing"),await as()),Y(),f("checking_setup"),he.markSynced({signal:b.signal}).catch(()=>{});let ri=await x.load(b.signal);Y();let ls=ri&&ri.version!==1&&(ri.phase==="attempted"||ri.phase==="confirmed")?"reconcile-original":ri===null&&c==="approved-new-collection"?"approved-new":"inspect",cs=crypto.randomUUID(),uv=e.people===!0?{people:!0}:{},XI={owner:null},fv=(He,Ze,dt,Ii)=>Jx(Ze,{scope:h,generation:cs},{journal:x,resourceSetup:r.attachDataFacade(He),signal:b.signal,isCurrent:Z,ledger:()=>Z()?Tn:null,setupTurn:XI,assess(Pr){Y(),E=Pr,te()},foreground:dt,onProtocolFailure:Ii,...e.people===!0?{peopleAuthority:r.peopleAuthority()}:{}});S=r.openTimersPort({scope:h,generation:cs,signal:b.signal}),Y(),P=new MessageChannel,C=new MessageChannel,k=fv(P.port1,C.port1,Sr,mt),Y();let hv=He=>{if(P&&C&&He.dataPort===P.port2){let dt={data:P,command:C,control:k,timers:S};P=null,C=null,k=null,S=null;try{r.detachDataFacade(dt.data.port1)}catch{}dt.timers?.close().catch(()=>{}),dt.control?.close().catch(()=>{});for(let Ii of[dt.data.port1,dt.command.port1])try{Ii.close()}catch{}return}let Ze=ne.get(He.dataPort);if(Ze){ne.delete(He.dataPort);try{r.detachDataFacade(Ze.data.port1)}catch{}Ze.timers?.close().catch(()=>{}),Ze.control.close().catch(()=>{});for(let dt of[Ze.data.port1,Ze.command.port1])try{dt.close()}catch{}}},ZI=Object.freeze({scope:h,generation:cs,isCurrent:Z,setForeground:Sr,attach:()=>{if(!Z()||V!==null)return null;let He=new MessageChannel,Ze=new MessageChannel,dt=null,Ii=null;try{dt=r.openTimersPort({scope:h,generation:cs,signal:b.signal});let Pr=null;return Ii=fv(He.port1,Ze.port1,()=>{},()=>{Pr&&hv(Pr)}),Pr=Object.freeze({schema:"mdbn-app-collection/1",scope:h,generation:cs,displayName:u,setupMode:ls==="reconcile-original"?ls:"inspect",dataPort:He.port2,controlPort:Ze.port2,...uv,...dt?{timerPort:dt.port}:{}}),ne.set(He.port2,{data:He,command:Ze,control:Ii,timers:dt}),Pr}catch{try{r.detachDataFacade(He.port1)}catch{}dt?.close().catch(()=>{}),Ii?.close().catch(()=>{});for(let Pr of[He.port1,He.port2,Ze.port1,Ze.port2])Pr.close();return null}},detach:hv}),QI={get state(){return Z()?E:"setup_required"},get problem(){return Z()?G:null},get health(){return Z()?j:null},get live(){return Z()?!L:null},get ended(){return Z()?V:null},connection:ZI,close:ze,subscribe(He){return Y(),W.add(He),()=>{W.delete(He)}}};return e.handoff(Object.freeze({schema:"mdbn-app-collection/1",scope:h,generation:cs,displayName:u,setupMode:ls,dataPort:P.port2,controlPort:C.port2,...uv,...S?{timerPort:S.port}:{}})),Y(),Ve(),Object.freeze(QI)}catch(he){throw await ze(),he}}}async function Lh(n,e){if(n.schema!=="mdbn-app-collection/1"||nl.has(n.dataPort)||nl.has(n.controlPort)||n.dataPort===n.controlPort||!["inspect","approved-new","reconcile-original"].includes(n.setupMode)||n.people!==void 0&&n.people!==!0||e.signal.aborted||n.timerPort&&(nl.has(n.timerPort)||n.timerPort===n.dataPort||n.timerPort===n.controlPort))throw Ji("binding");nl.add(n.dataPort),nl.add(n.controlPort),n.timerPort&&nl.add(n.timerPort);let t=Object.freeze({...n.scope}),i=n.generation,o=n.setupMode,s=n.people===!0,r=n.dataPort,a=n.controlPort,p=e.signal,l=!1,c=null,d=null,u=null,f,h=()=>{if(!l){l=!0,p.removeEventListener("abort",h);for(let m of[()=>f?.close(),()=>d?.close(),()=>c?.close(),()=>u?.close(),()=>r.close(),()=>a.close()])try{m()}catch{}}};p.addEventListener("abort",h,{once:!0});try{if(u=uh(r,{...t,isCurrent:()=>!l&&!p.aborted}),d=ph(a,{scope:t,generation:i},{signal:p,isCurrent:()=>!l,onClose:h,...s?{people:!0}:{}}),n.timerPort&&(f=new Ds(nI(n.timerPort,{scope:t,generation:i},{signal:p,onClose:()=>{}}),{criteria:e.timerCriteria??[]})),c=await qi.connect({app:e.app,connector:u,reconnect:!1,signal:p,ledger:d.ledger}),l||p.aborted)throw c.close(),Ji("fenced");let m=s?lh(c,d):void 0;return Object.freeze({client:c,resourceSetup:d.resourceSetup,...m?{people:m}:{},journal:d.journal,scope:t,setupMode:o,close:h,...f?{timers:f}:{},assess:(b,w)=>d.assess(b,w),setForeground:(b,w)=>d.setForeground(b,w)})}catch(m){throw h(),m}}var CM,IM,OM,RM,EM,bp,Ji,nl,Tw=I(()=>{"use strict";Wn();ip();Ow();Cs();sg();qw();zx();Mh();Zo();ro();fh();ap();CM=1e4,IM=12e4,OM=2e3,RM=15e3,EM=3,bp=class extends Error{constructor(t){super(`app web collection: ${t}`);this.reason=t;this.name="AppWebCollectionError"}reason},Ji=n=>new bp(n);nl=new WeakSet});var Ut,jh,qM,il,Mw=I(()=>{"use strict";Tw();Ut=class extends Error{constructor(t){super("SDK application connection unavailable");this.code=t;this.name="ApplicationUiConnectionError"}code},jh=new WeakSet,qM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,il=class{app;signal;current=null;pending=null;opening=null;retiring=null;closing=null;epoch=0;timerCriteria;constructor(e,t,i=[]){this.app=Object.freeze({...e}),this.signal=t,this.timerCriteria=Object.freeze([...i]),t.addEventListener("abort",this.abort,{once:!0})}abort=()=>{this.close().catch(()=>{})};connection(e){let t=this.current?.public;return t?.id===e&&t.isCurrent()?t:null}owned(){return this.current?.public.isCurrent()?this.current.ui:null}adopt(e,t){let i=t.caller,o=t.isCurrent,s=[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]];if(s.some(g=>!(g instanceof MessagePort))||new Set(s).size!==s.length||s.some(g=>jh.has(g))){for(let g of new Set(s))g instanceof MessagePort&&!jh.has(g)&&(jh.add(g),g.close());return Promise.reject(new Ut("application_connection_binding"))}for(let g of s)jh.add(g);let r=g=>{for(let y of s)y.close();return Promise.reject(new Ut(g))};if(this.pending||this.current||this.retiring)return r("application_connection_busy");if(this.closing||this.signal.aborted||i.aborted||!o())return r("application_connection_fenced");let a=Object.freeze({...e.scope}),p=e.generation,l=e.displayName;if(e.schema!=="mdbn-app-collection/1"||Object.keys(a).sort().join()!=="account,collection,installation"||Object.values(a).some(g=>!qM.test(g)||g==="00000000-0000-0000-0000-000000000000")||typeof p!="string"||!p||p.length>256||typeof l!="string"||!l.trim()||new TextEncoder().encode(l).length>4096||!["inspect","approved-new","reconcile-original"].includes(e.setupMode))return r("application_connection_binding");if(e.people!==!0)return r("application_connection_people_unavailable");let c=Object.freeze({...e,scope:a,generation:p,displayName:l}),d=new AbortController,u=this.epoch;this.opening=d;let f=()=>d.abort();i.addEventListener("abort",f,{once:!0});let h=AbortSignal.any([this.signal,d.signal]),m=()=>!h.aborted&&!this.closing&&!this.retiring&&this.epoch===u&&o(),b=null,w=Promise.resolve().then(async()=>{if(!m()||i.aborted)throw new Ut("application_connection_fenced");if(b=await Lh(c,{app:this.app,signal:h,timerCriteria:this.timerCriteria}),!m()||i.aborted)throw new Ut("application_connection_fenced");if(b.client.collection!==a.collection||b.client.link!=="open")throw new Ut("application_connection_binding");if(!b.people)throw new Ut("application_connection_people_unavailable");let g=b,y=b.people,v=Object.freeze({id:a.collection,scope:a,generation:p,displayName:l,records:g.client,files:g.client.files,people:y,...g.timers?{timers:g.timers}:{},isCurrent:()=>m()&&this.current?.ui===g&&g.client.link==="open"});return this.current={public:v,ui:g,lifetime:d},v}).catch(g=>{d.abort(),b?.close();for(let y of s)y.close();throw g}).finally(()=>{i.removeEventListener("abort",f),this.pending===w&&(this.pending=null,this.opening=null)});return this.pending=w,w}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.current,t=this.pending;this.opening?.abort(),e?.lifetime.abort();let i=Promise.resolve().then(async()=>{await t?.catch(()=>{}),e?.ui.close(),this.current===e&&(this.current=null)});return this.retiring=i,i.then(()=>{this.retiring===i&&(this.retiring=null)},()=>{}),i}close(){return this.closing?this.closing:(this.closing=Promise.resolve().then(()=>this.retire()),this.signal.removeEventListener("abort",this.abort),++this.epoch,this.opening?.abort(),this.current?.lifetime.abort(),this.closing)}}});function UM(n){if(n.capabilityContractVersion!==2)throw _("upgrade_required","unsupported readiness capability projection","readiness_capability_version");if(!Array.isArray(n.contracts)||n.contracts.length>128||!Array.isArray(n.requiredNativeCapabilities)||n.requiredNativeCapabilities.length>64)throw Ct("unsupported");let e=n.contracts.map(i=>{if(!i||!ol(i.id,256)||!ol(i.version,128)||!NM.test(i.digest))throw Ct("unsupported");return Object.freeze({id:i.id,version:i.version,digest:i.digest})}),t=n.requiredNativeCapabilities.map(i=>{if(!ol(i,128))throw Ct("unsupported");return i});if(new Set(e.map(i=>JSON.stringify([i.id,i.version]))).size!==e.length||new Set(t).size!==t.length||n.typeIssues!==void 0&&n.typeIssues!=="block"&&n.typeIssues!=="degrade")throw Ct("unsupported");return Object.freeze({capabilityContractVersion:2,typeIssues:n.typeIssues??"block",contracts:Object.freeze(e),requiredNativeCapabilities:Object.freeze(t)})}function DM(n){let e=n instanceof Map?n.get("path"):null;return typeof e=="string"&&e?e:null}function rl(n,e){return Object.freeze({reason:n,...n==="fenced"&&e?{detail:e}:{}})}function Lw(n){if(!X(n))return;let e=n.details instanceof Map?n.details.get("condition"):void 0,t=TM.find(i=>i===e);if(t)return t;if(n.code==="unauthenticated")return"read_unauthenticated";if(n.code==="cancelled")return"read_cancelled"}function jw(n){try{if(X(n)){if(n.code==="unauthenticated"||n.code==="cancelled")return"fenced";if(n.code==="too_large")return"budget";if(n.code==="upgrade_required"||n.code==="forbidden")return"unsupported";if(n.reason==="readiness_changed"||n.reason==="cursor_stale"||n.reason==="cursor_expired")return"changed";if(n.reason==="readiness_busy")return"busy";if(n.reason==="readiness_catalog_response")return"catalog_response"}}catch{}return"unavailable"}function Uw(n){let e=n.status;return JSON.stringify([e.mode,e.confirmedThrough,e.headKnown,e.pending,e.holds,e.unresolved,e.connection,e.installing,e.resyncing,e.incidents.map(t=>t.kind),e.confirmedHead])}function Dw(n){return n.mode==="local_only"}function sl(n){return JSON.stringify(n,(e,t)=>typeof t=="bigint"?`${t}n`:t instanceof Map?[...t.entries()]:t instanceof Uint8Array?[...t]:t)}function oI(n,e,t){return new Nw(n,e,t)}var TM,MM,LM,jM,rI,NM,ol,Ct,Nw,$w=I(()=>{"use strict";re();TM=["binding_invalid","binding_aborted","binding_not_current","readiness_closed","read_aborted","session_closed","session_replaced","session_collection_mismatch","read_unauthenticated","read_cancelled"],MM=4096,LM=2*1024*1024,jM=64,rI=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,NM=/^sha256:[0-9a-f]{64}$/,ol=(n,e=4096)=>typeof n=="string"&&!!n.trim()&&new TextEncoder().encode(n).length<=e,Ct=(n,e)=>_(n==="fenced"?"unauthenticated":n==="budget"?"too_large":"unavailable","collection readiness unavailable",{reason:`readiness_${n}`,...e?{details:new Map([["condition",e]])}:{}});Nw=class{constructor(e,t,i){this.client=e;if(this.declared=UM(t),!rI.test(i.collection)||i.collection==="00000000-0000-0000-0000-000000000000"||!rI.test(i.generation))throw Ct("fenced","binding_invalid");this.binding=Object.freeze({collection:i.collection,generation:i.generation,signal:i.signal,isCurrent:i.isCurrent.bind(i)}),this.readSignal=AbortSignal.any([this.binding.signal,this.lifetime.signal]),this.check(),this.binding.signal.addEventListener("abort",this.abort,{once:!0})}client;declared;binding;lifetime=new AbortController;readSignal;listeners=new Set;snapshotValue=Object.freeze({checking:!1,assessment:null,problem:null});watch=null;stops=[];pending=null;epoch=0;dirty=!1;scheduled=!1;retries=0;failures=0;closed=!1;lastStatus=null;assessedSession;assessedEpoch;assessedCatalog=null;probing=null;probeAgain=!1;abort=()=>{this.close()};getSnapshot(){if(this.snapshotValue.assessment)try{this.check(void 0,this.assessedSession,this.assessedEpoch)}catch(e){let t=jw(e);t==="fenced"&&!this.closed&&!this.binding.signal.aborted&&this.binding.isCurrent()===!0&&(t="changed"),this.retryLater(t)||this.publish({checking:!1,assessment:null,problem:rl(t,Lw(e))})}return this.snapshotValue}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(e){this.snapshotValue=Object.freeze(e);for(let t of this.listeners)try{t()}catch{}}check(e,t,i){e?.throwIfAborted();let o=this.fenceDetail(e);if(o)throw Ct("fenced",o);if(t?.closed)throw Ct("fenced","session_closed");if(t&&t!==this.client.currentSession())throw Ct("fenced","session_replaced");if(t&&t.hello.collection!==this.binding.collection)throw Ct("fenced","session_collection_mismatch");if(i!==void 0&&(i!==this.epoch||this.watch?.state!=="active"))throw Ct("changed")}fenceDetail(e){if(this.binding.signal.aborted)return"binding_aborted";if(this.closed)return"readiness_closed";if(e?.aborted)return"read_aborted";if(this.binding.isCurrent()!==!0)return"binding_not_current"}invalidate=()=>{if(this.closed)return;if(this.pending||!this.snapshotValue.assessment||this.assessedCatalog===null||this.client.link!=="open"){this.recheck();return}if(this.probing){this.probeAgain=!0;return}let e=this.snapshotValue.assessment,t=this.assessedCatalog,i=this.client.describe(this.readSignal).then(o=>{this.closed||this.snapshotValue.assessment!==e||sl(o)!==t&&this.recheck()},()=>{this.closed||this.recheck()});this.probing=i.finally(()=>{this.probing=null,this.probeAgain&&!this.closed&&(this.probeAgain=!1,this.invalidate())})};recheck(){this.closed||(this.epoch++,this.dirty=!0,this.publish({checking:!0,assessment:null,problem:null}),this.schedule())}schedule(){if(this.closed||this.pending||this.scheduled||!this.dirty||this.watch?.state!=="active"||this.client.link!=="open")return;this.scheduled=!0;let e=()=>{this.scheduled=!1,!this.closed&&this.dirty&&!this.pending&&this.watch?.state==="active"&&this.client.link==="open"&&this.refresh(void 0,!0).catch(()=>{})};this.retries?setTimeout(e,Math.min(5e3,100*2**this.retries,this.retrySince===null?5e3:Math.max(0,15e3-(Date.now()-this.retrySince)))):queueMicrotask(e)}retrySince=null;retryLater(e,t=!1){if(this.closed)return!1;if((e==="busy"||e==="changed")&&(this.retrySince??=Date.now(),Date.now()-this.retrySince>=15e3))return this.dirty=!1,this.publish({checking:!1,assessment:null,problem:rl("busy_timeout")}),!0;if(e==="unavailable"&&t&&this.failures<5)this.failures++;else if(e!=="changed"&&e!=="busy")return!1;return this.dirty=!0,this.retries=Math.min(this.retries+1,6),this.publish({checking:!0,assessment:null,problem:null}),this.schedule(),!0}attach(){this.watch||(this.watch=this.client.watchChanges(void 0,this.invalidate),this.stops.push(this.watch.subscribe(this.invalidate),this.client.onLink(this.invalidate),this.client.onStatus(e=>{let t=Uw(this.client);(t!==this.lastStatus||Dw(e))&&(this.lastStatus=t,this.invalidate())})))}start(e){return this.refresh(e)}refresh(e,t=!1){try{if(this.check(e),this.pending)throw Ct("busy")}catch(a){return Promise.reject(a)}t||(this.retrySince=null);let i=AbortSignal.any([this.binding.signal,this.lifetime.signal,...e?[e]:[]]),o,s,r=Promise.resolve().then(async()=>{this.check(i),this.attach();let a=await this.client.readyForRead(i);this.check(i,a),await this.watch.ready,this.check(i,a);let p=this.epoch;this.dirty=!1,this.check(i,a,p);let l=await this.inventory(i,a,p),c=await this.client.describe(this.readSignal);this.check(i,a,p);let d=this.evaluate(c,a),u=sl(c);for(let b of d.paths){let w=l.find(y=>y.path===b);if(!w)throw Ct("changed");let g=await this.client.resources.get(b,this.readSignal);if(this.check(i,a,p),g.path!==w.path||g.revision!==w.revision||g.size!==w.size||g.state!=="confirmed")throw Ct("changed")}let f=await this.inventory(i,a,p);if(JSON.stringify(l)!==JSON.stringify(f))throw Ct("changed");this.check(i,a,p);let h=Object.freeze({collection:this.binding.collection,generation:this.binding.generation,resources:Object.freeze(f)}),m=Object.freeze({status:d.status,problem:d.reason?rl(d.reason):null,witness:h,...d.unavailable.length?{unavailableTypes:Object.freeze(d.unavailable)}:{}});return o=a,s=p,this.retries=0,this.failures=0,this.retrySince=null,this.assessedSession=a,this.assessedEpoch=p,this.assessedCatalog=u,this.publish({checking:!1,assessment:m,problem:m.problem}),this.check(i,a,p),m}).catch(a=>{let p=i.aborted||this.closed?"fenced":jw(a);throw this.retryLater(p,t)||this.publish({checking:!1,assessment:null,problem:rl(p,this.fenceDetail(i)??Lw(a))}),a});return this.pending=r,this.publish({checking:!0,assessment:null,problem:null}),r.finally(()=>{this.pending===r&&(this.pending=null),this.schedule()}).catch(()=>{}),r.then(a=>{try{if(this.check(i,o,s),this.snapshotValue.assessment!==a)throw Ct("changed");return a}catch(p){let l=i.aborted?"fenced":jw(p);throw this.snapshotValue.assessment===a&&!this.retryLater(l)&&this.publish({checking:!1,assessment:null,problem:rl(l,this.fenceDetail(i)??Lw(p))}),p}})}async inventory(e,t,i){let o=[],s=new Set,r,a="",p=0;for(let l=0;l<jM;l++){this.check(e,t,i);let c=await this.client.resources.list({text:!1,limit:128,...r?{cursor:r}:{},signal:this.readSignal});this.check(e,t,i);for(let d of c.resources){if(!ol(d.path)||d.path<=a||!ol(d.revision,128)||!Number.isSafeInteger(d.size)||d.size<0||d.state!=="confirmed")throw Ct("catalog_response");a=d.path;let u=Object.freeze({path:d.path,revision:d.revision,size:d.size,state:d.state});if(p+=new TextEncoder().encode(JSON.stringify(u)).length,o.length>=MM||p>LM)throw Ct("budget");o.push(u)}if(c.complete===!0&&c.cursor===void 0)return o;if(c.complete!==!1||!ol(c.cursor)||s.has(c.cursor))throw Ct("catalog_response");s.add(c.cursor),r=c.cursor}throw Ct("budget")}evaluate(e,t){let i=e.issues.filter(d=>d.severity==="error"),o=new Set;for(let d of i){let u=DM(d.details);if(!u)return{status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};o.add(u)}let s={status:"incompatible",reason:"catalog_invalid",paths:[],unavailable:[]};if(this.declared.requiredNativeCapabilities.some(d=>!t.hello.grant.capabilities.includes(d)))return{status:"incompatible",reason:"capability_missing",paths:[],unavailable:[]};let r=new Set,a=new Set,p=new Set;for(let d of e.contracts){let u=JSON.stringify([d.id,d.version]);if(a.has(u))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};a.add(u)}for(let d of e.types){if(p.has(d.name))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};p.add(d.name)}let l,c=[];for(let d of this.declared.contracts){let u=e.contracts.find(f=>f.id===d.id&&f.version===d.version);if(!u){l??="contract_missing";continue}if(u.digest!==d.digest)return{status:"incompatible",reason:"contract_mismatch",paths:[],unavailable:[]};if(r.add(u.path),o.has(u.path))return s;if(!u.implementedBy.length){l??="implementation_missing";continue}for(let f of u.implementedBy){let h=e.types.find(m=>m.name===f);if(!h||!h.implements.some(m=>m.contract===d.id&&m.version===d.version))return{status:"incompatible",reason:"catalog_response",paths:[],unavailable:[]};if(r.add(h.path),o.has(h.path)){if(this.declared.typeIssues!=="degrade")return s;c.some(m=>m.name===h.name)||c.push(Object.freeze({name:h.name,path:h.path,contract:Object.freeze({id:d.id,version:d.version}),problem:Object.freeze({code:"readiness_type_invalid"})}))}}}return{status:l?"setup_required":"ready",...l?{reason:l}:{},paths:[...r].sort(),unavailable:c}}async close(){if(!this.closed){this.closed=!0,this.dirty=!1,this.lifetime.abort(),this.binding.signal.removeEventListener("abort",this.abort);for(let e of this.stops.splice(0))e();this.watch?.(),this.watch=null,this.publish({checking:!1,assessment:null,problem:rl("fenced",this.fenceDetail())})}await this.pending?.catch(()=>{})}}});function zM(n){let e=o=>o?Object.freeze({code:`readiness_${o.reason}`,...o.detail?{detail:o.detail}:{}}):null,t=e(n.problem),i=n.assessment?.unavailableTypes;return Object.freeze({checking:n.checking,assessment:n.assessment?Object.freeze({status:n.assessment.status,problem:e(n.assessment.problem),...i?.length?{unavailableTypes:i}:{}}):null,problem:t})}var sI,$M,wp,Xi,Nh,aI=I(()=>{"use strict";ac();re();$w();sI=["configuration","files"],$M=["people","notifications"],wp=class extends Error{constructor(t,i){super("SDK application readiness unavailable");this.code=t;this.detail=i;this.name="ApplicationReadinessError"}code;detail},Xi=(n,e=!1,t)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n,...t?{detail:t}:{}}):null});Nh=class{connection;signal;observed;native;sources;listeners=new Set;stops=[];pending=null;closing=null;checking=!1;closed=!1;advisory=Promise.resolve();lastReady=null;constructor(e){this.connection=e.connection,this.signal=e.signal,this.observed=e.isCurrent,this.sources=Object.freeze({configuration:e.configuration,files:e.files,people:e.people,notifications:e.notifications}),this.native=e.nativeRequirements?oI(this.connection.records,e.nativeRequirements,{collection:this.connection.id,generation:this.connection.generation,signal:this.signal,isCurrent:()=>this.current()}):null,this.native&&this.stops.push(this.native.subscribe(this.changed));for(let t of Object.values(this.sources))t&&this.stops.push(t.subscribe(this.changed));this.signal.addEventListener("abort",this.abort,{once:!0})}fenceDetail(){try{return this.signal.aborted?"scope_aborted":this.closed?"scope_closed":this.observed()!==!0?"observer_not_current":this.connection.isCurrent()?this.connection.records.collection!==this.connection.id?"collection_mismatch":null:"connection_not_current"}catch{return"currentness_check_failed"}}current(){return this.fenceDetail()===null}connectionProblem(){if(!this.closed&&!this.signal.aborted&&this.connection.records.collection===this.connection.id&&this.connection.records.link==="closed"){let e=this.connection.records.linkProblem;if(X(e)){let t=No(e);return t&&t.key!=="unknown"?t.key:e.code}}return"readiness_fenced"}changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}getSnapshot(){let e=this.current(),t=Xi(e?"readiness_unsupported":"readiness_fenced"),i=t;if(e&&this.native){let u=this.native.getSnapshot(),f=u.assessment?.witness,h=f&&f.collection!==this.connection.id?"native_witness_collection_mismatch":f&&f.generation!==this.connection.generation?"native_witness_generation_mismatch":null;i=h?Xi("readiness_fenced",!1,h):zM(u)}let o=u=>{if(!e)return t;let f=this.sources[u];if(!f)return Xi(`${u}_unsupported`);try{let h=f.getSnapshot();return Object.freeze({checking:h.checking,assessment:h.assessment?Object.freeze({...h.assessment,problem:h.assessment.problem?Object.freeze({...h.assessment.problem}):null}):null,problem:h.problem?Object.freeze({...h.problem}):null})}catch{return Xi(`${u}_unavailable`)}},s=Object.freeze({capabilities:i,contracts:i,configuration:o("configuration"),files:o("files"),people:o("people"),notifications:o("notifications")}),r=[s.capabilities,s.contracts,s.configuration,s.files],a=e&&(this.checking||r.some(u=>u.checking)),p=null,l=null;if(!e)l=Object.freeze({code:"readiness_fenced"});else if(!a){let u=["capabilities","contracts",...sI].find(f=>s[f].problem);if(l=u?s[u].problem:null,u&&l?.code==="readiness_fenced"&&!l.detail&&(l=Object.freeze({...l,detail:`${u}_facet`})),r.every(f=>f.assessment!==null)){let f=r.find(w=>w.assessment?.status==="incompatible"),h=r.find(w=>w.assessment?.status==="setup_required"),m=f??h,b=i.assessment?.unavailableTypes;p=Object.freeze({status:f?"incompatible":h?"setup_required":"ready",problem:m?.assessment?.problem??null,...b?.length?{unavailableTypes:b}:{}})}}let c=this.fenceDetail();if(c)return this.lastReady=null,Object.freeze({checking:!1,assessment:null,problem:Object.freeze({code:this.connectionProblem(),detail:c}),facets:Object.freeze({capabilities:Xi("readiness_fenced",!1,c),contracts:Xi("readiness_fenced",!1,c),configuration:Xi("readiness_fenced",!1,c),files:Xi("readiness_fenced",!1,c),people:Xi("readiness_fenced",!1,c),notifications:Xi("readiness_fenced",!1,c)})});let d=!l||/_(changed|busy)$/.test(l.code);if(l===null&&p!==null&&!a)this.lastReady=Object.freeze({checking:a,assessment:p,problem:l,facets:s});else{if(this.lastReady&&d&&(a||p===null)&&(this.lastReady.assessment?.status==="ready"||!this.checking))return Object.freeze({...this.lastReady,facets:s});this.lastReady=null}return Object.freeze({checking:a,assessment:p,problem:l,facets:s})}refresh(e={}){let t=e.signal,i=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(i)return Promise.reject(new wp("application_readiness_fenced",i));if(this.pending)return Promise.reject(new wp("application_readiness_busy"));this.checking=!0;let o=Promise.resolve().then(async()=>{if(!this.current())return this.getSnapshot();await this.advisory,this.native&&await this.native.start();for(let s of sI){let r=this.sources[s];if(!this.current())break;r&&await r.refresh()}return await this.reassessAfterSetup(),this.getSnapshot()}).finally(()=>{if(this.pending!==o)return;this.pending=null,this.checking=!1;let s=(async()=>{for(let r of $M){let a=this.sources[r];if(!this.current())break;a&&await a.refresh().catch(()=>{})}})();this.advisory=s,this.changed()}).then(()=>this.getSnapshot());return this.pending=o,this.changed(),o.then(s=>{let r=this.fenceDetail()??(t?.aborted?"caller_aborted":null);if(r)throw new wp("application_readiness_fenced",r);return s})}async reassessAfterSetup(){if(!this.native||!this.current())return;let e=this.native.getSnapshot(),t=null;try{t=this.sources.configuration?.getSnapshot()??null}catch{}e.checking||e.assessment?.status!=="setup_required"||t?.checking||t?.assessment?.status!=="ready"||await this.native.start().catch(i=>{if(!(X(i)&&i.reason==="readiness_busy"))throw i})}close(){return this.closing?this.closing:(this.closed=!0,this.checking=!1,this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{for(let e of this.stops.splice(0))e();for(let e of Object.values(this.sources))await e?.close();await this.native?.close(),await this.pending?.catch(()=>{}),await this.advisory,this.listeners.clear()}),this.changed(),this.closing)}}});function BM(n){let e=new Set,t=[],i=[];for(let o of n.review?.packs??[]){if(o.status!=="conflict"&&o.status!=="downgrade")continue;let s=o.installedVersion?Uo(o.installedVersion,o.version):"unknown";s==="installed_newer"&&!o.resources.some(r=>r.action==="conflict")?(e.add(o.id),i.push(Object.freeze({id:o.id,version:o.version,installedVersion:o.installedVersion}))):s==="installed_newer_major"&&t.push(o.id)}return Object.freeze({kept:Object.freeze(i),compatible:e,major:Object.freeze(t)})}function FM(n,e){let t=n,i=t.provisions?.type_packs;return!e.size||!Array.isArray(i)?n:{...t,provisions:{...t.provisions,type_packs:i.filter(o=>!(typeof o?.manifest?.id=="string"&&e.has(o.manifest.id)))}}}function cI(n){return new Proxy({},{get(e,t){let i=Reflect.get(n,t,n);return typeof i!="function"?i:async(...o)=>{let s=o.find(a=>a instanceof AbortSignal),r=Date.now()+VM;for(let a=25;;a=Math.min(a*2,500))try{return await i.apply(n,o)}catch(p){if(!(p instanceof ii&&p.reason==="busy")||!s)throw p;if(Date.now()+a>r)throw Be("busy_timeout");await WM(a,s)}}}})}function dI(n,e){let t=Object.freeze({...n,scope:Object.freeze({...n.scope}),journal:cI(n.journal)});if(e&&(e=cI(e)),Object.values(t.scope).some(j=>!lI.test(j)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(j))||!lI.test(t.generation)||!["inspect","approved-new","reconcile-original"].includes(t.setupMode))throw Be("binding");let i=JSON.stringify([t.scope.account,t.scope.installation,t.scope.collection]),o=new AbortController,s=AbortSignal.any([t.signal,o.signal]),r=new Set,a=_r(),p=null,l=null,c=!1,d,u=null,f=!1,h=!1,m=0,b=!1,w=!1,g=null,y=null,v=()=>{try{return JSON.stringify([t.client.link,Uw(t.client)])}catch{return null}},A=[],k=new WeakMap;function S(j,K){if(j?.throwIfAborted(),c||s.aborted||t.isCurrent()!==!0||JSON.stringify([t.journal.scope.account,t.journal.scope.installation,t.journal.scope.collection])!==i||K&&(K.closed||t.client.currentSession()!==K||K.hello.collection!==t.scope.collection))throw Be("fenced")}function x(j){a=Object.freeze(j);for(let K of r)try{K()}catch{}}function P(){if(c)return;let j=v();if(j!==null&&j===y)return;if(y=j,p||!a.assessment||u===null||t.client.link!=="open"){C();return}if(f){h=!0;return}f=!0;let K=a,$=u;t.client.describe(s).then(J=>{!c&&a===K&&sl(J)!==$&&C()},()=>{c||C()}).finally(()=>{f=!1,h&&!c&&(h=!1,y=null,P())})}function C(){c||(b=!0,p||x(_r(null,!0)),E())}function E(){c||p||w||!b||(w=!0,setTimeout(()=>{if(w=!1,c||p||!b)return;let j=te(!1,{},void 0,!0);g=p,j.catch(()=>{})},m?Math.min(5e3,250*2**m):50))}function O(){if(a.assessment)try{S(void 0,d)}catch{c||s.aborted||t.isCurrent()!==!0?x(_r("configuration_fenced")):(b=!0,y=null,x(_r(null,!0)),E())}return a}async function L(j,K,$){let J=await t.client.awaitReceipt(j.mutationId,12e4,s);if(S(K,$),J.mutation!==j.mutationId||J.state!=="confirmed"||J.status!=="applied"||(J.conflicts?.length??0)!==0||J.published==="publishing"||J.published==="not_published")throw Be("recovery_required");return J}async function z(j,K,$){let J,be=0,ye=0,we=new Set,et=new Set,qe=new TextEncoder;for(let Dt=0;Dt<64;Dt++){S(K,$);let tt=await t.client.resources.list({text:!1,limit:128,...J===void 0?{}:{cursor:J},signal:s});if(S(K,$),tt.resources.length>128)throw Be("recovery_required");for(let Ve of tt.resources){let qn=qe.encode(Ve.path).length;if(be++,ye+=qn+128,!Ve.path||qn>4096||et.has(Ve.path)||Ve.state!=="confirmed"||!zw.test(Ve.revision)||!Number.isSafeInteger(Ve.size)||Ve.size<0||be>4096||ye>2*1024*1024||j.has(Ve.path))throw Be("recovery_required");et.add(Ve.path)}if(tt.complete===!0&&tt.cursor===void 0)return;if(tt.complete!==!1||!tt.resources.length||typeof tt.cursor!="string"||!tt.cursor||qe.encode(tt.cursor).length>4096||we.has(tt.cursor))throw Be("recovery_required");we.add(tt.cursor),J=tt.cursor}throw Be("recovery_required")}async function ee(j,K,$){let J=j.version===2?j.plan.readback:j.plan.resourceReadback,be=new Set(J.filter(ye=>ye.doc===null).map(ye=>ye.path));be.size&&await z(be,K,$);for(let ye of J){if(ye.doc===null)continue;let we=await t.client.resources.get(ye.path,s);if(S(K,$),we.path!==ye.path||we.text!==ye.doc||we.state!=="confirmed")throw Be("recovery_required")}if(j.version!==2)for(let ye of j.plan.sources){let we=await t.client.get(ye.id,void 0,s);if(S(K,$),we.id!==ye.id||we.path!==ye.path||we.state.state!=="confirmed"||we.state.hold||we.state.unresolved)throw Be("recovery_required")}}async function V(j,K,$){return await L(j,K,$),j.phase==="attempted"&&(j=j.version===2?await t.journal.recordConfirmed(j.mutationId,s):await t.journal.recordResourceConfirmed(j.mutationId,s),S(K,$)),j.phase==="verified"||(await ee(j,K,$),j.phase==="confirmed"&&(j=j.version===2?await t.journal.recordVerified(j.mutationId,s):await t.journal.recordResourceVerified(j.mutationId,s),S(K,$))),j}async function ne(j,K){let $=await t.journal.load(s);if(S(j,K),!$)return{journaled:!1,previous:null};if($=qt($,t.scope),$.version===1||$.phase==="prepared")throw Be("recovery_required");if($.phase==="attempted"&&($.version===3||$.version===4)&&t.journal.recordResourceRejected){let J=await t.client.awaitReceipt($.mutationId,12e4,s);S(j,K),J.mutation===$.mutationId&&J.state==="rejected"&&($=qt(await t.journal.recordResourceRejected($.mutationId,s),t.scope),S(j,K))}if($.version===1)throw Be("recovery_required");return $.phase==="rejected"?{journaled:!0,previous:$.version===4?$.previous:null}:{journaled:!0,previous:await V($,j,K)}}async function G(j,K){let $=t.compiledManifest.manifest,J=await Bw(e.assess($,s,j),j),be=J;J.status==="conflict"&&!J.review&&(be=await e.assess($,s,ni({})));let ye=BM(be);if(!ye.compatible.size)return{assessed:J,manifest:$,newer:ye};let we=FM($,ye.compatible),et=K?j??ni({}):j;return J=await Bw(e.assess(we,s,et),et),{assessed:J,manifest:we,newer:ye}}async function W(j,K,$={}){S(K);let J=await t.client.readyForRead(s);S(K,J),A.length||(y=v(),A.push(t.client.onStatus(Sr=>{Dw(Sr)&&(y=null),P()}),t.client.onLink(P))),b=!1;let{journaled:be,previous:ye}=await ne(K,J);if(!e)throw Be("unsupported");let we=null;try{we=sl(await t.client.describe(s))}catch{}S(K,J);let et=await G($.decisions,!1),qe=et.assessed,Dt=et.manifest;if(S(K,J),!zw.test(qe.assessmentDigest)||!["current","provision","conflict"].includes(qe.status))throw Be("response");if($.expected!==void 0&&qe.assessmentDigest!==$.expected)throw Fw();let tt=!be&&t.setupMode==="approved-new";if(qe.status==="provision"&&(j||tt)){if(t.setupMode==="reconcile-original")throw Be("recovery_required");if(!(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack"))||!J.hello.grant.capabilities.includes("definitions.manage"))throw Be("not_authorized");let Sr=$.records??[];if(Sr.length&&!J.hello.grant.capabilities.includes("records.create"))throw Be("not_authorized");let as=xt(await Bw(e.apply(Dt,qe.assessmentDigest,s,$.decisions),$.decisions));if(S(K,J),as.assessmentDigest!==qe.assessmentDigest)throw Be("response");if(as.sources.length)throw Be("unsupported_source_provision");let he=Sr.length?xt({...as,sources:Sr.map(nt=>({id:crypto.randomUUID(),path:nt.path,document:nt.document}))}):as,me;if(ye){if(!t.journal.prepareResourceRound)throw Be("recovery_required");me=await t.journal.prepareResourceRound(he,ye.mutationId,s)}else me=await t.journal.prepareResources(he,s);if(S(K,J),me=qt(me,t.scope),me.version!==3&&me.version!==4||me.phase!=="prepared"||JSON.stringify(me.plan)!==JSON.stringify(he))throw Be("recovery_required");let Fe=qt(await t.journal.recordResourceAttempt(me.mutationId,s),t.scope);if(S(K,J),Fe.version!==3&&Fe.version!==4||Fe.mutationId!==me.mutationId||Fe.phase!=="attempted"||JSON.stringify(Fe.plan)!==JSON.stringify(he))throw Be("recovery_required");let Tn=[...he.resourceOps,...he.sources.map(nt=>({kind:"create",id:nt.id,path:nt.path,document:nt.document}))],Mn=await t.client.submit(Tn,{mutationId:me.mutationId,wait:"confirmed",signal:s});if(S(K,J),Mn.length!==1||Mn[0].mutationId!==me.mutationId)throw Be("recovery_required");let Ci;try{Ci=await Mn[0].confirmed}catch(nt){throw S(K,J),Mn[0].receipt.state!=="rejected"||!t.journal.recordResourceRejected?nt:(await t.journal.recordResourceRejected(me.mutationId,s),S(K,J),Fw(me.mutationId,nt))}if(S(K,J),Ci.state!=="confirmed"||Ci.status!=="applied"||(Ci.conflicts?.length??0)!==0)throw Be("recovery_required");await V(Fe,K,J),b=!1,y=v();try{we=sl(await t.client.describe(s))}catch{we=null}if(qe=await e.assess(Dt,s),S(K,J),qe.status!=="current"||!zw.test(qe.assessmentDigest))throw Be("recovery_required")}let Ve=qe.status==="conflict"?et.newer.major.length?"installed_newer":"configuration_conflict":null,qn=Ve?Object.freeze({code:Ve}):null,kr=Object.freeze({status:qe.status==="current"?"ready":qe.status==="conflict"?"incompatible":"setup_required",problem:qn});d=J,u=we;let xi=Object.freeze({checking:!1,assessment:kr,problem:qn});return m=0,x(b?_r(null,!0):xi),S(K,J),xi}function Z(j={}){try{S(j.signal)}catch(J){return Promise.reject(J)}let K=p,$=(K?K.then(()=>{},()=>{}):Promise.resolve()).then(()=>Y(j));return p=$,$.finally(()=>{p===$&&(p=null)}).catch(()=>{}),$}async function Y(j){let K=Ph(j.records),$=ni(j.adopt===void 0?{}:{adopt:j.adopt}),J=AbortSignal.any([s,...j.signal?[j.signal]:[]]),be=await t.client.readyForRead(s);if(S(J,be),await ne(J,be),!e)throw Be("unsupported");let{assessed:ye,newer:we}=await G($,!0);if(S(J,be),!ye.review)throw Be("response");let et=[];if(ye.status!=="current")for(let tt of K){let Ve=await t.client.find({path:tt.path},void 0,s);S(J,be),et.push({path:tt.path,free:Ve===null})}let qe=be.hello.grant.capabilities,Dt=up(ye,{records:et,canManage:qe.includes("definitions.manage")&&(t.compiledManifest.operations.includes("apply_collection_setup")||t.compiledManifest.operations.includes("apply_type_pack")),canCreateRecords:qe.includes("records.create"),newer:we});return k.set(Dt,Object.freeze({decisions:$,records:K.filter(tt=>et.some(Ve=>Ve.path===tt.path&&Ve.free))})),Dt}function te(j,K={},$,J=!1){try{S(K.signal)}catch(we){return Promise.reject(we)}if(p&&p===g){let we=p;return we.then(()=>{},()=>{}).then(()=>p&&p!==we?Promise.reject(Be("busy")):te(j,K,$))}if(p)return Promise.reject(Be("busy"));let be=AbortSignal.any([s,...K.signal?[K.signal]:[]]),ye=Promise.resolve().then(()=>W(j,be,$)).catch(we=>{let et=s.aborted||be.aborted,qe=X(we)&&we.reason==="configuration_busy_timeout";qe&&(b=!1);let Dt=!et&&!qe&&(b||pI(we));throw Dt&&pI(we)&&(b=!0,m=Math.min(m+1,4)),!et&&!qe&&!b&&J&&m<5&&!c&&t.isCurrent()===!0&&(m++,b=!0,Dt=!0),x(Dt?_r(null,!0):_r(et?"configuration_fenced":qe?"configuration_busy_timeout":"configuration_unavailable")),we});return p=ye,x(_r(null,!0)),ye.finally(()=>{p===ye&&(p=null),g===ye&&(g=null),E()}).catch(()=>{}),ye.then(we=>(S(be,d),we))}let ze=()=>{if(!l){c=!0,t.signal.removeEventListener("abort",mt),o.abort();for(let K of A.splice(0))K();x(_r("configuration_fenced"));let j=p;l=Promise.resolve().then(async()=>{await j})}return l},mt=()=>{ze().catch(()=>{})};return t.signal.addEventListener("abort",mt,{once:!0}),Object.freeze({getSnapshot:O,subscribe(j){return r.add(j),()=>{r.delete(j)}},assess:j=>te(!1,j),configure:j=>te(!0,j),plan:Z,async apply(j,K={}){let $=k.get(j);if(!$)throw new TypeError("setup.apply needs a plan returned by setup.plan");if(j.refusal)throw _(j.refusal.code==="setup_conflict"?"conflict":j.refusal.code==="installed_newer"?"upgrade_required":"forbidden",j.refusal.message,j.refusal.code);if(j.status==="current"){await te(!1,K,{decisions:$.decisions,expected:j.digest});return}await te(!0,K,{decisions:$.decisions,expected:j.digest,records:$.records})},close:ze})}var lI,zw,Be,Fw,Bw,VM,WM,pI,_r,uI=I(()=>{"use strict";re();Zo();$w();ro();_u();xh();lI=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,zw=/^sha256:[0-9a-f]{64}$/,Be=n=>_("unavailable","application configuration unavailable",`configuration_${n}`),Fw=(n,e)=>new se(_("conflict","This collection changed since the setup was reviewed. Review it again.","setup_changed").toProblem(),{...n?{mutationId:n}:{},...e===void 0?{}:{cause:e}}),Bw=async(n,e)=>{try{return await n}catch(t){throw e?.adopt&&Object.keys(e.adopt).length&&X(t,"unavailable")&&t.reason==="resource_setup_unavailable"?Fw(void 0,t):t}};VM=15e3,WM=(n,e)=>new Promise((t,i)=>{if(e.aborted){i(e.reason);return}let o=()=>{clearTimeout(s),i(e.reason)},s=setTimeout(()=>{e.removeEventListener("abort",o),t()},n);e.addEventListener("abort",o,{once:!0})});pI=n=>X(n)&&n.reason==="configuration_busy",_r=(n=null,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n?Object.freeze({code:n}):null})});function fI(n){return{issuer:n.issuer,subject:n.subject,name:n.name,...n.accountId===void 0?{}:{account_id:n.accountId}}}function hI(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.people,p=n.isCurrent.bind(n),l=typeof a?.current=="function"?a.current.bind(a):void 0,c=typeof a?.members=="function"?a.members.bind(a):void 0,d=new Set,u=os(null),f=!1,h=!1,m=null;function b(){try{return f||r.aborted||p()!==!0?!1:!f&&!r.aborted&&n.scope===e&&n.generation===s&&n.signal===r&&n.people===a&&!!s&&s.length<=256&&[t,i,o].every(k=>typeof k=="string"&&!!k&&k.length<=128)&&e.account===t&&e.installation===i&&e.collection===o}catch{return!1}}function w(k){u=b()?k:Ar;for(let S of[...d])try{S()}catch{}b()||(u=Ar)}function g(){return b()||(u=Ar),u}function y(){if(!f){f=!0,r.removeEventListener("abort",y),u=Ar;for(let k of[...d])try{k()}catch{}d.clear()}}r.addEventListener("abort",y,{once:!0}),r.aborted&&y();function v(k,S){return!b()||S?.aborted?Promise.reject(vp()):new Promise((x,P)=>{let C=!1,E=(z,ee)=>{C||(C=!0,S?.removeEventListener("abort",O),r.removeEventListener("abort",O),d.delete(L),ee!==void 0?P(ee):x(z))},O=()=>E(void 0,vp()),L=()=>{b()||O()};d.add(L),S?.addEventListener("abort",O,{once:!0}),r.addEventListener("abort",O,{once:!0}),k.then(()=>{!b()||S?.aborted?O():E(g())},()=>E(void 0,vp())),(!b()||S?.aborted)&&O()})}function A(k={}){let S=k.signal;if(!b()||S?.aborted)return Promise.reject(vp());if(m)return Promise.reject(_("unavailable","People readiness READ is occupied","people_readiness_busy"));let x=Promise.resolve().then(async()=>{if(!b())return Ar;if(!l||!c)return os("people_unsupported");try{let C=await l({signal:r});if(!b()||(Ka("identity",{...fI(C),...C.personSettingsUrl===void 0?{}:{person_settings_url:C.personSettingsUrl}}),!b()))return Ar;let E=await c({signal:r});return b()?!Array.isArray(E)||E.length>1e3?os("people_response"):(Ka("members",{members:Array.from(E,O=>({...fI(O),role:O.role}))}),b()?KM:Ar):Ar}catch{return os(b()?"people_unavailable":"people_fenced")}});m=x,w(os(null,!0));let P=x.then(C=>(w(C),g()),()=>(w(os("people_unavailable")),g())).finally(()=>{m===x&&(m=null)});return v(P,S)}return Object.freeze({getSnapshot:g,subscribe(k){return f?()=>{}:(d.add(k),()=>{d.delete(k)})},start(k={}){return h?v(m??Promise.resolve(g()),k.signal):!b()||k.signal?.aborted?Promise.reject(vp()):(h=!0,A(k))},refresh:A,close:y})}var os,Ar,KM,vp,mI=I(()=>{"use strict";ap();re();os=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:Object.freeze({code:n})}),Ar=os("people_fenced"),KM=Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),vp=()=>_("cancelled","People readiness ended","people_readiness_fenced")});function Uh(n){if(!n||!Array.isArray(n.criteria))return Object.freeze([]);let e=n.criteria.filter(t=>t?.event?.id===If.id&&t.event.version===If.version&&t.event.digest===If.digest).map(t=>t.id);return Object.freeze([...new Set(e)])}var Vw=I(()=>{"use strict";zc()});function yI(n){let e=n.scope,t=e.account,i=e.installation,o=e.collection,s=n.generation,r=n.signal,a=n.isCurrent.bind(n),p=n.notifications,l=p?.declaration,c=p?.timerNamespace,d=n.timers,u=typeof d?.list=="function"?d.list.bind(d):void 0,f=new Set,h=ki(null),m=!1,b=!1,w=null;function g(){try{return m||r.aborted||a()!==!0?!1:!m&&!r.aborted&&n.signal===r&&n.scope===e&&n.generation===s&&!!s&&s.length<=256&&[t,i,o].every(x=>typeof x=="string"&&!!x&&x.length<=128)&&e.account===t&&e.installation===i&&e.collection===o&&n.notifications===p&&p?.declaration===l&&p?.timerNamespace===c&&n.timers===d}catch{return!1}}function y(x){h=g()?x:Dh;for(let P of[...f])try{P()}catch{}g()||(h=Dh)}function v(){return g()||(h=Dh),h}function A(){if(!m){m=!0,r.removeEventListener("abort",A),h=Dh;for(let x of[...f])try{x()}catch{}f.clear()}}r.addEventListener("abort",A,{once:!0}),r.aborted&&A();function k(x,P){return!g()||P?.aborted?Promise.reject(_p()):new Promise((C,E)=>{let O=!1,L=(V,ne)=>{O||(O=!0,P?.removeEventListener("abort",z),r.removeEventListener("abort",z),f.delete(ee),ne!==void 0?E(ne):C(V))},z=()=>L(void 0,_p()),ee=()=>{g()||z()};f.add(ee),P?.addEventListener("abort",z,{once:!0}),r.addEventListener("abort",z,{once:!0}),x.then(()=>{!g()||P?.aborted?z():L(v())},()=>L(void 0,_p())),(!g()||P?.aborted)&&z()})}function S(x={}){let P=x.signal;if(!g()||P?.aborted)return Promise.reject(_p());if(w)return Promise.reject(_("unavailable","Notification readiness READ is occupied","notification_readiness_busy"));let C=Promise.resolve().then(async()=>{if(!g())return ki("notifications_fenced");if(l===null&&p&&Object.hasOwn(p,"declaration"))return Object.freeze({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null});if(!u&&Uh(l).length)return ki("notifications_consent_required");if(!l||typeof l!="object"||!u||typeof c!="string"||!/^[A-Za-z0-9._-]{1,64}$/.test(c))return ki("notifications_unsupported");try{let O=await u(c,{signal:r});return g()?!O||O.namespace!==c||!Array.isArray(O.timers)||O.timers.length>1e4?ki("notifications_response"):ki("notifications_unsupported"):ki("notifications_fenced")}catch{return ki(g()?"notifications_unavailable":"notifications_fenced")}});w=C,y(ki(null,!0));let E=C.then(O=>(y(O),v()),()=>(y(ki("notifications_unavailable")),v())).finally(()=>{w===C&&(w=null)});return k(E,P)}return Object.freeze({getSnapshot:v,subscribe(x){return m?()=>{}:(f.add(x),()=>{f.delete(x)})},start(x={}){return b?k(w??Promise.resolve(v()),x.signal):!g()||x.signal?.aborted?Promise.reject(_p()):(b=!0,S(x))},refresh:S,close:A})}var HM,ki,Dh,_p,gI=I(()=>{"use strict";re();Vw();HM=n=>Object.freeze({code:n}),ki=(n,e=!1)=>Object.freeze({checking:e,assessment:null,problem:n===null?null:HM(n)}),Dh=ki("notifications_fenced"),_p=()=>_("cancelled","Notification readiness ended","notification_readiness_fenced")});function vI(n){let e=new Set,t=!1,i=()=>{if(t||!n.isCurrent())return bI;let s=n.declaration;if(!s)return Ww;let r;try{r=n.grant()}catch{return GM}return r?s.required.some(a=>!r.actions.includes(a))?wI("files_access_missing"):n.scope==="collection"&&r.scope.kind!=="collection"?wI("files_scope_missing"):Ww:Ww},o=i();return Object.freeze({getSnapshot:()=>t||!n.isCurrent()?bI:o,subscribe(s){return t?()=>{}:(e.add(s),()=>{e.delete(s)})},async refresh(){let s=i();if(s!==o){o=s;for(let r of[...e])try{r()}catch{}}return o},close(){t=!0,e.clear()}})}var $h,Ww,bI,GM,wI,_I=I(()=>{"use strict";$h=n=>Object.freeze(n),Ww=$h({checking:!1,assessment:Object.freeze({status:"ready",problem:null}),problem:null}),bI=$h({checking:!1,assessment:null,problem:Object.freeze({code:"files_fenced"})}),GM=$h({checking:!1,assessment:null,problem:Object.freeze({code:"files_unavailable"})}),wI=n=>$h({checking:!1,assessment:Object.freeze({status:"incompatible",problem:Object.freeze({code:n})}),problem:null})});var zh,AI=I(()=>{"use strict";Mw();aI();uI();mI();gI();Vw();Nl();vh();_I();zh=class{constructor(e,t,i,o="block",s=()=>[]){this.typeIssues=o;this.consented=s;this.compiled=e,this.signal=i,this.ui=new il(t,i,Uh(this.compiled.manifest.notifications)),i.addEventListener("abort",this.abort,{once:!0})}typeIssues;consented;ui;signal;compiled;listeners=new Set;selected=null;epoch=0;opening=null;retiring=null;closing=null;changed=()=>{for(let e of[...this.listeners])try{e()}catch{}};abort=()=>{this.close().catch(()=>{})};subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}connection(e){return this.ui.connection(e)}getReadiness(){return this.selected?.readiness.getSnapshot()??null}selectedId(){return this.selected?.connection.id??null}adopt(e,t,i){let o=this.epoch,s=()=>!this.signal.aborted&&!this.closing&&!this.retiring&&this.epoch===o&&i(),r=!!this.opening||!!this.selected||!!this.retiring||!!this.closing,a=this.ui.adopt(e,{caller:t,isCurrent:s});if(r)return a;let p=null,l=[],c=a.then(d=>{if(!s()||t.aborted)throw new Ut("application_connection_fenced");let u=this.ui.owned();if(!u)throw new Ut("application_connection_binding");let f=bh(this.compiled);f&&z_(d.files,uC(f,()=>this.consented(d.id)));let h=new AbortController,m=AbortSignal.any([this.signal,h.signal]);p=h;let b=()=>s()&&d.isCurrent(),w={scope:d.scope,generation:d.generation,signal:m,isCurrent:b},g=dI({client:d.records,compiledManifest:this.compiled,journal:u.journal,...w,setupMode:u.setupMode},u.resourceSetup);l.push(()=>g.close());let y={getSnapshot:g.getSnapshot,subscribe:g.subscribe,refresh:g.assess,close:g.close},v=hI({people:d.people,...w});l.push(()=>v.close());let A=this.compiled.manifest.notifications,k=yI({notifications:{declaration:A?.criteria?.length?A:null},timers:d.timers,...w});l.push(()=>k.close());let S=this.compiled.manifest.requirements.files?.scope?.kind,x=vI({declaration:f,scope:typeof S=="string"?S:null,grant:()=>d.files.grant,isCurrent:b});l.push(()=>x.close());let P=this.compiled.nativeCapabilities?{...this.compiled.nativeCapabilities,contracts:this.compiled.manifest.requirements.contracts,typeIssues:this.typeIssues}:null,C=new Nh({connection:d,nativeRequirements:P,signal:m,isCurrent:b,configuration:y,files:x,people:v,notifications:k}),E=C.subscribe(this.changed);return this.selected={connection:d,lifetime:h,readiness:C,configuration:g,unsubscribe:E},p=null,l.length=0,this.changed(),d}).catch(async d=>{p?.abort();let f=(await Promise.allSettled([this.ui.retire(),...l.map(h=>Promise.resolve().then(h))])).find(h=>h.status==="rejected");throw f?.status==="rejected"?f.reason:d}).finally(()=>{this.opening===c&&(this.opening=null)});return this.opening=c,c}assess(e={}){return!this.selected||!this.selected.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new Ut("application_connection_fenced")):this.selected.readiness.refresh(e)}async configure(e={}){let t=this.selected,i=this.epoch;if(!t||!t.connection.isCurrent()||this.retiring||this.closing)throw new Ut("application_connection_fenced");if(await t.configuration.configure(e),e.signal?.aborted||this.epoch!==i||this.selected!==t||!t.connection.isCurrent())throw new Ut("application_connection_fenced");return t.readiness.refresh(e)}planSetup(e={}){let t=this.selected;return!t||!t.connection.isCurrent()||this.retiring||this.closing?Promise.reject(new Ut("application_connection_fenced")):t.configuration.plan(e)}async applySetup(e,t={}){let i=this.selected,o=this.epoch;if(!i||!i.connection.isCurrent()||this.retiring||this.closing)throw new Ut("application_connection_fenced");if(await i.configuration.apply(e,t),t.signal?.aborted||this.epoch!==o||this.selected!==i||!i.connection.isCurrent())throw new Ut("application_connection_fenced");return i.readiness.refresh(t)}retire(){if(this.retiring)return this.retiring;++this.epoch;let e=this.selected,t=this.opening;e?.lifetime.abort(),e?.unsubscribe();let i=this.ui.retire(),o=Promise.resolve().then(async()=>{let r=(await Promise.allSettled([i,t?.catch(()=>{}),e?.readiness.close()])).find(a=>a.status==="rejected");if(r?.status==="rejected")throw r.reason;this.selected===e&&(this.selected=null)});return this.retiring=o,this.changed(),o.then(()=>{this.retiring===o&&(this.retiring=null),this.changed()},()=>{}),o}close(){return this.closing?this.closing:(this.signal.removeEventListener("abort",this.abort),this.closing=Promise.resolve().then(async()=>{await this.retire(),await this.ui.close(),this.listeners.clear()}),this.closing)}}});function kI(n){return typeof n=="string"&&YM.includes(n)}var YM,SI=I(()=>{"use strict";YM=["joining","opening_store","connecting_log","syncing","loading_snapshot","replaying","waiting_for_key","verifying_read","checking_setup"]});function Kw(n,e){return!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!==e.split(",").sort().join()?al():n}function Hw(n){(typeof n!="string"||!JM.test(n)||/^0{8}-0{4}-0{4}-0{4}-0{12}$/.test(n))&&al()}function PI(n){let e=Kw(n,"rpc,action,value");if((!Number.isSafeInteger(e.rpc)||e.rpc<1||e.rpc>4294967295)&&al(),e.action==="cancel")e.value!==null&&al();else if(e.action==="prepare"){let t=Kw(e.value,`requestId,accountId,appId,challenge${Object.hasOwn(e.value,"authorizationId")?",authorizationId":""}`);for(let i of["requestId","accountId","appId"])Hw(t[i]);t.authorizationId!==void 0&&Hw(t.authorizationId),(typeof t.challenge!="string"||!/^[0-9a-f]{64}$/.test(t.challenge))&&al()}else if(e.action==="finish"){let t=Kw(e.value,"requestId,authorizationRequestId,collectionId");for(let i of Object.keys(t))Hw(t[i])}else al();return Object.freeze({...e,value:e.value===null?null:Object.freeze({...e.value})})}var JM,al,xI=I(()=>{"use strict";eh();JM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,al=()=>{throw new Se("application_worker_binding")}});function Gw(n){if(!n||typeof n!="object"||Array.isArray(n))throw new Se("application_worker_binding");let e=n;if(!["not_started","starting","signed_out","authorizing","unselected","opening","setup_required","ready","blocked","closed"].includes(e.status)||!(e.openingProgress==null||typeof e.openingProgress=="string")||!Array.isArray(e.collections)||e.collections.length>1024||!(e.selectedCollectionId===null||typeof e.selectedCollectionId=="string")||!(e.problem===null||typeof e.problem=="string"&&/^[a-z0-9_-]{1,128}$/.test(e.problem))||!(e.unsynced==null||typeof e.unsynced=="object"&&e.unsynced.collectionId===e.selectedCollectionId&&typeof e.unsynced.sessionStatus=="string")||!(e.unsyncedWork==null||typeof e.unsyncedWork=="object"&&Number.isSafeInteger(e.unsyncedWork.since)&&e.unsyncedWork.since>=0))throw new Se("application_worker_binding");return Object.freeze({...e,openingProgress:kI(e.openingProgress)?e.openingProgress:null})}var ll,Bh,CI=I(()=>{"use strict";SI();xI();eh();ll=class extends Error{constructor(t){super("SDK application operation unavailable");this.code=t;this.name="ApplicationWorkerReplyError"}code};Bh=class{port;binding;owner;nextId=0;active=null;portal=null;fault=null;stopping=null;stopReply=null;watch=null;abandoned=!1;constructor(e,t,i){if(!Ax(t))throw new Se("application_worker_binding");this.port=e,this.binding=t,this.owner=Object.freeze({...i}),e.addEventListener("message",this.message),e.addEventListener("messageerror",this.messageError),e.start()}id(){if(this.nextId===Qf)throw new Se("application_worker_stop_failed");return++this.nextId}send(e,t,i){let o=Xb([ti,this.binding,e,t,i],this.binding);try{this.port.postMessage(o)}catch{throw this.quarantine("application_worker_unavailable"),this.fault}}request(e,t,i,o){if(this.fault||this.stopping||i.aborted)return Promise.reject(this.fault??new Se("application_worker_fenced"));if(this.active)return Promise.reject(new Se("application_worker_busy"));let s;try{s=this.id(),Xb([ti,this.binding,s,e,t],this.binding)}catch(p){return Promise.reject(p)}if(o){if(!["authorize","renewExpiredPairing","requestFileAccess"].includes(e))return Promise.reject(new Se("application_worker_binding"));this.portal?.life.abort();try{this.portal?.value.close()}catch{return this.quarantine("application_worker_stop_failed"),Promise.reject(this.fault)}this.portal={id:s,value:o,caller:i,life:new AbortController,lastRpc:0,busy:!1},this.watchPortal()}let r,a=new Promise(p=>{r=p});return new Promise((p,l)=>{let c={id:s,caller:i,done:a,finish:r,resolve:p,reject:l,fenced:!1,reply:!1,handoff:null,cancel:()=>{c.fenced=!0,l(new Se("application_worker_fenced"))}};this.active=c,i.addEventListener("abort",c.cancel,{once:!0});try{this.send(s,e,t)}catch(d){l(d)}i.aborted&&c.cancel()})}drain(){return this.fault?Promise.reject(this.fault):this.active?.done??Promise.resolve()}setForeground(e){!this.stopping&&!this.fault&&this.send(0,"foreground",e)}watchPortal(){this.watch!==null&&clearInterval(this.watch),this.watch=null;let e=this.portal;!e||!("closed"in e.value)||(this.watch=setInterval(()=>{if(this.portal!==e||this.stopping||this.fault){clearInterval(this.watch),this.watch=null;return}let t=!1;try{t=e.value.closed===!0}catch{}if(t){clearInterval(this.watch),this.watch=null,e.lastRpc===0&&(this.portal=null);try{this.send(0,"approvalClosed",!0)}catch{}}},500))}messageError=()=>this.quarantine("application_worker_unavailable");quarantine(e){if(!this.fault){this.fault=new Se(e),this.active&&(this.active.fenced=!0,this.active.reject(this.fault)),this.stopReply?.reject(this.fault);try{this.owner.failed?.(this.fault)}catch{}}}message=e=>{try{let t=e.data;if(!Array.isArray(t)||t.length!==5||t[0]!==ti||t[1]!==this.binding||!Number.isInteger(t[3])||t[3]<0||t[3]>Qf)throw new Se("application_worker_binding");if(this.fault)return;let[,,i,o,s]=t;if(i==="nativeSnapshot"){if(o!==0)throw new Se("application_worker_binding");let l=Gw(s);this.stopping||this.owner.snapshot(l);return}if(i==="fatal"){if(o!==0)throw new Se("application_worker_binding");this.quarantine("application_worker_stop_failed");return}if(i==="nativeAuthorization"){let l=PI(s),c=this.portal;if(!c||c.id!==o||this.stopping||c.caller.aborted||l.rpc<=c.lastRpc)throw new Se("application_worker_fenced");if(c.lastRpc=l.rpc,l.action==="cancel")c.life.abort();else if(c.busy)throw new Se("application_worker_binding");l.action!=="cancel"&&(c.busy=!0);let d=AbortSignal.any([c.caller,c.life.signal]);Promise.resolve().then(()=>{if(!this.owner.nativeAuthorization)throw new Se("application_worker_unavailable");return this.owner.nativeAuthorization(l,c.value,d)}).then(u=>{if(d.aborted||this.portal!==c||this.stopping)throw new Se("application_worker_fenced");this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!0,value:u}])},()=>{this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}).catch(()=>{try{this.port.postMessage([ti,this.binding,"nativeAuthorizationReply",o,{rpc:l.rpc,ok:!1}])}catch{}}).finally(()=>{c.busy=!1});return}if(i==="portal"){if(!s||!["navigate","close"].includes(s.action))throw new Se("application_worker_binding");let l=this.portal;if(!l||l.id!==o)return;if(s.action==="close")l.life.abort(),l.value.close(),this.portal=null;else{if(this.stopping||typeof s.uri!="string"||s.uri.length>8192)throw new Se("application_worker_binding");l.value.navigate(s.uri)}return}if(i==="handoff"&&o===0){if(!s||s.schema!=="mdbn-app-collection/1")throw new Se("application_worker_binding");let l=[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]];if(l.some(c=>!(c instanceof MessagePort)))throw new Se("application_worker_binding");if(this.stopping||!this.owner.attached){for(let c of l)c.close();return}this.owner.attached(s);return}if(i==="handoff"){let l=this.active;if(!l||l.id!==o||l.reply||l.handoff)throw new Se("application_worker_binding");if(this.stopping){if(!s||s.schema!=="mdbn-app-collection/1")throw new Se("application_worker_binding");for(let c of[s.dataPort,s.controlPort,...s.timerPort?[s.timerPort]:[]]){if(!(c instanceof MessagePort))throw new Se("application_worker_binding");c.close()}l.handoff=Promise.resolve();return}l.handoff=Promise.resolve().then(()=>this.owner.handoff(s,l.caller)),l.handoff.catch(()=>{});return}if(i!=="reply"||!s||typeof s.ok!="boolean"||!s.ok&&(!s.problem||typeof s.problem.code!="string"||s.problem.code.length>128))throw new Se("application_worker_binding");let r=this.stopReply;if(r&&r.id===o){if(s.ok){let l=Gw(s.snapshot);if(l.status!=="closed"||l.selectedCollectionId!==null)throw new Se("application_worker_stop_failed");r.resolve()}else r.reject(new Se("application_worker_stop_failed"));return}let a=this.active;if(!a||a.id!==o||a.reply)throw new Se("application_worker_binding");a.reply=!0;let p=s.ok?Gw(s.snapshot):null;this.settle(a,p,s.ok?null:Object.freeze({code:s.problem.code}))}catch{this.quarantine("application_worker_binding")}};async settle(e,t,i){try{if(await e.handoff,e.fenced||e.caller.aborted||this.stopping||this.fault)throw this.fault??new Se("application_worker_fenced");if(i)throw new ll(i.code);t&&e.resolve(t)}catch(o){e.reject(o)}finally{e.caller.removeEventListener("abort",e.cancel),this.active===e&&(this.active=null),e.finish()}}abandon(){if(this.abandoned)return;this.abandoned=!0,this.fault||(this.fault=new Se("application_worker_fenced")),this.watch!==null&&(clearInterval(this.watch),this.watch=null);let e=this.active;e&&(e.fenced=!0,e.reject(this.fault),e.finish(),this.active=null),this.stopReply?.reject(this.fault),this.stopReply=null,this.portal?.life.abort();try{this.portal?.value.close()}catch{}this.portal=null;try{this.owner.releaseWorker()}catch{}this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}close(){if(this.stopping)return this.stopping;let e=this.active;return e&&(e.fenced=!0,e.reject(new Se("application_worker_fenced"))),this.stopping=Promise.resolve().then(async()=>{if(this.fault)throw new Se("application_worker_stop_failed");this.portal?.life.abort(),this.portal?.value.close(),this.portal=null;let t=this.id();if(await new Promise((i,o)=>{this.stopReply={id:t,resolve:i,reject:o};try{this.send(t,"close",null)}catch(s){o(s)}}),await e?.done,this.fault)throw new Se("application_worker_stop_failed");this.owner.releaseWorker(),this.port.removeEventListener("message",this.message),this.port.removeEventListener("messageerror",this.messageError),this.port.close()}).catch(t=>{throw this.quarantine("application_worker_stop_failed"),t}),this.stopping}}});var II={};ps(II,{ApplicationRuntime:()=>Jw,ApplicationRuntimeError:()=>ln});var ln,Yw,Jw,OI=I(()=>{"use strict";ZC();AI();Mw();bt();vh();CI();Zb();ln=class extends Error{constructor(t){super("SDK application runtime unavailable");this.code=t;this.name="ApplicationRuntimeError"}code},Yw=()=>{let n=Object.freeze({checking:!1,assessment:null,problem:null});return Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:n,contracts:n,configuration:n,files:n,people:n,notifications:n})})},Jw=class{lifetime=new AbortController;scope;worker;cpOrigin;lab;appName;sourceAdopt=null;listeners=new Set;unsubscribe;raw=Object.freeze({status:"not_started",collections:Object.freeze([]),selectedCollectionId:null,signIn:null,problem:null,timing:null});snapshot=Object.freeze({...this.raw,readiness:Yw()});pending=null;closing=null;epoch=0;loggedProblem=null;assessing=!1;retiring=!1;closed=!1;stopped=!1;stopFailed=!1;constructor(e){this.cpOrigin=e.cpOrigin,this.appName=e.declaration.name,this.lab=en(e.declaration.environment),this.scope=new zh(e.compiledManifest,{name:e.declaration.name,version:"1"},this.lifetime.signal,e.typeIssues,t=>wh(this.raw,t)),this.worker=new Bh(e.port,e.binding,{snapshot:t=>{this.closed||(this.raw=t,this.followSession(),this.publish())},handoff:(t,i)=>{if(this.sourceAdopt)return this.sourceAdopt(t,i);let o=this.epoch;return this.scope.adopt(t,i,()=>!this.closed&&this.epoch===o).then(()=>{this.portsFailed=null},s=>{throw this.portsFailed=t.scope.collection,s})},attached:t=>this.attached(t),releaseWorker:e.releaseWorker,...e.nativeAuthorization?{nativeAuthorization:e.nativeAuthorization}:{},failed:t=>{this.closed||(this.raw=Object.freeze({...this.raw,status:"blocked",problem:t.code}),this.publish())}}),this.unsubscribe=this.scope.subscribe(()=>this.publish())}portsFailed=null;attached(e){let t=()=>{for(let o of[e.dataPort,e.controlPort,...e.timerPort?[e.timerPort]:[]])try{o.close()}catch{}};if(this.closed){t();return}let i=this.lifetime.signal;this.queue(()=>this.action(async()=>{if(this.raw.selectedCollectionId!==e.scope.collection)return t(),this.snapshot;this.scope.selectedId()!==null&&(++this.epoch,await this.retireOwn());let o=this.epoch;return await this.scope.adopt(e,i,()=>!this.closed&&this.epoch===o).catch(s=>{throw this.portsFailed=e.scope.collection,s}),this.portsFailed=null,this.complete(this.raw,i)},i)).catch(()=>{this.closed||this.publish()})}followSession(){if(this.pending)return;let e=this.raw.status==="ready"||this.raw.status==="setup_required",t=this.raw.selectedCollectionId,i=this.scope.selectedId();if(i!==null&&(i!==t||!e&&this.raw.status!=="opening"&&this.raw.status!=="authorizing")){let o=this.lifetime.signal;this.queue(()=>this.action(async()=>(this.scope.selectedId()===i&&(++this.epoch,await this.retireOwn()),this.publish(),this.snapshot),o)).catch(()=>{})}}connection(e){return this.closed?null:this.scope.connection(e)}getSnapshot(){return this.snapshot}getNativeSnapshot(){return this.raw}async queue(e){for(;this.pending&&!this.closed;)await this.pending.catch(()=>{});return e()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}publish(){if(this.closed)this.snapshot=Object.freeze({...this.raw,status:this.stopped?"closed":"blocked",problem:this.stopped?null:this.stopFailed?"application_stop_failed":"application_closing",selectedCollectionId:null,readiness:Yw()});else{let e=this.scope.getReadiness()??Yw(),t=this.raw.status,i=this.raw.problem,o,s=this.raw.selectedCollectionId,r=this.retiring&&e.problem?.code==="readiness_fenced",a=s!==null&&(this.scope.getReadiness()===null||r)&&this.portsFailed!==s;if((t==="ready"||t==="setup_required")&&a)t="opening";else if(t==="ready"||t==="setup_required"){let l=this.assessing&&!e.assessment&&e.problem?.code!=="readiness_fenced";if(t=e.checking||l?"opening":e.assessment?.status==="ready"?"ready":e.assessment?.status==="setup_required"?"setup_required":"blocked",t==="blocked"){let c=e.problem??e.assessment?.problem;i=c?.code??"application_readiness_unavailable",o=c?.detail}}let p=`${i}:${o??""}`;if(t==="blocked"&&i&&p!==this.loggedProblem){this.loggedProblem=p;try{o?console.error("mdbase application blocked:",i,o):console.error("mdbase application blocked:",i)}catch{}}else t!=="blocked"&&(this.loggedProblem=null);this.snapshot=Object.freeze({...this.raw,status:t,problem:i,openingProgress:t==="opening"?e.checking?"checking_setup":this.raw.openingProgress??null:null,collections:Object.freeze(this.raw.collections.map(l=>Object.freeze({...l}))),readiness:e})}for(let e of[...this.listeners])try{e()}catch{}}retireOwn(){return this.retiring=!0,this.scope.retire()}settled(){return this.assessing=!1,this.publish(),this.snapshot}signal(e){return e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal}action(e,t){if(this.closed||t.aborted)return Promise.reject(new ln("application_fenced"));if(this.pending)return Promise.reject(new ln("application_busy"));this.assessing=!0;let i=Promise.resolve().then(async()=>{if(this.closed||t.aborted)throw new ln("application_fenced");let o=await e();if(this.closed||t.aborted)throw new ln("application_fenced");return o}).finally(async()=>{(this.assessing||this.retiring)&&(this.assessing=!1,this.retiring=!1,this.publish()),await this.worker.drain(),this.pending===i&&(this.pending=null)});return this.pending=i,i}async complete(e,t){if(this.closed||t.aborted)throw new ln("application_fenced");let i=!!(e.selectedCollectionId&&this.scope.connection(e.selectedCollectionId));if(this.raw=e,this.assessing=i,this.publish(),i){try{await this.scope.assess({signal:t}).catch(()=>{})}finally{this.assessing=!1}this.publish()}if(this.closed||t.aborted)throw new ln("application_fenced");return this.snapshot}start(e={}){let t=this.signal(e);return this.action(async()=>this.complete(await this.worker.request("start",null,t),t),t)}authorizeReserved(e,t={},i=null){let o=this.signal(t);return this.action(async()=>this.complete(await this.worker.request("authorize",i,o,e),o),o).catch(s=>{throw e.close(),s})}authorize(e={}){let t=this.signal(e),i;try{i=th(nh(this.cpOrigin,t,()=>!this.closed,this.lab))}catch(o){return Promise.reject(o)}return this.authorizeReserved(i,e)}select(e,t={}){let i=this.signal(t);return this.action(async()=>{if(this.raw.selectedCollectionId===e&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(e)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,i):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||i.aborted)throw new ln("application_fenced");return this.complete(await this.worker.request("select",e,i),i)},i)}openUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null;if(i!==null&&this.raw.selectedCollectionId===i&&(this.raw.status==="ready"||this.raw.status==="setup_required")&&this.scope.connection(i)?.isCurrent())return this.snapshot.status==="blocked"?this.complete(this.raw,t):this.snapshot;++this.epoch;let o=this.retireOwn();if(this.publish(),await o,this.closed||t.aborted)throw new ln("application_fenced");return this.complete(await this.worker.request("openUnsynced",null,t),t)},t)}async retireUnsynced(e,t,i={}){let o=this.signal(i),s=!0;return await this.queue(()=>this.action(async()=>{try{return this.complete(await this.worker.request("retireUnsynced",[e,t],o),o)}catch(r){if(r instanceof ll&&r.code==="application_worker_busy")return s=!1,this.snapshot;throw r}},o)),s}discardUnsynced(e={}){let t=this.signal(e);return this.action(async()=>{let i=this.raw.unsynced?.collectionId??null,o=i!==null&&this.raw.selectedCollectionId===i;if(o){++this.epoch;let s=this.retireOwn();if(this.publish(),await s,this.closed||t.aborted)throw new ln("application_fenced")}try{return this.complete(await this.worker.request("discardUnsynced",null,t),t)}catch(s){throw o&&s instanceof ll&&s.code==="application_worker_busy"&&!this.closed&&!t.aborted&&this.complete(await this.worker.request("openUnsynced",null,t),t),s}},t)}async withUnsyncedSource(e,t={}){let i=this.signal(t),o=new il({name:this.appName,version:"1"},i),s=null;try{if(await this.queue(()=>this.action(async()=>{this.sourceAdopt=(r,a)=>(s=o.adopt(r,{caller:a,isCurrent:()=>!this.closed&&!i.aborted}),s.then(()=>{}));try{await this.worker.request("attachUnsynced",null,i)}finally{this.sourceAdopt=null}return this.snapshot},i)),!s)throw new ln("application_connection_unavailable");return await e(await s,i)}finally{if(await o.close().catch(()=>{}),!this.closed){let r=this.lifetime.signal;await this.queue(()=>this.action(async()=>(await this.worker.request("detachUnsynced",null,r),this.snapshot),r)).catch(()=>{})}}}assess(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.assess({signal:t}),this.settled()),t).then(i=>i.readiness)}configure(e={}){let t=this.signal(e);return this.action(async()=>(await this.scope.configure({signal:t}),this.settled()),t)}planSetup(e={}){let t=this.signal(e);return this.closed||t.aborted?Promise.reject(new ln("application_fenced")):this.scope.planSetup({...e,signal:t})}applySetup(e,t={}){let i=this.signal(t);return this.action(async()=>(await this.scope.applySetup(e,{signal:i}),this.settled()),i)}clearSelection(e={}){let t=this.signal(e);return this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("clearSelection",null,t),t)),t)}forget(e,t={}){let i=this.signal(t);return this.action(async()=>(this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,i),i)),i)}refreshCollections(e={}){let t=this.signal(e);return this.action(async()=>(this.raw=await this.worker.request("refreshCollections",null,t),this.publish(),this.snapshot),t)}signOut(e={}){let t=this.signal(e),i=this.raw.selectedCollectionId,o=e.discard!==!0&&i?JC(this.scope.connection(i)):0;return o>0?Promise.reject(XC(o)):this.action(async()=>(++this.epoch,await this.retireOwn(),this.complete(await this.worker.request("signOut",null,t),t)),t)}deleteCollection(e,t,i={}){let o=this.signal(i);return this.action(async()=>(await this.worker.request("deleteCollection",[e,t],o),this.raw.selectedCollectionId===e&&(++this.epoch,await this.retireOwn()),this.complete(await this.worker.request("forget",e,o),o)),o)}requestFileAccess(e,t,i,o,s={}){let r=this.signal(s);return this.action(async()=>(this.raw=await this.worker.request("requestFileAccess",[t,i,o],r,e),this.publish(),this.snapshot),r).catch(a=>{throw e.close(),a})}pollFileAccess(e){let t=this.lifetime.signal;return this.action(async()=>(this.raw=await this.worker.request("pollFileAccess",e,t),this.publish(),this.snapshot),t)}setForeground(e){this.closed||this.worker.setForeground(e)}abandon(){this.closed||(this.closed=!0,this.stopped=!0,++this.epoch,this.unsubscribe(),this.listeners.clear(),this.closing=Promise.resolve(),this.worker.abandon(),this.lifetime.abort())}close(){return this.closing?this.closing:(this.closed=!0,++this.epoch,this.lifetime.abort(),this.unsubscribe(),this.closing=Promise.resolve().then(async()=>{await Promise.all([this.scope.close(),this.worker.close()]),await this.pending?.catch(()=>{}),this.stopped=!0,this.publish(),this.listeners.clear()}).catch(()=>{throw this.stopFailed=!0,this.publish(),new ln("application_stop_failed")}),this.publish(),this.closing)}}});var N2={};ps(N2,{ACCOUNT_KEY_STATES:()=>gy,API_VERSIONS:()=>dd,AppHost:()=>dv,COLLECTION_UNAVAILABLE_REASONS:()=>Gy,CborError:()=>Oe,Client:()=>Ed,DESCRIBE_TYPING_MAX_PATHS:()=>Rl,DESCRIBE_TYPING_MAX_TYPES:()=>Ol,DEVICE_KINDS:()=>yy,ERROR_CODES:()=>Rp,FilesApi:()=>ks,Float64:()=>yt,HOLD_COMPARE_SCHEME:()=>sc,HOLD_TITLE:()=>oc,IkInitiator:()=>qs,IkResponder:()=>nu,LiveQuery:()=>xs,MAX_CONVENIENCE_BYTES:()=>ud,MAX_DEPTH:()=>am,MDBASE_NOTIFICATION_CLICK:()=>lg,MDBASE_NOTIFICATION_TYPE:()=>rc,MdbaseApplicationUnavailableError:()=>Ap,MdbaseClient:()=>qi,MdbaseConnect:()=>dl,MdbaseError:()=>se,MdbasePeopleClient:()=>Ur,NoiseError:()=>rt,PERSON_CONTRACT:()=>ng,PROBLEM_CODES:()=>vk,PresenceApi:()=>Ps,READ_MANY_MAX_CONCURRENCY:()=>oy,READ_MANY_MAX_REFS:()=>ry,RecordReader:()=>Tl,SESSION_LIFETIME_MS:()=>Fy,SLOW_OPENING_MS:()=>ku,SchemaError:()=>ie,Session:()=>wo,TEMPORAL_HINTS:()=>Yp,TimersApi:()=>Ds,WasmRuntime:()=>Bs,Write:()=>ko,applicationPhase:()=>lc,approvalReadiness:()=>kA,bytesEqual:()=>fO,clientPrologue:()=>Mi,collectionUnavailableError:()=>hn,compareVersions:()=>yg,connect:()=>ky,controlRouteResolver:()=>Y0,createMdbase:()=>qI,createViewSource:()=>wd,decode:()=>ue,describeDiagnostic:()=>wu,describeError:()=>No,describeHold:()=>pk,diffEdits:()=>td,duplexCarrier:()=>Jy,effectiveCapabilities:()=>TI,encode:()=>pe,encodeSecret:()=>An,fileGrant:()=>iy,formatSas:()=>xA,framedPort:()=>ld,fromHex:()=>ds,generateKeyPair:()=>Ts,handleMdbaseNotificationClick:()=>lk,handleMdbasePush:()=>ak,holdCompareLink:()=>ug,holdNotice:()=>dk,inProcessConnector:()=>zs,indexedDbKeyStorage:()=>eg,isCollectionUnavailableReason:()=>Ns,isConfirmed:()=>G0,isErrorCode:()=>xr,isMdbaseError:()=>X,isReadyPhase:()=>Ck,isValid:()=>dO,keyPairFromSecret:()=>T0,loadOrCreateClientKey:()=>W0,localLinkConnector:()=>z0,localLinkFirstPayload:()=>Zy,mdbaseError:()=>_,memoryKeyStorage:()=>Qy,memoryWriteLedgerStore:()=>Pd,nextRelayConnector:()=>$0,noiseChannel:()=>Vy,noiseConnector:()=>Li,orderTargets:()=>Us,parseCollectionAvailability:()=>Fn,parseHoldCompareLink:()=>ck,parseMdbaseNativeNotification:()=>cg,parseMdbasePush:()=>pu,parseVersion:()=>Hs,pipeCloseError:()=>Lo,portPair:()=>R_,problemCodeOf:()=>hg,queryPages:()=>hd,readMany:()=>fd,readMdbaseNotificationData:()=>pg,readViewSourceRecord:()=>bd,recoveryFor:()=>yO,relayConnector:()=>N0,relayPipeCarrier:()=>js,resolveRecordLinks:()=>B_,revisionOf:()=>ai,routeFromControl:()=>tg,sameIdentity:()=>au,showMdbaseNotification:()=>dg,staticKeyOf:()=>eu,streamCarrier:()=>L0,structMap:()=>uO,summarizeStatus:()=>ou,syncStatusText:()=>uk,toHex:()=>oi,toPlain:()=>vs,toValue:()=>ut,updateViewSource:()=>vd,uuidv7:()=>Nn,valueEquals:()=>Rr,versionRelation:()=>Uo,webSocketCarrier:()=>Ms,wire:()=>Wm});Je();ge();re();At();At();Cs();sy();dy();Nl();Nl();uy();Ll();Ml();Ri();ge();re();Mo();Ls();ec();function N0(n){let e=U(n.collection),t=n.grant?U(n.grant):null;return Li({description:`relay:${n.collection}`,staticKey:n.staticKey,target:async()=>{let i=await n.resolveRoute();if(!i)throw _("unavailable","no device of this collection is online","no_device_online");return{prologue:Mi(e,t,U(i.targetDevice)),remoteStatic:i.noisePublicKey,device:i.targetDevice,openCarrier:o=>i.pipe?js(i.url,{accessToken:i.pipe.accessToken,collection:i.pipe.collection,grant:n.grant??"",device:i.targetDevice,devicePublicKey:i.noisePublicKey},n.webSocket,o):Ms(i.url,n.webSocket,o)}}})}Xy();Ls();Mo();Je();ge();re();At();Mo();Ls();var hR=new Uint8Array(16);function Zy(n,e){if(n.length!==32)throw _("invalid_request","the link token is 32 bytes");let t=er.dec(e);if(t.kind!=="request"||t.method!=="hello")throw _("internal","expected the hello request");return pe(new Map([[0,n],[1,t.params]]))}function z0(n){let e=U(n.collection),t=n.staticKey??Ts(),i=null;return Li({description:"localhost-link",staticKey:t,firstPayload:o=>Zy(i.token,o),target:async()=>{i=typeof n.link=="function"?await n.link():n.link;let o=i;if(!Number.isInteger(o.port)||o.port<=0||o.port>65535)throw _("unavailable","invalid local link port","daemon_not_running");let s=Mi(e,null,n.localOnly?hR:U(o.device));return{prologue:s,preamble:s,remoteStatic:o.noisePublicKey,openCarrier:r=>Ms(`ws://127.0.0.1:${o.port}/v1/plugin`,n.webSocket,r)}}})}zy();re();function Qy(){let n=new Map;return{get:async e=>n.get(e),put:async(e,t)=>{n.set(e,t)},putIfAbsent:async(e,t)=>{let i=n.get(e);return i||(n.set(e,t),t)},delete:async e=>{n.delete(e)}}}function eg(n="mdbase-keys",e="keys"){let t=globalThis.indexedDB;if(!t)throw _("invalid_request","IndexedDB is not available here; pass another KeyStorage");let i=()=>new Promise((r,a)=>{let p=t.open(n,1);p.onupgradeneeded=()=>p.result.createObjectStore(e),p.onsuccess=()=>r(p.result),p.onerror=()=>a(p.error)}),o=async(r,a)=>{let p=await i();try{return await new Promise((l,c)=>{let d=p.transaction(e,r),u,f=!1;d.oncomplete=()=>f?l(u):c(_("unavailable","key storage transaction completed without a result","key_storage")),d.onabort=()=>c(d.error??_("unavailable","key storage transaction aborted","key_storage")),d.onerror=()=>c(d.error??_("unavailable","key storage transaction failed","key_storage"));try{a(d.objectStore(e),h=>{u=h,f=!0})}catch(h){d.abort(),c(h)}})}finally{p.close()}},s=(r,a)=>o(r,(p,l)=>{let c=a(p);c.onsuccess=()=>l(c.result)});return{get:r=>s("readonly",a=>a.get(r)),put:(r,a)=>s("readwrite",p=>p.put(a,r)).then(()=>{}),putIfAbsent:(r,a)=>o("readwrite",(p,l)=>{let c=p.get(r);c.onsuccess=()=>{if(c.result!==void 0){l(c.result);return}try{let d=p.add(a,r);d.onsuccess=()=>l(a)}catch{p.transaction.abort()}}}),delete:r=>s("readwrite",a=>a.delete(r)).then(()=>{})}}function V0(){return globalThis.crypto?.subtle}async function mR(){let n=V0();if(!n)return null;try{let e=await n.generateKey({name:"X25519"},!1,["deriveBits"]),t=new Uint8Array(await n.exportKey("raw",e.publicKey));return{kind:"webcrypto",privateKey:e.privateKey,publicKey:t}}catch{return null}}function yR(n){return n.kind==="raw"?{publicKey:n.publicKey,nonExtractable:!1,dh:e=>ar.getSharedSecret(n.secretKey,e)}:{publicKey:n.publicKey,nonExtractable:!n.privateKey.extractable,dh:async e=>{let t=V0(),i=await t.importKey("raw",e,{name:"X25519"},!1,[]),o=await t.deriveBits({name:"X25519",public:i},n.privateKey,256);return new Uint8Array(o)}}}var gR=Qy(),B0=new WeakMap;function F0(n,e){if(e&&(n.kind!=="webcrypto"||n.privateKey.extractable!==!1||n.privateKey.type!=="private"||n.privateKey.algorithm.name!=="X25519"||!n.privateKey.usages.includes("deriveBits")))throw _("invalid_request","a non-extractable X25519 key is required; explicitly reauthorize incompatible stored identities","key_storage")}async function W0(n,e={}){let t=e.storage??(globalThis.indexedDB?eg():gR),i=e.requireNonExtractable,o=B0.get(t);o||(o=new Map,B0.set(t,o));let s=o.get(n);s||(s=(async()=>{let r=await t.get(n);if(r)return r;let a=await mR();if(!a){if(i)throw _("invalid_request","this platform cannot keep a non-extractable X25519 key","key_storage");let p=ar.utils.randomSecretKey();a={kind:"raw",secretKey:p,publicKey:ar.getPublicKey(p)}}return F0(a,i),t.putIfAbsent?t.putIfAbsent(n,a):(await t.put(n,a),a)})(),o.set(n,s));try{let r=await s;return F0(r,i),yR(r)}finally{o.get(n)===s&&o.delete(n)}}by();var K0={collection_not_yet_migrated:"Your collection needs an upgrade on your computer; your changes are safe",collection_migrating:"Your collection is being upgraded; changes will sync when it's done",update_required:"Update the app to keep syncing",account_suspended:"Syncing is paused: your account is suspended"},H0={offline:"You're offline",unreachable:"Can't reach the sync service",server_busy:"The sync service is busy; trying again shortly",rate_limited:"Syncing is paused for a moment",auth:"Sign in again to keep syncing"};function ou(n,e,t,i){let o=n.mode!=="local_only"&&t&&Object.hasOwn(H0,t.kind)?t.kind:null,s={pending:n.pending,holds:n.holds,conflicts:n.unresolved,confirmedThrough:n.mode==="local_only"?null:n.confirmedThrough,health:o,live:n.mode==="local_only"||typeof i!="boolean"?null:i},r=n.pending>0?`, ${n.pending} change${n.pending===1?"":"s"} waiting`:"";if(n.mode==="local_only")return{...s,kind:"local",text:n.pending?`Saving${r}`:"Saved on this device"};if(e&&Object.hasOwn(K0,e))return{...s,kind:e,text:`${K0[e]}${r}`};if(n.installing)return{...s,kind:"installing",text:`Loading the collection (${n.installing.done}/${n.installing.total})`};if(o){let p=n.pending?`. ${n.pending} change${n.pending===1?" is":"s are"} saved on this device and will sync later`:"";return{...s,kind:o==="offline"||o==="unreachable"?"offline":n.confirmedThrough<n.headKnown?"catching_up":"synced",text:`${H0[o]}${p}`}}if(n.connection!=="online")return{...s,kind:"offline",text:`Offline; synced through ${n.confirmedThrough}${r}`};if(n.confirmedThrough<n.headKnown)return{...s,kind:"catching_up",text:`Catching up (${n.confirmedThrough}/${n.headKnown})${r}`};let a=s.live===!1?". Live updates are paused; changes from other devices appear when you come back to this app":"";return{...s,kind:"synced",text:`Synced through ${n.confirmedThrough}${r}${a}`}}function G0(n){return n.state==="confirmed"}vy();ec();iu();Je();Nr();re();function tg(n,e){for(let t of n.targets??[]){if(!/^[0-9a-f]{64}$/i.test(t.noise_pk)||!t.url||!t.device)continue;let i={url:t.url,targetDevice:t.device,noisePublicKey:ds(t.noise_pk)};return t.relay_collection&&(i.pipe={collection:t.relay_collection,accessToken:e}),i}return null}function Y0(n){let e;try{e=new URL(n.server)}catch{throw _("invalid_request","The control plane requires an HTTPS origin")}if(e.protocol!=="https:"&&!!1||e.username||e.password||e.pathname!=="/"||e.search||e.hash)throw _("invalid_request","The control plane requires an HTTPS origin without credentials, path, query or fragment");let t=`${e.origin}/v1/next/collections/${encodeURIComponent(n.collection)}/route`,i=n.fetch??globalThis.fetch.bind(globalThis);return async()=>{let o=await n.accessToken(),s;try{s=await i(t,{headers:{authorization:`Bearer ${o}`},redirect:"error"})}catch{throw _("unavailable","cannot reach the control plane","control_unreachable")}if(s.status===401)throw _("unauthenticated","the control plane refused the access token");if(s.status===409)throw _("unauthenticated","this app's key is not registered with its grant","client_key_required");if(!s.ok)throw _("unavailable",`control plane answered ${s.status}`,"control_error");let r=await s.json(),a=Fn(r.availability);if(a?.state==="unavailable")throw hn(a.reason);let p=tg(r,o);if(!p&&r.reason==="no_device_registered")throw _("unavailable","this collection has no device set up to serve it","no_device_registered");return p}}Nr();lu();sg();re();var rc="mdbase.notification",lg="mdbase.notification.click",nk=/^[\x21-\x7e]{1,256}$/,PR=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,Dr=n=>_("invalid_request",n,"invalid_push_payload"),xR=()=>_("upgrade_required","The push uses an envelope version this SDK does not support.","unsupported_push_version");function rk(n){if(typeof n=="string")try{n=JSON.parse(n)}catch{throw Dr("The push payload is not JSON.")}else if(n&&typeof n=="object"&&typeof n.json=="function")try{n=n.json()}catch{throw Dr("The push payload is not JSON.")}if(!n||typeof n!="object"||Array.isArray(n))throw Dr("The push payload is not an object.");return n}function $s(n,e,t){return typeof n=="string"&&n.length>=e&&n.length<=t}function ok(n){if(!n||typeof n!="object"||Array.isArray(n))return null;let e=n;return!$s(e.title,1,80)||e.body!==void 0&&!$s(e.body,0,160)||e.tag!==void 0&&!$s(e.tag,1,80)?null:Object.freeze({title:e.title,...typeof e.body=="string"&&e.body.length?{body:e.body}:{},...typeof e.tag=="string"?{tag:e.tag}:{}})}function sk(n,e,t){if(n.type!==rc)throw Dr("The payload is not an mdbase notification.");if(e!==1)throw typeof e=="number"&&Number.isSafeInteger(e)&&e>1?xR():Dr("The payload has no valid envelope version.");if(!$s(n.signal_id,1,256)||!nk.test(n.signal_id)||!$s(n.cursor,1,256)||!nk.test(n.cursor)||!$s(n.criterion_id,1,100)||!PR.test(n.criterion_id))throw Dr("The payload is not an mdbase notification.");return Object.freeze({version:1,signalId:n.signal_id,criterionId:n.criterion_id,cursor:n.cursor,presentation:t})}function pu(n){let e=rk(n),t=sk(e,e.version,ok(e.presentation));if(!t.presentation)throw Dr("The push has no valid presentation.");return t}function cg(n){if(!n||typeof n!="object"||Array.isArray(n))throw Dr("The native notification data is not an object.");let e=n,t=typeof e.version=="string"&&/^[1-9][0-9]{0,8}$/.test(e.version)?Number(e.version):e.version;return sk(e,t,null)}function pg(n){try{return cg(n)}catch{return null}}function CR(n){return{type:rc,version:n.version,signal_id:n.signalId,criterion_id:n.criterionId,cursor:n.cursor}}async function dg(n,e,t={}){let i=pu(e),o=i.presentation;return await n.showNotification(o.title,{...o.body?{body:o.body}:{},...o.tag?{tag:o.tag}:{},...t.icon?{icon:t.icon}:{},...t.badge?{badge:t.badge}:{},data:CR(i)}),i}function ag(n){return globalThis[n]}function IR(n){let e=globalThis.location;if(typeof e?.origin=="string"&&e.origin!=="null")return e.origin;try{return n?new URL(n).origin:null}catch{return null}}function ik(n,e,t){let i=()=>_("invalid_request",`The notification click ${t} must be on the app's own origin.`,"click_target_cross_origin");if(typeof n!="string")throw i();if(e===null){if(!n.startsWith("/")||n.startsWith("//")||n.startsWith("/\\"))throw i();return n}let o;try{o=new URL(n,`${e}/`)}catch{throw i()}if(o.origin!==e)throw i();return o.href}function ak(n,e={}){let t;try{t=rk(n.data?.text()??null)}catch{return!1}if(t.type!==rc)return!1;let i=e.registration??ag("registration");if(!i)throw _("invalid_request","No service worker registration to show the notification.","push_registration_missing");let o={...e.icon?{icon:e.icon}:{},...e.badge?{badge:e.badge}:{}};return n.waitUntil((async()=>{try{pu(t)}catch(s){let r=s instanceof se&&s.reason==="unsupported_push_version"?ok(t.presentation):null;if(!r)throw s;return await i.showNotification(r.title,{...r.body?{body:r.body}:{},...r.tag?{tag:r.tag}:{},...o}),null}return dg(i,t,o)})()),!0}function lk(n,e={}){let t=pg(n.notification.data);if(!t)return!1;n.notification.close();let i=e.clients??ag("clients"),o=ag("registration")?.scope,s=IR(o),r=e.scope===void 0?o:ik(e.scope,s,"scope"),a=e.url===void 0?r??"/":ik(e.url,s,"url");return i&&n.waitUntil((async()=>{let l=(await i.matchAll({type:"window",includeUncontrolled:!0})).find(d=>!r||d.url.startsWith(r));if(!l)return i.openWindow(a);await l.focus();let c={type:lg,notification:t};return l.postMessage(c),l})()),!0}du();Je();re();ge();var Bs=class n{constructor(e){this.instance=e}instance;ports=new Map;timer=null;opened=!1;get x(){if(!this.instance)throw _("unavailable","runtime instance was discarded after an ABI failure");return this.instance}discard(){this.instance=null,this.timer&&clearInterval(this.timer),this.timer=null;for(let e of[...this.ports.values()])e.end();this.ports.clear()}static async instantiate(e){return new n(await this.load(e))}static async load(e,t){let i=null,o=null,s=t?.(()=>{if(!o)throw _("unavailable","runtime imports called before initialization");return o})??{},r=new TextDecoder,a={host_app_sql:(c,d)=>0n,host_now_ms:()=>Date.now(),host_local_date:(c,d,u,f)=>{try{let h=r.decode(new Uint8Array(i.buffer,d,u)),m=new Intl.DateTimeFormat("en-CA",{timeZone:h,year:"numeric",month:"2-digit",day:"2-digit"}).format(c);return/^\d{4}-\d{2}-\d{2}$/.test(m)?(new Uint8Array(i.buffer,f,10).set(new TextEncoder().encode(m)),10):0}catch{return 0}},host_default_zone:(c,d)=>{let u=new TextEncoder().encode(Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"),f=Math.min(u.length,d);return new Uint8Array(i.buffer,c,f).set(u.subarray(0,f)),f},host_random:(c,d)=>{let u=new Uint8Array(i.buffer,c,d);for(let f=0;f<d;f+=65536)globalThis.crypto.getRandomValues(u.subarray(f,f+65536))}},{instance:p}=await WebAssembly.instantiate(e,{env:{...a,...s}}),l=p.exports;return o=l,i=l.memory,l}put(e){if(e.length===0)return[0,0];let t=this.x.alloc(e.length);return new Uint8Array(this.x.memory.buffer,t,e.length).set(e),[t,e.length]}takeOut(e){let t=Number(e>>32n),i=Number(e&0xffffffffn);if(i===0)return new Uint8Array(0);let o=new Uint8Array(this.x.memory.buffer,t,i).slice();return this.x.dealloc(t,i),o}info(){let e=ue(this.takeOut(this.x.rt_info())),t=i=>{let[o,s]=i;return{major:o,minor:s}};return{abiMajor:e.get(0),runtimeVersion:e.get(1),sem:t(e.get(2)),serves:e.get(3).map(t)}}open(e){let t=this.x;if(this.opened)throw _("unavailable","runtime is already open");let i=e.queryExecutionProfile,o;if(i!==void 0){if(i!=="memory_constrained"&&i!=="desktop")throw _("invalid_request","unknown query execution profile");if(typeof t.rt_open_profile!="function")throw _("unavailable","runtime does not support explicit query profile initialization");o=i==="memory_constrained"?0:1}let s=An(new Map([[0,U(e.collection)],[1,U(e.replicaId)],[2,U(e.deviceId)],[3,e.mode==="local_only"?0:1],[4,e.signSecretKey],[5,e.kemSecretKey],[6,e.e2e??!1]])),r;try{let a=this.put(s);r=this.takeOut(o===void 0?t.rt_open(...a):t.rt_open_profile(...a,o))}catch(a){throw this.discard(),a}finally{s.fill(0)}if(r.length)throw _("unavailable",`runtime failed to open: ${new TextDecoder().decode(r)}`);this.markOpened()}markOpened(){this.opened=!0,this.timer??=setInterval(()=>this.tick(),1e3),this.timer.unref?.()}tick(){this.x.rt_tick(Date.now()),this.flush()}connect(e={}){let t=null,i=!1,o=[],s={onframe:null,onclose:null,send:r=>{if(i)throw _("unavailable","port closed");let a=pe(r);if(t===null){let p=e.grant&&e.clientKey?new Uint8Array([...U(e.grant),...e.clientKey]):new Uint8Array(0),l=ue(this.takeOut(this.x.rt_hello(...this.put(p),...this.put(a)))),c=BigInt(l[0]),d=ue(l[1]);queueMicrotask(()=>{s.onframe?.(d),c===0n&&s.end()}),c!==0n&&(t=c,this.ports.set(c,s),this.flush());return}this.x.rt_frame(t,...this.put(a)),this.flush()},close:()=>{i||(i=!0,t!==null&&(this.ports.delete(t),this.x.rt_close(t)),s.onclose?.())},deliver:r=>s.onframe?s.onframe(r):o.push(r),end:()=>{i||(i=!0,t!==null&&this.ports.delete(t),s.onclose?.())}};return s}sessionForPort(e){for(let[t,i]of this.ports)if(i===e)return t;return null}flush(){let e=this.takeOut(this.x.rt_poll());if(!e.length)return;let t=ue(e),i=new Set(t.filter(o=>o[1]===null).map(o=>BigInt(o[0])));for(let o of t){let[s,r]=o,a=this.ports.get(BigInt(s));if(a)if(r===null)a.end();else{let p=ue(r);if(i.has(BigInt(s))){if(p instanceof Map){let l=p;l.get(0)===2&&l.get(1)==="closed"&&a.deliver(p)}}else queueMicrotask(()=>a.deliver(p))}}}dispose(){this.timer&&clearInterval(this.timer);for(let e of[...this.ports.values()])e.close()}};var oc="mdbase protected your edit",OR={conflict:{cause:"This file was also changed on another device while you were editing it.",detail:"Your version is kept here and is not synced until you choose what to keep."},unknown_provenance:{cause:"This file changed on disk in a way mdbase could not trace to an app or a sync.",detail:"The bytes on disk are kept here and are not synced until you confirm them."},deleted_elsewhere:{cause:"This file was deleted on another device after you edited it.",detail:"Your version is kept here; nothing is deleted until you choose."},read_only:{cause:"Changed with view access.",detail:"Edit access will not sync these changes. Submit or discard them."},editor_busy:{cause:"An editor still has this file open with unsaved changes.",detail:"mdbase waits so that it never overwrites what you are typing."},suspect_write:{cause:"The last write to this file looked incomplete, for example after a crash.",detail:"The file is kept aside and is not synced until you confirm it."}},RR={keep_mine:{label:"Keep mine",description:"Sync the version on this device.",resolution:"keep_mine",needs:"records.edit",discardsMine:!1},take_theirs:{label:"Take theirs",description:"Replace this file with the synced version.",resolution:"take_theirs",needs:"records.edit",discardsMine:!0},keep_both:{label:"Keep both",description:"Save your version as a copy next to the synced one.",resolution:"keep_both",needs:"records.edit",discardsMine:!1},delete:{label:"Delete",description:"Accept the deletion and remove this file here too.",resolution:"delete",needs:"records.delete",discardsMine:!0},use:{label:"Use merged",description:"Sync the document you merged.",resolution:"use",needs:"records.edit",discardsMine:!1},compare:{label:"Compare side by side",description:"Open both versions to merge them.",discardsMine:!1}},ER={conflict:["keep_mine","take_theirs","compare","keep_both"],unknown_provenance:["keep_mine","take_theirs","compare","keep_both"],deleted_elsewhere:["keep_mine","delete"],read_only:["keep_mine","take_theirs","compare","keep_both"],editor_busy:["keep_mine","take_theirs","compare"],suspect_write:["keep_mine","take_theirs","compare","keep_both"]},sc="mdbase://hold/compare",uu=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function ug(n,e){if(!uu.test(n)||!uu.test(e))throw new Error("holdCompareLink: collection and id are UUIDs");return`${sc}?collection=${n.toLowerCase()}&id=${e.toLowerCase()}`}function ck(n){if(typeof n!="string"||n.length>512||!n.startsWith(`${sc}?`))return null;let e=new URLSearchParams(n.slice(sc.length+1)),t=e.get("collection")??"",i=e.get("id")??"";return!uu.test(t)||!uu.test(i)?null:{collectionId:t.toLowerCase(),id:i.toLowerCase()}}function pk(n,e){let t=n.reason==="read_only",i=n.theirs!==void 0,o=(e.canCompare??!0)&&i,s=p=>!p||!e.capabilities||e.capabilities.includes(p),r=ER[n.reason].filter(p=>p==="compare"?o:(!t||e.host===!0)&&(p!=="take_theirs"||i||t)).map(p=>{let l={action:p,...RR[p]};return t&&p==="take_theirs"&&(l.label="Discard local changes",l.description="Discard unsynced changes on this device.",l.needs="collection.read"),l}).filter(p=>s(p.needs)),a=OR[n.reason];return{id:n.id,path:n.path,reason:n.reason,title:oc,cause:a.cause,detail:a.detail,since:n.since,saves:n.saves,hasTheirs:i,actions:r,reversible:!t,reversibleNote:t?"Copy before discarding.":"You can change your mind later: resolving is an ordinary change, and the previous version stays in the collection's history. Keep both if you want your version kept as a file as well.",compareLink:o?ug(e.collectionId,n.id):null}}function dk(n){return n.length?n.length===1?`${oc}: ${n[0].path} is waiting for your choice.`:`${oc}: ${n.length} files are waiting for your choice.`:null}function uk(n){let e=(i,o)=>`${i} ${o}`,t=`, plus ${e(n.pending,"pending")}, plus ${e(n.holds,"held")}`;return n.mode==="local_only"?`Saved on this device${t}`:`Confirmed through ${n.confirmedThrough}${t}`}ac();_u();ac();var ku=15e3,Au=(n,e)=>{try{return!!n&&n.id===e&&n.isCurrent()}catch{return!1}},Gs=(n,e)=>No(n,e?{cpOrigin:e}:{}),Do=(n,e)=>Gs(n,e);function lc(n,e={}){let t=XR(n,e),i=ZR(t,n,e);return i.kind==="opening"&&n.status==="opening"&&n.selectedCollectionId===i.collectionId&&n.openingProgress?{...i,progress:n.openingProgress}:i}function XR(n,e){let t=e.cpOrigin,i=n.selection,o=i?.requested??null;if(n.status==="closed")return{kind:"closed"};if(n.problem==="application_not_yet_available"||n.problem==="application_worker_unavailable"||n.problem==="browser_unsupported"||n.problem==="application_storage_unavailable")return{kind:"unavailable",problem:Do(n.problem,t)};if(i?.state==="invalid")return{kind:"problem",collectionId:null,problem:Do(i.problem??"application_selection_invalid",t)};let s=n.signIn?.state==="paired";if(i?.state==="approving"||n.status==="authorizing"){let c=i?.approval??null;return s?c?.kind==="add"?{kind:"authorizing",purpose:"add",collectionId:null}:{kind:"authorizing",purpose:"approve",collectionId:c?.collectionId??o?.collectionId??null}:{kind:"authorizing",purpose:"sign_in",collectionId:c?.collectionId??o?.collectionId??null}}let r=n.unsynced??null;if(r&&n.selectedCollectionId===r.collectionId){let c=r.collectionId;return n.status==="ready"&&Au(e.connection,c)?{kind:"unsynced",collectionId:c,connection:e.connection,rechecking:n.readiness.checking}:n.status==="blocked"||n.status==="setup_required"&&!n.readiness.checking&&n.readiness.assessment?{kind:"problem",collectionId:c,problem:(n.status==="blocked"?Gs(n,t):Gs(n.readiness,t))??Do("open_failed",t)}:{kind:"opening",collectionId:c,displayName:null,slow:!!e.slow}}if(n.status==="not_started"||n.status==="starting"){let c=o?.collectionId??null;return c&&n.status==="starting"?{kind:"opening",collectionId:c,displayName:o?.displayName??null,slow:!!e.slow}:{kind:"starting"}}if(n.status==="signed_out")return{kind:"signed_out",notice:n.problem?Gs(n,t):null};if(n.status==="blocked"){let c=n.selectedCollectionId??o?.collectionId??null;return n.problem==="recovery_account_mismatch"?{kind:"problem",collectionId:c,problem:No(n,{cpOrigin:t,recoveryAccountLabel:n.recoveryAccountLabel})}:{kind:"problem",collectionId:c,problem:c&&n.removedScopeIds?.includes(c)?Do("installation_scope_removed",t):Gs(n,t)??Do("open_failed",t)}}if(i?.state==="approval_required"&&o?.collectionId&&n.removedScopeIds?.includes(o.collectionId))return{kind:"problem",collectionId:o.collectionId,problem:Do("installation_scope_removed",t)};if(i?.state==="approval_required"&&o?.collectionId)return{kind:"needs_approval",collectionId:o.collectionId,displayName:o.displayName,declined:i.problem==="application_selection_not_approved"};if(i?.state==="pending"&&o?.collectionId)return{kind:"opening",collectionId:o.collectionId,displayName:o.displayName,slow:!!e.slow};let a=i?.usable??(n.status==="ready"||n.status==="setup_required"?n.collections.find(c=>c.collectionId===n.selectedCollectionId)??null:null);if(n.status==="setup_required"&&a)return n.readiness.assessment?.status==="incompatible"?{kind:"problem",collectionId:a.collectionId,problem:Gs(n.readiness,t)??Do("incompatible",t)}:{kind:"needs_setup",collectionId:a.collectionId,collection:a};if(n.status==="ready"&&a&&Au(e.connection,a.collectionId))return{kind:"ready",collectionId:a.collectionId,collection:a,connection:e.connection,rechecking:n.readiness.checking,problem:null,unavailableTypes:n.readiness.assessment?.unavailableTypes??[]};let p=n.status==="opening"||n.status==="ready"||i?.state==="opening"||i?.state==="usable",l=n.selectedCollectionId??o?.collectionId??null;if(p&&l){let c=n.collections.find(d=>d.collectionId===l)?.displayName??o?.displayName??null;return{kind:"opening",collectionId:l,displayName:c,slow:!!e.slow}}return{kind:"choosing",lastApproval:i?.lastApproval??null}}function ZR(n,e,t){let i=t.previous;return i?.kind==="needs_setup"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&e.readiness.checking?i:i?.kind==="unsynced"&&n.kind==="opening"&&n.collectionId===i.collectionId&&e.selectedCollectionId===i.collectionId&&Au(t.connection,i.collectionId)?{...i,connection:t.connection,rechecking:!0}:!i||i.kind!=="ready"||n.kind==="ready"||!Au(t.connection,i.collectionId)||e.selectedCollectionId!==i.collectionId?n:n.kind==="opening"&&n.collectionId===i.collectionId?{...i,connection:t.connection,rechecking:!0,problem:null}:n.kind==="problem"&&n.problem.transient?{...i,connection:t.connection,rechecking:!0,problem:n.problem}:n}function Ck(n,e){return n?.kind==="ready"&&(e===void 0||n.collectionId===e)}Ta();ac();Zn();Tf();Ra();bt();var Oq=["http","https","file","javascript","data","blob","about","capacitor","chrome-extension","moz-extension"];function UP(n,e,t){if(typeof n!="string"||!n||n.length>2048||n.includes("*"))return!1;let i=e&&typeof e=="object"?e.redirect_uris:void 0;if(!Array.isArray(i)||!i.includes(n))return!1;let{id:o,homepage:s,platform:r}=e,a;try{a=new URL(n)}catch{return!1}if(a.username||a.password||a.hash)return!1;if(a.protocol==="https:"||a.protocol==="http:"){let l;try{l=new URL(String(s))}catch{return!1}return a.origin===l.origin&&(a.protocol==="https:"||r==="native"&&yr(a.origin)||t&&ot(a.origin))}let p=a.protocol.slice(0,-1);return typeof o=="string"&&p.includes(".")&&/^[a-z][a-z0-9+.-]*$/.test(p)&&!Oq.includes(p)&&(p===o||p.startsWith(`${o}.`))&&a.hostname.length>0}Uf();to();Zn();re();Mf();bt();var Wo={runtime:{sha256:"3b4cd76f3e9df9ad06755628f23b1e6523ee0643d685efe5abf91f6eb3c83ec9",bytes:3844425,maxBytes:3844425,source:{repository:"mdbase-dev/mdbase-connect",commit:"ebd3f8633599d16ed26deca4c4bf149fb4a2ea8d"}},sqlite:{sha256:"2ee8f3dab694532afc8840e07703127287662d08b74e6ff50491ce63f00d5752",bytes:868907,maxBytes:11e5,initializer:{sha256:"a6d3fe46aa3f924e7686329f97b0564549ef1f787e0c19924179aef7f72bcc01",bytes:642742},asyncProxy:{sha256:"9f1970e05ee07a79332498858740b705eeb1dcee03bc150f6f690bc0fb5f0a06",bytes:32505}}};var Df={},Lq=Object.freeze({sha256:Wo.runtime.sha256,bytes:Wo.runtime.bytes,maxBytes:Wo.runtime.maxBytes}),jq=Object.freeze({sha256:Wo.sqlite.sha256,bytes:Wo.sqlite.bytes,maxBytes:Wo.sqlite.maxBytes}),Kc=()=>_("unavailable","SDK packaged application assets unavailable","application_packaged_assets_unavailable");function WP(n,e,t){if(!Ea(n))throw Kc();let i=Vo();Qn({environment:n,appOrigin:e,platform:t,release:i});let o,s;try{let p=new URL(Df.url);if(On(p)!==e||p.username||p.password||p.search||p.hash||(o=new URL("../native/runtime.wasm",Df.url),s=new URL("../native/sqlite3.wasm",Df.url),On(o)!==e||On(s)!==e))throw Kc()}catch{throw Kc()}let r=(p,l)=>Object.freeze({url:p.href,...l}),a=async p=>{let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l))throw Kc();let c=new URL("../native/sqlite3.js",Df.url),{default:d}=await import(c.href);return globalThis.sqlite3ApiConfig={disable:{vfs:{opfs:!0,"opfs-wl":!0}}},d(p)};return Object.freeze({release:()=>Vo(),runtime:r(o,Lq),sqlite:r(s,jq),initializeSqlite:a})}Mf();bt();to();Zn();var Vt=class extends Error{constructor(t){super("SDK collection selection unavailable");this.code=t;this.name="ApplicationSelectionError"}code},Hc=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Ft=(n,e,t=null)=>Object.freeze({requestedCollectionId:n,source:e,problem:t});function KP(n,e){return n.source!=="none"?n:e.storedId!==void 0&&e.storedId!==null?Hc(e.storedId)?Ft(e.storedId,"stored"):Ft(null,"stored","application_selection_invalid"):e.collections.length>1024||e.collections.some(t=>!Hc(t.collectionId))||new Set(e.collections.map(t=>t.collectionId)).size!==e.collections.length?Ft(null,"none","application_selection_metadata"):e.preferredId!==void 0&&e.preferredId!==null?Hc(e.preferredId)&&e.collections.some(t=>t.collectionId===e.preferredId)?Ft(e.preferredId,"preferred"):Ft(null,"preferred","application_selection_metadata"):e.collections.length===1?Ft(e.collections[0].collectionId,"sole"):Ft(null,"none")}var $f=class{port;origin;parameter;fallback;listeners=new Set;snapshot=Ft(null,"none");stopListening=null;started=!1;closed=!1;constructor(e,t={},i=null){let o,s;try{o=new URL(e),s=new URL(t.fallbackPath??"/",o)}catch{throw new Vt("application_selection_binding")}let r=t.parameter??"collection";if(!Lt(e,!0)||On(o)!==e||On(s)!==e||s.username||s.password||s.search||s.hash||typeof r!="string"||!/^[a-z][a-zA-Z0-9_.-]{0,63}$/.test(r)||["code","state","error","error_description"].includes(r))throw new Vt("application_selection_binding");this.origin=e,this.parameter=r,this.fallback=s.href,this.port=i}getSnapshot(){return this.snapshot}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.snapshot:(this.started=!0,this.stopListening=this.port?.listen(()=>{this.closed||this.publish(this.read())})??null,this.publish(this.read()),this.snapshot)}check(){if(this.closed)throw new Vt("application_selection_fenced")}url(){let e;try{e=new URL(this.port.href())}catch{throw new Vt("application_selection_binding")}if(On(e)!==this.origin||e.username||e.password)throw new Vt("application_selection_binding");return e}read(){if(!this.port)return Ft(null,"none");let e;try{e=this.url().searchParams.getAll(this.parameter)}catch{return Ft(null,"url","application_selection_binding")}return e.length===0?Ft(null,"none"):e.length!==1?Ft(null,"url","application_selection_duplicate"):e[0]===""?Ft(null,"url","application_selection_empty"):Hc(e[0])?Ft(e[0],"url"):Ft(null,"url","application_selection_invalid")}publish(e){if(!(this.snapshot.requestedCollectionId===e.requestedCollectionId&&this.snapshot.source===e.source&&this.snapshot.problem===e.problem)){this.snapshot=e;for(let t of[...this.listeners])try{t()}catch{}}}select(e,t={}){if(this.check(),e!==null&&!Hc(e))throw new Vt("application_selection_invalid");let i=t.history??"replace";if(i!=="push"&&i!=="replace")throw new Vt("application_selection_binding");if(this.port){let o=this.url(),s=o.href;e===null?o.searchParams.delete(this.parameter):o.searchParams.set(this.parameter,e),o.href!==s&&this.port.write(o.href,i)}return this.publish(Ft(e,e===null?"none":"user")),this.snapshot}returnUrl(e){this.check();try{let t=new URL(e,this.origin);if(On(t)===this.origin&&!t.username&&!t.password)return t.href}catch{}return this.fallback}close(){if(this.closed)return;this.closed=!0;let e=this.stopListening;this.stopListening=null,e?.(),this.listeners.clear()}};function HP(){if(typeof window>"u"||!window.location||!window.history)return null;let n=window;return Object.freeze({href:()=>n.location.href,write:(e,t)=>{t==="push"?n.history.pushState(n.history.state,"",e):n.history.replaceState(n.history.state,"",e)},listen:e=>(n.addEventListener("popstate",e),()=>n.removeEventListener("popstate",e))})}var Nq=n=>typeof n=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(n)&&n!=="00000000-0000-0000-0000-000000000000",Ma=n=>n.status==="ready"||n.status==="setup_required",GP=n=>n.signIn?.state==="paired"&&(n.status==="unselected"||n.status==="blocked"||Ma(n)),Uq=n=>n.status==="not_started"||n.status==="starting"||n.status==="signed_out"||n.status==="authorizing",Vi=(n,e)=>e===null?null:n.collections.find(t=>t.collectionId===e)??null,zf=class{browser;session;memory;preferredId;schedule;listeners=new Set;stops=[];value;key="";startTarget=null;startApplied=!1;attempted=void 0;lastRequested=null;opening=null;approval=null;lastApproval=null;declined=null;remembered=void 0;queued=!1;started=!1;closed=!1;constructor(e){this.browser=e.browser,this.session=e.session,this.memory=e.memory??null,this.preferredId=e.preferredId??null,this.schedule=e.schedule??(t=>{setTimeout(t,0)}),this.value=this.derive(),this.key=JSON.stringify(this.value)}getSnapshot(){return this.value}subscribe(e){return this.check(),this.listeners.add(e),()=>{this.listeners.delete(e)}}start(){return this.check(),this.started?this.value:(this.started=!0,this.browser.start(),this.stops.push(this.browser.subscribe(this.changed),this.session.subscribe(this.changed)),this.changed(),this.value)}select(e,t={}){this.check(),this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}),this.declined=null,this.refresh(),e===null&&this.remember(null);let i=this.session.getSnapshot();return e!==null&&i.selectedCollectionId===e&&i.status==="opening"?(this.attempted=e,Promise.resolve(this.value)):this.whenIdle(async()=>{let o=this.session.getSnapshot();this.requested().requestedCollectionId===e&&((e===null?o.selectedCollectionId===null&&o.status!=="opening":o.selectedCollectionId===e&&Ma(o)||!Vi(o,e))||await this.run(e,t,!0))}).then(()=>this.value)}chooseAnother(e={}){return this.select(null,{...e,history:"push"})}approve(e,t={}){if(this.check(),e!=null&&!Nq(e))return Promise.reject(new Vt("application_selection_invalid"));if(this.approval&&!this.approval.settled)return Promise.reject(new Vt("application_selection_busy"));e!=null&&e!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(e,t.history?{history:t.history}:{}));let i=this.session.getSnapshot().signIn,o=i?.nativeSelection?.requestId??i?.collectionSelection?.requestId??null,s,r=e===null?null:this.requested().requestedCollectionId;try{s=this.session.authorize({...t.signal?{signal:t.signal}:{},collectionHint:r})}catch(c){return Promise.reject(c)}let a=r===null?"add":"collection",p=new Set(this.session.getSnapshot().collections.map(c=>c.collectionId)),l={receipt:o,kind:a,collectionId:r,before:p,settled:!1};return this.approval=l,this.lastApproval=null,this.declined=null,this.attempted=void 0,this.refresh(),s.then(()=>(l.settled=!0,this.changed(),this.value),c=>{if(this.approval===l){this.approval=null;let d=c?.code;(d==="cancelled"||d==="aborted")&&(this.lastApproval=Object.freeze({kind:a,outcome:"closed",collectionId:r}))}throw this.changed(),c})}clearLastApproval(){this.check(),this.lastApproval=null,this.refresh()}reauthorize(e={}){this.check();let t=this.value.usable?.collectionId??this.requested().requestedCollectionId;return t===null?Promise.reject(new Vt("application_selection_empty")):this.approve(t,e)}resync(){this.closed||(this.attempted=void 0,this.approval=null,this.changed())}close(){if(!this.closed){this.closed=!0;for(let e of this.stops.splice(0))try{e()}catch{}this.browser.close(),this.listeners.clear()}}check(){if(this.closed)throw new Vt("application_selection_fenced")}requested(){let e=this.browser.getSnapshot(),t=this.startTarget;return t&&e.source==="user"&&e.requestedCollectionId===t.requestedCollectionId?t:e}changed=()=>{this.closed||(this.refresh(),!(this.queued||!this.started)&&(this.queued=!0,this.schedule(()=>{this.queued=!1,this.reconcile()})))};refresh(){let e=this.requested().requestedCollectionId;e!==this.lastRequested&&(this.lastRequested=e,this.attempted=void 0,this.declined!==e&&(this.declined=null));let t=this.derive(),i=JSON.stringify(t);if(t.state==="usable"&&this.remember(t.usable.collectionId),i!==this.key){this.key=i,this.value=Object.freeze(t);for(let o of[...this.listeners])try{o()}catch{}}}remember(e){if(!(!this.memory||this.remembered===e)){this.remembered=e;try{this.memory.write(e)}catch{}}}derive(){let e=this.session.getSnapshot(),t=this.requested(),i=t.requestedCollectionId,o=Vi(e,i),s=Ma(e)?Vi(e,e.selectedCollectionId):null,r,a=null;t.problem?(r="invalid",a=t.problem):this.approval?r="approving":i===null?r="none":s?.collectionId===i?r="usable":e.selectedCollectionId===i&&(e.status==="blocked"||e.status==="opening")?r=e.status==="blocked"?"blocked":"opening":GP(e)?o?r="opening":this.session.listing?.()?r="pending":(r="approval_required",this.declined===i&&(a="application_selection_not_approved")):r="pending";let p=this.approval?Object.freeze({kind:this.approval.kind,collectionId:this.approval.collectionId,reopenable:this.approval.settled}):null;return Object.freeze({state:r,problem:a,approval:p,lastApproval:this.lastApproval,usable:s?Object.freeze({...s}):null,requested:Object.freeze({collectionId:i,source:t.source,displayName:o?.displayName??null,approved:o!==null})})}async whenIdle(e){for(;this.opening;)await this.opening;this.check(),await e()}run(e,t={},i=!1){this.attempted=e;let o=t.signal?{signal:t.signal}:{},s=Promise.resolve().then(()=>e===null?this.session.clear(o):this.session.open(e,o)),r=s.then(()=>{},()=>{}).finally(()=>{this.opening===r&&(this.opening=null,this.changed())});return this.opening=r,i?s.then(()=>{}):r}async reconcile(){if(this.closed||this.opening)return;let e=this.session.getSnapshot();if(this.approval)if(this.approval.settled&&e.status==="signed_out"&&e.problem!==null){let o=this.approval;this.approval=null,this.attempted=void 0,this.lastApproval=Object.freeze({kind:o.kind,outcome:e.problem==="approval_window_closed"?"closed":"declined",collectionId:o.collectionId}),this.refresh()}else{if(!this.approval.settled||Uq(e))return;let o=e.signIn?.nativeSelection;if(o&&o.requestId!==this.approval.receipt&&!Vi(e,o.collectionId)&&this.session.listing?.())return;this.finishApproval(e)}if(!GP(e))return;if(!this.startApplied)if(this.browser.getSnapshot().source==="none"){let o=null;try{o=this.memory?.read()??null}catch{}if(o!==null&&!Vi(e,o)&&this.session.listing?.())return;this.startApplied=!0;let s=KP(this.browser.getSnapshot(),{storedId:o,preferredId:this.preferredId,collections:e.collections});s.requestedCollectionId!==null&&!s.problem&&(this.browser.select(s.requestedCollectionId,{history:"replace"}),this.startTarget=s,this.refresh())}else this.startApplied=!0;let t=this.requested(),i=t.requestedCollectionId;if(!t.problem){if(i===null){this.attempted!==null&&e.selectedCollectionId!==null&&Ma(e)&&this.run(null);return}if(e.selectedCollectionId===i&&(Ma(e)||e.status==="opening")){this.attempted=i;return}!Vi(e,i)||this.attempted===i||this.run(i)}}finishApproval(e){let t=this.approval,i=t.receipt;this.approval=null,this.attempted=void 0;let o=u=>u!==null&&Vi(e,u)?t.before.has(u)?"unchanged":"added":e.approval?.outcome==="closed"?"closed":"declined",s=e.signIn?.collectionSelection,r=e.signIn?.nativeSelection,p=(r&&r.requestId!==i&&Vi(e,r.collectionId)?r.collectionId:null)??(s&&s.requestId!==i&&Vi(e,s.selectedCollectionId)?s.selectedCollectionId:null);if(p!==null){p!==this.requested().requestedCollectionId&&(this.startTarget=null,this.browser.select(p,{history:"replace"})),this.lastApproval=Object.freeze({kind:t.kind,outcome:o(p),collectionId:p}),this.refresh(),e.selectedCollectionId===p&&(Ma(e)||e.status==="opening")?this.attempted=p:this.run(p);return}let l=this.requested().requestedCollectionId;l!==null&&!Vi(e,l)&&(this.declined=l);let c=t.kind==="add"?e.collections.find(u=>!t.before.has(u.collectionId))?.collectionId??null:null,d=t.kind==="add"?c:t.collectionId??l;this.lastApproval=Object.freeze({kind:t.kind,outcome:o(d),collectionId:d}),this.refresh()}};eh();Zb();re();Je();ge();re();At();Or();Je();ge();Wn();var eC=16*1024*1024,xT=9*1024*1024,CT=64,IT=64*1024*1024,OT=new Set(["append","read","head","subscribe","unsubscribe","put_object","get_object","has_objects","put_snapshot","get_snapshot","endorse_snapshot","stream_join","stream_leave","stream_send"]),pt=class extends Error{constructor(t){super(`app log host: ${t}`);this.reason=t;this.name="AppLogHostError"}reason};function ts(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw new pt("invalid_call");let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw new pt("invalid_call");return e}function hh(n,e){return n.length===e.length&&n.every((t,i)=>t===e[i])}var RT=new Set(["read","head","subscribe","get_object","has_objects","put_object","get_snapshot"]),ET=6;function tC(n){try{return n.server}catch{return null}}function qT(n){try{return n.reason}catch{return null}}function dw(n,e=globalThis.navigator?.onLine){let t=tC(n);if(Pn(t)){let i=t.retryAfterMs;return t.status===429?{kind:"rate_limited",retryAfterMs:i}:t.status>=500?{kind:"server_busy",retryAfterMs:i}:t.status===401||t.status===403?{kind:"auth"}:null}return qT(n)!=="unavailable"?null:e===!1?{kind:"offline"}:{kind:"unreachable"}}var ns=class{constructor(e,t,i){this.runtime=e;this.transport=t;try{if(this.endpoint=ts(i.endpoint),this.collection=U(i.collection),ts(t.endpoint)!==this.endpoint||!hh(U(t.collection),this.collection))throw new Error}catch{throw new pt("invalid_binding")}if(this.rounds=i.maxRounds??64,!Number.isSafeInteger(this.rounds)||this.rounds<1||this.rounds>64)throw new RangeError("invalid app log pump rounds")}runtime;transport;abort=new AbortController;endpoint;collection;rounds;work=null;closed=!1;failed=!1;retired=!1;problem=null;terminal=null;health=null;sent=0;readAfter=[-1n,-1n];readAdvances=0;get fenced(){return this.failed}get callsSent(){return this.sent}get readProgress(){return this.readAdvances}responseProgress(){return this.transport.responseProgress?.()??[]}get serverProblem(){return this.problem}get terminalProblem(){return this.terminal}get transportHealth(){return this.health}current(){if(this.closed||this.failed)return!1;if(ts(this.transport.endpoint)!==this.endpoint||!hh(U(this.transport.collection),this.collection))throw new pt("invalid_binding");return this.transport.isCurrent()===!0?!0:(this.retire(),!1)}retire(){if(this.closed=!0,this.abort.abort(),!this.retired){this.retired=!0;try{this.runtime.retireLog()}catch{throw this.failed=!0,new pt("fenced")}}}capture(e){if(!Array.isArray(e)||e.length>CT)throw new pt("invalid_call");let t=0,i=new Set,o=[];try{for(let s of e){if(ts(s.endpoint)!==this.endpoint||!(s.frame instanceof Uint8Array)||s.frame.length>eC||s.sidecar!==void 0&&(!(s.sidecar instanceof Uint8Array)||s.sidecar.length>xT))throw new pt("invalid_call");if(t+=s.frame.length+(s.sidecar?.length??0),t>IT)throw new pt("invalid_call");let r=ue(s.frame);if(!(r instanceof Map))throw new pt("invalid_call");let a=r;if(a.size!==4||a.get(0)!==0||!OT.has(a.get(2)))throw new pt("invalid_call");let p=ts(a.get(1));if(i.has(p))throw new pt("invalid_call");i.add(p);let l=a.get(3),c=l instanceof Map?l.get(0):void 0;if(!(c instanceof Uint8Array)||!hh(c,this.collection)||s.sidecar!==void 0&&a.get(2)!=="put_object")throw new pt("invalid_call");if(s.sidecar!==void 0){let u=l,f=u.get(4);if(s.sidecar.length<=1024*1024||ts(u.get(3))!==BigInt(s.sidecar.length)||u.has(5)||!(f instanceof Uint8Array)||!hh(f,it(s.sidecar)))throw new pt("invalid_call")}let d=a.get(2)==="read"?{after:ts(l.get(1)),control:l.get(3)===1}:void 0;o.push({id:p,method:a.get(2),...d?{read:d}:{},call:{endpoint:this.endpoint,frame:s.frame.slice(),...s.sidecar?{sidecar:s.sidecar.slice()}:{}}})}return o}catch{for(let s of o)this.wipe(s);throw new pt("invalid_call")}}wipe(e){e.call.frame.fill(0),e.call.sidecar?.fill(0)}pump(){return this.work?this.work:this.failed?Promise.reject(new pt("fenced")):this.closed?Promise.resolve({quiet:!0}):(this.work=Promise.resolve().then(()=>this.drive()).finally(()=>{this.work=null}),this.work)}async drive(){try{for(let e=0;e<this.rounds;e++){if(!this.current())return{quiet:!0};let t=this.capture(this.runtime.takeLogCalls());if(!t.length)return{quiet:!0};this.sent+=t.length;let i=[];try{for(let o=0;o<t.length;){if(!this.current())return{quiet:!0};let s=o+1,r=l=>RT.has(t[l].method);if(r(o))for(;s<t.length&&s-o<ET&&r(s);)s++;let a=t.slice(o,s);o=s;let p=a.map(l=>this.transport.send(l.call,{signal:this.abort.signal}).then(c=>({reply:c,error:null}),c=>({reply:null,error:c})));i.push(...p);for(let[l,c]of a.entries()){let{reply:d,error:u}=await p[l];if(d===null){if(!this.current())return{quiet:!0};let f=tC(u);if(Pn(f)){let m=St(f);m&&(this.problem=f),(m||f.status===403&&f.code==="forbidden")&&(this.terminal??=f)}let h=dw(u);h&&(this.health=h),this.runtime.logNoResponse(c.id);continue}try{if(!this.current())return{quiet:!0};if(!(d instanceof Uint8Array)||d.length>eC){this.runtime.logNoResponse(c.id);continue}if(this.runtime.acceptLogReply(c.id,d)!==!0)this.runtime.logNoResponse(c.id);else if(this.problem=null,this.health=null,c.read){let f=c.read.control?1:0;c.read.after>this.readAfter[f]&&(this.readAfter[f]=c.read.after,this.readAdvances++)}}finally{d instanceof Uint8Array&&d.fill(0)}}}}finally{for(let o of await Promise.all(i))o.reply instanceof Uint8Array&&o.reply.fill(0);for(let o of t)this.wipe(o)}}return{quiet:!1}}catch{throw this.failed=!0,this.retire(),new pt("fenced")}}async drainForAuthenticatedReconnect(){if(this.closed||this.failed||this.retired)throw new pt("fenced");if(this.closed=!0,this.abort.abort(),this.retired=!0,await this.work?.catch(()=>{}),this.failed)throw new pt("fenced")}async close(){this.retire(),await this.work?.catch(()=>{})}};ro();Zo();function pp(n,e,t=0,i={nodes:0}){if(t>32||++i.nodes>65536)throw _("invalid_request","resource DATA exceeds bound");if(n===null||typeof n=="boolean"||typeof n=="string"||typeof n=="number"&&Number.isFinite(n))return n;if(Array.isArray(n))return n.map(r=>pp(r,e,t+1,i));let o=e?n!==null&&typeof n=="object"&&Object.getPrototypeOf(n)===Object.prototype?Object.entries(n):null:n instanceof Map?[...n]:null;if(!o)throw _("invalid_request","invalid resource DATA");let s=new Map;for(let[r,a]of o){if(typeof r!="string"||s.has(r))throw _("invalid_request","invalid resource DATA");s.set(r,pp(a,e,t+1,i))}return e?s:Object.fromEntries(s)}var on=class extends Error{reason="strict_device_approval";constructor(){super("this account uses strict device approval; add this device from your desktop"),this.name="AppStrictDeviceApprovalError"}},M=()=>_("unavailable","app runtime unavailable; reopen and reconcile");function nC(n){if(!(n instanceof Uint8Array)||n.length===0||n.length>64*1024)throw M();return new Uint8Array(n)}function vn(n){if((typeof n!="number"||!Number.isSafeInteger(n))&&typeof n!="bigint")throw M();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw M();return e}var iC=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]);function Kt(n){if(!(n instanceof Uint8Array)||n.length!==32)throw M();return n}var Ya=class n extends Bs{constructor(t,i){super(t);this.sqlBinding=i}sqlBinding;attempted=!1;active=!1;retired=!1;collection=null;deviceId=null;connectorId=null;cpPin=null;deviceAttempted=!1;deviceActive=!1;deviceRegistered=!1;devicePin=null;installationId=null;publicIdentity=null;noiseEnvelope=null;cloudSource=null;cloudCallback=null;cloudCollection=null;cloudPurpose=null;cloudIssued=!1;privateAttempted=!1;privateSource=null;prospectiveCollection=null;privatePurpose=null;sasCommitment=null;privateEnrolAcknowledged=!1;endpoint=null;logGeneration=0n;pump=null;transport=null;get sql(){return this.sqlBinding.sql}get app(){return this.x}static async create(t,i){if(i.needsRecovery)throw M();return this.instantiateApp(t,i)}static async createDevice(t){return this.instantiateApp(t,null)}static async instantiateApp(t,i){let o={sql:i,exports:null,run:null},s=await this.load(t,a=>(o.exports=a,o.run=i?.import(a)??null,{host_app_sql:(p,l)=>o.run?.(p,l)??0n})),r=["rt_app_account_key_unlock","rt_app_account_key_status","rt_app_account_key_device_setup","rt_app_private_collection_pin","rt_app_private_enrol_restore","rt_app_private_enrol_commitment","rt_app_private_create_sign","rt_app_private_device_enrol_sign","rt_app_device_open","rt_app_device_registered","rt_app_device_adopt","rt_app_device_retire","rt_app_cp_enrol_sign","rt_app_verify_handover","rt_app_cp_bind_connector","rt_app_cp_log_token_sign","rt_app_open","rt_app_log_bind","rt_app_log_generation","rt_app_log_reconnect","rt_app_log_http_sign","rt_app_log_calls","rt_app_log_reply","rt_app_log_no_response","rt_app_log_retire","rt_app_log_push","rt_app_observations","rt_app_shutdown"];if(!(s.memory instanceof WebAssembly.Memory)||r.some(a=>typeof s[a]!="function"))throw M();return new n(s,o)}open(t){throw M()}fail(){try{(this.active||this.attempted)&&this.sql?.fence()}finally{this.active=!1,this.deviceActive=!1,this.discard()}}guard(t){try{return t()}catch{throw this.fail(),M()}}openAppConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery)throw M();this.attempted=!0;let o=vn(t.endpoint);if(!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295)throw M();let s=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,r=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(s<0||r<0||typeof t.cloudCopyOptIn!="boolean"||s===1!==t.cloudCopyOptIn||(i=An(new Map([[0,3],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,o],[5,t.trustedRoots.map(Kt)],[6,t.trustedSigners.map(U)],[7,Cp(t.expectedGenesis)],[8,s],[9,t.cloudCopyOptIn],[10,Kt(t.signSecretKey)],[11,Kt(t.kemSecretKey)],[12,r],[13,t.sqliteVersion],[16,nC(t.policyPins)]])),i.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_open(...this.put(i)))).length)throw M();this.collection=t.collection,this.deviceId=t.deviceId,this.endpoint=o,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),M()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}openUnsyncedConsuming(t){let i=null;try{if(this.attempted||this.deviceAttempted||!this.sql||this.sql.needsRecovery||typeof this.app.rt_app_open_local!="function"||(this.attempted=!0,!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295))throw M();let o=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(o<0||(i=An(new Map([[0,1],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[12,o],[13,t.sqliteVersion]])),this.guard(()=>this.takeOut(this.app.rt_app_open_local(...this.put(i)))).length))throw M();this.collection=t.collection,this.deviceId=t.deviceId,this.active=!0,this.markOpened()}catch{throw this.fail(),M()}finally{i?.fill(0)}}tick(){this.active&&!this.retired&&this.guard(()=>super.tick())}connect(t={}){if(!this.active||this.retired||t.collection!==void 0&&(typeof t.collection!="string"||t.collection.toLowerCase()!==this.collection?.toLowerCase()))throw M();let i=super.connect(t),o=i.send.bind(i),s=i.close.bind(i);return i.send=r=>this.guard(()=>o(r)),i.close=()=>this.guard(()=>s()),i}executeBases(t,i){return this.readBases(t,i,"execute")}discoverBases(t,i,o){if(i!=="list-views"&&i!=="read-view-source")throw M();return this.readBases(t,o,i)}readBases(t,i,o){let s=this.sessionForPort(t),r=o==="execute"?this.app.rt_app_bases_execute:o==="list-views"?this.app.rt_app_bases_list_views:this.app.rt_app_bases_read_view_source;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||s===null||typeof r!="function")throw M();if(!(i instanceof Uint8Array)||!i.length||i.length>128*1024)throw _("invalid_request","Bases request bytes exceed bound");let a=new Uint8Array(i);try{let p=this.guard(()=>{let l=vn(r.call(this.app,s,...this.put(a))),c=Number(l&0xffffffffn);if(!c||c>(o==="execute"?16:1)*1024*1024)throw M();return this.takeOut(l)});if(!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==s)throw p.fill(0),M();return p}finally{a.fill(0)}}setupResources(t,i,o,s,r){let a=this.sessionForPort(t),p=this.app.rt_app_resources;if(!this.active||this.retired||!this.sql||this.sql.needsRecovery||a===null||typeof p!="function")throw _("unavailable","resource setup unsupported","resource_setup_unsupported");if(i!=="assess"&&i!=="apply"||i==="apply"&&(typeof s!="string"||!/^sha256:[0-9a-f]{64}$/.test(s)))throw M();let l=r!==void 0,c=[1,i==="apply"?1:0,pp(o,!0),s??null];l&&c.push(pp(ni(r),!0));let d=pe(c);if(!d.length||d.length>512*1024)throw d.fill(0),_("invalid_request","resource DATA exceeds bound");let u;try{if(u=this.guard(()=>{let m=vn(p.call(this.app,a,...this.put(d))),b=Number(m&0xffffffffn);if(!b||b>512*1024)throw M();return this.takeOut(m)}),!this.active||this.retired||this.sql.needsRecovery||this.sessionForPort(t)!==a)throw M();let f=this.guard(()=>ue(u));if(!Array.isArray(f)||f.length!==3||f[0]!==1||typeof f[1]!="boolean")throw M();if(f[1]===!1)throw _("unavailable","resource setup unavailable","resource_setup_unavailable");let h=pp(f[2],!1);return i==="assess"?es(h,l):xt(h)}finally{d.fill(0),u?.fill(0)}}resourceRejected(t,i){let o=null;try{let s=this.sessionForPort(t),r=this.app.rt_app_receipt_rejected;return!this.active||this.retired||s===null||typeof r!="function"||!/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(i)?!1:(o=U(i),this.guard(()=>r.call(this.app,s,...this.put(o)))===1&&this.active&&!this.retired&&this.sessionForPort(t)===s)}catch{return!1}finally{o?.fill(0)}}verifyHandover(t,i,o){let s=null,r=null;try{let a=this.sessionForPort(t),p=i.collection,l=i.deviceId;if(!this.active||this.retired||a===null||p!==this.collection||i.isCurrent()!==!0||!(o instanceof Uint8Array)||o.length>64*1024)return null;s=new Uint8Array(o),r=U(l);let c=this.guard(()=>this.takeOut(this.app.rt_app_verify_handover(a,...this.put(r),...this.put(s))));if(c.length===0||this.sessionForPort(t)!==a||i.isCurrent()!==!0||i.collection!==p||i.deviceId!==l)return null;let d=this.guard(()=>$p.dec(ue(c)));return d.seq===0||[d.chain,d.policyGeneration,d.catalogGeneration].some(u=>u===`sha256:${"00".repeat(32)}`)?null:d}catch{return null}finally{s?.fill(0),r?.fill(0)}}bindCpConnector(t){let i=null;try{if(!this.active||this.retired||this.pump||this.cpPin||t.isCurrent()!==!0||t.deviceId!==this.deviceId||t.collection!==this.collection)throw M();let o=t.connectorId;if(i=U(o),i.every(s=>s===0)||this.guard(()=>this.app.rt_app_cp_bind_connector(...this.put(i)))!==1)throw M();this.connectorId=o,this.cpPin=t}catch{throw M()}finally{i?.fill(0)}}deviceCurrent(){try{let t=this.devicePin;return this.deviceActive&&!this.retired&&t!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId}catch{return!1}}publicResult(t){if(t.length>1024)throw M();let i=ue(t);if(!(i instanceof Map))throw M();let o=i;if(o.size!==4||[0,1,2,3].some(r=>!o.has(r)))throw M();let s=r=>{let a=o.get(r);if(!(a instanceof Uint8Array)||a.length!==32||a.every(p=>p===0))throw M();return new Uint8Array(a)};return{m:o,identity:Object.freeze({signPublicKey:s(0),kemPublicKey:s(1),noisePublicKey:s(2)})}}openDeviceConsuming(t){let i=null;try{if(this.deviceAttempted||this.attempted||this.retired)throw M();this.deviceAttempted=!0;let o=t.pin;if(this.devicePin=o,this.connectorId=o.connectorId,this.deviceId=o.deviceId,this.installationId=o.installationId,this.deviceActive=!0,!this.deviceCurrent())throw M();let s=[this.connectorId,this.deviceId,this.installationId].map(U);if(s.some(l=>l.every(c=>c===0)))throw M();let r=t.opened;if(r.mode!=="fresh"&&r.mode!=="existing"||r.mode==="existing"&&(!(r.envelope instanceof Uint8Array)||!r.envelope.length||r.envelope.length>1024))throw M();i=An(new Map([[0,1],[1,s[0]],[2,s[1]],[3,s[2]],[4,r.mode==="fresh"?0:1],[5,Kt(t.signSecretKey)],[6,Kt(t.kemSecretKey)],[7,r.mode==="fresh"?new Uint8Array:new Uint8Array(r.envelope)]]));let a=this.guard(()=>this.takeOut(this.app.rt_app_device_open(...this.put(i))));if(!a.length||!this.deviceCurrent())throw M();let p=this.guard(()=>{let{m:l,identity:c}=this.publicResult(a),d=l.get(3);if(!(d instanceof Uint8Array)||!d.length||d.length>1024)throw M();return{...c,envelope:new Uint8Array(d)}});return this.publicIdentity={signPublicKey:new Uint8Array(p.signPublicKey),kemPublicKey:new Uint8Array(p.kemPublicKey),noisePublicKey:new Uint8Array(p.noisePublicKey)},this.noiseEnvelope=new Uint8Array(p.envelope),Object.freeze(p)}catch{throw this.retireLog(),M()}finally{i?.fill(0),t.signSecretKey?.fill(0),t.kemSecretKey?.fill(0)}}deviceCustodyCurrent(t,i){try{return this.deviceCurrent()&&!this.active&&this.publicIdentity!==null&&this.noiseEnvelope!==null&&t.isCurrent()===!0&&t.connectorId===this.connectorId&&t.deviceId===this.deviceId&&t.installationId===this.installationId&&i.envelope instanceof Uint8Array&&i.envelope.length===this.noiseEnvelope.length&&i.envelope.every((o,s)=>o===this.noiseEnvelope[s])&&["signPublicKey","kemPublicKey","noisePublicKey"].every(o=>i[o]instanceof Uint8Array&&i[o].length===32&&i[o].every((s,r)=>s===this.publicIdentity[o][r]))}catch{return!1}}acknowledgeDeviceRegistration(t){let i=null;try{if(!this.deviceCurrent()||this.active||this.deviceRegistered||!this.publicIdentity||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId)throw M();for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(Kt(t[o]).some((s,r)=>s!==this.publicIdentity[o][r]))throw M();if(i=An(new Map([[0,U(t.connectorId)],[1,U(t.deviceId)],[2,U(t.installationId)],[3,new Uint8Array(t.signPublicKey)],[4,new Uint8Array(t.kemPublicKey)],[5,new Uint8Array(t.noisePublicKey)]])),this.guard(()=>this.app.rt_app_device_registered(...this.put(i)))!==1||!this.deviceCurrent())throw M();this.deviceRegistered=!0}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}prepareCloudCopyCollection(t){let i=null;try{if(t.approvalMode==="strict")throw new on;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","join"].includes(t.purpose)||(this.cloudSource=t,this.cloudCallback=t.isCurrent,this.cloudCollection=t.collection,this.cloudPurpose=t.purpose,!this.cloudCopyCollectionCurrent(t)))throw M();let o=U(t.collection);if(o.every(s=>s===0)||(i=An(new Map([[0,o],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_cloud_copy_pin(...this.put(i)))!==1||!this.cloudCopyCollectionCurrent(t)))throw M()}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i?.fill(0)}}cloudCopyCollectionCurrent(t){try{let i=this.cloudSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&(!t||t===i)&&i.isCurrent===this.cloudCallback&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.cloudCollection&&i.purpose===this.cloudPurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signCloudCopyCreate(t){return this.signCloudCopy(t,"create")}signCloudCopyJoin(t){return this.signCloudCopy(t,"join")}signCloudCopy(t,i){let o=null,s=null;try{if(this.cloudIssued||!this.cloudCopyCollectionCurrent()||this.cloudPurpose!==i||(this.cloudIssued=!0,o=new Uint8Array(Kt(t)),s=this.guard(()=>this.takeOut(i==="create"?this.app.rt_app_cloud_copy_create_sign(...this.put(o)):this.app.rt_app_cloud_copy_join_sign(...this.put(o)))),s.length!==64||!this.cloudCopyCollectionCurrent()))throw M();return s}catch{throw s?.fill(0),this.retireLog(),M()}finally{o?.fill(0)}}preparePrivateCollection(t,i){let o=null,s=null;try{if(t.approvalMode==="strict")throw new on;if(this.cloudSource||this.privateAttempted||!this.deviceCurrent()||!this.deviceRegistered||this.active||t.approvalMode!=="password-ak1"||!["create","enrol"].includes(t.purpose)||(this.privateAttempted=!0,this.privateSource=t,this.prospectiveCollection=t.collection,this.privatePurpose=t.purpose,!this.privateCollectionCurrent()))throw M();let r=U(t.collection);if(r.every(a=>a===0))throw M();if(i.mode==="fresh"){if(o=An(new Map([[0,r],[1,t.purpose==="create"?0:1]])),this.guard(()=>this.app.rt_app_private_collection_pin(...this.put(o)))!==1)throw M()}else if(i.mode==="existing"){let a=i.marker,p=this.publicIdentity;if(t.purpose!=="enrol"||!p||a.collection!==t.collection||a.connectorId!==this.connectorId||a.deviceId!==this.deviceId||a.installationId!==this.installationId||typeof a.acknowledged!="boolean")throw M();for(let c of["signPublicKey","kemPublicKey","noisePublicKey"])if(!iC(Kt(a[c]),p[c]))throw M();let l=new Uint8Array(Kt(a.sasCommitment));if(l.every(c=>c===0)||(s=l,o=An(new Map([[0,1],[1,r],[2,U(a.connectorId)],[3,U(a.deviceId)],[4,U(a.installationId)],[5,new Uint8Array(a.signPublicKey)],[6,new Uint8Array(a.kemPublicKey)],[7,new Uint8Array(a.noisePublicKey)],[8,l],[9,a.acknowledged]])),this.privateEnrolAcknowledged=a.acknowledged,this.guard(()=>this.app.rt_app_private_enrol_restore(...this.put(o)))!==1))throw M()}else throw M();if(!this.privateCollectionCurrent())throw M();if(t.purpose==="enrol"){let a=this.guard(()=>this.takeOut(this.app.rt_app_private_enrol_commitment()));if(a.length!==32||a.every(p=>p===0)||s!==null&&!iC(a,s))throw M();this.sasCommitment=new Uint8Array(a)}}catch(r){throw this.retireLog(),r instanceof on?r:M()}finally{o?.fill(0)}}registeredDeviceReceipt(){if(!this.deviceCurrent()||!this.deviceRegistered||!this.publicIdentity)throw M();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateEnrolMarker(){if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||!this.publicIdentity)throw M();let t=this.publicIdentity;return Object.freeze({connectorId:this.connectorId,deviceId:this.deviceId,installationId:this.installationId,collection:this.prospectiveCollection,sasCommitment:new Uint8Array(this.sasCommitment),acknowledged:this.privateEnrolAcknowledged,signPublicKey:new Uint8Array(t.signPublicKey),kemPublicKey:new Uint8Array(t.kemPublicKey),noisePublicKey:new Uint8Array(t.noisePublicKey)})}privateCollectionCurrent(t){try{if(t&&(t.isCurrent()!==!0||t.connectorId!==this.connectorId||t.deviceId!==this.deviceId||t.installationId!==this.installationId||t.collection!==this.prospectiveCollection||t.purpose!==this.privatePurpose||t.approvalMode!=="password-ak1"))return!1;let i=this.privateSource;return this.deviceCurrent()&&!this.active&&this.deviceRegistered&&i!==null&&i.isCurrent()===!0&&i.connectorId===this.connectorId&&i.deviceId===this.deviceId&&i.installationId===this.installationId&&i.collection===this.prospectiveCollection&&i.purpose===this.privatePurpose&&i.approvalMode==="password-ak1"}catch{return!1}}signPrivateCreate(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="create")throw M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_create_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw M();return o}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}signPrivateDeviceEnrol(t){let i=null;try{if(!this.privateCollectionCurrent()||this.privatePurpose!=="enrol"||!this.sasCommitment||this.privateEnrolAcknowledged)throw M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_private_device_enrol_sign(...this.put(i))));if(o.length!==64||!this.privateCollectionCurrent())throw M();return Object.freeze({signature:o,sasCommitment:new Uint8Array(this.sasCommitment)})}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}adoptDevice(t,i){let o=null;try{if(!this.deviceCurrent()||!this.deviceRegistered||this.attempted||this.active||t.deviceId!==this.deviceId||this.privateSource&&(!this.privateCollectionCurrent()||t.collection!==this.prospectiveCollection)||this.cloudSource&&(!this.cloudCopyCollectionCurrent()||t.collection!==this.cloudCollection||t.state!=="cloud_copy"||t.cloudCopyOptIn!==!0))throw M();let s=nC(t.policyPins);if(i){if(this.sql||i.needsRecovery||!this.sqlBinding.exports)throw M();this.sqlBinding.sql=i,this.sqlBinding.run=i.import(this.sqlBinding.exports)}if(!this.sql||this.sql.needsRecovery)throw M();this.attempted=!0;let r=vn(t.endpoint),a=t.state==="e2e"?0:t.state==="cloud_copy"?1:-1,p=t.opened==="fresh"?0:t.opened==="existing"?1:t.opened==="unclean"?2:-1;if(a<0||p<0||typeof t.cloudCopyOptIn!="boolean"||a===1!==t.cloudCopyOptIn||!Array.isArray(t.trustedRoots)||t.trustedRoots.length<1||t.trustedRoots.length>64||!Array.isArray(t.trustedSigners)||t.trustedSigners.length>1024||!Number.isSafeInteger(t.sqliteVersion)||t.sqliteVersion<0||t.sqliteVersion>4294967295||(o=An(new Map([[0,4],[1,U(t.collection)],[2,U(t.replicaId)],[3,U(t.deviceId)],[4,r],[5,t.trustedRoots.map(Kt)],[6,t.trustedSigners.map(U)],[7,Cp(t.expectedGenesis)],[8,a],[9,t.cloudCopyOptIn],[10,null],[11,null],[12,p],[13,t.sqliteVersion],[14,U(this.connectorId)],[15,U(this.installationId)],[16,s]])),o.length>64*1024)||this.guard(()=>this.takeOut(this.app.rt_app_device_adopt(...this.put(o)))).length||!this.deviceCurrent())throw M();this.collection=t.collection,this.endpoint=r,this.active=!0,this.markOpened()}catch{throw this.retireLog(),this.fail(),M()}finally{o?.fill(0)}}signCpEnrol(t){let i=null;try{if(!this.deviceCurrent()||!this.publicIdentity||this.active||this.pump)throw this.retireLog(),M();i=new Uint8Array(Kt(t));let o=this.guard(()=>this.takeOut(this.app.rt_app_cp_enrol_sign(...this.put(i))));if(!this.deviceCurrent())throw this.retireLog(),M();if(!o.length)throw M();let{m:s,identity:r}=this.guard(()=>this.publicResult(o)),a=s.get(3);if(!(a instanceof Uint8Array)||a.length!==64||["signPublicKey","kemPublicKey","noisePublicKey"].some(p=>r[p].some((l,c)=>l!==this.publicIdentity[p][c])))throw M();return Object.freeze({...r,signature:new Uint8Array(a)})}catch{throw this.retireLog(),M()}finally{i?.fill(0)}}signCpLogToken(t){let i=null;try{if(!this.active||this.retired||!this.cpPin)throw M();let o=this.cpPin,s=!1;try{s=o.isCurrent()===!0&&o.connectorId===this.connectorId&&o.deviceId===this.deviceId&&o.collection===this.collection}catch{}if(!s)throw this.retireLog(),M();i=new Uint8Array(Kt(t));let r=this.guard(()=>this.takeOut(this.app.rt_app_cp_log_token_sign(...this.put(i))));if(r.length!==64)throw r.fill(0),M();return r}catch{throw M()}finally{i?.fill(0)}}bindLogTransport(t){try{if(!this.active||this.retired||this.pump||this.endpoint===null||this.collection===null||t.isCurrent()!==!0||vn(t.endpoint)!==this.endpoint||t.collection!==this.collection)throw M()}catch{throw M()}let i=U(this.collection);if(this.guard(()=>this.app.rt_app_log_bind(this.endpoint,...this.put(i)))!==1)throw M();if(this.logGeneration=this.guard(()=>vn(this.app.rt_app_log_generation())),this.logGeneration===0n)throw this.retireLog(),M();return this.pump=new ns(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}requestLogHead(){return!this.active||this.retired||this.pump===null||typeof this.app.rt_app_log_head!="function"?!1:this.guard(()=>this.app.rt_app_log_head())===1}get supportsLogPush(){return typeof this.app.rt_app_log_hello_sign=="function"}signLogHello(t,i){let o=null;try{if(!this.supportsLogPush||!this.active||this.retired||!this.pump||!this.transport||this.logGeneration===0n||!this.transport.isCurrent()||!(t instanceof Uint8Array)||t.length!==32||typeof i!="string"||i.length===0||i.length>16*1024||/[^\x21-\x7e]/.test(i))return null;let s=new TextEncoder().encode(i);o=new Uint8Array(32+s.length),o.set(t,0),o.set(s,32),s.fill(0);let r=this.logGeneration,a=this.guard(()=>this.takeOut(this.app.rt_app_log_hello_sign(r,...this.put(o))));return a.length!==64?(a.fill(0),null):a}catch{return null}finally{o?.fill(0)}}async reconnectLogTransport(t){let i=this.pump,o=this.logGeneration,s=()=>this.active&&!this.retired&&this.pump===i&&i!==null&&this.transport===t&&t.isCurrent()===!0&&vn(t.endpoint)===this.endpoint&&t.collection===this.collection;try{if(!s()||(await i.drainForAuthenticatedReconnect(),!s()))throw M();this.pump=null,this.transport=null;let r=U(this.collection);try{if(this.guard(()=>this.app.rt_app_log_reconnect(this.endpoint,...this.put(r)))!==1)throw M()}finally{r.fill(0)}if(this.logGeneration=this.guard(()=>vn(this.app.rt_app_log_generation())),this.logGeneration<=o||!t.isCurrent()||this.retired||!this.active)throw M();return this.pump=new ns(this,t,{endpoint:this.endpoint,collection:this.collection}),this.transport=t,this.pump}catch{throw this.retireLog(),M()}}signLogHttp(t){let i=null;try{if(!this.active||!this.pump||!this.transport||this.logGeneration===0n||this.endpoint===null||t.path!=="/v1/rpc"||t.collection!==this.collection||vn(t.endpoint)!==this.endpoint||!this.transport.isCurrent()||!(t.frame instanceof Uint8Array)||t.frame.length===0||t.frame.length>16*1024*1024||!(t.nonce instanceof Uint8Array)||t.nonce.length!==32||typeof t.token!="string"||t.token.length===0||t.token.length>16*1024||/[^\x21-\x7e]/.test(t.token))throw M();i=An(new Map([[0,t.frame],[1,t.token],[2,t.nonce]]));let o=this.guard(()=>this.takeOut(this.app.rt_app_log_http_sign(this.endpoint,this.logGeneration,vn(t.originalCallId),...this.put(i))));if(o.length!==64)throw o.fill(0),M();return o}catch{throw M()}finally{i?.fill(0)}}takeLogCalls(){return!this.active||this.retired?[]:this.guard(()=>{let t=this.takeOut(this.app.rt_app_log_calls());if(!t.length)return[];let i=ue(t);if(!Array.isArray(i)||i.length>64)throw M();return i.map(o=>{if(!(o instanceof Map))throw M();let s=o,r=s.get(0),a=s.get(1),p=s.get(2);if(vn(r)!==this.endpoint||!(a instanceof Uint8Array)||p!==void 0&&!(p instanceof Uint8Array))throw M();return{endpoint:r,frame:a,...p!==void 0?{sidecar:p}:{}}})})}acceptLogReply(t,i){return!this.active||this.retired?!1:this.guard(()=>this.app.rt_app_log_reply(vn(t),...this.put(i))===1)}logNoResponse(t){this.active&&!this.retired&&this.guard(()=>this.app.rt_app_log_no_response(vn(t)))}retireLog(){this.logGeneration=0n,!this.retired&&(this.retired=!0,this.cpPin=null,this.connectorId=null,this.devicePin=null,this.installationId=null,this.privateSource=null,this.prospectiveCollection=null,this.privatePurpose=null,this.sasCommitment?.fill(0),this.sasCommitment=null,this.publicIdentity=null,this.noiseEnvelope?.fill(0),this.noiseEnvelope=null,this.deviceActive=!1,this.deviceRegistered=!1,this.active?this.guard(()=>{super.dispose(),this.app.rt_app_log_retire()}):this.deviceAttempted&&this.guard(()=>this.app.rt_app_device_retire()))}pushLog(t){return!this.active||this.retired||!this.pump||!this.transport?!1:this.guard(()=>{let i=this.transport;return i.isCurrent()!==!0||vn(i.endpoint)!==this.endpoint||i.collection!==this.collection?(this.retireLog(),!1):this.app.rt_app_log_push(...this.put(t))===1})}accountKeyCurrent(t){try{return this.active&&!this.retired&&t.isCurrent()===!0&&t.approvalMode==="password-ak1"&&t.collection===this.collection&&t.deviceId===this.deviceId&&t.connectorId===this.connectorId&&t.installationId===this.installationId&&this.devicePin!==null&&this.devicePin.isCurrent()===!0&&this.devicePin.connectorId===this.connectorId&&this.devicePin.deviceId===this.deviceId&&this.devicePin.installationId===this.installationId}catch{return!1}}accountKeyState(t){let i=ue(t);if(!(i instanceof Map))throw M();let o=i;if(o.size!==2||!o.has(0)||!o.has(1))throw M();let s=o.get(0),r=o.get(1);if(s===0||s===1){if(r!==null)throw M();return Object.freeze({state:s===0?"pending":"keyed"})}if(s!==2||typeof r!="string"||!["not_private","not_ready","not_enrolled","not_authorized","device_missing","enrolment_mismatch","not_keyed","no_wrap","inconsistent","failed","outcome_unknown"].includes(r))throw M();return Object.freeze({state:"refused",reason:r})}unlockAccountKeyConsuming(t,i){try{if(t.approvalMode==="strict")throw new on;if(!this.accountKeyCurrent(t))throw M();Kt(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_unlock(...this.put(i)))));if(!this.accountKeyCurrent(t))throw M();return o}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i instanceof Uint8Array&&i.fill(0)}}setupAccountKeyDeviceConsuming(t,i){try{if(t.approvalMode==="strict")throw new on;if(!this.accountKeyCurrent(t))throw M();Kt(i);let o=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_device_setup(...this.put(i)))));if(!this.accountKeyCurrent(t))throw M();return o.state==="refused"?o:Object.freeze({state:o.state==="keyed"?"recovery_keyed":"recovery_pending"})}catch(o){throw this.retireLog(),o instanceof on?o:M()}finally{i instanceof Uint8Array&&i.fill(0)}}accountKeyStatus(t){try{if(!this.accountKeyCurrent(t))throw M();let i=this.guard(()=>this.accountKeyState(this.takeOut(this.app.rt_app_account_key_status())));if(!this.accountKeyCurrent(t))throw M();return i}catch{throw this.retireLog(),M()}}observations(){if(!this.active||this.retired)throw M();return this.guard(()=>{let t=ue(this.takeOut(this.app.rt_app_observations()));if(!(t instanceof Map))throw M();let i=t;for(let o of[1,2,3,4])if(typeof i.get(o)!="boolean")throw M();return{status:tr.dec(i.get(0)),keyringRebuilding:i.get(1),keyringRebuildFailed:i.get(2),snapshotInstallAvailable:i.get(3),requiresReopen:i.get(4)}})}async close(){return this.pump&&(await this.pump.close(),this.pump=null,this.transport=null),this.shutdown()}shutdown(){if(!this.active)return this.deviceAttempted&&!this.retired&&this.retireLog(),this.discard(),!1;if(this.pump)return this.pump.close().catch(()=>{}),this.fail(),!1;try{return this.retireLog(),super.dispose(),this.guard(()=>this.app.rt_app_shutdown()===1)&&this.sql!==null&&!this.sql.needsRecovery}finally{this.active=!1,this.discard()}}dispose(){this.shutdown()}};var Ja="unsynced",TT="current";var uw="moved.",mh=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/;var fw=class extends Error{constructor(t){super(`app unsynced collection: ${t}`);this.reason=t;this.name="AppUnsyncedCollectionError"}reason},En=(n="unavailable")=>new fw(n);function MT(n){if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).sort().join()!=="account,collection,device,installation,replica,version")throw En();let e=n,t=[e.account,e.installation,e.collection,e.replica,e.device];if(e.version!==1||t.some(i=>typeof i!="string"||!mh.test(i))||new Set(t).size!==t.length)throw En();return Object.freeze({...e})}function rC(n,e){if(e.throwIfAborted(),!globalThis.indexedDB)throw En();return new Promise((t,i)=>{let o=indexedDB.open(n,1),s=!1,r=()=>e.removeEventListener("abort",a),a=()=>{s=!0,r();try{o.transaction?.abort()}catch{}i(En("fenced"))};e.addEventListener("abort",a,{once:!0}),o.onblocked=o.onerror=a,o.onupgradeneeded=()=>{try{if(s||o.result.objectStoreNames.length)throw En();o.result.createObjectStore(Ja)}catch{try{o.transaction?.abort()}catch{}}},o.onsuccess=()=>{if(r(),s||o.result.objectStoreNames.length!==1||!o.result.objectStoreNames.contains(Ja)){o.result.close(),i(En());return}t(o.result)}})}async function LT(n,e,t,i,o){let s=await rC(n,o);try{return await new Promise((r,a)=>{let p=s.transaction(Ja,i?"readwrite":"readonly",{durability:"strict"}),l=null,c=null;p.onabort=p.onerror=()=>a(c??En()),p.oncomplete=()=>r(l);let d=p.objectStore(Ja),u=d.get(e);u.onsuccess=()=>{try{if(u.result!==void 0){l=t(u.result);return}if(!i)return;let f=t(i());d.add(f,e),l=f}catch(f){c=f,p.abort()}}})}finally{s.close()}}async function jT(n,e,t){let i=await rC(n,e);try{return await new Promise((o,s)=>{let r=i.transaction(Ja,"readwrite",{durability:"strict"}),a,p=null;r.onabort=r.onerror=()=>s(p??En()),r.oncomplete=()=>o(a),t(r.objectStore(Ja),l=>{a=l},l=>{p=l,r.abort()})})}finally{i.close()}}var oC=/^sha256:[0-9a-f]{64}$/;function sC(n){let e=n;if(!e||e.version!==1||!e.revisions||typeof e.revisions!="object"||Array.isArray(e.revisions))throw En();let t=new Map;for(let[i,o]of Object.entries(e.revisions)){if(!mh.test(i)||typeof o!="string"||!oC.test(o))throw En();t.set(i,o)}return t}async function aC(n,e,t){if(!mh.test(e))throw En("binding");return await LT(n,uw+e,sC,null,t)??new Map}function lC(n,e,t,i){for(let[o,s]of t)if(!mh.test(o)||!oC.test(s))return Promise.reject(En("binding"));return jT(n,i,(o,s,r)=>{let a=o.get(TT),p=o.get(uw+e);p.onsuccess=()=>{try{if(a.result===void 0||MT(a.result).collection!==e){r(En());return}let l=p.result===void 0?new Map:sC(p.result);for(let[c,d]of t)l.set(c,d);o.put({version:1,revisions:Object.fromEntries(l)},uw+e),s()}catch(l){r(l)}}})}var bV=720*60*60*1e3;re();var hw=new WeakMap,NT=100,UT=(n,e)=>`unsynced/1\0${n}\0${e}`;async function yh(n,e,t){try{return await n.get(e,void 0,t)}catch(i){if(X(i,"not_found"))return null;throw i}}function DT(n,e){let t=n.lastIndexOf("/"),i=n.lastIndexOf("."),o=i>t+1?i:n.length;return`${n.slice(0,o)} ${e}${n.slice(o)}`}async function $T(n,e){let t=new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(`unsynced/1\0copy\0${n}\0${e}`))).slice(0,16);t[6]=t[6]&15|128,t[8]=t[8]&63|128;let i=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}function zT(n){if(n.document===void 0)throw _("invalid_request","the source record has no document");return{path:n.path,document:n.document}}async function mw(n,e,t={}){let{signal:i}=t,o=t.map??zT;if(n.collection===e.collection)throw _("invalid_request","a collection cannot be transferred into itself");let s=t.ledger?await t.ledger.read(n.collection,i):new Map,r=new Map,a=await e.describe(i?{signal:i}:{}),p=new Set(a.types.map(w=>w.name.toLowerCase())),l=[],c=new Map,d=new Set,u=new Set,f=0;for await(let w of n.pages({},{body:!0,document:!0},i))for(let g of w.records){i?.throwIfAborted();let y=null;if(await yh(e,g.id,i)){let S=s.get(g.id);if(S===void 0&&r.set(g.id,g.revision),S===void 0||S===g.revision){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}if(y=await $T(g.id,g.revision),await yh(e,y,i)){r.set(g.id,g.revision),l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"present"}));continue}}let v=await o(g);if(v===null){l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:"skipped"}));continue}if(!v||typeof v!="object"||v.id!==void 0&&v.id!==g.id)throw _("invalid_request","the transfer map must keep the record ID");r.set(g.id,g.revision);let A=v.path??g.path,k=A;for(let S=2;d.has(k.toLowerCase())||await yh(e,{path:k},i);S++){if(S>NT)throw _("conflict",`no free path beside ${A}`,"path_taken");k=DT(A,S)}d.add(k.toLowerCase());for(let S of v.type?[v.type]:g.types)p.has(S.toLowerCase())||u.add(S);c.set(g.id,Object.freeze({...v,id:y??g.id,path:k})),k!==A&&!y&&f++,l.push(Object.freeze({sourceId:g.id,sourcePath:g.path,outcome:y?"changed":"create",path:k,...y?{copyId:y}:k!==A?{renamedFrom:A}:{}}))}let h=new Map;if(t.addTypes&&u.size){let w=new Map((await n.describe(i?{signal:i}:{})).types.map(g=>[g.name.toLowerCase(),g]));for(let g of[...u].sort()){let y=w.get(g.toLowerCase());if(!y?.revision)continue;let v;try{v=(await n.resources.get(y.path,i)).text}catch(A){if(X(A,"not_found"))continue;throw A}typeof v=="string"&&(h.set(y.name,v),u.delete(g))}}let m=w=>l.filter(g=>g.outcome===w).length,b=Object.freeze({source:n.collection,destination:e.collection,items:Object.freeze(l),missingTypes:Object.freeze([...u].sort()),addTypes:Object.freeze([...h.keys()].sort()),counts:Object.freeze({create:m("create"),present:m("present"),skipped:m("skipped"),renamed:f,changed:m("changed")})});return hw.set(b,Object.freeze({inputs:c,types:h,map:t.map,ledger:t.ledger,settle:r})),b}async function cC(n,e,t,i){let o=hw.get(n);if(!o)throw _("invalid_request","plan the transfer first");if(e.collection!==n.source||t.collection!==n.destination)return!1;let s=await mw(e,t,{...o.map?{map:o.map}:{},...o.ledger?{ledger:o.ledger}:{},...i?{signal:i}:{}});return s.counts.create===0&&s.counts.changed===0}async function pC(n,e,t={}){let i=hw.get(n),{signal:o}=t;if(!i)throw _("invalid_request","plan the transfer first");let{inputs:s}=i;if(e.collection!==n.destination)throw _("invalid_request","the plan is for another collection");let r=n.items.filter(m=>m.outcome==="create"||m.outcome==="changed"),a=[],p=[],l=0,c=n.counts.present,d=0,u=()=>{try{t.onProgress?.(Object.freeze({done:d,total:r.length}))}catch{}};i.ledger&&i.settle.size&&await i.ledger.record(n.source,i.settle,o);let f=[],h=[];for(let[m,b]of i.types){o?.throwIfAborted();try{await e.createType(b,o?{signal:o}:{}),f.push(m)}catch(w){o?.throwIfAborted(),X(w,"conflict")?f.push(m):h.push(Object.freeze({name:m,code:X(w)?w.code:"unavailable"}))}}u();for(let m of r){o?.throwIfAborted();try{let b=await e.create(s.get(m.sourceId),{intent:UT(n.source,m.copyId??m.sourceId),...o?{signal:o}:{}});p.push(b.mutationId),l++}catch(b){o?.throwIfAborted(),await yh(e,m.copyId??m.sourceId,o).catch(()=>null)?c++:a.push(Object.freeze({sourceId:m.sourceId,code:X(b)?b.code:"unavailable"}))}d++,u()}return Object.freeze({source:n.source,destination:n.destination,created:l,present:c,skipped:n.counts.skipped,failed:Object.freeze(a),addedTypes:Object.freeze(f),failedTypes:Object.freeze(h),mutations:Object.freeze(p),retired:!1})}vh();hu();no();Pu();var yC="mdbn-app-tabs/1",yw="\0mdbn-port";var dp=n=>typeof n=="string"&&/^[0-9a-f-]{36}$/.test(n);function WT(n){if(!n||typeof n!="object")return null;let e=n;switch(e.k){case"join":case"leave":return dp(e.tab)?e:null;case"leader":case"bye":case"fault":case"signedOut":case"signedIn":return dp(e.leader)?e:null;case"joined":return dp(e.tab)&&dp(e.leader)&&typeof e.binding=="string"?e:null;case"m":return dp(e.tab)&&typeof e.up=="boolean"&&Number.isSafeInteger(e.s)&&e.s>=0?e:null;default:return null}}function gw(n){if(!n||typeof n!="object")return!1;let e=Object.getPrototypeOf(n);return e===Object.prototype||e===null}function bw(n,e,t=0){return n instanceof MessagePort?{[yw]:e(n)}:t>=6?n:Array.isArray(n)?n.map(i=>bw(i,e,t+1)):gw(n)?Object.fromEntries(Object.entries(n).map(([i,o])=>[i,bw(o,e,t+1)])):n}function ww(n,e,t,i=0){if(gw(n)&&Object.keys(n).length===1&&Number.isSafeInteger(n[yw])){let o=e(n[yw]);return t.push(o),o}return i>=6?n:Array.isArray(n)?n.map(o=>ww(o,e,t,i+1)):gw(n)?Object.fromEntries(Object.entries(n).map(([o,s])=>[o,ww(s,e,t,i+1)])):n}var _h=class{constructor(e,t){this.send=e;this.up=t;this.next=t?1:2}send;up;streams=new Map;next;bridge(e,t){this.streams.set(t,e),e.onmessage=i=>{let o=i.ports.length?bw(i.data,s=>{let r=this.next;return this.next+=2,this.bridge(s,r),r}):i.data;try{this.send(t,o)}catch{}}}deliver(e,t){let i=this.streams.get(e);if(!i)return;let o=[],s=ww(t,r=>{let a=new MessageChannel;return this.bridge(a.port1,r),a.port2},o);try{i.postMessage(s,o)}catch{for(let r of o)r.close()}}close(){for(let e of this.streams.values()){e.onmessage=null;try{e.close()}catch{}}this.streams.clear()}},Ah=class{constructor(e,t,i,o=()=>{}){this.env=t;this.lost=i;this.signedInElsewhere=o;this.base=e.storageNamespace===void 0?`${yC}/${e.cpOrigin}/${e.appId}/${e.build}`:`${yC}/namespace/${JSON.stringify([e.cpOrigin,e.appId,e.build,e.storageNamespace])}`}env;lost;signedInElsewhere;tab=crypto.randomUUID();base;channel=null;presence=null;leading=null;hub=null;follower=null;signingOut=!1;announced=!1;joining=null;get leader(){return this.leading!==null}open(){if(this.channel)return this.channel;let e=new this.env.BroadcastChannel(this.base);return e.onmessage=t=>this.received(WT(t.data)),this.channel=e,e}post(e){this.channel?.postMessage(e)}hold(e,t,i){return new Promise((o,s)=>{let r=p=>{if(!p){o(null);return}return new Promise(l=>o(l))};(t?this.env.locks.request(e,{ifAvailable:!0},r):this.env.locks.request(e,{signal:i},r)).catch(s)})}async elect(e){if(e.throwIfAborted(),this.open(),this.presence??=await this.hold(`${this.base}/tab/${this.tab}`,!0),e.throwIfAborted(),this.leading||(this.leading=await this.hold(`${this.base}/leader`,!0)),this.leading)return e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};let t=new AbortController,i=()=>t.abort();e.addEventListener("abort",i,{once:!0});let o=this.hold(`${this.base}/leader`,!1,t.signal),s;try{s=await new Promise((c,d)=>{o.then(u=>{u&&c({release:u})},()=>{}),this.joining={resolve:c,reject:d},e.addEventListener("abort",()=>d(e.reason),{once:!0}),this.post({k:"join",tab:this.tab})})}catch(c){throw this.joining=null,t.abort(),c}finally{e.removeEventListener("abort",i)}if(this.joining=null,"release"in s)return this.leading=s.release,e.aborted&&(this.resign(),e.throwIfAborted()),{kind:"leader"};e.aborted&&(t.abort(),e.throwIfAborted());let r=new MessageChannel,a=this.tab,p=new _h((c,d)=>this.post({k:"m",tab:a,up:!0,s:c,d}),!0);p.bridge(r.port2,0);let l={leader:s.leader,tunnel:p,wait:t,port:r.port1,left:!1,signedOut:!1};return this.follower=l,o.then(c=>{if(c){if(this.follower!==l||l.left){c();return}this.leading=c,this.departed(l)}},()=>{}),{kind:"follower",port:r.port1,binding:s.binding,leave:()=>this.leave(l)}}lead(e){!this.leading||this.hub||(this.hub={followers:new Map,worker:e,faulted:!1},this.post({k:"leader",leader:this.tab}))}fault(){!this.hub||this.hub.faulted||(this.hub.faulted=!0,this.post({k:"fault",leader:this.tab}))}signedOut(){this.hub&&(this.signingOut=!0,this.post({k:"signedOut",leader:this.tab}))}signedIn(){!this.hub||this.announced||this.signingOut||(this.announced=!0,this.post({k:"signedIn",leader:this.tab}))}resign(){let e=this.hub,t=this.signingOut;this.hub=null,this.signingOut=!1,this.announced=!1,e&&this.post({k:"bye",leader:this.tab,...t?{signedOut:!0}:{}});let i=this.leading;if(this.leading=null,i?.(),e){for(let o of e.followers.values())o.watch.abort(),o.tunnel.close();e.followers.clear()}}leave(e){e.left||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower===e&&(this.follower=null,this.post({k:"leave",tab:this.tab})))}departed(e,t=!1){e.left||this.follower!==e||(e.left=!0,e.wait.abort(),e.tunnel.close(),this.follower=null,this.lost(t||e.signedOut))}release(){this.joining?.reject(new DOMException("released","AbortError")),this.joining=null,this.follower&&this.leave(this.follower),this.resign();let e=this.presence;this.presence=null,e?.(),this.channel&&(this.channel.onmessage=null,this.channel.close(),this.channel=null)}received(e){if(!e)return;let t=this.hub,i=this.follower;switch(e.k){case"join":{if(!t||t.followers.has(e.tab)||e.tab===this.tab)return;let o=crypto.randomUUID(),s=new MessageChannel,r=e.tab,a=new _h((l,c)=>this.post({k:"m",tab:r,up:!1,s:l,d:c}),!1);a.bridge(s.port1,0);let p=new AbortController;t.followers.set(r,{binding:o,tunnel:a,watch:p});try{t.worker.attach(s.port2,o)}catch{t.followers.delete(r),a.close();return}this.post({k:"joined",tab:r,binding:o,leader:this.tab}),t.faulted&&this.post({k:"fault",leader:this.tab}),this.hold(`${this.base}/tab/${r}`,!1,p.signal).then(l=>{l?.(),this.drop(t,r)},()=>{});return}case"leave":t&&this.drop(t,e.tab);return;case"joined":if(e.tab===this.tab&&this.joining){let o=this.joining;this.joining=null,o.resolve({binding:e.binding,leader:e.leader})}return;case"leader":this.joining&&this.post({k:"join",tab:this.tab});return;case"bye":i&&i.leader===e.leader&&this.departed(i,e.signedOut===!0);return;case"signedOut":i&&i.leader===e.leader&&(i.signedOut=!0);return;case"signedIn":!t&&!i&&!this.joining&&e.leader!==this.tab&&this.signedInElsewhere();return;case"fault":i&&!i.left&&i.leader===e.leader&&i.port.dispatchEvent(new MessageEvent("messageerror"));return;case"m":e.up&&t?t.followers.get(e.tab)?.tunnel.deliver(e.s,e.d):!e.up&&i&&e.tab===this.tab&&i.tunnel.deliver(e.s,e.d);return}}drop(e,t){let i=e.followers.get(t);if(i){e.followers.delete(t),i.watch.abort(),i.tunnel.close();try{e.worker.detach(i.binding)}catch{}}}};function Hi(n){try{return n()}catch{return}}function KT(){let n=Hi(()=>globalThis.crypto?.subtle),e=Hi(()=>globalThis.navigator?.storage),t=Hi(()=>typeof e?.getDirectory=="function"?()=>e.getDirectory.call(e):void 0);return{subtle:n,abortSignalAny:Hi(()=>typeof AbortSignal=="function"&&typeof AbortSignal.any=="function")===!0,randomUUID:Hi(()=>typeof globalThis.crypto?.randomUUID=="function")===!0,worker:Hi(()=>typeof Worker=="function")===!0,messageChannel:Hi(()=>typeof MessageChannel=="function")===!0,locks:Hi(()=>typeof globalThis.navigator?.locks?.request=="function")===!0,broadcastChannel:Hi(()=>typeof BroadcastChannel=="function")===!0,indexedDB:Hi(()=>typeof globalThis.indexedDB<"u")===!0,getDirectory:t}}async function gC(n=KT()){let e=[];if(n.subtle||e.push("web_crypto"),n.abortSignalAny||e.push("abort_signal_any"),n.randomUUID||e.push("random_uuid"),n.worker||e.push("worker"),n.messageChannel||e.push("message_channel"),n.locks||e.push("web_locks"),n.broadcastChannel||e.push("broadcast_channel"),n.indexedDB||e.push("indexed_db"),n.subtle)try{await n.subtle.generateKey({name:"X25519"},!1,["deriveBits"])}catch{e.push("x25519")}if(e.length)return{ok:!1,problem:"browser_unsupported",missing:Object.freeze(e)};if(typeof n.getDirectory!="function")return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])};try{await n.getDirectory()}catch{return{ok:!1,problem:"application_storage_unavailable",missing:Object.freeze(["opfs"])}}return{ok:!0}}function kh(n,e,t={pendingForMs:0,connection:"online"}){if(!Number.isSafeInteger(n)||n<0)throw new RangeError("invalid unsynced count");return n===0?{kind:"no_pending_edits",unsynced:0,warning:null}:{kind:"not_yet_synced",unsynced:n,warning:!e.persistent&&(t.pendingForMs>=3e4||t.connection==="offline")?"storage_may_be_evicted":null}}function bC(n){switch(n){case"pending":return"not_yet_synced";case"confirmed":return"saved";case"rejected":return"rejected";case"unknown":return"outcome_unknown";default:throw new RangeError("invalid receipt state")}}var wC="Some changes are only on this device. Stay online so they can sync.";async function Sh(n,e,t=!1){let i=!1;try{i=await n?.persisted()===!0,!i&&t&&(i=await n?.persist?.()===!0)}catch{}return{persistent:i,installed:e}}xh();var AC=Object.freeze(new Set);function kC(n,e){let t=`mdbase.${n}.forgotten-collections.v1.${encodeURIComponent(e)}`,i=()=>{try{return globalThis.localStorage??null}catch{return null}},o=null,s=()=>{let a=null;try{a=i()?.getItem(t)??null}catch{}if(o&&o.raw===a)return o;let p=null,l=AC;try{let c=a?JSON.parse(a):null;c?.v===1&&typeof c.account=="string"&&c.account.length<=64&&Array.isArray(c.ids)&&c.ids.length<=1024&&c.ids.every(d=>typeof d=="string"&&d.length>0&&d.length<=64)&&(p=c.account,l=Object.freeze(new Set(c.ids)))}catch{}return o={raw:a,account:p,ids:l},o},r=(a,p)=>{try{p.size?i()?.setItem(t,JSON.stringify({v:1,account:a,ids:[...p].slice(-1024)})):i()?.removeItem(t)}catch{}o=null};return Object.freeze({read(a){let p=s();return a&&p.account===a?p.ids:AC},add(a,p){let l=s(),c=new Set(l.account===a?l.ids:[]);c.has(p)||(c.add(p),r(a,c))},remove(a,p){let l=s();if(l.account!==a||!l.ids.has(p))return!1;let c=new Set(l.ids);return c.delete(p),r(a,c),!0},clear(){try{i()?.removeItem(t)}catch{}o=null}})}var QT=new Set(["owner","editor","viewer"]),oo=(n,e=512)=>typeof n=="string"&&n.length>0&&n.length<=e,eM=new Set(["unselected","opening","setup_required","ready"]);function SC(n){let e=n;return!e||typeof e!="object"||!oo(e.collectionId,64)||typeof e.displayName!="string"||e.displayName.length>512||!QT.has(e.role)?null:Object.freeze({collectionId:e.collectionId,displayName:e.displayName,role:e.role})}function PC(n){let e=n;return!e||typeof e!="object"||e.state!=="paired"||!oo(e.requestId,64)||!oo(e.installationId,64)||!oo(e.deviceId,64)||!oo(e.appId,64)||e.kind!=="app-runtime"&&e.kind!=="mobile"||!oo(e.verificationUri,2048)||!oo(e.accountId,64)||!Array.isArray(e.collectionIds)||e.collectionIds.length>1024||!e.collectionIds.every(t=>oo(t,64))?null:Object.freeze({requestId:e.requestId,installationId:e.installationId,deviceId:e.deviceId,appId:e.appId,kind:e.kind,verificationUri:e.verificationUri,state:"paired",accountId:e.accountId,...typeof e.accountEmail=="string"&&e.accountEmail.length<=320?{accountEmail:e.accountEmail}:{},collectionIds:Object.freeze([...e.collectionIds]),createCollections:e.createCollections===!0,requestedCreateCollections:e.requestedCreateCollections===!0})}function xC(n,e){let t=`mdbase.${n}.session-hint.v1.${encodeURIComponent(e)}`,i=null,o=null,s=()=>{try{return globalThis.localStorage??null}catch{return null}},r=()=>{let p=null;try{p=s()?.getItem(t)??null}catch{return null}if(i&&i.raw===p)return i.value;let l=null;try{let c=p?JSON.parse(p):null,d=c?.v===1?PC(c.signIn):null,u=Array.isArray(c?.collections)&&c.collections.length<=1024?c.collections.map(SC):null;d&&u&&u.every(f=>f!==null)&&(l=Object.freeze({signIn:d,collections:Object.freeze(u)}))}catch{l=null}return i={raw:p,value:l},l},a=()=>{o=null;try{s()?.removeItem(t)}catch{}};return Object.freeze({read:r,clear:a,observe(p){if(p.status==="signed_out"&&p.signIn===null){o!==""&&(a(),o="");return}if(!eM.has(p.status)||p.signIn?.state!=="paired")return;let l=PC(p.signIn),c=p.collections.map(SC);if(!l||!c.every(u=>u!==null))return;let d=JSON.stringify({v:1,signIn:l,collections:c});if(d!==o){o=d;try{s()?.setItem(t,d)}catch{}}}})}Hy();re();function gM(n,e){return new Promise((t,i)=>{let o=()=>{clearTimeout(s),i(_("cancelled","The original collection closed."))};if(n.aborted){i(_("cancelled","The original collection closed."));return}let s=setTimeout(()=>{n.removeEventListener("abort",o),t()},e);n.addEventListener("abort",o,{once:!0})})}var bM=/^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/,Qa=Object.freeze({checking:!1,assessment:null,problem:null}),wM=Object.freeze({capabilities:Qa,contracts:Qa,configuration:Qa,files:Qa,people:Qa,notifications:Qa}),lo=(n,e)=>{let t=e?Object.freeze({status:e,problem:e==="incompatible"?Object.freeze({code:"incompatible"}):null}):null;return Object.freeze({checking:n,assessment:t,problem:null,facets:Object.freeze({...wM,configuration:Object.freeze({checking:n,assessment:t,problem:null})})})},Eh=n=>n==="approval_required"?"device_approval_required":n,vM=n=>n.state==="opening"||n.state==="unavailable"&&n.reason!=="sync_required"&&n.reason!=="access_removed"&&n.reason!=="collection_deleted",HC=n=>{if(X(n)){let e=n.details instanceof Map?n.details.get("availability"):void 0;return typeof e=="string"?Eh(e):n.reason??n.code}return"open_failed"},GC=n=>{if(!X(n))return;let e=j0(n.details);return Object.freeze({name:"MdbaseError",code:n.code,...e?{relay:e}:{}})};function _M(n){let e=n.manifest?.redirect_uris;return(Array.isArray(e)?e.filter(i=>typeof i=="string"):[]).find(i=>{try{return new URL(i).origin===n.origin}catch{return!1}})??new URL("/",n.origin).href}function YC(n,e,t){if(n.signIn?.state!=="paired"||!e.length&&!t)return n;let i=new Set(n.collections.map(p=>p.collectionId)),o=e.filter(p=>!i.has(p.collectionId)),s=o.length?Object.freeze([...n.collections,...o]):n.collections;if(!t||n.status!=="unselected"||i.has(t.collectionId))return s===n.collections?n:Object.freeze({...n,collections:s});let{problemDetail:r,...a}=n;return Object.freeze({...a,collections:s,status:t.status,selectedCollectionId:t.collectionId,problem:t.problem,transport:null,live:null,...t.problemDetail?{problemDetail:t.problemDetail}:{},..."readiness"in n?{readiness:t.readiness}:{}})}var qh=class{options;loading=null;list=Object.freeze([]);open=null;listed=null;settled=null;refreshing=null;closed=!1;bindings=null;bindingsAccount=null;native=null;revision=0;constructor(e){this.options=e}grants(){let e=this.loading??=(this.options.grants??(async()=>{let{MdbaseAppGrants:t}=await Promise.resolve().then(()=>(KC(),WC));return new t({declaration:this.options.declaration,redirectUri:_M(this.options.declaration)})}))();return e.catch(()=>{this.loading===e&&(this.loading=null)}),e}changed(){if(!this.closed){this.revision++;try{this.options.onChange()}catch{}}}bind(e,t){let i=t.filter(o=>o.account_id===e);this.bindingsAccount===e&&JSON.stringify(i)===JSON.stringify(this.bindings)||(this.bindingsAccount=e,this.bindings=Object.freeze([...i]),this.settled=null,this.listed=null,this.setList([]))}async nativeAuthorization(e,t,i){if(e.action==="cancel")return this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,null;if(this.closed||i.aborted)throw _("cancelled","Original Native authorization fenced");if(e.action==="prepare"){if(this.native||e.value.authorizationId)throw _("unauthenticated","Original Native preparation unavailable");let a={context:e.value,portal:t,prepared:null,life:new AbortController};this.native=a;let p=AbortSignal.any([i,a.life.signal]),l=await this.grants();if(!l.prepareAuthorization)throw _("unavailable","Native authorization unavailable");let c=btoa(String.fromCharCode(...Uint8Array.from(e.value.challenge.match(/../g),u=>parseInt(u,16)))).replaceAll("+","-").replaceAll("/","_").replace(/=+$/u,""),d=await l.prepareAuthorization({authorizationNonce:c,expectedAccountId:e.value.accountId,signal:p});if(a.prepared=d,this.native!==a||p.aborted||d.applicationId!==e.value.appId)throw d.cancel(),_("unauthenticated","Original application registration mismatch");return Object.freeze({authorizationId:d.authorizationId,applicationId:d.applicationId,manifestDigest:d.manifestDigest})}let o=this.native,s=o?.prepared;if(!o||!s||o.portal!==t||o.context.requestId!==e.value.requestId||s.authorizationId!==e.value.authorizationRequestId)throw _("unauthenticated","Original Native preparation unavailable");let r=await s.finish({popup:t,collection:e.value.collectionId,signal:AbortSignal.any([i,o.life.signal])});if(this.native!==o||i.aborted||!r.nativeCompletion)throw _("unauthenticated","Original Native completion unavailable");return r.nativeCompletion}entries(){return this.list}has(e){return this.list.some(t=>t.collectionId===e)||this.open?.id===e}state(){return this.open?.state??null}connection(e){let t=this.open;return t&&t.id===e&&t.state.status==="ready"?t.connection:null}listing(e){return!this.closed&&e!==null&&this.settled!==e}ensure(e){this.settled!==e&&!this.refreshing&&this.refresh(e).catch(()=>{})}refresh(e=this.listed){if(this.closed)return Promise.resolve();if(this.refreshing)return this.refreshing;let t=(async()=>{try{let i=await this.grants(),o=this.bindings,s=[];if(o)for(let a of o)a.account_id===e&&await i.verifiedStoredNativeGrant?.(a)&&s.push(a);let r=await i.collections(o===null?{}:{bindings:s});if(this.closed||o!==this.bindings)return;this.listed=e,this.setList(r)}finally{!this.closed&&e!==null&&this.settled!==e&&(this.settled=e,this.changed())}})().finally(()=>{this.refreshing===t&&(this.refreshing=null)});return this.refreshing=t,t}setList(e){let t=Object.freeze(e.filter(i=>bM.test(i.collectionId)).map(i=>Object.freeze({collectionId:i.collectionId,displayName:i.displayName,role:i.role??"editor",availability:i.availability,kind:"private"})));JSON.stringify(t)!==JSON.stringify(this.list)&&(this.list=t,this.changed())}setAvailability(e,t){this.list.some(i=>i.collectionId===e&&JSON.stringify(i.availability)!==JSON.stringify(t))&&(this.list=Object.freeze(this.list.map(i=>i.collectionId===e?Object.freeze({...i,availability:t}):i)),this.changed())}set(e,t){if(this.open!==e||e.life.signal.aborted)return;let{problemDetail:i,...o}=e.state,{problemDetail:s,...r}=t,a=r.problem===null?void 0:s??(r.problem===void 0?i:void 0);e.state=Object.freeze({...o,...r,...a?{problemDetail:a}:{}}),this.changed()}async openCollection(e,t){if(this.closed)throw _("cancelled","Private collections closed","application_entry_fenced");this.close(!1);let i={id:e,life:new AbortController,client:null,setup:null,connection:null,stopLink:null,state:Object.freeze({collectionId:e,status:"opening",problem:null,readiness:lo(!0,null)})};this.open=i,this.changed();let o=i.life.signal;try{let s=await this.grants(),r=this.bindings?.find(d=>d.account_id===t.account&&d.collection_id===e),a=async()=>{if(this.bindings!==null&&(!r||this.bindingsAccount!==t.account||!this.bindings.includes(r)||!await s.verifiedStoredNativeGrant?.(r)))throw _("unauthenticated","Original account-bound Native grant unavailable");if(o.aborted)throw _("cancelled","Original Native open fenced")};await a();let p=await s.availability(e,{signal:o});if(this.setAvailability(e,p),vM(p)&&(p.state==="unavailable"&&this.set(i,{status:"blocked",problem:Eh(p.reason),readiness:lo(!1,null)}),p=await s.waitForAvailable(e,{signal:o,timeoutMs:this.options.waitMs??10*6e4,onAvailability:d=>{this.setAvailability(e,d),d.state==="unavailable"?this.set(i,{status:"blocked",problem:Eh(d.reason)}):this.set(i,{status:"opening",problem:null,readiness:lo(!0,null)})}})),p.state!=="available"){if(p.state==="opening")throw _("unavailable","The collection is still getting ready","collection_unavailable");this.set(i,{status:"blocked",problem:Eh(p.reason),readiness:lo(!1,null)});return}this.set(i,{status:"opening",problem:null}),await a();let l=await(this.options.connect??AM(this.options.declaration))(s,e,o);if(this.open!==i||o.aborted||l.collection!==e){if(l.close(),this.open===i&&!o.aborted)throw _("invalid_request","a different collection opened","collection_mismatch");return}i.client=l,i.setup=s.setup(l),i.connection=Object.freeze({id:e,displayName:this.list.find(d=>d.collectionId===e)?.displayName??"Collection",scope:Object.freeze({account:t.account,installation:t.installation,collection:e}),generation:crypto.randomUUID(),records:l,files:l.files,people:s.people(e,l),isCurrent:()=>this.open===i&&!o.aborted&&!this.closed}),await this.assessOpen(i);let c=0;i.stopLink=l.onLink((d,u)=>{u?this.set(i,{problem:HC(u),problemDetail:GC(u)}):d==="open"&&this.set(i,{problem:null});let f=++c;s.availability(e,{signal:o}).then(h=>{this.open===i&&!o.aborted&&f===c&&this.setAvailability(e,h)}).catch(()=>{})})}catch(s){throw this.open===i&&!o.aborted&&this.set(i,{status:"blocked",problem:HC(s),problemDetail:GC(s),readiness:lo(!1,null)}),s}}async assessOpen(e){this.set(e,{readiness:lo(!0,e.state.readiness.assessment?.status??null)});let t=1e3;for(;;){if(this.open!==e||e.life.signal.aborted)throw _("cancelled","The original collection closed.");let i;try{i=await e.setup.assess({signal:e.life.signal})}catch(o){if(!X(o)||o.code!=="rate_limited")throw o;let s=o.retryAfterMs;await gM(e.life.signal,Math.min(2147483647,Math.max(t,typeof s=="number"&&Number.isFinite(s)?s:0))),t=Math.min(3e4,t*2);continue}if(this.open!==e||e.life.signal.aborted)throw _("cancelled","The original collection closed.");return this.set(e,{status:i==="ready"?"ready":"setup_required",problem:null,readiness:lo(!1,i)}),i}}current(){let e=this.open;if(!e?.setup||e.life.signal.aborted)throw _("invalid_request","No Private collection is open","application_connection_fenced");return e}isOpen(){return this.open!==null}async assess(){let e=this.current();return await this.assessOpen(e),e.state.readiness}plan(e){return this.current().setup.plan(e)}async apply(e,t={}){let i=this.current(),o=await i.setup.apply(e,t);this.set(i,{status:o==="ready"?"ready":"setup_required",problem:null,readiness:lo(!1,o)})}async configure(e={}){let i=await this.current().setup.plan(e.signal?{signal:e.signal}:{});await this.apply(i,e)}async add(e,t,i){let o;try{o=await this.grants()}catch(r){throw e.close(),r}let s=await o.authorize({popup:e,...t?{collection:t}:{},...i?{signal:i}:{}});return await this.refresh().catch(()=>{}),s.collectionId}async forget(e){this.open?.id===e&&this.close();let t=await this.grants(),i=this.bindings?.find(o=>o.collection_id===e&&o.account_id===this.bindingsAccount);(this.bindings===null||i&&await t.verifiedStoredNativeGrant?.(i))&&await(i?t.forget(e,{expectedNoisePublicKey:i.client_noise_public_key}):t.forget(e)),this.list.some(o=>o.collectionId===e)&&(this.list=Object.freeze(this.list.filter(o=>o.collectionId!==e)),this.changed())}async forgetAll(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close();try{await(await this.grants()).forgetAllGrants()}finally{this.list=Object.freeze([]),this.listed=null,this.settled=null,this.changed()}}close(e=!0){let t=this.open;if(t){this.open=null,t.life.abort(),t.stopLink?.();try{t.client?.close()}catch{}e&&this.changed()}}dispose(){this.native?.life.abort(),this.native?.prepared?.cancel(),this.native=null,this.close(!1),this.closed=!0}};function AM(n){return async(e,t,i)=>{let{connect:o}=await Promise.resolve().then(()=>(Cs(),Ed));return o({connector:e.connector(t),app:{name:n.id,version:"1"},signal:i})}}var Vh={};function XM(n){let e=globalThis.document;return!e||typeof e.addEventListener!="function"||e.visibilityState!=="hidden"?Promise.resolve():new Promise((t,i)=>{let o=()=>{e.visibilityState!=="hidden"&&(e.removeEventListener("visibilitychange",o),n.removeEventListener("abort",s),t())},s=()=>{e.removeEventListener("visibilitychange",o),i(n.reason)};e.addEventListener("visibilitychange",o),n.addEventListener("abort",s,{once:!0})})}var RI=new WeakMap;function ZM(n){let e=n.unsynced;if(!e)return n;let t=RI.get(n);return t||(t=Object.freeze({...n,status:e.sessionStatus,selectedCollectionId:null,unsynced:null}),RI.set(n,t)),t}var Ap=class extends Error{code="application_not_yet_available";constructor(){super("MdbaseConnect application runtime is not yet available"),this.name="MdbaseApplicationUnavailableError"}},Zw=Object.freeze({code:"application_not_yet_available"}),cl=Object.freeze({checking:!1,assessment:null,problem:Zw}),QM=Object.freeze({checking:!1,assessment:null,problem:Zw,facets:Object.freeze({capabilities:cl,contracts:cl,configuration:cl,files:cl,people:cl,notifications:cl})}),pl=Object.freeze({checking:!1,assessment:null,problem:null}),Fh=Object.freeze({checking:!1,assessment:null,problem:null,facets:Object.freeze({capabilities:pl,contracts:pl,configuration:pl,files:pl,people:pl,notifications:pl})}),Xw=()=>new Ap,EI=Object.freeze({state:"none",problem:null,usable:null,requested:Object.freeze({collectionId:null,source:"none",displayName:null,approved:!1})});function e2(){let n={status:"blocked",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:Zw.code,timing:null,readiness:QM,selection:EI},e=Object.freeze({...n,phase:lc(n),sync:null,writes:null,links:null}),t=()=>Promise.reject(Xw());return Object.freeze({getSnapshot:()=>e,subscribe:()=>()=>{},start:t,authorize:t,select:t,approve:t,reauthorize:t,refreshCollectionList:t,requestAccess:t,chooseAnother:t,assess:t,configure:t,setup:Object.freeze({plan:t,apply:t}),clearSelection:t,forget:t,deleteCollection:t,setForeground(){throw Xw()},close:t,signOut:t})}var t2=n=>typeof Worker=="function"&&typeof MessageChannel=="function"&&Rt()!==null&&Lt(n,!0);function n2(n,e){if(n===void 0)return null;let t=()=>{throw _("invalid_request","Invalid sign-in opener","application_sign_in_opener")};if(!n||typeof n!="object"||typeof n.open!="function"||n.close!==void 0&&typeof n.close!="function")return t();let i=n.returnUrl;i!==void 0&&(UP(i,e.manifest,en(e.environment))||t());let o=n.open.bind(n),s=n.close?.bind(n);return Object.freeze({open:o,...s?{close:s}:{},...i!==void 0?{returnUrl:i}:{}})}async function i2(n){let e=!0;if(n.webPush){let t=globalThis.navigator?.serviceWorker,i;t&&typeof t.getRegistration=="function"&&(e=await Promise.race([(async()=>{let o=await(await t.getRegistration())?.pushManager?.getSubscription();return o?await o.unsubscribe():!0})().catch(()=>!1),new Promise(o=>{i=setTimeout(()=>o(!1),5e3)})]).finally(()=>clearTimeout(i)))}try{n.server==="incomplete"&&console.warn("mdbase: signed out on this device, but mdbase could not be reached to end the session. This device stays listed under the account until it is removed there."),(n.local==="incomplete"||!e)&&console.warn("mdbase: signed out, but some local data on this device could not be removed.")}catch{}}function r2(n){let e=`mdbase.${n}.selected-collection.v1`;return Object.freeze({read:()=>{try{return globalThis.localStorage?.getItem(e)??null}catch{return null}},write:t=>{try{t===null?globalThis.localStorage?.removeItem(e):globalThis.localStorage?.setItem(e,t)}catch{}}})}var dl=class{app;declaration;compiled;lifetime=new AbortController;listeners=new Set;nativeListeners=new Set;selection=null;memory=null;runtime=null;initialization=null;closing=null;closed=!1;foreground=!0;incarnation=0;hidden=null;tabs=null;election=null;signingOut=!1;snapshot=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,readiness:Fh});composed=null;hint=null;forgotten=null;handledApproval=null;refreshing=null;refreshedAt=0;approvalPortal=null;revision=0;links=null;cpOrigin=null;opening=null;syncing=null;storagePolicy=null;pendingSave=null;signIn;typeIssues;privates=null;unsyncedFirst;unsyncedTried=!1;overlaid=new WeakMap;constructor(e,t={}){this.declaration=gr(e),this.compiled=eo(this.declaration);let i=t.readiness?.typeIssues??"block";if(i!=="block"&&i!=="degrade")throw new TypeError('readiness.typeIssues must be "block" or "degrade"');if(this.typeIssues=i,this.unsyncedFirst=t.unsynced===!0,this.signIn=n2(t.signIn,this.declaration),!t2(this.declaration.origin)){this.app=e2();return}try{let s=this.environment().cpOrigin;this.cpOrigin=s,this.hint=xC(this.declaration.storage.applicationNamespace,s),this.forgotten=kC(this.declaration.storage.applicationNamespace,s),this.links=Object.freeze({account:`${s}/account`,manageAccess:`${s}/account/applications`})}catch{}t.followVisibility!==!1&&this.followVisibility(),this.followPageLifecycle(),this.followFocus(),this.followStoragePolicy(),this.memory=r2(this.declaration.storage.applicationNamespace),t.privateCollections!==!1&&(this.privates=new qh({declaration:this.declaration,onChange:()=>{this.revision++,this.notify()}})),this.selection=new zf({browser:new $f(this.declaration.origin,{},HP()),session:this.selectionSession(),memory:this.memory}),this.selection.subscribe(()=>{this.unforgetApproved(),this.notify(!1)});let o=()=>this.getSnapshot();this.app=Object.freeze({getSnapshot:o,subscribe:s=>(this.listeners.add(s),()=>{this.listeners.delete(s)}),start:s=>this.track(()=>this.call(async r=>{let a=r.getNativeSnapshot();a.status==="blocked"&&a.signIn&&a.selectedCollectionId===null?await r.queue(()=>r.start(s)):await this.started(r,s);let p=this.choose(),l=p.getSnapshot();l.state==="blocked"&&l.requested.approved&&l.requested.collectionId!==null&&await p.select(l.requested.collectionId,s);let c=r.getNativeSnapshot();this.unsyncedFirst&&!this.unsyncedTried&&c.status==="signed_out"&&!c.unsynced&&!c.signOutResult&&p.getSnapshot().requested.collectionId===null&&(this.unsyncedTried=!0,await r.queue(()=>r.openUnsynced(s)))}).catch(r=>{let a=this.runtime?.getNativeSnapshot();if(!(r?.code==="open_in_another_tab"&&a?.status==="blocked"&&a.problem==="open_in_another_tab"))throw r})),authorize:s=>this.track(()=>this.approve(void 0,s)),approve:(s,r)=>this.track(()=>this.approve(s,r)),reauthorize:s=>this.track(()=>{let r=this.choose(),a=r.getSnapshot(),p=this.privates?.state()?.collectionId??a.usable?.collectionId??a.requested.collectionId;return p?this.approve(p,s):r.reauthorize(s)}),addPrivateCollection:s=>this.track(()=>this.approve(null,s)),refreshCollectionList:s=>this.track(()=>Promise.all([this.call(r=>r.queue(()=>r.refreshCollections(s))),this.privates?.refresh(this.account()).catch(()=>{})])),requestAccess:(s,r)=>this.requestAccess(s,r),select:(s,r)=>this.track(()=>this.choose().select(s,{...r,history:"push"})),clearSelection:s=>this.track(()=>this.choose().select(null,s)),chooseAnother:s=>this.track(()=>this.choose().chooseAnother(s)),forget:(s,r)=>this.track(async()=>{let a=this.choose(),p=this.account();if(this.privates?.has(s)){await this.privates.forget(s),a.getSnapshot().requested.collectionId===s&&await a.select(null,r);return}if(p&&this.forgotten){this.forgotten.add(p,s),this.revision++,(a.getSnapshot().requested.collectionId===s||(this.runtime?.getSnapshot()??this.snapshot).selectedCollectionId===s)&&await a.select(null,r),this.notify(!1);return}await this.call(l=>l.queue(()=>l.forget(s,r))),a.getSnapshot().requested.collectionId===s&&await a.select(null,r)}),deleteCollection:(s,r)=>this.track(async()=>{let a=this.choose(),{confirmName:p,...l}=r??{};await this.call(c=>c.queue(()=>c.deleteCollection(s,p,l))),a.getSnapshot().requested.collectionId===s&&await a.select(null,l)}),assess:s=>this.privates?.isOpen()?this.privates.assess():this.call(r=>r.queue(()=>r.assess(s))),configure:s=>this.track(()=>this.privates?.isOpen()?this.privates.configure(s):this.call(r=>r.queue(()=>r.configure(s)))),setup:Object.freeze({plan:s=>(this.privates?.isOpen()?this.privates.plan(s):this.call(r=>r.queue(()=>r.planSetup(s)))).then(r=>_C(r,this.getSnapshot().readiness)),apply:(s,r)=>this.track(()=>this.privates?.isOpen()?this.privates.apply(s,r):this.call(a=>a.queue(()=>a.applySetup(s,r))))}),setForeground:s=>this.setForeground(s),close:()=>this.close(),signOut:s=>this.signOut(s),planUnsyncedTransfer:(s={})=>this.call(r=>{let a=this.transferDestination(null);return r.withUnsyncedSource((p,l)=>mw(p.records,a.records,{...s.map?{map:s.map}:{},...s.addTypes?{addTypes:!0}:{},ledger:this.transferLedger(),signal:l}),s)}),transferUnsynced:(s,r={})=>this.call(async a=>{let p=this.transferDestination(s?.destination??null),l=await pC(s,p.records,{...r.signal?{signal:r.signal}:{},...r.onProgress?{onProgress:r.onProgress}:{}});if(l.failed.length||l.failedTypes.length)return l;let c=r.signal?{signal:r.signal}:{};return await a.withUnsyncedSource((d,u)=>cC(s,d.records,p.records,u),c)?Object.freeze({...l,retired:await a.retireUnsynced(s.source,s.destination,c)}):l}),discardUnsynced:s=>this.track(async()=>{await this.call(async r=>(await this.started(r,s),r.queue(()=>r.discardUnsynced(s))))}),openUnsynced:s=>this.track(async()=>{let r=this.choose();this.privates?.close(),r.getSnapshot().requested.collectionId!==null&&await r.select(null,{...s,history:"replace"}),await this.call(async a=>(await this.started(a,s),a.queue(()=>a.openUnsynced(s))))})})}withPrivate(e){let t=this.privates;if(!t)return e;let i=this.overlaid.get(e);if(i&&i.revision===t.revision)return i.value;let o=YC(e,t.entries(),t.state());return this.overlaid.set(e,{revision:t.revision,value:o}),o}getSnapshot(){let e=this.withPrivate(this.runtime?.getSnapshot()??this.snapshot),t=this.selection?.getSnapshot()??EI,i=this.composed,o=e.signIn===null&&(e.status==="starting"||e.status==="blocked"&&e.problem==="open_in_another_tab")?this.hint?.read()??null:null;if(i&&i.base===e&&i.selection===t&&i.revision===this.revision&&i.hint===o)return i.value;let s=o?Object.freeze({...e,signIn:o.signIn,collections:o.collections}):e,r=this.forgotten?.read(s.signIn?.accountId)??null,a=r?.size&&s.collections.some(m=>r.has(m.collectionId)&&m.collectionId!==s.selectedCollectionId)?Object.freeze({...s,collections:Object.freeze(s.collections.filter(m=>!r.has(m.collectionId)||m.collectionId===s.selectedCollectionId))}):s,p=a.selectedCollectionId,l=p&&!this.closed?this.privates?.connection(p)??this.runtime?.connection(p)??null:null,c=lc({...a,selection:t},{connection:l,previous:i?.value.phase??null,...this.cpOrigin?{cpOrigin:this.cpOrigin}:{}});c=this.trackOpening(c);let d=this.trackSync(c,a.problem,a.transport??null,a.live??null),u=this.syncing?.writes()??null,f=this.trackSaveWarning(),h=Object.freeze({...a,selection:t,phase:c,sync:d,writes:u,storage:this.storagePolicy,saveWarning:f,links:this.linksFor(p)});return this.composed={base:e,selection:t,revision:this.revision,hint:o,value:h},h}linksFor(e){return this.links&&e?Object.freeze({...this.links,manageAccess:`${this.cpOrigin}/access?collection=${encodeURIComponent(e)}`}):this.links}trackSaveWarning(){let e=this.syncing,t=e?.status,i=t?.pending??0;if(this.pendingSave&&(this.closed||this.hidden||!i||this.pendingSave.id!==e?.id)&&this.clearPendingSave(),this.closed||this.hidden||!e||!t||!i)return null;if(!this.pendingSave){let o={id:e.id,since:performance.now(),timer:null};o.timer=setTimeout(()=>{this.pendingSave===o&&(o.timer=null,this.revision++,this.notify(!1))},3e4),this.pendingSave=o}return kh(i,this.storagePolicy??{persistent:!1,installed:!1},{pendingForMs:performance.now()-this.pendingSave.since,connection:t.connection}).warning}clearPendingSave(){this.pendingSave?.timer!==null&&this.pendingSave?.timer!==void 0&&clearTimeout(this.pendingSave.timer),this.pendingSave=null}trackOpening(e){let t=e.kind==="opening"?e.collectionId:null;if(this.opening&&this.opening.id!==t&&(clearTimeout(this.opening.timer),this.opening=null),t===null||this.closed)return e;if(!this.opening){let i={id:t,slow:!1,timer:setTimeout(()=>{this.opening===i&&(i.slow=!0,this.revision++,this.notify(!1))},ku)};this.opening=i}return e.kind==="opening"&&this.opening.slow?{...e,slow:!0}:e}trackSync(e,t,i,o){let s=e.kind==="ready"?e.collectionId:null;if(this.syncing&&this.syncing.id!==s){try{this.syncing.stop()}catch{}this.syncing=null}if(e.kind!=="ready"||this.closed)return null;if(!this.syncing){let r=e.connection.records,a=null;try{a=r.status}catch{}let p={id:e.collectionId,stop:()=>{},status:a,writes:()=>null},l=()=>{this.syncing===p&&(this.revision++,this.getSnapshot(),this.notify(!1))},c=()=>{},d=()=>{};try{c=r.onStatus(u=>{p.status=u,l()})}catch{}try{let u=r.ledger;d=u.subscribe(l),p.writes=()=>{try{return u.getSnapshot()}catch{return null}}}catch{}p.stop=()=>{c(),d()},this.syncing=p}try{e.connection.records.setTransportDeferred(i!==null)}catch{}return this.syncing.status?ou(this.syncing.status,t,i,o):null}nativeAuthorization(e,t,i){return!this.privates||this.closed||this.hidden?Promise.reject(_("unavailable","Native authorization unavailable")):this.privates.nativeAuthorization(e,t,AbortSignal.any([i,this.lifetime.signal]))}account(){return(this.runtime?.getSnapshot()??this.snapshot).signIn?.accountId??null}unforgetApproved(){let e=this.selection?.getSnapshot().lastApproval??null,t=this.account();!e||e===this.handledApproval||(this.handledApproval=e,t&&e.collectionId&&(e.outcome==="added"||e.outcome==="unchanged")&&this.forgotten?.remove(t,e.collectionId)&&this.revision++)}followFocus(){let e=typeof window>"u"?void 0:window,t=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let i=()=>{t?.visibilityState!=="hidden"&&this.refreshCollections()};e.addEventListener("focus",i,{signal:this.lifetime.signal}),t&&typeof t.addEventListener=="function"&&t.addEventListener("visibilitychange",i,{signal:this.lifetime.signal})}refreshCollections(){let e=this.runtime,t=Date.now();if(!e||this.closed||this.hidden||this.refreshing||t-this.refreshedAt<2e3)return;let i=e.getNativeSnapshot();i.signIn?.state!=="paired"||i.status!=="unselected"&&i.status!=="ready"&&i.status!=="setup_required"||(this.refreshedAt=t,this.privates?.refresh(i.signIn.accountId).catch(()=>{}),this.refreshing=e.queue(()=>e.refreshCollections()).catch(()=>{}).finally(()=>{this.refreshing=null}))}followStoragePolicy(){let e=globalThis.navigator?.storage;if(!e||typeof e.persisted!="function")return;let t=()=>{try{return globalThis.matchMedia?.("(display-mode: standalone)").matches===!0||globalThis.navigator?.standalone===!0}catch{return!1}},i=(s=!1)=>{this.closed||Sh(e,t(),s).then(r=>{this.closed||this.storagePolicy?.persistent===r.persistent&&this.storagePolicy?.installed===r.installed||(this.storagePolicy=r,this.revision++,this.notify(!1))}).catch(()=>{})},o=globalThis.document;o&&typeof o.addEventListener=="function"&&o.addEventListener("visibilitychange",()=>{o.visibilityState!=="hidden"&&i()},{signal:this.lifetime.signal}),i(!0)}notify(e=!0){let t=this.runtime?.getSnapshot(),i=t?.signIn?.state==="paired"?t.signIn.accountId:null;if(i&&!this.closed&&!this.hidden&&(this.privates?.bind(i,t?.signIn?.nativeGrants??[]),this.privates?.ensure(i)),e)for(let o of[...this.nativeListeners])try{o()}catch{}for(let o of[...this.listeners])try{o()}catch{}}choose(){this.check();let e=this.selection;return e.start(),e}async track(e){return await e(),this.getSnapshot()}selectionSession(){return Object.freeze({getSnapshot:()=>this.withPrivate(ZM(this.runtime?.getNativeSnapshot()??this.snapshot)),subscribe:e=>(this.nativeListeners.add(e),()=>{this.nativeListeners.delete(e)}),open:(e,t={})=>this.call(async i=>{let o=this.privates,s=i.getNativeSnapshot().collections.some(p=>p.collectionId===e);if(!o||s||!o.has(e))return o?.close(),i.queue(()=>i.select(e,t));i.getNativeSnapshot().selectedCollectionId!==null&&await i.queue(()=>i.clearSelection(t));let r=i.getNativeSnapshot().signIn?.accountId,a=i.getNativeSnapshot().signIn?.installationId;if(!r||!a)throw _("unauthenticated","Sign in before opening a collection");o.openCollection(e,{account:r,installation:a}).catch(()=>{})}),clear:(e={})=>(this.privates?.close(),this.call(t=>t.queue(()=>t.clearSelection(e)))),authorize:(e={})=>this.authorize(e,e.collectionHint??null),listing:()=>this.privates?.listing(this.account())??!1})}check(){if(this.closed||this.hidden||this.lifetime.signal.aborted)throw _("cancelled","Application entry fenced","application_entry_fenced")}environment(){return Qn({environment:this.declaration.environment,appOrigin:this.declaration.origin,platform:this.declaration.manifest.platform==="native"?"native":void 0,release:Vo()})}initialize(){if(this.initialization)return this.initialization;let e=this.incarnation,t=Promise.resolve().then(async()=>{if(this.check(),typeof Vh.url!="string")throw Xw();let i=new URL(Vh.url);if(On(i)!==this.declaration.origin||Rt()!==this.declaration.origin)throw _("unavailable","Application module binding unavailable","application_worker_module_binding");let o=this.environment();WP(this.declaration.environment,this.declaration.origin,this.declaration.manifest.platform==="native"?"native":void 0);let s=await gC();if(this.check(),!s.ok)throw _("unavailable","This browser can't run mdbase",{reason:s.problem,details:new Map([["missing",s.missing.join(",")]])});let r=await Nf({declaration:this.declaration,signal:this.lifetime.signal,isCurrent:()=>!this.closed});this.check();let{ApplicationRuntime:a}=await Promise.resolve().then(()=>(OI(),II));if(this.check(),e!==this.incarnation)throw _("cancelled","Application entry fenced","application_entry_fenced");let p=NP(this.declaration,r);r.supersededDeclaredId&&console.info(`mdbase: ${wu("application_registration_id_superseded")}`);let l=Su(this.declaration),c=Object.freeze({cpOrigin:o.cpOrigin,appId:p.id,...l===null?{}:{storageNamespace:l}}),d=v=>(this.runtime=v,this.unsyncedTried=!1,v.subscribe(()=>{this.hint?.observe(v.getNativeSnapshot()),this.observeSignOut(v),v.getNativeSnapshot().signIn?.state==="paired"&&this.tabs?.signedIn(),this.notify(),this.awaitOtherTab(v,c)}),v.setForeground(this.foreground),this.notify(),v),u=this.tabsFor(c),f=new AbortController;this.election?.abort(),this.election=f;let h=u?await u.elect(AbortSignal.any([this.lifetime.signal,f.signal])):{kind:"leader"};if(this.closed||this.hidden||e!==this.incarnation||f.signal.aborted)throw h.kind==="follower"?h.leave():u?.resign(),_("cancelled","Application entry fenced","application_entry_fenced");if(h.kind==="follower")return d(new a({declaration:p,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:h.port,binding:h.binding,releaseWorker:()=>h.leave(),nativeAuthorization:(v,A,k)=>this.nativeAuthorization(v,A,k)}));let m=new MessageChannel,b=crypto.randomUUID(),w;try{w=new Worker(new URL("./worker.js",Vh.url),{type:"module"})}catch{throw u?.resign(),m.port1.close(),m.port2.close(),_("unavailable","Application Worker construction unavailable","application_worker_unavailable")}let g=v=>{v.preventDefault(),m.port1.dispatchEvent(new MessageEvent("messageerror")),u?.fault()};w.addEventListener("error",g);let y=new a({declaration:p,compiledManifest:this.compiled,typeIssues:this.typeIssues,cpOrigin:o.cpOrigin,port:m.port1,binding:b,releaseWorker:()=>{w.removeEventListener("error",g),w.terminate(),u?.resign()},nativeAuthorization:(v,A,k)=>this.nativeAuthorization(v,A,k)});try{w.postMessage([ti,b,p,...l===null?[]:[l]],[m.port2])}catch{throw w.removeEventListener("error",g),w.terminate(),u?.resign(),m.port1.close(),m.port2.close(),_("unavailable","Application bootstrap unavailable","application_worker_binding")}return u?.lead({attach:(v,A)=>w.postMessage([ti,b,"attach",A],[v]),detach:v=>w.postMessage([ti,b,"detach",v])}),d(y)}).catch(i=>{let o=this.initialization===t;if(o&&(this.initialization=null),!this.closed&&o){let{problemDetail:s,...r}=this.snapshot,a=i instanceof se&&i.reason==="application_registration_refused"?jo(i.details):null;this.snapshot=Object.freeze({...r,status:"blocked",problem:typeof i?.reason=="string"?i.reason:typeof i?.code=="string"?i.code:"application_entry_unavailable",...a?{problemDetail:Object.freeze({name:"MdbaseError",code:i.code,registration:a})}:{}}),this.notify()}throw i});this.initialization=t;{let{problemDetail:i,signOutResult:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null})}return this.notify(),t}async call(e){this.check();let t=await this.initialize();return this.check(),e(t)}started(e,t){this.choose();let i=e.getNativeSnapshot().status;return i==="not_started"||i==="starting"||i==="blocked"&&!e.getNativeSnapshot().signIn?e.queue(()=>e.start(t)):Promise.resolve()}reservePortal(e){this.check();let t=this.environment(),i=e.signal?AbortSignal.any([this.lifetime.signal,e.signal]):this.lifetime.signal,o=en(this.declaration.environment),s=()=>!this.closed,r=this.signIn?Cx(t.cpOrigin,i,s,this.signIn,o):nh(t.cpOrigin,i,s,o);return{portal:th(r),signal:i}}requestAccess(e,t){try{this.check();let i=this.runtime,o=i?.getNativeSnapshot(),s=o?.selectedCollectionId??null,r=bh(this.compiled),a=()=>s&&i?wh(i.getNativeSnapshot(),s):[],p=fC(r,e,t,a()),l=s?i.connection(s):null;if(!i||!s||!l)throw _("invalid_request","requestAccess needs an open collection","access_no_collection");let c=()=>hC(l.files,r,a());if(!p.length)return Promise.resolve(c());let{portal:d,signal:u}=this.reservePortal(t);return mC({granted:c,native:()=>i.getNativeSnapshot(),start:()=>i.queue(()=>i.requestFileAccess(d,s,p,t.reason,{signal:u})),poll:f=>i.queue(()=>i.pollFileAccess(f))},d,u)}catch(i){return Promise.reject(i)}}approve(e,t={}){let i=this.choose(),o=i.getSnapshot(),s=this.approvalPortal;if(s&&o.approval){if((e===void 0?o.requested.collectionId:e)!==o.approval.collectionId)return Promise.reject(new Vt("application_selection_busy"));if(t.signal?.aborted)throw _("cancelled","Application entry fenced","application_entry_fenced");return s.closed||s.focus(),Promise.resolve()}return i.approve(e,t)}authorize(e={},t=null){let i;try{i=this.approvalPortal=this.reservePortal(e).portal}catch(o){return Promise.reject(o)}return this.call(async o=>(await this.started(o,e),o.queue(()=>o.authorizeReserved(i,e,t)))).catch(o=>{try{i.close()}catch{}throw o})}async signOut(e={}){let t=await this.call(async s=>(await this.started(s,e),s));this.signingOut=!0;try{await t.queue(()=>t.signOut(e))}finally{this.signingOut=!1}let i=t.getNativeSnapshot().signOutResult??null;await this.signedOut(t,i);let o=this.snapshot.signOutResult??i;return o&&await i2(o),this.getSnapshot()}async signedOut(e,t,i=!1){i||this.tabs?.signedOut(),this.clearPendingSave(),++this.incarnation,this.runtime===e&&(this.runtime=null),this.initialization=null,this.hint?.clear(),this.forgotten?.clear(),this.handledApproval=null;let o=null;if(this.privates)try{await this.privates.forgetAll(),o="erased"}catch{o="incomplete"}let s=t&&o?Object.freeze({...t,grants:o,...o==="incomplete"?{local:"incomplete"}:{}}):t;this.snapshot=Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:!s&&o==="incomplete"?"sign_out_failed":null,timing:null,readiness:Fh,...s?{signOutResult:s}:{}});try{this.memory?.write(null)}catch{}if(this.selection&&!this.closed&&(this.selection.resync(),await this.selection.select(null,{history:"replace"}).catch(()=>{})),this.revision++,this.notify(),i){e.abandon();return}await e.close().catch(()=>{})}observeSignOut(e){let t=e.getNativeSnapshot().signOutResult;!t||this.signingOut||this.closed||this.runtime!==e||this.signedOut(e,t)}tabsFor(e){if(this.tabs)return this.tabs;let t=globalThis.navigator?.locks,i=globalThis.BroadcastChannel;return!t||typeof t.request!="function"||typeof i!="function"?null:(this.tabs=new Ah({...e,build:Vh.url},{locks:t,BroadcastChannel:i},this.leaderLost,this.signedInElsewhere),this.tabs)}leaderLost=e=>{if(this.closed||this.hidden)return;let t=this.runtime,i=t!==null||this.initialization!==null;if(this.election?.abort(),this.election=null,e&&t&&!this.signingOut?this.signedOut(t,t.getNativeSnapshot().signOutResult??null,!0):e&&i&&(++this.incarnation,this.initialization=null),!i||e){this.tabs?.resign();return}++this.incarnation,this.initialization=null,this.runtime=null,t?.abandon();let{problemDetail:o,...s}=this.snapshot;this.snapshot=Object.freeze({...s,status:"starting",problem:null,selectedCollectionId:null,readiness:Fh}),this.notify(),this.selection?.resync(),this.app.start().catch(()=>{})};signedInElsewhere=()=>{this.closed||this.hidden||this.signingOut||this.runtime!==null||this.initialization!==null||this.snapshot.status!=="signed_out"||(this.selection?.resync(),this.app.start().catch(()=>{}))};setForeground(e){this.foreground=e,this.runtime?.setForeground(e)}followVisibility(){let e=globalThis.document;if(!e||typeof e.addEventListener!="function")return;let t=()=>{this.closed||this.setForeground(e.visibilityState!=="hidden")},i=()=>{e.visibilityState!=="hidden"&&t()};e.addEventListener("visibilitychange",t,{signal:this.lifetime.signal});let o=typeof window>"u"?void 0:window;o&&typeof o.addEventListener=="function"&&(o.addEventListener("focus",i,{signal:this.lifetime.signal}),o.addEventListener("online",i,{signal:this.lifetime.signal})),t()}followPageLifecycle(){let e=typeof window>"u"?void 0:window;if(!e||typeof e.addEventListener!="function")return;e.addEventListener("pagehide",this.pageHidden,{signal:this.lifetime.signal}),e.addEventListener("pageshow",this.pageShown,{signal:this.lifetime.signal});let t=globalThis.document;t&&typeof t.addEventListener=="function"&&(t.addEventListener("freeze",()=>this.pageHidden(),{signal:this.lifetime.signal}),t.addEventListener("resume",()=>this.pageShown({persisted:!0}),{signal:this.lifetime.signal}))}pageHidden=()=>{if(this.closed||this.hidden)return;let e=this.runtime,t=e!==null||this.initialization!==null;++this.incarnation,this.hidden=Object.freeze({resume:t}),this.clearPendingSave(),this.initialization=null,this.runtime=null,this.election?.abort(),this.election=null,e?.abandon(),this.tabs?.release();let{problemDetail:i,...o}=this.snapshot;this.snapshot=Object.freeze({...o,status:t?"starting":this.snapshot.status,problem:null,selectedCollectionId:null,readiness:Fh})};pageShown=e=>{let t=this.hidden;this.closed||!t||!e.persisted||(this.hidden=null,this.notify(),t.resume&&(this.selection?.resync(),this.app.start().catch(()=>{})))};awaitingOtherTab=!1;awaitOtherTab(e,t){let i=e.getNativeSnapshot(),o=globalThis.navigator?.locks;if(this.awaitingOtherTab||this.closed||i.status!=="blocked"||i.problem!=="open_in_another_tab"||!o)return;this.awaitingOtherTab=!0;let s=this.incarnation,r=this.lifetime.signal,a=()=>!this.closed&&!this.hidden&&s===this.incarnation&&this.runtime===e;ix(o,t,r).then(()=>XM(r)).then(()=>{this.awaitingOtherTab=!1,a()&&(this.selection?.resync(),this.app.start().catch(()=>{}))},()=>{this.awaitingOtherTab=!1})}close(){if(this.closing)return this.closing;if(this.closed=!0,this.lifetime.abort(),this.selection?.close(),this.election?.abort(),this.privates?.dispose(),this.opening&&(clearTimeout(this.opening.timer),this.opening=null),this.clearPendingSave(),this.syncing){try{this.syncing.stop()}catch{}this.syncing=null}return this.closing=Promise.resolve().then(async()=>{await this.initialization?.catch(()=>{}),await this.runtime?.close(),this.tabs?.release();{let{problemDetail:e,...t}=this.snapshot;this.snapshot=Object.freeze({...t,status:"closed",problem:null,selectedCollectionId:null})}this.runtime=null,this.notify(),this.listeners.clear(),this.nativeListeners.clear()}),this.closing}application(){return this.app}transferLedger(){let e=this.declaration.storage.unsyncedDatabaseName,t=new AbortController().signal;return Object.freeze({read:(i,o)=>aC(e,i,o??t),record:(i,o,s)=>lC(e,i,o,s??t)})}transferDestination(e){let t=this.getSnapshot().phase;if(t?.kind!=="ready")throw _("invalid_request","Open the collection to bring this work into first.","unsynced_transfer_needs_collection");if(e!==null&&t.collectionId!==e)throw _("invalid_request","This plan is for another collection. Plan the transfer again.","unsynced_transfer_plan_stale");return t.connection}connection(e){return this.closed?null:this.privates?.connection(e)??this.runtime?.connection(e)??null}};re();var Ht=n=>n;function qI(n,e={}){return o2(new dl(n,e))}function o2(n){let e=n.application(),t=()=>Ht(e.getSnapshot()),i=async o=>Ht(await e.approve(null,o));return Object.freeze({getSnapshot:t,subscribe:o=>e.subscribe(o),start:async o=>Ht(await e.start(o)),signIn:async o=>Ht(await e.authorize(o)),addCollection:i,addPrivateCollection:i,approve:async(o,s)=>Ht(await e.approve(o,s)),refreshCollectionList:async o=>{if(!e.refreshCollectionList)throw _("unavailable","Refreshing the collection list isn't available here.","application_not_yet_available");return Ht(await e.refreshCollectionList(o))},reauthorize:async o=>Ht(await e.reauthorize(o)),configure:async o=>Ht(await e.configure(o)),select:async(o,s)=>Ht(await e.select(o,s)),chooseAnother:async o=>Ht(await e.chooseAnother(o)),forget:async(o,s)=>Ht(await e.forget(o,s)),deleteCollection:async(o,s)=>Ht(await e.deleteCollection(o,s)),requestAccess:(o,s)=>e.requestAccess(o,s),assess:o=>e.assess(o),setup:Object.freeze({plan:o=>e.setup.plan(o),async apply(o,s){try{return Object.freeze({outcome:"applied",snapshot:Ht(await e.setup.apply(o,s))})}catch(r){if(X(r,"conflict")&&r.reason==="setup_changed")return Object.freeze({outcome:"changed",snapshot:t()});if(X(r,"outcome_unknown"))return Object.freeze({outcome:"unknown",snapshot:t()});throw r}}}),connection:o=>n.connection(o),setForeground:o=>e.setForeground(o),signOut:async o=>{if(!e.signOut)throw _("unavailable","Sign out isn't available here.","application_not_yet_available");return Ht(await e.signOut(o))},close:()=>e.close(),unsynced:Object.freeze({open:async o=>{if(!e.openUnsynced)throw _("unavailable","Working before connecting isn't available here.","application_not_yet_available");return Ht(await e.openUnsynced(o))},planTransfer:o=>{if(!e.planUnsyncedTransfer)throw _("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.planUnsyncedTransfer(o)},transfer:(o,s)=>{if(!e.transferUnsynced)throw _("unavailable","Bringing in work isn't available here.","application_not_yet_available");return e.transferUnsynced(o,s)},discard:async o=>{if(!e.discardUnsynced)throw _("unavailable","Discarding work isn't available here.","application_not_yet_available");return Ht(await e.discardUnsynced(o))}}),application:e})}Ta();Tf();re();function TI(n,e){let t=eo(gr(n)).manifest.requirements.capabilities;if(t?.contract_version!==2)return null;if(!e.isCurrent())throw _("invalid_request","the application connection is not current","application_connection_fenced");let i=new Set(e.records.hello.grant.capabilities),o=new Set(t.required),s=Object.freeze([...new Set([...t.required,...t.optional??[]])].map(r=>Object.freeze({id:r,requirement:o.has(r)?"required":"optional",state:i.has(r)?"available":"missing"})));return Object.freeze({values:s,requiredAvailable:s.every(r=>r.requirement==="optional"||r.state==="available"),missing:Object.freeze(s.filter(r=>r.state==="missing").map(r=>r.id))})}Cs();var dv={};ps(dv,{APP_BASES_PROFILE:()=>Xm,APP_COLLECTION_SETUP_LIMITS:()=>vr,AppCloudCopyBootstrapError:()=>tn,AppCloudCopyHostError:()=>uo,AppCollectionControlError:()=>ii,AppCollectionJoinError:()=>po,AppCollectionJoinLedger:()=>tl,AppCollectionSetupError:()=>rn,AppCollectionSetupJournal:()=>Wa,AppCpAuthorityError:()=>ei,AppCpCloudCopyBootstrap:()=>Ba,AppCpDeviceRegistration:()=>ul,AppCpLogAuthority:()=>za,AppCpPeopleAuthority:()=>bl,AppDeviceRegistrationError:()=>ss,AppHttpLogError:()=>gn,AppHttpLogTransport:()=>$a,AppIndexedDbDeviceKeyProtectedStore:()=>ml,AppIndexedDbDeviceKeyProvider:()=>hl,AppIndexedDbNoiseProtectedStore:()=>gl,AppInstallationSignInError:()=>Xe,AppLogHostError:()=>pt,AppLogPump:()=>ns,AppProtectedInstallationSignIn:()=>Ua,AppReplicaOwnerError:()=>Ke,AppStrictDeviceApprovalError:()=>on,AppWasmRuntime:()=>Ya,AppWebCloudCopyHost:()=>vl,AppWebCollectionError:()=>bp,AppWebDeviceKeyCustody:()=>fl,AppWebNoiseCustody:()=>yl,AppWebSignInSession:()=>rm,UNSYNCED_STORAGE_WARNING:()=>wC,acquireAppInstallationLease:()=>Xc,acquireAppReplicaLease:()=>Jc,appBrowserDirectAccess:()=>Jh,appCollectionControlClient:()=>ph,appInstallationLockName:()=>Db,appLocalConnector:()=>uh,appLogHealth:()=>dw,appModelPackPlan:()=>Xo,appModelResourcePlan:()=>xt,appMutationSaveState:()=>bC,appReplicaLockName:()=>Ff,appSaveState:()=>kh,appStoragePolicy:()=>Sh,attachAppLocalFacade:()=>dh,createAppCollectionPeople:()=>lh,createAppWebCollectionAdapter:()=>iI,decodeAppBasesCell:()=>bo,decodeAppBasesDiscoveryResult:()=>sd,decodeAppBasesResult:()=>id,decodeAppBasesSourceResult:()=>ad,decodeAppCollectionSetupIntent:()=>qt,encodeAppBasesDiscoveryRequest:()=>rd,encodeAppBasesRequest:()=>nd,encodeAppBasesSourceRequest:()=>od,openAppWebCollectionClient:()=>Lh,openOwnedAppWorker:()=>rx,probeAppStorage:()=>BI,selectAppEnvironment:()=>Qn,verifyAppHandover:()=>LI});fh();Zm();function MI(n,e){return n.seq===e.seq&&n.chain===e.chain&&n.policyGeneration===e.policyGeneration&&n.catalogGeneration===e.catalogGeneration}async function LI(n,e){let t=null;try{let{runtime:i,localPort:o,localClient:s,hostedClient:r,source:a}=n,p=r.hello,l=s.hello,c=a.collection,d=a.deviceId,u=r.authenticatedDevice;if(!(P=>typeof P=="string"&&P.replace(/-/g,"").toLowerCase()===d.replace(/-/g,"").toLowerCase())(u))return null;let h=p.status.confirmedHead,m=h?Object.freeze({...h}):void 0;if(!m||!p.headWitness||p.headWitness.length>64*1024||m.seq===0||p.collection!==c||l.collection!==c)return null;t=new Uint8Array(p.headWitness);let b=t,w=()=>{try{return!e.aborted&&n.isCurrent()===!0&&a.isCurrent()===!0&&l.collection===c&&a.collection===c&&a.deviceId===d&&s.hello===l}catch{return!1}},g=()=>{try{let P=i.observations();return!P.requiresReopen&&!P.keyringRebuilding&&!P.keyringRebuildFailed&&P.status.mode==="synced"&&P.status.confirmedHead!==void 0&&P.status.confirmedHead.seq>=m.seq}catch{return!1}},y=()=>{if(!w()||!g())return!1;let P=i.verifyHandover(o,a,b);return P!==null&&MI(P,m)},v=()=>{try{return!e.aborted&&w()&&r.hello===p&&r.authenticatedDevice===u}catch{return!1}};if(!v()||!y())return null;let A=await s.appliedPrefix(m.seq,e);if(!v()||!y()||A.seq!==m.seq||A.appliedThrough<m.seq||A.chain!==m.chain)return null;let k=Object.freeze({...m}),S=!1,x={head:k,appliedThrough:A.appliedThrough,isCurrent:()=>{if(S)return!1;try{return y()&&MI(k,m)}catch{return!1}},dispose:()=>{S=!0,b.fill(0)}};return t=null,x}catch{return null}finally{t?.fill(0)}}bt();ge();var ss=class extends Error{constructor(t){super(`app device registration: ${t}`);this.reason=t;this.name="AppDeviceRegistrationError"}reason},wt=n=>new ss(n),Wh=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),ul=class{constructor(e,t,i,o,s={}){this.runtime=e;this.session=t;this.persistence=o;try{this.scope=Object.freeze({connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId,kind:t.kind});for(let a of[this.scope.connectorId,this.scope.deviceId,this.scope.installationId])if(U(a).every(p=>p===0))throw wt("binding");if(t.kind!=="mobile"&&t.kind!=="app-runtime")throw wt("binding");this.rawOrigin=t.cpOrigin;let r=new URL(this.rawOrigin);if(r.username||r.password||r.pathname!=="/"||r.search||r.hash||r.protocol!=="https:"&&!(s.allowLoopbackHttp===!0&&ot(this.rawOrigin))||(this.origin=r.origin,this.now=s.now??Date.now,this.fetchImpl=s.fetch??globalThis.fetch,!(i.envelope instanceof Uint8Array)||!i.envelope.length||i.envelope.length>1024)||!e.deviceCustodyCurrent(t,i)||(this.custody=Object.freeze({signPublicKey:new Uint8Array(i.signPublicKey),kemPublicKey:new Uint8Array(i.kemPublicKey),noisePublicKey:new Uint8Array(i.noisePublicKey),envelope:new Uint8Array(i.envelope)}),!this.current()))throw wt("binding")}catch{throw e.retireLog(),wt("binding")}}runtime;session;persistence;attempted=!1;lifetime=new AbortController;origin;rawOrigin;scope;custody;now;fetchImpl;current(){try{return!this.lifetime.signal.aborted&&this.runtime.deviceCustodyCurrent(this.session,this.custody)&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.connectorId===this.scope.connectorId&&this.session.deviceId===this.scope.deviceId&&this.session.installationId===this.scope.installationId&&this.session.kind===this.scope.kind}catch{return!1}}check(e){if(!this.current()||e.aborted)throw this.close(),wt("fenced")}async json(e,t,i,o){this.check(o);let s=new AbortController,r=()=>s.abort(),a=setTimeout(r,15e3);a.unref?.(),o.addEventListener("abort",r,{once:!0}),this.lifetime.signal.addEventListener("abort",r,{once:!0});let p=new Uint8Array(32*1024),l=0,c=null,d=null;try{let u=this.fetchImpl;if(c=await u(`${this.origin}${e}`,{method:"POST",headers:{authorization:`Bearer ${t}`,...i===void 0?{}:{"content-type":"application/json"}},body:i,signal:s.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(o),s.signal.aborted||!c.ok)throw wt("unavailable");let f=c.headers.get("content-length");if(f!==null&&/^(0|[1-9][0-9]*)$/.test(f)&&Number(f)>p.length)throw s.abort(),wt("response");if(!c.body)throw wt("response");for(d=c.body.getReader();;){let{done:m,value:b}=await d.read();try{if(this.check(o),s.signal.aborted)throw wt("unavailable");if(m)break;if(l+b.length>p.length)throw s.abort(),wt("response");p.set(b,l),l+=b.length}finally{b?.fill(0)}}let h=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(p.subarray(0,l)));if(!h||typeof h!="object"||Array.isArray(h))throw wt("response");return h}catch(u){throw this.check(o),u instanceof ss?u:wt("unavailable")}finally{p.fill(0),(d?.cancel()??c?.body?.cancel())?.catch(()=>{}),d?.releaseLock(),clearTimeout(a),o.removeEventListener("abort",r),this.lifetime.signal.removeEventListener("abort",r)}}async register(e){let t=null,i=null;try{if(this.check(e.signal),this.attempted)throw wt("fenced");this.attempted=!0,await this.persistence.pending(new Uint8Array(this.custody.envelope),e),this.check(e.signal);let o=await this.session.connectorBearer(e);if(this.check(e.signal),typeof o!="string"||!o||o.length>16*1024||/[^\x21-\x7e]/.test(o))throw wt("binding");let s=await this.json("/v1/next/devices/challenge",o,void 0,e.signal);if(this.check(e.signal),typeof s.challenge!="string"||!/^[0-9a-f]{64}$/.test(s.challenge)||typeof s.expires_at!="number"||!Number.isSafeInteger(s.expires_at)||s.expires_at-this.now()<=5e3||s.expires_at-this.now()>16*6e4)throw wt("response");t=Uint8Array.from(s.challenge.match(/../g).map(l=>parseInt(l,16)));let r=this.runtime.signCpEnrol(t);this.check(e.signal),i=r.signature;let a=await this.json("/v1/next/devices",o,JSON.stringify({device_id:this.scope.deviceId,kind:this.scope.kind,capabilities:["collection_mode_switch_v1"],challenge:s.challenge,sign_pk:Wh(r.signPublicKey),kem_pk:Wh(r.kemPublicKey),noise_pk:Wh(r.noisePublicKey),sig:Wh(i)}),e.signal);if(this.check(e.signal),a.device_id!==this.scope.deviceId)throw wt("response");let p=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,signPublicKey:new Uint8Array(r.signPublicKey),kemPublicKey:new Uint8Array(r.kemPublicKey),noisePublicKey:new Uint8Array(r.noisePublicKey)});return await this.persistence.registered(p,e),this.check(e.signal),this.runtime.acknowledgeDeviceRegistration(p),p}catch(o){throw this.close(),o instanceof ss?o:wt("unavailable")}finally{t?.fill(0),i?.fill(0)}}close(){this.lifetime.signal.aborted||(this.lifetime.abort(),this.custody.envelope.fill(0),this.runtime.retireLog())}};Je();ge();var Gt=()=>new Error("app device key custody unavailable; preserve storage and reopen"),fl=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned;let o=[this.scope.accountId,this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Gt();this.namespace=`mdbase.app-device-keys.v1:${o.map(s=>Array.from(s,r=>r.toString(16).padStart(2,"0")).join("")).join(":")}`,this.aad=pe(["mdbase/v1/app-device-keys-platform",...o]),this.check(new AbortController().signal)}catch{throw Gt()}}pin;key;store;scope;namespace;aad;current;owned;attempted=!1;check(e){try{if(e.aborted||this.pin.isCurrent!==this.current||this.pin.installationOwned!==this.owned||this.current.call(this.pin)!==!0||this.owned.call(this.pin)!==!0||this.pin.accountId!==this.scope.accountId||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Gt()}catch{throw Gt()}}async openNativeDevice(e,t){let i=null,o=null,s=!1;try{if(this.attempted)throw Gt();this.attempted=!0;let r=t.signal,a=t.mode;if(this.check(r),!["fresh","existing"].includes(a)||t.noise.mode!==a||t.noise.mode==="existing"&&!(t.noise.envelope instanceof Uint8Array))throw Gt();let p=t.noise.mode==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:new Uint8Array(t.noise.envelope)};if(p.mode==="existing"&&(!p.envelope.length||p.envelope.length>1024))throw Gt();let l=await this.store.read(this.namespace,{signal:r});if(this.check(r),a==="fresh"){if(l!==null)throw Gt();i=globalThis.crypto.getRandomValues(new Uint8Array(64));let u=globalThis.crypto.getRandomValues(new Uint8Array(12)),f=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:u,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,i));if(this.check(r),o=pe(new Map([[0,1],[1,u],[2,f]])),await this.store.create(this.namespace,o,{signal:r})!==!0)throw Gt();this.check(r)}else{if(!(l instanceof Uint8Array)||l.length===0||l.length>256)throw Gt();o=new Uint8Array(l);let u=ue(o);if(!(u instanceof Map))throw Gt();let f=u;if(f.size!==3||f.get(0)!==1)throw Gt();let h=f.get(1),m=f.get(2);if(!(h instanceof Uint8Array)||h.length!==12||!(m instanceof Uint8Array)||m.length!==80||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(h),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(m))),this.check(r),i.length!==64))throw Gt()}this.check(r);let c=Object.freeze({connectorId:this.scope.connectorId,deviceId:this.scope.deviceId,installationId:this.scope.installationId,isCurrent:()=>{try{return this.check(r),!0}catch{return!1}}});s=!0;let d=e.openDeviceConsuming({pin:c,signSecretKey:i.subarray(0,32),kemSecretKey:i.subarray(32),opened:p});return this.check(r),d}catch{if(s)try{e.retireLog()}catch{}throw Gt()}finally{i?.fill(0),o?.fill(0)}}};Zn();ge();var Kh="device-key-kek",jI="original-device-kek",vt=()=>new Error("app device key provider unavailable; preserve storage and reopen");function Hh(n){if(typeof globalThis.CryptoKey!="function"||!(n instanceof CryptoKey)||n.type!=="secret"||n.extractable||n.algorithm.name!=="AES-GCM"||n.algorithm.length!==256||n.usages.length!==2||!n.usages.includes("encrypt")||!n.usages.includes("decrypt"))throw vt();return n}function s2(n){if(n===void 0)return null;if(!n||typeof n!="object"||Array.isArray(n)||Object.keys(n).length!==2||!Object.hasOwn(n,"version")||!Object.hasOwn(n,"key")||n.version!==1)throw vt();return Hh(n.key)}var hl=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.scope=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;value=null;closed=!1;loaned=!1;scope;current;owned;static async open(e){let t=null;try{let{source:i,origin:o,mode:s,signal:r}=e;t=new n(i,o,r);let a=Object.values(t.scope).map(u=>{let f=U(u);if(f.every(h=>h===0))throw vt();return Array.from(f,h=>h.toString(16).padStart(2,"0")).join("")});if(!Lt(o,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||!["fresh","existing"].includes(s)||!globalThis.indexedDB||!globalThis.crypto?.subtle||typeof globalThis.CryptoKey!="function")throw vt();t.check(r);let p=crypto.subtle.generateKey.bind(crypto.subtle),l=`mdbase.app.device-key-kek.v1.${a.join(".")}`,c=await t.openDatabase(l,s);t.db=c,c.onversionchange=()=>t.close(),t.check(r);let d=await t.transaction("readonly",r,null);if(t.check(r),s==="existing"){if(d===null||typeof d=="boolean")throw vt();t.value=d}else{if(d!==null)throw vt();let u=Hh(await p({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]));if(t.check(r),await t.transaction("readwrite",r,u)!==!0)throw vt();t.check(r),t.value=u}return t.check(r),t}catch{throw t?.close(),vt()}}check(e){try{if(this.closed||this.lifetime.aborted||e.aborted||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.scope).some(([t,i])=>this.source[t]!==i))throw vt()}catch{throw vt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,p=()=>{r=!0,o(vt())};this.lifetime.addEventListener("abort",p,{once:!0});let l=()=>this.lifetime.removeEventListener("abort",p);s.onblocked=p,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw vt();s.result.createObjectStore(Kh),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(vt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(Kh))throw vt();i(s.result)}catch{s.result.close(),o(vt())}}})}transaction(e,t,i){return new Promise((o,s)=>{if(this.check(t),!this.db)throw vt();let r=this.db.transaction(Kh,e,{durability:"strict"}),a=r.objectStore(Kh),p=null,l=!1,c=()=>{l=!0;try{r.abort()}catch{}};t.addEventListener("abort",c,{once:!0}),this.lifetime.addEventListener("abort",c,{once:!0});let d=()=>{t.removeEventListener("abort",c),this.lifetime.removeEventListener("abort",c)};r.onerror=r.onabort=()=>{d(),p=null,s(vt())},r.oncomplete=()=>{d();try{if(this.check(t),l)throw vt();o(p)}catch{p=null,s(vt())}};let u=a.get(jI);u.onsuccess=()=>{try{this.check(t);let f=s2(u.result);e==="readonly"?p=f:(p=f===null,p===!0&&i!==null&&a.add({version:1,key:Hh(i)},jI))}catch{c()}}})}deviceCustodyKek(e){if(this.check(e.signal),this.loaned||!this.value)throw vt();return this.loaned=!0,Hh(this.value)}close(){this.closed||(this.closed=!0,this.value=null,this.db?.close(),this.db=null)}};Zn();ge();var Gh="original-device-keys",NI="custody",a2=256,cn=()=>new Error("app device key custody store unavailable");function UI(n){if(!(n instanceof Uint8Array)||!n.length||n.length>a2)throw cn();return new Uint8Array(n)}var ml=class n{constructor(e,t,i,o,s){this.db=e;this.source=t;this.scope=i;this.namespace=o;this.origin=s;this.current=t.isCurrent,this.owned=t.installationOwned,e.onversionchange=()=>this.close()}db;source;scope;namespace;origin;closed=!1;current;owned;static async open(e){try{return await this.openChecked(e)}catch{throw cn()}}static async openChecked(e){let{source:t,signal:i,mode:o,origin:s}=e,r=Object.freeze({accountId:t.accountId,connectorId:t.connectorId,deviceId:t.deviceId,installationId:t.installationId}),a=t.isCurrent,p=t.installationOwned,l=()=>{try{return!i.aborted&&t.isCurrent===a&&t.installationOwned===p&&a.call(t)===!0&&p.call(t)===!0&&Object.keys(r).every(m=>t[m]===r[m])}catch{return!1}},c=[r.accountId,r.connectorId,r.deviceId,r.installationId].map(m=>{let b=U(m);if(b.every(w=>w===0))throw cn();return Array.from(b,w=>w.toString(16).padStart(2,"0")).join("")});if(!Lt(s,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||Rt()!==s||!["fresh","existing"].includes(o)||!l()||!globalThis.indexedDB)throw cn();let d=`mdbase.app-device-keys.v1:${c.join(":")}`,u=`mdbase.app.device-keys.v1.${c.join(".")}`,f=await new Promise((m,b)=>{let w=indexedDB.open(u,1),g=!1,y=()=>{g=!0,b(cn())};i.addEventListener("abort",y,{once:!0});let v=()=>i.removeEventListener("abort",y);w.onblocked=y,w.onupgradeneeded=()=>{if(g||o!=="fresh"||!l()||w.result.objectStoreNames.length!==0){w.transaction?.abort();return}w.result.createObjectStore(Gh)},w.onerror=()=>{v(),b(cn())},w.onsuccess=()=>{if(v(),g||!l()||w.result.objectStoreNames.length!==1||!w.result.objectStoreNames.contains(Gh)){w.result.close(),b(cn());return}m(w.result)}}),h=new n(f,t,r,d,s);try{h.check(i);let m=await h.read(d,{signal:i});try{if(o==="fresh"!=(m===null))throw cn();return h.check(i),h}finally{m?.fill(0)}}catch{throw h.close(),cn()}}check(e,t=this.namespace){try{if(this.closed||e.aborted||t!==this.namespace||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.keys(this.scope).some(i=>this.source[i]!==this.scope[i]))throw cn()}catch{throw cn()}}async read(e,t){let i=await this.transaction("readonly",e,t.signal,null);try{return this.check(t.signal,e),i}catch{throw i instanceof Uint8Array&&i.fill(0),cn()}}async create(e,t,i){this.check(i.signal,e);let o=UI(t);try{let s=await this.transaction("readwrite",e,i.signal,o);return this.check(i.signal,e),s===!0}finally{o.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(i,t);let a=this.db.transaction(Gh,e,{durability:"strict"}),p=a.objectStore(Gh),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>i.removeEventListener("abort",d);i.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(cn())},a.oncomplete=()=>{u();try{if(this.check(i,t),c)throw cn();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(cn())}};let f=p.get(NI);f.onsuccess=()=>{let h=null;try{this.check(i,t),h=f.result===void 0?null:UI(f.result),e==="readonly"?(l=h,h=null):(l=h===null,l===!0&&o!==null&&p.add(new Uint8Array(o),NI))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};Je();ge();var Me=()=>new Error("app Noise custody unavailable; preserve storage and reopen"),kp=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),yl=class{constructor(e,t,i){this.pin=e;this.key=t;this.store=i;try{this.scope=Object.freeze({connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId});let o=[this.scope.connectorId,this.scope.deviceId,this.scope.installationId].map(U);if(o.some(s=>s.every(r=>r===0))||t.type!=="secret"||t.extractable||t.algorithm.name!=="AES-GCM"||t.algorithm.length!==256||!t.usages.includes("encrypt")||!t.usages.includes("decrypt"))throw Me();this.namespace=`mdbase.app-noise.v1:${this.scope.connectorId}:${this.scope.deviceId}:${this.scope.installationId}`,this.aad=pe(["mdbase/v1/app-noise-platform",...o]),this.check(new AbortController().signal)}catch{throw Me()}}pin;key;store;scope;namespace;aad;check(e){try{if(e.aborted||this.pin.isCurrent()!==!0||this.pin.connectorId!==this.scope.connectorId||this.pin.deviceId!==this.scope.deviceId||this.pin.installationId!==this.scope.installationId)throw Me()}catch{throw Me()}}receiptValue(e){if(e.connectorId!==this.scope.connectorId||e.deviceId!==this.scope.deviceId||e.installationId!==this.scope.installationId)throw Me();let t=[e.signPublicKey,e.kemPublicKey,e.noisePublicKey];if(t.some(i=>!(i instanceof Uint8Array)||i.length!==32||i.every(o=>o===0)))throw Me();return t.map(i=>new Uint8Array(i))}receipt(e){if(e===null)return null;if(!Array.isArray(e)||e.length!==3||e.some(t=>!(t instanceof Uint8Array)||t.length!==32||t.every(i=>i===0)))throw Me();return Object.freeze({...this.scope,signPublicKey:new Uint8Array(e[0]),kemPublicKey:new Uint8Array(e[1]),noisePublicKey:new Uint8Array(e[2])})}markerValue(e){let t=U(e.collection);if(t.every(i=>i===0)||typeof e.acknowledged!="boolean"||!(e.sasCommitment instanceof Uint8Array)||e.sasCommitment.length!==32||e.sasCommitment.every(i=>i===0))throw Me();return[t,...this.receiptValue(e),new Uint8Array(e.sasCommitment),e.acknowledged]}marker(e,t){if(e===null)return null;if(!t||!Array.isArray(e)||e.length!==6||!(e[0]instanceof Uint8Array)||e[0].length!==16||e[0].every(r=>r===0)||typeof e[5]!="boolean")throw Me();let i=this.receipt(e.slice(1,4));for(let r of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(i[r],t[r]))throw Me();let o=e[4];if(!(o instanceof Uint8Array)||o.length!==32||o.every(r=>r===0))throw Me();let s=Array.from(e[0],r=>r.toString(16).padStart(2,"0")).join("");return Object.freeze({...i,collection:`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`,sasCommitment:new Uint8Array(o),acknowledged:e[5]})}async restore(e){let t=await this.read(e);return this.check(e.signal),t?.value??null}async read(e){let t=null,i=null;try{this.check(e.signal);let o=await this.store.read(this.namespace,e);if(this.check(e.signal),o===null)return null;if(!(o instanceof Uint8Array)||o.length===0||o.length>4096)throw Me();t=new Uint8Array(o);let s=ue(t);if(!(s instanceof Map))throw Me();let r=s,a=r.get(1),p=r.get(2);if(r.size!==3||r.get(0)!==1||!(a instanceof Uint8Array)||a.length!==12||!(p instanceof Uint8Array)||p.length<16||p.length>2064||(i=new Uint8Array(await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(p))),this.check(e.signal),i.length>2048))throw Me();let l=ue(i);if(!(l instanceof Map))throw Me();let c=l,d=c.get(1);if(!(c.get(0)===1&&c.size===3||c.get(0)===2&&c.size===4&&c.has(3))||!(d instanceof Uint8Array)||d.length===0||d.length>1024||!c.has(2))throw Me();let u=this.receipt(c.get(2)),f=c.get(0)===2?this.marker(c.get(3),u):null;return{value:Object.freeze({envelope:new Uint8Array(d),receipt:u,privateEnrolMarker:f}),encrypted:new Uint8Array(t)}}catch{throw Me()}finally{t?.fill(0),i?.fill(0)}}async write(e,t,i,o,s=null){let r=null,a=null;try{if(this.check(o.signal),!(e instanceof Uint8Array)||!e.length||e.length>1024)throw Me();let p=new Map([[0,s===null?1:2],[1,new Uint8Array(e)],[2,t===null?null:this.receiptValue(t)]]);if(s!==null){let u=this.markerValue(s);this.marker(u,t),p.set(3,u)}if(r=pe(p),r.length>2048)throw Me();let l=globalThis.crypto.getRandomValues(new Uint8Array(12)),c=new Uint8Array(await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:l,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(r)));this.check(o.signal),a=pe(new Map([[0,1],[1,l],[2,c]]));let d=await this.store.compareAndSet(this.namespace,i,a,o);if(this.check(o.signal),d!==!0)throw Me()}catch{throw Me()}finally{r?.fill(0),a?.fill(0)}}async pending(e,t){let i=await this.read(t);if(this.check(t.signal),i){if(!kp(i.value.envelope,e))throw Me();return}await this.write(e,null,null,t),this.check(t.signal)}async privateEnrolPending(e,t){try{if(e.acknowledged!==!1)throw Me();await this.writePrivateMarker(e,!1,t)}catch{throw Me()}}async privateEnrolAcknowledged(e,t){try{await this.writePrivateMarker(e,!0,t)}catch{throw Me()}}async writePrivateMarker(e,t,i){this.check(i.signal);let o=this.marker(this.markerValue(e),e),s=await this.read(i);if(this.check(i.signal),!s?.value.receipt)throw Me();for(let a of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(o[a],s.value.receipt[a]))throw Me();let r=s.value.privateEnrolMarker;if(r){if(r.collection!==o.collection||!kp(r.sasCommitment,o.sasCommitment))throw Me();if(r.acknowledged){if(!t)throw Me();return}if(!t)return}else if(t)throw Me();await this.write(s.value.envelope,s.value.receipt,s.encrypted,i,Object.freeze({...o,acknowledged:t})),this.check(i.signal)}async registered(e,t){let i=await this.read(t);if(this.check(t.signal),!i)throw Me();if(i.value.receipt){for(let o of["signPublicKey","kemPublicKey","noisePublicKey"])if(!kp(i.value.receipt[o],e[o]))throw Me();this.receiptValue(e);return}await this.write(i.value.envelope,e,i.encrypted,t),this.check(t.signal)}};Zn();ge();var Yh="opaque-noise",DI="custody",l2=4096,_n=()=>new Error("app noise custody store unavailable");function Qw(n){if(!(n instanceof Uint8Array)||n.byteLength<1||n.byteLength>l2)throw _n();return new Uint8Array(n)}function c2(n,e){return n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i])}function ev(n){if(U(n).every(t=>t===0))throw _n();return n.toLowerCase()}function tv(n,e){try{return n.isCurrent()===!0&&n.connectorId===e[0]&&n.deviceId===e[1]&&n.installationId===e[2]}catch{return!1}}var gl=class n{constructor(e,t,i,o){this.db=e;this.source=t;this.pins=i;this.origin=o;e.onversionchange=()=>this.close()}db;source;pins;origin;closed=!1;static async open(e){try{return await this.openChecked(e)}catch{throw _n()}}static async openChecked(e){let{source:t,signal:i}=e,o=[t.connectorId,t.deviceId,t.installationId];if(!Lt(e.origin,e.allowLoopbackHttp===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||Rt()!==e.origin||!["fresh","existing"].includes(e.mode)||i.aborted||!tv(t,o)||typeof globalThis.indexedDB>"u")throw _n();let s=`mdbase.app.noise.v1.${ev(o[2])}.${ev(o[0])}.${ev(o[1])}`,r=await new Promise((p,l)=>{let c=indexedDB.open(s,1),d=!1,u=()=>{d=!0,l(_n())};i.addEventListener("abort",u,{once:!0});let f=()=>i.removeEventListener("abort",u);c.onblocked=u,c.onupgradeneeded=()=>{if(d||i.aborted||e.mode!=="fresh"||!tv(t,o)||c.result.objectStoreNames.length!==0){c.transaction?.abort();return}c.result.createObjectStore(Yh)},c.onerror=()=>{f(),l(_n())},c.onsuccess=()=>{if(f(),d||i.aborted||c.result.objectStoreNames.length!==1||!c.result.objectStoreNames.contains(Yh)){c.result.close(),l(_n());return}p(c.result)}}),a=new n(r,t,o,e.origin);try{let p=await a.read(a.namespace,{signal:i});if(e.mode==="fresh"!=(p===null))throw _n();return p?.fill(0),a.check(i),a}catch{throw a.close(),_n()}}get namespace(){return`mdbase.app-noise.v1:${this.pins[0]}:${this.pins[1]}:${this.pins[2]}`}check(e,t=this.namespace){if(this.closed||e.aborted||t!==this.namespace||Rt()!==this.origin||!tv(this.source,this.pins))throw _n()}async read(e,t){this.check(t.signal,e);let i=await this.transaction("readonly",t.signal,null,null);try{return this.check(t.signal),i}catch{throw i instanceof Uint8Array&&i.fill(0),_n()}}async compareAndSet(e,t,i,o){this.check(o.signal,e);let s=null,r=null;try{s=t===null?null:Qw(t),r=Qw(i);let a=await this.transaction("readwrite",o.signal,s,r);return this.check(o.signal),a===!0}finally{s?.fill(0),r?.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{this.check(t);let a=this.db.transaction(Yh,e,{durability:"strict"}),p=a.objectStore(Yh),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(_n())},a.oncomplete=()=>{u();try{if(this.check(t),c)throw _n();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(_n())}};let f=p.get(DI);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:Qw(f.result),e==="readonly"?(l=h,h=null):(l=c2(h,i),l===!0&&o!==null&&p.put(new Uint8Array(o),DI))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db.close())}};rp();ip();bt();ge();re();var Si=()=>_("unavailable","people metadata is unavailable","people_response");function $I(n){if(!n||typeof n!="object"||Array.isArray(n))throw Si();return n}function zI(n){if(typeof n=="number"&&!Number.isSafeInteger(n))throw Si();let e=BigInt(n);if(e<0n||e>(1n<<64n)-1n)throw Si();return e}var bl=class{constructor(e,t={}){this.session=e;this.rawOrigin=e.cpOrigin;let i=new URL(this.rawOrigin);if(i.username||i.password||i.pathname!=="/"||i.search||i.hash||i.protocol!=="https:"&&!(t.allowLoopbackHttp===!0&&ot(e.cpOrigin)))throw _("invalid_request","invalid people CP origin","people_binding");this.cpOrigin=i.origin,this.collection=e.collection,this.connector=e.connectorId,this.device=e.deviceId,this.ep=zI(e.endpoint);for(let o of[this.collection,this.connector,this.device])if(U(o).every(s=>s===0))throw _("invalid_request","nil people binding","people_binding");if(this.fetchImpl=t.fetch??globalThis.fetch,!this.isCurrent())throw _("unauthenticated","people scope is not current","people_fenced")}session;cpOrigin;rawOrigin;collection;connector;device;ep;fetchImpl;lifetime=new AbortController;isCurrent(){try{return!this.lifetime.signal.aborted&&this.session.isCurrent()===!0&&this.session.cpOrigin===this.rawOrigin&&this.session.collection===this.collection&&this.session.connectorId===this.connector&&this.session.deviceId===this.device&&zI(this.session.endpoint)===this.ep}catch{return!1}}check(e){if(e?.throwIfAborted(),!this.isCurrent())throw _("unauthenticated","people scope changed","people_fenced")}async request(e,t={}){if(e!=="identity"&&e!=="members")throw _("invalid_request","invalid people resource");this.check(t.signal);let i=new AbortController,o=()=>i.abort();t.signal?.addEventListener("abort",o,{once:!0}),this.lifetime.signal.addEventListener("abort",o,{once:!0});let s=setTimeout(o,15e3);s.unref?.();let r=new Uint8Array(1024*1024),a=0,p,l;try{let c=await this.session.connectorBearer({signal:i.signal});if(this.check(t.signal),i.signal.aborted)throw Si();if(typeof c!="string"||!/^(idev_|ct_)/.test(c)||c.length>16*1024||/[^\x21-\x7e]/.test(c))throw _("unauthenticated","invalid people credential","people_binding");let d=this.fetchImpl;if(p=await d(`${this.cpOrigin}/v1/authorities/${this.collection}/${e}?device_id=${this.device}`,{method:"GET",headers:{authorization:`Bearer ${c}`},signal:i.signal,redirect:"error",credentials:"omit",cache:"default",referrerPolicy:"no-referrer"}),this.check(t.signal),i.signal.aborted)throw Si();let u=p.headers.get("content-length");if(u!==null&&/^(0|[1-9][0-9]*)$/.test(u)&&Number(u)>r.length||!p.body)throw Si();for(l=p.body.getReader();;){let{done:h,value:m}=await l.read();try{if(this.check(t.signal),i.signal.aborted)throw Si();if(h)break;if(a+m.length>r.length)throw Si();r.set(m,a),a+=m.length}finally{m?.fill(0)}}let f=$I(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(0,a))));if(this.check(t.signal),p.status===401)throw _("unauthenticated","people credential is no longer current","people_fenced");if(p.status===403){let h=$I(f.error);throw _("forbidden","people access was refused",e==="members"&&h.code==="people_permission_declined"?"people_permission_declined":"people_access")}if(p.status===404)throw _("upgrade_required","people metadata is unsupported","people_unsupported");if(!p.ok)throw Si();return f}catch(c){throw this.check(t.signal),c instanceof se?c:Si()}finally{i.abort(),r.fill(0),(l?.cancel()??p?.body?.cancel())?.catch(()=>{}),l?.releaseLock(),clearTimeout(s),t.signal?.removeEventListener("abort",o),this.lifetime.signal.removeEventListener("abort",o)}}close(){this.lifetime.abort()}};np();async function BI(n){if(!n.worker)return{supported:!1,reason:"worker_required"};if(!n.storage?.getDirectory)return{supported:!1,reason:"opfs_unavailable"};let e,t,i=!1,o,s={supported:!1,reason:"probe_failed"};try{let r=n.randomUUID();if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r))return s;t=r.toLowerCase(),e=await(await n.storage.getDirectory()).getDirectoryHandle(".mdbase-app-probes",{create:!0});let a=await e.getFileHandle(t,{create:!0});if(i=!0,!a.createSyncAccessHandle)s={supported:!1,reason:"sync_handle_unavailable"};else{o=await a.createSyncAccessHandle();let p=new Uint8Array([109,100,98,110]),l=new Uint8Array(p.length);if(o.write(p,{at:0})!==p.length)throw new Error("short probe write");if(o.flush(),o.read(l,{at:0})!==p.length||l.some((c,d)=>c!==p[d]))throw new Error("probe readback failed");s={supported:!0,backend:"opfs_sahpool_candidate",crashDurability:"unqualified",eviction:"possible"}}}catch{s={supported:!1,reason:"probe_failed"}}finally{let r=!0;try{o?.close()}catch{r=!1,s={supported:!1,reason:"cleanup_failed"}}if(i&&r&&e&&t)try{await e.removeEntry(t)}catch{s={supported:!1,reason:"cleanup_failed"}}}return s}no();to();Tw();ro();ap();Zo();ow();Mh();ep();var nv=Object.freeze({status:"unsupported"}),Jh=Object.freeze({snapshot(){return nv},async check(n={}){return n.signal?.throwIfAborted(),nv},async request(n={}){return n.signal?.throwIfAborted(),nv},disable(){}});Wn();ep();var rv="mdbase.app.log-token.v1",wl="tokens";function FI(){return new Promise(n=>{let e;try{e=indexedDB.open(rv,1)}catch{n(null);return}e.onupgradeneeded=()=>{try{e.result.createObjectStore(wl)}catch{}},e.onsuccess=()=>{let t=e.result;t.onversionchange=()=>t.close(),n(t.objectStoreNames.contains(wl)?t:(t.close(),null))},e.onerror=e.onblocked=()=>n(null)})}function iv(n,e){return FI().then(t=>new Promise(i=>{if(!t){i(null);return}let o=null;try{let s=t.transaction(wl,n),r=e(s.objectStore(wl));r&&(r.onsuccess=()=>{o=r.result??null}),s.oncomplete=()=>{t.close(),i(o)},s.onerror=s.onabort=()=>{t.close(),i(null)}}catch{t.close(),i(null)}}))}function VI(){return typeof indexedDB>"u"?null:Object.freeze({async read(n,e){let t=await iv("readonly",i=>i.get(n)).catch(()=>null);return!t||typeof t.value!="string"||!t.value||t.value.length>16*1024||/[^\x21-\x7e]/.test(t.value)||typeof t.expires!="number"||!Number.isSafeInteger(t.expires)||t.expires-e<6e4||t.expires-e>16*6e4?null:Object.freeze({value:t.value,expires:t.expires})},async write(n,e){await iv("readwrite",t=>t.put({value:e.value,expires:e.expires},n)).catch(()=>null)},async drop(n){await iv("readwrite",e=>e.delete(n)).catch(()=>null)}})}async function WI(n){let{cpOrigin:e,connectorId:t,deviceId:i}=n;if(!t||!i)return!0;let o=await FI();return o?new Promise(s=>{try{let r=o.transaction(wl,"readwrite"),a=r.objectStore(wl).openCursor();a.onsuccess=()=>{let p=a.result;if(p){if(typeof p.key=="string"){let l=p.key.split(" ");l.length===5&&l[0]===e&&l[2]===t&&l[3]===i&&p.delete()}p.continue()}},r.oncomplete=()=>{o.close(),s(!0)},r.onerror=r.onabort=()=>{o.close(),s(!1)}}catch{o.close(),s(!1)}}):!1}Ow();Zn();ge();Gc();Cs();re();du();ip();bt();Je();ge();var p2=4401,d2=4403,u2=4410,f2=3e4,h2=1e4,m2=6e4,y2=6e4,g2=15e3,b2=4,w2=64*1024,v2=1024*1024;function _2(n,e){let t=new URL(n);if(t.protocol==="https:")return`wss://${t.host}`;if(e&&ot(n))return`ws://${t.host}`;throw new Error("app log push: origin")}var A2=n=>[...n].map(e=>e.toString(16).padStart(2,"0")).join(""),KI=(n,e,t)=>pe(new Map([[0,0],[1,n],[2,e],[3,t]]));function k2(n){let e=n.get(3);if(!(e instanceof Map))return null;let t=e.get(0),i=e.get(1);return{code:typeof t=="string"?t:"unavailable",reason:typeof i=="string"?i:""}}var Xh=class{constructor(e,t,i={}){this.source=e;this.events=t;this.base=_2(e.origin,i.allowLoopbackHttp===!0),this.collectionBytes=U(e.collection);let o=i.WebSocket??globalThis.WebSocket;if(typeof o!="function")throw new Error("app log push: no WebSocket");this.Ws=o,this.random=i.random??Math.random,this.now=i.now??Date.now}source;events;base;collectionBytes;Ws;random;now;socket=null;connecting=!1;closed=!1;finished=null;unsupported=!1;paused=!1;isLive=!1;attempts=0;liveSince=0;retry=null;ping=null;pongDue=null;opening=null;unsigned=0;life=new AbortController;token=null;get live(){return this.isLive}get available(){return!this.unsupported&&this.finished===null&&!this.closed}get suspended(){return this.paused}start(){this.connect()}nudge(){this.unsupported=!1,this.unsigned=0,!(this.paused||this.socket||this.connecting||!this.available)&&(this.attempts=0,this.clearRetry(),this.connect())}suspend(){this.paused||!this.available||(this.paused=!0,this.clearRetry(),this.drop(1e3,"hidden"))}resume(){if(!this.paused){this.nudge();return}this.paused=!1,this.nudge()}close(){this.closed||(this.closed=!0,this.life.abort(),this.clearRetry(),this.drop(1e3,"closed"))}clearRetry(){this.retry!==null&&clearTimeout(this.retry),this.retry=null}clearPing(){this.ping!==null&&clearInterval(this.ping),this.ping=null,this.pongDue!==null&&clearTimeout(this.pongDue),this.pongDue=null,this.opening!==null&&clearTimeout(this.opening),this.opening=null}setLive(e){if(this.isLive!==e){this.isLive=e,e&&(this.liveSince=this.now());try{this.events.live(e)}catch{}}}end(e){if(!(this.finished||this.closed)){this.finished=e,this.clearRetry(),this.drop(1e3,e);try{this.events.ended(e)}catch{}}}drop(e,t){this.clearPing();let i=this.socket;if(this.socket=null,i){i.onopen=i.onmessage=i.onclose=i.onerror=null;try{i.close(e,t)}catch{}}this.setLive(!1)}schedule(e=!1){if(this.paused||!this.available||this.retry!==null)return;let t=e?0:Math.floor(this.random()*Math.min(y2,1e3*2**Math.min(this.attempts,6)));this.attempts++,this.retry=setTimeout(()=>{this.retry=null,this.connect()},t)}async connect(){if(this.paused||this.socket||this.connecting||!this.available)return;if(!this.source.isCurrent()){this.close();return}this.connecting=!0;let e,t,i;try{let r=this.life.signal;if(e=await this.source.accessToken({signal:r}),t=await this.source.nonce({signal:r}),this.paused||!this.available||!this.source.isCurrent())return;if(i=this.source.signHello(t,e),!i){++this.unsigned>=b2?this.unsupported=!0:this.schedule();return}this.unsigned=0}catch{this.connecting=!1,this.schedule();return}finally{this.connecting=!1}this.token=e;let o;try{o=new this.Ws(`${this.base}/v1/ws?c=${this.source.collection}&n=${A2(t)}`)}catch{this.schedule();return}o.binaryType="arraybuffer",this.socket=o;let s=KI(1,"hello",new Map([[0,[1,0]],[1,e],[2,U(this.source.deviceId)],[3,i]]));i.fill(0),t.fill(0),o.onopen=()=>{try{o.send(s)}catch{this.lost(o,1006)}},o.onmessage=r=>this.message(o,r.data),o.onclose=r=>this.lost(o,r.code),o.onerror=()=>{},this.opening=setTimeout(()=>{this.opening=null,this.lost(o,1006)},g2)}message(e,t){if(e!==this.socket)return;if(typeof t=="string"){t==="pong"&&this.pongDue!==null&&(clearTimeout(this.pongDue),this.pongDue=null);return}if(!(t instanceof ArrayBuffer)||t.byteLength>v2){this.lost(e,1009);return}let i=new Uint8Array(t),o;try{let a=ue(i);if(!(a instanceof Map))throw new Error;o=a}catch{this.lost(e,1007);return}if(o.get(0)===2){if(!this.isLive)return;if(this.deliver(i),o.get(1)==="closed"){let a=o.get(2),p=a instanceof Map?a.get(1):null;this.end(p==="gone"?"gone":p==="revoked"?"revoked":"forbidden")}return}if(o.get(0)!==1)return;let s=o.get(1),r=k2(o);if(s===1){if(r){this.refused(e,r);return}try{e.send(KI(2,"subscribe",new Map([[0,this.collectionBytes],[1,0],[2,w2]])))}catch{this.lost(e,1006)}return}if(s===2){if(r){this.refused(e,r);return}let a=o.get(2);if(!(a instanceof Map)){this.lost(e,1007);return}let p=a.get(0),l=a.get(1);this.startPing(e),this.setLive(!0),(typeof p=="number"||typeof p=="bigint")&&l instanceof Uint8Array&&l.length===32&&this.deliver(pe(new Map([[0,2],[1,"head"],[2,new Map([[0,this.collectionBytes],[1,p],[2,l]])]])))}}deliver(e){try{this.events.push(e)}catch{}}refused(e,t){if(t.code==="forbidden"&&t.reason==="credentials_revoked"){this.end("revoked");return}if(t.code==="forbidden"||t.code==="not_found"){this.end(t.code==="not_found"?"gone":"forbidden");return}if(t.code==="gone"){this.end("gone");return}t.code==="unauthenticated"&&this.token&&(this.source.invalidateToken?.(this.token),this.token=null),this.lost(e,1008)}startPing(e){this.clearPing(),this.ping=setInterval(()=>{if(!(e!==this.socket||this.pongDue!==null)){try{e.send("ping")}catch{this.lost(e,1006);return}this.pongDue=setTimeout(()=>{this.pongDue=null,this.lost(e,1006)},h2)}},f2)}lost(e,t){if(e!==this.socket)return;let i=this.isLive&&this.now()-this.liveSince>=m2;if(this.drop(1e3,"lost"),t===d2){this.end("forbidden");return}if(t===u2){this.end("gone");return}if(i&&(this.attempts=0),t===p2){this.token&&this.source.invalidateToken?.(this.token),this.token=null,this.attempts=0,this.schedule(!0);return}this.schedule()}};qw();Wn();np();function Zh(n){return n.mode==="local_only"?null:n.incidents.some(e=>e.kind==="waiting_for_key")?"waiting_for_key":n.installing?"installing":n.resyncing?"resyncing":n.connection==="offline"?"offline":n.headKnown===0?"head_unknown":n.confirmedThrough<n.headKnown?"behind":null}function HI(n){let e=n.incidents.find(r=>r.kind==="waiting_for_key");if(!e)return null;let t={through:n.confirmedThrough,head:n.headKnown},i=e.details,o=r=>i instanceof Map?i.get(r):i&&typeof i=="object"?i[r]:void 0,s=o("reason");typeof s=="string"&&/^[a-z_]{1,32}$/.test(s)&&(t.key=s);for(let r of["position","at"]){let a=o(r);(typeof a=="number"||typeof a=="bigint")&&(t[r]=Number(a))}return t}fh();rp();Je();ge();Gc();var Qh=264*1024+256,ov=264*1024,$e=()=>new Error("app cloud copy outcome unavailable; preserve storage and reopen"),sv=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),S2=n=>Array.from(n,e=>e.toString(16).padStart(2,"0")).join(""),em=class{constructor(e,t,i,o,s){this.source=e;this.store=o;this.key=i;try{this.mode=s.mode,this.lifetime=s.signal,this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256});let r=e.displayName;if(this.displayName=r===void 0?void 0:wr(r),this.displayName!==void 0&&e.purpose!=="create"||r!==this.displayName)throw $e();this.current=e.isCurrent,this.owned=e.installationOwned,this.io=Object.freeze({read:o.read,cas:o.compareAndSet});let a=[e.accountId,e.connectorId,e.deviceId,e.installationId,e.collection].map(U);if(a.some(p=>p.every(l=>l===0))||!["create","join"].includes(e.purpose)||!["fresh","existing"].includes(this.mode)||!/^[0-9a-f]{64}$/.test(e.assetSha256)||(this.keys=Object.freeze([t.signPublicKey,t.kemPublicKey,t.noisePublicKey].map(p=>{if(!(p instanceof Uint8Array)||p.length!==32||p.every(l=>l===0))throw $e();return new Uint8Array(p)})),t.connectorId!==e.connectorId||t.deviceId!==e.deviceId||t.installationId!==e.installationId)||typeof globalThis.CryptoKey!="function"||!(i instanceof CryptoKey)||i.type!=="secret"||i.extractable||i.algorithm.name!=="AES-GCM"||i.algorithm.length!==256||i.usages.length!==2||!i.usages.includes("encrypt")||!i.usages.includes("decrypt"))throw $e();this.aad=pe(["mdbase/v1/app-cloud-copy-outcome-platform",...a,e.purpose,e.cpOrigin,e.logOrigin,e.assetSha256,...this.keys]),this.check(this.lifetime)}catch{throw $e()}}source;store;closed=!1;key;fields;displayName;current;owned;io;keys;aad;mode;lifetime;check(e){try{if(this.closed||!this.key||e!==this.lifetime||e.aborted||this.source.displayName!==this.displayName||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||this.store.read!==this.io.read||this.store.compareAndSet!==this.io.cas||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw $e()}catch{throw $e()}}operation(e){if(e){if(e.displayName!==this.displayName)throw $e();for(let t of Object.keys(this.fields))if(e[t]!==this.fields[t])throw $e();for(let[t,i]of["signPublicKey","kemPublicKey","noisePublicKey"].entries())if(!(e[i]instanceof Uint8Array)||!sv(e[i],this.keys[t]))throw $e()}return Object.freeze({...this.fields,...this.displayName===void 0?{}:{displayName:this.displayName},signPublicKey:new Uint8Array(this.keys[0]),kemPublicKey:new Uint8Array(this.keys[1]),noisePublicKey:new Uint8Array(this.keys[2])})}metadata(e){let t=this.operation(e.operation);if(!(e.genesisItem instanceof Uint8Array)||!e.genesisItem.length||e.genesisItem.length>256*1024||typeof e.expectedGenesis!="string"||!/^sha256:[0-9a-f]{64}$/.test(e.expectedGenesis))throw $e();return Object.freeze({operation:t,genesisItem:new Uint8Array(e.genesisItem),expectedGenesis:e.expectedGenesis})}async hashChecked(e,t){let i=new TextEncoder().encode("mdbase/v1/chain"),o=new Uint8Array(1+i.length+e.genesisItem.length);o[0]=i.length,o.set(i,1),o.set(e.genesisItem,1+i.length);let s=new Uint8Array(await crypto.subtle.digest("SHA-256",o));if(this.check(t),e.expectedGenesis!==`sha256:${S2(s)}`)throw $e()}async read(e){let t=null;try{this.check(e);let i=await this.io.read.call(this.store,Object.freeze({signal:e}));if(this.check(e),i===null){if(this.mode!=="fresh")throw $e();return null}if(!(i instanceof Uint8Array)||!i.length||i.length>Qh)throw $e();let o=new Uint8Array(i),s=ue(o);if(!(s instanceof Map))throw $e();let r=s;if(r.size!==3||r.get(0)!==1)throw $e();let a=r.get(1),p=r.get(2);if(!(a instanceof Uint8Array)||a.length!==12||!(p instanceof Uint8Array)||p.length<16||p.length>ov+16||(t=new Uint8Array(await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(a),additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(p))),this.check(e),t.length>ov))throw $e();let l=ue(t);if(!(l instanceof Map))throw $e();let c=l,d=c.get(0)===1&&c.size===3;if(!d&&!(c.get(0)===2&&c.size===4)||(d?null:c.get(3))!==(this.displayName??null))throw $e();let u=c.get(1);if(!Array.isArray(u)||u.length!==3||u.some((m,b)=>!(m instanceof Uint8Array)||!sv(m,this.keys[b])))throw $e();let f=c.get(2),h=null;if(f!==null){if(!Array.isArray(f)||f.length!==2||!(f[0]instanceof Uint8Array)||typeof f[1]!="string")throw $e();h=this.metadata({operation:this.operation(),genesisItem:f[0],expectedGenesis:f[1]}),await this.hashChecked(h,e)}return{encrypted:o,metadata:h}}catch{throw $e()}finally{t?.fill(0)}}async write(e,t,i){let o=null,s=null;try{if(this.check(i),o=pe(new Map([[0,2],[1,this.keys.map(l=>new Uint8Array(l))],[2,e===null?null:[e.genesisItem,e.expectedGenesis]],[3,this.displayName??null]])),o.length>ov)throw $e();let r=crypto.getRandomValues(new Uint8Array(12)),a=new Uint8Array(await crypto.subtle.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(this.aad),tagLength:128},this.key,new Uint8Array(o)));if(this.check(i),s=pe(new Map([[0,1],[1,r],[2,a]])),s.length>Qh)throw $e();let p=await this.io.cas.call(this.store,t,s,Object.freeze({signal:i}));if(this.check(i),p!==!0)throw $e()}catch{throw $e()}finally{o?.fill(0),s?.fill(0)}}async restore(e){let{signal:t}=e,i=await this.read(t);return this.check(t),i===null?Object.freeze({state:"none"}):i.metadata===null?Object.freeze({state:"pending",operation:this.operation()}):Object.freeze({state:"completed",metadata:this.metadata(i.metadata)})}async pending(e,t){let{signal:i}=t;this.check(i),this.operation(e);let o=await this.read(i);this.check(i),!o&&await this.write(null,null,i)}async completed(e,t){let{signal:i}=t;this.check(i);let o=this.metadata(e);await this.hashChecked(o,i);let s=await this.read(i);if(this.check(i),!s)throw $e();if(s.metadata){if(!sv(s.metadata.genesisItem,o.genesisItem)||s.metadata.expectedGenesis!==o.expectedGenesis)throw $e();return}await this.write(o,s.encrypted,i)}close(){this.closed=!0,this.key=null}};Zn();ge();var tm="public-outcome",av="operation",Yt=()=>new Error("app cloud copy outcome store unavailable; preserve storage and reopen"),P2=(n,e)=>n===null||e===null?n===e:n.length===e.length&&n.every((t,i)=>t===e[i]);function lv(n){if(!(n instanceof Uint8Array)||!n.length||n.length>Qh)throw Yt();return new Uint8Array(n)}var nm=class n{constructor(e,t,i){this.source=e;this.origin=t;this.lifetime=i;this.fields=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,collection:e.collection,purpose:e.purpose,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,assetSha256:e.assetSha256}),this.current=e.isCurrent,this.owned=e.installationOwned}source;origin;lifetime;db=null;closed=!1;fields;current;owned;get fenced(){return this.closed||this.lifetime.aborted}check(e){try{if(this.fenced||e!==this.lifetime||e.aborted||Rt()!==this.origin||this.source.isCurrent!==this.current||this.source.installationOwned!==this.owned||this.current.call(this.source)!==!0||this.owned.call(this.source)!==!0||Object.entries(this.fields).some(([t,i])=>this.source[t]!==i))throw Yt()}catch{throw Yt()}}static async open(e){let{source:t,origin:i,mode:o,signal:s,allowLoopbackHttp:r}=e,a=null;try{a=new n(t,i,s);let p=[a.fields.accountId,a.fields.connectorId,a.fields.deviceId,a.fields.installationId,a.fields.collection].map(c=>{if(U(c).every(d=>d===0))throw Yt();return c.toLowerCase()});if(!Lt(i,r===!0,e.allowNativeLoopbackHttp===!0?"native":void 0)||!["fresh","existing"].includes(o)||!["create","join"].includes(a.fields.purpose)||!/^[0-9a-f]{64}$/.test(a.fields.assetSha256)||!globalThis.indexedDB)throw Yt();a.check(s),a.db=await a.openDatabase(`mdbase.app.cloud-copy-outcome.v1.${p.join(".")}.${a.fields.purpose}`,o),a.db.onversionchange=()=>a.close(),a.check(s);let l=await a.read(Object.freeze({signal:s}));try{if(o==="fresh"!=(l===null))throw Yt();a.check(s)}finally{l?.fill(0)}return a}catch{throw a?.close(),Yt()}}openDatabase(e,t){return new Promise((i,o)=>{this.check(this.lifetime);let s=indexedDB.open(e,1),r=!1,a=!1,p=()=>{r=!0,o(Yt())},l=()=>this.lifetime.removeEventListener("abort",p);this.lifetime.addEventListener("abort",p,{once:!0}),s.onblocked=p,s.onupgradeneeded=()=>{try{if(this.check(this.lifetime),r||t!=="fresh"||s.result.objectStoreNames.length!==0)throw Yt();s.result.createObjectStore(tm),a=!0}catch{s.transaction?.abort()}},s.onerror=()=>{l(),o(Yt())},s.onsuccess=()=>{l();try{if(this.check(this.lifetime),r||t==="fresh"&&!a||s.result.objectStoreNames.length!==1||!s.result.objectStoreNames.contains(tm))throw Yt();i(s.result)}catch{s.result.close(),o(Yt())}}})}async read(e){let{signal:t}=e;this.check(t);let i=await this.transaction("readonly",t,null,null);return this.check(t),i}async compareAndSet(e,t,i){let{signal:o}=i;this.check(o);let s=e===null?null:lv(e),r=lv(t);try{let a=await this.transaction("readwrite",o,s,r);return this.check(o),a===!0}finally{s?.fill(0),r.fill(0)}}transaction(e,t,i,o){return new Promise((s,r)=>{if(this.check(t),!this.db)throw Yt();let a=this.db.transaction(tm,e,{durability:"strict"}),p=a.objectStore(tm),l=null,c=!1,d=()=>{c=!0;try{a.abort()}catch{}},u=()=>t.removeEventListener("abort",d);t.addEventListener("abort",d,{once:!0}),a.onabort=a.onerror=()=>{u(),l instanceof Uint8Array&&l.fill(0),r(Yt())},a.oncomplete=()=>{u();try{if(this.check(t),c)throw Yt();s(l)}catch{l instanceof Uint8Array&&l.fill(0),r(Yt())}};let f=p.get(av);f.onsuccess=()=>{let h=null;try{this.check(t),h=f.result===void 0?null:lv(f.result),e==="readonly"?(l=h,h=null):(l=P2(h,i),l===!0&&o!==null&&(i===null?p.add(new Uint8Array(o),av):p.put(new Uint8Array(o),av)))}catch{d()}finally{h?.fill(0)}}})}close(){this.closed||(this.closed=!0,this.db?.close(),this.db=null)}};var uo=class extends Error{constructor(t){super(`app cloud copy host: ${t}`);this.reason=t;this.name="AppCloudCopyHostError"}reason},x2=32,C2=8,Ae=n=>new uo(n),GI=(n,e)=>n.length===e.length&&n.every((t,i)=>t===e[i]),vl=class n{constructor(e,t,i,o,s){this.source=e;this.installation=t;this.originalRelease=i;this.origin=o;this.lifetime=s;this.selected=Object.freeze({accountId:e.accountId,connectorId:e.connectorId,deviceId:e.deviceId,installationId:e.installationId,kind:e.kind,cpOrigin:e.cpOrigin,logOrigin:e.logOrigin,approvalMode:e.approvalMode}),this.currentCallback=e.isCurrent,this.bearerCallback=e.connectorBearer,this.ownershipCallback=t.isCurrent;for(let r of[e.accountId,e.connectorId,e.deviceId,e.installationId])if(U(r).every(a=>a===0))throw Ae("binding");if(e.kind!=="app-runtime"&&e.kind!=="mobile"||i.schema!=="mdbn-app-trust/release/1"||i.cpOrigin!==e.cpOrigin||i.logOrigin!==e.logOrigin||!/^[0-9a-f]{64}$/.test(i.assetSha256)||!i.trustedRoots.length||i.trustedRoots.length>64||!i.policyPins.length||i.policyPins.length>65536)throw Ae("binding");if(this.trust=Object.freeze({...i,source:Object.freeze({...i.source}),trustedRoots:Object.freeze(i.trustedRoots.map(r=>{if(!(r instanceof Uint8Array)||r.length!==32||r.every(a=>a===0))throw Ae("binding");return new Uint8Array(r)})),policyPins:new Uint8Array(i.policyPins)}),this.pin=Object.freeze({...this.selected,isCurrent:()=>this.current(),installationOwned:()=>this.current(),connectorBearer:async({signal:r})=>{this.check(r);let a=await this.bearerCallback.call(this.source,Object.freeze({signal:r}));return this.check(r),a}}),e.approvalMode==="strict")throw new on;this.check(s)}source;installation;originalRelease;origin;lifetime;closing=!1;closeResult=null;provider=null;keys=null;noiseStore=null;key=null;noise=null;native=null;publicReceipt=null;signIn=null;originalCustody=null;collectionAttempted=!1;collectionSignal=null;collectionCurrent=null;outcomeStore=null;outcome=null;bootstrap=null;bootstrapConfirmed=!1;collectionScope=null;collectionSession=null;adoptedEndpoint=null;sqlAttempted=!1;sqlClose=null;collectionSql=null;logRequest=null;logLoopback=!1;logWork=null;authority=null;peopleMetadata=null;pump=null;timerPorts=new Set;readWork=null;readAbort=null;readClient=null;readVerified=!1;facades=new Map;logWorkListener=null;selected;currentCallback;bearerCallback;ownershipCallback;trust;pin;current(){try{let e=this.originalRelease,t=this.trust;return!this.closing&&!this.lifetime.aborted&&Rt()===this.origin&&this.source.isCurrent===this.currentCallback&&this.source.connectorBearer===this.bearerCallback&&this.installation.isCurrent===this.ownershipCallback&&this.currentCallback.call(this.source)===!0&&this.ownershipCallback.call(this.installation)===!0&&this.installation.scope.account===this.selected.accountId&&this.installation.scope.installation===this.selected.installationId&&Object.entries(this.selected).every(([i,o])=>this.source[i]===o)&&e.schema===t.schema&&e.environment===t.environment&&e.cpOrigin===t.cpOrigin&&e.logOrigin===t.logOrigin&&e.assetSha256===t.assetSha256&&e.source.repository===t.source.repository&&e.source.commit===t.source.commit&&e.source.version===t.source.version&&e.trustedRoots.length===t.trustedRoots.length&&e.trustedRoots.every((i,o)=>GI(i,t.trustedRoots[o]))&&GI(e.policyPins,t.policyPins)}catch{return!1}}check(e){if(e.aborted||!this.current())throw Ae("fenced")}operationSignal(e){let t=AbortSignal.any([this.lifetime,...this.collectionSignal?[this.collectionSignal]:[],e]);return this.check(t),t}static async openOriginalDevice(e){let{session:t,installation:i,release:o,origin:s,mode:r,signal:a,loadRuntime:p,fetch:l,allowLoopbackHttp:c,allowNativeLoopbackHttp:d}=e,u=null;try{if(!["fresh","existing"].includes(r))throw Ae("binding");u=new n(t,i,o,s,a);let{custody:f,restored:h}=await u.openOwnedDevice({mode:r,signal:a,loadRuntime:p,allowLoopbackHttp:c,allowNativeLoopbackHttp:d,requireReceipt:!0});if(r==="existing")u.native.acknowledgeDeviceRegistration(h.receipt),u.check(a),u.publicReceipt=u.native.registeredDeviceReceipt();else{let m=await new ul(u.native,u.pin,f,u.noise,{fetch:l,allowLoopbackHttp:c}).register(Object.freeze({signal:a}));u.check(a),u.publicReceipt=m}return u}catch(f){throw await u?.close(),f instanceof uo||f instanceof on?f:Ae("unavailable")}}static async openInstallationDevice(e){let{signIn:t,installation:i,release:o,origin:s,signal:r,loadRuntime:a,allowLoopbackHttp:p,allowNativeLoopbackHttp:l}=e,c=null;try{let d=t.confirmedHostSession(o.logOrigin,o.environment);c=new n(d,i,o,s,r),c.signIn=t;let u=await t.prepareOriginalDevice(i);c.check(r);let{custody:f,restored:h}=await c.openOwnedDevice({mode:u.mode,signal:r,loadRuntime:a,allowLoopbackHttp:p,allowNativeLoopbackHttp:l,requireReceipt:!1});if(c.originalCustody=f,h?.receipt&&t.view().state!=="paired")throw Ae("recovery_required");return await c.noise.pending(new Uint8Array(f.envelope),{signal:r}),c.check(r),t.view().state==="paired"&&await c.completeInstallationSignIn(),c}catch(d){throw await c?.close(),d}}async attestInstallation(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw Ae("binding");let e=await this.signIn.attest({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation});return this.check(this.lifetime),e}async completeInstallationSignIn(){if(this.check(this.lifetime),!this.signIn||!this.native||!this.originalCustody||!this.noise)throw Ae("binding");return await this.signIn.acknowledge({runtime:this.native,custody:this.originalCustody,persistence:this.noise,installation:this.installation}),this.check(this.lifetime),this.publicReceipt=this.native.registeredDeviceReceipt(),this.registeredReceipt()}async openOwnedDevice(e){let{mode:t,signal:i,loadRuntime:o,allowLoopbackHttp:s,allowNativeLoopbackHttp:r,requireReceipt:a}=e;this.check(i),this.provider=await hl.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.key=this.provider.deviceCustodyKek({signal:i}),this.check(i),this.keys=await ml.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.noiseStore=await gl.open({source:this.pin,origin:this.origin,mode:t,signal:i,allowLoopbackHttp:s,allowNativeLoopbackHttp:r}),this.check(i),this.noise=new yl(this.pin,this.key,this.noiseStore);let p=await this.noise.restore({signal:i});if(this.check(i),t==="existing"?!p||a&&!p.receipt:p!==null)throw Ae("recovery_required");let l=await o(Object.freeze({signal:i}));if(this.check(i),!(l instanceof Uint8Array)||!l.length)throw Ae("binding");this.native=await Ya.createDevice(new Uint8Array(l)),this.check(i);let c=await new fl(this.pin,this.key,this.keys).openNativeDevice(this.native,{signal:i,mode:t,noise:t==="fresh"?{mode:"fresh"}:{mode:"existing",envelope:p.envelope}});return this.check(i),{custody:c,restored:p}}async bootstrapCloudCopy(e){let{scope:t,collectionCurrent:i,purpose:o,outcomeMode:s,signal:r,reconcile:a,fetch:p,allowLoopbackHttp:l,allowNativeLoopbackHttp:c}=e,d=this.operationSignal(r),u=e.displayName,f=u===void 0?void 0:wr(u);if(f!==void 0&&o!=="create"||(this.check(d),this.collectionAttempted||!this.native||!this.key||!this.publicReceipt||t.account!==this.selected.accountId||t.installation!==this.selected.installationId||!["create","join"].includes(o)||!["fresh","existing"].includes(s)||U(t.collection).every(w=>w===0)))throw Ae("binding");let h=Object.freeze({account:t.account,installation:t.installation,collection:t.collection}),m=()=>{try{return this.current()&&!d.aborted&&e.scope===t&&e.collectionCurrent===i&&Object.entries(h).every(([w,g])=>t[w]===g)&&i.call(e)===!0&&this.outcomeStore?.fenced!==!0}catch{return!1}};if(!m())throw Ae("fenced");this.collectionAttempted=!0,this.collectionSignal=d,this.collectionCurrent=m,this.collectionScope=h;let b=Object.freeze({...this.pin,collection:h.collection,purpose:o,assetSha256:this.trust.assetSha256,...f===void 0?{}:{displayName:f},isCurrent:m});this.collectionSession=b;try{this.outcomeStore=await nm.open({source:b,origin:this.origin,mode:s,signal:d,allowLoopbackHttp:l,allowNativeLoopbackHttp:c}),this.checkCollection(d),this.outcome=new em(b,this.publicReceipt,this.key,this.outcomeStore,{mode:s,signal:d}),this.native.prepareCloudCopyCollection(b),this.checkCollection(d),this.bootstrap=new Ba(this.native,b,this.trust,this.outcome,{fetch:p,allowLoopbackHttp:l,...f===void 0?{}:{displayName:f}});let w=await this.bootstrap.bootstrap(Object.freeze({signal:d,...a?{reconcile:a}:{}}));return this.checkCollection(d),this.bootstrapConfirmed=!0,w}catch(w){throw await this.close(),w}}checkCollection(e){if(this.check(e),this.collectionCurrent?.()!==!0)throw Ae("fenced")}adoptCloudCopy(e,t){let i=this.operationSignal(e.signal);if(this.checkCollection(i),!this.bootstrap||!this.bootstrapConfirmed||this.adoptedEndpoint!==null)throw Ae("fenced");let o=e.endpoint;this.bootstrap.adoptCollection({...e,signal:this.collectionSignal},t),this.checkCollection(i),this.adoptedEndpoint=o}async openCollectionSql(e){let{replicaId:t,endpoint:i,openSql:o}=e,s=this.operationSignal(e.signal);if(this.checkCollection(s),!this.bootstrapConfirmed||!this.collectionScope||this.sqlAttempted||this.adoptedEndpoint!==null||U(t).every(r=>r===0)||typeof i!="bigint"&&!Number.isSafeInteger(i)||BigInt(i)<0n||BigInt(i)>(1n<<64n)-1n)throw Ae("binding");this.sqlAttempted=!0;try{let r=await o.call(e,Object.freeze({scope:this.collectionScope,signal:s})),a=r.close;if(this.sqlClose=async()=>{await a.call(r)},this.collectionSql=r.sql,this.checkCollection(s),e.openSql!==o)throw Ae("fenced");this.adoptCloudCopy({signal:s,replicaId:t,endpoint:i,opened:r.opened,sqliteVersion:r.sqliteVersion,cloudCopyOptIn:!0},r.sql)}catch(r){throw await this.close(),r}}async startCollectionLog(e){let{fetch:t,allowLoopbackHttp:i}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionSession||this.adoptedEndpoint===null)throw Ae("binding");let s=t??globalThis.fetch,r=i===!0;if(this.authority&&(s!==this.logRequest||r!==this.logLoopback))throw Ae("fenced");if(this.pump)return;if(this.logWork){await this.logWork,this.checkCollection(o);return}this.authority||(this.logRequest=s,this.logLoopback=r,this.authority=new za(this.native,Object.freeze({...this.collectionSession,endpoint:this.adoptedEndpoint,directOrigins:Object.freeze([])}),{fetch:s,allowLoopbackHttp:i,tokenCache:VI()}));let a=this.authority,p=(async()=>{await a.accessToken(Object.freeze({signal:o})),this.checkCollection(o),this.pump=this.native.bindLogTransport(a.logTransport())})();this.logWork=p;try{await p}finally{this.logWork===p&&(this.logWork=null)}}peopleAuthority(){if(this.checkCollection(this.lifetime),!this.collectionSession||this.adoptedEndpoint===null||!this.logRequest)throw Ae("binding");if(!this.peopleMetadata){let e=this.adoptedEndpoint,t=this.collectionSession,i=new bl(Object.freeze({...t,endpoint:e,directOrigins:Object.freeze([]),isCurrent:()=>this.collectionCurrent?.()===!0&&this.adoptedEndpoint===e,connectorBearer:async({signal:s})=>{s.throwIfAborted(),this.checkCollection(this.lifetime);let r=await t.connectorBearer({signal:this.lifetime});return this.checkCollection(this.lifetime),s.throwIfAborted(),r}}),{fetch:this.logRequest,allowLoopbackHttp:this.logLoopback}),o=Object.freeze({collection:i.collection,isCurrent:()=>i.isCurrent(),request:(s,r)=>i.request(s,r)});this.peopleMetadata={authority:i,view:o}}return this.peopleMetadata.view}openTimersPort(e){if(this.checkCollection(this.lifetime),!this.readVerified||!this.logRequest||!this.collectionScope||e.signal.aborted)throw Ae("binding");let{scope:t,generation:i,signal:o}=e,s=this.collectionScope;if(t.account!==s.account||t.installation!==s.installation||t.collection!==s.collection||U(i).every(h=>h===0))throw Ae("binding");let r=this.source.timerConsent,a=r?.call(this.source);if(!a?.approved)return null;let p=a.grants.find(h=>h.collectionId===t.collection);if(!p)return null;let l=globalThis.WorkerGlobalScope;if(typeof l!="function"||!(globalThis instanceof l)||U(p.grantId).every(h=>h===0)||!/^[0-9a-f]{64}$/.test(p.declarationDigest))throw Ae("binding");let c=JSON.stringify(a),d=new MessageChannel,u=()=>{try{return!o.aborted&&e.signal===o&&e.scope===t&&e.generation===i&&this.collectionCurrent?.()===!0&&this.current()&&t.account===s.account&&t.installation===s.installation&&t.collection===s.collection&&this.source.timerConsent===r&&JSON.stringify(r?.call(this.source))===c}catch{return!1}},f=tI(d.port1,{scope:s,generation:i,grantId:p.grantId,cpOrigin:new URL(this.selected.cpOrigin).origin,signal:o,isCurrent:u,fetch:this.logRequest,...this.signIn?{journal:{read:()=>this.signIn.originalTimerChannel(p.grantId),write:h=>this.signIn.retainTimerChannel(p.grantId,h)}}:{},bearer:async()=>{if(!u())throw Ae("fenced");let h=await this.bearerCallback.call(this.source,{signal:this.lifetime});if(!u())throw Ae("fenced");return h}});return this.timerPorts.add(f),Object.freeze({port:d.port2,close:async()=>{await f.close(),d.port2.close(),this.timerPorts.delete(f)}})}serverProblem(){return this.pump?.serverProblem??null}transportHealth(){return this.pump?.transportHealth??null}initialSync(){try{return this.native?Zh(this.native.observations().status):"unavailable"}catch{return"unavailable"}}keyWaitDetail(){try{return this.native?HI(this.native.observations().status):null}catch{return null}}pendingWrites(){try{return this.native?.observations().status.pending??0}catch{return 0}}pushLog(e){try{return this.native?.pushLog(e)===!0}catch{return!1}}openLogPush(e){this.checkCollection(this.lifetime);let t=this.native,i=this.authority,o=this.collectionSession,s=this.logRequest;if(!t||!this.pump||!i||!o||!s)throw Ae("binding");if(!t.supportsLogPush||typeof WebSocket!="function")return null;let r=this.logLoopback,a=i.origin,p=()=>{try{return this.collectionCurrent?.()===!0&&this.current()&&this.authority===i&&i.isCurrent()}catch{return!1}};return new Xh({origin:a,collection:i.collection,deviceId:o.deviceId,isCurrent:p,accessToken:l=>i.accessToken(l),invalidateToken:l=>i.invalidateToken(l),nonce:async({signal:l})=>{let c=await s(`${a}/v1/nonce`,{signal:l,cache:"no-store",credentials:"omit",redirect:"error",referrerPolicy:"no-referrer"}),d=(await c.text()).trim();if(!c.ok||!/^[0-9a-f]{64}$/.test(d))throw Ae("unavailable");return Uint8Array.from(d.match(/../g).map(u=>parseInt(u,16)))},signHello:(l,c)=>p()?t.signLogHello(l,c):null},e,{allowLoopbackHttp:r})}async driveCollection(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw Ae("binding");for(let i=0;i<C2;i++){let o=this.pump.callsSent;if(this.native.tick(),await this.pump.pump(),this.checkCollection(t),this.pump?.callsSent===o)break}}async wakeCollectionLog(e){let t=this.operationSignal(e.signal);if(this.checkCollection(t),!this.native||!this.pump||this.adoptedEndpoint===null)throw Ae("binding");this.native.tick(),(await this.pump.pump()).quiet&&(this.checkCollection(t),this.native.requestLogHead()&&(await this.pump.pump(),this.checkCollection(t),this.native.tick()))}waitForVerifiedRead(e){let{timeoutMs:t=15e3,cold:i=!1}=e,o=this.operationSignal(e.signal);if(this.checkCollection(o),!this.native||!this.collectionScope||this.adoptedEndpoint===null||!Number.isSafeInteger(t)||t<1||t>15e3||typeof i!="boolean"||i&&!this.pump)throw Ae("binding");if(this.readWork)return this.readWork.then(()=>{this.checkCollection(o)});let s=this.verifyRead(o,t,i,e.onProgress);return this.readWork=s,s.finally(()=>{this.readWork===s&&(this.readWork=null)}).catch(()=>{}),s}async verifyRead(e,t,i,o){let s=new AbortController,r=()=>s.abort();this.readAbort=s,e.addEventListener("abort",r,{once:!0});let a=null,p=Ae(i?"sync_stalled":"unavailable"),l,c=new Promise((h,m)=>{l=()=>m(p),s.signal.addEventListener("abort",l,{once:!0})});c.catch(()=>{});let d=null,u=h=>{if(h!==d){d=h;try{o?.(h)}catch{}}},f=()=>{this.checkCollection(e);let h=i?this.pump.terminalProblem:null;if(Pn(h))throw new gn(St(h)??"unavailable",h);let m=this.native.observations();if(m.requiresReopen||m.keyringRebuildFailed)throw Ae("recovery_required");let b=Zh(m.status);return u(b==="installing"?"loading_snapshot":b==="waiting_for_key"?"waiting_for_key":b==="behind"?"replaying":b===null?"verifying_read":"syncing"),m};this.readVerified=!1;try{if(this.pump){let m=()=>{let A=f();return[A.status.confirmedThrough,A.status.installing?.done??0,A.status.installing?.total??0,this.pump.readProgress]},b=m(),w=Date.now(),g=new Map,y=null,v=()=>{try{let A=Date.now(),k=m();k.some((C,E)=>C>b[E])&&(w=A,y=null),b=k.map((C,E)=>Math.max(C,b[E]));let S=this.pump.responseProgress(),x=new Set(S.map(C=>C.id));for(let C of g.keys())x.has(C)||g.delete(C);for(let C of S){let E=g.get(C.id);C.bytes>(E?.bytes??0)&&g.set(C.id,{bytes:C.bytes,at:A})}let P=t-(A-w);P<=0&&(y??=new Set(g.keys()),P=Math.max(0,...[...y].map(C=>{let E=g.get(C);return E?t-(A-E.at):0}))),P<=0?r():a=setTimeout(v,Math.min(250,P))}catch(A){p=A,r()}};a=setTimeout(v,Math.min(250,t))}else a=setTimeout(r,t);this.readClient=await Promise.race([qi.connect({app:{name:"app-local-read-gate",version:"1"},connector:zs(this.native,{collection:this.collectionScope.collection}),reconnect:!1,signal:s.signal}).then(m=>{if(s.signal.aborted)throw m.close(),Ae("unavailable");return m}),c]),this.checkCollection(e);let h=250;for(;!s.signal.aborted;){this.native.tick(),this.pump&&await Promise.race([this.pump.pump(),c]),this.checkCollection(e);let m=f();if(i&&Zh(m.status)!==null){await yp(h,s.signal),h=Math.min(1e3,h*2);continue}try{if(await Promise.race([this.readClient.query({limit:1},void 0,s.signal),c]),this.checkCollection(e),s.signal.aborted)throw Ae("unavailable");this.readVerified=!0;return}catch(b){if(this.checkCollection(e),!(b instanceof se)||b.code!=="unavailable"||!this.pump||s.signal.aborted)throw b}await yp(h,s.signal),h=Math.min(1e3,h*2)}throw Ae("unavailable")}catch(h){throw this.checkCollection(e),s.signal.aborted?p:h}finally{a!==null&&clearTimeout(a),e.removeEventListener("abort",r),s.signal.removeEventListener("abort",l),this.readClient?.close(),this.readClient=null,this.readAbort=null}}onLogWork(e){this.logWorkListener=e}attachDataFacade(e){if(this.checkCollection(this.lifetime),!this.native||!this.collectionScope||!this.readVerified||this.facades.size>=x2||this.facades.has(e))throw Ae("fenced");let t=Object.freeze({...this.collectionScope,isCurrent:()=>{try{return this.checkCollection(this.lifetime),!0}catch{return!1}}}),i=dh(this.native,e,t,()=>this.logWorkListener?.());return this.facades.set(e,i),i.resourceSetup}detachDataFacade(e){let t=this.facades.get(e);t&&(this.facades.delete(e),t.close())}registeredReceipt(){this.check(this.lifetime);let e=this.publicReceipt;if(!e)throw Ae("fenced");return Object.freeze({...e,signPublicKey:new Uint8Array(e.signPublicKey),kemPublicKey:new Uint8Array(e.kemPublicKey),noisePublicKey:new Uint8Array(e.noisePublicKey)})}close(){if(this.closing=!0,this.readVerified=!1,this.readAbort?.abort(),this.closeResult)return this.closeResult;let e=!1;for(let t of[()=>this.readClient?.close(),()=>{for(let i of this.facades.values())i.close();this.facades.clear()},()=>this.peopleMetadata?.authority.close(),()=>this.bootstrap?.close(),()=>this.outcome?.close()])try{t()}catch{e=!0}return this.closeResult??=(async()=>{try{await Promise.all([...this.timerPorts].map(async i=>{try{await i.close()}catch{e=!0}})),this.timerPorts.clear();let t=await this.native?.close();if(this.collectionSql&&t!==!0&&this.collectionSql.fence(),this.authority?.close(),await this.sqlClose?.(),e)throw Ae("unavailable")}finally{this.key=null,this.noise=null,this.originalCustody?.envelope.fill(0),this.originalCustody=null,this.signIn=null,this.publicReceipt=null,this.outcomeStore?.close(),this.noiseStore?.close(),this.keys?.close(),this.provider?.close()}})()}};_x();re();ep();rp();Zo();ro();Mh();ip();np();no();Wn();var I2=new Set(["binding","fenced","busy","open_in_another_tab","account_confirmation_required","recovery_account_mismatch","outcome_unknown","response","refused","expired","recovery_required","unavailable","collection_migrating","collection_not_yet_migrated","account_suspended","update_required"]),O2=new Set(["AbortError","ConstraintError","DataCloneError","InvalidStateError","NotAllowedError","NotFoundError","NotReadableError","OperationError","QuotaExceededError","SecurityError","TimeoutError","TransactionInactiveError","UnknownError","VersionError"]),fo=(n,e,t,i)=>Object.freeze({problem:n,detail:Object.freeze({name:e,code:t,...i?{server:i}:{}})});function cv(n){try{for(let[e,t]of[[Xe,"AppInstallationSignInError"],[uo,"AppCloudCopyHostError"],[tn,"AppCloudCopyBootstrapError"],[rn,"AppCollectionSetupError"],[ii,"AppCollectionControlError"],[po,"AppCollectionJoinError"],[ei,"AppCpAuthorityError"],[gn,"AppHttpLogError"]])if(n instanceof e){let i=n.reason,o=("server"in n?$r(n.server):null)??void 0;return i==="sync_stalled"?fo("unavailable",t,i,o):I2.has(i)?fo(i,t,i,o):fo("open_failed",t,null,o)}if(n instanceof Ke&&n.reason==="busy")return fo("open_in_another_tab","AppReplicaOwnerError","busy");if(n instanceof se){let e=xr(n.code)?n.code:null;return fo(e==="outcome_unknown"?e:"open_failed","MdbaseError",e)}if(typeof DOMException<"u"&&n instanceof DOMException){let e=O2.has(n.name)?n.name:null;return fo("open_failed","DOMException",e)}for(let[e,t]of[[TypeError,"TypeError"],[RangeError,"RangeError"],[SyntaxError,"SyntaxError"],[ReferenceError,"ReferenceError"],[URIError,"URIError"],[EvalError,"EvalError"],[Error,"Error"]])if(n instanceof e)return fo("open_failed",t,null)}catch{}return fo("open_failed","UnknownError",null)}rp();to();no();ge();var R2=5e3,E2=n=>Array.from(U(n),e=>e.toString(16).padStart(2,"0")).join(""),Pi=n=>(U(n),n.toLowerCase());function im(n,e,t=R2){let i;return Promise.race([n.catch(()=>e),new Promise(o=>{i=setTimeout(()=>o(e),t)})]).finally(()=>clearTimeout(i))}function pv(n){return im(new Promise(e=>{let t=indexedDB.deleteDatabase(n);t.onsuccess=()=>e(!0),t.onerror=()=>e(!1)}),!1)}function q2(n){let e=encodeURIComponent(n.cpOrigin),t=`mdbase.app.installation.v1.${e}.${n.appId}`;return[n.owner===void 0?t:`mdbase.app.installation.v2.${e}.${encodeURIComponent(n.owner)}.${n.appId}`,t]}async function T2(n,e,t){let i=new Set(n.isolated?[]:n.databases);!n.isolated&&n.storageNamespace===void 0&&i.add(t);let{accountId:o,connectorId:s,deviceId:r,installationId:a}=n;if(o&&s&&r&&a){let p=[o,s,r,a].map(E2).join(".");i.add(`mdbase.app.device-key-kek.v1.${p}`),i.add(`mdbase.app.device-keys.v1.${p}`),i.add(`mdbase.app.noise.v1.${Pi(a)}.${Pi(s)}.${Pi(r)}`);let l=[o,s,r,a].map(Pi).join("."),c=[`mdbase.app.cloud-copy-outcome.v1.${l}.`,`mdbase.app.private-bootstrap.v1.${l}.`];for(let u of n.collectionIds){let f=Pi(u);for(let h of["create","join"])i.add(`${c[0]}${f}.${h}`);for(let h of["create","enrol"])i.add(`${c[1]}${f}.${h}`)}let d=indexedDB.databases;if(typeof d=="function"){let u=await im(d.call(indexedDB),[]);for(let{name:f}of u)f&&c.some(h=>f.startsWith(h))&&i.add(f)}}return i.delete(e),[...i]}async function M2(n,e){let t=globalThis.navigator?.storage;return typeof t?.getDirectory!="function"?!0:im((async()=>{let i=await t.getDirectory(),o=`.mdbase-app-${Pi(n)}-${Pi(e)}-`,s=[];for await(let a of i.keys())a.startsWith(o)&&s.push(a);let r=!0;for(let a of s)try{await i.removeEntry(a,{recursive:!0})}catch{r=!1}return r})(),!1)}async function YI(n,e){try{if(!globalThis.indexedDB||!n.accountId||!n.connectorId||!n.deviceId||!n.installationId)return!1;let t=Pi(e),i=[n.accountId,n.connectorId,n.deviceId,n.installationId].map(Pi).join("."),o=["create","join"].map(a=>`mdbase.app.cloud-copy-outcome.v1.${i}.${t}.${a}`);o.push(...["create","enrol"].map(a=>`mdbase.app.private-bootstrap.v1.${i}.${t}.${a}`));let s=await Promise.all(o.map(pv)),r=globalThis.navigator?.storage;if(typeof r?.getDirectory=="function"){let a=await r.getDirectory();try{await a.removeEntry(`.mdbase-app-${Pi(n.accountId)}-${Pi(n.installationId)}-${t}`,{recursive:!0})}catch(p){if(!(p instanceof DOMException&&p.name==="NotFoundError"))return!1}}return s.every(Boolean)}catch{return!1}}async function JI(n){if(!globalThis.indexedDB)return Object.freeze({ledger:!1,complete:!1});let[e,t]=q2(n),i=await pv(e),o=null;try{o=await T2(n,e,t)}catch{}let s=o?await Promise.all([...o,...n.isolated||n.storageNamespace!==void 0?[]:[rv]].map(pv)):[!1],r=n.storageNamespace===void 0?!0:await im(WI(n),!1),a=n.accountId&&n.installationId?await M2(n.accountId,n.installationId).catch(()=>!1):!0;return Object.freeze({ledger:i,complete:i&&r&&a&&s.every(Boolean)})}re();var L2=Object.freeze({status:"unselected",problem:null,transport:null,live:null}),_t=n=>new Xe(n),j2=new Set(["collection_not_yet_migrated","collection_migrating","account_suspended","update_required"]),rm=class{lifetime=new AbortController;flowLifetime=new AbortController;options;environment;listeners=new Set;flow=null;host=null;installation=null;installationLease=null;slots=new Map;focus=null;openingSlot=null;abortCollections=()=>{for(let e of this.slots.values())e.lifetime?.abort()};base=Object.freeze({status:"not_started",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null});snapshotValue=this.base;authorizationStartedAt=null;authorizationRetryAt=0;authorizationRateLimit=null;pending=null;polling=null;timer=null;closing=null;foreground=!0;receiptRead=null;foregroundRead=null;attested=!1;acknowledged=!1;consentPending=!1;fileAccess=null;freshApproval=!1;approvalWindow=null;nativePending=null;forgotten=new Set;removedScopes=new Set;onAbort=()=>{this.close().catch(()=>{})};constructor(e){this.options=Object.freeze({...e}),this.environment=Qn({environment:e.environment,appOrigin:e.origin,platform:e.allowNativeLoopbackHttp?"native":void 0,release:e.release}),e.signal.addEventListener("abort",this.onAbort,{once:!0}),this.lifetime.signal.addEventListener("abort",this.abortCollections,{once:!0})}getSnapshot(){return this.snapshotValue}snapshot(){return this.getSnapshot()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}viewFor(e,t={}){return t.bystander&&this.base.status==="authorizing"&&this.consentPending&&e!==null&&this.slots.has(e)?this.compose(e,!0):e===this.focus?this.snapshotValue:this.compose(e)}collectionView(e){return this.slots.get(e)?.view??null}heldCollections(){return[...this.slots.keys()]}compose(e,t=!1){let i=this.base,o=e===null?void 0:this.slots.get(e);if(!o)return i;if(i.status!=="unselected"&&!t)return Object.freeze({...i,selectedCollectionId:o.id,transport:o.view.transport,live:o.view.live});let{problemDetail:s,...r}=i,{problemDetail:a,...p}=o.view;return Object.freeze({...r,...t?{status:"unselected",problem:null,approval:null}:{},...p,selectedCollectionId:o.id,...a?{problemDetail:a}:{}})}connection(e=this.focus){let t=e===null?void 0:this.slots.get(e),i=this.base.status==="unselected"||this.base.status==="authorizing"&&this.consentPending;return!t||this.closing||this.options.signal.aborted||!t.usable||t.lifetime?.signal.aborted||!this.installation?.isCurrent()||!i||!["ready","setup_required"].includes(t.view.status)||!this.sameScope(t.scope,t.leaseScope)||t.scope?.collection!==t.id?null:t.selected?.connection??null}sameScope(e,t){return e!==null&&t!==null&&e.account===t.account&&e.installation===t.installation&&e.collection===t.collection&&e.account===this.installation?.scope.account&&e.installation===this.installation?.scope.installation}directAccess=Jh;checkDirectAccess(e){return this.check(),this.directAccess.check(e)}requestDirectAccess(e){return this.check(),this.directAccess.request(e)}check(){if(this.closing||this.options.signal.aborted||this.lifetime.signal.aborted)throw _t("fenced")}publish(e){this.check(),this.setBase(e),this.changed()}setBase(e){let{problemDetail:t,...i}=this.base,o=e.problem===null?void 0:e.problemDetail??t;this.base=Object.freeze({...i,...e,selectedCollectionId:null,signIn:this.flow?.view()??null,...o?{problemDetail:o}:{}})}publishSlot(e,t){if(this.check(),this.slots.get(e.id)!==e)return;let i=this.base.timing;if(this.authorizationStartedAt!==null&&(t.status==="ready"||t.status==="setup_required")){let p=Math.max(0,performance.now()-this.authorizationStartedAt);i=Object.freeze({firstScreenMs:i?.firstScreenMs??p,readyMs:t.status==="ready"?i?.readyMs??p:i?.readyMs??null})}this.setBase({timing:i});let{problemDetail:o,...s}=e.view,r=t.problem===null?void 0:t.problemDetail??o,a=(t.status??s.status)==="opening"?"openingProgress"in t?t.openingProgress??null:s.openingProgress??null:null;e.view=Object.freeze({...s,...t,openingProgress:a,...r?{problemDetail:r}:{}}),this.changed()}changed(){this.snapshotValue=this.compose(this.focus);for(let e of[...this.listeners])try{e()}catch{}}poll(e){this.pending||(this.operation(e).catch(()=>{}),this.polling=this.pending)}stopPolling(){this.timer!==null&&clearTimeout(this.timer),this.timer=null}operation(e,t=!1){if(this.check(),this.pending)return Promise.reject(_t("busy"));this.foregroundRead=null,this.stopPolling();let o=Promise.resolve().then(()=>(this.check(),e())).catch(async s=>{if(!t&&!this.closing&&!this.options.signal.aborted){let{problem:r,detail:a}=cv(s);if(r==="open_failed")try{console.error("mdbase web sign-in open failed",a.name,a.code)}catch{}let p=this.openingSlot;if(this.openingSlot=null,p&&this.slots.get(p.id)===p){let l=!1;try{l=s instanceof tn&&s.reason==="unavailable"&&s.retryable===!0&&p.view.status==="opening"&&this.base.collections.some(c=>c.collectionId===p.id)&&this.flow?.view().state==="paired"&&this.installation?.isCurrent()===!0}catch{}if(l){try{await this.closeSlot(p),this.check()}catch(c){throw!this.closing&&!this.options.signal.aborted&&this.publishSlot(p,{status:"blocked",problem:"recovery_required",problemDetail:cv(c).detail}),c}this.publishSlot(p,{status:"unselected",problem:r,problemDetail:a})}else this.publishSlot(p,{status:"blocked",problem:r,problemDetail:a})}else this.publish({status:"blocked",problem:r,problemDetail:a})}throw s});return this.pending=o,o.finally(()=>{this.pending===o&&(this.pending=null),this.schedulePoll()})}start(){return this.operation(async()=>{if(this.flow&&this.base.status!=="blocked")return this.getSnapshot();this.publish({status:"starting",problem:null,signOutResult:null});let e=this.options;this.flow??=await Ua.open({...e,mode:e.storeMode??"open",signal:this.flowLifetime.signal,environmentSelection:this.environment}),this.check();let t=this.flow.view();if(t.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!t.nativeSelection)throw _t("recovery_required");await this.openDevice(!1,this.options.recoveryFor!==void 0),this.flow.collectionConsentView()?.state==="pending"?(this.consentPending=!0,this.publish({status:"authorizing"})):await this.refreshCollections()}else this.publish({status:t.state==="pending"?"signed_out":"authorizing"});return this.getSnapshot()})}authorize(e={}){if(this.check(),this.authorizationRateLimit&&Date.now()<this.authorizationRetryAt)return Promise.reject(this.authorizationRateLimit);let t=this.pending!==null&&this.pending===this.polling?this.pending:null;if(!this.flow||this.pending&&!t)return Promise.reject(_t("busy"));let i=this.options.openPortal();return t?t.catch(()=>{}).then(()=>{try{this.check()}catch(s){throw i.close(),s}if(this.pending)throw i.close(),_t("busy");let o=this.base.status;return o!=="authorizing"&&o!=="signed_out"?(i.close(),this.getSnapshot()):this.beginAuthorization(i,e)}):this.beginAuthorization(i,e)}beginAuthorization(e,t){let i={collectionHint:t.collectionHint??null},o=this.flow.view();return this.authorizationStartedAt=performance.now(),this.publish({timing:Object.freeze({firstScreenMs:null,readyMs:null}),approval:null}),this.operation(async()=>{try{if(o.state==="paired"){if(this.flow.pendingNativeSelection?.()&&!o.nativeSelection)throw _t("recovery_required");await this.openDevice(),this.check();let s=await this.flow.startCollectionConsent(this.installation,this.options.requestedCreateCollections??this.options.freshRequestedCreateCollections??!1,i);this.check(),this.consentPending=!0,e.navigate(s.verificationUri)}else{let s=await this.flow.start(i).catch(r=>this.renewFromGesture(r));this.check(),e.navigate(s.verificationUri)}return this.holdApprovalWindow(e),this.publish({status:"authorizing",problem:null}),await this.advance(),this.getSnapshot()}catch(s){throw s instanceof Xe&&s.server?.status===429&&(this.authorizationRateLimit=s,this.authorizationRetryAt=Date.now()+Math.min(Ws,Math.max(Vs,s.server.retryAfterMs??3e4))),e.close(),s}})}requestFileAccess(e,t,i){if(this.check(),!this.flow||this.pending)return Promise.reject(_t("busy"));let o=this.options.openPortal();return this.operation(async()=>{try{if(this.flow.view().state!=="paired"||!this.installation||!this.base.collections.some(r=>r.collectionId===e))throw _t("refused");let s=await this.flow.startFileAccess(this.installation,e,t,i);return this.check(),this.fileAccess=s,o.navigate(s.verificationUri),this.holdApprovalWindow(o),this.publish({fileAccess:Object.freeze({requestId:s.requestId,collectionId:e,actions:s.actions,state:"pending"})}),this.getSnapshot()}catch(s){throw o.close(),s}},!0)}pollFileAccess(e){let t=this.fileAccess;return!t||t.requestId!==e||this.pending||!this.flow||!this.installation?Promise.resolve(this.getSnapshot()):this.operation(async()=>{let i={state:"pending"};try{i=await this.flow.exchangeFileAccess(this.installation,t)}catch{}if(this.check(),this.fileAccess!==t||i.state==="pending"&&Date.now()<t.expiresAt)return this.getSnapshot();this.fileAccess=null,this.closeApprovalWindow();let o=i.state==="granted"?i.actions:null,s=o?Object.freeze(this.base.collections.map(r=>r.collectionId!==t.collectionId?r:Object.freeze({...r,fileActions:Object.freeze([...new Set([...r.fileActions??[],...o])])}))):this.base.collections;return this.publish({collections:s,fileAccess:Object.freeze({requestId:e,collectionId:t.collectionId,actions:o??t.actions,state:i.state==="pending"?"expired":i.state})}),this.getSnapshot()},!0)}async renewFromGesture(e){if(!(e instanceof Xe)||e.reason!=="expired"&&e.reason!=="refused")throw e;try{return await this.flow.renewExpiredPairing()}catch(t){throw t instanceof Xe&&t.reason==="recovery_required"?e:t}}renewExpiredPairing(){return this.operation(async()=>{if(!this.flow)throw _t("binding");return await this.flow.renewExpiredPairing(),this.check(),this.publish({status:"signed_out",problem:null}),this.getSnapshot()})}receiptGeneration(e){try{if(!e.isCurrent())return null;let t=e.view(),i=this.consentPending?e.collectionConsentView():null;return(this.consentPending?i?.state!=="pending":!["pending","awaiting_approval"].includes(t.state))?null:JSON.stringify([t.requestId,t.installationId,t.deviceId,t.accountId,t.state,this.consentPending,i?.requestId,i?.state])}catch{return null}}currentReceipt(e){try{return!this.closing&&!this.lifetime.signal.aborted&&!this.flowLifetime.signal.aborted&&!e.caller.aborted&&this.options.signal===e.caller&&this.flow===e.flow&&this.installation===e.installation&&(e.installation===null||e.installation.isCurrent()===!0)&&this.attested===e.attested&&this.acknowledged===e.acknowledged&&this.receiptGeneration(e.flow)===e.generation}catch{return!1}}async exchangeReceipt(e){let t=this.flow,i=this.pending,o=t?this.receiptGeneration(t):null,s=t&&i&&o!==null?Object.freeze({flow:t,operation:i,generation:o,caller:this.options.signal,installation:this.installation,attested:this.attested,acknowledged:this.acknowledged}):null;this.receiptRead=s;let r=!1;try{let a=await e();return r=a!=null,a}catch(a){if(a instanceof Xe&&a.reason==="outcome_unknown"&&this.flow?.isCurrent())return this.publish({status:"authorizing",problem:"outcome_unknown"}),null;throw a}finally{this.receiptRead===s&&(this.receiptRead=null),this.foregroundRead===s&&(!r||!s||!this.currentReceipt(s))&&(this.foregroundRead=null)}}async advance(){if(this.consentPending){let t;try{t=await this.exchangeReceipt(()=>this.flow.exchangeCollectionConsent(this.installation))}catch(i){if(!(i instanceof Xe)||i.reason!=="refused"&&i.reason!=="expired")throw i;this.check(),this.consentPending=!1,this.closeApprovalWindow(),this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"cancelled"})}),await this.refreshCollections();return}if(this.check(),!t)return;if(t.state==="scope_updated"){if(t.accountSelectionConfirmed!==!0)throw _t("account_confirmation_required");let i=this.flow.pendingNativeSelection?.();if(i?.requestId===t.requestId)await this.finishNativeChoice(i);else if(this.flow.view().collectionSelection?.requestId!==t.requestId)throw _t("response");this.consentPending=!1,this.freshApproval=!0,this.closeApprovalWindow(),await this.refreshCollections()}else await this.prepareNativeChoice(),this.publish({status:"authorizing",problem:null});return}let e=await this.exchangeReceipt(()=>this.flow.exchange());if(this.check(),!!e)if(e.state==="account_selected"&&(e=await this.flow.confirmPortalSelectedAccount(),this.check()),(e.state==="account_confirmed"||e.state==="awaiting_approval")&&(await this.openDevice(),this.check(),this.attested||(await this.host.attestInstallation(),this.check(),this.attested=!0),await this.prepareNativeChoice()),e.state==="paired"){let t=this.flow.pendingNativeSelection?.();if(t?.requestId===e.requestId)await this.finishNativeChoice(t);else if(e.collectionSelection?.requestId!==e.requestId)throw _t("response");this.freshApproval=!0,this.closeApprovalWindow(),await this.openDevice(),this.check(),await this.refreshCollections()}else this.publish({status:"authorizing",problem:null})}async prepareNativeChoice(){let e=this.approvalWindow?.nativeAuthorization;if(!e||!this.installation)return;let t=this.flow.nativeAuthorizationContext(this.installation);if(!t)return;let i=this.nativePending;if(!i){if(i={context:t,port:e,life:new AbortController,prepared:null,failed:!1,attempted:!1},this.nativePending=i,t.authorizationId){i.failed=!0;return}let o=i,s=AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,i.life.signal]);e.prepare(t,s).then(r=>{this.nativePending!==o||s.aborted||(o.prepared=Object.freeze({...r}))},()=>{o.failed=!0})}if(i.context.requestId!==t.requestId||i.context.accountId!==t.accountId||i.context.challenge!==t.challenge)throw _t("fenced");if(i.prepared&&!i.attempted){i.attempted=!0;try{await this.flow.attachNativeAuthorization(this.installation,i.context,i.prepared),this.check()}catch{i.failed=!0}}}async finishNativeChoice(e){let t=this.nativePending;if(!t||!t.prepared||!t.attempted||t.context.requestId!==e.requestId||t.prepared.authorizationId!==e.authorizationRequestId)throw _t("recovery_required");await this.openDevice(),this.check();let i=await t.port.finish(e,AbortSignal.any([this.lifetime.signal,this.flowLifetime.signal,t.life.signal]));if(this.check(),this.nativePending!==t||!this.acknowledged||!this.installation)throw _t("fenced");await this.flow.completeNativeAuthorization(this.installation,i),this.check()}holdApprovalWindow(e){this.approvalWindow!==e&&this.closeApprovalWindow(),this.approvalWindow=e}closeApprovalWindow(){let e=this.approvalWindow;this.approvalWindow=null;let t=this.nativePending;this.nativePending=null,t?.life.abort();try{t?.port.cancel()}catch{}if(e)try{e.close()}catch{}}async openDevice(e=!1,t=!1){if(!this.installation){let i=this.flow.confirmedSelection(),o=Object.freeze({account:i.accountId,installation:i.installationId});this.installationLease=await Xc(this.options.locks,o,this.lifetime.signal),this.check(),this.installation=Object.freeze({scope:o,isCurrent:()=>!this.closing&&!this.options.signal.aborted&&!this.lifetime.signal.aborted&&this.installationLease!==null})}t||!this.host&&!e&&this.acknowledged&&this.flow.view().state==="paired"&&[...this.slots.values()].some(i=>i.host!==null)||(this.host?!this.acknowledged&&this.flow.view().state==="paired"&&(await this.host.completeInstallationSignIn(),this.check(),this.acknowledged=!0):(this.host=await vl.openInstallationDevice({signIn:this.flow,installation:this.installation,release:this.options.release,origin:this.options.origin,signal:this.lifetime.signal,loadRuntime:this.options.loadRuntime,allowLoopbackHttp:this.environment.allowLoopbackHttp,allowNativeLoopbackHttp:this.environment.allowNativeLoopbackHttp}),this.check(),this.acknowledged=this.flow.view().state==="paired"))}async refreshCollections(){let e=await this.flow.listApprovedCollections(this.installation);this.check();for(let o of this.flow.view().collectionIds)e.some(s=>s.collectionId===o)||this.removedScopes.add(o);let t=Object.freeze(e.filter(o=>!this.forgotten.has(o.collectionId)));for(let o of this.slots.values()){if(o.usable&&o.selected&&!t.some(p=>p.collectionId===o.id)){o.usable=!1,o.lifetime?.abort(),await this.closeSlot(o),this.check(),this.deleteSlot(o);continue}let s=o.usable&&o.selected!==null&&t.some(p=>p.collectionId===o.id),{problemDetail:r,...a}=o.view;o.view=Object.freeze({...a,status:s?o.selected.state:"unselected",problem:null})}this.publish({status:"unselected",collections:t,problem:null});let i=this.flow.view().collectionSelection?.selectedCollectionId;(this.options.autoSelect??"only")==="only"&&(this.freshApproval&&i&&t.some(o=>o.collectionId===i)?await this.openSlot(i,!0):t.length===1&&await this.openSlot(t[0].collectionId,!0))}schedulePoll(){if(this.pending&&!this.closing&&!this.options.signal.aborted)return;let e=this.foregroundRead;this.foregroundRead=null;for(let i of this.closing||this.options.signal.aborted?[]:this.slots.values()){let o=this.retryAfterMs(i);o===null||i.timer!==null||i.view.status!=="blocked"||(i.timer=setTimeout(()=>{i.timer=null,!(this.slots.get(i.id)!==i||i.view.status!=="blocked"||i.view.problem!=="collection_migrating"||this.flow?.view().state!=="paired")&&this.operation(()=>this.openSlot(i.id)).catch(()=>{})},o))}if(this.closing||this.options.signal.aborted||this.timer!==null||this.base.status!=="authorizing")return;let t=this.foreground&&e&&this.currentReceipt(e)?e:null;this.timer=setTimeout(()=>{this.timer=null,this.poll(async()=>{t&&(!this.foreground||!this.currentReceipt(t))||await this.advanceApproval()})},t?0:this.foreground?this.base.problem==="outcome_unknown"?5e3:1e3:1e4)}retryAfterMs(e){let t=e.view;if(t.problem!=="collection_migrating")return null;let i=null;try{i=$r(t.problemDetail?.server)?.retryAfterMs??null}catch{i=null}return Math.min(Ws,Math.max(Vs,i??3e4))}setForeground(e){this.check();let t=e&&!this.foreground;this.foreground=e,this.stopPolling(),e?t&&this.receiptRead?.operation===this.pending&&(this.foregroundRead=this.receiptRead):this.foregroundRead=null,e&&this.base.status==="authorizing"&&!this.pending?this.poll(()=>this.advanceApproval()):this.schedulePoll()}approvalWindowClosed(){this.check(),!(this.pending||this.base.status!=="authorizing"||!this.approvalWindowGone())&&(this.stopPolling(),this.poll(()=>this.advanceApproval()))}approvalWindowGone(){let e=this.approvalWindow;try{return e?.closed===!0}catch{return!1}}async advanceApproval(){let e=this.approvalWindowGone()?this.approvalWindow:null;if(await this.advance(),this.check(),!(!e||this.approvalWindow!==e||this.base.status!=="authorizing")&&this.base.problem!=="outcome_unknown"){if(this.closeApprovalWindow(),this.consentPending){this.consentPending=!1,this.publish({status:"unselected",problem:null,approval:Object.freeze({outcome:"closed"})}),await this.refreshCollections();return}this.publish({status:"signed_out",problem:"approval_window_closed",approval:Object.freeze({outcome:"closed"})})}}select(e){return this.operation(async()=>(await this.openSlot(e,!0),this.getSnapshot()))}openCollection(e){return this.operation(async()=>(await this.openSlot(e),this.viewFor(e)))}releaseCollection(e){return this.slots.has(e)?this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t),this.changed()),this.getSnapshot()}):Promise.resolve(this.getSnapshot())}async openSlot(e,t=!1){this.check();let i=this.base.collections.find(d=>d.collectionId===e);if(!i||this.flow?.view().state!=="paired"||!this.installation)throw _t("refused");let o=t?[...this.slots.values()].filter(d=>d.id!==e):[],s=this.slots.get(e);if(s&&s.usable&&s.selected&&!s.lifetime?.signal.aborted&&this.sameScope(s.scope,s.leaseScope)&&s.scope?.collection===e){for(let d of o)d.usable=!1,d.lifetime?.abort();this.focus=e,this.settleBase(),this.publishSlot(s,{status:s.selected.state,problem:null});for(let d of o)await this.closeSlot(d),this.check(),this.deleteSlot(d),this.changed();return}for(let d of o)d.usable=!1,d.lifetime?.abort();let r=s??{id:e,host:null,lease:null,leaseScope:null,selected:null,scope:null,lifetime:null,usable:!1,stopAssessment:null,timer:null,view:L2};r.usable=!1,r.lifetime?.abort(),this.slots.set(e,r),this.focus=e,this.openingSlot=r,this.settleBase(),this.publishSlot(r,{status:"opening",problem:null,openingProgress:null});for(let d of o)await this.closeSlot(d),this.check(),this.deleteSlot(d),this.changed();(r.lease||r.selected||r.host)&&await this.closeSlot(r),this.check(),await this.openDevice(!0),this.check(),r.host=this.host,this.host=null;let a=Object.freeze({...this.installation.scope,collection:e});r.lease=await Jc(this.options.locks,a,this.lifetime.signal),r.leaseScope=a,this.check(),r.lifetime=new AbortController;let p=this.freshApproval&&this.flow.view().collectionSelection?.createdCollectionIds.includes(e)===!0,l=r.lifetime,c=await this.options.openCollection({host:r.host,installation:this.installation,scope:a,collection:i,setupPolicy:p?"approved-new-collection":"explicit",signal:l.signal,onProgress:d=>{this.closing||this.slots.get(r.id)!==r||r.lifetime!==l||l.signal.aborted||r.view.status!=="opening"||r.view.openingProgress!==d&&this.publishSlot(r,{openingProgress:d})}});if(r.selected=c,r.scope=a,this.check(),c.state!=="ready"&&c.state!=="setup_required")throw _t("response");r.usable=!0,this.openingSlot===r&&(this.openingSlot=null),r.stopAssessment=c.subscribe?.(()=>{if(this.closing||this.slots.get(r.id)!==r||!r.usable||r.selected!==c||r.lifetime?.signal.aborted||!this.sameScope(r.scope,r.leaseScope)||r.scope?.collection!==r.id)return;let d=null;try{d=c.ended??null}catch{d=null}if(d){this.accessEnded(r,c,d);return}(c.state==="ready"||c.state==="setup_required")&&this.publishSlot(r,{status:c.state,...this.liveProblem(r,c)})})??null,this.publishSlot(r,{status:c.state,transport:null,live:null,openingProgress:null})}settleBase(){(this.base.status==="blocked"||this.base.status==="unselected")&&this.setBase({status:"unselected",problem:null})}deleteSlot(e){e.timer!==null&&clearTimeout(e.timer),e.timer=null,this.slots.get(e.id)===e&&this.slots.delete(e.id),this.focus===e.id&&(this.focus=null),this.openingSlot===e&&(this.openingSlot=null)}accessEnded(e,t,i){if(e.selected!==t||!e.usable)return;let o=i==="gone"?"collection_deleted":i==="revoked"?"unauthenticated":"access_removed";i!=="gone"&&this.removedScopes.add(e.id),e.usable=!1,this.publishSlot(e,{status:"blocked",problem:o,transport:null,live:null});let s=()=>{if(!(this.closing||this.options.signal.aborted||e.selected!==t||this.slots.get(e.id)!==e)){if(this.pending){this.pending.catch(()=>{}).then(s);return}this.operation(async()=>{if(await this.closeSlot(e),this.publishSlot(e,{status:"blocked",problem:o}),!(!this.flow||!this.installation||this.flow.view().state!=="paired"))try{let r=await this.flow.listApprovedCollections(this.installation);this.check(),this.publish({collections:Object.freeze(r.filter(a=>!this.forgotten.has(a.collectionId)))})}catch{}}).catch(()=>{})}};s()}liveProblem(e,t){let i=null;try{i=t.problem??null}catch{i=null}let o=null;try{o=t.health??null}catch{o=null}let s=o?Object.freeze({...o}):null,r=null;try{let p=t.live;r=typeof p=="boolean"?p:null}catch{r=null}let a=Pn(i)?St(i):null;return a&&i?{problem:a,problemDetail:Object.freeze({name:"AppHttpLogError",code:a,server:i}),transport:s,live:r}:{...j2.has(e.view.problem??"")?{problem:null}:{},transport:s,live:r}}async closeSlot(e){e.usable=!1,e.timer!==null&&clearTimeout(e.timer),e.timer=null;let t=e.stopAssessment;e.stopAssessment=null;try{t?.()}catch{}e.lifetime?.abort(),await e.selected?.close(),e.selected=null,e.scope=null,e.lifetime=null,await e.host?.close(),e.host=null,await e.lease?.release(),e.lease=null,e.leaseScope=null}async closeSlots(){for(let t of[...this.slots.values()])await this.closeSlot(t),this.deleteSlot(t);let e=this.host;this.host=null,await e?.close()}clearSelection(){return this.operation(async()=>(await this.closeSlots(),this.focus=null,this.publish({status:"unselected",problem:null}),this.getSnapshot()))}refreshCollectionList(){return this.pending||!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||this.base.status!=="unselected"?Promise.resolve(this.getSnapshot()):this.operation(async()=>(await this.refreshCollections(),this.getSnapshot()),!0)}scopeWasRemoved(e){return this.removedScopes.has(e)}removedScopeIds(){return Object.freeze([...this.removedScopes])}canAbandonWrongAccount(){return!this.closing&&!this.options.signal.aborted&&this.pending===null&&this.flow?.canAbandonWrongAccount()===!0&&this.installation===null&&this.host===null&&this.slots.size===0&&!this.attested&&!this.acknowledged}scopeRecoveryContext(){if(!this.flow||!this.installation||this.flow.view().state!=="paired")return null;let e=this.flow.view();return Object.freeze({accountId:this.installation.scope.account,accountLabel:e.accountEmail??(e.accountLogin?`@${e.accountLogin}`:null),references:this.flow.collectionRecoveries()})}prepareScopedRecovery(e,t){return this.check(),this.pending?this.pending.catch(()=>{}).then(()=>this.prepareScopedRecovery(e,t)):this.operation(async()=>{if(!this.flow||!this.installation||this.consentPending||this.flow.view().state!=="paired"||!this.flow.view().collectionIds.includes(e))throw _t("binding");let i=this.flow.collectionRecoveries(),o=this.slots.get(e);if(t===void 0&&!Object.hasOwn(i,e)&&!this.scopeWasRemoved(e))throw _t("binding");o&&(await this.closeSlot(o),this.check(),this.deleteSlot(o)),await this.flow.retireCollectionScope(this.installation,e,t??null),this.check();let s=this.flow.confirmedSelection(),r=this.options;if(!await YI({cpOrigin:r.cpOrigin,appId:r.appId,accountId:s.accountId,connectorId:s.connectorId,installationId:s.installationId,deviceId:s.deviceId,collectionIds:[e],databases:[]},e))throw _t("recovery_required");this.check();let a=await this.flow.freshCollectionInstallation(this.installation,e);return this.check(),Object.freeze({accountId:s.accountId,reference:a})},!0)}forget(e){return this.operation(async()=>{let t=this.slots.get(e);return t&&(await this.closeSlot(t),this.check(),this.deleteSlot(t)),this.forgotten.add(e),this.publish({collections:Object.freeze(this.base.collections.filter(i=>i.collectionId!==e))}),this.getSnapshot()})}deleteCollection(e,t){let i=null;return this.operation(async()=>{let o=this.base.collections.find(s=>s.collectionId===e);if(!this.flow||!this.installation||!o)i=new _i("collection_delete_not_found");else if(o.role!=="owner")i=new _i("collection_delete_not_owner");else{try{await this.flow.deleteApprovedCollection(this.installation,e,t)}catch(s){i=vx(s)}this.check()}return this.getSnapshot()}).then(o=>{if(i)throw i;return o})}signOut(){this.check();let e=this.pending!==null&&this.pending===this.polling?this.pending:null;return Promise.resolve(e?.catch(()=>{})).then(()=>this.operation(async()=>{let t=this.flow,i=null,o=null,s=!1;try{i=t?.view()??null}catch{i=null}try{o=t?.confirmedSelection().connectorId??null}catch{o=null}try{s=t?.hasWebPushChannel()===!0}catch{s=!1}let r=[...new Set([...i?.collectionIds??[],...this.base.collections.map(c=>c.collectionId)])];this.closeApprovalWindow(),this.fileAccess=null,this.consentPending=!1;try{await this.closeSlots()}catch(c){throw this.failSignOut(),c}this.check();let a="not_paired";if(t&&i?.state==="paired"){try{a=await t.signOutInstallation()}catch{a="incomplete"}this.check()}this.flow=null,this.installation=null;try{await t?.close()}catch{}this.flowLifetime.abort(),this.flowLifetime=new AbortController,await this.installationLease?.release(),this.installationLease=null,this.attested=!1,this.acknowledged=!1,this.freshApproval=!1,this.authorizationStartedAt=null,this.receiptRead=null,this.foregroundRead=null,this.forgotten.clear(),this.removedScopes.clear();let p=this.options,l=await JI({cpOrigin:p.cpOrigin,appId:p.appId,...p.owner===void 0?{}:{owner:p.owner},...p.storageNamespace===void 0?{}:{storageNamespace:p.storageNamespace},accountId:i?.accountId??null,connectorId:o,installationId:i?.installationId??null,deviceId:i?.deviceId??null,collectionIds:r,databases:p.localDatabases??[],...p.recoveryFor?{isolated:!0}:{}});if(this.check(),!l.ledger)throw this.failSignOut(),_("unavailable","This device couldn't remove its sign-in data.","sign_out_failed");return this.emit(Object.freeze({status:"signed_out",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:null,signOutResult:Object.freeze({server:a,local:l.complete?"erased":"incomplete",webPush:s})})),this.getSnapshot()},!0))}failSignOut(){if(this.closing||this.options.signal.aborted)return;let e=null;try{e=this.flow?.view()??null}catch{e=null}let{problemDetail:t,...i}=this.base;this.focus=null,this.emit(Object.freeze({...i,status:"blocked",signIn:e,selectedCollectionId:null,problem:"sign_out_failed"}))}emit(e){if(this.check(),this.base=e,e.status==="signed_out"){for(let t of[...this.slots.values()])this.deleteSlot(t);this.focus=null}this.changed()}close(){if(this.closing)return this.closing;let e=this.pending;return this.foregroundRead=null,this.stopPolling(),this.options.signal.removeEventListener("abort",this.onAbort),this.closing=Promise.resolve().then(async()=>{await e?.catch(()=>{}),await this.closeSlots(),this.focus=null,await this.flow?.close(),this.flowLifetime.abort(),this.flow=null,this.installation=null,await this.installationLease?.release(),this.installationLease=null,this.base=Object.freeze({status:"closed",signIn:null,collections:Object.freeze([]),selectedCollectionId:null,problem:null,timing:this.base.timing}),this.snapshotValue=this.base;for(let t of[...this.listeners])try{t()}catch{}this.listeners.clear()}),this.lifetime.abort(),this.closing}};return rO(N2);})();