@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 Qu)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=Qu;class Eye extends Qu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=Eye;class k7 extends Qu{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=k7;class Aye extends Qu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=Aye;function Dz(t){return t.execute!==void 0}Ve.isDocStatement=Dz;function vye(t){return t instanceof gm||Dz(t)}Ve.isDocStatementOrDocStatementList=vye;class Fz extends Qu{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=Fz;class gm extends Fz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Nz.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,Nz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof gm){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=gm;const Sye="5a79a191-06bc-43cf-9b12-58741cd82970";function wz(t){const e=t.inherits?wz(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 _ye(t){const e=wz(t).join("");return(0,yye.v5)(e,Sye)}class P7 extends Qu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new mye.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new gye.Tag({}),this.modelAnnotationTodoList=[],this.statements=new gm(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=_ye(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,hye.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=P7;var L4={},Yh={},Yr={},b0={};Object.defineProperty(b0,"__esModule",{value:!0}),b0.canMakeEntry=b0.SpaceEntry=void 0;class Cye{}b0.SpaceEntry=Cye;function Tye(t){return"makeEntry"in t}b0.canMakeEntry=Tye,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.SpaceField=void 0;const bye=Z,Rye=b0;class Oye extends Rye.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,bye.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(){}}Yr.SpaceField=Oye,Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.ViewField=void 0;const Nye=Yr;class Dye extends Nye.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Yh.ViewField=Dye,Object.defineProperty(L4,"__esModule",{value:!0}),L4.ASTViewField=void 0;const Fye=Yh;class wye extends Fye.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)}}L4.ASTViewField=wye,Object.defineProperty(fm,"__esModule",{value:!0}),fm.ViewFieldDeclaration=void 0;const Lye=Ve,Iye=Vr,$ye=Gh,Bye=L4;class kye extends Lye.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Iye.extendNoteMethod}makeEntry(e){const n=new Bye.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,$ye.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}fm.ViewFieldDeclaration=kye;var On={};Object.defineProperty(On,"__esModule",{value:!0}),On.LegalRefinementStage=On.QueryClass=void 0;var Lz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Lz||(On.QueryClass=Lz={}));var Iz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Iz||(On.LegalRefinementStage=Iz={})),Object.defineProperty(cm,"__esModule",{value:!0}),cm.NestFieldDeclaration=void 0;const Pye=Gh,Mye=fm,$z=On;class jye extends Mye.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=$z.LegalRefinementStage.Single,this.forceQueryClass=$z.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,Pye.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")}}cm.NestFieldDeclaration=jye;var Xh={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.ErrorFactory=void 0;const Bz={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class M7{static get structDef(){return{...Bz}}static isErrorStructDef(e){return e.name.includes(Bz.name)}static get query(){return{structRef:M7.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Xr.ErrorFactory=M7,Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.DefineSourceList=Xh.DefineSource=void 0;const Uye=Xr,kz=Ve,qye=Vr;class Hye extends kz.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=qye.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),Uye.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`)}}Xh.DefineSource=Hye;class zye extends kz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Xh.DefineSourceList=zye;var Kh={};Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.DefineQueryList=Kh.DefineQuery=void 0;const Pz=Ve,Qye=Vr;class Gye extends Pz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Qye.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})}}Kh.DefineQuery=Gye;class Wye extends Pz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Kh.DefineQueryList=Wye;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Source=void 0;const Vye=Ve;class Yye extends Vye.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)}}}Uo.Source=Yye;var mm={},Jh={},I4={},R0={};Object.defineProperty(R0,"__esModule",{value:!0}),R0.mergeFields=R0.nameFromDef=void 0;function j7(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}R0.nameFromDef=j7;function Xye(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>j7(i))),r=t.filter(i=>!n.has(j7(i)));return r.push(...e),r}R0.mergeFields=Xye;var ym={},Kr={},Gu={};Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.DefinedParameter=Gu.AbstractParameter=Gu.SpaceParam=void 0;const Kye=b0;class U7 extends Kye.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Gu.SpaceParam=U7;class Jye extends U7{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"}}}Gu.AbstractParameter=Jye;class Zye extends U7{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Gu.DefinedParameter=Zye;var ux={};Object.defineProperty(ux,"__esModule",{value:!0}),ux.StructSpaceFieldBase=void 0;const eEe=Yr;class tEe extends eEe.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"}}}ux.StructSpaceFieldBase=tEe;var Em={};Object.defineProperty(Em,"__esModule",{value:!0}),Em.ColumnSpaceField=void 0;const nEe=Yr;class rEe extends nEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Em.ColumnSpaceField=rEe;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.IRViewField=void 0;const iEe=Yh;class sEe extends iEe.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()}}$4.IRViewField=sEe,Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.StructSpaceField=Kr.StaticSpace=void 0;const oEe=Tu,uEe=Z,aEe=Gu,lEe=Yr,B4=ux,cEe=Em,fEe=$4;class Mz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,oEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new jz(e):(0,uEe.isTurtleDef)(e)?new fEe.IRViewField(this,e):new cEe.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 aEe.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 lEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof B4.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof B4.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof B4.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}}Kr.StaticSpace=Mz;class jz extends B4.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new Mz(this.sourceDef)}}Kr.StructSpaceField=jz,Object.defineProperty(ym,"__esModule",{value:!0}),ym.JoinSpaceField=void 0;const xEe=Kr;class dEe extends xEe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}ym.JoinSpaceField=dEe;var Am={};Object.defineProperty(Am,"__esModule",{value:!0}),Am.SpaceSeed=void 0;const hEe=Kr;function Uz(t){return t.type==="fieldSpace"}class pEe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Uz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Uz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new hEe.StaticSpace(this.spaceSpec)),this.asFS)}}Am.SpaceSeed=pEe;var Zh={};Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.ParameterSpace=void 0;const gEe=Gu;class mEe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new gEe.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}}Zh.ParameterSpace=mEe,Object.defineProperty(I4,"__esModule",{value:!0}),I4.DynamicSpace=void 0;const yEe=R0,EEe=Xr,AEe=Yr,vEe=ym,SEe=Yh,qz=Gu,_Ee=Am,CEe=Kr,TEe=ux,bEe=Zh;class REe extends CEe.StaticSpace{constructor(e){const n=new _Ee.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 qz.AbstractParameter(n)));return this}parameterSpace(){return new bEe.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,yEe.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 qz.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 TEe.StructSpaceFieldBase?r.push([a,l]):l instanceof SEe.ViewField?i.push([a,l]):l instanceof AEe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof vEe.JoinSpaceField){const l=a.join.structDef(u);EEe.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}}I4.DynamicSpace=REe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.RefinedSpace=void 0;const OEe=I4,NEe=b0;class q7 extends OEe.DynamicSpace{static filteredFrom(e,n,r){const i=new q7(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,NEe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Jh.RefinedSpace=q7;var O0={},Ns={};Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.DefinitionList=void 0;const DEe=Ve,Hz=Vr;class FEe extends DEe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Hz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Hz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ns.DefinitionList=FEe,Object.defineProperty(O0,"__esModule",{value:!0}),O0.DeclareFields=void 0;const wEe=Ns,LEe=On;class IEe extends wEe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=LEe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}O0.DeclareFields=IEe;var qo={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.nullsafeNot=ln.compressExpr=ln.compose=void 0;const $Ee=Z;function zz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function BEe(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[...zz(t),o,...zz(n)]}ln.compose=BEe;function kEe(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}ln.compressExpr=kEe;function PEe(t,e){return e===void 0||e==="!="||e==="!~"?(0,$Ee.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}ln.nullsafeNot=PEe,Object.defineProperty(qo,"__esModule",{value:!0}),qo.Filter=qo.FilterElement=void 0;const Qz=Z,MEe=ln,Gz=Ve,H7=On;class jEe extends Gz.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,MEe.compressExpr)(n.value),expressionType:n.expressionType}}}qo.FilterElement=jEe;let UEe=class extends Gz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=H7.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?H7.LegalRefinementStage.Tail:H7.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,Qz.expressionIsAggregate)(i.expressionType),o=(0,Qz.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=UEe;var ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Joins=ts.ExpressionJoin=ts.KeyJoin=ts.Join=void 0;const qEe=Z,HEe=ln,zEe=ym,QEe=Ns,GEe=Ve,WEe=Vr,VEe=On,Wz=Xr;class z7 extends GEe.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=WEe.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new zEe.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"),Wz.ErrorFactory.structDef)}}ts.Join=z7;class YEe extends z7{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")}}ts.KeyJoin=YEe;class XEe extends z7{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,qEe.isJoinOn)(i)&&(i.onExpression=(0,HEe.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"),Wz.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}}ts.ExpressionJoin=XEe;class KEe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=VEe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ts.Joins=KEe;var e2={};Object.defineProperty(e2,"__esModule",{value:!0}),e2.FieldListEdit=void 0;const JEe=Ve;class ZEe extends JEe.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}e2.FieldListEdit=ZEe;var t2={};Object.defineProperty(t2,"__esModule",{value:!0}),t2.PrimaryKey=void 0;const eAe=Ve;class tAe extends eAe.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}t2.PrimaryKey=tAe;var n2={};Object.defineProperty(n2,"__esModule",{value:!0}),n2.Views=void 0;const nAe=Ns;class rAe extends nAe.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}n2.Views=rAe;var r2={};Object.defineProperty(r2,"__esModule",{value:!0}),r2.TimezoneStatement=void 0;const iAe=Ve;class sAe extends iAe.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)}}r2.TimezoneStatement=sAe;var N0={};Object.defineProperty(N0,"__esModule",{value:!0}),N0.ModelAnnotation=N0.ObjectAnnotation=void 0;const oAe=ll,uAe=Ve;class Vz extends uAe.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}N0.ObjectAnnotation=Vz;class aAe extends Vz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=oAe.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)}}N0.ModelAnnotation=aAe;var D0={},k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.RenameSpaceField=void 0;const lAe=Yr;class cAe extends lAe.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()}}k4.RenameSpaceField=cAe,Object.defineProperty(D0,"__esModule",{value:!0}),D0.Renames=D0.RenameField=void 0;const fAe=k4,Yz=Ve,xAe=Yr;class dAe extends Yz.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 xAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new fAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}D0.RenameField=dAe;class hAe extends Yz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}D0.Renames=hAe,Object.defineProperty(mm,"__esModule",{value:!0}),mm.RefinedSource=void 0;const pAe=Z,gAe=Jh,mAe=O0,yAe=qo,EAe=ts,AAe=e2,vAe=t2,SAe=n2,_Ae=Uo,CAe=r2,TAe=N0,bAe=D0,RAe=Zh;class OAe extends _Ae.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 TAe.ObjectAnnotation)continue;const g=m;m instanceof vAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof AAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof mAe.DeclareFields||m instanceof EAe.Joins||m instanceof SAe.Views||m instanceof bAe.Renames?o.push(...m.list):m instanceof yAe.Filter?u.push(m):m instanceof CAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new RAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=gAe.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,pAe.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)}}mm.RefinedSource=OAe;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.SourceQueryElement=void 0;const NAe=Ve;class Q7 extends NAe.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 Q7&&n.errored){e=!1;break}return e}}Wu.SourceQueryElement=Q7;var P4={},ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.QuerySource=void 0;const DAe=Uo;class FAe extends DAe.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)}}}ax.QuerySource=FAe;var i2={},vm={};Object.defineProperty(vm,"__esModule",{value:!0}),vm.QueryBase=void 0;const wAe=Gh,LAe=Ve;class IAe extends LAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,wAe.detectAndRemovePartialStages)(e.pipeline,this)}}}vm.QueryBase=IAe,Object.defineProperty(i2,"__esModule",{value:!0}),i2.QueryArrow=void 0;const $Ae=Z,BAe=Uo,Xz=Kr,kAe=vm;class PAe extends kAe.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,$Ae.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Xz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Xz.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}}}i2.QueryArrow=PAe,Object.defineProperty(P4,"__esModule",{value:!0}),P4.SQArrow=void 0;const MAe=Wu,jAe=ax,UAe=i2;class qAe extends MAe.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 UAe.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 jAe.QuerySource(e);return this.has({asSource:n}),n}}P4.SQArrow=qAe;var M4={},s2={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.getStructFieldDef=Ds.getFinalStruct=Ds.opOutputStruct=void 0;const HAe=c0,zAe=_f,G7=Z,Kz=Xr;function Jz(t,e,n){const r=Kz.ErrorFactory.isErrorStructDef(e)||(0,G7.structHasErrors)(e);(0,G7.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,G7.segmentHasErrors)(n);if(!r&&!i)try{return zAe.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 Qu)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=Qu;class Eye extends Qu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=Eye;class k7 extends Qu{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=k7;class Aye extends Qu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=Aye;function Dz(t){return t.execute!==void 0}Ve.isDocStatement=Dz;function vye(t){return t instanceof gm||Dz(t)}Ve.isDocStatementOrDocStatementList=vye;class Fz extends Qu{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=Fz;class gm extends Fz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Nz.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,Nz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof gm){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=gm;const Sye="5a79a191-06bc-43cf-9b12-58741cd82970";function wz(t){const e=t.inherits?wz(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 _ye(t){const e=wz(t).join("");return(0,yye.v5)(e,Sye)}class P7 extends Qu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new mye.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new gye.Tag({}),this.modelAnnotationTodoList=[],this.statements=new gm(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=_ye(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,hye.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=P7;var L4={},Yh={},Yr={},b0={};Object.defineProperty(b0,"__esModule",{value:!0}),b0.canMakeEntry=b0.SpaceEntry=void 0;class Cye{}b0.SpaceEntry=Cye;function Tye(t){return"makeEntry"in t}b0.canMakeEntry=Tye,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.SpaceField=void 0;const bye=Z,Rye=b0;class Oye extends Rye.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,bye.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(){}}Yr.SpaceField=Oye,Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.ViewField=void 0;const Nye=Yr;class Dye extends Nye.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Yh.ViewField=Dye,Object.defineProperty(L4,"__esModule",{value:!0}),L4.ASTViewField=void 0;const Fye=Yh;class wye extends Fye.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)}}L4.ASTViewField=wye,Object.defineProperty(fm,"__esModule",{value:!0}),fm.ViewFieldDeclaration=void 0;const Lye=Ve,Iye=Vr,$ye=Gh,Bye=L4;class kye extends Lye.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Iye.extendNoteMethod}makeEntry(e){const n=new Bye.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,$ye.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}fm.ViewFieldDeclaration=kye;var On={};Object.defineProperty(On,"__esModule",{value:!0}),On.LegalRefinementStage=On.QueryClass=void 0;var Lz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Lz||(On.QueryClass=Lz={}));var Iz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Iz||(On.LegalRefinementStage=Iz={})),Object.defineProperty(cm,"__esModule",{value:!0}),cm.NestFieldDeclaration=void 0;const Pye=Gh,Mye=fm,$z=On;class jye extends Mye.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=$z.LegalRefinementStage.Single,this.forceQueryClass=$z.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,Pye.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")}}cm.NestFieldDeclaration=jye;var Xh={},Xr={};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.ErrorFactory=void 0;const Bz={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class M7{static get structDef(){return{...Bz}}static isErrorStructDef(e){return e.name.includes(Bz.name)}static get query(){return{structRef:M7.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Xr.ErrorFactory=M7,Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.DefineSourceList=Xh.DefineSource=void 0;const Uye=Xr,kz=Ve,qye=Vr;class Hye extends kz.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=qye.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),Uye.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`)}}Xh.DefineSource=Hye;class zye extends kz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Xh.DefineSourceList=zye;var Kh={};Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.DefineQueryList=Kh.DefineQuery=void 0;const Pz=Ve,Qye=Vr;class Gye extends Pz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Qye.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})}}Kh.DefineQuery=Gye;class Wye extends Pz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Kh.DefineQueryList=Wye;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Source=void 0;const Vye=Ve;class Yye extends Vye.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)}}}Uo.Source=Yye;var mm={},Jh={},I4={},R0={};Object.defineProperty(R0,"__esModule",{value:!0}),R0.mergeFields=R0.nameFromDef=void 0;function j7(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}R0.nameFromDef=j7;function Xye(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>j7(i))),r=t.filter(i=>!n.has(j7(i)));return r.push(...e),r}R0.mergeFields=Xye;var ym={},Kr={},Gu={};Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.DefinedParameter=Gu.AbstractParameter=Gu.SpaceParam=void 0;const Kye=b0;class U7 extends Kye.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Gu.SpaceParam=U7;class Jye extends U7{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"}}}Gu.AbstractParameter=Jye;class Zye extends U7{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Gu.DefinedParameter=Zye;var ux={};Object.defineProperty(ux,"__esModule",{value:!0}),ux.StructSpaceFieldBase=void 0;const eEe=Yr;class tEe extends eEe.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"}}}ux.StructSpaceFieldBase=tEe;var Em={};Object.defineProperty(Em,"__esModule",{value:!0}),Em.ColumnSpaceField=void 0;const nEe=Yr;class rEe extends nEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Em.ColumnSpaceField=rEe;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.IRViewField=void 0;const iEe=Yh;class sEe extends iEe.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()}}$4.IRViewField=sEe,Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.StructSpaceField=Kr.StaticSpace=void 0;const oEe=Tu,uEe=Z,aEe=Gu,lEe=Yr,B4=ux,cEe=Em,fEe=$4;class Mz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,oEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new jz(e):(0,uEe.isTurtleDef)(e)?new fEe.IRViewField(this,e):new cEe.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 aEe.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 lEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof B4.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof B4.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof B4.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}}Kr.StaticSpace=Mz;class jz extends B4.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new Mz(this.sourceDef)}}Kr.StructSpaceField=jz,Object.defineProperty(ym,"__esModule",{value:!0}),ym.JoinSpaceField=void 0;const xEe=Kr;class dEe extends xEe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}ym.JoinSpaceField=dEe;var Am={};Object.defineProperty(Am,"__esModule",{value:!0}),Am.SpaceSeed=void 0;const hEe=Kr;function Uz(t){return t.type==="fieldSpace"}class pEe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Uz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Uz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new hEe.StaticSpace(this.spaceSpec)),this.asFS)}}Am.SpaceSeed=pEe;var Zh={};Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.ParameterSpace=void 0;const gEe=Gu;class mEe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new gEe.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}}Zh.ParameterSpace=mEe,Object.defineProperty(I4,"__esModule",{value:!0}),I4.DynamicSpace=void 0;const yEe=R0,EEe=Xr,AEe=Yr,vEe=ym,SEe=Yh,qz=Gu,_Ee=Am,CEe=Kr,TEe=ux,bEe=Zh;class REe extends CEe.StaticSpace{constructor(e){const n=new _Ee.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 qz.AbstractParameter(n)));return this}parameterSpace(){return new bEe.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,yEe.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 qz.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 TEe.StructSpaceFieldBase?r.push([a,l]):l instanceof SEe.ViewField?i.push([a,l]):l instanceof AEe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof vEe.JoinSpaceField){const l=a.join.structDef(u);EEe.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}}I4.DynamicSpace=REe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.RefinedSpace=void 0;const OEe=I4,NEe=b0;class q7 extends OEe.DynamicSpace{static filteredFrom(e,n,r){const i=new q7(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,NEe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Jh.RefinedSpace=q7;var O0={},Ns={};Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.DefinitionList=void 0;const DEe=Ve,Hz=Vr;class FEe extends DEe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Hz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Hz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ns.DefinitionList=FEe,Object.defineProperty(O0,"__esModule",{value:!0}),O0.DeclareFields=void 0;const wEe=Ns,LEe=On;class IEe extends wEe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=LEe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}O0.DeclareFields=IEe;var qo={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.nullsafeNot=ln.compressExpr=ln.compose=void 0;const $Ee=Z;function zz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function BEe(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[...zz(t),o,...zz(n)]}ln.compose=BEe;function kEe(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}ln.compressExpr=kEe;function PEe(t,e){return e===void 0||e==="!="||e==="!~"?(0,$Ee.mkExpr)`NOT(COALESCE(${t}, FALSE))`:t}ln.nullsafeNot=PEe,Object.defineProperty(qo,"__esModule",{value:!0}),qo.Filter=qo.FilterElement=void 0;const Qz=Z,MEe=ln,Gz=Ve,H7=On;class jEe extends Gz.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,MEe.compressExpr)(n.value),expressionType:n.expressionType}}}qo.FilterElement=jEe;let UEe=class extends Gz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=H7.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?H7.LegalRefinementStage.Tail:H7.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,Qz.expressionIsAggregate)(i.expressionType),o=(0,Qz.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=UEe;var ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Joins=ts.ExpressionJoin=ts.KeyJoin=ts.Join=void 0;const qEe=Z,HEe=ln,zEe=ym,QEe=Ns,GEe=Ve,WEe=Vr,VEe=On,Wz=Xr;class z7 extends GEe.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=WEe.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new zEe.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"),Wz.ErrorFactory.structDef)}}ts.Join=z7;class YEe extends z7{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")}}ts.KeyJoin=YEe;class XEe extends z7{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,qEe.isJoinOn)(i)&&(i.onExpression=(0,HEe.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"),Wz.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}}ts.ExpressionJoin=XEe;class KEe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=VEe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ts.Joins=KEe;var e2={};Object.defineProperty(e2,"__esModule",{value:!0}),e2.FieldListEdit=void 0;const JEe=Ve;class ZEe extends JEe.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}e2.FieldListEdit=ZEe;var t2={};Object.defineProperty(t2,"__esModule",{value:!0}),t2.PrimaryKey=void 0;const eAe=Ve;class tAe extends eAe.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}t2.PrimaryKey=tAe;var n2={};Object.defineProperty(n2,"__esModule",{value:!0}),n2.Views=void 0;const nAe=Ns;class rAe extends nAe.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}n2.Views=rAe;var r2={};Object.defineProperty(r2,"__esModule",{value:!0}),r2.TimezoneStatement=void 0;const iAe=Ve;class sAe extends iAe.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)}}r2.TimezoneStatement=sAe;var N0={};Object.defineProperty(N0,"__esModule",{value:!0}),N0.ModelAnnotation=N0.ObjectAnnotation=void 0;const oAe=ll,uAe=Ve;class Vz extends uAe.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}N0.ObjectAnnotation=Vz;class aAe extends Vz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=oAe.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)}}N0.ModelAnnotation=aAe;var D0={},k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.RenameSpaceField=void 0;const lAe=Yr;class cAe extends lAe.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()}}k4.RenameSpaceField=cAe,Object.defineProperty(D0,"__esModule",{value:!0}),D0.Renames=D0.RenameField=void 0;const fAe=k4,Yz=Ve,xAe=Yr;class dAe extends Yz.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 xAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new fAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}D0.RenameField=dAe;class hAe extends Yz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}D0.Renames=hAe,Object.defineProperty(mm,"__esModule",{value:!0}),mm.RefinedSource=void 0;const pAe=Z,gAe=Jh,mAe=O0,yAe=qo,EAe=ts,AAe=e2,vAe=t2,SAe=n2,_Ae=Uo,CAe=r2,TAe=N0,bAe=D0,RAe=Zh;class OAe extends _Ae.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 TAe.ObjectAnnotation)continue;const g=m;m instanceof vAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof AAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof mAe.DeclareFields||m instanceof EAe.Joins||m instanceof SAe.Views||m instanceof bAe.Renames?o.push(...m.list):m instanceof yAe.Filter?u.push(m):m instanceof CAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new RAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=gAe.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,pAe.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)}}mm.RefinedSource=OAe;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.SourceQueryElement=void 0;const NAe=Ve;class Q7 extends NAe.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 Q7&&n.errored){e=!1;break}return e}}Wu.SourceQueryElement=Q7;var P4={},ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.QuerySource=void 0;const DAe=Uo;class FAe extends DAe.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)}}}ax.QuerySource=FAe;var i2={},vm={};Object.defineProperty(vm,"__esModule",{value:!0}),vm.QueryBase=void 0;const wAe=Gh,LAe=Ve;class IAe extends LAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,wAe.detectAndRemovePartialStages)(e.pipeline,this)}}}vm.QueryBase=IAe,Object.defineProperty(i2,"__esModule",{value:!0}),i2.QueryArrow=void 0;const $Ae=Z,BAe=Uo,Xz=Kr,kAe=vm;class PAe extends kAe.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,$Ae.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Xz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Xz.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}}}i2.QueryArrow=PAe,Object.defineProperty(P4,"__esModule",{value:!0}),P4.SQArrow=void 0;const MAe=Wu,jAe=ax,UAe=i2;class qAe extends MAe.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 UAe.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 jAe.QuerySource(e);return this.has({asSource:n}),n}}P4.SQArrow=qAe;var M4={},s2={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.getStructFieldDef=Ds.getFinalStruct=Ds.opOutputStruct=void 0;const HAe=c0,zAe=_f,G7=Z,Kz=Xr;function Jz(t,e,n){const r=Kz.ErrorFactory.isErrorStructDef(e)||(0,G7.structHasErrors)(e);(0,G7.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,G7.segmentHasErrors)(n);if(!r&&!i)try{return zAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1298
1298
  QUERY: ${(0,HAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Kz.ErrorFactory.structDef,dialect:e.dialect}}Ds.opOutputStruct=Jz;function QAe(t,e,n){for(const r of n)e=Jz(t,e,r);return e}Ds.getFinalStruct=QAe;function GAe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ds.getStructFieldDef=GAe,Object.defineProperty(s2,"__esModule",{value:!0}),s2.QueryRefine=void 0;const WAe=Kr,VAe=Ds,YAe=vm;class XAe extends YAe.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 WAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,VAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}s2.QueryRefine=XAe;var Sm={},o2={},Nn={};Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.dateOffset=Nn.timestampOffset=Nn.timeResult=Nn.resolution=Nn.castDateToTimestamp=Nn.castTimestampToDate=Nn.castTo=Nn.timeOffset=void 0;const KAe=Z,Zz=ln;function JAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}Nn.timeOffset=JAe;function ZAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,KAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}Nn.castTo=ZAe;function eve(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}Nn.castTimestampToDate=eve;function tve(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}Nn.castDateToTimestamp=tve;function nve(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Nn.resolution=nve;function rve(t,e){return e?{...t,timeframe:e}:t}Nn.timeResult=rve;function ive(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,Zz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}Nn.timestampOffset=ive;function sve(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,Zz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}Nn.dateOffset=sve;var lx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function ove(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=ove;var dt={},cn={};Object.defineProperty(cn,"__esModule",{value:!0}),cn.FT=void 0;const uve=bu;function cx(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,uve.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}cn.FT=wr,wr.nullT=cx("null"),wr.numberT=cx("number"),wr.stringT=cx("string"),wr.dateT=cx("date"),wr.timestampT=cx("timestamp"),wr.boolT=cx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=cx("boolean","aggregate");var fl={};Object.defineProperty(fl,"__esModule",{value:!0}),fl.isComparison=fl.Comparison=void 0;var W7;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(W7||(fl.Comparison=W7={}));function ave(t){return Object.values(W7).includes(t)}fl.isComparison=ave;var u2={};Object.defineProperty(u2,"__esModule",{value:!0}),u2.isEquality=u2.Equality=void 0;var V7;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(V7||(u2.Equality=V7={}));function lve(t){return Object.values(V7).includes(t)}u2.isEquality=lve;var a2={};Object.defineProperty(a2,"__esModule",{value:!0}),a2.isGranularResult=void 0;function cve(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}a2.isGranularResult=cve,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Dn=Z,l2=hr,xl=ln,fx=cn,j4=Nn,fve=fl,xve=u2,eQ=a2,dve=Ve;class hve extends Error{}class tQ extends dve.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=fx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!fx.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 ${fx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return uQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Dn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=tQ;class Y7 extends tQ{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[fx.FT.timestampT,fx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Dn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!fx.FT.typeEq(s,fx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,l2.errorFor)("illegal unit expression");let o;if((0,eQ.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,j4.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,j4.timeResult)({dataType:"timestamp",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Dn.isDateUnit)(this.timeframe)?(0,j4.timeResult)({dataType:"date",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,j4.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,l2.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=Y7;function nQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function pve(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=pve;function rQ(t,e,n,r){const i=(0,Dn.isTimeFieldType)(e.dataType),s=(0,Dn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=nQ(e,"timestamp"),u=nQ(r,"timestamp");if(o&&u)return(0,xl.compose)(o,n,u)}else return(0,xl.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 iQ(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 gve(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 mve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("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=Cm(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=rQ(e,i,n,s)||(0,xl.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,xl.compose)(i.value,"LIKE",s.value);else{const l=iQ(i,s);if(l===void 0)throw new hve("Incompatible types for match('~') operator");a=l}a=(0,xl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=gve(i,n,s);l?a=l:a=(0,xl.nullsafeNot)(iQ(i,s)||(0,xl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function yve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("boolean",i,s);if(o)return o;const u=(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),a=Cm(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=rQ(e,i,n,s)||(0,xl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function sQ(t,...e){return e.includes(t)}function oQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("number",i,s);if(o)return o;const u=Cm(e,i,r,s);if(u)return u;const a=(0,Dn.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,xl.compose)(i.value,n,s.value),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,l2.errorFor)("numbers required")}function Eve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return o;const u=(0,Dn.isTimeFieldType)(i.dataType),a=_m(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,eQ.isGranularResult)(i))l=new Y7(r,i.timeframe);else if(i.dataType==="date")l=new Y7(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,l2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return oQ(t,e,n,r)}function uQ(t,e,n,r){if((0,xve.isEquality)(n))return mve(t,e,n,r);if((0,fve.isComparison)(n))return yve(t,e,n,r);if(sQ(n,"+","-"))return Eve(t,e,n,r);if(n==="*")return oQ(t,e,n,r);if(sQ(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=_m("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,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,l2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,l2.errorFor)("applybinary bad operator")}dt.applyBinary=uQ;function _m(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Dn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Dn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Cm(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Dn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Dn.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(lx,"__esModule",{value:!0}),lx.ExprIdReference=void 0;const Ave=Z,vve=hr,Sve=dt;class _ve extends Sve.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,Ave.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,vve.errorFor)(n.error)}}lx.ExprIdReference=_ve,Object.defineProperty(o2,"__esModule",{value:!0}),o2.NamedSource=void 0;const X7=Z,Cve=Uo,Tve=Xr,bve=Nn,K7=Ve,Rve=lx,Ove=Zh;class Nve extends Cve.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 K7.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof K7.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 K7.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,X7.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 Rve.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 Ove.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,X7.isCastType)(f.type)&&(p=(0,bve.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,X7.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=Tve.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}}o2.NamedSource=Nve;var Tm={},U4={};Object.defineProperty(U4,"__esModule",{value:!0}),U4.QueryHeadStruct=void 0;const Dve=Z,Fve=Uo,wve=o2;class Lve extends Fve.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,Dve.refIsStructDef)(this.fromRef))return this.fromRef;const n=new wve.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}U4.QueryHeadStruct=Lve,Object.defineProperty(Tm,"__esModule",{value:!0}),Tm.QueryReference=void 0;const J7=Xr,Ive=Ve,$ve=U4,Bve=Z,kve=Ds;class Pve extends Ive.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:J7.ErrorFactory.structDef,outputStruct:J7.ErrorFactory.structDef,query:J7.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new $ve.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,kve.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,Bve.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}}Tm.QueryReference=Pve,Object.defineProperty(Sm,"__esModule",{value:!0}),Sm.SQReference=void 0;const Mve=Wu,jve=ax,Uve=o2,aQ=Tm;class qve extends Mve.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 aQ.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 aQ.QueryReference(this.ref);this.asSource=new jve.QuerySource(n)}else if(e.type==="struct")this.asSource=new Uve.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}}Sm.SQReference=qve,Object.defineProperty(M4,"__esModule",{value:!0}),M4.SQRefine=void 0;const Hve=Wu,zve=ax,Qve=s2,Gve=Sm;class Wve extends Hve.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 Gve.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 Qve.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new zve.QuerySource(e);return this.has({queryAsSource:n}),n}}}M4.SQRefine=Wve;var q4={},bm={};Object.defineProperty(bm,"__esModule",{value:!0}),bm.QueryRaw=void 0;const Vve=Z,Yve=Ve;class Xve extends Yve.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,Vve.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}}bm.QueryRaw=Xve;var Rm={},H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.makeSQLBlock=void 0;const Kve=Z,Jve=Yt;function Zve(t,e){const n={name:`md5:/${e||"$default"}//${eSe(t)}`,select:t};return e&&(n.connection=e),n}H4.makeSQLBlock=Zve;function eSe(t){const e=t.map(n=>(0,Kve.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,Jve.generateHash)(e.join(";"))}Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.SQLSource=void 0;const tSe=H4,nSe=Uo,z4=Xr;class rSe extends nSe.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,tSe.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 z4.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"),z4.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
  `)),z4.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"),z4.ErrorFactory.structDef}}Rm.SQLSource=rSe,Object.defineProperty(q4,"__esModule",{value:!0}),q4.SQSource=void 0;const iSe=Wu,sSe=bm,oSe=Rm;class uSe extends iSe.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 oSe.SQLSource){const e=new sSe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}q4.SQSource=uSe;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.SQExtend=void 0;const aSe=mm,lSe=Wu;class cSe extends lSe.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 aSe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}Q4.SQExtend=cSe;var G4={},c2={},f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.BinaryBoolean=void 0;const lQ=Z,fSe=hr,xSe=cn,dSe=dt,hSe=ln;class pSe extends dSe.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=[xSe.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,lQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,lQ.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,hSe.compose)(n.value,this.op,r.value)}}return(0,fSe.errorFor)("logial required boolean")}}f2.BinaryBoolean=pSe,Object.defineProperty(c2,"__esModule",{value:!0}),c2.ExprCompare=void 0;const Xt=cn,gSe=f2,mSe={"~":[Xt.FT.stringT],"!~":[Xt.FT.stringT],"<":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT],"<=":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT],"=":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT],"!=":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT],">=":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT],">":[Xt.FT.numberT,Xt.FT.stringT,Xt.FT.dateT,Xt.FT.timestampT]};class ySe extends gSe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=mSe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}c2.ExprCompare=ySe;var Om={},x2={};Object.defineProperty(x2,"__esModule",{value:!0}),x2.ExprTime=void 0;const ESe=Z,ASe=ln,vSe=dt;class Z7 extends vSe.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,ESe.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,ASe.compressExpr)([i])}return new Z7(e,r,n.expressionType)}}x2.ExprTime=Z7;var F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.Range=void 0;const cQ=Z,SSe=hr,_Se=dt,CSe=ln;class TSe extends _Se.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,cQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,cQ.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,CSe.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,SSe.errorFor)("a range is not a value")}}F0.Range=TSe,Object.defineProperty(Om,"__esModule",{value:!0}),Om.ExprGranularTime=void 0;const eD=Z,bSe=hr,fQ=cn,xQ=Nn,RSe=dt,W4=x2,dQ=F0;class OSe extends RSe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[fQ.FT.timestampT,fQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,eD.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,eD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,bSe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=W4.ExprTime.fromValue("timestamp",n),u=new W4.ExprTime("timestamp",(0,xQ.timeOffset)("timestamp",n.value,"+",(0,eD.mkExpr)`1`,this.units),n.expressionType);return new dQ.Range(o,u)}const r=new W4.ExprTime("date",n.value,n.expressionType),i=(0,xQ.timeOffset)("date",n.value,"+",["1"],this.units),s=new W4.ExprTime("date",i,n.expressionType);return new dQ.Range(r,s)}}Om.ExprGranularTime=OSe,Object.defineProperty(G4,"__esModule",{value:!0}),G4.Apply=void 0;const NSe=fl,DSe=c2,FSe=a2,hQ=Om;class wSe extends DSe.ExprCompare{constructor(e,n){super(e,NSe.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,FSe.isGranularResult)(r)&&(n=new hQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof hQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}G4.Apply=wSe;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.BinaryNumeric=void 0;const LSe=cn,ISe=dt;class $Se extends ISe.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=[LSe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}d2.BinaryNumeric=$Se;var V4={};Object.defineProperty(V4,"__esModule",{value:!0}),V4.Boolean=void 0;const BSe=dt,kSe=cn;let PSe=class extends BSe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...kSe.FT.boolT,value:[this.value]}}};V4.Boolean=PSe;var w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.FunctionOrdering=w0.FunctionOrderBy=void 0;const tD=Z,pQ=Ve,MSe=lx;class jSe extends pQ.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,tD.expressionIsAggregate)(n.expressionType)||((0,tD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof MSe.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,tD.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}}}w0.FunctionOrderBy=jSe;class USe extends pQ.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))}}w0.FunctionOrdering=USe;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.ExprAddSub=void 0;const qSe=d2;class HSe extends qSe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Y4.ExprAddSub=HSe;var dl={},ht={},Nm={};Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.ReferenceField=void 0;const gQ=Yr;class zSe extends gQ.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 gQ.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"}}}Nm.ReferenceField=zSe;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 Fn=bu;function QSe(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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=QSe;function GSe(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Fn.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=GSe;function WSe(t,e){if(!(0,Fn.expressionIsScalar)(t.expressionType))if((0,Fn.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,Fn.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=WSe;function VSe(t,e){if(!(0,Fn.expressionIsAggregate)(t.expressionType))if((0,Fn.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,Fn.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=VSe;function YSe(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Fn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Xn.typecheckDeclare=YSe;function XSe(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Fn.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=XSe;function KSe(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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=KSe;function JSe(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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=JSe,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 ZSe=Nm,e4e=Ns,mQ=Ve,yQ=Vr,L0=Xn;class ns extends mQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=yQ.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 ZSe.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=ns;class t4e extends ns{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=t4e;class n4e extends ns{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=n4e;class r4e extends ns{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=r4e;class i4e extends ns{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=i4e;class s4e extends ns{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,L0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=s4e;class nD extends ns{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,L0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return nD.indexOutputName(this.path)}}ht.IndexFieldReference=nD;class o4e extends ns{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,L0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=o4e;class u4e extends ns{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,L0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=u4e;class a4e extends ns{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,L0.typecheckProject)(e,this)}}ht.ProjectFieldReference=a4e;class l4e extends ns{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,L0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=l4e;class c4e extends ns{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,L0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=c4e;class f4e extends ns{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,L0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=f4e;class x4e extends ns{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=x4e;class d4e extends mQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=yQ.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=d4e;class h4e extends e4e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=h4e,Object.defineProperty(dl,"__esModule",{value:!0}),dl.ExprAggregateFunction=void 0;const EQ=Z,p4e=Yt,Dm=hr,g4e=Kr,m4e=ux,y4e=cn,E4e=ht,A4e=dt,v4e=Yr,S4e=lx;class _4e extends A4e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[y4e.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,EQ.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=>C4e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof m4e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,Dm.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,Dm.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,Dm.errorFor)("agggregate without expression");if((0,EQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,Dm.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=iD(a,c),p=sD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=T4e(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,Dm.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(...rD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...rD(e,r))}return n}}dl.ExprAggregateFunction=_4e;function C4e(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 rD(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 g4e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof v4e.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,p4e.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=rD(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 iD(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 sD(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 T4e(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=iD(i,e),o=sD(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=iD(l,e),f=sD(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 E4e.FieldReference?`${n.refString}.${r}()`:n instanceof S4e.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 X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.ExprAlternationTree=void 0;const AQ=Z,b4e=hr,R4e=f2,O4e=ln;class N4e extends R4e.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,AQ.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,AQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,O4e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,b4e.errorFor)("no value from alternation tree")}}X4.ExprAlternationTree=N4e;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.ExprAsymmetric=void 0;const D4e=dl;class F4e extends D4e.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}`}}}}h2.ExprAsymmetric=F4e;var K4={};Object.defineProperty(K4,"__esModule",{value:!0}),K4.ExprAvg=void 0;const w4e=h2;class L4e extends w4e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}K4.ExprAvg=L4e;var J4={};Object.defineProperty(J4,"__esModule",{value:!0}),J4.ExprCast=void 0;const I4e=Nn,$4e=dt,B4e=ln;class k4e extends $4e.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,B4e.compressExpr)((0,I4e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}J4.ExprCast=k4e;var Z4={};Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.ExprCoalesce=void 0;const oD=bu,vQ=cn,P4e=dt;class M4e extends P4e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=vQ.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(vQ.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,oD.maxExpressionType)(n.expressionType,r.expressionType),value:(0,oD.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,oD.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Z4.ExprCoalesce=M4e;var e_={};Object.defineProperty(e_,"__esModule",{value:!0}),e_.ExprCount=void 0;const j4e=dl;class U4e extends j4e.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"}}}e_.ExprCount=U4e;var t_={};Object.defineProperty(t_,"__esModule",{value:!0}),t_.ExprCountDistinct=void 0;const n_=cn,q4e=dl;class H4e extends q4e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[n_.FT.numberT,n_.FT.stringT,n_.FT.dateT,n_.FT.timestampT]}}t_.ExprCountDistinct=H4e;var r_={},I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.Limit=void 0;const z4e=Ve,Q4e=On;class G4e extends z4e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Q4e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}I0.Limit=G4e;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PartitionBy=void 0;const W4e=Ve;class V4e extends W4e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}p2.PartitionBy=V4e;var Fm={},$0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.FieldName=void 0;const Y4e=Ve;class X4e extends Y4e.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])}}$0.FieldName=X4e,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.ExprFunc=void 0;const uo=Z,Vu=hr,K4e=ux,J4e=dt,Z4e=$0,SQ=ln;class e_e extends J4e.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,uo.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,SQ.compressExpr)(M),evalSpace:(0,uo.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,Vu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Vu.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,uo.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 K4e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Vu.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Vu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=t_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Vu.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,uo.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,uo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,uo.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,Vu.errorFor)("cannot call with source");const v={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let _=[v];const S=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=S?p.dialect[S]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${S}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,uo.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));v.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?v.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,uo.expressionIsAnalytic)(z.found.typeDesc().expressionType)||(0,uo.expressionIsUngroupedAggregate)(z.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}v.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,Vu.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=n_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,Vu.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 Z4e.FieldName(Q.name);this.has({name:oe});const he=e.lookup([oe]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,Vu.errorFor)("invalid interpolated field");he.found.refType==="parameter"?Y.push({type:"parameter",path:[Q.name]}):Y.push({type:"field",path:[Q.name]})}_=[{type:"sql-string",e:Y}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Vu.errorFor)("invalid return type");const T=(0,uo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=T==="constant"?"constant":(0,uo.expressionIsScalar)(A)?T:"output";return{dataType:E.dataType,expressionType:A,value:(0,SQ.compressExpr)(_),evalSpace:O}}}Fm.ExprFunc=e_e;function t_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,uo.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 n_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(r_,"__esModule",{value:!0}),r_.ExprProps=void 0;const r_e=Z,i_e=hr,s_e=cn,o_e=w0,u_e=I0,a_e=p2,l_e=dt,c_e=Fm;class f_e extends l_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=s_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,r_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,i_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof a_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof u_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 o_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 c_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}r_.ExprProps=f_e;var i_={};Object.defineProperty(i_,"__esModule",{value:!0}),i_.ExprLogicalOp=void 0;const x_e=f2,_Q=cn;class d_e extends x_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[_Q.FT.boolT,_Q.FT.aggregateBoolT]}}i_.ExprLogicalOp=d_e;var s_={};Object.defineProperty(s_,"__esModule",{value:!0}),s_.ExprMax=void 0;const o_=cn,h_e=dl;class p_e extends h_e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[o_.FT.numberT,o_.FT.stringT,o_.FT.dateT,o_.FT.timestampT]}returns(e){return e.dataType}}s_.ExprMax=p_e;var u_={};Object.defineProperty(u_,"__esModule",{value:!0}),u_.ExprMin=void 0;const a_=cn,g_e=dl;class m_e extends g_e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[a_.FT.numberT,a_.FT.stringT,a_.FT.dateT,a_.FT.timestampT]}returns(e){return e.dataType}}u_.ExprMin=m_e;var l_={};Object.defineProperty(l_,"__esModule",{value:!0}),l_.ExprMinus=void 0;const y_e=hr,CQ=cn,E_e=dt;class A_e extends E_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[CQ.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return CQ.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,y_e.errorFor)("negate requires number")}}l_.ExprMinus=A_e;var c_={};Object.defineProperty(c_,"__esModule",{value:!0}),c_.ExprMulDiv=void 0;const v_e=d2;class S_e extends v_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}c_.ExprMulDiv=S_e;var f_={},wm={};Object.defineProperty(wm,"__esModule",{value:!0}),wm.Unary=void 0;const __e=dt;class C_e extends __e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}wm.Unary=C_e,Object.defineProperty(f_,"__esModule",{value:!0}),f_.ExprNot=void 0;const TQ=cn,T_e=wm,b_e=ln;class R_e extends T_e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[TQ.FT.boolT,TQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,b_e.nullsafeNot)(n.value):["false"]}}}f_.ExprNot=R_e;var x_={};Object.defineProperty(x_,"__esModule",{value:!0}),x_.ExprNow=void 0;const O_e=dt;class N_e extends O_e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}x_.ExprNow=N_e;var d_={};Object.defineProperty(d_,"__esModule",{value:!0}),d_.ExprNULL=void 0;const D_e=dt;class F_e extends D_e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}d_.ExprNULL=F_e;var h_={};Object.defineProperty(h_,"__esModule",{value:!0}),h_.ExprNumber=void 0;const w_e=cn,L_e=dt;class I_e extends L_e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...w_e.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}h_.ExprNumber=I_e;var p_={};Object.defineProperty(p_,"__esModule",{value:!0}),p_.ExprParens=void 0;const $_e=dt;class B_e extends $_e.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,")"]}}}p_.ExprParens=B_e;var g_={};Object.defineProperty(g_,"__esModule",{value:!0}),g_.ExprRegEx=void 0;const k_e=dt;class P_e extends k_e.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"}}}g_.ExprRegEx=P_e;var m_={};Object.defineProperty(m_,"__esModule",{value:!0}),m_.ExprString=void 0;const M_e=dt,j_e=cn;class U_e extends M_e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...j_e.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}m_.ExprString=U_e;var y_={};Object.defineProperty(y_,"__esModule",{value:!0}),y_.ExprSum=void 0;const q_e=h2;class H_e extends q_e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}y_.ExprSum=H_e;var E_={};Object.defineProperty(E_,"__esModule",{value:!0}),E_.ExprTimeExtract=void 0;const xx=Z,B0=hr,uD=dt,z_e=F0;class Lm extends uD.ExpressionDef{static extractor(e){const n=Lm.pluralMap[e];if(n)return n;if((0,xx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=Lm.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,B0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof z_e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,xx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,xx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,B0.errorFor)("extract from error").value};if(!(0,xx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,B0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,xx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,B0.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,uD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,uD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,B0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,B0.errorFor)(`${n} civil extraction`)):(0,xx.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,B0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,xx.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,B0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}E_.ExprTimeExtract=Lm,Lm.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var A_={},Ho={},v_={};Object.defineProperty(v_,"__esModule",{value:!0}),v_.QueryInputSpace=void 0;const Q_e=ts,G_e=Am,W_e=Jh;class V_e extends W_e.RefinedSpace{constructor(e,n){const r=new G_e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Q_e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}v_.QueryInputSpace=V_e;var Y_e=N&&N.__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]}),X_e=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),K_e=N&&N.__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)&&Y_e(e,t,n);return X_e(e,t),e};Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.ReduceFieldSpace=Ho.QuerySpace=Ho.QueryOperationSpace=void 0;const S_=K_e(Z),aD=R0,J_e=$0,Z_e=Yr,e5e=ht,t5e=Jh,n5e=Em,r5e=Kr,i5e=v_;class bQ extends t5e.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new i5e.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 r5e.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();S_.isAtomicFieldType(l.dataType)&&S_.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)}}Ho.QueryOperationSpace=bQ;class RQ extends bQ{addRefineFromFields(e){var n;if(S_.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new J_e.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 n5e.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof e5e.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Z_e.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)&&!o5e(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(S_.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,aD.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,aD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,aD.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}}Ho.QuerySpace=RQ;class s5e extends RQ{constructor(){super(...arguments),this.segmentType="reduce"}}Ho.ReduceFieldSpace=s5e;function o5e(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(A_,"__esModule",{value:!0}),A_.ExprUngroup=void 0;const OQ=Z,lD=hr,u5e=Ho,a5e=cn,l5e=dt;class c5e extends l5e.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=a5e.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,OQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,lD.errorFor)("ungrouped scalar");if((0,OQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,lD.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 u5e.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,lD.errorFor)("ungrouped type check")}}A_.ExprUngroup=c5e;var __={};Object.defineProperty(__,"__esModule",{value:!0}),__.ForRange=void 0;const NQ=bu,cD=hr,DQ=cn,C_=Nn,f5e=dt,T_=x2,FQ=F0;class x5e extends f5e.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=[DQ.FT.timestampT,DQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,cD.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,NQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,NQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,cD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,C_.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,C_.timeOffset)("date",i.value,"+",o.value,u),g=new T_.ExprTime("date",m);return new FQ.Range(p,g).apply(e,n,r)}const l=T_.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,C_.castDateToTimestamp)(f),c=new T_.ExprTime("timestamp",f,i.expressionType)}const x=(0,C_.timeOffset)("timestamp",f,"+",o.value,u),h=new T_.ExprTime("timestamp",x,i.expressionType);return new FQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,cD.errorFor)("range has no value")}}__.ForRange=x5e;var pr={};class dx extends Error{}class d5e extends dx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class h5e extends dx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class p5e extends dx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class Im extends dx{}class wQ extends dx{constructor(e){super(`Invalid unit ${e}`)}}class ao extends dx{}class k0 extends dx{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Fs="long",fD={year:ke,month:ke,day:ke},LQ={year:ke,month:zo,day:ke},g5e={year:ke,month:zo,day:ke,weekday:zo},IQ={year:ke,month:Fs,day:ke},$Q={year:ke,month:Fs,day:ke,weekday:Fs},BQ={hour:ke,minute:ke},kQ={hour:ke,minute:ke,second:ke},PQ={hour:ke,minute:ke,second:ke,timeZoneName:zo},MQ={hour:ke,minute:ke,second:ke,timeZoneName:Fs},jQ={hour:ke,minute:ke,hourCycle:"h23"},UQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},qQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},HQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Fs},zQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},QQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},GQ={year:ke,month:zo,day:ke,hour:ke,minute:ke},WQ={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},m5e={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},VQ={year:ke,month:Fs,day:ke,hour:ke,minute:ke,timeZoneName:zo},YQ={year:ke,month:Fs,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},XQ={year:ke,month:Fs,day:ke,weekday:Fs,hour:ke,minute:ke,timeZoneName:Fs},KQ={year:ke,month:Fs,day:ke,weekday:Fs,hour:ke,minute:ke,second:ke,timeZoneName:Fs};function vt(t){return typeof t>"u"}function hx(t){return typeof t=="number"}function b_(t){return typeof t=="number"&&t%1===0}function y5e(t){return typeof t=="string"}function E5e(t){return Object.prototype.toString.call(t)==="[object Date]"}function JQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function A5e(t){return Array.isArray(t)?t:[t]}function ZQ(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 v5e(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function g2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function hl(t,e,n){return b_(t)&&t>=e&&t<=n}function S5e(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 P0(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function px(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function xD(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function dD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function $m(t){return t%4===0&&(t%100!==0||t%400===0)}function Bm(t){return $m(t)?366:365}function R_(t,e){const n=S5e(e-1,12)+1,r=t+(e-n)/12;return n===2?$m(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function hD(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 O_(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 pD(t){return t>99?t:t>60?1900+t:2e3+t}function eG(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 N_(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 tG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new ao(`Invalid unit value ${t}`);return e}function D_(t,e){const n={};for(const r in t)if(g2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=tG(i)}return n}function km(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 F_(t){return v5e(t,["hour","minute","second","millisecond"])}const nG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,_5e=["January","February","March","April","May","June","July","August","September","October","November","December"],rG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],C5e=["J","F","M","A","M","J","J","A","S","O","N","D"];function iG(t){switch(t){case"narrow":return[...C5e];case"short":return[...rG];case"long":return[..._5e];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 sG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],oG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],T5e=["M","T","W","T","F","S","S"];function uG(t){switch(t){case"narrow":return[...T5e];case"short":return[...oG];case"long":return[...sG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const aG=["AM","PM"],b5e=["Before Christ","Anno Domini"],R5e=["BC","AD"],O5e=["B","A"];function lG(t){switch(t){case"narrow":return[...O5e];case"short":return[...R5e];case"long":return[...b5e];default:return null}}function N5e(t){return aG[t.hour<12?0:1]}function D5e(t,e){return uG(e)[t.weekday-1]}function F5e(t,e){return iG(e)[t.month-1]}function w5e(t,e){return lG(e)[t.year<0?0:1]}function L5e(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 cG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const I5e={D:fD,DD:LQ,DDD:IQ,DDDD:$Q,t:BQ,tt:kQ,ttt:PQ,tttt:MQ,T:jQ,TT:UQ,TTT:qQ,TTTT:HQ,f:zQ,ff:GQ,fff:VQ,ffff:XQ,F:QQ,FF:WQ,FFF:YQ,FFFF:KQ};class rs{static create(e,n={}){return new rs(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 I5e[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?N5e(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?F5e(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?D5e(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=rs.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?w5e(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 cG(rs.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=rs.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 cG(s,i(u))}}class Qo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let m2=class{get type(){throw new k0}get name(){throw new k0}get ianaName(){return this.name}get isUniversal(){throw new k0}offsetName(e,n){throw new k0}formatOffset(e,n){throw new k0}offset(e){throw new k0}equals(e){throw new k0}get isValid(){throw new k0}},gD=null;class w_ extends m2{static get instance(){return gD===null&&(gD=new w_),gD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return eG(e,n,r)}formatOffset(e,n){return km(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let L_={};function $5e(t){return L_[t]||(L_[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"})),L_[t]}const B5e={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function k5e(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 P5e(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=B5e[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let I_={};class Yu extends m2{static create(e){return I_[e]||(I_[e]=new Yu(e)),I_[e]}static resetCache(){I_={},L_={}}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=Yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return eG(e,n,r,this.name)}formatOffset(e,n){return km(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=$5e(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?P5e(r,n):k5e(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=hD({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 mD=null;class Jr extends m2{static get utcInstance(){return mD===null&&(mD=new Jr(0)),mD}static instance(e){return e===0?Jr.utcInstance:new Jr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Jr(N_(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${km(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${km(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return km(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 fG extends m2{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 M0(t,e){if(vt(t)||t===null)return e;if(t instanceof m2)return t;if(y5e(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Jr.utcInstance:Jr.parseSpecifier(n)||Yu.create(t)}else return hx(t)?Jr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new fG(t)}let xG=()=>Date.now(),dG="system",hG=null,pG=null,gG=null,mG;class zn{static get now(){return xG}static set now(e){xG=e}static set defaultZone(e){dG=e}static get defaultZone(){return M0(dG,w_.instance)}static get defaultLocale(){return hG}static set defaultLocale(e){hG=e}static get defaultNumberingSystem(){return pG}static set defaultNumberingSystem(e){pG=e}static get defaultOutputCalendar(){return gG}static set defaultOutputCalendar(e){gG=e}static get throwOnInvalid(){return mG}static set throwOnInvalid(e){mG=e}static resetCaches(){pn.resetCache(),Yu.resetCache()}}let yG={};function M5e(t,e={}){const n=JSON.stringify([t,e]);let r=yG[n];return r||(r=new Intl.ListFormat(t,e),yG[n]=r),r}let yD={};function ED(t,e={}){const n=JSON.stringify([t,e]);let r=yD[n];return r||(r=new Intl.DateTimeFormat(t,e),yD[n]=r),r}let AD={};function j5e(t,e={}){const n=JSON.stringify([t,e]);let r=AD[n];return r||(r=new Intl.NumberFormat(t,e),AD[n]=r),r}let vD={};function U5e(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=vD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),vD[i]=s),s}let Pm=null;function q5e(){return Pm||(Pm=new Intl.DateTimeFormat().resolvedOptions().locale,Pm)}function H5e(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=ED(t).resolvedOptions()}catch{n=ED(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function z5e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Q5e(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function G5e(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 $_(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function W5e(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 V5e{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=j5e(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):dD(e,3);return Hn(n,this.padTo)}}}class Y5e{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&&Yu.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=ED(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class X5e{constructor(e,n,r){this.opts={style:"long",...r},!n&&JQ()&&(this.rtf=U5e(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):L5e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class pn{static fromOpts(e){return pn.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":q5e()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new pn(o,u,a,s)}static resetCache(){Pm=null,yD={},AD={},vD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return pn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=H5e(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=z5e(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=W5e(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:pn.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 $_(this,e,r,iG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=Q5e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return $_(this,e,r,uG,()=>{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]=G5e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return $_(this,void 0,e,()=>aG,()=>{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 $_(this,e,n,lG,()=>{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 V5e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Y5e(e,this.intl,n)}relFormatter(e={}){return new X5e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return M5e(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 y2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function E2(...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 A2(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 EG(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=P0(e[n+i]);return[r,null,n+i]}}const AG=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,K5e=`(?:${AG.source}?(?:\\[(${nG.source})\\])?)?`,SD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,vG=RegExp(`${SD.source}${K5e}`),_D=RegExp(`(?:T${vG.source})?`),J5e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Z5e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,eCe=/(\d{4})-?(\d{3})/,tCe=EG("weekYear","weekNumber","weekDay"),nCe=EG("year","ordinal"),rCe=/(\d{4})-(\d\d)-(\d\d)/,SG=RegExp(`${SD.source} ?(?:${AG.source}|(${nG.source}))?`),iCe=RegExp(`(?: ${SG.source})?`);function v2(t,e,n){const r=t[e];return vt(r)?n:P0(r)}function sCe(t,e){return[{year:v2(t,e),month:v2(t,e+1,1),day:v2(t,e+2,1)},null,e+3]}function S2(t,e){return[{hours:v2(t,e,0),minutes:v2(t,e+1,0),seconds:v2(t,e+2,0),milliseconds:xD(t[e+3])},null,e+4]}function Mm(t,e){const n=!t[e]&&!t[e+1],r=N_(t[e+1],t[e+2]),i=n?null:Jr.instance(r);return[{},i,e+3]}function jm(t,e){const n=t[e]?Yu.create(t[e]):null;return[{},n,e+1]}const oCe=RegExp(`^T?${SD.source}$`),uCe=/^-?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 aCe(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(px(n)),months:x(px(r)),weeks:x(px(i)),days:x(px(s)),hours:x(px(o)),minutes:x(px(u)),seconds:x(px(a),a==="-0"),milliseconds:x(xD(l),f)}]}const lCe={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 CD(t,e,n,r,i,s,o){const u={year:e.length===2?pD(P0(e)):P0(e),month:rG.indexOf(n)+1,day:P0(r),hour:P0(i),minute:P0(s)};return o&&(u.second=P0(o)),t&&(u.weekday=t.length>3?sG.indexOf(t)+1:oG.indexOf(t)+1),u}const cCe=/^(?:(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 fCe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=CD(e,i,r,n,s,o,u);let h;return a?h=lCe[a]:l?h=0:h=N_(c,f),[x,new Jr(h)]}function xCe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const dCe=/^(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$/,hCe=/^(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$/,pCe=/^(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 _G(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,i,r,n,s,o,u),Jr.utcInstance]}function gCe(t){const[,e,n,r,i,s,o,u]=t;return[CD(e,u,n,r,i,s,o),Jr.utcInstance]}const mCe=y2(J5e,_D),yCe=y2(Z5e,_D),ECe=y2(eCe,_D),ACe=y2(vG),CG=E2(sCe,S2,Mm,jm),vCe=E2(tCe,S2,Mm,jm),SCe=E2(nCe,S2,Mm,jm),_Ce=E2(S2,Mm,jm);function CCe(t){return A2(t,[mCe,CG],[yCe,vCe],[ECe,SCe],[ACe,_Ce])}function TCe(t){return A2(xCe(t),[cCe,fCe])}function bCe(t){return A2(t,[dCe,_G],[hCe,_G],[pCe,gCe])}function RCe(t){return A2(t,[uCe,aCe])}const OCe=E2(S2);function NCe(t){return A2(t,[oCe,OCe])}const DCe=y2(rCe,iCe),FCe=y2(SG),wCe=E2(S2,Mm,jm);function LCe(t){return A2(t,[DCe,CG],[FCe,wCe])}const ICe="Invalid Duration",TG={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}},$Ce={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},...TG},lo=146097/400,_2=146097/4800,BCe={years:{quarters:4,months:12,weeks:lo/7,days:lo,hours:lo*24,minutes:lo*24*60,seconds:lo*24*60*60,milliseconds:lo*24*60*60*1e3},quarters:{months:3,weeks:lo/28,days:lo/4,hours:lo*24/4,minutes:lo*24*60/4,seconds:lo*24*60*60/4,milliseconds:lo*24*60*60*1e3/4},months:{weeks:_2/7,days:_2,hours:_2*24,minutes:_2*24*60,seconds:_2*24*60*60,milliseconds:_2*24*60*60*1e3},...TG},gx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],kCe=gx.slice(0).reverse();function mx(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 St(r)}function PCe(t){return t<0?Math.floor(t):Math.ceil(t)}function bG(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?PCe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function MCe(t,e){kCe.reduce((n,r)=>vt(e[r])?n:(n&&bG(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||pn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?BCe:$Ce,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new ao(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:D_(e,St.normalizeUnit),loc:pn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(hx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new ao(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=RCe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=NCe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new ao("need to specify a reason the Duration is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new p5e(r);return new St({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 wQ(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?rs.create(this.loc,r).formatDurationFromString(this,e):ICe}toHuman(e={}){const n=gx.map(r=>{const i=this.values[r];return vt(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+=dD(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=St.fromDurationLike(e),r={};for(const i of gx)(g2(n.values,i)||g2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return mx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=tG(e(this.values[r],r));return mx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...D_(e,St.normalizeUnit)};return mx(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),mx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return MCe(this.matrix,e),mx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of gx)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;hx(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)gx.indexOf(l)>gx.indexOf(o)&&bG(this.matrix,i,l,n,o)}else hx(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 mx(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 mx(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 gx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const Um="Invalid Interval";function jCe(t,e){return!t||!t.isValid?gn.invalid("missing or invalid start"):!e||!e.isValid?gn.invalid("missing or invalid end"):e<t?gn.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 gn{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 ao("need to specify a reason the Interval is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new h5e(r);return new gn({invalid:r})}static fromDateTimes(e,n){const r=Qm(e),i=Qm(n),s=jCe(r,i);return s??new gn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=Qm(e);return gn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=Qm(e);return gn.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 gn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return gn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return gn.before(u,l)}}return gn.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?gn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(Qm).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(gn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.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(gn.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:gn.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 gn.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(gn.fromDateTimes(n,a.time)),n=null);return gn.merge(i)}difference(...e){return gn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Um}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Um}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Um}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Um}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:Um}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return gn.fromDateTimes(e(this.s),e(this.e))}}let qm=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 Yu.isValidZone(e)}static normalizeZone(e){return M0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||pn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||pn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||pn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||pn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return pn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return pn.create(n,null,"gregory").eras(e)}static features(){return{relative:JQ()}}};function RG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function UCe(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=RG(u,a);return(l-l%7)/7}],["days",RG]],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 qCe(t,e,n,r){let[i,s,o,u]=UCe(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const TD={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},OG={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]},HCe=TD.hanidec.replace(/[\[|\]]/g,"").split("");function zCe(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(TD.hanidec)!==-1)e+=HCe.indexOf(t[n]);else for(const i in OG){const[s,o]=OG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Go({numberingSystem:t},e=""){return new RegExp(`${TD[t||"latn"]}${e}`)}const QCe="missing Intl.DateTimeFormat.formatToParts support";function wt(t,e=n=>n){return{regex:t,deser:([n])=>e(zCe(n))}}const NG="[  ]",DG=new RegExp(NG,"g");function GCe(t){return t.replace(/\./g,"\\.?").replace(DG,NG)}function FG(t){return t.replace(/\./g,"").replace(DG," ").toLowerCase()}function Wo(t,e){return t===null?null:{regex:RegExp(t.map(GCe).join("|")),deser:([n])=>t.findIndex(r=>FG(n)===FG(r))+e}}function wG(t,e){return{regex:t,deser:([,n,r])=>N_(n,r),groups:e}}function bD(t){return{regex:t,deser:([e])=>e}}function WCe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function VCe(t,e){const n=Go(e),r=Go(e,"{2}"),i=Go(e,"{3}"),s=Go(e,"{4}"),o=Go(e,"{6}"),u=Go(e,"{1,2}"),a=Go(e,"{1,3}"),l=Go(e,"{1,6}"),c=Go(e,"{1,9}"),f=Go(e,"{2,4}"),x=Go(e,"{4,6}"),h=g=>({regex:RegExp(WCe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Wo(e.eras("short",!1),0);case"GG":return Wo(e.eras("long",!1),0);case"y":return wt(l);case"yy":return wt(f,pD);case"yyyy":return wt(s);case"yyyyy":return wt(x);case"yyyyyy":return wt(o);case"M":return wt(u);case"MM":return wt(r);case"MMM":return Wo(e.months("short",!0,!1),1);case"MMMM":return Wo(e.months("long",!0,!1),1);case"L":return wt(u);case"LL":return wt(r);case"LLL":return Wo(e.months("short",!1,!1),1);case"LLLL":return Wo(e.months("long",!1,!1),1);case"d":return wt(u);case"dd":return wt(r);case"o":return wt(a);case"ooo":return wt(i);case"HH":return wt(r);case"H":return wt(u);case"hh":return wt(r);case"h":return wt(u);case"mm":return wt(r);case"m":return wt(u);case"q":return wt(u);case"qq":return wt(r);case"s":return wt(u);case"ss":return wt(r);case"S":return wt(a);case"SSS":return wt(i);case"u":return bD(c);case"uu":return bD(u);case"uuu":return wt(n);case"a":return Wo(e.meridiems(),0);case"kkkk":return wt(s);case"kk":return wt(f,pD);case"W":return wt(u);case"WW":return wt(r);case"E":case"c":return wt(n);case"EEE":return Wo(e.weekdays("short",!1,!1),1);case"EEEE":return Wo(e.weekdays("long",!1,!1),1);case"ccc":return Wo(e.weekdays("short",!0,!1),1);case"cccc":return Wo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return wG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return wG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return bD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:QCe};return m.token=t,m}const YCe={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 XCe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=YCe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function KCe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function JCe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(g2(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 ZCe(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 vt(t.z)||(n=Yu.create(t.z)),vt(t.Z)||(n||(n=new Jr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(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),vt(t.u)||(t.S=xD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let RD=null;function eTe(){return RD||(RD=st.fromMillis(1555555555555)),RD}function tTe(t,e){if(t.literal)return t;const n=rs.macroTokenToFormatOpts(t.val);if(!n)return t;const s=rs.create(e,n).formatDateTimeParts(eTe()).map(o=>XCe(o,e,n));return s.includes(void 0)?t:s}function nTe(t,e){return Array.prototype.concat(...t.map(n=>tTe(n,e)))}function LG(t,e,n){const r=nTe(rs.parseFormat(n),t),i=r.map(o=>VCe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=KCe(i),a=RegExp(o,"i"),[l,c]=JCe(e,a,u),[f,x,h]=c?ZCe(c):[null,null,void 0];if(g2(c,"a")&&g2(c,"H"))throw new Im("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 rTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=LG(t,e,n);return[r,i,s,o]}const IG=[0,31,59,90,120,151,181,212,243,273,304,334],$G=[0,31,60,91,121,152,182,213,244,274,305,335];function co(t,e){return new Qo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function BG(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 kG(t,e,n){return n+($m(t)?$G:IG)[e-1]}function PG(t,e){const n=$m(t)?$G:IG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function OD(t){const{year:e,month:n,day:r}=t,i=kG(e,n,r),s=BG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=O_(u)):o>O_(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...F_(t)}}function MG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=BG(e,1,4),s=Bm(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=Bm(u)):o>s?(u=e+1,o-=Bm(e)):u=e;const{month:a,day:l}=PG(u,o);return{year:u,month:a,day:l,...F_(t)}}function ND(t){const{year:e,month:n,day:r}=t,i=kG(e,n,r);return{year:e,ordinal:i,...F_(t)}}function jG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=PG(e,n);return{year:e,month:r,day:i,...F_(t)}}function iTe(t){const e=b_(t.weekYear),n=hl(t.weekNumber,1,O_(t.weekYear)),r=hl(t.weekday,1,7);return e?n?r?!1:co("weekday",t.weekday):co("week",t.week):co("weekYear",t.weekYear)}function sTe(t){const e=b_(t.year),n=hl(t.ordinal,1,Bm(t.year));return e?n?!1:co("ordinal",t.ordinal):co("year",t.year)}function UG(t){const e=b_(t.year),n=hl(t.month,1,12),r=hl(t.day,1,R_(t.year,t.month));return e?n?r?!1:co("day",t.day):co("month",t.month):co("year",t.year)}function qG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=hl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=hl(n,0,59),u=hl(r,0,59),a=hl(i,0,999);return s?o?u?a?!1:co("millisecond",i):co("second",r):co("minute",n):co("hour",e)}const DD="Invalid DateTime",HG=864e13;function B_(t){return new Qo("unsupported zone",`the zone "${t.name}" is not supported`)}function FD(t){return t.weekData===null&&(t.weekData=OD(t.c)),t.weekData}function Hm(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 zG(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 QG(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 k_(t,e,n){return zG(hD(t),e,n)}function GG(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,R_(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.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=hD(s);let[a,l]=zG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function zm(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 Qo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function P_(t,e,n=!0){return t.isValid?rs.create(pn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function wD(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 WG(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 VG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},oTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},uTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},YG=["year","month","day","hour","minute","second","millisecond"],aTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],lTe=["year","ordinal","hour","minute","second","millisecond"];function XG(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 wQ(t);return e}function KG(t,e){const n=M0(e.zone,zn.defaultZone),r=pn.fromObject(e),i=zn.now();let s,o;if(vt(t.year))s=i;else{for(const l of YG)vt(t[l])&&(t[l]=VG[l]);const u=UG(t)||qG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=k_(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function JG(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=dD(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 ZG(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 Qo("invalid input"):null)||(n.isValid?null:B_(n));this.ts=vt(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=QG(this.ts,u),r=Number.isNaN(i.year)?new Qo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||pn.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]=ZG(arguments),[r,i,s,o,u,a,l]=n;return KG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=ZG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Jr.utcInstance,KG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=E5e(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=M0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:pn.fromObject(n)}):st.invalid(B_(i))}static fromMillis(e,n={}){if(hx(e))return e<-HG||e>HG?st.invalid("Timestamp out of range"):new st({ts:e,zone:M0(n.zone,zn.defaultZone),loc:pn.fromObject(n)});throw new ao(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(hx(e))return new st({ts:e*1e3,zone:M0(n.zone,zn.defaultZone),loc:pn.fromObject(n)});throw new ao("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=M0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(B_(r));const i=zn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=D_(e,XG),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=pn.fromObject(n);if((c||u)&&f)throw new Im("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new Im("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=QG(i,s);h?(p=aTe,m=oTe,g=OD(g)):u?(p=lTe,m=uTe,g=ND(g)):(p=YG,m=VG);let y=!1;for(const T of p){const O=o[T];vt(O)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?iTe(o):u?sTe(o):UG(o),A=E||qG(o);if(A)return st.invalid(A);const v=h?MG(o):u?jG(o):o,[_,S]=k_(v,s,r),C=new st({ts:_,zone:r,o:S,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]=CCe(e);return zm(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=TCe(e);return zm(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=bCe(e);return zm(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new ao("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=pn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=rTe(o,e,n);return c?st.invalid(c):zm(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]=LCe(e);return zm(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new ao("need to specify a reason the DateTime is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new d5e(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?FD(this).weekYear:NaN}get weekNumber(){return this.isValid?FD(this).weekNumber:NaN}get weekday(){return this.isValid?FD(this).weekday:NaN}get ordinal(){return this.isValid?ND(this.c).ordinal:NaN}get monthShort(){return this.isValid?qm.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?qm.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?qm.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?qm.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 $m(this.year)}get daysInMonth(){return R_(this.year,this.month)}get daysInYear(){return this.isValid?Bm(this.year):NaN}get weeksInWeekYear(){return this.isValid?O_(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=rs.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Jr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=M0(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]=k_(o,s,e)}return Hm(this,{ts:i,zone:e})}else return st.invalid(B_(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return Hm(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=D_(e,XG),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new Im("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new Im("Can't mix ordinal dates with month/day");let l;r?l=MG({...OD(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(R_(l.year,l.month),l.day))):l=jG({...ND(this.c),...n});const[c,f]=k_(l,this.o,this.zone);return Hm(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return Hm(this,GG(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return Hm(this,GG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?rs.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):DD}toLocaleString(e=fD,n={}){return this.isValid?rs.create(this.loc.clone(n),e).formatDateTime(this):DD}toLocaleParts(e={}){return this.isValid?rs.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=wD(this,o);return u+="T",u+=WG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?wD(this,e==="extended"):null}toISOWeekDate(){return P_(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":"")+WG(this,o==="extended",n,e,r,s):null}toRFC2822(){return P_(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return P_(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?wD(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")),P_(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():DD}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=A5e(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=qCe(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?gn.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),JG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?JG(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 ao("min requires all arguments be DateTimes");return ZQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new ao("max requires all arguments be DateTimes");return ZQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=pn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return LG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return fD}static get DATE_MED(){return LQ}static get DATE_MED_WITH_WEEKDAY(){return g5e}static get DATE_FULL(){return IQ}static get DATE_HUGE(){return $Q}static get TIME_SIMPLE(){return BQ}static get TIME_WITH_SECONDS(){return kQ}static get TIME_WITH_SHORT_OFFSET(){return PQ}static get TIME_WITH_LONG_OFFSET(){return MQ}static get TIME_24_SIMPLE(){return jQ}static get TIME_24_WITH_SECONDS(){return UQ}static get TIME_24_WITH_SHORT_OFFSET(){return qQ}static get TIME_24_WITH_LONG_OFFSET(){return HQ}static get DATETIME_SHORT(){return zQ}static get DATETIME_SHORT_WITH_SECONDS(){return QQ}static get DATETIME_MED(){return GQ}static get DATETIME_MED_WITH_SECONDS(){return WQ}static get DATETIME_MED_WITH_WEEKDAY(){return m5e}static get DATETIME_FULL(){return VQ}static get DATETIME_FULL_WITH_SECONDS(){return YQ}static get DATETIME_HUGE(){return XQ}static get DATETIME_HUGE_WITH_SECONDS(){return KQ}}function Qm(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&hx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new ao(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const eW=gP(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Jr,IANAZone:Yu,Info:qm,Interval:gn,InvalidZone:fG,Settings:zn,SystemZone:w_,VERSION:"2.5.2",Zone:m2},Symbol.toStringTag,{value:"Module"})));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 j0=eW,cTe=Z,fTe=F0,tW=x2,LD=dt;class xTe extends Error{}pr.TimeFormatError=xTe;function yx(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 nW="yyyy",rW=`${nW}-LL`,fo=`${rW}-dd`,iW=`${fo} HH`,sW=`${iW}:mm`,ID=`${sW}:ss`;class oW extends LD.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 $D extends oW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=yx(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=j0.DateTime.fromFormat(e,ID);if(s.isValid)return new $D(r,n);if(s=j0.DateTime.fromFormat(e,sW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(ID);return new BD(r,n,"timestamp",o)}}}pr.LiteralTimestamp=$D;class BD extends oW{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,LD.getMorphicValue)(i,"timestamp"),a=(0,LD.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,cTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new fTe.Range(new tW.ExprTime(u,i.value),new tW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class kD extends BD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,iW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(ID),new kD(n,r)}}pr.LiteralHour=kD;class Gm extends BD{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 PD extends Gm{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,fo);if(i.isValid)return r=i.plus({day:1}).toFormat(fo),new PD(n,r)}}pr.LiteralDay=PD;class MD extends Gm{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=yx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=j0.DateTime.fromFormat(i,fo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(fo),r=u.toFormat(fo),new MD(n,r)}}}pr.LiteralWeek=MD;class jD extends Gm{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,rW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(fo),r=s.toFormat(fo),new jD(n,r)}}}pr.LiteralMonth=jD;class UD extends Gm{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=yx(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=j0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(fo),r=u.toFormat(fo),new UD(n,r)}}}pr.LiteralQuarter=UD;class qD extends Gm{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,nW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(fo),r=s.toFormat(fo),new qD(n,r)}}}pr.LiteralYear=qD;var M_={};Object.defineProperty(M_,"__esModule",{value:!0}),M_.PartialCompare=void 0;const dTe=hr,hTe=dt;class pTe extends hTe.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,dTe.errorFor)("no value for partial compare")}}M_.PartialCompare=pTe;var C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.PickWhen=C2.Pick=void 0;const Xu=Z,U0=hr,Vo=cn,gTe=dt,mTe=Ve,uW=ln;function j_(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class yTe extends gTe.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,Xu.maxExpressionType)(o,(0,Xu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Xu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vo.FT.typeEq(s,x,!0)){const h=Vo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick when type")}s=j_(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=j_(s,l),!Vo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Vo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Xu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Xu.mergeEvalSpaces)(u,l.evalSpace),value:(0,uW.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,U0.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,U0.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,U0.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(!Vo.FT.typeEq(a.when,Vo.FT.boolT))return this.log(`when expression must be boolean, not '${Vo.FT.inspect(a.when)}`),(0,U0.errorFor)("pick when type");if(r&&!Vo.FT.typeEq(r,a.pick,!0)){const l=Vo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick value type")}r=j_(r,a.pick),s=(0,Xu.maxExpressionType)(s,(0,Xu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Xu.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,Xu.maxExpressionType)(s,u.expressionType),o=(0,Xu.mergeEvalSpaces)(o,u.evalSpace),r=j_(r,u),Vo.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,uW.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Vo.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick value type mismatch"))}}C2.Pick=yTe;class ETe extends mTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}C2.PickWhen=ETe;var U_={};Object.defineProperty(U_,"__esModule",{value:!0}),U_.Timeframe=void 0;const ATe=Z,vTe=Ve;class STe extends vTe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,ATe.isTimestampUnit)(n)?n:"second"}}U_.Timeframe=STe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.TopBy=void 0;const _Te=Z,aW=dt,CTe=Ve,TTe=ln;class bTe extends CTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof aW.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof aW.ExpressionDef){const n=this.by.getExpression(e);return(0,_Te.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,TTe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}q_.TopBy=bTe;var q0={};Object.defineProperty(q0,"__esModule",{value:!0}),q0.ImportStatement=q0.ImportSelect=q0.ImportSourceName=void 0;const HD=Ve;class RTe extends HD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}q0.ImportSourceName=RTe;class OTe extends HD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}q0.ImportSelect=OTe;class NTe extends HD.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}'`)}}}q0.ImportStatement=NTe;var Wm={};Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.ExtendBlock=void 0;const DTe=Ve,FTe=On;class wTe extends DTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=FTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Wm.ExtendBlock=wTe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.Argument=void 0;const LTe=Ve;class ITe extends LTe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}H_.Argument=ITe;var z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.HasParameter=void 0;const lW=Z,$Te=Ve;class BTe extends $Te.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,lW.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,lW.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"}}}z_.HasParameter=BTe;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.AnonymousQuery=void 0;const kTe=Ve,PTe=Vr;class MTe extends kTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=PTe.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)}}Q_.AnonymousQuery=MTe;var H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.View=void 0;const jTe=Ve;let UTe=class extends jTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};H0.View=UTe;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ViewArrow=void 0;const qTe=Kr,HTe=H0;class zTe extends HTe.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 qTe.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()}}G_.ViewArrow=zTe;var W_={},Vm={};Object.defineProperty(Vm,"__esModule",{value:!0}),Vm.refine=void 0;const zD=bu,QD=R0;function QTe(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,zD.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,zD.isQuerySegment)(o)&&(0,zD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,QD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,QD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(QD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Vm.refine=QTe,Object.defineProperty(W_,"__esModule",{value:!0}),W_.ViewRefine=void 0;const GTe=Xr,WTe=Ds,VTe=Vm,YTe=H0;class XTe extends YTe.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,WTe.getFinalStruct)(this.refinement,e.structDef(),i):GTe.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,VTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}W_.ViewRefine=XTe;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ReferenceView=void 0;const cW=Z,fW=Xr,KTe=Ds,JTe=Yr,ZTe=Vm,ebe=H0;class tbe extends ebe.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:fW.ErrorFactory.structDef,outputStruct:fW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof JTe.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,cW.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,cW.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,KTe.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,ZTe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}V_.ReferenceView=tbe;var Y_={},Ym={},X_={},Xm={};Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.Index=void 0;const nbe=Ve,rbe=On;let ibe=class extends nbe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=rbe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Xm.Index=ibe;var Km={};Object.defineProperty(Km,"__esModule",{value:!0}),Km.SampleProperty=void 0;const sbe=Ve,xW=On;class obe extends sbe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=xW.LegalRefinementStage.Tail,this.forceQueryClass=xW.QueryClass.Index}sampling(){return this.sample}}Km.SampleProperty=obe;var K_={};Object.defineProperty(K_,"__esModule",{value:!0}),K_.IndexFieldSpace=void 0;const dW=Z,GD=ht,ube=Yr,abe=Ho,lbe=Nm,cbe=Kr;class fbe extends abe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof GD.FieldReference?super.pushFields(n):n instanceof GD.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 ube.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof lbe.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 cbe.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=GD.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,dW.isAtomicFieldType)(c.dataType)&&(0,dW.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)}}K_.IndexFieldSpace=fbe,Object.defineProperty(X_,"__esModule",{value:!0}),X_.IndexBuilder=void 0;const WD=Z,xbe=Xr,dbe=qo,hbe=Xm,pbe=I0,gbe=Km,mbe=K_;class ybe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new mbe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof dbe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof pbe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof hbe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof gbe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,WD.isIndexSegment)(e)&&!(0,WD.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),xbe.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,WD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}X_.IndexBuilder=ybe;var J_={},Jm={};Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.GroupBy=void 0;const Ebe=Ns,hW=On;class Abe extends Ebe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=hW.LegalRefinementStage.Single,this.forceQueryClass=hW.QueryClass.Grouping}}Jm.GroupBy=Abe;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ProjectFieldSpace=void 0;const VD=Z,vbe=Ho;class Sbe extends vbe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,VD.expressionIsAggregate)(e.expressionType)?!1:(0,VD.expressionInvolvesAggregate)(e.expressionType)&&(0,VD.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}Z_.ProjectFieldSpace=Sbe;var z0={},Ex={};Object.defineProperty(Ex,"__esModule",{value:!0}),Ex.Ordering=Ex.OrderBy=void 0;const _be=Z,pW=$0,gW=Ve,Cbe=On;class Tbe extends gW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof pW.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 pW.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,_be.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}}Ex.OrderBy=Tbe;class bbe extends gW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=Cbe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Ex.Ordering=bbe;var Zm={};Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.Top=void 0;const mW=Z,Rbe=ln,Obe=$0,Nbe=Ve,Dbe=On;let Fbe=class extends Nbe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=Dbe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof Obe.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,mW.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,mW.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,Rbe.compressExpr)(r.value)}}}};Zm.Top=Fbe,Object.defineProperty(z0,"__esModule",{value:!0}),z0.ReduceBuilder=z0.QuerySegmentBuilder=void 0;const yW=Z,wbe=Xr,Lbe=qo,Ibe=I0,EW=Ex,AW=Zm,$be=Ho,Bbe=Ns;class vW{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof Bbe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof Lbe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof AW.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 Ibe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof EW.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 AW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof EW.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])}}z0.QuerySegmentBuilder=vW;class kbe extends vW{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new $be.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,yW.isReduceSegment)(e)||(0,yW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),wbe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}z0.ReduceBuilder=kbe,Object.defineProperty(J_,"__esModule",{value:!0}),J_.ProjectBuilder=void 0;const SW=Z,Pbe=Xr,Mbe=Jm,jbe=Z_,Ube=z0;class qbe extends Ube.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new jbe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof Mbe.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}`),Pbe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}J_.ProjectBuilder=qbe;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.PartialBuilder=void 0;const Hbe=bu,zbe=z0;class Qbe extends zbe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,Hbe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}e5.PartialBuilder=Qbe,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.QOpDesc=void 0;const Gbe=X_,Wbe=J_,Vbe=z0,Ybe=Ve,Xbe=Ds,Kbe=Kr,Ax=On,Jbe=e5;class Zbe extends Ybe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Ax.QueryClass.Grouping:this.refineThis.type==="project"?n=Ax.QueryClass.Project:this.refineThis.type==="index"&&(n=Ax.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=Ax.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Ax.QueryClass.Grouping:return new Vbe.ReduceBuilder(e,this.refineThis,n,r);case Ax.QueryClass.Project:return new Wbe.ProjectBuilder(e,this.refineThis,n,r);case Ax.QueryClass.Index:return new Gbe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Jbe.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 Kbe.StaticSpace((0,Xbe.opOutputStruct)(this,e.structDef(),i))}}}Ym.QOpDesc=Zbe,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.QOpDescView=void 0;const e6e=Z,t6e=Kr,_W=Ym,n6e=Ds,YD=On,r6e=H0;class i6e extends r6e.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,e6e.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 _W.QOpDesc([]),o=new _W.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case YD.LegalRefinementStage.Head:s.push(u);break;case YD.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case YD.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,n6e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new t6e.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Y_.QOpDescView=i6e;var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.FieldDefinitionValue=mn.DefSpace=mn.DimensionFieldDeclaration=mn.MeasureFieldDeclaration=mn.DeclareFieldDeclaration=mn.ProjectFieldDeclaration=mn.GroupByFieldDeclaration=mn.AggregateFieldDeclaration=mn.CalculateFieldDeclaration=mn.AtomicFieldDeclaration=void 0;const s6e=Z,o6e=ln,u6e=cn,a6e=a2,l6e=Ve,vx=Xn,c6e=Vr,f6e=Yr;class Q0 extends l6e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=c6e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new XD(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,o6e.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,s6e.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,a6e.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof XD&&e.foundCircle)&&r.dataType!=="error"){const a=u6e.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new CW(e,this))}}mn.AtomicFieldDeclaration=Q0;class x6e extends Q0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}mn.CalculateFieldDeclaration=x6e;class d6e extends Q0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckAggregate)(e,this)}}mn.AggregateFieldDeclaration=d6e;class h6e extends Q0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckGroupBy)(e,this)}}mn.GroupByFieldDeclaration=h6e;class p6e extends Q0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckProject)(e,this)}}mn.ProjectFieldDeclaration=p6e;class g6e extends Q0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDeclare)(e,this)}}mn.DeclareFieldDeclaration=g6e;class m6e extends Q0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckMeasure)(e,this)}}mn.MeasureFieldDeclaration=m6e;class y6e extends Q0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDimension)(e,this)}}mn.DimensionFieldDeclaration=y6e;class XD{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")}}mn.DefSpace=XD;class CW extends f6e.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)}}mn.FieldDefinitionValue=CW;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.Aggregate=void 0;const E6e=Ns,TW=On;let A6e=class extends E6e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=TW.LegalRefinementStage.Single,this.forceQueryClass=TW.QueryClass.Grouping}};t5.Aggregate=A6e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.Calculate=void 0;const v6e=Ns,S6e=On;class _6e extends v6e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=S6e.LegalRefinementStage.Single}}n5.Calculate=_6e;var e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.Dimensions=void 0;const C6e=O0;class T6e extends C6e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}e3.Dimensions=T6e;var t3={};Object.defineProperty(t3,"__esModule",{value:!0}),t3.Measures=void 0;const b6e=O0;class R6e extends b6e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}t3.Measures=R6e;var r5={};Object.defineProperty(r5,"__esModule",{value:!0}),r5.Nests=void 0;const O6e=Ns,bW=On;class N6e extends O6e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=bW.LegalRefinementStage.Single,this.forceQueryClass=bW.QueryClass.Grouping}}r5.Nests=N6e;var i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.ProjectStatement=void 0;const D6e=Ns,RW=On;class F6e extends D6e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=RW.QueryClass.Project,this.queryRefinementStage=RW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}i5.ProjectStatement=F6e;var G0={},pl={};Object.defineProperty(pl,"__esModule",{value:!0}),pl.findReferences=pl.deprecatedParseTableURI=pl.constructTableKey=void 0;const w6e=sx,KD=kn;function JD(t){const e=(0,KD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,KD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class L6e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=OW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,KD.getId)(e.connectionId()),r=JD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=JD(e.tableURI()),{connectionName:r,tablePath:i}=NW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=JD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function OW(t,e){return t===void 0?e:`${t}:${e}`}pl.constructTableKey=OW;function NW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pl.deprecatedParseTableURI=NW;function I6e(t,e,n){const r=new L6e(t,e),i=r;return w6e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pl.findReferences=I6e,Object.defineProperty(G0,"__esModule",{value:!0}),G0.TableFunctionSource=G0.TableMethodSource=G0.TableSource=void 0;const DW=pl,$6e=Uo,FW=Xr;class ZD extends $6e.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return FW.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),FW.ErrorFactory.structDef}}G0.TableSource=ZD;class B6e extends ZD{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}}}G0.TableMethodSource=B6e;class k6e extends ZD{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,DW.deprecatedParseTableURI)(this.tableURI)}}G0.TableFunctionSource=k6e;var s5={};Object.defineProperty(s5,"__esModule",{value:!0}),s5.SQLString=void 0;const P6e=Ve,wW=Wu;class M6e extends P6e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(j6e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof wW.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}}s5.SQLString=M6e;function j6e(t){return t instanceof wW.SourceQueryElement}var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.SourceDesc=void 0;const U6e=Ve;class q6e extends U6e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}o5.SourceDesc=q6e;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.isSourceProperty=void 0;const H6e=qo,z6e=ts,Q6e=O0,G6e=e2,W6e=D0,V6e=t2,Y6e=n2,X6e=r2,K6e=N0;function J6e(t){return t instanceof H6e.Filter||t instanceof z6e.Joins||t instanceof Q6e.DeclareFields||t instanceof G6e.FieldListEdit||t instanceof W6e.Renames||t instanceof V6e.PrimaryKey||t instanceof K6e.ObjectAnnotation||t instanceof Y6e.Views||t instanceof X6e.TimezoneStatement}u5.isSourceProperty=J6e;var a5={};Object.defineProperty(a5,"__esModule",{value:!0}),a5.isFieldCollectionMember=void 0;const Z6e=mn,LW=ht;function eRe(t){return t instanceof LW.FieldReference||t instanceof LW.WildcardFieldReference||t instanceof Z6e.AtomicFieldDeclaration}a5.isFieldCollectionMember=eRe;var l5={};Object.defineProperty(l5,"__esModule",{value:!0}),l5.isQueryElement=void 0;const tRe=i2,nRe=s2,rRe=Tm,iRe=bm;function sRe(t){return t instanceof tRe.QueryArrow||t instanceof nRe.QueryRefine||t instanceof rRe.QueryReference||t instanceof iRe.QueryRaw}l5.isQueryElement=sRe;var IW={};Object.defineProperty(IW,"__esModule",{value:!0});var c5={};Object.defineProperty(c5,"__esModule",{value:!0}),c5.isQueryProperty=void 0;function oRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}c5.isQueryProperty=oRe;var f5={};Object.defineProperty(f5,"__esModule",{value:!0}),f5.isQueryExtendProperty=void 0;const uRe=e3,aRe=ts,lRe=t3;function cRe(t){return t instanceof uRe.Dimensions||t instanceof lRe.Measures||t instanceof aRe.Joins}f5.isQueryExtendProperty=cRe;var x5={};Object.defineProperty(x5,"__esModule",{value:!0}),x5.isFieldPropStatement=void 0;const fRe=w0,xRe=qo,dRe=I0,hRe=p2;function pRe(t){return t instanceof xRe.Filter||t instanceof dRe.Limit||t instanceof hRe.PartitionBy||t instanceof fRe.FunctionOrdering}x5.isFieldPropStatement=pRe,function(t){var e=N&&N.__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=N&&N.__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(cm,t),n(Xh,t),n(Kh,t),n(Uo,t),n(mm,t),n(Wu,t),n(P4,t),n(M4,t),n(q4,t),n(Sm,t),n(Q4,t),n(e2,t),n(t2,t),n(D0,t),n(n2,t),n(r2,t),n(G4,t),n(d2,t),n(V4,t),n(w0,t),n(Y4,t),n(dl,t),n(X4,t),n(h2,t),n(K4,t),n(J4,t),n(Z4,t),n(c2,t),n(e_,t),n(t_,t),n(r_,t),n(Fm,t),n(Om,t),n(lx,t),n(i_,t),n(s_,t),n(u_,t),n(l_,t),n(c_,t),n(f_,t),n(x_,t),n(d_,t),n(h_,t),n(p_,t),n(g_,t),n(m_,t),n(y_,t),n(E_,t),n(A_,t),n(__,t),n(pr,t),n(M_,t),n(p2,t),n(C2,t),n(F0,t),n(U_,t),n(q_,t),n(wm,t),n(ln,t),n(q0,t),n(Wm,t),n(H_,t),n(z_,t),n(Q_,t),n(s2,t),n(i2,t),n(H0,t),n(G_,t),n(W_,t),n(V_,t),n(Y_,t),n(mn,t),n(ht,t),n(t5,t),n(n5,t),n(O0,t),n(e3,t),n(Wm,t),n(qo,t),n(Jm,t),n(Xm,t),n(ts,t),n(fm,t),n(I0,t),n(t3,t),n(cm,t),n(r5,t),n(Ex,t),n(i5,t),n(Ym,t),n(Km,t),n(Zm,t),n(o2,t),n(ax,t),n(Rm,t),n(G0,t),n(s5,t),n(N0,t),n(fl,t),n(o5,t),n(u5,t),n(dt,t),n(a5,t),n($0,t),n(Ve,t),n(l5,t),n(IW,t),n(c5,t),n(f5,t),n(x5,t)}(_4);var d5={},T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ConstantExpression=T2.ConstantFieldSpace=void 0;const gRe=fl,$W=dt,mRe=c2,yRe=ln;class BW{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}}T2.ConstantFieldSpace=BW;class ERe extends $W.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class ARe extends $W.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 BW),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new mRe.ExprCompare(new ERe(e),gRe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,yRe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}T2.ConstantExpression=ARe;var vRe=N&&N.__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]}),SRe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_Re=N&&N.__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)&&vRe(e,t,n);return SRe(e,t),e};Object.defineProperty(d5,"__esModule",{value:!0}),d5.MalloyToAST=void 0;const kW=Tv,CRe=xm,ee=_Re(_4),TRe=xr,bRe=_4,Pn=kn,eF=Z,RRe=ll,ORe=T2;class PW extends ee.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class tF extends ee.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const NRe=["##! m4warnings=error"];class DRe extends CRe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of NRe){const s=RRe.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 tF||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,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ee.ModelEntryReference((0,Pn.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 TRe.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,Pn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,Pn.getStringParts)(i))s instanceof kW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,Pn.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,Pn.getStringParts)(e))r instanceof kW.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 ORe.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,Pn.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,Pn.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,Pn.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,eF.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,Pn.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,Pn.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,Pn.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,Pn.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,Pn.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,Pn.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,eF.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,Pn.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,eF.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.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,Pn.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,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ee.ImportSelect((0,Pn.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 tF(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new tF(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,Pn.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 PW)}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 bRe.TableSource){const r=new ee.SQSource(n);return this.astAt(r,e)}return new PW}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)}}d5.MalloyToAST=DRe;var h5={};Object.defineProperty(h5,"__esModule",{value:!0}),h5.MessageLog=void 0;class FRe{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}}h5.MessageLog=FRe;var p5={};Object.defineProperty(p5,"__esModule",{value:!0}),p5.Zone=void 0;class wRe{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})}}p5.Zone=wRe;var g5={};Object.defineProperty(g5,"__esModule",{value:!0}),g5.walkForDocumentSymbols=void 0;const LRe=sx,IRe=kn;class $Re{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,IRe.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 BRe(t,e,n){const r=new $Re(t,e,[],[]),i=r;return LRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}g5.walkForDocumentSymbols=BRe;var m5={};Object.defineProperty(m5,"__esModule",{value:!0}),m5.walkForDocumentCompletions=void 0;const kRe=sx,PRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],MRe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],jRe=["source","explore","query","sql"];class URe{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 PRe)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 MRe)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 jRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function qRe(t,e,n){const r=new URe(t,[],n),i=r;return kRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}m5.walkForDocumentCompletions=qRe;var y5={};Object.defineProperty(y5,"__esModule",{value:!0}),y5.walkForDocumentHelpContext=void 0;const HRe=L7;class zRe extends HRe.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 QRe(t,e){return new zRe(e).visit(t)}y5.walkForDocumentHelpContext=QRe;var E5={},n3={};Object.defineProperty(n3,"__esModule",{value:!0}),n3.locationContainsPosition=void 0;function GRe(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)}n3.locationContainsPosition=GRe,Object.defineProperty(E5,"__esModule",{value:!0}),E5.ReferenceList=void 0;const WRe=n3;class VRe{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,WRe.locationContainsPosition)(r.location,e))return r}}E5.ReferenceList=VRe;var A5={};Object.defineProperty(A5,"__esModule",{value:!0}),A5.isNeedResponse=void 0;function YRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}A5.isNeedResponse=YRe;var v5={};Object.defineProperty(v5,"__esModule",{value:!0}),v5.walkForModelAnnotation=void 0;const XRe=sx;class KRe{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 JRe(t,e,n){const r=new KRe(t,e,n),i=r;return XRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}v5.walkForModelAnnotation=JRe;var ZRe=N&&N.__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]}),eOe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),tOe=N&&N.__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)&&ZRe(e,t,n);return eOe(e,t),e};Object.defineProperty(Ou,"__esModule",{value:!0}),Ou.MalloyParserErrorHandler=Ou.MalloyTranslator=Ou.MalloyChildTranslator=Ou.MalloyTranslation=void 0;const MW=Tv,nOe=PS,rOe=w,jW=tOe(_4),iOe=d5,sOe=h5,oOe=pl,nF=p5,uOe=g5,aOe=m5,lOe=y5,cOe=E5,S5=A5,fOe=n3,UW=ll,xOe=v5;class dOe extends nOe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class hOe{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=MW.CharStreams.fromString(e),i=new dOe(r),s=new MW.CommonTokenStream(i),o=new rOe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new HW(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 pOe{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,oOe.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,S5.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,S5.isNeedResponse)(u))return u}return null}}class gOe{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 iOe.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 jW.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,S5.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class mOe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,uOe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class yOe{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,aOe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class EOe{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,lOe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class AOe{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,xOe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class vOe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=UW.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,S5.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof jW.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 rF{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new UW.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new hOe,this.modelAnnotationStep=new AOe(this.parseStep),this.metadataStep=new mOe(this.parseStep),this.completionsStep=new yOe(this.parseStep),this.helpContextStep=new EOe(this.parseStep),this.importsAndTablesStep=new pOe(this.parseStep),this.astStep=new gOe(this.importsAndTablesStep),this.translateStep=new vOe(this.astStep),this.references=new cOe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new qW(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}