@malloydata/render 0.0.164 → 0.0.165-dev240813190247

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.
@@ -1294,7 +1294,7 @@ ${JSON.stringify(r,null,2)}`)}logger(){var e;return(e=this.translator())===null|
1294
1294
  ${r} ${s}: [`,o.length>0&&(i+=`
1295
1295
  `+o.map(u=>u.stringify("",n+4)).join(`
1296
1296
  `)+`
1297
- ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Vu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(e)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Vu;class aEe extends Vu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=aEe;class B4 extends Vu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ve.ModelEntryReference=B4;class lEe extends Vu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=lEe;function hz(t){return t.execute!==void 0}Ve.isDocStatement=hz;function cEe(t){return t instanceof C1||hz(t)}Ve.isDocStatementOrDocStatementList=cEe;class pz extends Vu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ve.ListOf=pz;class C1 extends pz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=dz.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,dz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof C1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ve.DocStatementList=C1;const fEe="5a79a191-06bc-43cf-9b12-58741cd82970";function gz(t){const e=t.inherits?gz(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function xEe(t){const e=gz(t).join("");return(0,uEe.v5)(e,fEe)}class k4 extends Vu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new oEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new sEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new C1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if(i.type==="struct"||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=xEe(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if(r.type==="struct"||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`,declaredSQLBlock:!0};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,rEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=k4;var Q_={},Jh={},Xr={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.canMakeEntry=F0.SpaceEntry=void 0;class dEe{}F0.SpaceEntry=dEe;function hEe(t){return"makeEntry"in t}F0.canMakeEntry=hEe,Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.SpaceField=void 0;const pEe=Z,gEe=F0;class mEe extends gEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,pEe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Xr.SpaceField=mEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const yEe=Xr;class EEe extends yEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=EEe,Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ASTViewField=void 0;const AEe=Jh;class SEe extends AEe.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}Q_.ASTViewField=SEe,Object.defineProperty(E1,"__esModule",{value:!0}),E1.ViewFieldDeclaration=void 0;const vEe=Ve,_Ee=Yr,CEe=Yh,bEe=Q_;class TEe extends vEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=_Ee.extendNoteMethod}makeEntry(e){const n=new bEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,CEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}E1.ViewFieldDeclaration=TEe;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var mz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(mz||(Rn.QueryClass=mz={}));var yz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(yz||(Rn.LegalRefinementStage=yz={})),Object.defineProperty(y1,"__esModule",{value:!0}),y1.NestFieldDeclaration=void 0;const REe=Yh,OEe=E1,Ez=Rn;class NEe extends OEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Ez.LegalRefinementStage.Single,this.forceQueryClass=Ez.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,REe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}y1.NestFieldDeclaration=NEe;var Zh={},Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.ErrorFactory=void 0;const Az={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class P4{static get structDef(){return{...Az}}static isErrorStructDef(e){return e.name.includes(Az.name)}static get query(){return{structRef:P4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Kr.ErrorFactory=P4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const DEe=Kr,Sz=Ve,FEe=Yr;class wEe extends Sz.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=FEe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),DEe.ErrorFactory.isErrorStructDef(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.log(`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Zh.DefineSource=wEe;class LEe extends Sz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=LEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const vz=Ve,IEe=Yr;class $Ee extends vz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=IEe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}ep.DefineQuery=$Ee;class BEe extends vz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=BEe;var zo={};Object.defineProperty(zo,"__esModule",{value:!0}),zo.Source=void 0;const kEe=Ve;class PEe extends kEe.MalloyElement{structRef(e){return{structRef:this.structDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.structDef(e),parameters:this.packParameters(n)}}}zo.Source=PEe;var b1={},tp={},G_={},w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.mergeFields=w0.nameFromDef=void 0;function M4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}w0.nameFromDef=M4;function MEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>M4(i))),r=t.filter(i=>!n.has(M4(i)));return r.push(...e),r}w0.mergeFields=MEe;var T1={},Jr={},Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.DefinedParameter=Yu.AbstractParameter=Yu.SpaceParam=void 0;const jEe=F0;class j4 extends jEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Yu.SpaceParam=j4;class UEe extends j4{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}Yu.AbstractParameter=UEe;class qEe extends j4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Yu.DefinedParameter=qEe;var lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.StructSpaceFieldBase=void 0;const HEe=Xr;class zEe extends HEe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}lx.StructSpaceFieldBase=zEe;var R1={};Object.defineProperty(R1,"__esModule",{value:!0}),R1.ColumnSpaceField=void 0;const QEe=Xr;class GEe extends QEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}R1.ColumnSpaceField=GEe;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.IRViewField=void 0;const WEe=Jh;class VEe extends WEe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}W_.IRViewField=VEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const YEe=Ou,XEe=Z,KEe=Yu,JEe=Xr,V_=lx,ZEe=R1,e3e=W_;class _z{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,YEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new Cz(e):(0,XEe.isTurtleDef)(e)?new e3e.IRViewField(this,e):new ZEe.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new KEe.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof JEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof V_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof V_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof V_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}Jr.StaticSpace=_z;class Cz extends V_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new _z(this.sourceDef)}}Jr.StructSpaceField=Cz,Object.defineProperty(T1,"__esModule",{value:!0}),T1.JoinSpaceField=void 0;const t3e=Jr;class n3e extends t3e.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}T1.JoinSpaceField=n3e;var O1={};Object.defineProperty(O1,"__esModule",{value:!0}),O1.SpaceSeed=void 0;const r3e=Jr;function bz(t){return t.type==="fieldSpace"}class i3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return bz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return bz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new r3e.StaticSpace(this.spaceSpec)),this.asFS)}}O1.SpaceSeed=i3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const s3e=Yu;class o3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new s3e.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}np.ParameterSpace=o3e,Object.defineProperty(G_,"__esModule",{value:!0}),G_.DynamicSpace=void 0;const u3e=w0,a3e=Kr,l3e=Xr,c3e=T1,f3e=Jh,Tz=Yu,x3e=O1,d3e=Jr,h3e=lx,p3e=np;class g3e extends d3e.StaticSpace{constructor(e){const n=new x3e.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new Tz.AbstractParameter(n)));return this}parameterSpace(){return new p3e.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,u3e.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof Tz.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof h3e.StructSpaceFieldBase?r.push([a,l]):l instanceof f3e.ViewField?i.push([a,l]):l instanceof l3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof c3e.JoinSpaceField){const l=a.join.structDef(u);a3e.ErrorFactory.isErrorStructDef(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}G_.DynamicSpace=g3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const m3e=G_,y3e=F0;class U4 extends m3e.DynamicSpace{static filteredFrom(e,n,r){const i=new U4(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,y3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=U4;var L0={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.DefinitionList=void 0;const E3e=Ve,Rz=Yr;class A3e extends E3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Rz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Rz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ds.DefinitionList=A3e,Object.defineProperty(L0,"__esModule",{value:!0}),L0.DeclareFields=void 0;const S3e=Ds,v3e=Rn;class _3e extends S3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=v3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}L0.DeclareFields=_3e;var Qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const C3e=Z;function Oz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function b3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...Oz(t),o,...Oz(n)]}an.compose=b3e;function T3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=T3e;function R3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,C3e.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}an.nullsafeNot=R3e,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.Filter=Qo.FilterElement=void 0;const Nz=Z,O3e=an,Dz=Ve,q4=Rn;class N3e extends Dz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,O3e.compressExpr)(n.value),expressionType:n.expressionType}}}Qo.FilterElement=N3e;let D3e=class extends Dz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=q4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?q4.LegalRefinementStage.Tail:q4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,Nz.expressionIsAggregate)(i.expressionType),o=(0,Nz.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};Qo.Filter=D3e;var rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.Joins=rs.ExpressionJoin=rs.KeyJoin=rs.Join=void 0;const F3e=Z,w3e=an,L3e=T1,I3e=Ds,$3e=Ve,B3e=Yr,k3e=Rn,Fz=Kr;class H4 extends $3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=B3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new L3e.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),Fz.ErrorFactory.structDef)}}rs.Join=H4;class P3e extends H4{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}rs.KeyJoin=P3e;class M3e extends H4{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,F3e.isJoinOn)(i)&&(i.onExpression=(0,w3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Fz.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}rs.ExpressionJoin=M3e;class j3e extends I3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=k3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}rs.Joins=j3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const U3e=Ve;class q3e extends U3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=q3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const H3e=Ve;class z3e extends H3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=z3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const Q3e=Ds;class G3e extends Q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=G3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const W3e=Ve;class V3e extends W3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}op.TimezoneStatement=V3e;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.ModelAnnotation=I0.ObjectAnnotation=void 0;const Y3e=dl,X3e=Ve;class wz extends X3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}I0.ObjectAnnotation=wz;class K3e extends wz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Y3e.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}I0.ModelAnnotation=K3e;var $0={},Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.RenameSpaceField=void 0;const J3e=Xr;class Z3e extends J3e.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}Y_.RenameSpaceField=Z3e,Object.defineProperty($0,"__esModule",{value:!0}),$0.Renames=$0.RenameField=void 0;const eAe=Y_,Lz=Ve,tAe=Xr;class nAe extends Lz.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof tAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new eAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}$0.RenameField=nAe;class rAe extends Lz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}$0.Renames=rAe,Object.defineProperty(b1,"__esModule",{value:!0}),b1.RefinedSource=void 0;const iAe=Z,sAe=tp,oAe=L0,uAe=Qo,aAe=rs,lAe=rp,cAe=ip,fAe=sp,xAe=zo,dAe=op,hAe=I0,pAe=$0,gAe=np;class mAe extends xAe.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof hAe.ObjectAnnotation)continue;const g=m;m instanceof cAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof lAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof oAe.DeclareFields||m instanceof aAe.Joins||m instanceof fAe.Views||m instanceof pAe.Renames?o.push(...m.list):m instanceof uAe.Filter?u.push(m):m instanceof dAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new gAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=sAe.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,iAe.expressionIsCalculation)(y.expressionType)?g.log("Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}b1.RefinedSource=mAe;var Xu={};Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.SourceQueryElement=void 0;const yAe=Ve;class z4 extends yAe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof z4&&n.errored){e=!1;break}return e}}Xu.SourceQueryElement=z4;var X_={},cx={};Object.defineProperty(cx,"__esModule",{value:!0}),cx.QuerySource=void 0;const EAe=zo;class AAe extends EAe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}cx.QuerySource=AAe;var up={},N1={};Object.defineProperty(N1,"__esModule",{value:!0}),N1.QueryBase=void 0;const SAe=Yh,vAe=Ve;class _Ae extends vAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,SAe.detectAndRemovePartialStages)(e.pipeline,this)}}}N1.QueryBase=_Ae,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const CAe=Z,bAe=zo,Iz=Jr,TAe=N1;class RAe extends TAe.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof bAe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,CAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Iz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Iz.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}up.QueryArrow=RAe,Object.defineProperty(X_,"__esModule",{value:!0}),X_.SQArrow=void 0;const OAe=Xu,NAe=cx,DAe=up;class FAe extends OAe.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("Could not get LHS of arrow operation");return}const n=new DAe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new NAe.QuerySource(e);return this.has({asSource:n}),n}}X_.SQArrow=FAe;var K_={},ap={},Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.getStructFieldDef=Fs.getFinalStruct=Fs.opOutputStruct=void 0;const wAe=p0,LAe=bf,Q4=Z,$z=Kr;function Bz(t,e,n){const r=$z.ErrorFactory.isErrorStructDef(e)||(0,Q4.structHasErrors)(e);(0,Q4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Q4.segmentHasErrors)(n);if(!r&&!i)try{return LAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1297
+ ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Vu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(e)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ve.MalloyElement=Vu;class aEe extends Vu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=aEe;class B4 extends Vu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ve.ModelEntryReference=B4;class lEe extends Vu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=lEe;function hz(t){return t.execute!==void 0}Ve.isDocStatement=hz;function cEe(t){return t instanceof C1||hz(t)}Ve.isDocStatementOrDocStatementList=cEe;class pz extends Vu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ve.ListOf=pz;class C1 extends pz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=dz.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,dz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof C1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ve.DocStatementList=C1;const fEe="5a79a191-06bc-43cf-9b12-58741cd82970";function gz(t){const e=t.inherits?gz(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function xEe(t){const e=gz(t).join("");return(0,uEe.v5)(e,fEe)}class k4 extends Vu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new oEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new sEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new C1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if(i.type==="struct"||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=xEe(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if(r.type==="struct"||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`,declaredSQLBlock:!0};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,rEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=k4;var Q_={},Jh={},Xr={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.canMakeEntry=F0.SpaceEntry=void 0;class dEe{}F0.SpaceEntry=dEe;function hEe(t){return"makeEntry"in t}F0.canMakeEntry=hEe,Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.SpaceField=void 0;const pEe=Z,gEe=F0;class mEe extends gEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,pEe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Xr.SpaceField=mEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const yEe=Xr;class EEe extends yEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=EEe,Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.ASTViewField=void 0;const AEe=Jh;class SEe extends AEe.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}Q_.ASTViewField=SEe,Object.defineProperty(E1,"__esModule",{value:!0}),E1.ViewFieldDeclaration=void 0;const vEe=Ve,_Ee=Yr,CEe=Yh,bEe=Q_;class TEe extends vEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=_Ee.extendNoteMethod}makeEntry(e){const n=new bEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,CEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}E1.ViewFieldDeclaration=TEe;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var mz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(mz||(Rn.QueryClass=mz={}));var yz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(yz||(Rn.LegalRefinementStage=yz={})),Object.defineProperty(y1,"__esModule",{value:!0}),y1.NestFieldDeclaration=void 0;const REe=Yh,OEe=E1,Ez=Rn;class NEe extends OEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Ez.LegalRefinementStage.Single,this.forceQueryClass=Ez.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,REe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}y1.NestFieldDeclaration=NEe;var Zh={},Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.ErrorFactory=void 0;const Az={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class P4{static get structDef(){return{...Az}}static isErrorStructDef(e){return e.name.includes(Az.name)}static get query(){return{structRef:P4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Kr.ErrorFactory=P4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const DEe=Kr,Sz=Ve,FEe=Yr;class wEe extends Sz.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=FEe.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),DEe.ErrorFactory.isErrorStructDef(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.log(`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Zh.DefineSource=wEe;class LEe extends Sz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=LEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const vz=Ve,IEe=Yr;class $Ee extends vz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=IEe.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}ep.DefineQuery=$Ee;class BEe extends vz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=BEe;var zo={};Object.defineProperty(zo,"__esModule",{value:!0}),zo.Source=void 0;const kEe=Ve;class PEe extends kEe.MalloyElement{structRef(e){return{structRef:this.structDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.structDef(e),parameters:this.packParameters(n)}}}zo.Source=PEe;var b1={},tp={},G_={},w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.mergeFields=w0.nameFromDef=void 0;function M4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}w0.nameFromDef=M4;function MEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>M4(i))),r=t.filter(i=>!n.has(M4(i)));return r.push(...e),r}w0.mergeFields=MEe;var T1={},Jr={},Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.DefinedParameter=Yu.AbstractParameter=Yu.SpaceParam=void 0;const jEe=F0;class j4 extends jEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Yu.SpaceParam=j4;class UEe extends j4{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}Yu.AbstractParameter=UEe;class qEe extends j4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Yu.DefinedParameter=qEe;var lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.StructSpaceFieldBase=void 0;const HEe=Xr;class zEe extends HEe.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}lx.StructSpaceFieldBase=zEe;var R1={};Object.defineProperty(R1,"__esModule",{value:!0}),R1.ColumnSpaceField=void 0;const QEe=Xr;class GEe extends QEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}R1.ColumnSpaceField=GEe;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.IRViewField=void 0;const WEe=Jh;class VEe extends WEe.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}W_.IRViewField=VEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const YEe=Ou,XEe=Z,KEe=Yu,JEe=Xr,V_=lx,ZEe=R1,e3e=W_;class _z{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,YEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new Cz(e):(0,XEe.isTurtleDef)(e)?new e3e.IRViewField(this,e):new ZEe.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new KEe.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof JEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof V_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof V_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof V_.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}Jr.StaticSpace=_z;class Cz extends V_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new _z(this.sourceDef)}}Jr.StructSpaceField=Cz,Object.defineProperty(T1,"__esModule",{value:!0}),T1.JoinSpaceField=void 0;const t3e=Jr;class n3e extends t3e.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}T1.JoinSpaceField=n3e;var O1={};Object.defineProperty(O1,"__esModule",{value:!0}),O1.SpaceSeed=void 0;const r3e=Jr;function bz(t){return t.type==="fieldSpace"}class i3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return bz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return bz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new r3e.StaticSpace(this.spaceSpec)),this.asFS)}}O1.SpaceSeed=i3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const s3e=Yu;class o3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new s3e.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}np.ParameterSpace=o3e,Object.defineProperty(G_,"__esModule",{value:!0}),G_.DynamicSpace=void 0;const u3e=w0,a3e=Kr,l3e=Xr,c3e=T1,f3e=Jh,Tz=Yu,x3e=O1,d3e=Jr,h3e=lx,p3e=np;class g3e extends d3e.StaticSpace{constructor(e){const n=new x3e.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new Tz.AbstractParameter(n)));return this}parameterSpace(){return new p3e.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,u3e.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof Tz.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof h3e.StructSpaceFieldBase?r.push([a,l]):l instanceof f3e.ViewField?i.push([a,l]):l instanceof l3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof c3e.JoinSpaceField){const l=a.join.structDef(u);a3e.ErrorFactory.isErrorStructDef(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}G_.DynamicSpace=g3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const m3e=G_,y3e=F0;class U4 extends m3e.DynamicSpace{static filteredFrom(e,n,r){const i=new U4(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,y3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=U4;var L0={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.DefinitionList=void 0;const E3e=Ve,Rz=Yr;class A3e extends E3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Rz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Rz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ds.DefinitionList=A3e,Object.defineProperty(L0,"__esModule",{value:!0}),L0.DeclareFields=void 0;const S3e=Ds,v3e=Rn;class _3e extends S3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=v3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}L0.DeclareFields=_3e;var Qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const C3e=Z;function Oz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function b3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...Oz(t),o,...Oz(n)]}an.compose=b3e;function T3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=T3e;function R3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,C3e.mkExpr)`NOT(COALESCE(${t}, FALSE))`:t}an.nullsafeNot=R3e,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.Filter=Qo.FilterElement=void 0;const Nz=Z,O3e=an,Dz=Ve,q4=Rn;class N3e extends Dz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,O3e.compressExpr)(n.value),expressionType:n.expressionType}}}Qo.FilterElement=N3e;let D3e=class extends Dz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=q4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?q4.LegalRefinementStage.Tail:q4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,Nz.expressionIsAggregate)(i.expressionType),o=(0,Nz.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};Qo.Filter=D3e;var rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.Joins=rs.ExpressionJoin=rs.KeyJoin=rs.Join=void 0;const F3e=Z,w3e=an,L3e=T1,I3e=Ds,$3e=Ve,B3e=Yr,k3e=Rn,Fz=Kr;class H4 extends $3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=B3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new L3e.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),Fz.ErrorFactory.structDef)}}rs.Join=H4;class P3e extends H4{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:["('join fixup'='not done yet')"]},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...r.value]};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}rs.KeyJoin=P3e;class M3e extends H4{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,F3e.isJoinOn)(i)&&(i.onExpression=(0,w3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Fz.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}rs.ExpressionJoin=M3e;class j3e extends I3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=k3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}rs.Joins=j3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const U3e=Ve;class q3e extends U3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=q3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const H3e=Ve;class z3e extends H3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=z3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const Q3e=Ds;class G3e extends Q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=G3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const W3e=Ve;class V3e extends W3e.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}op.TimezoneStatement=V3e;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.ModelAnnotation=I0.ObjectAnnotation=void 0;const Y3e=dl,X3e=Ve;class wz extends X3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}I0.ObjectAnnotation=wz;class K3e extends wz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Y3e.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}I0.ModelAnnotation=K3e;var $0={},Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.RenameSpaceField=void 0;const J3e=Xr;class Z3e extends J3e.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}Y_.RenameSpaceField=Z3e,Object.defineProperty($0,"__esModule",{value:!0}),$0.Renames=$0.RenameField=void 0;const eAe=Y_,Lz=Ve,tAe=Xr;class nAe extends Lz.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof tAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new eAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}$0.RenameField=nAe;class rAe extends Lz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}$0.Renames=rAe,Object.defineProperty(b1,"__esModule",{value:!0}),b1.RefinedSource=void 0;const iAe=Z,sAe=tp,oAe=L0,uAe=Qo,aAe=rs,lAe=rp,cAe=ip,fAe=sp,xAe=zo,dAe=op,hAe=I0,pAe=$0,gAe=np;class mAe extends xAe.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof hAe.ObjectAnnotation)continue;const g=m;m instanceof cAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof lAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof oAe.DeclareFields||m instanceof aAe.Joins||m instanceof fAe.Views||m instanceof pAe.Renames?o.push(...m.list):m instanceof uAe.Filter?u.push(m):m instanceof dAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new gAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=sAe.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterExpression(f);(0,iAe.expressionIsCalculation)(y.expressionType)?g.log("Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}b1.RefinedSource=mAe;var Xu={};Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.SourceQueryElement=void 0;const yAe=Ve;class z4 extends yAe.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof z4&&n.errored){e=!1;break}return e}}Xu.SourceQueryElement=z4;var X_={},cx={};Object.defineProperty(cx,"__esModule",{value:!0}),cx.QuerySource=void 0;const EAe=zo;class AAe extends EAe.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}cx.QuerySource=AAe;var up={},N1={};Object.defineProperty(N1,"__esModule",{value:!0}),N1.QueryBase=void 0;const SAe=Yh,vAe=Ve;class _Ae extends vAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,SAe.detectAndRemovePartialStages)(e.pipeline,this)}}}N1.QueryBase=_Ae,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const CAe=Z,bAe=zo,Iz=Jr,TAe=N1;class RAe extends TAe.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof bAe.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,CAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Iz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Iz.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}up.QueryArrow=RAe,Object.defineProperty(X_,"__esModule",{value:!0}),X_.SQArrow=void 0;const OAe=Xu,NAe=cx,DAe=up;class FAe extends OAe.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("Could not get LHS of arrow operation");return}const n=new DAe.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new NAe.QuerySource(e);return this.has({asSource:n}),n}}X_.SQArrow=FAe;var K_={},ap={},Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.getStructFieldDef=Fs.getFinalStruct=Fs.opOutputStruct=void 0;const wAe=p0,LAe=bf,Q4=Z,$z=Kr;function Bz(t,e,n){const r=$z.ErrorFactory.isErrorStructDef(e)||(0,Q4.structHasErrors)(e);(0,Q4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Q4.segmentHasErrors)(n);if(!r&&!i)try{return LAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1298
1298
  QUERY: ${(0,wAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...$z.ErrorFactory.structDef,dialect:e.dialect}}Fs.opOutputStruct=Bz;function IAe(t,e,n){for(const r of n)e=Bz(t,e,r);return e}Fs.getFinalStruct=IAe;function $Ae(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Fs.getStructFieldDef=$Ae,Object.defineProperty(ap,"__esModule",{value:!0}),ap.QueryRefine=void 0;const BAe=Jr,kAe=Fs,PAe=N1;class MAe extends PAe.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new BAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,kAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}ap.QueryRefine=MAe;var D1={},lp={},On={};Object.defineProperty(On,"__esModule",{value:!0}),On.dateOffset=On.timestampOffset=On.timeResult=On.resolution=On.castDateToTimestamp=On.castTimestampToDate=On.castTo=On.timeOffset=void 0;const jAe=Z,kz=an;function UAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}On.timeOffset=UAe;function qAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,jAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}On.castTo=qAe;function HAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}On.castTimestampToDate=HAe;function zAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}On.castDateToTimestamp=zAe;function QAe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}On.resolution=QAe;function GAe(t,e){return e?{...t,timeframe:e}:t}On.timeResult=GAe;function WAe(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,kz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}On.timestampOffset=WAe;function VAe(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,kz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}On.dateOffset=VAe;var fx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function YAe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=YAe;var dt={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.FT=void 0;const XAe=Nu;function xx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class wr{static in(e,n){return e?n.find(i=>wr.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>wr.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,XAe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}ln.FT=wr,wr.nullT=xx("null"),wr.numberT=xx("number"),wr.stringT=xx("string"),wr.dateT=xx("date"),wr.timestampT=xx("timestamp"),wr.boolT=xx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=xx("boolean","aggregate");var pl={};Object.defineProperty(pl,"__esModule",{value:!0}),pl.isComparison=pl.Comparison=void 0;var G4;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(G4||(pl.Comparison=G4={}));function KAe(t){return Object.values(G4).includes(t)}pl.isComparison=KAe;var cp={};Object.defineProperty(cp,"__esModule",{value:!0}),cp.isEquality=cp.Equality=void 0;var W4;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(W4||(cp.Equality=W4={}));function JAe(t){return Object.values(W4).includes(t)}cp.isEquality=JAe;var fp={};Object.defineProperty(fp,"__esModule",{value:!0}),fp.isGranularResult=void 0;function ZAe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}fp.isGranularResult=ZAe,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Nn=Z,xp=hr,gl=an,dx=ln,J_=On,eSe=pl,tSe=cp,Pz=fp,nSe=Ve;class rSe extends Error{}class Mz extends nSe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=dx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!dx.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${dx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Qz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Nn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Mz;class V4 extends Mz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[dx.FT.timestampT,dx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Nn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!dx.FT.typeEq(s,dx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,xp.errorFor)("illegal unit expression");let o;if((0,Pz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,J_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,J_.timeResult)({dataType:"timestamp",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Nn.isDateUnit)(this.timeframe)?(0,J_.timeResult)({dataType:"date",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,J_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,xp.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=V4;function jz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function iSe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=iSe;function Uz(t,e,n,r){const i=(0,Nn.isTimeFieldType)(e.dataType),s=(0,Nn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=jz(e,"timestamp"),u=jz(r,"timestamp");if(o&&u)return(0,gl.compose)(o,n,u)}else return(0,gl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function qz(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function sSe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function oSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=F1("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=w1(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=Uz(e,i,n,s)||(0,gl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,gl.compose)(i.value,"LIKE",s.value);else{const l=qz(i,s);if(l===void 0)throw new rSe("Incompatible types for match('~') operator");a=l}a=(0,gl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=sSe(i,n,s);l?a=l:a=(0,gl.nullsafeNot)(qz(i,s)||(0,gl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function uSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=F1("boolean",i,s);if(o)return o;const u=(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),a=w1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Uz(e,i,n,s)||(0,gl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Hz(t,...e){return e.includes(t)}function zz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=F1("number",i,s);if(o)return o;const u=w1(e,i,r,s);if(u)return u;const a=(0,Nn.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:(0,gl.compose)(i.value,n,s.value),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,xp.errorFor)("numbers required")}function aSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=w1(e,i,r,s);if(o)return o;const u=(0,Nn.isTimeFieldType)(i.dataType),a=F1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Pz.isGranularResult)(i))l=new V4(r,i.timeframe);else if(i.dataType==="date")l=new V4(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,xp.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return zz(t,e,n,r)}function Qz(t,e,n,r){if((0,tSe.isEquality)(n))return oSe(t,e,n,r);if((0,eSe.isComparison)(n))return uSe(t,e,n,r);if(Hz(n,"+","-"))return aSe(t,e,n,r);if(n==="*")return zz(t,e,n,r);if(Hz(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=w1(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=F1("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,xp.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,xp.errorFor)("applybinary bad operator")}dt.applyBinary=Qz;function F1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Nn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Nn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function w1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Nn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Nn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),{...i,dataType:r.dataType};if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(fx,"__esModule",{value:!0}),fx.ExprIdReference=void 0;const lSe=Z,cSe=hr,fSe=dt;class xSe extends fSe.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,lSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,cSe.errorFor)(n.error)}}fx.ExprIdReference=xSe,Object.defineProperty(lp,"__esModule",{value:!0}),lp.NamedSource=void 0;const Y4=Z,dSe=zo,hSe=Kr,pSe=On,X4=Ve,gSe=fx,mSe=np;class ySe extends dSe.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof X4.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof X4.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof X4.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,Y4.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof gSe.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new mSe.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,Y4.isCastType)(f.type)&&(p=(0,pSe.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,Y4.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLog(`Argument not provided for required parameter \`${a}\``));return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=hSe.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}lp.NamedSource=ySe;var L1={},Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.QueryHeadStruct=void 0;const ESe=Z,ASe=zo,SSe=lp;class vSe extends ASe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,ESe.refIsStructDef)(this.fromRef))return this.fromRef;const n=new SSe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}Z_.QueryHeadStruct=vSe,Object.defineProperty(L1,"__esModule",{value:!0}),L1.QueryReference=void 0;const K4=Kr,_Se=Ve,CSe=Z_,bSe=Z,TSe=Fs;class RSe extends _Se.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:K4.ErrorFactory.structDef,outputStruct:K4.ErrorFactory.structDef,query:K4.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new CSe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,TSe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,bSe.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}L1.QueryReference=RSe,Object.defineProperty(D1,"__esModule",{value:!0}),D1.SQReference=void 0;const OSe=Xu,NSe=cx,DSe=lp,Gz=L1;class FSe extends OSe.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new Gz.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new Gz.QueryReference(this.ref);this.asSource=new NSe.QuerySource(n)}else if(e.type==="struct")this.asSource=new DSe.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}D1.SQReference=FSe,Object.defineProperty(K_,"__esModule",{value:!0}),K_.SQRefine=void 0;const wSe=Xu,LSe=cx,ISe=ap,$Se=D1;class BSe extends wSe.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof $Se.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new ISe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new LSe.QuerySource(e);return this.has({queryAsSource:n}),n}}}K_.SQRefine=BSe;var eC={},I1={};Object.defineProperty(I1,"__esModule",{value:!0}),I1.QueryRaw=void 0;const kSe=Z,PSe=Ve;class MSe extends PSe.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)},r=(0,kSe.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}I1.QueryRaw=MSe;var $1={},tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.makeSQLBlock=void 0;const jSe=Z,USe=Vt;function qSe(t,e){const n={name:`md5:/${e||"$default"}//${HSe(t)}`,select:t};return e&&(n.connection=e),n}tC.makeSQLBlock=qSe;function HSe(t){const e=t.map(n=>(0,jSe.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,USe.generateHash)(e.join(";"))}Object.defineProperty($1,"__esModule",{value:!0}),$1.SQLSource=void 0;const zSe=tC,QSe=zo,nC=Kr;class GSe extends QSe.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,zSe.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.log(`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}structDef(){var e;if(!this.validateConnectionName())return nC.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),nC.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
1299
1299
  `)),nC.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),nC.ErrorFactory.structDef}}$1.SQLSource=GSe,Object.defineProperty(eC,"__esModule",{value:!0}),eC.SQSource=void 0;const WSe=Xu,VSe=I1,YSe=$1;class XSe extends WSe.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof YSe.SQLSource){const e=new VSe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}eC.SQSource=XSe;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.SQExtend=void 0;const KSe=b1,JSe=Xu;class ZSe extends JSe.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new KSe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}rC.SQExtend=ZSe;var iC={},dp={},hp={};Object.defineProperty(hp,"__esModule",{value:!0}),hp.BinaryBoolean=void 0;const Wz=Z,eve=hr,tve=ln,nve=dt,rve=an;class ive extends nve.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[tve.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,Wz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Wz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,rve.compose)(n.value,this.op,r.value)}}return(0,eve.errorFor)("logial required boolean")}}hp.BinaryBoolean=ive,Object.defineProperty(dp,"__esModule",{value:!0}),dp.ExprCompare=void 0;const Yt=ln,sve=hp,ove={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class uve extends sve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=ove[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}dp.ExprCompare=uve;var B1={},pp={};Object.defineProperty(pp,"__esModule",{value:!0}),pp.ExprTime=void 0;const ave=Z,lve=an,cve=dt;class J4 extends cve.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,ave.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,lve.compressExpr)([i])}return new J4(e,r,n.expressionType)}}pp.ExprTime=J4;var B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.Range=void 0;const Vz=Z,fve=hr,xve=dt,dve=an;class hve extends xve.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,Vz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Vz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,dve.compose)(u.value,s,a.value)}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,fve.errorFor)("a range is not a value")}}B0.Range=hve,Object.defineProperty(B1,"__esModule",{value:!0}),B1.ExprGranularTime=void 0;const Z4=Z,pve=hr,Yz=ln,Xz=On,gve=dt,sC=pp,Kz=B0;class mve extends gve.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Yz.FT.timestampT,Yz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Z4.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Z4.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,pve.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=sC.ExprTime.fromValue("timestamp",n),u=new sC.ExprTime("timestamp",(0,Xz.timeOffset)("timestamp",n.value,"+",(0,Z4.mkExpr)`1`,this.units),n.expressionType);return new Kz.Range(o,u)}const r=new sC.ExprTime("date",n.value,n.expressionType),i=(0,Xz.timeOffset)("date",n.value,"+",["1"],this.units),s=new sC.ExprTime("date",i,n.expressionType);return new Kz.Range(r,s)}}B1.ExprGranularTime=mve,Object.defineProperty(iC,"__esModule",{value:!0}),iC.Apply=void 0;const yve=pl,Eve=dp,Ave=fp,Jz=B1;class Sve extends Eve.ExprCompare{constructor(e,n){super(e,yve.Comparison.EqualTo,n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,Ave.isGranularResult)(r)&&(n=new Jz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Jz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}iC.Apply=Sve;var gp={};Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryNumeric=void 0;const vve=ln,_ve=dt;class Cve extends _ve.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[vve.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}gp.BinaryNumeric=Cve;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.Boolean=void 0;const bve=dt,Tve=ln;let Rve=class extends bve.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Tve.FT.boolT,value:[this.value]}}};oC.Boolean=Rve;var k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.FunctionOrdering=k0.FunctionOrderBy=void 0;const eL=Z,Zz=Ve,Ove=fx;class Nve extends Zz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.log("analytic `order_by` must specify an aggregate expression or output field reference"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,eL.expressionIsAggregate)(n.expressionType)||((0,eL.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Ove.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,eL.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}k0.FunctionOrderBy=Nve;class Dve extends Zz.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}k0.FunctionOrdering=Dve;var uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprAddSub=void 0;const Fve=gp;class wve extends Fve.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}uC.ExprAddSub=wve;var ml={},ht={},k1={};Object.defineProperty(k1,"__esModule",{value:!0}),k1.ReferenceField=void 0;const eQ=Xr;class Lve extends eQ.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.log(r.error);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof eQ.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}k1.ReferenceField=Lve;var Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.typecheckGroupBy=Xn.typecheckAggregate=Xn.typecheckCalculate=Xn.typecheckDeclare=Xn.typecheckMeasure=Xn.typecheckDimension=Xn.typecheckIndex=Xn.typecheckProject=void 0;const Dn=Nu;function Ive(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}Xn.typecheckProject=Ive;function $ve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}Xn.typecheckIndex=$ve;function Bve(t,e){if(!(0,Dn.expressionIsScalar)(t.expressionType))if((0,Dn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Xn.typecheckDimension=Bve;function kve(t,e){if(!(0,Dn.expressionIsAggregate)(t.expressionType))if((0,Dn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,Dn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}Xn.typecheckMeasure=kve;function Pve(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Dn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Xn.typecheckDeclare=Pve;function Mve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}Xn.typecheckCalculate=Mve;function jve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}Xn.typecheckAggregate=jve;function Uve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}Xn.typecheckGroupBy=Uve,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const qve=k1,Hve=Ds,tQ=Ve,nQ=Yr,P0=Xn;class is extends tQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=nQ.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new qve.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}ht.FieldReference=is;class zve extends is{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=zve;class Qve extends is{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Qve;class Gve extends is{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=Gve;class Wve extends is{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Wve;class Vve extends is{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,P0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=Vve;class tL extends is{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,P0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return tL.indexOutputName(this.path)}}ht.IndexFieldReference=tL;class Yve extends is{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,P0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Yve;class Xve extends is{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,P0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Xve;class Kve extends is{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,P0.typecheckProject)(e,this)}}ht.ProjectFieldReference=Kve;class Jve extends is{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,P0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Jve;class Zve extends is{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,P0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Zve;class e_e extends is{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,P0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=e_e;class t_e extends is{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=t_e;class n_e extends tQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=nQ.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}ht.WildcardFieldReference=n_e;class r_e extends Hve.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=r_e,Object.defineProperty(ml,"__esModule",{value:!0}),ml.ExprAggregateFunction=void 0;const rQ=Z,i_e=Vt,P1=hr,s_e=Jr,o_e=lx,u_e=ln,a_e=ht,l_e=dt,c_e=Xr,f_e=fx;class x_e extends l_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[u_e.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,rQ.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"field",path:this.source.path}],evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>d_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof o_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,P1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,P1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,P1.errorFor)("agggregate without expression");if((0,rQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,P1.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=rL(a,c),p=iL(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=h_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:[c],evalSpace:"output"}}return(0,P1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...nL(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...nL(e,r))}return n}}ml.ExprAggregateFunction=x_e;function d_e(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function nL(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof s_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof c_e.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};return(0,i_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=nL(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function rL(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function iL(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function h_e(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=rL(i,e),o=iL(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=rL(l,e),f=iL(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof a_e.FieldReference?`${n.refString}.${r}()`:n instanceof f_e.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprAlternationTree=void 0;const iQ=Z,p_e=hr,g_e=hp,m_e=an;class y_e extends g_e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,iQ.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,iQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,m_e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,p_e.errorFor)("no value from alternation tree")}}aC.ExprAlternationTree=y_e;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.ExprAsymmetric=void 0;const E_e=ml;class A_e extends E_e.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}mp.ExprAsymmetric=A_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprAvg=void 0;const S_e=mp;class v_e extends S_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}lC.ExprAvg=v_e;var cC={};Object.defineProperty(cC,"__esModule",{value:!0}),cC.ExprCast=void 0;const __e=On,C_e=dt,b_e=an;class T_e extends C_e.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,b_e.compressExpr)((0,__e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}cC.ExprCast=T_e;var fC={};Object.defineProperty(fC,"__esModule",{value:!0}),fC.ExprCoalesce=void 0;const sL=Nu,sQ=ln,R_e=dt;class O_e extends R_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=sQ.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(sQ.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,sL.maxExpressionType)(n.expressionType,r.expressionType),value:(0,sL.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,sL.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}fC.ExprCoalesce=O_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprCount=void 0;const N_e=ml;class D_e extends N_e.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}xC.ExprCount=D_e;var dC={};Object.defineProperty(dC,"__esModule",{value:!0}),dC.ExprCountDistinct=void 0;const hC=ln,F_e=ml;class w_e extends F_e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[hC.FT.numberT,hC.FT.stringT,hC.FT.dateT,hC.FT.timestampT]}}dC.ExprCountDistinct=w_e;var pC={},M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.Limit=void 0;const L_e=Ve,I_e=Rn;class $_e extends L_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=I_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}M0.Limit=$_e;var yp={};Object.defineProperty(yp,"__esModule",{value:!0}),yp.PartitionBy=void 0;const B_e=Ve;class k_e extends B_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}yp.PartitionBy=k_e;var M1={},j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.FieldName=void 0;const P_e=Ve;class M_e extends P_e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}j0.FieldName=M_e,Object.defineProperty(M1,"__esModule",{value:!0}),M1.ExprFunc=void 0;const oo=Z,Ku=hr,j_e=lx,U_e=dt,q_e=j0,oQ=an;class H_e extends U_e.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const Y of a)R=(0,oo.maxExpressionType)(R,Y.expressionType),I?M.push(","):I=Y.dataType,M.push(...Y.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,oQ.compressExpr)(M),evalSpace:(0,oo.mergeEvalSpaces)(...a.map(Y=>Y.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Ku.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Ku.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,oo.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof j_e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Ku.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Ku.errorFor)(I)}}const x=[...c?[c]:[],...a],h=z_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Ku.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,oo.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,oo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,oo.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,Ku.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,oo.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(z=>R?z.getAnalyticOrderBy(e):z.getAggregateOrderBy(e,I));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const z=M.getField(e);z.found===void 0?M.log(`${M.refString} is not defined`):(0,oo.expressionIsAnalytic)(z.found.typeDesc().expressionType)||(0,oo.expressionIsUngroupedAggregate)(z.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}S.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Ku.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=Q_e(I),z=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(z.length>0){const Q=z.length===1?`'.' paths are not yet supported in sql interpolations, found ${z.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${z.join(", ")})`;return this.log(Q),(0,Ku.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const Y=[];for(const Q of M)if(Q.type==="string")Y.push(Q.value);else if(Q.name==="TABLE")Y.push({type:"source-reference"});else{const oe=new q_e.FieldName(Q.name);this.has({name:oe});const de=e.lookup([oe]);if(de.found===void 0)return this.log(`Invalid interpolation: ${de.error}`),(0,Ku.errorFor)("invalid interpolated field");de.found.refType==="parameter"?Y.push({type:"parameter",path:[Q.name]}):Y.push({type:"field",path:[Q.name]})}v=[{type:"sql-string",e:Y}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Ku.errorFor)("invalid return type");const b=(0,oo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,oo.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,oQ.compressExpr)(v),evalSpace:O}}}M1.ExprFunc=H_e;function z_e(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,oo.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||h.evalSpace==="output"&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function Q_e(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(pC,"__esModule",{value:!0}),pC.ExprProps=void 0;const G_e=Z,W_e=hr,V_e=ln,Y_e=k0,X_e=M0,K_e=yp,J_e=dt,Z_e=M1;class eCe extends J_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=V_e.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,G_e.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,W_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof K_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof X_e.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof Y_e.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof Z_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}pC.ExprProps=eCe;var gC={};Object.defineProperty(gC,"__esModule",{value:!0}),gC.ExprLogicalOp=void 0;const tCe=hp,uQ=ln;class nCe extends tCe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[uQ.FT.boolT,uQ.FT.aggregateBoolT]}}gC.ExprLogicalOp=nCe;var mC={};Object.defineProperty(mC,"__esModule",{value:!0}),mC.ExprMax=void 0;const yC=ln,rCe=ml;class iCe extends rCe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[yC.FT.numberT,yC.FT.stringT,yC.FT.dateT,yC.FT.timestampT]}returns(e){return e.dataType}}mC.ExprMax=iCe;var EC={};Object.defineProperty(EC,"__esModule",{value:!0}),EC.ExprMin=void 0;const AC=ln,sCe=ml;class oCe extends sCe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[AC.FT.numberT,AC.FT.stringT,AC.FT.dateT,AC.FT.timestampT]}returns(e){return e.dataType}}EC.ExprMin=oCe;var SC={};Object.defineProperty(SC,"__esModule",{value:!0}),SC.ExprMinus=void 0;const uCe=hr,aQ=ln,aCe=dt;class lCe extends aCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[aQ.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return aQ.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,uCe.errorFor)("negate requires number")}}SC.ExprMinus=lCe;var vC={};Object.defineProperty(vC,"__esModule",{value:!0}),vC.ExprMulDiv=void 0;const cCe=gp;class fCe extends cCe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}vC.ExprMulDiv=fCe;var _C={},j1={};Object.defineProperty(j1,"__esModule",{value:!0}),j1.Unary=void 0;const xCe=dt;class dCe extends xCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}j1.Unary=dCe,Object.defineProperty(_C,"__esModule",{value:!0}),_C.ExprNot=void 0;const lQ=ln,hCe=j1,pCe=an;class gCe extends hCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[lQ.FT.boolT,lQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,pCe.nullsafeNot)(n.value):["false"]}}}_C.ExprNot=gCe;var CC={};Object.defineProperty(CC,"__esModule",{value:!0}),CC.ExprNow=void 0;const mCe=dt;class yCe extends mCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}CC.ExprNow=yCe;var bC={};Object.defineProperty(bC,"__esModule",{value:!0}),bC.ExprNULL=void 0;const ECe=dt;class ACe extends ECe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}bC.ExprNULL=ACe;var TC={};Object.defineProperty(TC,"__esModule",{value:!0}),TC.ExprNumber=void 0;const SCe=ln,vCe=dt;class _Ce extends vCe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...SCe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}TC.ExprNumber=_Ce;var RC={};Object.defineProperty(RC,"__esModule",{value:!0}),RC.ExprParens=void 0;const CCe=dt;class bCe extends CCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:["(",...n.value,")"]}}}RC.ExprParens=bCe;var OC={};Object.defineProperty(OC,"__esModule",{value:!0}),OC.ExprRegEx=void 0;const TCe=dt;class RCe extends TCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}OC.ExprRegEx=RCe;var NC={};Object.defineProperty(NC,"__esModule",{value:!0}),NC.ExprString=void 0;const OCe=dt,NCe=ln;class DCe extends OCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...NCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}NC.ExprString=DCe;var DC={};Object.defineProperty(DC,"__esModule",{value:!0}),DC.ExprSum=void 0;const FCe=mp;class wCe extends FCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}DC.ExprSum=wCe;var FC={};Object.defineProperty(FC,"__esModule",{value:!0}),FC.ExprTimeExtract=void 0;const hx=Z,U0=hr,oL=dt,LCe=B0;class U1 extends oL.ExpressionDef{static extractor(e){const n=U1.pluralMap[e];if(n)return n;if((0,hx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=U1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,U0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof LCe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,hx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,hx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,U0.errorFor)("extract from error").value};if(!(0,hx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,U0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,hx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,U0.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,oL.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,oL.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,U0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,U0.errorFor)(`${n} civil extraction`)):(0,hx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,U0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,hx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType:i.dataType},units:n}]}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,U0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}FC.ExprTimeExtract=U1,U1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var wC={},Go={},LC={};Object.defineProperty(LC,"__esModule",{value:!0}),LC.QueryInputSpace=void 0;const ICe=rs,$Ce=O1,BCe=tp;class kCe extends BCe.RefinedSpace{constructor(e,n){const r=new $Ce.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof ICe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}LC.QueryInputSpace=kCe;var PCe=F&&F.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),MCe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jCe=F&&F.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&PCe(e,t,n);return MCe(e,t),e};Object.defineProperty(Go,"__esModule",{value:!0}),Go.ReduceFieldSpace=Go.QuerySpace=Go.QueryOperationSpace=void 0;const IC=jCe(Z),uL=w0,UCe=j0,qCe=Xr,HCe=ht,zCe=tp,QCe=R1,GCe=Jr,WCe=LC;class cQ extends zCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new WCe.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(e)}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof GCe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();IC.isAtomicFieldType(l.dataType)&&IC.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}Go.QueryOperationSpace=cQ;class fQ extends cQ{addRefineFromFields(e){var n;if(IC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new UCe.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new QCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof HCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof qCe.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!YCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(IC.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,uL.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,uL.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,uL.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}Go.QuerySpace=fQ;class VCe extends fQ{constructor(){super(...arguments),this.segmentType="reduce"}}Go.ReduceFieldSpace=VCe;function YCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(wC,"__esModule",{value:!0}),wC.ExprUngroup=void 0;const xQ=Z,aL=hr,XCe=Go,KCe=ln,JCe=dt;class ZCe extends JCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=KCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,xQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,aL.errorFor)("ungrouped scalar");if((0,xQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,aL.errorFor)("doubly-ungrouped aggregate");const r={type:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof XCe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:[r],evalSpace:"output"}}return this.log(`${this.control}() incompatible type`),(0,aL.errorFor)("ungrouped type check")}}wC.ExprUngroup=ZCe;var $C={};Object.defineProperty($C,"__esModule",{value:!0}),$C.ForRange=void 0;const dQ=Nu,lL=hr,hQ=ln,BC=On,ebe=dt,kC=pp,pQ=B0;class tbe extends ebe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[hQ.FT.timestampT,hQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,lL.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,dQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,dQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,lL.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,BC.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,BC.timeOffset)("date",i.value,"+",o.value,u),g=new kC.ExprTime("date",m);return new pQ.Range(p,g).apply(e,n,r)}const l=kC.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,BC.castDateToTimestamp)(f),c=new kC.ExprTime("timestamp",f,i.expressionType)}const x=(0,BC.timeOffset)("timestamp",f,"+",o.value,u),h=new kC.ExprTime("timestamp",x,i.expressionType);return new pQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,lL.errorFor)("range has no value")}}$C.ForRange=tbe;var pr={},ss={};Object.defineProperty(ss,"__esModule",{value:!0});class px extends Error{}class nbe extends px{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class rbe extends px{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class ibe extends px{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class q1 extends px{}class gQ extends px{constructor(e){super(`Invalid unit ${e}`)}}class uo extends px{}class q0 extends px{constructor(){super("Zone is an abstract class")}}const ke="numeric",Wo="short",ws="long",cL={year:ke,month:ke,day:ke},mQ={year:ke,month:Wo,day:ke},sbe={year:ke,month:Wo,day:ke,weekday:Wo},yQ={year:ke,month:ws,day:ke},EQ={year:ke,month:ws,day:ke,weekday:ws},AQ={hour:ke,minute:ke},SQ={hour:ke,minute:ke,second:ke},vQ={hour:ke,minute:ke,second:ke,timeZoneName:Wo},_Q={hour:ke,minute:ke,second:ke,timeZoneName:ws},CQ={hour:ke,minute:ke,hourCycle:"h23"},bQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},TQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Wo},RQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:ws},OQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},NQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},DQ={year:ke,month:Wo,day:ke,hour:ke,minute:ke},FQ={year:ke,month:Wo,day:ke,hour:ke,minute:ke,second:ke},obe={year:ke,month:Wo,day:ke,weekday:Wo,hour:ke,minute:ke},wQ={year:ke,month:ws,day:ke,hour:ke,minute:ke,timeZoneName:Wo},LQ={year:ke,month:ws,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:Wo},IQ={year:ke,month:ws,day:ke,weekday:ws,hour:ke,minute:ke,timeZoneName:ws},$Q={year:ke,month:ws,day:ke,weekday:ws,hour:ke,minute:ke,second:ke,timeZoneName:ws};function St(t){return typeof t>"u"}function gx(t){return typeof t=="number"}function PC(t){return typeof t=="number"&&t%1===0}function ube(t){return typeof t=="string"}function abe(t){return Object.prototype.toString.call(t)==="[object Date]"}function BQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function lbe(t){return Array.isArray(t)?t:[t]}function kQ(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function cbe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ep(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function yl(t,e,n){return PC(t)&&t>=e&&t<=n}function fbe(t,e){return t-e*Math.floor(t/e)}function Hn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function H0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function mx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function fL(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function xL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function H1(t){return t%4===0&&(t%100!==0||t%400===0)}function z1(t){return H1(t)?366:365}function MC(t,e){const n=fbe(e-1,12)+1,r=t+(e-n)/12;return n===2?H1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function dL(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function jC(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function hL(t){return t>99?t:t>60?1900+t:2e3+t}function PQ(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function UC(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function MQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new uo(`Invalid unit value ${t}`);return e}function qC(t,e){const n={};for(const r in t)if(Ep(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=MQ(i)}return n}function Q1(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${Hn(n,2)}:${Hn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Hn(n,2)}${Hn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function HC(t){return cbe(t,["hour","minute","second","millisecond"])}const jQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,xbe=["January","February","March","April","May","June","July","August","September","October","November","December"],UQ=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dbe=["J","F","M","A","M","J","J","A","S","O","N","D"];function qQ(t){switch(t){case"narrow":return[...dbe];case"short":return[...UQ];case"long":return[...xbe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const HQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],zQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],hbe=["M","T","W","T","F","S","S"];function QQ(t){switch(t){case"narrow":return[...hbe];case"short":return[...zQ];case"long":return[...HQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const GQ=["AM","PM"],pbe=["Before Christ","Anno Domini"],gbe=["BC","AD"],mbe=["B","A"];function WQ(t){switch(t){case"narrow":return[...mbe];case"short":return[...gbe];case"long":return[...pbe];default:return null}}function ybe(t){return GQ[t.hour<12?0:1]}function Ebe(t,e){return QQ(e)[t.weekday-1]}function Abe(t,e){return qQ(e)[t.month-1]}function Sbe(t,e){return WQ(e)[t.year<0?0:1]}function vbe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function VQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const _be={D:cL,DD:mQ,DDD:yQ,DDDD:EQ,t:AQ,tt:SQ,ttt:vQ,tttt:_Q,T:CQ,TT:bQ,TTT:TQ,TTTT:RQ,f:OQ,ff:DQ,fff:wQ,ffff:IQ,F:NQ,FF:FQ,FFF:LQ,FFFF:$Q};class os{static create(e,n={}){return new os(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return _be[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return Hn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?ybe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?Abe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?Ebe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=os.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?Sbe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return VQ(os.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=os.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return VQ(s,i(u))}}class Vo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ap=class{get type(){throw new q0}get name(){throw new q0}get ianaName(){return this.name}get isUniversal(){throw new q0}offsetName(e,n){throw new q0}formatOffset(e,n){throw new q0}offset(e){throw new q0}equals(e){throw new q0}get isValid(){throw new q0}},pL=null;class zC extends Ap{static get instance(){return pL===null&&(pL=new zC),pL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return PQ(e,n,r)}formatOffset(e,n){return Q1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let QC={};function Cbe(t){return QC[t]||(QC[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),QC[t]}const bbe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Tbe(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function Rbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=bbe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let GC={};class Ju extends Ap{static create(e){return GC[e]||(GC[e]=new Ju(e)),GC[e]}static resetCache(){GC={},QC={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return PQ(e,n,r,this.name)}formatOffset(e,n){return Q1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=Cbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?Rbe(r,n):Tbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=dL({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let gL=null;class Zr extends Ap{static get utcInstance(){return gL===null&&(gL=new Zr(0)),gL}static instance(e){return e===0?Zr.utcInstance:new Zr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Zr(UC(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Q1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Q1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Q1(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class YQ extends Ap{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function z0(t,e){if(St(t)||t===null)return e;if(t instanceof Ap)return t;if(ube(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Zr.utcInstance:Zr.parseSpecifier(n)||Ju.create(t)}else return gx(t)?Zr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new YQ(t)}let XQ=()=>Date.now(),KQ="system",JQ=null,ZQ=null,eG=null,tG;class zn{static get now(){return XQ}static set now(e){XQ=e}static set defaultZone(e){KQ=e}static get defaultZone(){return z0(KQ,zC.instance)}static get defaultLocale(){return JQ}static set defaultLocale(e){JQ=e}static get defaultNumberingSystem(){return ZQ}static set defaultNumberingSystem(e){ZQ=e}static get defaultOutputCalendar(){return eG}static set defaultOutputCalendar(e){eG=e}static get throwOnInvalid(){return tG}static set throwOnInvalid(e){tG=e}static resetCaches(){hn.resetCache(),Ju.resetCache()}}let nG={};function Obe(t,e={}){const n=JSON.stringify([t,e]);let r=nG[n];return r||(r=new Intl.ListFormat(t,e),nG[n]=r),r}let mL={};function yL(t,e={}){const n=JSON.stringify([t,e]);let r=mL[n];return r||(r=new Intl.DateTimeFormat(t,e),mL[n]=r),r}let EL={};function Nbe(t,e={}){const n=JSON.stringify([t,e]);let r=EL[n];return r||(r=new Intl.NumberFormat(t,e),EL[n]=r),r}let AL={};function Dbe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=AL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),AL[i]=s),s}let G1=null;function Fbe(){return G1||(G1=new Intl.DateTimeFormat().resolvedOptions().locale,G1)}function wbe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=yL(t).resolvedOptions()}catch{n=yL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Lbe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Ibe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function $be(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function WC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Bbe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class kbe{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=Nbe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):xL(e,3);return Hn(n,this.padTo)}}}class Pbe{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Ju.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=yL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Mbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&BQ()&&(this.rtf=Dbe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):vbe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class hn{static fromOpts(e){return hn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||zn.defaultLocale,o=s||(i?"en-US":Fbe()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new hn(o,u,a,s)}static resetCache(){G1=null,mL={},EL={},AL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return hn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=wbe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Lbe(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=Bbe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:hn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return WC(this,e,r,qQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=Ibe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return WC(this,e,r,QQ,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=$be(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return WC(this,void 0,e,()=>GQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return WC(this,e,n,WQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new kbe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Pbe(e,this.intl,n)}relFormatter(e={}){return new Mbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Obe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Sp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vp(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function _p(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function rG(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=H0(e[n+i]);return[r,null,n+i]}}const iG=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,jbe=`(?:${iG.source}?(?:\\[(${jQ.source})\\])?)?`,SL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,sG=RegExp(`${SL.source}${jbe}`),vL=RegExp(`(?:T${sG.source})?`),Ube=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,qbe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Hbe=/(\d{4})-?(\d{3})/,zbe=rG("weekYear","weekNumber","weekDay"),Qbe=rG("year","ordinal"),Gbe=/(\d{4})-(\d\d)-(\d\d)/,oG=RegExp(`${SL.source} ?(?:${iG.source}|(${jQ.source}))?`),Wbe=RegExp(`(?: ${oG.source})?`);function Cp(t,e,n){const r=t[e];return St(r)?n:H0(r)}function Vbe(t,e){return[{year:Cp(t,e),month:Cp(t,e+1,1),day:Cp(t,e+2,1)},null,e+3]}function bp(t,e){return[{hours:Cp(t,e,0),minutes:Cp(t,e+1,0),seconds:Cp(t,e+2,0),milliseconds:fL(t[e+3])},null,e+4]}function W1(t,e){const n=!t[e]&&!t[e+1],r=UC(t[e+1],t[e+2]),i=n?null:Zr.instance(r);return[{},i,e+3]}function V1(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const Ybe=RegExp(`^T?${SL.source}$`),Xbe=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function Kbe(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(mx(n)),months:x(mx(r)),weeks:x(mx(i)),days:x(mx(s)),hours:x(mx(o)),minutes:x(mx(u)),seconds:x(mx(a),a==="-0"),milliseconds:x(fL(l),f)}]}const Jbe={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function _L(t,e,n,r,i,s,o){const u={year:e.length===2?hL(H0(e)):H0(e),month:UQ.indexOf(n)+1,day:H0(r),hour:H0(i),minute:H0(s)};return o&&(u.second=H0(o)),t&&(u.weekday=t.length>3?HQ.indexOf(t)+1:zQ.indexOf(t)+1),u}const Zbe=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function eTe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=_L(e,i,r,n,s,o,u);let h;return a?h=Jbe[a]:l?h=0:h=UC(c,f),[x,new Zr(h)]}function tTe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const nTe=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,rTe=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,iTe=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function uG(t){const[,e,n,r,i,s,o,u]=t;return[_L(e,i,r,n,s,o,u),Zr.utcInstance]}function sTe(t){const[,e,n,r,i,s,o,u]=t;return[_L(e,u,n,r,i,s,o),Zr.utcInstance]}const oTe=Sp(Ube,vL),uTe=Sp(qbe,vL),aTe=Sp(Hbe,vL),lTe=Sp(sG),aG=vp(Vbe,bp,W1,V1),cTe=vp(zbe,bp,W1,V1),fTe=vp(Qbe,bp,W1,V1),xTe=vp(bp,W1,V1);function dTe(t){return _p(t,[oTe,aG],[uTe,cTe],[aTe,fTe],[lTe,xTe])}function hTe(t){return _p(tTe(t),[Zbe,eTe])}function pTe(t){return _p(t,[nTe,uG],[rTe,uG],[iTe,sTe])}function gTe(t){return _p(t,[Xbe,Kbe])}const mTe=vp(bp);function yTe(t){return _p(t,[Ybe,mTe])}const ETe=Sp(Gbe,Wbe),ATe=Sp(oG),STe=vp(bp,W1,V1);function vTe(t){return _p(t,[ETe,aG],[ATe,STe])}const _Te="Invalid Duration",lG={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},CTe={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...lG},ao=146097/400,Tp=146097/4800,bTe={years:{quarters:4,months:12,weeks:ao/7,days:ao,hours:ao*24,minutes:ao*24*60,seconds:ao*24*60*60,milliseconds:ao*24*60*60*1e3},quarters:{months:3,weeks:ao/28,days:ao/4,hours:ao*24/4,minutes:ao*24*60/4,seconds:ao*24*60*60/4,milliseconds:ao*24*60*60*1e3/4},months:{weeks:Tp/7,days:Tp,hours:Tp*24,minutes:Tp*24*60,seconds:Tp*24*60*60,milliseconds:Tp*24*60*60*1e3},...lG},yx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],TTe=yx.slice(0).reverse();function Ex(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new vt(r)}function RTe(t){return t<0?Math.floor(t):Math.ceil(t)}function cG(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?RTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function OTe(t,e){TTe.reduce((n,r)=>St(e[r])?n:(n&&cG(t,e,n,e,r),r),null)}class vt{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||hn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?bTe:CTe,this.isLuxonDuration=!0}static fromMillis(e,n){return vt.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new uo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new vt({values:qC(e,vt.normalizeUnit),loc:hn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(gx(e))return vt.fromMillis(e);if(vt.isDuration(e))return e;if(typeof e=="object")return vt.fromObject(e);throw new uo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=gTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=yTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new uo("need to specify a reason the Duration is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new ibe(r);return new vt({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new gQ(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?os.create(this.loc,r).formatDurationFromString(this,e):_Te}toHuman(e={}){const n=yx.map(r=>{const i=this.values[r];return St(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=xL(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e),r={};for(const i of yx)(Ep(n.values,i)||Ep(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Ex(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=MQ(e(this.values[r],r));return Ex(this,{values:n},!0)}get(e){return this[vt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...qC(e,vt.normalizeUnit)};return Ex(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),Ex(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return OTe(this.matrix,e),Ex(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>vt.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of yx)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;gx(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)yx.indexOf(l)>yx.indexOf(o)&&cG(this.matrix,i,l,n,o)}else gx(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return Ex(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return Ex(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of yx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const Y1="Invalid Interval";function NTe(t,e){return!t||!t.isValid?pn.invalid("missing or invalid start"):!e||!e.isValid?pn.invalid("missing or invalid end"):e<t?pn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class pn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new uo("need to specify a reason the Interval is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new rbe(r);return new pn({invalid:r})}static fromDateTimes(e,n){const r=Z1(e),i=Z1(n),s=NTe(r,i);return s??new pn({start:r,end:i})}static after(e,n){const r=vt.fromDurationLike(n),i=Z1(e);return pn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=vt.fromDurationLike(n),i=Z1(e);return pn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return pn.fromDateTimes(s,u);if(o){const l=vt.fromISO(i,n);if(l.isValid)return pn.after(s,l)}else if(a){const l=vt.fromISO(r,n);if(l.isValid)return pn.before(u,l)}}return pn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?pn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(Z1).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(pn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=vt.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(pn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:pn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return pn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(pn.fromDateTimes(n,a.time)),n=null);return pn.merge(i)}difference(...e){return pn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Y1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Y1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Y1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Y1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:Y1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):vt.invalid(this.invalidReason)}mapEndpoints(e){return pn.fromDateTimes(e(this.s),e(this.e))}}let X1=class{static hasDST(e=zn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return z0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||hn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||hn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||hn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||hn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return hn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return hn.create(n,null,"gregory").eras(e)}static features(){return{relative:BQ()}}};function fG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(vt.fromMillis(r).as("days"))}function DTe(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=fG(u,a);return(l-l%7)/7}],["days",fG]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function FTe(t,e,n,r){let[i,s,o,u]=DTe(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=vt.fromObject(s,r);return l.length>0?vt.fromMillis(a,r).shiftTo(...l).plus(c):c}const CL={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},xG={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},wTe=CL.hanidec.replace(/[\[|\]]/g,"").split("");function LTe(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(CL.hanidec)!==-1)e+=wTe.indexOf(t[n]);else for(const i in xG){const[s,o]=xG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Yo({numberingSystem:t},e=""){return new RegExp(`${CL[t||"latn"]}${e}`)}const ITe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(LTe(n))}}const dG="[  ]",hG=new RegExp(dG,"g");function $Te(t){return t.replace(/\./g,"\\.?").replace(hG,dG)}function pG(t){return t.replace(/\./g,"").replace(hG," ").toLowerCase()}function Xo(t,e){return t===null?null:{regex:RegExp(t.map($Te).join("|")),deser:([n])=>t.findIndex(r=>pG(n)===pG(r))+e}}function gG(t,e){return{regex:t,deser:([,n,r])=>UC(n,r),groups:e}}function bL(t){return{regex:t,deser:([e])=>e}}function BTe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function kTe(t,e){const n=Yo(e),r=Yo(e,"{2}"),i=Yo(e,"{3}"),s=Yo(e,"{4}"),o=Yo(e,"{6}"),u=Yo(e,"{1,2}"),a=Yo(e,"{1,3}"),l=Yo(e,"{1,6}"),c=Yo(e,"{1,9}"),f=Yo(e,"{2,4}"),x=Yo(e,"{4,6}"),h=g=>({regex:RegExp(BTe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Xo(e.eras("short",!1),0);case"GG":return Xo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,hL);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Xo(e.months("short",!0,!1),1);case"MMMM":return Xo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Xo(e.months("short",!1,!1),1);case"LLLL":return Xo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return bL(c);case"uu":return bL(u);case"uuu":return Lt(n);case"a":return Xo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,hL);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Xo(e.weekdays("short",!1,!1),1);case"EEEE":return Xo(e.weekdays("long",!1,!1),1);case"ccc":return Xo(e.weekdays("short",!0,!1),1);case"cccc":return Xo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return gG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return gG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return bL(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:ITe};return m.token=t,m}const PTe={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function MTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=PTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function jTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function UTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ep(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function qTe(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return St(t.z)||(n=Ju.create(t.z)),St(t.Z)||(n||(n=new Zr(t.Z)),r=t.Z),St(t.q)||(t.M=(t.q-1)*3+1),St(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),St(t.u)||(t.S=fL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let TL=null;function HTe(){return TL||(TL=st.fromMillis(1555555555555)),TL}function zTe(t,e){if(t.literal)return t;const n=os.macroTokenToFormatOpts(t.val);if(!n)return t;const s=os.create(e,n).formatDateTimeParts(HTe()).map(o=>MTe(o,e,n));return s.includes(void 0)?t:s}function QTe(t,e){return Array.prototype.concat(...t.map(n=>zTe(n,e)))}function mG(t,e,n){const r=QTe(os.parseFormat(n),t),i=r.map(o=>kTe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=jTe(i),a=RegExp(o,"i"),[l,c]=UTe(e,a,u),[f,x,h]=c?qTe(c):[null,null,void 0];if(Ep(c,"a")&&Ep(c,"H"))throw new q1("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function GTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=mG(t,e,n);return[r,i,s,o]}const yG=[0,31,59,90,120,151,181,212,243,273,304,334],EG=[0,31,60,91,121,152,182,213,244,274,305,335];function lo(t,e){return new Vo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function AG(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function SG(t,e,n){return n+(H1(t)?EG:yG)[e-1]}function vG(t,e){const n=H1(t)?EG:yG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function RL(t){const{year:e,month:n,day:r}=t,i=SG(e,n,r),s=AG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=jC(u)):o>jC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...HC(t)}}function _G(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=AG(e,1,4),s=z1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=z1(u)):o>s?(u=e+1,o-=z1(e)):u=e;const{month:a,day:l}=vG(u,o);return{year:u,month:a,day:l,...HC(t)}}function OL(t){const{year:e,month:n,day:r}=t,i=SG(e,n,r);return{year:e,ordinal:i,...HC(t)}}function CG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=vG(e,n);return{year:e,month:r,day:i,...HC(t)}}function WTe(t){const e=PC(t.weekYear),n=yl(t.weekNumber,1,jC(t.weekYear)),r=yl(t.weekday,1,7);return e?n?r?!1:lo("weekday",t.weekday):lo("week",t.week):lo("weekYear",t.weekYear)}function VTe(t){const e=PC(t.year),n=yl(t.ordinal,1,z1(t.year));return e?n?!1:lo("ordinal",t.ordinal):lo("year",t.year)}function bG(t){const e=PC(t.year),n=yl(t.month,1,12),r=yl(t.day,1,MC(t.year,t.month));return e?n?r?!1:lo("day",t.day):lo("month",t.month):lo("year",t.year)}function TG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=yl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=yl(n,0,59),u=yl(r,0,59),a=yl(i,0,999);return s?o?u?a?!1:lo("millisecond",i):lo("second",r):lo("minute",n):lo("hour",e)}const NL="Invalid DateTime",RG=864e13;function VC(t){return new Vo("unsupported zone",`the zone "${t.name}" is not supported`)}function DL(t){return t.weekData===null&&(t.weekData=RL(t.c)),t.weekData}function K1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function OG(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function NG(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function YC(t,e,n){return OG(dL(t),e,n)}function DG(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,MC(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=vt.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=dL(s);let[a,l]=OG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function J1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Vo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function XC(t,e,n=!0){return t.isValid?os.create(hn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function FL(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Hn(t.c.year,n?6:4),e?(r+="-",r+=Hn(t.c.month),r+="-",r+=Hn(t.c.day)):(r+=Hn(t.c.month),r+=Hn(t.c.day)),r}function FG(t,e,n,r,i,s){let o=Hn(t.c.hour);return e?(o+=":",o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=Hn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Hn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Hn(Math.trunc(-t.o/60)),o+=":",o+=Hn(Math.trunc(-t.o%60))):(o+="+",o+=Hn(Math.trunc(t.o/60)),o+=":",o+=Hn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const wG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},YTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},XTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},LG=["year","month","day","hour","minute","second","millisecond"],KTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],JTe=["year","ordinal","hour","minute","second","millisecond"];function IG(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new gQ(t);return e}function $G(t,e){const n=z0(e.zone,zn.defaultZone),r=hn.fromObject(e),i=zn.now();let s,o;if(St(t.year))s=i;else{for(const l of LG)St(t[l])&&(t[l]=wG[l]);const u=bG(t)||TG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=YC(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function BG(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=xL(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function kG(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class st{constructor(e){const n=e.zone||zn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Vo("invalid input"):null)||(n.isValid?null:VC(n));this.ts=St(e.ts)?zn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=NG(this.ts,u),r=Number.isNaN(i.year)?new Vo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||hn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=kG(arguments),[r,i,s,o,u,a,l]=n;return $G({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=kG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Zr.utcInstance,$G({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=abe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=z0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:hn.fromObject(n)}):st.invalid(VC(i))}static fromMillis(e,n={}){if(gx(e))return e<-RG||e>RG?st.invalid("Timestamp out of range"):new st({ts:e,zone:z0(n.zone,zn.defaultZone),loc:hn.fromObject(n)});throw new uo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(gx(e))return new st({ts:e*1e3,zone:z0(n.zone,zn.defaultZone),loc:hn.fromObject(n)});throw new uo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=z0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(VC(r));const i=zn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=qC(e,IG),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=hn.fromObject(n);if((c||u)&&f)throw new q1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new q1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=NG(i,s);h?(p=KTe,m=YTe,g=RL(g)):u?(p=JTe,m=XTe,g=OL(g)):(p=LG,m=wG);let y=!1;for(const b of p){const O=o[b];St(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?WTe(o):u?VTe(o):bG(o),A=E||TG(o);if(A)return st.invalid(A);const S=h?_G(o):u?CG(o):o,[v,_]=YC(S,s,r),C=new st({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=dTe(e);return J1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=hTe(e);return J1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=pTe(e);return J1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new uo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=hn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=GTe(o,e,n);return c?st.invalid(c):J1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=vTe(e);return J1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new uo("need to specify a reason the DateTime is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new nbe(r);return new st({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?DL(this).weekYear:NaN}get weekNumber(){return this.isValid?DL(this).weekNumber:NaN}get weekday(){return this.isValid?DL(this).weekday:NaN}get ordinal(){return this.isValid?OL(this.c).ordinal:NaN}get monthShort(){return this.isValid?X1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?X1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?X1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?X1.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return H1(this.year)}get daysInMonth(){return MC(this.year,this.month)}get daysInYear(){return this.isValid?z1(this.year):NaN}get weeksInWeekYear(){return this.isValid?jC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=os.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Zr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=z0(e,zn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=YC(o,s,e)}return K1(this,{ts:i,zone:e})}else return st.invalid(VC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return K1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=qC(e,IG),r=!St(n.weekYear)||!St(n.weekNumber)||!St(n.weekday),i=!St(n.ordinal),s=!St(n.year),o=!St(n.month)||!St(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new q1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new q1("Can't mix ordinal dates with month/day");let l;r?l=_G({...RL(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(MC(l.year,l.month),l.day))):l=CG({...OL(this.c),...n});const[c,f]=YC(l,this.o,this.zone);return K1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e);return K1(this,DG(this,n))}minus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e).negate();return K1(this,DG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=vt.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?os.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):NL}toLocaleString(e=cL,n={}){return this.isValid?os.create(this.loc.clone(n),e).formatDateTime(this):NL}toLocaleParts(e={}){return this.isValid?os.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=FL(this,o);return u+="T",u+=FG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?FL(this,e==="extended"):null}toISOWeekDate(){return XC(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+FG(this,o==="extended",n,e,r,s):null}toRFC2822(){return XC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return XC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?FL(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),XC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():NL}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return vt.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=lbe(n).map(vt.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=FTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?pn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||st.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),BG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?BG(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new uo("min requires all arguments be DateTimes");return kQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new uo("max requires all arguments be DateTimes");return kQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=hn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return mG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return cL}static get DATE_MED(){return mQ}static get DATE_MED_WITH_WEEKDAY(){return sbe}static get DATE_FULL(){return yQ}static get DATE_HUGE(){return EQ}static get TIME_SIMPLE(){return AQ}static get TIME_WITH_SECONDS(){return SQ}static get TIME_WITH_SHORT_OFFSET(){return vQ}static get TIME_WITH_LONG_OFFSET(){return _Q}static get TIME_24_SIMPLE(){return CQ}static get TIME_24_WITH_SECONDS(){return bQ}static get TIME_24_WITH_SHORT_OFFSET(){return TQ}static get TIME_24_WITH_LONG_OFFSET(){return RQ}static get DATETIME_SHORT(){return OQ}static get DATETIME_SHORT_WITH_SECONDS(){return NQ}static get DATETIME_MED(){return DQ}static get DATETIME_MED_WITH_SECONDS(){return FQ}static get DATETIME_MED_WITH_WEEKDAY(){return obe}static get DATETIME_FULL(){return wQ}static get DATETIME_FULL_WITH_SECONDS(){return LQ}static get DATETIME_HUGE(){return IQ}static get DATETIME_HUGE_WITH_SECONDS(){return $Q}}function Z1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&gx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new uo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const ZTe="2.5.2";ss.DateTime=st,ss.Duration=vt,ss.FixedOffsetZone=Zr,ss.IANAZone=Ju,ss.Info=X1,ss.Interval=pn,ss.InvalidZone=YQ,ss.Settings=zn,ss.SystemZone=zC,ss.VERSION=ZTe,ss.Zone=Ap,Object.defineProperty(pr,"__esModule",{value:!0}),pr.LiteralYear=pr.LiteralQuarter=pr.LiteralMonth=pr.LiteralWeek=pr.LiteralDay=pr.LiteralHour=pr.LiteralTimestamp=pr.TimeFormatError=void 0;const Q0=ss,eRe=Z,tRe=B0,PG=pp,wL=dt;class nRe extends Error{}pr.TimeFormatError=nRe;function Ax(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const MG="yyyy",jG=`${MG}-LL`,co=`${jG}-dd`,UG=`${co} HH`,qG=`${UG}:mm`,LL=`${qG}:ss`;class HG extends wL.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={type:"dialect",function:"timeLiteral",literal:e,literalType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=[r];return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class IL extends HG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Ax(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=Q0.DateTime.fromFormat(e,LL);if(s.isValid)return new IL(r,n);if(s=Q0.DateTime.fromFormat(e,qG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(LL);return new $L(r,n,"timestamp",o)}}}pr.LiteralTimestamp=IL;class $L extends HG{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,wL.getMorphicValue)(i,"timestamp"),a=(0,wL.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,eRe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new tRe.Range(new PG.ExprTime(u,i.value),new PG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class BL extends $L{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,UG);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(LL),new BL(n,r)}}pr.LiteralHour=BL;class ey extends $L{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=[this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp")];return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=[this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp")];return{...e,morphic:{timestamp:n}}}}class kL extends ey{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,co);if(i.isValid)return r=i.plus({day:1}).toFormat(co),new kL(n,r)}}pr.LiteralDay=kL;class PL extends ey{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Q0.DateTime.fromFormat(i,co);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(co),r=u.toFormat(co),new PL(n,r)}}}pr.LiteralWeek=PL;class ML extends ey{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,jG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(co),r=s.toFormat(co),new ML(n,r)}}}pr.LiteralMonth=ML;class jL extends ey{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=Q0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(co),r=u.toFormat(co),new jL(n,r)}}}pr.LiteralQuarter=jL;class UL extends ey{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,MG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(co),r=s.toFormat(co),new UL(n,r)}}}pr.LiteralYear=UL;var KC={};Object.defineProperty(KC,"__esModule",{value:!0}),KC.PartialCompare=void 0;const rRe=hr,iRe=dt;class sRe extends iRe.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.log("Partial comparison does not have a value"),(0,rRe.errorFor)("no value for partial compare")}}KC.PartialCompare=sRe;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.PickWhen=Rp.Pick=void 0;const Zu=Z,G0=hr,Ko=ln,oRe=dt,uRe=Ve,zG=an;function JC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class aRe extends oRe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i=["CASE"];let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Ko.FT.typeEq(s,x,!0)){const h=Ko.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick when type")}s=JC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=JC(s,l),!Ko.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Ko.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.mergeEvalSpaces)(u,l.evalSpace),value:(0,zG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,G0.errorFor)("no value for partial pick");const n=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,G0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,G0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Ko.FT.typeEq(a.when,Ko.FT.boolT))return this.log(`when expression must be boolean, not '${Ko.FT.inspect(a.when)}`),(0,G0.errorFor)("pick when type");if(r&&!Ko.FT.typeEq(r,a.pick,!0)){const l=Ko.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick value type")}r=JC(r,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),r=JC(r,u),Ko.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,zG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Ko.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick value type mismatch"))}}Rp.Pick=aRe;class lRe extends uRe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Rp.PickWhen=lRe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.Timeframe=void 0;const cRe=Z,fRe=Ve;class xRe extends fRe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,cRe.isTimestampUnit)(n)?n:"second"}}ZC.Timeframe=xRe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.TopBy=void 0;const dRe=Z,QG=dt,hRe=Ve,pRe=an;class gRe extends hRe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof QG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof QG.ExpressionDef){const n=this.by.getExpression(e);return(0,dRe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,pRe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}eb.TopBy=gRe;var W0={};Object.defineProperty(W0,"__esModule",{value:!0}),W0.ImportStatement=W0.ImportSelect=W0.ImportSourceName=void 0;const qL=Ve;class mRe extends qL.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}W0.ImportSourceName=mRe;class yRe extends qL.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}W0.ImportSelect=yRe;class ERe extends qL.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.log("Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.log(`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}W0.ImportStatement=ERe;var ty={};Object.defineProperty(ty,"__esModule",{value:!0}),ty.ExtendBlock=void 0;const ARe=Ve,SRe=Rn;class vRe extends ARe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=SRe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}ty.ExtendBlock=vRe;var tb={};Object.defineProperty(tb,"__esModule",{value:!0}),tb.Argument=void 0;const _Re=Ve;class CRe extends _Re.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}tb.Argument=CRe;var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.HasParameter=void 0;const GG=Z,bRe=Ve;class TRe extends bRe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,GG.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.log(`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.log("Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,GG.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}nb.HasParameter=TRe;var rb={};Object.defineProperty(rb,"__esModule",{value:!0}),rb.AnonymousQuery=void 0;const RRe=Ve,ORe=Yr;class NRe extends RRe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=ORe.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}rb.AnonymousQuery=NRe;var V0={};Object.defineProperty(V0,"__esModule",{value:!0}),V0.View=void 0;const DRe=Ve;let FRe=class extends DRe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};V0.View=FRe;var ib={};Object.defineProperty(ib,"__esModule",{value:!0}),ib.ViewArrow=void 0;const wRe=Jr,LRe=V0;class IRe extends LRe.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new wRe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}ib.ViewArrow=IRe;var sb={},ny={};Object.defineProperty(ny,"__esModule",{value:!0}),ny.refine=void 0;const HL=Nu,zL=w0;function $Re(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,HL.isRawSegment)(s))t.log("Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.log(`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,HL.isQuerySegment)(o)&&(0,HL.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,zL.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,zL.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(zL.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}ny.refine=$Re,Object.defineProperty(sb,"__esModule",{value:!0}),sb.ViewRefine=void 0;const BRe=Kr,kRe=Fs,PRe=ny,MRe=V0;class jRe extends MRe.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,kRe.getFinalStruct)(this.refinement,e.structDef(),i):BRe.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,PRe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}sb.ViewRefine=jRe;var ob={};Object.defineProperty(ob,"__esModule",{value:!0}),ob.ReferenceView=void 0;const WG=Z,VG=Kr,URe=Fs,qRe=Xr,HRe=ny,zRe=V0;class QRe extends zRe.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:VG.ErrorFactory.structDef,outputStruct:VG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof qRe.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,WG.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,WG.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,URe.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.log(`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,HRe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}ob.ReferenceView=QRe;var ub={},ry={},ab={},iy={};Object.defineProperty(iy,"__esModule",{value:!0}),iy.Index=void 0;const GRe=Ve,WRe=Rn;let VRe=class extends GRe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=WRe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};iy.Index=VRe;var sy={};Object.defineProperty(sy,"__esModule",{value:!0}),sy.SampleProperty=void 0;const YRe=Ve,YG=Rn;class XRe extends YRe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=YG.LegalRefinementStage.Tail,this.forceQueryClass=YG.QueryClass.Index}sampling(){return this.sample}}sy.SampleProperty=XRe;var lb={};Object.defineProperty(lb,"__esModule",{value:!0}),lb.IndexFieldSpace=void 0;const XG=Z,QL=ht,KRe=Xr,JRe=Go,ZRe=k1,eOe=Jr;class tOe extends JRe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof QL.FieldReference?super.pushFields(n):n instanceof QL.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof KRe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof ZRe.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof eOe.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=QL.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,XG.isAtomicFieldType)(c.dataType)&&(0,XG.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}lb.IndexFieldSpace=tOe,Object.defineProperty(ab,"__esModule",{value:!0}),ab.IndexBuilder=void 0;const GL=Z,nOe=Kr,rOe=Qo,iOe=iy,sOe=M0,oOe=sy,uOe=lb;class aOe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new uOe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof rOe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof sOe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof iOe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof oOe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,GL.isIndexSegment)(e)&&!(0,GL.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),nOe.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,GL.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}ab.IndexBuilder=aOe;var cb={},oy={};Object.defineProperty(oy,"__esModule",{value:!0}),oy.GroupBy=void 0;const lOe=Ds,KG=Rn;class cOe extends lOe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=KG.LegalRefinementStage.Single,this.forceQueryClass=KG.QueryClass.Grouping}}oy.GroupBy=cOe;var fb={};Object.defineProperty(fb,"__esModule",{value:!0}),fb.ProjectFieldSpace=void 0;const WL=Z,fOe=Go;class xOe extends fOe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,WL.expressionIsAggregate)(e.expressionType)?!1:(0,WL.expressionInvolvesAggregate)(e.expressionType)&&(0,WL.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}fb.ProjectFieldSpace=xOe;var Y0={},Sx={};Object.defineProperty(Sx,"__esModule",{value:!0}),Sx.Ordering=Sx.OrderBy=void 0;const dOe=Z,JG=j0,ZG=Ve,hOe=Rn;class pOe extends ZG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof JG.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof JG.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,dOe.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Sx.OrderBy=pOe;class gOe extends ZG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=hOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Sx.Ordering=gOe;var uy={};Object.defineProperty(uy,"__esModule",{value:!0}),uy.Top=void 0;const eW=Z,mOe=an,yOe=j0,EOe=Ve,AOe=Rn;let SOe=class extends EOe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=AOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof yOe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,eW.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,eW.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:(0,mOe.compressExpr)(r.value)}}}};uy.Top=SOe,Object.defineProperty(Y0,"__esModule",{value:!0}),Y0.ReduceBuilder=Y0.QuerySegmentBuilder=void 0;const tW=Z,vOe=Kr,_Oe=Qo,COe=M0,nW=Sx,rW=uy,bOe=Go,TOe=Ds;class iW{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof TOe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _Oe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof rW.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof COe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof nW.Ordering&&(this.order?e.log("Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof rW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof nW.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}Y0.QuerySegmentBuilder=iW;class ROe extends iW{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new bOe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,tW.isReduceSegment)(e)||(0,tW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),vOe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Y0.ReduceBuilder=ROe,Object.defineProperty(cb,"__esModule",{value:!0}),cb.ProjectBuilder=void 0;const sW=Z,OOe=Kr,NOe=oy,DOe=fb,FOe=Y0;class wOe extends FOe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new DOe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof NOe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,sW.isProjectSegment)(e)||(0,sW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),OOe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}cb.ProjectBuilder=wOe;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.PartialBuilder=void 0;const LOe=Nu,IOe=Y0;class $Oe extends IOe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,LOe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}xb.PartialBuilder=$Oe,Object.defineProperty(ry,"__esModule",{value:!0}),ry.QOpDesc=void 0;const BOe=ab,kOe=cb,POe=Y0,MOe=Ve,jOe=Fs,UOe=Jr,vx=Rn,qOe=xb;class HOe extends MOe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=vx.QueryClass.Grouping:this.refineThis.type==="project"?n=vx.QueryClass.Project:this.refineThis.type==="index"&&(n=vx.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=vx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case vx.QueryClass.Grouping:return new POe.ReduceBuilder(e,this.refineThis,n,r);case vx.QueryClass.Project:return new kOe.ProjectBuilder(e,this.refineThis,n,r);case vx.QueryClass.Index:return new BOe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new qOe.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new UOe.StaticSpace((0,jOe.opOutputStruct)(this,e.structDef(),i))}}}ry.QOpDesc=HOe,Object.defineProperty(ub,"__esModule",{value:!0}),ub.QOpDescView=void 0;const zOe=Z,QOe=Jr,oW=ry,GOe=Fs,VL=Rn,WOe=V0;class VOe extends WOe.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,zOe.isRawSegment)(i)?(this.log("A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new oW.QOpDesc([]),o=new oW.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case VL.LegalRefinementStage.Head:s.push(u);break;case VL.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case VL.LegalRefinementStage.Tail:o.push(u);break;default:u.log("Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,GOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new QOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}ub.QOpDescView=VOe;var gn={};Object.defineProperty(gn,"__esModule",{value:!0}),gn.FieldDefinitionValue=gn.DefSpace=gn.DimensionFieldDeclaration=gn.MeasureFieldDeclaration=gn.DeclareFieldDeclaration=gn.ProjectFieldDeclaration=gn.GroupByFieldDeclaration=gn.AggregateFieldDeclaration=gn.CalculateFieldDeclaration=gn.AtomicFieldDeclaration=void 0;const YOe=Z,XOe=an,KOe=ln,JOe=fp,ZOe=Ve,_x=Xn,eNe=Yr,tNe=Xr;class X0 extends ZOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=eNe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new YL(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,XOe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,YOe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,JOe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof YL&&e.foundCircle)&&r.dataType!=="error"){const a=KOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new uW(e,this))}}gn.AtomicFieldDeclaration=X0;class nNe extends X0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}gn.CalculateFieldDeclaration=nNe;class rNe extends X0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckAggregate)(e,this)}}gn.AggregateFieldDeclaration=rNe;class iNe extends X0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckGroupBy)(e,this)}}gn.GroupByFieldDeclaration=iNe;class sNe extends X0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckProject)(e,this)}}gn.ProjectFieldDeclaration=sNe;class oNe extends X0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckDeclare)(e,this)}}gn.DeclareFieldDeclaration=oNe;class uNe extends X0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckMeasure)(e,this)}}gn.MeasureFieldDeclaration=uNe;class aNe extends X0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckDimension)(e,this)}}gn.DimensionFieldDeclaration=aNe;class YL{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}gn.DefSpace=YL;class uW extends tNe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}gn.FieldDefinitionValue=uW;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.Aggregate=void 0;const lNe=Ds,aW=Rn;let cNe=class extends lNe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=aW.LegalRefinementStage.Single,this.forceQueryClass=aW.QueryClass.Grouping}};db.Aggregate=cNe;var hb={};Object.defineProperty(hb,"__esModule",{value:!0}),hb.Calculate=void 0;const fNe=Ds,xNe=Rn;class dNe extends fNe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=xNe.LegalRefinementStage.Single}}hb.Calculate=dNe;var ay={};Object.defineProperty(ay,"__esModule",{value:!0}),ay.Dimensions=void 0;const hNe=L0;class pNe extends hNe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}ay.Dimensions=pNe;var ly={};Object.defineProperty(ly,"__esModule",{value:!0}),ly.Measures=void 0;const gNe=L0;class mNe extends gNe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}ly.Measures=mNe;var pb={};Object.defineProperty(pb,"__esModule",{value:!0}),pb.Nests=void 0;const yNe=Ds,lW=Rn;class ENe extends yNe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=lW.LegalRefinementStage.Single,this.forceQueryClass=lW.QueryClass.Grouping}}pb.Nests=ENe;var gb={};Object.defineProperty(gb,"__esModule",{value:!0}),gb.ProjectStatement=void 0;const ANe=Ds,cW=Rn;class SNe extends ANe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=cW.QueryClass.Project,this.queryRefinementStage=cW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}gb.ProjectStatement=SNe;var K0={},El={};Object.defineProperty(El,"__esModule",{value:!0}),El.findReferences=El.deprecatedParseTableURI=El.constructTableKey=void 0;const vNe=ux,XL=Bn;function KL(t){const e=(0,XL.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,XL.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class _Ne{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=fW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,XL.getId)(e.connectionId()),r=KL(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=KL(e.tableURI()),{connectionName:r,tablePath:i}=xW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=KL(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function fW(t,e){return t===void 0?e:`${t}:${e}`}El.constructTableKey=fW;function xW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}El.deprecatedParseTableURI=xW;function CNe(t,e,n){const r=new _Ne(t,e),i=r;return vNe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}El.findReferences=CNe,Object.defineProperty(K0,"__esModule",{value:!0}),K0.TableFunctionSource=K0.TableMethodSource=K0.TableSource=void 0;const dW=El,bNe=zo,hW=Kr;class JL extends bNe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return hW.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,dW.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.log(l),hW.ErrorFactory.structDef}}K0.TableSource=JL;class TNe extends JL{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}K0.TableMethodSource=TNe;class RNe extends JL{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,dW.deprecatedParseTableURI)(this.tableURI)}}K0.TableFunctionSource=RNe;var mb={};Object.defineProperty(mb,"__esModule",{value:!0}),mb.SQLString=void 0;const ONe=Ve,pW=Xu;class NNe extends ONe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(DNe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof pW.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("Cannot expand into a query")}return e}}mb.SQLString=NNe;function DNe(t){return t instanceof pW.SourceQueryElement}var yb={};Object.defineProperty(yb,"__esModule",{value:!0}),yb.SourceDesc=void 0;const FNe=Ve;class wNe extends FNe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}yb.SourceDesc=wNe;var Eb={};Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.isSourceProperty=void 0;const LNe=Qo,INe=rs,$Ne=L0,BNe=rp,kNe=$0,PNe=ip,MNe=sp,jNe=op,UNe=I0;function qNe(t){return t instanceof LNe.Filter||t instanceof INe.Joins||t instanceof $Ne.DeclareFields||t instanceof BNe.FieldListEdit||t instanceof kNe.Renames||t instanceof PNe.PrimaryKey||t instanceof UNe.ObjectAnnotation||t instanceof MNe.Views||t instanceof jNe.TimezoneStatement}Eb.isSourceProperty=qNe;var Ab={};Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.isFieldCollectionMember=void 0;const HNe=gn,gW=ht;function zNe(t){return t instanceof gW.FieldReference||t instanceof gW.WildcardFieldReference||t instanceof HNe.AtomicFieldDeclaration}Ab.isFieldCollectionMember=zNe;var Sb={};Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.isQueryElement=void 0;const QNe=up,GNe=ap,WNe=L1,VNe=I1;function YNe(t){return t instanceof QNe.QueryArrow||t instanceof GNe.QueryRefine||t instanceof WNe.QueryReference||t instanceof VNe.QueryRaw}Sb.isQueryElement=YNe;var mW={};Object.defineProperty(mW,"__esModule",{value:!0});var vb={};Object.defineProperty(vb,"__esModule",{value:!0}),vb.isQueryProperty=void 0;function XNe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}vb.isQueryProperty=XNe;var _b={};Object.defineProperty(_b,"__esModule",{value:!0}),_b.isQueryExtendProperty=void 0;const KNe=ay,JNe=rs,ZNe=ly;function eDe(t){return t instanceof KNe.Dimensions||t instanceof ZNe.Measures||t instanceof JNe.Joins}_b.isQueryExtendProperty=eDe;var Cb={};Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.isFieldPropStatement=void 0;const tDe=k0,nDe=Qo,rDe=M0,iDe=yp;function sDe(t){return t instanceof nDe.Filter||t instanceof rDe.Limit||t instanceof iDe.PartitionBy||t instanceof tDe.FunctionOrdering}Cb.isFieldPropStatement=sDe,function(t){var e=F&&F.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=F&&F.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(y1,t),n(Zh,t),n(ep,t),n(zo,t),n(b1,t),n(Xu,t),n(X_,t),n(K_,t),n(eC,t),n(D1,t),n(rC,t),n(rp,t),n(ip,t),n($0,t),n(sp,t),n(op,t),n(iC,t),n(gp,t),n(oC,t),n(k0,t),n(uC,t),n(ml,t),n(aC,t),n(mp,t),n(lC,t),n(cC,t),n(fC,t),n(dp,t),n(xC,t),n(dC,t),n(pC,t),n(M1,t),n(B1,t),n(fx,t),n(gC,t),n(mC,t),n(EC,t),n(SC,t),n(vC,t),n(_C,t),n(CC,t),n(bC,t),n(TC,t),n(RC,t),n(OC,t),n(NC,t),n(DC,t),n(FC,t),n(wC,t),n($C,t),n(pr,t),n(KC,t),n(yp,t),n(Rp,t),n(B0,t),n(ZC,t),n(eb,t),n(j1,t),n(an,t),n(W0,t),n(ty,t),n(tb,t),n(nb,t),n(rb,t),n(ap,t),n(up,t),n(V0,t),n(ib,t),n(sb,t),n(ob,t),n(ub,t),n(gn,t),n(ht,t),n(db,t),n(hb,t),n(L0,t),n(ay,t),n(ty,t),n(Qo,t),n(oy,t),n(iy,t),n(rs,t),n(E1,t),n(M0,t),n(ly,t),n(y1,t),n(pb,t),n(Sx,t),n(gb,t),n(ry,t),n(sy,t),n(uy,t),n(lp,t),n(cx,t),n($1,t),n(K0,t),n(mb,t),n(I0,t),n(pl,t),n(yb,t),n(Eb,t),n(dt,t),n(Ab,t),n(j0,t),n(Ve,t),n(Sb,t),n(mW,t),n(vb,t),n(_b,t),n(Cb,t)}($_);var bb={},Op={};Object.defineProperty(Op,"__esModule",{value:!0}),Op.ConstantExpression=Op.ConstantFieldSpace=void 0;const oDe=pl,yW=dt,uDe=dp,aDe=an;class EW{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}Op.ConstantFieldSpace=EW;class lDe extends yW.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class cDe extends yW.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new EW),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new uDe.ExprCompare(new lDe(e),oDe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,aDe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Op.ConstantExpression=cDe;var fDe=F&&F.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),xDe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),dDe=F&&F.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&fDe(e,t,n);return xDe(e,t),e};Object.defineProperty(bb,"__esModule",{value:!0}),bb.MalloyToAST=void 0;const AW=kS,hDe=A1,ee=dDe($_),pDe=xr,gDe=$_,kn=Bn,ZL=Z,mDe=dl,yDe=Op;class SW extends ee.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class e5 extends ee.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const EDe=["##! m4warnings=error"];class ADe extends hDe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of EDe){const s=mDe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof e5||this.astError(s,`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ee.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ee.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new ee.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new pDe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ee.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ee.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ee.Filter([n])}getPlainString(e){const n=(0,kn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,kn.getStringParts)(i))s instanceof AW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,kn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,kn.getStringParts)(e))r instanceof AW.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"Time data parse error"),r=new ee.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ee.isDocStatementOrDocStatementList(r)&&r,"statement");return new ee.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ee.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new yDe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ee.HasParameter({name:(0,kn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ee.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof ee.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ee.isSourceProperty(s)&&s,"source property"),i=new ee.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new ee.TableFunctionSource(n),e);return this.m4advisory(e,"`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainString(e.tablePath());return this.astAt(new ee.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ee.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new ee.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ee.Join&&(n.push(s),s instanceof ee.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof ee.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new ee.Joins(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin&&(s.joinType="one"));const i=new ee.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new ee.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ee.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ee.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ee.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,ZL.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ee.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,kn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.DimensionFieldDeclaration),r=new ee.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.MeasureFieldDeclaration),r=new ee.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ee.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ee.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.DeclareFieldDeclaration),r=new ee.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ee.RenameField((0,kn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ee.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ee.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ee.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ee.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ee.AcceptExceptFieldReference([this.getFieldName(r)]));return new ee.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ee.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new ee.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ee.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ee.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ee.FieldReference||i instanceof ee.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ee.Aggregate(this.getQueryItems(e.queryFieldList(),ee.AggregateFieldDeclaration,ee.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ee.GroupBy(this.getQueryItems(e.queryFieldList(),ee.GroupByFieldDeclaration,ee.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ee.Calculate(this.getQueryItems(e.queryFieldList(),ee.CalculateFieldDeclaration,ee.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ee.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ee.ExprGranularTime(new ee.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ee.ExprSum(void 0,o);else return this.contextError(l,`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ee.ProjectFieldDeclaration,ee.ProjectFieldReference));return this.astAt(new ee.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ee.ProjectFieldReference):void 0,s=this.astAt(new ee.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,kn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ee.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ee.IndexFieldReference);return r.STAR()?this.astAt(new ee.WildcardFieldReference(s),e):this.astAt(s,e)});return new ee.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ee.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ee.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ee.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ee.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ee.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ee.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ee.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ee.Top(r,u)}const o=n.fieldExpr();o&&(i=new ee.Top(r,this.getFieldExpr(o)))}return i||(i=new ee.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ee.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,kn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ee.SourceQueryElement){const s=new ee.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ee.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ee.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ee.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ee.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,kn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ee.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,kn.getId)(e.exploreQueryNameDef()),r=new ee.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ee.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ee.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ee.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ee.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ee.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ee.isComparison(i))return this.astAt(new ee.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new ee.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ee.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ee.ExprNow}visitExprNumber(e){return new ee.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ee.ExprIdReference(this.getFieldPath(e.fieldPath(),ee.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ee.ExprNULL}visitExprExpr(e){return new ee.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ee.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ee.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ee.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ee.isComparison(n))return new ee.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new ee.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ee.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ee.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"Expression illegal inside path.count()"),new ee.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ee.ExprIdReference(r),n);return s==="min"?new ee.ExprMin(a):new ee.ExprMax(a)}else{if(s==="avg")return new ee.ExprAvg(u,i);if(s==="sum")return new ee.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new ee.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ee.ExprCountDistinct(r):new ee.ExprCount,e);if(s==="min"){if(r)return new ee.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ee.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new ee.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ee.ExprAvg(r,i,o);if(s==="sum")return new ee.ExprSum(r,i,o)}return new ee.ExprNULL}visitExprApply(e){return new ee.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ee.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,ZL.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainString({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ee.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ee.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ee.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,kn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ee.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ee.ExprTimeExtract.extractor(i)?this.astAt(new ee.ExprTimeExtract(i,r),e):this.astAt(new ee.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,ZL.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,kn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),ee.ExprTimeExtract.extractor(l)?this.astAt(new ee.ExprTimeExtract(l,s),e):this.astAt(new ee.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ee.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ee.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ee.Pick(n,this.getFieldExpr(e._pickElse)):new ee.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ee.isFieldPropStatement(r)&&r,"field property statement");return new ee.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ee.PartitionBy(e.id().map(n=>this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ee.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ee.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ee.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ee.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ee.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ee.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ee.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new ee.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ee.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ee.ImportSelect((0,kn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ee.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ee.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ee.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ee.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new e5(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new e5(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ee.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ee.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ee.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ee.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new SW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ee.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ee.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ee.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ee.ReferenceView(this.getFieldPath(e.fieldPath(),ee.ViewOrScalarFieldReference))}visitSegOps(e){return new ee.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ee.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ee.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ee.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof gDe.TableSource){const r=new ee.SQSource(n);return this.astAt(r,e)}return new SW}visitSQSQL(e){const n=new ee.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ee.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}bb.MalloyToAST=ADe;var Tb={};Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.MessageLog=void 0;class SDe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}Tb.MessageLog=SDe;var Rb={};Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.Zone=void 0;class vDe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}Rb.Zone=vDe;var Ob={};Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.walkForDocumentSymbols=void 0;const _De=ux,CDe=Bn;class bDe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,CDe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function TDe(t,e,n){const r=new bDe(t,e,[],[]),i=r;return _De.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Ob.walkForDocumentSymbols=TDe;var Nb={};Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.walkForDocumentCompletions=void 0;const RDe=ux,ODe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],NDe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],DDe=["source","explore","query","sql"];class FDe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of ODe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of NDe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of DDe)this.completions.push({type:"model_property",text:`${r}: `})}}}function wDe(t,e,n){const r=new FDe(t,[],n),i=r;return RDe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}Nb.walkForDocumentCompletions=wDe;var Db={};Object.defineProperty(Db,"__esModule",{value:!0}),Db.walkForDocumentHelpContext=void 0;const LDe=w4;class IDe extends LDe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function $De(t,e){return new IDe(e).visit(t)}Db.walkForDocumentHelpContext=$De;var Fb={},cy={};Object.defineProperty(cy,"__esModule",{value:!0}),cy.locationContainsPosition=void 0;function BDe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}cy.locationContainsPosition=BDe,Object.defineProperty(Fb,"__esModule",{value:!0}),Fb.ReferenceList=void 0;const kDe=cy;class PDe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,kDe.locationContainsPosition)(r.location,e))return r}}Fb.ReferenceList=PDe;var wb={};Object.defineProperty(wb,"__esModule",{value:!0}),wb.isNeedResponse=void 0;function MDe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}wb.isNeedResponse=MDe;var Lb={};Object.defineProperty(Lb,"__esModule",{value:!0}),Lb.walkForModelAnnotation=void 0;const jDe=ux;class UDe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function qDe(t,e,n){const r=new UDe(t,e,n),i=r;return jDe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}Lb.walkForModelAnnotation=qDe;var HDe=F&&F.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),zDe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),QDe=F&&F.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&HDe(e,t,n);return zDe(e,t),e};Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.MalloyParserErrorHandler=Fu.MalloyTranslator=Fu.MalloyChildTranslator=Fu.MalloyTranslation=void 0;const vW=kS,GDe=Xv,WDe=w,_W=QDe($_),VDe=bb,YDe=Tb,XDe=El,t5=Rb,KDe=Ob,JDe=Nb,ZDe=Db,eFe=Fb,Ib=wb,tFe=cy,CW=dl,nFe=Lb;class rFe extends GDe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class iFe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1300
1300
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=vW.CharStreams.fromString(e),i=new rFe(r),s=new vW.CommonTokenStream(i),o=new WDe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new TW(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class sFe{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,XDe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logger.log({message:`Malformed URL '${o}'"`,at:{url:e.sourceURL,range:u},severity:"error"})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,Ib.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,Ib.isNeedResponse)(u))return u}return null}}class oFe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new VDe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.log("INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof _W.Unimplemented&&u.log("INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,Ib.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class uFe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,KDe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class aFe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,JDe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class lFe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,ZDe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class cFe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,nFe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class fFe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=CW.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,Ib.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof _W.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logger.log({message:`'${e.sourceURL}' did not parse to malloy document`,at:e.defaultLocation(),severity:"error"});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class n5{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new CW.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new iFe,this.modelAnnotationStep=new cFe(this.parseStep),this.metadataStep=new uFe(this.parseStep),this.completionsStep=new aFe(this.parseStep),this.helpContextStep=new lFe(this.parseStep),this.importsAndTablesStep=new sFe(this.parseStep),this.astStep=new oFe(this.importsAndTablesStep),this.translateStep=new fFe(this.astStep),this.references=new eFe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new bW(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}