@malloydata/render 0.0.203-dev241022191525 → 0.0.203-dev241022210817

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.
@@ -1326,7 +1326,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1326
1326
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof yu)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 new Error(`INTERNAL ERROR IN TRANSLATION: ${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.logError("experiment-not-enabled",{experimentId:e}),!1)}}Qe.MalloyElement=yu;class Tge extends yu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Qe.Unimplemented=Tge;class PO extends yu{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}}Qe.ModelEntryReference=PO;class Rge extends yu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Qe.ExperimentalExperiment=Rge;function Hq(t){return t.execute!==void 0}Qe.isDocStatement=Hq;function Oge(t){return t instanceof Y1||Hq(t)}Qe.isDocStatementOrDocStatementList=Oge;class Qq extends yu{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}}}Qe.ListOf=Qq;class Y1 extends Qq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=zq.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,zq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Y1){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}}}Qe.DocStatementList=Y1;const Dge="5a79a191-06bc-43cf-9b12-58741cd82970";function Gq(t){const e=t.inherits?Gq(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 Nge(t){const e=Gq(t).join("");return(0,bge.v5)(e,Dge)}class jO extends yu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new Cge.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new Age.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new Y1(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((0,Cv.isSourceDef)(i)||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=Nge(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((0,Cv.isSourceDef)(r)||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}`};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.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,Cv.isSourceDef)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,qq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,qq.getDialect)(e),r=new _ge.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Qe.Document=jO;var bv={},Nd={},Br={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.canMakeEntry=Xl.SpaceEntry=void 0;class wge{}Xl.SpaceEntry=wge;function Fge(t){return"makeEntry"in t}Xl.canMakeEntry=Fge,Object.defineProperty(Br,"__esModule",{value:!0}),Br.SpaceField=void 0;const Lge=Xl;class Ige extends Lge.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}Br.SpaceField=Ige,Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.ViewField=void 0;const $ge=Br;class Bge extends $ge.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Nd.ViewField=Bge,Object.defineProperty(bv,"__esModule",{value:!0}),bv.ASTViewField=void 0;const kge=Nd;class Mge extends kge.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)}}bv.ASTViewField=Mge,Object.defineProperty(V1,"__esModule",{value:!0}),V1.ViewFieldDeclaration=void 0;const Pge=Qe,jge=$r,Uge=Od,qge=bv;class zge extends Pge.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=jge.extendNoteMethod}makeEntry(e){const n=new qge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Uge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}V1.ViewFieldDeclaration=zge;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var Wq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(Wq||(En.QueryClass=Wq={}));var Vq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Vq||(En.LegalRefinementStage=Vq={})),Object.defineProperty(W1,"__esModule",{value:!0}),W1.NestFieldDeclaration=void 0;const Hge=Od,Qge=V1,Yq=En;class Gge extends Qge.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Yq.LegalRefinementStage.Single,this.forceQueryClass=Yq.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,Hge.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")}}W1.NestFieldDeclaration=Gge;var wd={},kr={};Object.defineProperty(kr,"__esModule",{value:!0}),kr.ErrorFactory=void 0;const Kq="~malformed~";class UO{static get structDef(){return{type:"table",name:Kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:Kq,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:UO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}kr.ErrorFactory=UO,Object.defineProperty(wd,"__esModule",{value:!0}),wd.DefineSourceList=wd.DefineSource=void 0;const Wge=kr,Xq=Qe,Vge=$r;class Yge extends Xq.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=Vge.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`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),Wge.ErrorFactory.didCreate(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.logError("parameter-name-conflict",`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.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}wd.DefineSource=Yge;class Kge extends Xq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}wd.DefineSourceList=Kge;var Fd={};Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.DefineQueryList=Fd.DefineQuery=void 0;const Jq=Qe,Xge=$r;class Jge extends Jq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=Xge.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","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})}}Fd.DefineQuery=Jge;class Zge extends Jq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Fd.DefineQueryList=Zge;var ho={};Object.defineProperty(ho,"__esModule",{value:!0}),ho.Source=void 0;const eme=Qe;class tme extends eme.MalloyElement{structRef(e){return{structRef:this.getSourceDef(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.getSourceDef(e),parameters:this.packParameters(n)}}}ho.Source=tme;var K1={},Ld={},Tv={},Jl={};Object.defineProperty(Jl,"__esModule",{value:!0}),Jl.mergeFields=Jl.nameFromDef=void 0;function qO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Jl.nameFromDef=qO;function nme(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>qO(i))),r=t.filter(i=>!n.has(qO(i)));return r.push(...e),r}Jl.mergeFields=nme;var X1={},mr={},Eu={};Object.defineProperty(Eu,"__esModule",{value:!0}),Eu.DefinedParameter=Eu.AbstractParameter=Eu.SpaceParam=void 0;const rme=Xl;class zO extends rme.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Eu.SpaceParam=zO;class ime extends zO{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"}}}Eu.AbstractParameter=ime;class sme extends zO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Eu.DefinedParameter=sme;var Id={};Object.defineProperty(Id,"__esModule",{value:!0}),Id.StructSpaceFieldBase=void 0;const ome=Br;class ume extends ome.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}Id.StructSpaceFieldBase=ume;var J1={};Object.defineProperty(J1,"__esModule",{value:!0}),J1.ColumnSpaceField=void 0;const ame=Br;class lme extends ame.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}J1.ColumnSpaceField=lme;var Rv={};Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.IRViewField=void 0;const cme=Nd;class fme extends cme.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}Rv.IRViewField=fme,Object.defineProperty(mr,"__esModule",{value:!0}),mr.StaticSourceSpace=mr.StructSpaceField=mr.StaticSpace=void 0;const xme=Xo,Ov=We,dme=Eu,hme=Br,Dv=Id,pme=J1,gme=Rv;class HO{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,xme.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,Ov.isJoined)(e)?new Zq(e,this.fromStruct.dialect):(0,Ov.isTurtleDef)(e)?new gme.IRViewField(this,e):new pme.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((0,Ov.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new dme.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(){const e={...this.fromStruct};return(0,Ov.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof hme.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof Dv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof Dv.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof Dv.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}mr.StaticSpace=HO;class Zq extends Dv.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new HO(this.sourceDef)}}mr.StructSpaceField=Zq;class mme extends HO{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}mr.StaticSourceSpace=mme,Object.defineProperty(X1,"__esModule",{value:!0}),X1.JoinSpaceField=void 0;const yme=mr;class Eme extends yme.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}X1.JoinSpaceField=Eme;var $d={};Object.defineProperty($d,"__esModule",{value:!0}),$d.ParameterSpace=void 0;const Ame=Eu;class vme{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new Ame.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:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}$d.ParameterSpace=vme;var Sme=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]}),_me=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Cme=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)&&Sme(e,t,n);return _me(e,t),e};Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.DynamicSpace=void 0;const bme=Cme(We),Tme=Jl,Rme=kr,Ome=Br,Dme=X1,Nme=Nd,ez=Eu,wme=mr,Fme=Id,Lme=$d;class Ime extends wme.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}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 ez.AbstractParameter(n)));return this}parameterSpace(){return new Lme.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,Tme.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 ez.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof Fme.StructSpaceFieldBase?r.push([a,l]):l instanceof Nme.ViewField?i.push([a,l]):l instanceof Ome.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof Dme.JoinSpaceField){const l=a.join.structDef(u);Rme.ErrorFactory.didCreate(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&&bme.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}Tv.DynamicSpace=Ime,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.RefinedSpace=void 0;const $me=Tv,Bme=Xl;class QO extends $me.DynamicSpace{static filteredFrom(e,n,r){const i=new QO(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.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${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,Bme.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}Ld.RefinedSpace=QO;var Zl={},rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.DefinitionList=void 0;const kme=Qe,tz=$r;class Mme extends kme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,tz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,tz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}rs.DefinitionList=Mme,Object.defineProperty(Zl,"__esModule",{value:!0}),Zl.DeclareFields=void 0;const Pme=rs,jme=En;class Ume extends Pme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=jme.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Zl.DeclareFields=Ume;var po={};Object.defineProperty(po,"__esModule",{value:!0}),po.Filter=po.FilterElement=void 0;const nz=We,rz=Qe,GO=En;class qme extends rz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}po.FilterElement=qme;let zme=class extends rz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=GO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?GO.LegalRefinementStage.Tail:GO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,nz.expressionIsAggregate)(i.expressionType),o=(0,nz.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};po.Filter=zme;var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.FieldListEdit=void 0;const Hme=Qe;class Qme extends Hme.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Bd.FieldListEdit=Qme;var kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.PrimaryKey=void 0;const Gme=Qe;class Wme extends Gme.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}kd.PrimaryKey=Wme;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.Views=void 0;const Vme=rs;class Yme extends Vme.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Md.Views=Yme;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.TimezoneStatement=void 0;const Kme=Qe;class Xme extends Kme.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)}}Pd.TimezoneStatement=Xme;var e0={};Object.defineProperty(e0,"__esModule",{value:!0}),e0.ModelAnnotation=e0.ObjectAnnotation=void 0;const Jme=Jo,Zme=Qe;class iz extends Zme.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}e0.ObjectAnnotation=iz;class e3e extends iz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Jme.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)}}e0.ModelAnnotation=e3e;var t0={},Nv={};Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.RenameSpaceField=void 0;const t3e=Br;class n3e extends t3e.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()}}Nv.RenameSpaceField=n3e,Object.defineProperty(t0,"__esModule",{value:!0}),t0.Renames=t0.RenameField=void 0;const r3e=Nv,sz=Qe,i3e=Br;class s3e extends sz.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.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof i3e.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new r3e.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}t0.RenameField=s3e;class o3e extends sz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}t0.Renames=o3e;var Oi={};Object.defineProperty(Oi,"__esModule",{value:!0}),Oi.JoinStatement=Oi.ExpressionJoin=Oi.KeyJoin=Oi.Join=void 0;const WO=We,u3e=X1,a3e=rs,l3e=Qe,c3e=$r,oz=kr,f3e=En;class VO extends l3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=c3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new u3e.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),oz.ErrorFactory.structDef)}}Oi.Join=VO;class x3e extends VO{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);if(!(0,WO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,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((0,WO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Oi.KeyJoin=x3e;class d3e extends VO{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.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),oz.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,WO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Oi.ExpressionJoin=d3e;class h3e extends a3e.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=f3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n),e.alwaysJoins.push(n.name.refString)}}Oi.JoinStatement=h3e,Object.defineProperty(K1,"__esModule",{value:!0}),K1.RefinedSource=void 0;const p3e=We,g3e=Ld,m3e=Zl,y3e=po,E3e=Bd,A3e=kd,v3e=Md,S3e=ho,_3e=Pd,C3e=e0,b3e=t0,T3e=$d,R3e=Oi;class O3e extends S3e.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(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 C3e.ObjectAnnotation)continue;const g=m;if(m instanceof A3e.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof E3e.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof m3e.DeclareFields||m instanceof R3e.JoinStatement||m instanceof v3e.Views||m instanceof b3e.Renames?o.push(...m.list):m instanceof y3e.Filter?u.push(m):m instanceof _3e.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new T3e.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=g3e.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.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,p3e.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","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)}}K1.RefinedSource=O3e;var Au={};Object.defineProperty(Au,"__esModule",{value:!0}),Au.SourceQueryElement=void 0;const D3e=Qe;class YO extends D3e.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof YO&&n.errored){e=!1;break}return e}}Au.SourceQueryElement=YO;var wv={},tf={};Object.defineProperty(tf,"__esModule",{value:!0}),tf.QuerySource=void 0;const N3e=ho,w3e=qy;class F3e extends N3e.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,w3e.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}tf.QuerySource=F3e;var jd={},Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.QueryBase=void 0;const L3e=Od,I3e=Qe;class $3e extends I3e.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,L3e.detectAndRemovePartialStages)(e.pipeline,this)}}}Z1.QueryBase=$3e,Object.defineProperty(jd,"__esModule",{value:!0}),jd.QueryArrow=void 0;const B3e=We,k3e=ho,uz=mr,M3e=Z1;class P3e extends M3e.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 k3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,B3e.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new uz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new uz.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}}}jd.QueryArrow=P3e,Object.defineProperty(wv,"__esModule",{value:!0}),wv.SQArrow=void 0;const j3e=Au,U3e=tf,q3e=jd;class z3e extends j3e.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("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new q3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new U3e.QuerySource(e);return this.has({asSource:n}),n}}wv.SQArrow=z3e;var Fv={},Ud={},is={};Object.defineProperty(is,"__esModule",{value:!0}),is.getStructFieldDef=is.getFinalStruct=is.opOutputStruct=void 0;const az=kl,H3e=yc,Lv=We,lz=kr;function cz(t,e,n){const r=lz.ErrorFactory.didCreate(e)||(0,Lv.structHasErrors)(e);(0,Lv.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Lv.segmentHasErrors)(n);if(!r&&!i)try{const s=H3e.Segment.nextStructDef(e,n);if((0,Lv.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
1327
1327
  STRUCTDEF: ${(0,az.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1328
1328
  QUERY: ${(0,az.inspect)(n,{breakLength:72,depth:1/0})}`)}return lz.ErrorFactory.structDef}is.opOutputStruct=cz;function Q3e(t,e,n){for(const r of n)e=cz(t,e,r);return e}is.getFinalStruct=Q3e;function G3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}is.getStructFieldDef=G3e,Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.QueryRefine=void 0;const W3e=mr,V3e=is,Y3e=Z1;class K3e extends Y3e.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 W3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,V3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ud.QueryRefine=K3e;var eg={},qd={},Di={};Object.defineProperty(Di,"__esModule",{value:!0}),Di.mkTimeResult=Di.resolution=Di.castTo=Di.timeOffset=void 0;const fz=We;function X3e(t,e,n,r,i){return{node:"delta",kids:{base:(0,fz.mkTemporal)(e,t),delta:r},op:n,units:i}}Di.timeOffset=X3e;function J3e(t,e,n,r=!1){let i;return typeof t!="string"?i={node:"cast",dstSQLType:t.raw,e,safe:r}:i={node:"cast",dstType:{type:t},e,safe:r},(0,fz.isCastType)(n)&&(i.srcType={type:n}),i}Di.castTo=J3e;function Z3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Di.resolution=Z3e;function eye(t,e){return e?{...t,timeframe:e}:t}Di.mkTimeResult=eye;var nf={},ut={},Zt={};Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.FT=void 0;const tye=Yi;function rf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class yr{static in(e,n){return e?n.find(i=>yr.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=>yr.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,tye.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}Zt.FT=yr,yr.nullT=rf("null"),yr.numberT=rf("number"),yr.stringT=rf("string"),yr.dateT=rf("date"),yr.timestampT=rf("timestamp"),yr.boolT=rf("boolean"),yr.anyAtomicT=[yr.numberT,yr.stringT,yr.dateT,yr.timestampT,yr.boolT],yr.aggregateBoolT=rf("boolean","aggregate");var zd={};Object.defineProperty(zd,"__esModule",{value:!0}),zd.isGranularResult=void 0;function nye(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}zd.isGranularResult=nye;var go={};Object.defineProperty(go,"__esModule",{value:!0}),go.isComparison=go.isEquality=go.getExprNode=void 0;function rye(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}go.getExprNode=rye;function xz(t){return t==="="||t==="!="||t==="~"||t==="!~"}go.isEquality=xz;function iye(t){return xz(t)||t===">="||t==="<="||t===">"||t==="<"}go.isComparison=iye,Object.defineProperty(ut,"__esModule",{value:!0}),ut.applyBinary=ut.getMorphicValue=ut.ExprDuration=ut.ExpressionDef=ut.ATNodeType=void 0;const An=We,KO=Ri,sf=Zt,Iv=Di,dz=zd,sye=Qe,tg=go;class oye extends Error{}var XO;(function(t){t[t.And=0]="And",t[t.Or=1]="Or",t[t.Value=2]="Value",t[t.Partial=3]="Partial"})(XO||(ut.ATNodeType=XO={}));class hz extends sye.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=sf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!sf.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${sf.FT.inspect(n)}`),!1):!0}apply(e,n,r,i=!1){return yz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}atNodeType(){return XO.Value}atExpr(){return this}}ut.ExpressionDef=hz;class JO extends hz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[sf.FT.timestampT,sf.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!sf.FT.typeEq(s,sf.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,KO.errorFor)("illegal unit expression");let o;if((0,dz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,Iv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,Iv.mkTimeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,Iv.mkTimeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,Iv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}ut.ExprDuration=JO;function pz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function uye(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}ut.getMorphicValue=uye;function gz(t,e,n,r){const i=(0,An.isTemporalField)(e.dataType),s=(0,An.isTemporalField)(r.dataType),o=(0,tg.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=pz(e,"timestamp"),a=pz(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function aye(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function lye(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function cye(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,tg.getExprNode)(n),a=ng("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=rg(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=gz(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=aye(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new oye("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=lye(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function fye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=ng("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=rg(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=gz(e,i,n,s)||{node:(0,tg.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function mz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=ng("number",i,s);if(o)return o;const u=rg(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,KO.errorFor)("numbers required")}function xye(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=rg(e,i,r,s);if(o)return o;const u=(0,An.isTemporalField)(i.dataType),a=ng(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,dz.isGranularResult)(i))l=new JO(r,i.timeframe);else if(i.dataType==="date")l=new JO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return mz(t,e,n,r)}function yz(t,e,n,r){if((0,tg.isEquality)(n))return cye(t,e,n,r);if((0,tg.isComparison)(n))return fye(t,e,n,r);if(n==="+"||n==="-")return xye(t,e,n,r);if(n==="*")return mz(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=rg(e,i,r,s);if(o)return o;const u=ng("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,KO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}ut.applyBinary=yz;function ng(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function rg(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(nf,"__esModule",{value:!0}),nf.ExprIdReference=void 0;const dye=We,hye=ut;class pye extends hye.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:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,dye.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}nf.ExprIdReference=pye,Object.defineProperty(qd,"__esModule",{value:!0}),qd.NamedSource=void 0;const ZO=We,gye=ho,mye=kr,yye=Di,Ez=Qe,Eye=nf,Aye=$d;class vye extends gye.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 Ez.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Ez.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,ZO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}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 Eye.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new Aye.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,ZO.isCastType)(f.type)&&(p=(0,yye.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,ZO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=mye.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}}qd.NamedSource=vye;var ig={},$v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.QueryHeadStruct=void 0;const Sye=We,_ye=ho,Cye=qd;class bye extends _ye.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Sye.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Cye.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}$v.QueryHeadStruct=bye,Object.defineProperty(ig,"__esModule",{value:!0}),ig.QueryReference=void 0;const eD=kr,Tye=Qe,Rye=$v,Oye=We,Dye=is;class Nye extends Tye.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:eD.ErrorFactory.structDef,outputStruct:eD.ErrorFactory.structDef,query:eD.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Rye.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,Dye.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,Oye.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}ig.QueryReference=Nye,Object.defineProperty(eg,"__esModule",{value:!0}),eg.SQReference=void 0;const wye=Au,Fye=tf,Lye=qd,Az=ig,vz=Yi;class Iye extends wye.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 Az.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,vz.isSourceDef)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new Az.QueryReference(this.ref);this.asSource=new Fye.QuerySource(n)}else if((0,vz.isSourceDef)(e))this.asSource=new Lye.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}eg.SQReference=Iye,Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.SQRefine=void 0;const $ye=Au,Bye=tf,kye=Ud,Mye=eg;class Pye extends $ye.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 Mye.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new kye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Bye.QuerySource(e);return this.has({queryAsSource:n}),n}}}Fv.SQRefine=Pye;var Bv={},sg={};Object.defineProperty(sg,"__esModule",{value:!0}),sg.QueryRaw=void 0;const jye=We,Uye=Qe;class qye extends Uye.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.getSourceDef(void 0)},r=(0,jye.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}sg.QueryRaw=qye;var og={},kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.makeSQLSentence=void 0;const zye=We,Hye=Nt;function Qye(t,e){return{name:`sql://${e}/${Gye(t)}`,connection:e,select:t}}kv.makeSQLSentence=Qye;function Gye(t){const e=t.map(n=>(0,zye.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,Hye.generateHash)(e.join(";"))}Object.defineProperty(og,"__esModule",{value:!0}),og.SQLSource=void 0;const Wye=kv,Vye=ho,Mv=kr;class Yye extends Vye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,Wye.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}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.logError("invalid-connection-for-sql-source",`${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.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","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)}getSourceDef(){var e;if(!this.validateConnectionName())return Mv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),Mv.ErrorFactory.structDef;const r=this.sqlSentence();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.logError("invalid-sql-source","Invalid SQL, "+s.join(`
1329
- `)),Mv.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.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Mv.ErrorFactory.structDef}}og.SQLSource=Yye,Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.SQSource=void 0;const Kye=Au,Xye=sg,Jye=og;class Zye extends Kye.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 Jye.SQLSource){const e=new Xye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Bv.SQSource=Zye;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.SQExtend=void 0;const eEe=K1,tEe=Au;class nEe extends tEe.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 eEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Pv.SQExtend=nEe;var jv={},wa={},ug={};Object.defineProperty(ug,"__esModule",{value:!0}),ug.BinaryBoolean=void 0;const Sz=We,rEe=Ri,iEe=Zt,sEe=go,oEe=ut;class uEe extends oEe.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=[iEe.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,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,sEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,rEe.errorFor)("logial required boolean")}}ug.BinaryBoolean=uEe,Object.defineProperty(wa,"__esModule",{value:!0}),wa.ExprLegacyIn=wa.ExprEquality=wa.ExprCompare=void 0;const _z=Yi,Yt=Zt,aEe=ut,lEe=ug,cEe={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class Cz extends lEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=cEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}wa.ExprCompare=Cz;class fEe extends Cz{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}wa.ExprEquality=fEe;class xEe extends aEe.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,_z.maxExpressionType)(i,u.expressionType),r=(0,_z.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}wa.ExprLegacyIn=xEe;var ag={},Hd={};Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.ExprTime=void 0;const dEe=We,hEe=ut;class tD extends hEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:{type:e},e:n.value};(0,dEe.isTemporalField)(n.dataType)&&(i.srcType={type:n.dataType}),r=i}return new tD(e,r,n.expressionType)}}Hd.ExprTime=tD;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.Range=void 0;const bz=We,pEe=Ri,gEe=ut;class mEe extends gEe.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,bz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,bz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right: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.logError("range-as-value","A Range is not a value"),(0,pEe.errorFor)("a range is not a value")}}n0.Range=mEe,Object.defineProperty(ag,"__esModule",{value:!0}),ag.ExprGranularTime=void 0;const nD=We,yEe=Ri,Tz=Zt,Rz=Di,EEe=ut,Uv=Hd,Oz=n0;class AEe extends EEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Tz.FT.timestampT,Tz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,nD.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:(0,nD.mkTemporal)(r.value,r.dataType),units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,nD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,yEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Uv.ExprTime.fromValue("timestamp",n),a=new Uv.ExprTime("timestamp",(0,Rz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Oz.Range(u,a)}const i=new Uv.ExprTime("date",n.value,n.expressionType),s=(0,Rz.timeOffset)("date",n.value,"+",r,this.units),o=new Uv.ExprTime("date",s,n.expressionType);return new Oz.Range(i,o)}}ag.ExprGranularTime=AEe,Object.defineProperty(jv,"__esModule",{value:!0}),jv.Apply=void 0;const vEe=wa,SEe=zd,Dz=ag;class _Ee extends vEe.ExprCompare{constructor(e,n){super(e,"=",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,SEe.isGranularResult)(r)&&(n=new Dz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Dz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}jv.Apply=_Ee;var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.BinaryNumeric=void 0;const CEe=Zt,bEe=ut;class TEe extends bEe.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=[CEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Qd.BinaryNumeric=TEe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.Boolean=void 0;const REe=ut,OEe=Zt;let DEe=class extends REe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...OEe.FT.boolT,value:{node:this.value}}}};qv.Boolean=DEe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.FunctionOrdering=r0.FunctionOrderBy=void 0;const rD=We,Nz=Qe,NEe=nf;class wEe extends Nz.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.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,rD.expressionIsAggregate)(n.expressionType)||((0,rD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof NEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,rD.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}r0.FunctionOrderBy=wEe;class FEe extends Nz.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))}}r0.FunctionOrdering=FEe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprAddSub=void 0;const LEe=Qd;class IEe extends LEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}zv.ExprAddSub=IEe;var Fa={},pt={},lg={};Object.defineProperty(lg,"__esModule",{value:!0}),lg.ReferenceField=void 0;const wz=Br;class $Ee extends wz.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.logError(r.error.code,r.error.message);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:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof wz.SpaceField){const u=o.constructorFieldDef();if(u){const 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"}}}lg.ReferenceField=$Ee;var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.typecheckGroupBy=jn.typecheckAggregate=jn.typecheckCalculate=jn.typecheckDeclare=jn.typecheckMeasure=jn.typecheckDimension=jn.typecheckIndex=jn.typecheckProject=void 0;const vn=Yi;function BEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}jn.typecheckProject=BEe;function kEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}jn.typecheckIndex=kEe;function MEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}jn.typecheckDimension=MEe;function PEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}jn.typecheckMeasure=PEe;function jEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}jn.typecheckDeclare=jEe;function UEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}jn.typecheckCalculate=UEe;function qEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}jn.typecheckAggregate=qEe;function zEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}jn.typecheckGroupBy=zEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const HEe=lg,QEe=rs,Fz=Qe,Lz=$r,i0=jn;class Ni extends Fz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Lz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new HEe.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}}pt.FieldReference=Ni;class GEe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=GEe;class WEe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=WEe;class VEe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=VEe;class YEe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=YEe;class KEe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,i0.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=KEe;class iD extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,i0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return iD.indexOutputName(this.path)}}pt.IndexFieldReference=iD;class XEe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,i0.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=XEe;class JEe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,i0.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=JEe;class ZEe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,i0.typecheckProject)(e,this)}}pt.ProjectFieldReference=ZEe;class eAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,i0.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=eAe;class tAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,i0.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=tAe;class nAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,i0.typecheckDimension)(e,this)}}pt.DimensionFieldReference=nAe;class rAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=rAe;class iAe extends Fz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Lz.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}.*`:"*"}}pt.WildcardFieldReference=iAe;class sAe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=sAe,Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.ExprAggregateFunction=void 0;const cg=We,oAe=Nt,uAe=Ri,Iz=mr,aAe=Zt,lAe=pt,cAe=ut,fAe=Br,xAe=nf;class dAe extends cAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[aAe.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,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Iz.StructSpaceField))if((0,cg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>hAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,cg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=oD(l,f),m=uD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=pAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,uAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...sD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...sD(e,r))}return n}}Fa.ExprAggregateFunction=dAe;function hAe(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 sD(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 Iz.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof fAe.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,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,oAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,cg.isAtomic)(o)&&!(0,cg.isJoined)(o))if((0,cg.hasExpression)(o)){const u=sD(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function oD(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 uD(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function pAe(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=oD(i,e),o=uD(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=oD(l,e),f=uD(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 lAe.FieldReference?`${n.refString}.${r}()`:n instanceof xAe.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 Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprAlternationTree=void 0;const Qv=We,Gd=ut,gAe=go;function aD(t){const e=t.atExpr();switch(e.atNodeType()){case Gd.ATNodeType.And:case Gd.ATNodeType.Partial:return;case Gd.ATNodeType.Or:{if(e instanceof $z){const n=aD(e.left);if(n){const r=aD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class $z extends Gd.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}equalityList(){return this.inList===void 0&&(this.inList=aD(this)||[]),this.inList}apply(e,n,r,i){if((0,gAe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,Qv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Qv.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Qv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Qv.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?Gd.ATNodeType.Or:Gd.ATNodeType.And}}Hv.ExprAlternationTree=$z;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.ExprAsymmetric=void 0;const mAe=Fa;class yAe extends mAe.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}`}}}}Wd.ExprAsymmetric=yAe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprAvg=void 0;const EAe=Wd;class AAe extends EAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Gv.ExprAvg=AAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprCast=void 0;const vAe=Di,SAe=ut;class _Ae extends SAe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,vAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Wv.ExprCast=_Ae;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprCoalesce=void 0;const Bz=Yi,kz=Zt,CAe=ut;class bAe extends CAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=kz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(kz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Bz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Bz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Vv.ExprCoalesce=bAe;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprCount=void 0;const TAe=Fa;class RAe extends TAe.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={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Yv.ExprCount=RAe;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprCountDistinct=void 0;const Xv=Zt,OAe=Fa;class DAe extends OAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Xv.FT.numberT,Xv.FT.stringT,Xv.FT.dateT,Xv.FT.timestampT]}}Kv.ExprCountDistinct=DAe;var Jv={},s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.Limit=void 0;const NAe=Qe,wAe=En;class FAe extends NAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=wAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}s0.Limit=FAe;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PartitionBy=void 0;const LAe=Qe;class IAe extends LAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Vd.PartitionBy=IAe;var fg={},o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.FieldName=void 0;const $Ae=Qe;class BAe extends $Ae.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])}}o0.FieldName=BAe,Object.defineProperty(fg,"__esModule",{value:!0}),fg.ExprFunc=void 0;const ss=We,kAe=Ri,MAe=Id,PAe=ut,jAe=o0,Mz=Nt;class UAe extends PAe.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)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,ss.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Mz.composeSQLExpr)(L),evalSpace:(0,ss.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,kAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,ss.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof MAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=qAe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,ss.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ss.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ss.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,ss.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,ss.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ss.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=zAe(O),M=L.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",W)}const H=[];for(const W of L)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const G=new jAe.FieldName(W.name);this.has({name:G});const K=e.lookup([G]);if(K.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${K.error.message}`);K.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.name]})}S=(0,Mz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,ss.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ss.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}fg.ExprFunc=UAe;function qAe(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,ss.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")||(0,ss.expressionIsAnalytic)(n.returnType.expressionType)&&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 zAe(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(Jv,"__esModule",{value:!0}),Jv.ExprProps=void 0;const HAe=We,QAe=Ri,GAe=Zt,WAe=r0,VAe=s0,YAe=Vd,KAe=ut,XAe=fg;class JAe extends KAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=GAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,HAe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,QAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof YAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof VAe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof WAe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof XAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Jv.ExprProps=JAe;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprLogicalOp=void 0;const ZAe=ug,Pz=Zt;class eve extends ZAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Pz.FT.boolT,Pz.FT.aggregateBoolT]}}Zv.ExprLogicalOp=eve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprMax=void 0;const tS=Zt,tve=Fa;class nve extends tve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[tS.FT.numberT,tS.FT.stringT,tS.FT.dateT,tS.FT.timestampT]}returns(e){return e.dataType}}eS.ExprMax=nve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprMin=void 0;const rS=Zt,rve=Fa;class ive extends rve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[rS.FT.numberT,rS.FT.stringT,rS.FT.dateT,rS.FT.timestampT]}returns(e){return e.dataType}}nS.ExprMin=ive;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprMinus=void 0;const sve=Ri,jz=Zt,ove=ut;class uve extends ove.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[jz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return jz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,sve.errorFor)("negate requires number")}}iS.ExprMinus=uve;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprMulDiv=void 0;const ave=Qd;class lve extends ave.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}sS.ExprMulDiv=lve;var oS={},xg={};Object.defineProperty(xg,"__esModule",{value:!0}),xg.Unary=void 0;const cve=ut;class fve extends cve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}xg.Unary=fve,Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprNot=void 0;const Uz=Zt,xve=xg;class dve extends xve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Uz.FT.boolT,Uz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}oS.ExprNot=dve;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprNow=void 0;const hve=ut;class pve extends hve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}uS.ExprNow=pve;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprNULL=void 0;const gve=ut;class mve extends gve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}aS.ExprNULL=mve;var lS={};Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprNumber=void 0;const yve=Zt,Eve=ut;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...yve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}lS.ExprNumber=Ave;var cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.ExprParens=void 0;const lD=ut;class vve extends lD.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:{node:"()",e:n.value}}}apply(e,n,r,i){return this.expr.atNodeType()===lD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,lD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}cS.ExprParens=vve;var fS={};Object.defineProperty(fS,"__esModule",{value:!0}),fS.ExprRegEx=void 0;const Sve=ut;class _ve extends Sve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}fS.ExprRegEx=_ve;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ExprString=void 0;const Cve=ut,bve=Zt;class Tve extends Cve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...bve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}xS.ExprString=Tve;var dS={};Object.defineProperty(dS,"__esModule",{value:!0}),dS.ExprSum=void 0;const Rve=Wd;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}dS.ExprSum=Ove;var hS={};Object.defineProperty(hS,"__esModule",{value:!0}),hS.ExprTimeExtract=void 0;const vu=We,qz=Ri,cD=ut,Dve=n0;class dg extends cD.ExpressionDef{static extractor(e){const n=dg.pluralMap[e];if(n)return n;if((0,vu.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=dg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof Dve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,vu.maxExpressionType)(i.expressionType,s.expressionType),u=(0,vu.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,qz.errorFor)("extract from error").value};if(!(0,vu.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,vu.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,cD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,cD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,vu.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:(0,vu.mkTemporal)(i.value,a),right:(0,vu.mkTemporal)(s.value,a)}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,vu.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:(0,vu.mkTemporal)(i.value,i.dataType),units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,qz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}hS.ExprTimeExtract=dg,dg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var pS={},mo={},gS={};Object.defineProperty(gS,"__esModule",{value:!0}),gS.QueryInputSpace=void 0;const Nve=Oi,wve=Ld;class Fve extends wve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Nve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}gS.QueryInputSpace=Fve;var Lve=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]}),Ive=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$ve=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)&&Lve(e,t,n);return Ive(e,t),e};Object.defineProperty(mo,"__esModule",{value:!0}),mo.ReduceFieldSpace=mo.QuerySpace=mo.QueryOperationSpace=void 0;const mS=$ve(We),fD=Jl,Bve=o0,kve=Br,Mve=pt,Pve=Ld,jve=J1,Uve=mr,qve=gS;class zz extends Pve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new qve.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),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 Uve.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`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.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();mS.isAtomicFieldType(l.dataType)&&mS.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)}}mo.QueryOperationSpace=zz;class Hz extends zz{addRefineFromFields(e){var n;if(mS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Bve.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 jve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Mve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof kve.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)&&!Hve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(mS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","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,fD.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,fD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,fD.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}}mo.QuerySpace=Hz;class zve extends Hz{constructor(){super(...arguments),this.segmentType="reduce"}}mo.ReduceFieldSpace=zve;function Hve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(pS,"__esModule",{value:!0}),pS.ExprUngroup=void 0;const Qz=We,Qve=mo,Gve=Zt,Wve=ut;class Vve extends Wve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=Gve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Qz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Qz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node: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 Qve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${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.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}pS.ExprUngroup=Vve;var yS={};Object.defineProperty(yS,"__esModule",{value:!0}),yS.ForRange=void 0;const Gz=Yi,Wz=Ri,Vz=Zt,ES=Di,Yve=ut,AS=Hd,Yz=n0;class Kve extends Yve.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=[Vz.FT.timestampT,Vz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Wz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Gz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Gz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Wz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,ES.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,ES.timeOffset)("date",i.value,"+",o.value,u),g=new AS.ExprTime("date",m);return new Yz.Range(p,g).apply(e,n,r)}const l=AS.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,ES.castTo)("timestamp",f,"date"),c=new AS.ExprTime("timestamp",f,i.expressionType)}const x=(0,ES.timeOffset)("timestamp",f,"+",o.value,u),h=new AS.ExprTime("timestamp",x,i.expressionType);return new Yz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}yS.ForRange=Kve;var er={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class of extends Error{}class Xve extends of{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Jve extends of{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Zve extends of{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class hg extends of{}class Kz extends of{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends of{}class u0 extends of{constructor(){super("Zone is an abstract class")}}const ke="numeric",yo="short",os="long",xD={year:ke,month:ke,day:ke},Xz={year:ke,month:yo,day:ke},eSe={year:ke,month:yo,day:ke,weekday:yo},Jz={year:ke,month:os,day:ke},Zz={year:ke,month:os,day:ke,weekday:os},eH={hour:ke,minute:ke},tH={hour:ke,minute:ke,second:ke},nH={hour:ke,minute:ke,second:ke,timeZoneName:yo},rH={hour:ke,minute:ke,second:ke,timeZoneName:os},iH={hour:ke,minute:ke,hourCycle:"h23"},sH={hour:ke,minute:ke,second:ke,hourCycle:"h23"},oH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:yo},uH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:os},aH={year:ke,month:ke,day:ke,hour:ke,minute:ke},lH={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},cH={year:ke,month:yo,day:ke,hour:ke,minute:ke},fH={year:ke,month:yo,day:ke,hour:ke,minute:ke,second:ke},tSe={year:ke,month:yo,day:ke,weekday:yo,hour:ke,minute:ke},xH={year:ke,month:os,day:ke,hour:ke,minute:ke,timeZoneName:yo},dH={year:ke,month:os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:yo},hH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,timeZoneName:os},pH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,second:ke,timeZoneName:os};function _t(t){return typeof t>"u"}function uf(t){return typeof t=="number"}function vS(t){return typeof t=="number"&&t%1===0}function nSe(t){return typeof t=="string"}function rSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function gH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function iSe(t){return Array.isArray(t)?t:[t]}function mH(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 sSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function La(t,e,n){return vS(t)&&t>=e&&t<=n}function oSe(t,e){return t-e*Math.floor(t/e)}function Fn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function a0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function af(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function dD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function hD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function pg(t){return t%4===0&&(t%100!==0||t%400===0)}function gg(t){return pg(t)?366:365}function SS(t,e){const n=oSe(e-1,12)+1,r=t+(e-n)/12;return n===2?pg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function pD(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 _S(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 gD(t){return t>99?t:t>60?1900+t:2e3+t}function yH(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 CS(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 EH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function bS(t,e){const n={};for(const r in t)if(Yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=EH(i)}return n}function mg(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}${Fn(n,2)}:${Fn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Fn(n,2)}${Fn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function TS(t){return sSe(t,["hour","minute","second","millisecond"])}const AH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,uSe=["January","February","March","April","May","June","July","August","September","October","November","December"],vH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],aSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function SH(t){switch(t){case"narrow":return[...aSe];case"short":return[...vH];case"long":return[...uSe];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 _H=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],CH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],lSe=["M","T","W","T","F","S","S"];function bH(t){switch(t){case"narrow":return[...lSe];case"short":return[...CH];case"long":return[..._H];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const TH=["AM","PM"],cSe=["Before Christ","Anno Domini"],fSe=["BC","AD"],xSe=["B","A"];function RH(t){switch(t){case"narrow":return[...xSe];case"short":return[...fSe];case"long":return[...cSe];default:return null}}function dSe(t){return TH[t.hour<12?0:1]}function hSe(t,e){return bH(e)[t.weekday-1]}function pSe(t,e){return SH(e)[t.month-1]}function gSe(t,e){return RH(e)[t.year<0?0:1]}function mSe(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 OH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ySe={D:xD,DD:Xz,DDD:Jz,DDDD:Zz,t:eH,tt:tH,ttt:nH,tttt:rH,T:iH,TT:sH,TTT:oH,TTTT:uH,f:aH,ff:cH,fff:xH,ffff:hH,F:lH,FF:fH,FFF:dH,FFFF:pH};class Fi{static create(e,n={}){return new Fi(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 ySe[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 Fn(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?dSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?pSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?hSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?gSe(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 OH(Fi.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=Fi.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 OH(s,i(u))}}class Eo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Kd=class{get type(){throw new u0}get name(){throw new u0}get ianaName(){return this.name}get isUniversal(){throw new u0}offsetName(e,n){throw new u0}formatOffset(e,n){throw new u0}offset(e){throw new u0}equals(e){throw new u0}get isValid(){throw new u0}},mD=null;class RS extends Kd{static get instance(){return mD===null&&(mD=new RS),mD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return yH(e,n,r)}formatOffset(e,n){return mg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let OS={};function ESe(t){return OS[t]||(OS[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"})),OS[t]}const ASe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function vSe(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 SSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ASe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let DS={};class Su extends Kd{static create(e){return DS[e]||(DS[e]=new Su(e)),DS[e]}static resetCache(){DS={},OS={}}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=Su.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return yH(e,n,r,this.name)}formatOffset(e,n){return mg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=ESe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?SSe(r,n):vSe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=pD({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 yD=null;class Mr extends Kd{static get utcInstance(){return yD===null&&(yD=new Mr(0)),yD}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(CS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${mg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${mg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return mg(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 DH extends Kd{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 l0(t,e){if(_t(t)||t===null)return e;if(t instanceof Kd)return t;if(nSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||Su.create(t)}else return uf(t)?Mr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new DH(t)}let NH=()=>Date.now(),wH="system",FH=null,LH=null,IH=null,$H;class Ln{static get now(){return NH}static set now(e){NH=e}static set defaultZone(e){wH=e}static get defaultZone(){return l0(wH,RS.instance)}static get defaultLocale(){return FH}static set defaultLocale(e){FH=e}static get defaultNumberingSystem(){return LH}static set defaultNumberingSystem(e){LH=e}static get defaultOutputCalendar(){return IH}static set defaultOutputCalendar(e){IH=e}static get throwOnInvalid(){return $H}static set throwOnInvalid(e){$H=e}static resetCaches(){xn.resetCache(),Su.resetCache()}}let BH={};function _Se(t,e={}){const n=JSON.stringify([t,e]);let r=BH[n];return r||(r=new Intl.ListFormat(t,e),BH[n]=r),r}let ED={};function AD(t,e={}){const n=JSON.stringify([t,e]);let r=ED[n];return r||(r=new Intl.DateTimeFormat(t,e),ED[n]=r),r}let vD={};function CSe(t,e={}){const n=JSON.stringify([t,e]);let r=vD[n];return r||(r=new Intl.NumberFormat(t,e),vD[n]=r),r}let SD={};function bSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=SD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),SD[i]=s),s}let yg=null;function TSe(){return yg||(yg=new Intl.DateTimeFormat().resolvedOptions().locale,yg)}function RSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=AD(t).resolvedOptions()}catch{n=AD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function OSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function DSe(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function NSe(t){const e=[];for(let n=1;n<=7;n++){const r=at.utc(2016,11,13+n);e.push(t(r))}return e}function NS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function wSe(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 FSe{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=CSe(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):hD(e,3);return Fn(n,this.padTo)}}}class LSe{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&&Su.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:at.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=AD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class ISe{constructor(e,n,r){this.opts={style:"long",...r},!n&&gH()&&(this.rtf=bSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):mSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Ln.defaultLocale,o=s||(i?"en-US":TSe()),u=n||Ln.defaultNumberingSystem,a=r||Ln.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){yg=null,ED={},vD={},SD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=RSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=OSe(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=wSe(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:xn.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 NS(this,e,r,SH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=DSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return NS(this,e,r,bH,()=>{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]=NSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return NS(this,void 0,e,()=>TH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[at.utc(2016,11,13,9),at.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return NS(this,e,n,RH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[at.utc(-40,1,1),at.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 FSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new LSe(e,this.intl,n)}relFormatter(e={}){return new ISe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return _Se(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 Xd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Jd(...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 Zd(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 kH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=a0(e[n+i]);return[r,null,n+i]}}const MH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,$Se=`(?:${MH.source}?(?:\\[(${AH.source})\\])?)?`,_D=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,PH=RegExp(`${_D.source}${$Se}`),CD=RegExp(`(?:T${PH.source})?`),BSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,MSe=/(\d{4})-?(\d{3})/,PSe=kH("weekYear","weekNumber","weekDay"),jSe=kH("year","ordinal"),USe=/(\d{4})-(\d\d)-(\d\d)/,jH=RegExp(`${_D.source} ?(?:${MH.source}|(${AH.source}))?`),qSe=RegExp(`(?: ${jH.source})?`);function eh(t,e,n){const r=t[e];return _t(r)?n:a0(r)}function zSe(t,e){return[{year:eh(t,e),month:eh(t,e+1,1),day:eh(t,e+2,1)},null,e+3]}function th(t,e){return[{hours:eh(t,e,0),minutes:eh(t,e+1,0),seconds:eh(t,e+2,0),milliseconds:dD(t[e+3])},null,e+4]}function Eg(t,e){const n=!t[e]&&!t[e+1],r=CS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function Ag(t,e){const n=t[e]?Su.create(t[e]):null;return[{},n,e+1]}const HSe=RegExp(`^T?${_D.source}$`),QSe=/^-?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 GSe(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(af(n)),months:x(af(r)),weeks:x(af(i)),days:x(af(s)),hours:x(af(o)),minutes:x(af(u)),seconds:x(af(a),a==="-0"),milliseconds:x(dD(l),f)}]}const WSe={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 bD(t,e,n,r,i,s,o){const u={year:e.length===2?gD(a0(e)):a0(e),month:vH.indexOf(n)+1,day:a0(r),hour:a0(i),minute:a0(s)};return o&&(u.second=a0(o)),t&&(u.weekday=t.length>3?_H.indexOf(t)+1:CH.indexOf(t)+1),u}const VSe=/^(?:(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 YSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=bD(e,i,r,n,s,o,u);let h;return a?h=WSe[a]:l?h=0:h=CS(c,f),[x,new Mr(h)]}function KSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const XSe=/^(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$/,JSe=/^(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$/,ZSe=/^(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 UH(t){const[,e,n,r,i,s,o,u]=t;return[bD(e,i,r,n,s,o,u),Mr.utcInstance]}function e4e(t){const[,e,n,r,i,s,o,u]=t;return[bD(e,u,n,r,i,s,o),Mr.utcInstance]}const t4e=Xd(BSe,CD),n4e=Xd(kSe,CD),r4e=Xd(MSe,CD),i4e=Xd(PH),qH=Jd(zSe,th,Eg,Ag),s4e=Jd(PSe,th,Eg,Ag),o4e=Jd(jSe,th,Eg,Ag),u4e=Jd(th,Eg,Ag);function a4e(t){return Zd(t,[t4e,qH],[n4e,s4e],[r4e,o4e],[i4e,u4e])}function l4e(t){return Zd(KSe(t),[VSe,YSe])}function c4e(t){return Zd(t,[XSe,UH],[JSe,UH],[ZSe,e4e])}function f4e(t){return Zd(t,[QSe,GSe])}const x4e=Jd(th);function d4e(t){return Zd(t,[HSe,x4e])}const h4e=Xd(USe,qSe),p4e=Xd(jH),g4e=Jd(th,Eg,Ag);function m4e(t){return Zd(t,[h4e,qH],[p4e,g4e])}const y4e="Invalid Duration",zH={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}},E4e={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},...zH},Ls=146097/400,nh=146097/4800,A4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:nh/7,days:nh,hours:nh*24,minutes:nh*24*60,seconds:nh*24*60*60,milliseconds:nh*24*60*60*1e3},...zH},lf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],v4e=lf.slice(0).reverse();function cf(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 Ct(r)}function S4e(t){return t<0?Math.floor(t):Math.ceil(t)}function HH(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?S4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function _4e(t,e){v4e.reduce((n,r)=>_t(e[r])?n:(n&&HH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?A4e:E4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:bS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(uf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=f4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=d4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Zve(r);return new Ct({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 Kz(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?Fi.create(this.loc,r).formatDurationFromString(this,e):y4e}toHuman(e={}){const n=lf.map(r=>{const i=this.values[r];return _t(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+=hD(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=Ct.fromDurationLike(e),r={};for(const i of lf)(Yd(n.values,i)||Yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return cf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.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]=EH(e(this.values[r],r));return cf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...bS(e,Ct.normalizeUnit)};return cf(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),cf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return _4e(this.matrix,e),cf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of lf)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;uf(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)lf.indexOf(l)>lf.indexOf(o)&&HH(this.matrix,i,l,n,o)}else uf(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 cf(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 cf(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 lf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const vg="Invalid Interval";function C4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.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 dn{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 Fs("need to specify a reason the Interval is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Jve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=bg(e),i=bg(n),s=C4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=bg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=bg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=at.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=at.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.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?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(bg).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(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.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(dn.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:dn.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 dn.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(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:vg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:vg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:vg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:vg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:vg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let Sg=class{static hasDST(e=Ln.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Su.isValidZone(e)}static normalizeZone(e){return l0(e,Ln.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:gH()}}};function QH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function b4e(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=QH(u,a);return(l-l%7)/7}],["days",QH]],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 T4e(t,e,n,r){let[i,s,o,u]=b4e(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=Ct.fromObject(s,r);return l.length>0?Ct.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"},GH={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]},R4e=TD.hanidec.replace(/[\[|\]]/g,"").split("");function O4e(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+=R4e.indexOf(t[n]);else for(const i in GH){const[s,o]=GH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Ao({numberingSystem:t},e=""){return new RegExp(`${TD[t||"latn"]}${e}`)}const D4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(O4e(n))}}const WH="[  ]",VH=new RegExp(WH,"g");function N4e(t){return t.replace(/\./g,"\\.?").replace(VH,WH)}function YH(t){return t.replace(/\./g,"").replace(VH," ").toLowerCase()}function vo(t,e){return t===null?null:{regex:RegExp(t.map(N4e).join("|")),deser:([n])=>t.findIndex(r=>YH(n)===YH(r))+e}}function KH(t,e){return{regex:t,deser:([,n,r])=>CS(n,r),groups:e}}function RD(t){return{regex:t,deser:([e])=>e}}function w4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function F4e(t,e){const n=Ao(e),r=Ao(e,"{2}"),i=Ao(e,"{3}"),s=Ao(e,"{4}"),o=Ao(e,"{6}"),u=Ao(e,"{1,2}"),a=Ao(e,"{1,3}"),l=Ao(e,"{1,6}"),c=Ao(e,"{1,9}"),f=Ao(e,"{2,4}"),x=Ao(e,"{4,6}"),h=g=>({regex:RegExp(w4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return vo(e.eras("short",!1),0);case"GG":return vo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,gD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return vo(e.months("short",!0,!1),1);case"MMMM":return vo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return vo(e.months("short",!1,!1),1);case"LLLL":return vo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return RD(c);case"uu":return RD(u);case"uuu":return $t(n);case"a":return vo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,gD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return vo(e.weekdays("short",!1,!1),1);case"EEEE":return vo(e.weekdays("long",!1,!1),1);case"ccc":return vo(e.weekdays("short",!0,!1),1);case"cccc":return vo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return KH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return KH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return RD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:D4e};return m.token=t,m}const L4e={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 I4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=L4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function $4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function B4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Yd(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 k4e(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 _t(t.z)||(n=Su.create(t.z)),_t(t.Z)||(n||(n=new Mr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(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),_t(t.u)||(t.S=dD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let OD=null;function M4e(){return OD||(OD=at.fromMillis(1555555555555)),OD}function P4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(M4e()).map(o=>I4e(o,e,n));return s.includes(void 0)?t:s}function j4e(t,e){return Array.prototype.concat(...t.map(n=>P4e(n,e)))}function XH(t,e,n){const r=j4e(Fi.parseFormat(n),t),i=r.map(o=>F4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=$4e(i),a=RegExp(o,"i"),[l,c]=B4e(e,a,u),[f,x,h]=c?k4e(c):[null,null,void 0];if(Yd(c,"a")&&Yd(c,"H"))throw new hg("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 U4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=XH(t,e,n);return[r,i,s,o]}const JH=[0,31,59,90,120,151,181,212,243,273,304,334],ZH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new Eo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function eQ(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 tQ(t,e,n){return n+(pg(t)?ZH:JH)[e-1]}function nQ(t,e){const n=pg(t)?ZH:JH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function DD(t){const{year:e,month:n,day:r}=t,i=tQ(e,n,r),s=eQ(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=_S(u)):o>_S(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...TS(t)}}function rQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=eQ(e,1,4),s=gg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=gg(u)):o>s?(u=e+1,o-=gg(e)):u=e;const{month:a,day:l}=nQ(u,o);return{year:u,month:a,day:l,...TS(t)}}function ND(t){const{year:e,month:n,day:r}=t,i=tQ(e,n,r);return{year:e,ordinal:i,...TS(t)}}function iQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=nQ(e,n);return{year:e,month:r,day:i,...TS(t)}}function q4e(t){const e=vS(t.weekYear),n=La(t.weekNumber,1,_S(t.weekYear)),r=La(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function z4e(t){const e=vS(t.year),n=La(t.ordinal,1,gg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function sQ(t){const e=vS(t.year),n=La(t.month,1,12),r=La(t.day,1,SS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function oQ(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=La(e,0,23)||e===24&&n===0&&r===0&&i===0,o=La(n,0,59),u=La(r,0,59),a=La(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const wD="Invalid DateTime",uQ=864e13;function wS(t){return new Eo("unsupported zone",`the zone "${t.name}" is not supported`)}function FD(t){return t.weekData===null&&(t.weekData=DD(t.c)),t.weekData}function _g(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new at({...n,...e,old:n})}function aQ(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 lQ(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 FS(t,e,n){return aQ(pD(t),e,n)}function cQ(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,SS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.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=pD(s);let[a,l]=aQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function Cg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=at.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return at.invalid(new Eo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function LS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function LD(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Fn(t.c.year,n?6:4),e?(r+="-",r+=Fn(t.c.month),r+="-",r+=Fn(t.c.day)):(r+=Fn(t.c.month),r+=Fn(t.c.day)),r}function fQ(t,e,n,r,i,s){let o=Fn(t.c.hour);return e?(o+=":",o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=Fn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Fn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Fn(Math.trunc(-t.o/60)),o+=":",o+=Fn(Math.trunc(-t.o%60))):(o+="+",o+=Fn(Math.trunc(t.o/60)),o+=":",o+=Fn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const xQ={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},H4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},dQ=["year","month","day","hour","minute","second","millisecond"],G4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],W4e=["year","ordinal","hour","minute","second","millisecond"];function hQ(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 Kz(t);return e}function pQ(t,e){const n=l0(e.zone,Ln.defaultZone),r=xn.fromObject(e),i=Ln.now();let s,o;if(_t(t.year))s=i;else{for(const l of dQ)_t(t[l])&&(t[l]=xQ[l]);const u=sQ(t)||oQ(t);if(u)return at.invalid(u);const a=n.offset(i);[s,o]=FS(t,a,n)}return new at({ts:s,zone:n,loc:r,o})}function gQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=hD(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 mQ(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 at{constructor(e){const n=e.zone||Ln.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Eo("invalid input"):null)||(n.isValid?null:wS(n));this.ts=_t(e.ts)?Ln.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=lQ(this.ts,u),r=Number.isNaN(i.year)?new Eo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new at({})}static local(){const[e,n]=mQ(arguments),[r,i,s,o,u,a,l]=n;return pQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=mQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Mr.utcInstance,pQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=rSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=l0(n.zone,Ln.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(wS(i))}static fromMillis(e,n={}){if(uf(e))return e<-uQ||e>uQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(uf(e))return new at({ts:e*1e3,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=l0(n.zone,Ln.defaultZone);if(!r.isValid)return at.invalid(wS(r));const i=Ln.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=bS(e,hQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new hg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new hg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=lQ(i,s);h?(p=G4e,m=H4e,g=DD(g)):u?(p=W4e,m=Q4e,g=ND(g)):(p=dQ,m=xQ);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?q4e(o):u?z4e(o):sQ(o),A=E||oQ(o);if(A)return at.invalid(A);const v=h?rQ(o):u?iQ(o):o,[_,S]=FS(v,s,r),C=new at({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?at.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]=a4e(e);return Cg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=l4e(e);return Cg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=c4e(e);return Cg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=U4e(o,e,n);return c?at.invalid(c):Cg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return at.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=m4e(e);return Cg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Xve(r);return new at({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?Sg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Sg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Sg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Sg.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 pg(this.year)}get daysInMonth(){return SS(this.year,this.month)}get daysInYear(){return this.isValid?gg(this.year):NaN}get weeksInWeekYear(){return this.isValid?_S(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Ln.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=l0(e,Ln.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]=FS(o,s,e)}return _g(this,{ts:i,zone:e})}else return at.invalid(wS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return _g(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=bS(e,hQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new hg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new hg("Can't mix ordinal dates with month/day");let l;r?l=rQ({...DD(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(SS(l.year,l.month),l.day))):l=iQ({...ND(this.c),...n});const[c,f]=FS(l,this.o,this.zone);return _g(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return _g(this,cQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return _g(this,cQ(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.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?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):wD}toLocaleString(e=xD,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):wD}toLocaleParts(e={}){return this.isValid?Fi.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=LD(this,o);return u+="T",u+=fQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?LD(this,e==="extended"):null}toISOWeekDate(){return LS(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":"")+fQ(this,o==="extended",n,e,r,s):null}toRFC2822(){return LS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return LS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?LD(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")),LS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():wD}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 Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=iSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=T4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(at.now(),e,n)}until(e){return this.isValid?dn.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||at.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),gQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?gQ(e.base||at.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(at.isDateTime))throw new Fs("min requires all arguments be DateTimes");return mH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(at.isDateTime))throw new Fs("max requires all arguments be DateTimes");return mH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return XH(o,e,n)}static fromStringExplain(e,n,r={}){return at.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return xD}static get DATE_MED(){return Xz}static get DATE_MED_WITH_WEEKDAY(){return eSe}static get DATE_FULL(){return Jz}static get DATE_HUGE(){return Zz}static get TIME_SIMPLE(){return eH}static get TIME_WITH_SECONDS(){return tH}static get TIME_WITH_SHORT_OFFSET(){return nH}static get TIME_WITH_LONG_OFFSET(){return rH}static get TIME_24_SIMPLE(){return iH}static get TIME_24_WITH_SECONDS(){return sH}static get TIME_24_WITH_SHORT_OFFSET(){return oH}static get TIME_24_WITH_LONG_OFFSET(){return uH}static get DATETIME_SHORT(){return aH}static get DATETIME_SHORT_WITH_SECONDS(){return lH}static get DATETIME_MED(){return cH}static get DATETIME_MED_WITH_SECONDS(){return fH}static get DATETIME_MED_WITH_WEEKDAY(){return tSe}static get DATETIME_FULL(){return xH}static get DATETIME_FULL_WITH_SECONDS(){return dH}static get DATETIME_HUGE(){return hH}static get DATETIME_HUGE_WITH_SECONDS(){return pH}}function bg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&uf(t.valueOf()))return at.fromJSDate(t);if(t&&typeof t=="object")return at.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const V4e="2.5.2";var Y4e=wi.DateTime=at;wi.Duration=Ct,wi.FixedOffsetZone=Mr,wi.IANAZone=Su,wi.Info=Sg,wi.Interval=dn,wi.InvalidZone=DH,wi.Settings=Ln,wi.SystemZone=RS,wi.VERSION=V4e,wi.Zone=Kd,Object.defineProperty(er,"__esModule",{value:!0}),er.LiteralYear=er.LiteralQuarter=er.LiteralMonth=er.LiteralWeek=er.LiteralDay=er.LiteralHour=er.LiteralTimestamp=er.TimeFormatError=void 0;const c0=wi,K4e=We,X4e=n0,yQ=Hd,ID=ut;class J4e extends Error{}er.TimeFormatError=J4e;function ff(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 EQ="yyyy",AQ=`${EQ}-LL`,$s=`${AQ}-dd`,vQ=`${$s} HH`,SQ=`${vQ}:mm`,$D=`${SQ}:ss`;class _Q extends ID.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={node:"timeLiteral",literal:e,typeDef:{type: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 BD extends _Q{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=ff(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=c0.DateTime.fromFormat(e,$D);if(s.isValid)return new BD(r,n);if(s=c0.DateTime.fromFormat(e,SQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat($D);return new kD(r,n,"timestamp",o)}}}er.LiteralTimestamp=BD;class kD extends _Q{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,ID.getMorphicValue)(i,"timestamp"),a=(0,ID.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,K4e.isTemporalField)(o.dataType)){const u=o.dataType;return new X4e.Range(new yQ.ExprTime(u,i.value),new yQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class MD extends kD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,vQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat($D),new MD(n,r)}}er.LiteralHour=MD;class Tg extends kD{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 Tg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new PD(n,r)}}er.LiteralDay=PD;class jD extends Tg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=ff(e,!1);let r=n.text;const i=n.text.slice(0,10),s=c0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new jD(n,r)}}}er.LiteralWeek=jD;class UD extends Tg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,AQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new UD(n,r)}}}er.LiteralMonth=UD;class qD extends Tg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=ff(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=c0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new qD(n,r)}}}er.LiteralQuarter=qD;class zD extends Tg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,EQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new zD(n,r)}}}er.LiteralYear=zD;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.PartialCompare=void 0;const CQ=ut;class Z4e extends CQ.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.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}atNodeType(){return CQ.ATNodeType.Partial}}IS.PartialCompare=Z4e;var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.PickWhen=rh.Pick=void 0;const _u=We,ih=Zt,e_e=ut,t_e=Qe;function $S(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class n_e extends e_e.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={node:"case",kids:{caseWhen:[],caseThen:[]}};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,_u.maxExpressionType)(o,(0,_u.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,_u.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!ih.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=$S(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=$S(s,l),ih.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,_u.maxExpressionType)(o,l.expressionType),evalSpace:(0,_u.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"case",kids:{caseWhen:[],caseThen:[]}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!ih.FT.typeEq(a.when,ih.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!ih.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=$S(i,a.pick),s=(0,_u.maxExpressionType)(s,(0,_u.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,_u.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,_u.maxExpressionType)(s,u.expressionType),o=(0,_u.mergeEvalSpaces)(o,u.evalSpace),i=$S(i,u),ih.FT.typeEq(i,u,!0)?(n.kids.caseElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}rh.Pick=n_e;class r_e extends t_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}rh.PickWhen=r_e;var sh={};Object.defineProperty(sh,"__esModule",{value:!0}),sh.CaseWhen=sh.Case=void 0;const i_e=ut,s_e=Qe,Rg=Zt,xf=Yi;function bQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class o_e extends i_e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,xf.maxExpressionType)(i,o.expressionType),s=(0,xf.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!Rg.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Rg.FT.typeEq(l.when,Rg.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Rg.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=bQ(a,l.then),i=(0,xf.maxExpressionType)(i,(0,xf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,xf.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!Rg.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=bQ(a,l),i=(0,xf.maxExpressionType)(i,l.expressionType),s=(0,xf.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}sh.Case=o_e;class u_e extends s_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}sh.CaseWhen=u_e;var oh={};Object.defineProperty(oh,"__esModule",{value:!0}),oh.RecordLiteral=oh.RecordElement=void 0;const a_e=ut,l_e=Qe;class c_e extends l_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}oh.RecordElement=c_e;class f_e extends a_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){throw new Error("get expression on record todo")}}oh.RecordLiteral=f_e;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.Timeframe=void 0;const x_e=We,d_e=Qe;class h_e extends d_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,x_e.isTimestampUnit)(n)?n:"second"}}BS.Timeframe=h_e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.TopBy=void 0;const p_e=We,TQ=ut,g_e=Qe;class m_e extends g_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof TQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof TQ.ExpressionDef){const n=this.by.getExpression(e);return(0,p_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}kS.TopBy=m_e;var f0={};Object.defineProperty(f0,"__esModule",{value:!0}),f0.ImportStatement=f0.ImportSelect=f0.ImportSourceName=void 0;const HD=Qe;class y_e extends HD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}f0.ImportSourceName=y_e;class E_e extends HD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}f0.ImportSelect=E_e;class A_e 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.logError("invalid-import-url","Invalid URL 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.logError("no-translator-for-import","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.logError("name-conflict-on-selective-import",`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.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}f0.ImportStatement=A_e;var Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.ExtendBlock=void 0;const v_e=Qe,S_e=En;class __e extends v_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=S_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Og.ExtendBlock=__e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.Argument=void 0;const C_e=Qe;class b_e extends C_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}MS.Argument=b_e;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.HasParameter=void 0;const RQ=We,T_e=Qe;class R_e extends T_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,RQ.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.logError("parameter-default-does-not-match-declared-type",`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.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,RQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`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.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}PS.HasParameter=R_e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.AnonymousQuery=void 0;const O_e=Qe,D_e=$r;class N_e extends O_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=D_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","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)}}jS.AnonymousQuery=N_e;var x0={};Object.defineProperty(x0,"__esModule",{value:!0}),x0.View=void 0;const w_e=Qe;let F_e=class extends w_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};x0.View=F_e;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.ViewArrow=void 0;const L_e=mr,I_e=x0;class $_e extends I_e.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 L_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}US.ViewArrow=$_e;var qS={},Dg={};Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.refine=void 0;const QD=Yi,GD=Jl;function B_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,QD.isRawSegment)(s))t.logError("refinement-of-raw-query","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.logError("mismatched-view-types-for-refinement",`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.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","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,QD.isQuerySegment)(o)&&(0,QD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,GD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,GD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(GD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Dg.refine=B_e,Object.defineProperty(qS,"__esModule",{value:!0}),qS.ViewRefine=void 0;const k_e=kr,M_e=is,P_e=Dg,j_e=x0;class U_e extends j_e.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,M_e.getFinalStruct)(this.refinement,e.structDef(),i):k_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,P_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}qS.ViewRefine=U_e;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.ReferenceView=void 0;const WD=We,OQ=kr,q_e=is,z_e=Br,H_e=Dg,Q_e=x0;class G_e extends Q_e.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:OQ.ErrorFactory.structDef,outputStruct:OQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof z_e.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,WD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,WD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,WD.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,q_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","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.logError("refinement-with-multistage-view",`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,H_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}zS.ReferenceView=G_e;var HS={},Ng={},QS={},wg={};Object.defineProperty(wg,"__esModule",{value:!0}),wg.Index=void 0;const W_e=Qe,V_e=En;let Y_e=class extends W_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=V_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};wg.Index=Y_e;var Fg={};Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.SampleProperty=void 0;const K_e=Qe,DQ=En;class X_e extends K_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=DQ.LegalRefinementStage.Tail,this.forceQueryClass=DQ.QueryClass.Index}sampling(){return this.sample}}Fg.SampleProperty=X_e;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.IndexFieldSpace=void 0;const NQ=We,VD=pt,J_e=Br,Z_e=mo,e5e=lg,t5e=mr;class n5e extends Z_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof VD.FieldReference?super.pushFields(n):n instanceof VD.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof J_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof e5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):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 t5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`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=VD.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,NQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,NQ.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)}}GS.IndexFieldSpace=n5e,Object.defineProperty(QS,"__esModule",{value:!0}),QS.IndexBuilder=void 0;const YD=We,r5e=kr,i5e=po,s5e=wg,o5e=s0,u5e=Fg,a5e=GS;class l5e{constructor(e,n,r,i){this.filters=[],this.alwaysJoins=[],this.type="index",this.resultFS=new a5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof i5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof o5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof s5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof u5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,YD.isIndexSegment)(e)&&!(0,YD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),r5e.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,YD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins]),n}}QS.IndexBuilder=l5e;var WS={},Lg={};Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.GroupBy=void 0;const c5e=rs,wQ=En;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=wQ.LegalRefinementStage.Single,this.forceQueryClass=wQ.QueryClass.Grouping}}Lg.GroupBy=f5e;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.ProjectFieldSpace=void 0;const KD=We,x5e=mo;class d5e extends x5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,KD.expressionIsAggregate)(e.expressionType)?!1:(0,KD.expressionInvolvesAggregate)(e.expressionType)&&(0,KD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}VS.ProjectFieldSpace=d5e;var d0={},df={};Object.defineProperty(df,"__esModule",{value:!0}),df.Ordering=df.OrderBy=void 0;const h5e=We,FQ=o0,LQ=Qe,p5e=En;class g5e extends LQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof FQ.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 FQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,h5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}df.OrderBy=g5e;class m5e extends LQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=p5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}df.Ordering=m5e;var Ig={};Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.Top=void 0;const IQ=We,y5e=o0,E5e=Qe,A5e=En;let v5e=class extends E5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof y5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,IQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`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,IQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Ig.Top=v5e,Object.defineProperty(d0,"__esModule",{value:!0}),d0.ReduceBuilder=d0.QuerySegmentBuilder=void 0;const $Q=We,S5e=kr,_5e=po,C5e=s0,BQ=df,kQ=Ig,b5e=mo,T5e=rs;class MQ{constructor(){this.alwaysJoins=[],this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof T5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof kQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof C5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof BQ.Ordering&&(this.order?e.logError("ordering-already-specified","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 kQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof BQ.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]),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins])}}d0.QuerySegmentBuilder=MQ;class R5e extends MQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new b5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,$Q.isReduceSegment)(e)||(0,$Q.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),S5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}d0.ReduceBuilder=R5e,Object.defineProperty(WS,"__esModule",{value:!0}),WS.ProjectBuilder=void 0;const PQ=We,O5e=kr,D5e=Lg,N5e=VS,w5e=d0;class F5e extends w5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new N5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof D5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,PQ.isProjectSegment)(e)||(0,PQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),O5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}WS.ProjectBuilder=F5e;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.PartialBuilder=void 0;const L5e=Yi,I5e=d0;class $5e extends I5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,L5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}YS.PartialBuilder=$5e,Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.QOpDesc=void 0;const B5e=QS,k5e=WS,M5e=d0,P5e=Qe,j5e=is,U5e=mr,hf=En,q5e=YS;class z5e extends P5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=hf.QueryClass.Grouping:this.refineThis.type==="project"?n=hf.QueryClass.Project:this.refineThis.type==="index"&&(n=hf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`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.logError("ambiguous-view-type",{}),n=hf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case hf.QueryClass.Grouping:return new M5e.ReduceBuilder(e,this.refineThis,n,r);case hf.QueryClass.Project:return new k5e.ProjectBuilder(e,this.refineThis,n,r);case hf.QueryClass.Index:return new B5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new q5e.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 U5e.StaticSourceSpace((0,j5e.opOutputStruct)(this,e.structDef(),i))}}}Ng.QOpDesc=z5e,Object.defineProperty(HS,"__esModule",{value:!0}),HS.QOpDescView=void 0;const H5e=We,Q5e=mr,jQ=Ng,G5e=is,XD=En,W5e=x0;class V5e extends W5e.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,H5e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","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 jQ.QOpDesc([]),o=new jQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case XD.LegalRefinementStage.Head:s.push(u);break;case XD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case XD.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","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,G5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new Q5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}HS.QOpDescView=V5e;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const UQ=We,Y5e=Zt,K5e=zd,X5e=Qe,pf=jn,J5e=$r,Z5e=Br;class h0 extends X5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=J5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new JD(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 u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,UQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,K5e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof JD&&e.foundCircle)&&r.dataType!=="error"){const u=Y5e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new qQ(e,this))}}hn.AtomicFieldDeclaration=h0;class eCe extends h0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=eCe;class tCe extends h0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=tCe;class nCe extends h0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=nCe;class rCe extends h0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=rCe;class iCe extends h0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=iCe;class sCe extends h0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=sCe;class oCe extends h0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=oCe;class JD{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:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}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")}}hn.DefSpace=JD;class qQ extends Z5e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,UQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=qQ;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.Aggregate=void 0;const uCe=rs,zQ=En;let aCe=class extends uCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=zQ.LegalRefinementStage.Single,this.forceQueryClass=zQ.QueryClass.Grouping}};KS.Aggregate=aCe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.Calculate=void 0;const lCe=rs,cCe=En;class fCe extends lCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cCe.LegalRefinementStage.Single}}XS.Calculate=fCe;var $g={};Object.defineProperty($g,"__esModule",{value:!0}),$g.Dimensions=void 0;const xCe=Zl;class dCe extends xCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}$g.Dimensions=dCe;var Bg={};Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.Measures=void 0;const hCe=Zl;class pCe extends hCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Bg.Measures=pCe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Nests=void 0;const gCe=rs,HQ=En;class mCe extends gCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=HQ.LegalRefinementStage.Single,this.forceQueryClass=HQ.QueryClass.Grouping}}JS.Nests=mCe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.ProjectStatement=void 0;const yCe=rs,QQ=En;class ECe extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=QQ.QueryClass.Project,this.queryRefinementStage=QQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}ZS.ProjectStatement=ECe;var p0={},Ia={};Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.findReferences=Ia.deprecatedParseTableURI=Ia.constructTableKey=void 0;const ACe=$l,ZD=on;function e7(t){const e=(0,ZD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,ZD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class vCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=GQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,ZD.getId)(e.connectionId()),r=e7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=e7(e.tableURI()),{connectionName:r,tablePath:i}=WQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=e7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function GQ(t,e){return t===void 0?e:`${t}:${e}`}Ia.constructTableKey=GQ;function WQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Ia.deprecatedParseTableURI=WQ;function SCe(t,e,n){const r=new vCe(t,e),i=r;return ACe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Ia.findReferences=SCe,Object.defineProperty(p0,"__esModule",{value:!0}),p0.TableFunctionSource=p0.TableMethodSource=p0.TableSource=void 0;const VQ=Ia,_Ce=ho,YQ=kr;class t7 extends _Ce.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return YQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,VQ.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.logError("failed-to-fetch-table-schema",l),YQ.ErrorFactory.structDef}}p0.TableSource=t7;class CCe extends t7{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.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}p0.TableMethodSource=CCe;class bCe extends t7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,VQ.deprecatedParseTableURI)(this.tableURI)}}p0.TableFunctionSource=bCe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.SQLString=void 0;const TCe=Qe,KQ=Au;class RCe extends TCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(OCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof KQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","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("failed-to-expand-sql-source","Cannot expand into a query")}return e}}e4.SQLString=RCe;function OCe(t){return t instanceof KQ.SourceQueryElement}var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.SourceDesc=void 0;const DCe=Qe;class NCe extends DCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}t4.SourceDesc=NCe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isSourceProperty=void 0;const wCe=po,FCe=Zl,LCe=Bd,ICe=t0,$Ce=kd,BCe=Md,kCe=Pd,MCe=e0,PCe=Oi;function jCe(t){return t instanceof wCe.Filter||t instanceof PCe.JoinStatement||t instanceof FCe.DeclareFields||t instanceof LCe.FieldListEdit||t instanceof ICe.Renames||t instanceof $Ce.PrimaryKey||t instanceof MCe.ObjectAnnotation||t instanceof BCe.Views||t instanceof kCe.TimezoneStatement}n4.isSourceProperty=jCe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isFieldCollectionMember=void 0;const UCe=hn,XQ=pt;function qCe(t){return t instanceof XQ.FieldReference||t instanceof XQ.WildcardFieldReference||t instanceof UCe.AtomicFieldDeclaration}r4.isFieldCollectionMember=qCe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isQueryElement=void 0;const zCe=jd,HCe=Ud,QCe=ig,GCe=sg;function WCe(t){return t instanceof zCe.QueryArrow||t instanceof HCe.QueryRefine||t instanceof QCe.QueryReference||t instanceof GCe.QueryRaw}i4.isQueryElement=WCe;var JQ={};Object.defineProperty(JQ,"__esModule",{value:!0});var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryProperty=void 0;function VCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}s4.isQueryProperty=VCe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isQueryExtendProperty=void 0;const YCe=$g,KCe=Oi,XCe=Bg;function JCe(t){return t instanceof YCe.Dimensions||t instanceof XCe.Measures||t instanceof KCe.JoinStatement}o4.isQueryExtendProperty=JCe;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isFieldPropStatement=void 0;const ZCe=r0,ebe=po,tbe=s0,nbe=Vd;function rbe(t){return t instanceof ebe.Filter||t instanceof tbe.Limit||t instanceof nbe.PartitionBy||t instanceof ZCe.FunctionOrdering}u4.isFieldPropStatement=rbe,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(W1,t),n(wd,t),n(Fd,t),n(ho,t),n(K1,t),n(Au,t),n(wv,t),n(Fv,t),n(Bv,t),n(eg,t),n(Pv,t),n(Bd,t),n(kd,t),n(t0,t),n(Md,t),n(Pd,t),n(jv,t),n(Qd,t),n(qv,t),n(r0,t),n(zv,t),n(Fa,t),n(Hv,t),n(Wd,t),n(Gv,t),n(Wv,t),n(Vv,t),n(wa,t),n(Yv,t),n(Kv,t),n(Jv,t),n(fg,t),n(ag,t),n(nf,t),n(Zv,t),n(eS,t),n(nS,t),n(iS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(cS,t),n(fS,t),n(xS,t),n(dS,t),n(hS,t),n(pS,t),n(yS,t),n(er,t),n(IS,t),n(Vd,t),n(rh,t),n(sh,t),n(oh,t),n(n0,t),n(BS,t),n(kS,t),n(xg,t),n(f0,t),n(Og,t),n(MS,t),n(PS,t),n(jS,t),n(Ud,t),n(jd,t),n(x0,t),n(US,t),n(qS,t),n(zS,t),n(HS,t),n(hn,t),n(pt,t),n(KS,t),n(XS,t),n(Zl,t),n($g,t),n(Og,t),n(po,t),n(Lg,t),n(wg,t),n(Oi,t),n(V1,t),n(s0,t),n(Bg,t),n(W1,t),n(JS,t),n(df,t),n(ZS,t),n(Ng,t),n(Fg,t),n(Ig,t),n(qd,t),n(tf,t),n(og,t),n(p0,t),n(e4,t),n(e0,t),n(go,t),n(t4,t),n(n4,t),n(ut,t),n(r4,t),n(o0,t),n(Qe,t),n(i4,t),n(JQ,t),n(s4,t),n(o4,t),n(u4,t)}(vv);var a4={},uh={};Object.defineProperty(uh,"__esModule",{value:!0}),uh.ConstantExpression=uh.ConstantFieldSpace=void 0;const ibe=ut;class ZQ{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:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}uh.ConstantFieldSpace=ZQ;class sbe extends ibe.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 ZQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}uh.ConstantExpression=sbe;var obe=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]}),ube=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),abe=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)&&obe(e,t,n);return ube(e,t),e};Object.defineProperty(a4,"__esModule",{value:!0}),a4.MalloyToAST=void 0;const eG=EA,lbe=K2,ie=abe(vv),n7=Sv,tG=Kn,cbe=vv,On=on,r7=We,fbe=Jo,xbe=uh;class nG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class i7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const dbe=["##! m4warnings=error"];class hbe extends lbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of dbe){const s=fbe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new tG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof i7||this.astError(s,"unexpected-statement-in-translation",`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 ie.FieldName((0,On.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,On.getId)(e)),e.id())}defaultResult(){return new ie.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 tG.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.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 ie.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","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,On.getPlainString)(e);for(const i of r)i instanceof eG.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,On.getStringParts)(e))r instanceof eG.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,"failed-to-parse-time-literal","Time data parse error"),r=new ie.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=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new xbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,On.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 ie.DefineSource((0,On.getId)(e.sourceNameDef()),n instanceof ie.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=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`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.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,On.getShortString)(o));const u=new ie.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 ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}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 ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){return this.astAt(this.visit(e.joinStatement()),e)}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,r7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","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 ie.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,On.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(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.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(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`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 ie.RenameField((0,On.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.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 ie.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,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.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 ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.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(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${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,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","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,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.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,On.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.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 ie.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 ie.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 ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.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 ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.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 ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,On.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.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 ie.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","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 ie.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 ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,On.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.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,On.getId)(e.exploreQueryNameDef()),r=new ie.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 ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.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 ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.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(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new ie.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 ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(ie.isEquality(n))return this.astAt(new ie.ExprEquality(r,n,i),e);if(ie.isComparison(n))return this.astAt(new ie.ExprCompare(r,n,i),e);throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.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,ie.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,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.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,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,r7.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.getPlainStringFrom({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 ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,On.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.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,r7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,On.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new ie.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new ie.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,On.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.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 ie.ImportSourceName((0,On.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,On.idToStr)(o[0]),u),o[0]))}return r}visitDebugExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new i7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new i7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,On.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.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 ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new nG)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.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 ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof cbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new nG}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitRecordRef(e){const n=e.fieldPath(),r=n.fieldName().at(-1);if(r){const i=(0,On.getId)(r),s=new ie.ExprIdReference(this.getFieldPath(n,ie.ExpressionFieldReference));return new ie.RecordElement(i,s)}throw this.internalError(n,"IMPOSSIBLY A PATH CONTAINED ZERO ELEMENTS")}visitRecordExpr(e){const n=(0,On.getId)(e.recordKey()),r=this.getFieldExpr(e.fieldExpr());return new ie.RecordElement(n,r)}visitExprLiteralRecord(e){const n=this.only(e.recordElement().map(r=>this.astAt(this.visit(r),r)),r=>r instanceof ie.RecordElement&&r,"a key value pair");return new ie.RecordLiteral(n)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new ie.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}a4.MalloyToAST=hbe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.Zone=void 0;class pbe{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})}}l4.Zone=pbe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForDocumentSymbols=void 0;const gbe=$l,mbe=on;class ybe{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,mbe.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 Ebe(t,e,n){const r=new ybe(t,e,[],[]),i=r;return gbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}c4.walkForDocumentSymbols=Ebe;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentCompletions=void 0;const Abe=$l,vbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Sbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],_be=["source","explore","query","sql"];class Cbe{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 vbe)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 Sbe)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 _be)this.completions.push({type:"model_property",text:`${r}: `})}}}function bbe(t,e,n){const r=new Cbe(t,[],n),i=r;return Abe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}f4.walkForDocumentCompletions=bbe;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.walkForDocumentHelpContext=void 0;const Tbe=i6;class Rbe extends Tbe.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 Obe(t,e){return new Rbe(e).visit(t)}x4.walkForDocumentHelpContext=Obe;var d4={},kg={};Object.defineProperty(kg,"__esModule",{value:!0}),kg.locationContainsPosition=void 0;function Dbe(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)}kg.locationContainsPosition=Dbe,Object.defineProperty(d4,"__esModule",{value:!0}),d4.ReferenceList=void 0;const Nbe=kg;class wbe{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,Nbe.locationContainsPosition)(r.location,e))return r}}d4.ReferenceList=wbe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.isNeedResponse=void 0;function Fbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}h4.isNeedResponse=Fbe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForModelAnnotation=void 0;const Lbe=$l;class Ibe{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 $be(t,e,n){const r=new Ibe(t,e,n),i=r;return Lbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}p4.walkForModelAnnotation=$be;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForTablePath=void 0;const rG=on,Bbe=$l;class kbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,rG.getId)(e.connectionId()),[r,i]=(0,rG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Mbe(t,e,n){const r=new kbe(t,e),i=r;return Bbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}g4.walkForTablePath=Mbe;var Pbe=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]}),jbe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=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)&&Pbe(e,t,n);return jbe(e,t),e};Object.defineProperty(du,"__esModule",{value:!0}),du.MalloyParserErrorHandler=du.MalloyTranslator=du.MalloyChildTranslator=du.MalloyTranslation=void 0;const iG=EA,qbe=We,zbe=$A,Hbe=F,sG=Ube(vv),Qbe=a4,s7=Sv,Gbe=Ia,o7=l4,Wbe=c4,Vbe=f4,Ybe=x4,Kbe=d4,m4=h4,Xbe=kg,oG=Jo,Jbe=p4,Zbe=g4;class eTe extends zbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class tTe{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.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}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.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1329
+ `)),Mv.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.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Mv.ErrorFactory.structDef}}og.SQLSource=Yye,Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.SQSource=void 0;const Kye=Au,Xye=sg,Jye=og;class Zye extends Kye.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 Jye.SQLSource){const e=new Xye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}Bv.SQSource=Zye;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.SQExtend=void 0;const eEe=K1,tEe=Au;class nEe extends tEe.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 eEe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}Pv.SQExtend=nEe;var jv={},wa={},ug={};Object.defineProperty(ug,"__esModule",{value:!0}),ug.BinaryBoolean=void 0;const Sz=We,rEe=Ri,iEe=Zt,sEe=go,oEe=ut;class uEe extends oEe.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=[iEe.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,Sz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Sz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,sEe.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,rEe.errorFor)("logial required boolean")}}ug.BinaryBoolean=uEe,Object.defineProperty(wa,"__esModule",{value:!0}),wa.ExprLegacyIn=wa.ExprEquality=wa.ExprCompare=void 0;const _z=Yi,Yt=Zt,aEe=ut,lEe=ug,cEe={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class Cz extends lEe.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=cEe[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}wa.ExprCompare=Cz;class fEe extends Cz{constructor(e,n,r){super(e,n,r),this.elementType="a~=b"}getExpression(e){return this.right.apply(e,this.op,this.left,!0)}apply(e,n,r){return super.apply(e,n,r,!0)}}wa.ExprEquality=fEe;class xEe extends aEe.ExpressionDef{constructor(e,n,r){super(),this.expr=e,this.notIn=n,this.choices=r,this.elementType="in",this.has({expr:e,choices:r})}getExpression(e){const n=this.expr.getExpression(e);let{evalSpace:r,expressionType:i}=n;const s=this.choices.map(o=>{const u=o.getExpression(e);return i=(0,_z.maxExpressionType)(i,u.expressionType),r=(0,_z.mergeEvalSpaces)(r,u.evalSpace),u.value});return{dataType:"boolean",expressionType:i,evalSpace:r,value:{node:"in",not:this.notIn,kids:{e:n.value,oneOf:s}}}}}wa.ExprLegacyIn=xEe;var ag={},Hd={};Object.defineProperty(Hd,"__esModule",{value:!0}),Hd.ExprTime=void 0;const dEe=We,hEe=ut;class tD extends hEe.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:{type:e},e:n.value};(0,dEe.isTemporalField)(n.dataType)&&(i.srcType={type:n.dataType}),r=i}return new tD(e,r,n.expressionType)}}Hd.ExprTime=tD;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.Range=void 0;const bz=We,pEe=Ri,gEe=ut;class mEe extends gEe.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,bz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,bz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right: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.logError("range-as-value","A Range is not a value"),(0,pEe.errorFor)("a range is not a value")}}n0.Range=mEe,Object.defineProperty(ag,"__esModule",{value:!0}),ag.ExprGranularTime=void 0;const nD=We,yEe=Ri,Tz=Zt,Rz=Di,EEe=ut,Uv=Hd,Oz=n0;class AEe extends EEe.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Tz.FT.timestampT,Tz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,nD.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:(0,nD.mkTemporal)(r.value,r.dataType),units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,nD.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,yEe.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Uv.ExprTime.fromValue("timestamp",n),a=new Uv.ExprTime("timestamp",(0,Rz.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Oz.Range(u,a)}const i=new Uv.ExprTime("date",n.value,n.expressionType),s=(0,Rz.timeOffset)("date",n.value,"+",r,this.units),o=new Uv.ExprTime("date",s,n.expressionType);return new Oz.Range(i,o)}}ag.ExprGranularTime=AEe,Object.defineProperty(jv,"__esModule",{value:!0}),jv.Apply=void 0;const vEe=wa,SEe=zd,Dz=ag;class _Ee extends vEe.ExprCompare{constructor(e,n){super(e,"=",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,SEe.isGranularResult)(r)&&(n=new Dz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Dz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}jv.Apply=_Ee;var Qd={};Object.defineProperty(Qd,"__esModule",{value:!0}),Qd.BinaryNumeric=void 0;const CEe=Zt,bEe=ut;class TEe extends bEe.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=[CEe.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Qd.BinaryNumeric=TEe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.Boolean=void 0;const REe=ut,OEe=Zt;let DEe=class extends REe.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...OEe.FT.boolT,value:{node:this.value}}}};qv.Boolean=DEe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.FunctionOrdering=r0.FunctionOrderBy=void 0;const rD=We,Nz=Qe,NEe=nf;class wEe extends Nz.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.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,rD.expressionIsAggregate)(n.expressionType)||((0,rD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof NEe.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,rD.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}r0.FunctionOrderBy=wEe;class FEe extends Nz.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))}}r0.FunctionOrdering=FEe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprAddSub=void 0;const LEe=Qd;class IEe extends LEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}zv.ExprAddSub=IEe;var Fa={},pt={},lg={};Object.defineProperty(lg,"__esModule",{value:!0}),lg.ReferenceField=void 0;const wz=Br;class $Ee extends wz.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.logError(r.error.code,r.error.message);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:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof wz.SpaceField){const u=o.constructorFieldDef();if(u){const 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"}}}lg.ReferenceField=$Ee;var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),jn.typecheckGroupBy=jn.typecheckAggregate=jn.typecheckCalculate=jn.typecheckDeclare=jn.typecheckMeasure=jn.typecheckDimension=jn.typecheckIndex=jn.typecheckProject=void 0;const vn=Yi;function BEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}jn.typecheckProject=BEe;function kEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}jn.typecheckIndex=kEe;function MEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}jn.typecheckDimension=MEe;function PEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}jn.typecheckMeasure=PEe;function jEe(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}jn.typecheckDeclare=jEe;function UEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}jn.typecheckCalculate=UEe;function qEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}jn.typecheckAggregate=qEe;function zEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}jn.typecheckGroupBy=zEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const HEe=lg,QEe=rs,Fz=Qe,Lz=$r,i0=jn;class Ni extends Fz.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Lz.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new HEe.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}}pt.FieldReference=Ni;class GEe extends Ni{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=GEe;class WEe extends Ni{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=WEe;class VEe extends Ni{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=VEe;class YEe extends Ni{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=YEe;class KEe extends Ni{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,i0.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=KEe;class iD extends Ni{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,i0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return iD.indexOutputName(this.path)}}pt.IndexFieldReference=iD;class XEe extends Ni{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,i0.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=XEe;class JEe extends Ni{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,i0.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=JEe;class ZEe extends Ni{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,i0.typecheckProject)(e,this)}}pt.ProjectFieldReference=ZEe;class eAe extends Ni{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,i0.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=eAe;class tAe extends Ni{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,i0.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=tAe;class nAe extends Ni{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,i0.typecheckDimension)(e,this)}}pt.DimensionFieldReference=nAe;class rAe extends Ni{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=rAe;class iAe extends Fz.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Lz.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}.*`:"*"}}pt.WildcardFieldReference=iAe;class sAe extends QEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=sAe,Object.defineProperty(Fa,"__esModule",{value:!0}),Fa.ExprAggregateFunction=void 0;const cg=We,oAe=Nt,uAe=Ri,Iz=mr,aAe=Zt,lAe=pt,cAe=ut,fAe=Br,xAe=nf;class dAe extends cAe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[aAe.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,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Iz.StructSpaceField))if((0,cg.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>hAe(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,cg.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=oD(l,f),m=uD(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=pAe(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,uAe.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...sD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...sD(e,r))}return n}}Fa.ExprAggregateFunction=dAe;function hAe(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 sD(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 Iz.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof fAe.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,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,oAe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,cg.isAtomic)(o)&&!(0,cg.isJoined)(o))if((0,cg.hasExpression)(o)){const u=sD(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function oD(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 uD(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function pAe(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=oD(i,e),o=uD(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=oD(l,e),f=uD(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 lAe.FieldReference?`${n.refString}.${r}()`:n instanceof xAe.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 Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprAlternationTree=void 0;const Qv=We,Gd=ut,gAe=go;function aD(t){const e=t.atExpr();switch(e.atNodeType()){case Gd.ATNodeType.And:case Gd.ATNodeType.Partial:return;case Gd.ATNodeType.Or:{if(e instanceof $z){const n=aD(e.left);if(n){const r=aD(e.right);if(r)return[...n,...r]}}return}default:return e.granular()?void 0:[e]}}class $z extends Gd.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}equalityList(){return this.inList===void 0&&(this.inList=aD(this)||[]),this.inList}apply(e,n,r,i){if((0,gAe.isEquality)(n)){const u=this.equalityList();if(u.length>0&&(n==="="||n==="!=")){const a=r.getExpression(e),l=u.map(x=>x.getExpression(e));let{evalSpace:c,expressionType:f}=a;for(const x of l)c=(0,Qv.mergeEvalSpaces)(c,x.evalSpace),f=(0,Qv.maxExpressionType)(f,x.expressionType);return{dataType:"boolean",evalSpace:c,expressionType:f,value:{node:"in",not:n==="!=",kids:{e:a.value,oneOf:l.map(x=>x.value)}}}}u.length===0&&i&&this.logWarning("or-choices-only",`Only | seperated values are legal when used with ${n} operator`)}const s=this.left.apply(e,n,r),o=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Qv.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,Qv.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:s.value,right:o.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}atNodeType(){return this.op==="|"?Gd.ATNodeType.Or:Gd.ATNodeType.And}}Hv.ExprAlternationTree=$z;var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0}),Wd.ExprAsymmetric=void 0;const mAe=Fa;class yAe extends mAe.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}`}}}}Wd.ExprAsymmetric=yAe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprAvg=void 0;const EAe=Wd;class AAe extends EAe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Gv.ExprAvg=AAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprCast=void 0;const vAe=Di,SAe=ut;class _Ae extends SAe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,vAe.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}Wv.ExprCast=_Ae;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprCoalesce=void 0;const Bz=Yi,kz=Zt,CAe=ut;class bAe extends CAe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=kz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(kz.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Bz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Bz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Vv.ExprCoalesce=bAe;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprCount=void 0;const TAe=Fa;class RAe extends TAe.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={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Yv.ExprCount=RAe;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ExprCountDistinct=void 0;const Xv=Zt,OAe=Fa;class DAe extends OAe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Xv.FT.numberT,Xv.FT.stringT,Xv.FT.dateT,Xv.FT.timestampT]}}Kv.ExprCountDistinct=DAe;var Jv={},s0={};Object.defineProperty(s0,"__esModule",{value:!0}),s0.Limit=void 0;const NAe=Qe,wAe=En;class FAe extends NAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=wAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}s0.Limit=FAe;var Vd={};Object.defineProperty(Vd,"__esModule",{value:!0}),Vd.PartitionBy=void 0;const LAe=Qe;class IAe extends LAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Vd.PartitionBy=IAe;var fg={},o0={};Object.defineProperty(o0,"__esModule",{value:!0}),o0.FieldName=void 0;const $Ae=Qe;class BAe extends $Ae.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])}}o0.FieldName=BAe,Object.defineProperty(fg,"__esModule",{value:!0}),fg.ExprFunc=void 0;const ss=We,kAe=Ri,MAe=Id,PAe=ut,jAe=o0,Mz=Nt;class UAe extends PAe.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)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const L=[`${this.name}(`];for(const H of u)R=(0,ss.maxExpressionType)(R,H.expressionType),O?L.push(","):O=H.dataType,L.push(H.value);return L.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Mz.composeSQLExpr)(L),evalSpace:(0,ss.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,kAe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,ss.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof MAe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=qAe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),L=(0,ss.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),L=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${L}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ss.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ss.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,ss.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",L=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));_.kids.orderBy=L}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const L of O.partitionFields){const M=L.getField(e);M.found===void 0?L.logError("partition-by-not-found",`${L.refString} is not defined`):(0,ss.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ss.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?L.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(L.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,L=zAe(O),M=L.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",W)}const H=[];for(const W of L)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const G=new jAe.FieldName(W.name);this.has({name:G});const K=e.lookup([G]);if(K.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${K.error.message}`);K.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.name]})}S=(0,Mz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,ss.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ss.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}fg.ExprFunc=UAe;function qAe(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,ss.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")||(0,ss.expressionIsAnalytic)(n.returnType.expressionType)&&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 zAe(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(Jv,"__esModule",{value:!0}),Jv.ExprProps=void 0;const HAe=We,QAe=Ri,GAe=Zt,WAe=r0,VAe=s0,YAe=Vd,KAe=ut,XAe=fg;class JAe extends KAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=GAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,HAe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,QAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof YAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof VAe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof WAe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof XAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Jv.ExprProps=JAe;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.ExprLogicalOp=void 0;const ZAe=ug,Pz=Zt;class eve extends ZAe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Pz.FT.boolT,Pz.FT.aggregateBoolT]}}Zv.ExprLogicalOp=eve;var eS={};Object.defineProperty(eS,"__esModule",{value:!0}),eS.ExprMax=void 0;const tS=Zt,tve=Fa;class nve extends tve.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[tS.FT.numberT,tS.FT.stringT,tS.FT.dateT,tS.FT.timestampT]}returns(e){return e.dataType}}eS.ExprMax=nve;var nS={};Object.defineProperty(nS,"__esModule",{value:!0}),nS.ExprMin=void 0;const rS=Zt,rve=Fa;class ive extends rve.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[rS.FT.numberT,rS.FT.stringT,rS.FT.dateT,rS.FT.timestampT]}returns(e){return e.dataType}}nS.ExprMin=ive;var iS={};Object.defineProperty(iS,"__esModule",{value:!0}),iS.ExprMinus=void 0;const sve=Ri,jz=Zt,ove=ut;class uve extends ove.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[jz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return jz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,sve.errorFor)("negate requires number")}}iS.ExprMinus=uve;var sS={};Object.defineProperty(sS,"__esModule",{value:!0}),sS.ExprMulDiv=void 0;const ave=Qd;class lve extends ave.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}sS.ExprMulDiv=lve;var oS={},xg={};Object.defineProperty(xg,"__esModule",{value:!0}),xg.Unary=void 0;const cve=ut;class fve extends cve.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}xg.Unary=fve,Object.defineProperty(oS,"__esModule",{value:!0}),oS.ExprNot=void 0;const Uz=Zt,xve=xg;class dve extends xve.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Uz.FT.boolT,Uz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}oS.ExprNot=dve;var uS={};Object.defineProperty(uS,"__esModule",{value:!0}),uS.ExprNow=void 0;const hve=ut;class pve extends hve.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}uS.ExprNow=pve;var aS={};Object.defineProperty(aS,"__esModule",{value:!0}),aS.ExprNULL=void 0;const gve=ut;class mve extends gve.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}aS.ExprNULL=mve;var lS={};Object.defineProperty(lS,"__esModule",{value:!0}),lS.ExprNumber=void 0;const yve=Zt,Eve=ut;class Ave extends Eve.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...yve.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}lS.ExprNumber=Ave;var cS={};Object.defineProperty(cS,"__esModule",{value:!0}),cS.ExprParens=void 0;const lD=ut;class vve extends lD.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:{node:"()",e:n.value}}}apply(e,n,r,i){return this.expr.atNodeType()===lD.ATNodeType.Or?this.expr.apply(e,n,r,i):(0,lD.applyBinary)(e,r,n,this)}atNodeType(){return this.expr.atNodeType()}atExpr(){return this.expr}}cS.ExprParens=vve;var fS={};Object.defineProperty(fS,"__esModule",{value:!0}),fS.ExprRegEx=void 0;const Sve=ut;class _ve extends Sve.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}fS.ExprRegEx=_ve;var xS={};Object.defineProperty(xS,"__esModule",{value:!0}),xS.ExprString=void 0;const Cve=ut,bve=Zt;class Tve extends Cve.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...bve.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}xS.ExprString=Tve;var dS={};Object.defineProperty(dS,"__esModule",{value:!0}),dS.ExprSum=void 0;const Rve=Wd;class Ove extends Rve.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}dS.ExprSum=Ove;var hS={};Object.defineProperty(hS,"__esModule",{value:!0}),hS.ExprTimeExtract=void 0;const vu=We,qz=Ri,cD=ut,Dve=n0;class dg extends cD.ExpressionDef{static extractor(e){const n=dg.pluralMap[e];if(n)return n;if((0,vu.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=dg.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof Dve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,vu.maxExpressionType)(i.expressionType,s.expressionType),u=(0,vu.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,qz.errorFor)("extract from error").value};if(!(0,vu.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,vu.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,cD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,cD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,vu.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:(0,vu.mkTemporal)(i.value,a),right:(0,vu.mkTemporal)(s.value,a)}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,vu.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:(0,vu.mkTemporal)(i.value,i.dataType),units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,qz.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}hS.ExprTimeExtract=dg,dg.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var pS={},mo={},gS={};Object.defineProperty(gS,"__esModule",{value:!0}),gS.QueryInputSpace=void 0;const Nve=Oi,wve=Ld;class Fve extends wve.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Nve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}gS.QueryInputSpace=Fve;var Lve=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]}),Ive=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),$ve=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)&&Lve(e,t,n);return Ive(e,t),e};Object.defineProperty(mo,"__esModule",{value:!0}),mo.ReduceFieldSpace=mo.QuerySpace=mo.QueryOperationSpace=void 0;const mS=$ve(We),fD=Jl,Bve=o0,kve=Br,Mve=pt,Pve=Ld,jve=J1,Uve=mr,qve=gS;class zz extends Pve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new qve.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),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 Uve.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`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.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();mS.isAtomicFieldType(l.dataType)&&mS.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)}}mo.QueryOperationSpace=zz;class Hz extends zz{addRefineFromFields(e){var n;if(mS.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new Bve.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 jve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Mve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof kve.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)&&!Hve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(mS.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","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,fD.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,fD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,fD.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}}mo.QuerySpace=Hz;class zve extends Hz{constructor(){super(...arguments),this.segmentType="reduce"}}mo.ReduceFieldSpace=zve;function Hve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(pS,"__esModule",{value:!0}),pS.ExprUngroup=void 0;const Qz=We,Qve=mo,Gve=Zt,Wve=ut;class Vve extends Wve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=Gve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Qz.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Qz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node: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 Qve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${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.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}pS.ExprUngroup=Vve;var yS={};Object.defineProperty(yS,"__esModule",{value:!0}),yS.ForRange=void 0;const Gz=Yi,Wz=Ri,Vz=Zt,ES=Di,Yve=ut,AS=Hd,Yz=n0;class Kve extends Yve.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=[Vz.FT.timestampT,Vz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Wz.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,Gz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Gz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Wz.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,ES.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,ES.timeOffset)("date",i.value,"+",o.value,u),g=new AS.ExprTime("date",m);return new Yz.Range(p,g).apply(e,n,r)}const l=AS.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,ES.castTo)("timestamp",f,"date"),c=new AS.ExprTime("timestamp",f,i.expressionType)}const x=(0,ES.timeOffset)("timestamp",f,"+",o.value,u),h=new AS.ExprTime("timestamp",x,i.expressionType);return new Yz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}yS.ForRange=Kve;var er={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});class of extends Error{}class Xve extends of{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Jve extends of{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class Zve extends of{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class hg extends of{}class Kz extends of{constructor(e){super(`Invalid unit ${e}`)}}class Fs extends of{}class u0 extends of{constructor(){super("Zone is an abstract class")}}const ke="numeric",yo="short",os="long",xD={year:ke,month:ke,day:ke},Xz={year:ke,month:yo,day:ke},eSe={year:ke,month:yo,day:ke,weekday:yo},Jz={year:ke,month:os,day:ke},Zz={year:ke,month:os,day:ke,weekday:os},eH={hour:ke,minute:ke},tH={hour:ke,minute:ke,second:ke},nH={hour:ke,minute:ke,second:ke,timeZoneName:yo},rH={hour:ke,minute:ke,second:ke,timeZoneName:os},iH={hour:ke,minute:ke,hourCycle:"h23"},sH={hour:ke,minute:ke,second:ke,hourCycle:"h23"},oH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:yo},uH={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:os},aH={year:ke,month:ke,day:ke,hour:ke,minute:ke},lH={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},cH={year:ke,month:yo,day:ke,hour:ke,minute:ke},fH={year:ke,month:yo,day:ke,hour:ke,minute:ke,second:ke},tSe={year:ke,month:yo,day:ke,weekday:yo,hour:ke,minute:ke},xH={year:ke,month:os,day:ke,hour:ke,minute:ke,timeZoneName:yo},dH={year:ke,month:os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:yo},hH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,timeZoneName:os},pH={year:ke,month:os,day:ke,weekday:os,hour:ke,minute:ke,second:ke,timeZoneName:os};function _t(t){return typeof t>"u"}function uf(t){return typeof t=="number"}function vS(t){return typeof t=="number"&&t%1===0}function nSe(t){return typeof t=="string"}function rSe(t){return Object.prototype.toString.call(t)==="[object Date]"}function gH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function iSe(t){return Array.isArray(t)?t:[t]}function mH(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 sSe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Yd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function La(t,e,n){return vS(t)&&t>=e&&t<=n}function oSe(t,e){return t-e*Math.floor(t/e)}function Fn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function a0(t){if(!(_t(t)||t===null||t===""))return parseInt(t,10)}function af(t){if(!(_t(t)||t===null||t===""))return parseFloat(t)}function dD(t){if(!(_t(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function hD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function pg(t){return t%4===0&&(t%100!==0||t%400===0)}function gg(t){return pg(t)?366:365}function SS(t,e){const n=oSe(e-1,12)+1,r=t+(e-n)/12;return n===2?pg(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function pD(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 _S(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 gD(t){return t>99?t:t>60?1900+t:2e3+t}function yH(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 CS(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 EH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Fs(`Invalid unit value ${t}`);return e}function bS(t,e){const n={};for(const r in t)if(Yd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=EH(i)}return n}function mg(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}${Fn(n,2)}:${Fn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Fn(n,2)}${Fn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function TS(t){return sSe(t,["hour","minute","second","millisecond"])}const AH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,uSe=["January","February","March","April","May","June","July","August","September","October","November","December"],vH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],aSe=["J","F","M","A","M","J","J","A","S","O","N","D"];function SH(t){switch(t){case"narrow":return[...aSe];case"short":return[...vH];case"long":return[...uSe];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 _H=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],CH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],lSe=["M","T","W","T","F","S","S"];function bH(t){switch(t){case"narrow":return[...lSe];case"short":return[...CH];case"long":return[..._H];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const TH=["AM","PM"],cSe=["Before Christ","Anno Domini"],fSe=["BC","AD"],xSe=["B","A"];function RH(t){switch(t){case"narrow":return[...xSe];case"short":return[...fSe];case"long":return[...cSe];default:return null}}function dSe(t){return TH[t.hour<12?0:1]}function hSe(t,e){return bH(e)[t.weekday-1]}function pSe(t,e){return SH(e)[t.month-1]}function gSe(t,e){return RH(e)[t.year<0?0:1]}function mSe(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 OH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ySe={D:xD,DD:Xz,DDD:Jz,DDDD:Zz,t:eH,tt:tH,ttt:nH,tttt:rH,T:iH,TT:sH,TTT:oH,TTTT:uH,f:aH,ff:cH,fff:xH,ffff:hH,F:lH,FF:fH,FFF:dH,FFFF:pH};class Fi{static create(e,n={}){return new Fi(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 ySe[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 Fn(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?dSe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?pSe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?hSe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Fi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?gSe(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 OH(Fi.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=Fi.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 OH(s,i(u))}}class Eo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Kd=class{get type(){throw new u0}get name(){throw new u0}get ianaName(){return this.name}get isUniversal(){throw new u0}offsetName(e,n){throw new u0}formatOffset(e,n){throw new u0}offset(e){throw new u0}equals(e){throw new u0}get isValid(){throw new u0}},mD=null;class RS extends Kd{static get instance(){return mD===null&&(mD=new RS),mD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return yH(e,n,r)}formatOffset(e,n){return mg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let OS={};function ESe(t){return OS[t]||(OS[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"})),OS[t]}const ASe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function vSe(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 SSe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=ASe[s];s==="era"?r[u]=o:_t(u)||(r[u]=parseInt(o,10))}return r}let DS={};class Su extends Kd{static create(e){return DS[e]||(DS[e]=new Su(e)),DS[e]}static resetCache(){DS={},OS={}}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=Su.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return yH(e,n,r,this.name)}formatOffset(e,n){return mg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=ESe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?SSe(r,n):vSe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=pD({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 yD=null;class Mr extends Kd{static get utcInstance(){return yD===null&&(yD=new Mr(0)),yD}static instance(e){return e===0?Mr.utcInstance:new Mr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Mr(CS(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${mg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${mg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return mg(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 DH extends Kd{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 l0(t,e){if(_t(t)||t===null)return e;if(t instanceof Kd)return t;if(nSe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Mr.utcInstance:Mr.parseSpecifier(n)||Su.create(t)}else return uf(t)?Mr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new DH(t)}let NH=()=>Date.now(),wH="system",FH=null,LH=null,IH=null,$H;class Ln{static get now(){return NH}static set now(e){NH=e}static set defaultZone(e){wH=e}static get defaultZone(){return l0(wH,RS.instance)}static get defaultLocale(){return FH}static set defaultLocale(e){FH=e}static get defaultNumberingSystem(){return LH}static set defaultNumberingSystem(e){LH=e}static get defaultOutputCalendar(){return IH}static set defaultOutputCalendar(e){IH=e}static get throwOnInvalid(){return $H}static set throwOnInvalid(e){$H=e}static resetCaches(){xn.resetCache(),Su.resetCache()}}let BH={};function _Se(t,e={}){const n=JSON.stringify([t,e]);let r=BH[n];return r||(r=new Intl.ListFormat(t,e),BH[n]=r),r}let ED={};function AD(t,e={}){const n=JSON.stringify([t,e]);let r=ED[n];return r||(r=new Intl.DateTimeFormat(t,e),ED[n]=r),r}let vD={};function CSe(t,e={}){const n=JSON.stringify([t,e]);let r=vD[n];return r||(r=new Intl.NumberFormat(t,e),vD[n]=r),r}let SD={};function bSe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=SD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),SD[i]=s),s}let yg=null;function TSe(){return yg||(yg=new Intl.DateTimeFormat().resolvedOptions().locale,yg)}function RSe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=AD(t).resolvedOptions()}catch{n=AD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function OSe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function DSe(t){const e=[];for(let n=1;n<=12;n++){const r=at.utc(2016,n,1);e.push(t(r))}return e}function NSe(t){const e=[];for(let n=1;n<=7;n++){const r=at.utc(2016,11,13+n);e.push(t(r))}return e}function NS(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function wSe(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 FSe{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=CSe(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):hD(e,3);return Fn(n,this.padTo)}}}class LSe{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&&Su.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:at.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=AD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class ISe{constructor(e,n,r){this.opts={style:"long",...r},!n&&gH()&&(this.rtf=bSe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):mSe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class xn{static fromOpts(e){return xn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Ln.defaultLocale,o=s||(i?"en-US":TSe()),u=n||Ln.defaultNumberingSystem,a=r||Ln.defaultOutputCalendar;return new xn(o,u,a,s)}static resetCache(){yg=null,ED={},vD={},SD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return xn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=RSe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=OSe(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=wSe(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:xn.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 NS(this,e,r,SH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=DSe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return NS(this,e,r,bH,()=>{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]=NSe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return NS(this,void 0,e,()=>TH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[at.utc(2016,11,13,9),at.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return NS(this,e,n,RH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[at.utc(-40,1,1),at.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 FSe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new LSe(e,this.intl,n)}relFormatter(e={}){return new ISe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return _Se(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 Xd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Jd(...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 Zd(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 kH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=a0(e[n+i]);return[r,null,n+i]}}const MH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,$Se=`(?:${MH.source}?(?:\\[(${AH.source})\\])?)?`,_D=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,PH=RegExp(`${_D.source}${$Se}`),CD=RegExp(`(?:T${PH.source})?`),BSe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kSe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,MSe=/(\d{4})-?(\d{3})/,PSe=kH("weekYear","weekNumber","weekDay"),jSe=kH("year","ordinal"),USe=/(\d{4})-(\d\d)-(\d\d)/,jH=RegExp(`${_D.source} ?(?:${MH.source}|(${AH.source}))?`),qSe=RegExp(`(?: ${jH.source})?`);function eh(t,e,n){const r=t[e];return _t(r)?n:a0(r)}function zSe(t,e){return[{year:eh(t,e),month:eh(t,e+1,1),day:eh(t,e+2,1)},null,e+3]}function th(t,e){return[{hours:eh(t,e,0),minutes:eh(t,e+1,0),seconds:eh(t,e+2,0),milliseconds:dD(t[e+3])},null,e+4]}function Eg(t,e){const n=!t[e]&&!t[e+1],r=CS(t[e+1],t[e+2]),i=n?null:Mr.instance(r);return[{},i,e+3]}function Ag(t,e){const n=t[e]?Su.create(t[e]):null;return[{},n,e+1]}const HSe=RegExp(`^T?${_D.source}$`),QSe=/^-?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 GSe(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(af(n)),months:x(af(r)),weeks:x(af(i)),days:x(af(s)),hours:x(af(o)),minutes:x(af(u)),seconds:x(af(a),a==="-0"),milliseconds:x(dD(l),f)}]}const WSe={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 bD(t,e,n,r,i,s,o){const u={year:e.length===2?gD(a0(e)):a0(e),month:vH.indexOf(n)+1,day:a0(r),hour:a0(i),minute:a0(s)};return o&&(u.second=a0(o)),t&&(u.weekday=t.length>3?_H.indexOf(t)+1:CH.indexOf(t)+1),u}const VSe=/^(?:(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 YSe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=bD(e,i,r,n,s,o,u);let h;return a?h=WSe[a]:l?h=0:h=CS(c,f),[x,new Mr(h)]}function KSe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const XSe=/^(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$/,JSe=/^(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$/,ZSe=/^(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 UH(t){const[,e,n,r,i,s,o,u]=t;return[bD(e,i,r,n,s,o,u),Mr.utcInstance]}function e4e(t){const[,e,n,r,i,s,o,u]=t;return[bD(e,u,n,r,i,s,o),Mr.utcInstance]}const t4e=Xd(BSe,CD),n4e=Xd(kSe,CD),r4e=Xd(MSe,CD),i4e=Xd(PH),qH=Jd(zSe,th,Eg,Ag),s4e=Jd(PSe,th,Eg,Ag),o4e=Jd(jSe,th,Eg,Ag),u4e=Jd(th,Eg,Ag);function a4e(t){return Zd(t,[t4e,qH],[n4e,s4e],[r4e,o4e],[i4e,u4e])}function l4e(t){return Zd(KSe(t),[VSe,YSe])}function c4e(t){return Zd(t,[XSe,UH],[JSe,UH],[ZSe,e4e])}function f4e(t){return Zd(t,[QSe,GSe])}const x4e=Jd(th);function d4e(t){return Zd(t,[HSe,x4e])}const h4e=Xd(USe,qSe),p4e=Xd(jH),g4e=Jd(th,Eg,Ag);function m4e(t){return Zd(t,[h4e,qH],[p4e,g4e])}const y4e="Invalid Duration",zH={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}},E4e={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},...zH},Ls=146097/400,nh=146097/4800,A4e={years:{quarters:4,months:12,weeks:Ls/7,days:Ls,hours:Ls*24,minutes:Ls*24*60,seconds:Ls*24*60*60,milliseconds:Ls*24*60*60*1e3},quarters:{months:3,weeks:Ls/28,days:Ls/4,hours:Ls*24/4,minutes:Ls*24*60/4,seconds:Ls*24*60*60/4,milliseconds:Ls*24*60*60*1e3/4},months:{weeks:nh/7,days:nh,hours:nh*24,minutes:nh*24*60,seconds:nh*24*60*60,milliseconds:nh*24*60*60*1e3},...zH},lf=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],v4e=lf.slice(0).reverse();function cf(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 Ct(r)}function S4e(t){return t<0?Math.floor(t):Math.ceil(t)}function HH(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?S4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function _4e(t,e){v4e.reduce((n,r)=>_t(e[r])?n:(n&&HH(t,e,n,e,r),r),null)}class Ct{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||xn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?A4e:E4e,this.isLuxonDuration=!0}static fromMillis(e,n){return Ct.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Fs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new Ct({values:bS(e,Ct.normalizeUnit),loc:xn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(uf(e))return Ct.fromMillis(e);if(Ct.isDuration(e))return e;if(typeof e=="object")return Ct.fromObject(e);throw new Fs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=f4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=d4e(e);return r?Ct.fromObject(r,n):Ct.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the Duration is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Zve(r);return new Ct({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 Kz(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?Fi.create(this.loc,r).formatDurationFromString(this,e):y4e}toHuman(e={}){const n=lf.map(r=>{const i=this.values[r];return _t(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+=hD(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=Ct.fromDurationLike(e),r={};for(const i of lf)(Yd(n.values,i)||Yd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return cf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=Ct.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]=EH(e(this.values[r],r));return cf(this,{values:n},!0)}get(e){return this[Ct.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...bS(e,Ct.normalizeUnit)};return cf(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),cf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return _4e(this.matrix,e),cf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>Ct.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of lf)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;uf(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)lf.indexOf(l)>lf.indexOf(o)&&HH(this.matrix,i,l,n,o)}else uf(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 cf(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 cf(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 lf)if(!n(this.values[r],e.values[r]))return!1;return!0}}const vg="Invalid Interval";function C4e(t,e){return!t||!t.isValid?dn.invalid("missing or invalid start"):!e||!e.isValid?dn.invalid("missing or invalid end"):e<t?dn.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 dn{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 Fs("need to specify a reason the Interval is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Jve(r);return new dn({invalid:r})}static fromDateTimes(e,n){const r=bg(e),i=bg(n),s=C4e(r,i);return s??new dn({start:r,end:i})}static after(e,n){const r=Ct.fromDurationLike(n),i=bg(e);return dn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=Ct.fromDurationLike(n),i=bg(e);return dn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=at.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=at.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return dn.fromDateTimes(s,u);if(o){const l=Ct.fromISO(i,n);if(l.isValid)return dn.after(s,l)}else if(a){const l=Ct.fromISO(r,n);if(l.isValid)return dn.before(u,l)}}return dn.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?dn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(bg).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(dn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=Ct.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(dn.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:dn.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 dn.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(dn.fromDateTimes(n,a.time)),n=null);return dn.merge(i)}difference(...e){return dn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:vg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:vg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:vg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:vg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:vg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):Ct.invalid(this.invalidReason)}mapEndpoints(e){return dn.fromDateTimes(e(this.s),e(this.e))}}let Sg=class{static hasDST(e=Ln.defaultZone){const n=at.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Su.isValidZone(e)}static normalizeZone(e){return l0(e,Ln.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||xn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||xn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return xn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return xn.create(n,null,"gregory").eras(e)}static features(){return{relative:gH()}}};function QH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(Ct.fromMillis(r).as("days"))}function b4e(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=QH(u,a);return(l-l%7)/7}],["days",QH]],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 T4e(t,e,n,r){let[i,s,o,u]=b4e(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=Ct.fromObject(s,r);return l.length>0?Ct.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"},GH={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]},R4e=TD.hanidec.replace(/[\[|\]]/g,"").split("");function O4e(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+=R4e.indexOf(t[n]);else for(const i in GH){const[s,o]=GH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Ao({numberingSystem:t},e=""){return new RegExp(`${TD[t||"latn"]}${e}`)}const D4e="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(O4e(n))}}const WH="[  ]",VH=new RegExp(WH,"g");function N4e(t){return t.replace(/\./g,"\\.?").replace(VH,WH)}function YH(t){return t.replace(/\./g,"").replace(VH," ").toLowerCase()}function vo(t,e){return t===null?null:{regex:RegExp(t.map(N4e).join("|")),deser:([n])=>t.findIndex(r=>YH(n)===YH(r))+e}}function KH(t,e){return{regex:t,deser:([,n,r])=>CS(n,r),groups:e}}function RD(t){return{regex:t,deser:([e])=>e}}function w4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function F4e(t,e){const n=Ao(e),r=Ao(e,"{2}"),i=Ao(e,"{3}"),s=Ao(e,"{4}"),o=Ao(e,"{6}"),u=Ao(e,"{1,2}"),a=Ao(e,"{1,3}"),l=Ao(e,"{1,6}"),c=Ao(e,"{1,9}"),f=Ao(e,"{2,4}"),x=Ao(e,"{4,6}"),h=g=>({regex:RegExp(w4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return vo(e.eras("short",!1),0);case"GG":return vo(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,gD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return vo(e.months("short",!0,!1),1);case"MMMM":return vo(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return vo(e.months("short",!1,!1),1);case"LLLL":return vo(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return RD(c);case"uu":return RD(u);case"uuu":return $t(n);case"a":return vo(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,gD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return vo(e.weekdays("short",!1,!1),1);case"EEEE":return vo(e.weekdays("long",!1,!1),1);case"ccc":return vo(e.weekdays("short",!0,!1),1);case"cccc":return vo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return KH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return KH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return RD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:D4e};return m.token=t,m}const L4e={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 I4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=L4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function $4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function B4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Yd(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 k4e(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 _t(t.z)||(n=Su.create(t.z)),_t(t.Z)||(n||(n=new Mr(t.Z)),r=t.Z),_t(t.q)||(t.M=(t.q-1)*3+1),_t(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),_t(t.u)||(t.S=dD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let OD=null;function M4e(){return OD||(OD=at.fromMillis(1555555555555)),OD}function P4e(t,e){if(t.literal)return t;const n=Fi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Fi.create(e,n).formatDateTimeParts(M4e()).map(o=>I4e(o,e,n));return s.includes(void 0)?t:s}function j4e(t,e){return Array.prototype.concat(...t.map(n=>P4e(n,e)))}function XH(t,e,n){const r=j4e(Fi.parseFormat(n),t),i=r.map(o=>F4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=$4e(i),a=RegExp(o,"i"),[l,c]=B4e(e,a,u),[f,x,h]=c?k4e(c):[null,null,void 0];if(Yd(c,"a")&&Yd(c,"H"))throw new hg("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 U4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=XH(t,e,n);return[r,i,s,o]}const JH=[0,31,59,90,120,151,181,212,243,273,304,334],ZH=[0,31,60,91,121,152,182,213,244,274,305,335];function Is(t,e){return new Eo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function eQ(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 tQ(t,e,n){return n+(pg(t)?ZH:JH)[e-1]}function nQ(t,e){const n=pg(t)?ZH:JH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function DD(t){const{year:e,month:n,day:r}=t,i=tQ(e,n,r),s=eQ(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=_S(u)):o>_S(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...TS(t)}}function rQ(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=eQ(e,1,4),s=gg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=gg(u)):o>s?(u=e+1,o-=gg(e)):u=e;const{month:a,day:l}=nQ(u,o);return{year:u,month:a,day:l,...TS(t)}}function ND(t){const{year:e,month:n,day:r}=t,i=tQ(e,n,r);return{year:e,ordinal:i,...TS(t)}}function iQ(t){const{year:e,ordinal:n}=t,{month:r,day:i}=nQ(e,n);return{year:e,month:r,day:i,...TS(t)}}function q4e(t){const e=vS(t.weekYear),n=La(t.weekNumber,1,_S(t.weekYear)),r=La(t.weekday,1,7);return e?n?r?!1:Is("weekday",t.weekday):Is("week",t.week):Is("weekYear",t.weekYear)}function z4e(t){const e=vS(t.year),n=La(t.ordinal,1,gg(t.year));return e?n?!1:Is("ordinal",t.ordinal):Is("year",t.year)}function sQ(t){const e=vS(t.year),n=La(t.month,1,12),r=La(t.day,1,SS(t.year,t.month));return e?n?r?!1:Is("day",t.day):Is("month",t.month):Is("year",t.year)}function oQ(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=La(e,0,23)||e===24&&n===0&&r===0&&i===0,o=La(n,0,59),u=La(r,0,59),a=La(i,0,999);return s?o?u?a?!1:Is("millisecond",i):Is("second",r):Is("minute",n):Is("hour",e)}const wD="Invalid DateTime",uQ=864e13;function wS(t){return new Eo("unsupported zone",`the zone "${t.name}" is not supported`)}function FD(t){return t.weekData===null&&(t.weekData=DD(t.c)),t.weekData}function _g(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new at({...n,...e,old:n})}function aQ(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 lQ(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 FS(t,e,n){return aQ(pD(t),e,n)}function cQ(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,SS(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=Ct.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=pD(s);let[a,l]=aQ(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function Cg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=at.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return at.invalid(new Eo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function LS(t,e,n=!0){return t.isValid?Fi.create(xn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function LD(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Fn(t.c.year,n?6:4),e?(r+="-",r+=Fn(t.c.month),r+="-",r+=Fn(t.c.day)):(r+=Fn(t.c.month),r+=Fn(t.c.day)),r}function fQ(t,e,n,r,i,s){let o=Fn(t.c.hour);return e?(o+=":",o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Fn(t.c.minute),(t.c.second!==0||!n)&&(o+=Fn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Fn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Fn(Math.trunc(-t.o/60)),o+=":",o+=Fn(Math.trunc(-t.o%60))):(o+="+",o+=Fn(Math.trunc(t.o/60)),o+=":",o+=Fn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const xQ={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},H4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},dQ=["year","month","day","hour","minute","second","millisecond"],G4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],W4e=["year","ordinal","hour","minute","second","millisecond"];function hQ(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 Kz(t);return e}function pQ(t,e){const n=l0(e.zone,Ln.defaultZone),r=xn.fromObject(e),i=Ln.now();let s,o;if(_t(t.year))s=i;else{for(const l of dQ)_t(t[l])&&(t[l]=xQ[l]);const u=sQ(t)||oQ(t);if(u)return at.invalid(u);const a=n.offset(i);[s,o]=FS(t,a,n)}return new at({ts:s,zone:n,loc:r,o})}function gQ(t,e,n){const r=_t(n.round)?!0:n.round,i=(o,u)=>(o=hD(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 mQ(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 at{constructor(e){const n=e.zone||Ln.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Eo("invalid input"):null)||(n.isValid?null:wS(n));this.ts=_t(e.ts)?Ln.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=lQ(this.ts,u),r=Number.isNaN(i.year)?new Eo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||xn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new at({})}static local(){const[e,n]=mQ(arguments),[r,i,s,o,u,a,l]=n;return pQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=mQ(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Mr.utcInstance,pQ({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=rSe(e)?e.valueOf():NaN;if(Number.isNaN(r))return at.invalid("invalid input");const i=l0(n.zone,Ln.defaultZone);return i.isValid?new at({ts:r,zone:i,loc:xn.fromObject(n)}):at.invalid(wS(i))}static fromMillis(e,n={}){if(uf(e))return e<-uQ||e>uQ?at.invalid("Timestamp out of range"):new at({ts:e,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(uf(e))return new at({ts:e*1e3,zone:l0(n.zone,Ln.defaultZone),loc:xn.fromObject(n)});throw new Fs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=l0(n.zone,Ln.defaultZone);if(!r.isValid)return at.invalid(wS(r));const i=Ln.now(),s=_t(n.specificOffset)?r.offset(i):n.specificOffset,o=bS(e,hQ),u=!_t(o.ordinal),a=!_t(o.year),l=!_t(o.month)||!_t(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=xn.fromObject(n);if((c||u)&&f)throw new hg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new hg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=lQ(i,s);h?(p=G4e,m=H4e,g=DD(g)):u?(p=W4e,m=Q4e,g=ND(g)):(p=dQ,m=xQ);let y=!1;for(const b of p){const R=o[b];_t(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?q4e(o):u?z4e(o):sQ(o),A=E||oQ(o);if(A)return at.invalid(A);const v=h?rQ(o):u?iQ(o):o,[_,S]=FS(v,s,r),C=new at({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?at.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]=a4e(e);return Cg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=l4e(e);return Cg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=c4e(e);return Cg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(_t(e)||_t(n))throw new Fs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=U4e(o,e,n);return c?at.invalid(c):Cg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return at.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=m4e(e);return Cg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Fs("need to specify a reason the DateTime is invalid");const r=e instanceof Eo?e:new Eo(e,n);if(Ln.throwOnInvalid)throw new Xve(r);return new at({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?Sg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Sg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Sg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Sg.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 pg(this.year)}get daysInMonth(){return SS(this.year,this.month)}get daysInYear(){return this.isValid?gg(this.year):NaN}get weeksInWeekYear(){return this.isValid?_S(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Fi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Mr.instance(e),n)}toLocal(){return this.setZone(Ln.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=l0(e,Ln.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]=FS(o,s,e)}return _g(this,{ts:i,zone:e})}else return at.invalid(wS(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return _g(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=bS(e,hQ),r=!_t(n.weekYear)||!_t(n.weekNumber)||!_t(n.weekday),i=!_t(n.ordinal),s=!_t(n.year),o=!_t(n.month)||!_t(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new hg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new hg("Can't mix ordinal dates with month/day");let l;r?l=rQ({...DD(this.c),...n}):_t(n.ordinal)?(l={...this.toObject(),...n},_t(n.day)&&(l.day=Math.min(SS(l.year,l.month),l.day))):l=iQ({...ND(this.c),...n});const[c,f]=FS(l,this.o,this.zone);return _g(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e);return _g(this,cQ(this,n))}minus(e){if(!this.isValid)return this;const n=Ct.fromDurationLike(e).negate();return _g(this,cQ(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=Ct.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?Fi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):wD}toLocaleString(e=xD,n={}){return this.isValid?Fi.create(this.loc.clone(n),e).formatDateTime(this):wD}toLocaleParts(e={}){return this.isValid?Fi.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=LD(this,o);return u+="T",u+=fQ(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?LD(this,e==="extended"):null}toISOWeekDate(){return LS(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":"")+fQ(this,o==="extended",n,e,r,s):null}toRFC2822(){return LS(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return LS(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?LD(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")),LS(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():wD}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 Ct.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=iSe(n).map(Ct.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=T4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(at.now(),e,n)}until(e){return this.isValid?dn.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||at.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),gQ(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?gQ(e.base||at.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(at.isDateTime))throw new Fs("min requires all arguments be DateTimes");return mH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(at.isDateTime))throw new Fs("max requires all arguments be DateTimes");return mH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=xn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return XH(o,e,n)}static fromStringExplain(e,n,r={}){return at.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return xD}static get DATE_MED(){return Xz}static get DATE_MED_WITH_WEEKDAY(){return eSe}static get DATE_FULL(){return Jz}static get DATE_HUGE(){return Zz}static get TIME_SIMPLE(){return eH}static get TIME_WITH_SECONDS(){return tH}static get TIME_WITH_SHORT_OFFSET(){return nH}static get TIME_WITH_LONG_OFFSET(){return rH}static get TIME_24_SIMPLE(){return iH}static get TIME_24_WITH_SECONDS(){return sH}static get TIME_24_WITH_SHORT_OFFSET(){return oH}static get TIME_24_WITH_LONG_OFFSET(){return uH}static get DATETIME_SHORT(){return aH}static get DATETIME_SHORT_WITH_SECONDS(){return lH}static get DATETIME_MED(){return cH}static get DATETIME_MED_WITH_SECONDS(){return fH}static get DATETIME_MED_WITH_WEEKDAY(){return tSe}static get DATETIME_FULL(){return xH}static get DATETIME_FULL_WITH_SECONDS(){return dH}static get DATETIME_HUGE(){return hH}static get DATETIME_HUGE_WITH_SECONDS(){return pH}}function bg(t){if(at.isDateTime(t))return t;if(t&&t.valueOf&&uf(t.valueOf()))return at.fromJSDate(t);if(t&&typeof t=="object")return at.fromObject(t);throw new Fs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const V4e="2.5.2";var Y4e=wi.DateTime=at;wi.Duration=Ct,wi.FixedOffsetZone=Mr,wi.IANAZone=Su,wi.Info=Sg,wi.Interval=dn,wi.InvalidZone=DH,wi.Settings=Ln,wi.SystemZone=RS,wi.VERSION=V4e,wi.Zone=Kd,Object.defineProperty(er,"__esModule",{value:!0}),er.LiteralYear=er.LiteralQuarter=er.LiteralMonth=er.LiteralWeek=er.LiteralDay=er.LiteralHour=er.LiteralTimestamp=er.TimeFormatError=void 0;const c0=wi,K4e=We,X4e=n0,yQ=Hd,ID=ut;class J4e extends Error{}er.TimeFormatError=J4e;function ff(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 EQ="yyyy",AQ=`${EQ}-LL`,$s=`${AQ}-dd`,vQ=`${$s} HH`,SQ=`${vQ}:mm`,$D=`${SQ}:ss`;class _Q extends ID.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={node:"timeLiteral",literal:e,typeDef:{type: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 BD extends _Q{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=ff(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=c0.DateTime.fromFormat(e,$D);if(s.isValid)return new BD(r,n);if(s=c0.DateTime.fromFormat(e,SQ),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat($D);return new kD(r,n,"timestamp",o)}}}er.LiteralTimestamp=BD;class kD extends _Q{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,ID.getMorphicValue)(i,"timestamp"),a=(0,ID.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,K4e.isTemporalField)(o.dataType)){const u=o.dataType;return new X4e.Range(new yQ.ExprTime(u,i.value),new yQ.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class MD extends kD{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,vQ);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat($D),new MD(n,r)}}er.LiteralHour=MD;class Tg extends kD{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 Tg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,$s);if(i.isValid)return r=i.plus({day:1}).toFormat($s),new PD(n,r)}}er.LiteralDay=PD;class jD extends Tg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=ff(e,!1);let r=n.text;const i=n.text.slice(0,10),s=c0.DateTime.fromFormat(i,$s);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat($s),r=u.toFormat($s),new jD(n,r)}}}er.LiteralWeek=jD;class UD extends Tg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,AQ);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat($s),r=s.toFormat($s),new UD(n,r)}}}er.LiteralMonth=UD;class qD extends Tg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=ff(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=c0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat($s),r=u.toFormat($s),new qD(n,r)}}}er.LiteralQuarter=qD;class zD extends Tg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=ff(e,!1);let r=n.text;const i=c0.DateTime.fromFormat(n.text,EQ);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat($s),r=s.toFormat($s),new zD(n,r)}}}er.LiteralYear=zD;var IS={};Object.defineProperty(IS,"__esModule",{value:!0}),IS.PartialCompare=void 0;const CQ=ut;class Z4e extends CQ.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.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}atNodeType(){return CQ.ATNodeType.Partial}}IS.PartialCompare=Z4e;var rh={};Object.defineProperty(rh,"__esModule",{value:!0}),rh.PickWhen=rh.Pick=void 0;const _u=We,ih=Zt,e_e=ut,t_e=Qe;function $S(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class n_e extends e_e.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={node:"case",kids:{caseWhen:[],caseThen:[]}};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,_u.maxExpressionType)(o,(0,_u.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,_u.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!ih.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=$S(s,x),i.kids.caseWhen.push(f.value),i.kids.caseThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=$S(s,l),ih.FT.typeEq(s,l,!0)?(i.kids.caseElse=l.value,{dataType:s.dataType,expressionType:(0,_u.maxExpressionType)(o,l.expressionType),evalSpace:(0,_u.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"case",kids:{caseWhen:[],caseThen:[]}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!ih.FT.typeEq(a.when,ih.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!ih.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=$S(i,a.pick),s=(0,_u.maxExpressionType)(s,(0,_u.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,_u.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.caseWhen.push(a.when.value),n.kids.caseThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,_u.maxExpressionType)(s,u.expressionType),o=(0,_u.mergeEvalSpaces)(o,u.evalSpace),i=$S(i,u),ih.FT.typeEq(i,u,!0)?(n.kids.caseElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}rh.Pick=n_e;class r_e extends t_e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="caseWhen",this.has({pick:e})}}rh.PickWhen=r_e;var sh={};Object.defineProperty(sh,"__esModule",{value:!0}),sh.CaseWhen=sh.Case=void 0;const i_e=ut,s_e=Qe,Rg=Zt,xf=Yi;function bQ(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class o_e extends i_e.ExpressionDef{constructor(e,n,r){super({choices:n}),this.value=e,this.choices=n,this.elseValue=r,this.elementType="case",this.has({elseValue:r,value:e})}getExpression(e){var n;const r={node:"case",kids:{caseWhen:[],caseThen:[]}};let i="scalar",s="constant",o;this.value&&(o=this.value.getExpression(e),i=(0,xf.maxExpressionType)(i,o.expressionType),s=(0,xf.mergeEvalSpaces)(s,o.evalSpace),r.kids.caseValue=o.value);const u=[];for(const l of this.choices){const c=l.when.getExpression(e),f=l.then.getExpression(e);u.push({when:c,then:f})}let a;for(const l of u){if(o!==void 0){if(!Rg.FT.typeEq(l.when,o))return this.loggedErrorExpr("case-when-type-does-not-match",{whenType:l.when.dataType,valueType:o.dataType})}else if(!Rg.FT.typeEq(l.when,Rg.FT.boolT))return this.loggedErrorExpr("case-when-must-be-boolean",{whenType:l.when.dataType});if(a&&!Rg.FT.typeEq(a,l.then,!0))return this.loggedErrorExpr("case-then-type-does-not-match",{thenType:l.then.dataType,returnType:a.dataType});a=bQ(a,l.then),i=(0,xf.maxExpressionType)(i,(0,xf.maxExpressionType)(l.then.expressionType,l.when.expressionType)),s=(0,xf.mergeEvalSpaces)(s,l.then.evalSpace,l.when.evalSpace),r.kids.caseWhen.push(l.when.value),r.kids.caseThen.push(l.then.value)}if(this.elseValue){const l=this.elseValue.getExpression(e);if(a&&!Rg.FT.typeEq(a,l,!0))return this.loggedErrorExpr("case-else-type-does-not-match",{elseType:l.dataType,returnType:a.dataType});a=bQ(a,l),i=(0,xf.maxExpressionType)(i,l.expressionType),s=(0,xf.mergeEvalSpaces)(s,l.evalSpace),r.kids.caseElse=l.value}return{value:r,dataType:(n=a==null?void 0:a.dataType)!==null&&n!==void 0?n:"null",expressionType:i,evalSpace:s}}}sh.Case=o_e;class u_e extends s_e.MalloyElement{constructor(e,n){super({when:e,then:n}),this.when=e,this.then=n,this.elementType="caseWhen"}}sh.CaseWhen=u_e;var oh={};Object.defineProperty(oh,"__esModule",{value:!0}),oh.RecordLiteral=oh.RecordElement=void 0;const a_e=ut,l_e=Qe;class c_e extends l_e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}oh.RecordElement=c_e;class f_e extends a_e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){throw new Error("get expression on record todo")}}oh.RecordLiteral=f_e;var BS={};Object.defineProperty(BS,"__esModule",{value:!0}),BS.Timeframe=void 0;const x_e=We,d_e=Qe;class h_e extends d_e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,x_e.isTimestampUnit)(n)?n:"second"}}BS.Timeframe=h_e;var kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.TopBy=void 0;const p_e=We,TQ=ut,g_e=Qe;class m_e extends g_e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof TQ.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof TQ.ExpressionDef){const n=this.by.getExpression(e);return(0,p_e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}kS.TopBy=m_e;var f0={};Object.defineProperty(f0,"__esModule",{value:!0}),f0.ImportStatement=f0.ImportSelect=f0.ImportSourceName=void 0;const HD=Qe;class y_e extends HD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}f0.ImportSourceName=y_e;class E_e extends HD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}f0.ImportSelect=E_e;class A_e 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.logError("invalid-import-url","Invalid URL 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.logError("no-translator-for-import","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.logError("name-conflict-on-selective-import",`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.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}f0.ImportStatement=A_e;var Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.ExtendBlock=void 0;const v_e=Qe,S_e=En;class __e extends v_e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=S_e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Og.ExtendBlock=__e;var MS={};Object.defineProperty(MS,"__esModule",{value:!0}),MS.Argument=void 0;const C_e=Qe;class b_e extends C_e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}MS.Argument=b_e;var PS={};Object.defineProperty(PS,"__esModule",{value:!0}),PS.HasParameter=void 0;const RQ=We,T_e=Qe;class R_e extends T_e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,RQ.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.logError("parameter-default-does-not-match-declared-type",`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.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,RQ.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`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.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}PS.HasParameter=R_e;var jS={};Object.defineProperty(jS,"__esModule",{value:!0}),jS.AnonymousQuery=void 0;const O_e=Qe,D_e=$r;class N_e extends O_e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=D_e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","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)}}jS.AnonymousQuery=N_e;var x0={};Object.defineProperty(x0,"__esModule",{value:!0}),x0.View=void 0;const w_e=Qe;let F_e=class extends w_e.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};x0.View=F_e;var US={};Object.defineProperty(US,"__esModule",{value:!0}),US.ViewArrow=void 0;const L_e=mr,I_e=x0;class $_e extends I_e.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 L_e.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}US.ViewArrow=$_e;var qS={},Dg={};Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.refine=void 0;const QD=Yi,GD=Jl;function B_e(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,QD.isRawSegment)(s))t.logError("refinement-of-raw-query","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.logError("mismatched-view-types-for-refinement",`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.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","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,QD.isQuerySegment)(o)&&(0,QD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,GD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,GD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(GD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Dg.refine=B_e,Object.defineProperty(qS,"__esModule",{value:!0}),qS.ViewRefine=void 0;const k_e=kr,M_e=is,P_e=Dg,j_e=x0;class U_e extends j_e.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,M_e.getFinalStruct)(this.refinement,e.structDef(),i):k_e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,P_e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}qS.ViewRefine=U_e;var zS={};Object.defineProperty(zS,"__esModule",{value:!0}),zS.ReferenceView=void 0;const WD=We,OQ=kr,q_e=is,z_e=Br,H_e=Dg,Q_e=x0;class G_e extends Q_e.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:OQ.ErrorFactory.structDef,outputStruct:OQ.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof z_e.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,WD.isAtomic)(s)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,WD.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,WD.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,q_e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","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.logError("refinement-with-multistage-view",`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,H_e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}zS.ReferenceView=G_e;var HS={},Ng={},QS={},wg={};Object.defineProperty(wg,"__esModule",{value:!0}),wg.Index=void 0;const W_e=Qe,V_e=En;let Y_e=class extends W_e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=V_e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};wg.Index=Y_e;var Fg={};Object.defineProperty(Fg,"__esModule",{value:!0}),Fg.SampleProperty=void 0;const K_e=Qe,DQ=En;class X_e extends K_e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=DQ.LegalRefinementStage.Tail,this.forceQueryClass=DQ.QueryClass.Index}sampling(){return this.sample}}Fg.SampleProperty=X_e;var GS={};Object.defineProperty(GS,"__esModule",{value:!0}),GS.IndexFieldSpace=void 0;const NQ=We,VD=pt,J_e=Br,Z_e=mo,e5e=lg,t5e=mr;class n5e extends Z_e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof VD.FieldReference?super.pushFields(n):n instanceof VD.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof J_e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof e5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):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 t5e.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`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=VD.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,NQ.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,NQ.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)}}GS.IndexFieldSpace=n5e,Object.defineProperty(QS,"__esModule",{value:!0}),QS.IndexBuilder=void 0;const YD=We,r5e=kr,i5e=po,s5e=wg,o5e=s0,u5e=Fg,a5e=GS;class l5e{constructor(e,n,r,i){this.filters=[],this.alwaysJoins=[],this.type="index",this.resultFS=new a5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof i5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof o5e.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof s5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof u5e.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,YD.isIndexSegment)(e)&&!(0,YD.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),r5e.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,YD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins]),n}}QS.IndexBuilder=l5e;var WS={},Lg={};Object.defineProperty(Lg,"__esModule",{value:!0}),Lg.GroupBy=void 0;const c5e=rs,wQ=En;class f5e extends c5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=wQ.LegalRefinementStage.Single,this.forceQueryClass=wQ.QueryClass.Grouping}}Lg.GroupBy=f5e;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.ProjectFieldSpace=void 0;const KD=We,x5e=mo;class d5e extends x5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,KD.expressionIsAggregate)(e.expressionType)?!1:(0,KD.expressionInvolvesAggregate)(e.expressionType)&&(0,KD.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}VS.ProjectFieldSpace=d5e;var d0={},df={};Object.defineProperty(df,"__esModule",{value:!0}),df.Ordering=df.OrderBy=void 0;const h5e=We,FQ=o0,LQ=Qe,p5e=En;class g5e extends LQ.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof FQ.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 FQ.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,h5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}df.OrderBy=g5e;class m5e extends LQ.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=p5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}df.Ordering=m5e;var Ig={};Object.defineProperty(Ig,"__esModule",{value:!0}),Ig.Top=void 0;const IQ=We,y5e=o0,E5e=Qe,A5e=En;let v5e=class extends E5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=A5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof y5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,IQ.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`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,IQ.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};Ig.Top=v5e,Object.defineProperty(d0,"__esModule",{value:!0}),d0.ReduceBuilder=d0.QuerySegmentBuilder=void 0;const $Q=We,S5e=kr,_5e=po,C5e=s0,BQ=df,kQ=Ig,b5e=mo,T5e=rs;class MQ{constructor(){this.alwaysJoins=[],this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof T5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof kQ.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof C5e.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof BQ.Ordering&&(this.order?e.logError("ordering-already-specified","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 kQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof BQ.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]),this.alwaysJoins.length>0&&(n.alwaysJoins=[...this.alwaysJoins])}}d0.QuerySegmentBuilder=MQ;class R5e extends MQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new b5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,$Q.isReduceSegment)(e)||(0,$Q.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),S5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}d0.ReduceBuilder=R5e,Object.defineProperty(WS,"__esModule",{value:!0}),WS.ProjectBuilder=void 0;const PQ=We,O5e=kr,D5e=Lg,N5e=VS,w5e=d0;class F5e extends w5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new N5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof D5e.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,PQ.isProjectSegment)(e)||(0,PQ.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),O5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}WS.ProjectBuilder=F5e;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.PartialBuilder=void 0;const L5e=Yi,I5e=d0;class $5e extends I5e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,L5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}YS.PartialBuilder=$5e,Object.defineProperty(Ng,"__esModule",{value:!0}),Ng.QOpDesc=void 0;const B5e=QS,k5e=WS,M5e=d0,P5e=Qe,j5e=is,U5e=mr,hf=En,q5e=YS;class z5e extends P5e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=hf.QueryClass.Grouping:this.refineThis.type==="project"?n=hf.QueryClass.Project:this.refineThis.type==="index"&&(n=hf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`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.logError("ambiguous-view-type",{}),n=hf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case hf.QueryClass.Grouping:return new M5e.ReduceBuilder(e,this.refineThis,n,r);case hf.QueryClass.Project:return new k5e.ProjectBuilder(e,this.refineThis,n,r);case hf.QueryClass.Index:return new B5e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new q5e.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 U5e.StaticSourceSpace((0,j5e.opOutputStruct)(this,e.structDef(),i))}}}Ng.QOpDesc=z5e,Object.defineProperty(HS,"__esModule",{value:!0}),HS.QOpDescView=void 0;const H5e=We,Q5e=mr,jQ=Ng,G5e=is,XD=En,W5e=x0;class V5e extends W5e.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,H5e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","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 jQ.QOpDesc([]),o=new jQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case XD.LegalRefinementStage.Head:s.push(u);break;case XD.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case XD.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","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,G5e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new Q5e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}HS.QOpDescView=V5e;var hn={};Object.defineProperty(hn,"__esModule",{value:!0}),hn.FieldDefinitionValue=hn.DefSpace=hn.DimensionFieldDeclaration=hn.MeasureFieldDeclaration=hn.DeclareFieldDeclaration=hn.ProjectFieldDeclaration=hn.GroupByFieldDeclaration=hn.AggregateFieldDeclaration=hn.CalculateFieldDeclaration=hn.AtomicFieldDeclaration=void 0;const UQ=We,Y5e=Zt,K5e=zd,X5e=Qe,pf=jn,J5e=$r,Z5e=Br;class h0 extends X5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=J5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new JD(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 u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,UQ.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,K5e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof JD&&e.foundCircle)&&r.dataType!=="error"){const u=Y5e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new qQ(e,this))}}hn.AtomicFieldDeclaration=h0;class eCe extends h0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}hn.CalculateFieldDeclaration=eCe;class tCe extends h0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckAggregate)(e,this)}}hn.AggregateFieldDeclaration=tCe;class nCe extends h0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckGroupBy)(e,this)}}hn.GroupByFieldDeclaration=nCe;class rCe extends h0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckProject)(e,this)}}hn.ProjectFieldDeclaration=rCe;class iCe extends h0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDeclare)(e,this)}}hn.DeclareFieldDeclaration=iCe;class sCe extends h0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckMeasure)(e,this)}}hn.MeasureFieldDeclaration=sCe;class oCe extends h0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,pf.typecheckDimension)(e,this)}}hn.DimensionFieldDeclaration=oCe;class JD{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:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}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")}}hn.DefSpace=JD;class qQ extends Z5e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,UQ.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}hn.FieldDefinitionValue=qQ;var KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.Aggregate=void 0;const uCe=rs,zQ=En;let aCe=class extends uCe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=zQ.LegalRefinementStage.Single,this.forceQueryClass=zQ.QueryClass.Grouping}};KS.Aggregate=aCe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.Calculate=void 0;const lCe=rs,cCe=En;class fCe extends lCe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=cCe.LegalRefinementStage.Single}}XS.Calculate=fCe;var $g={};Object.defineProperty($g,"__esModule",{value:!0}),$g.Dimensions=void 0;const xCe=Zl;class dCe extends xCe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}$g.Dimensions=dCe;var Bg={};Object.defineProperty(Bg,"__esModule",{value:!0}),Bg.Measures=void 0;const hCe=Zl;class pCe extends hCe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Bg.Measures=pCe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.Nests=void 0;const gCe=rs,HQ=En;class mCe extends gCe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=HQ.LegalRefinementStage.Single,this.forceQueryClass=HQ.QueryClass.Grouping}}JS.Nests=mCe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.ProjectStatement=void 0;const yCe=rs,QQ=En;class ECe extends yCe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=QQ.QueryClass.Project,this.queryRefinementStage=QQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}ZS.ProjectStatement=ECe;var p0={},Ia={};Object.defineProperty(Ia,"__esModule",{value:!0}),Ia.findReferences=Ia.deprecatedParseTableURI=Ia.constructTableKey=void 0;const ACe=$l,ZD=on;function e7(t){const e=(0,ZD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,ZD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class vCe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=GQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,ZD.getId)(e.connectionId()),r=e7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=e7(e.tableURI()),{connectionName:r,tablePath:i}=WQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=e7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function GQ(t,e){return t===void 0?e:`${t}:${e}`}Ia.constructTableKey=GQ;function WQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Ia.deprecatedParseTableURI=WQ;function SCe(t,e,n){const r=new vCe(t,e),i=r;return ACe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Ia.findReferences=SCe,Object.defineProperty(p0,"__esModule",{value:!0}),p0.TableFunctionSource=p0.TableMethodSource=p0.TableSource=void 0;const VQ=Ia,_Ce=ho,YQ=kr;class t7 extends _Ce.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return YQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,VQ.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.logError("failed-to-fetch-table-schema",l),YQ.ErrorFactory.structDef}}p0.TableSource=t7;class CCe extends t7{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.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}p0.TableMethodSource=CCe;class bCe extends t7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,VQ.deprecatedParseTableURI)(this.tableURI)}}p0.TableFunctionSource=bCe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.SQLString=void 0;const TCe=Qe,KQ=Au;class RCe extends TCe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(OCe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof KQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","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("failed-to-expand-sql-source","Cannot expand into a query")}return e}}e4.SQLString=RCe;function OCe(t){return t instanceof KQ.SourceQueryElement}var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.SourceDesc=void 0;const DCe=Qe;class NCe extends DCe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}t4.SourceDesc=NCe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isSourceProperty=void 0;const wCe=po,FCe=Zl,LCe=Bd,ICe=t0,$Ce=kd,BCe=Md,kCe=Pd,MCe=e0,PCe=Oi;function jCe(t){return t instanceof wCe.Filter||t instanceof PCe.JoinStatement||t instanceof FCe.DeclareFields||t instanceof LCe.FieldListEdit||t instanceof ICe.Renames||t instanceof $Ce.PrimaryKey||t instanceof MCe.ObjectAnnotation||t instanceof BCe.Views||t instanceof kCe.TimezoneStatement}n4.isSourceProperty=jCe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isFieldCollectionMember=void 0;const UCe=hn,XQ=pt;function qCe(t){return t instanceof XQ.FieldReference||t instanceof XQ.WildcardFieldReference||t instanceof UCe.AtomicFieldDeclaration}r4.isFieldCollectionMember=qCe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isQueryElement=void 0;const zCe=jd,HCe=Ud,QCe=ig,GCe=sg;function WCe(t){return t instanceof zCe.QueryArrow||t instanceof HCe.QueryRefine||t instanceof QCe.QueryReference||t instanceof GCe.QueryRaw}i4.isQueryElement=WCe;var JQ={};Object.defineProperty(JQ,"__esModule",{value:!0});var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryProperty=void 0;function VCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}s4.isQueryProperty=VCe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isQueryExtendProperty=void 0;const YCe=$g,KCe=Oi,XCe=Bg;function JCe(t){return t instanceof YCe.Dimensions||t instanceof XCe.Measures||t instanceof KCe.JoinStatement}o4.isQueryExtendProperty=JCe;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.isFieldPropStatement=void 0;const ZCe=r0,ebe=po,tbe=s0,nbe=Vd;function rbe(t){return t instanceof ebe.Filter||t instanceof tbe.Limit||t instanceof nbe.PartitionBy||t instanceof ZCe.FunctionOrdering}u4.isFieldPropStatement=rbe,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(W1,t),n(wd,t),n(Fd,t),n(ho,t),n(K1,t),n(Au,t),n(wv,t),n(Fv,t),n(Bv,t),n(eg,t),n(Pv,t),n(Bd,t),n(kd,t),n(t0,t),n(Md,t),n(Pd,t),n(jv,t),n(Qd,t),n(qv,t),n(r0,t),n(zv,t),n(Fa,t),n(Hv,t),n(Wd,t),n(Gv,t),n(Wv,t),n(Vv,t),n(wa,t),n(Yv,t),n(Kv,t),n(Jv,t),n(fg,t),n(ag,t),n(nf,t),n(Zv,t),n(eS,t),n(nS,t),n(iS,t),n(sS,t),n(oS,t),n(uS,t),n(aS,t),n(lS,t),n(cS,t),n(fS,t),n(xS,t),n(dS,t),n(hS,t),n(pS,t),n(yS,t),n(er,t),n(IS,t),n(Vd,t),n(rh,t),n(sh,t),n(oh,t),n(n0,t),n(BS,t),n(kS,t),n(xg,t),n(f0,t),n(Og,t),n(MS,t),n(PS,t),n(jS,t),n(Ud,t),n(jd,t),n(x0,t),n(US,t),n(qS,t),n(zS,t),n(HS,t),n(hn,t),n(pt,t),n(KS,t),n(XS,t),n(Zl,t),n($g,t),n(Og,t),n(po,t),n(Lg,t),n(wg,t),n(Oi,t),n(V1,t),n(s0,t),n(Bg,t),n(W1,t),n(JS,t),n(df,t),n(ZS,t),n(Ng,t),n(Fg,t),n(Ig,t),n(qd,t),n(tf,t),n(og,t),n(p0,t),n(e4,t),n(e0,t),n(go,t),n(t4,t),n(n4,t),n(ut,t),n(r4,t),n(o0,t),n(Qe,t),n(i4,t),n(JQ,t),n(s4,t),n(o4,t),n(u4,t)}(vv);var a4={},uh={};Object.defineProperty(uh,"__esModule",{value:!0}),uh.ConstantExpression=uh.ConstantFieldSpace=void 0;const ibe=ut;class ZQ{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:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}uh.ConstantFieldSpace=ZQ;class sbe extends ibe.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 ZQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}uh.ConstantExpression=sbe;var obe=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]}),ube=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),abe=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)&&obe(e,t,n);return ube(e,t),e};Object.defineProperty(a4,"__esModule",{value:!0}),a4.MalloyToAST=void 0;const eG=EA,lbe=K2,ie=abe(vv),n7=Sv,tG=Kn,cbe=vv,On=on,r7=We,fbe=Jo,xbe=uh;class nG extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class i7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const dbe=["##! m4warnings=error"];class hbe extends lbe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of dbe){const s=fbe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}getSourceString(e){return this.parseInfo.sourceStream.getText(new tG.Interval(e.start.startIndex,e.stop?e.stop.stopIndex:e.start.startIndex))}contextError(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,n7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof i7||this.astError(s,"unexpected-statement-in-translation",`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 ie.FieldName((0,On.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,On.getId)(e)),e.id())}defaultResult(){return new ie.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 tG.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.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 ie.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","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,On.getPlainString)(e);for(const i of r)i instanceof eG.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,On.getStringParts)(e))r instanceof eG.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,"failed-to-parse-time-literal","Time data parse error"),r=new ie.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=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new xbe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,On.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 ie.DefineSource((0,On.getId)(e.sourceNameDef()),n instanceof ie.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=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`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.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,On.getShortString)(o));const u=new ie.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 ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new ie.JoinStatement(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.JoinStatement(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new ie.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof ie.Join&&n,"join")}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 ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){return this.astAt(this.visit(e.joinStatement()),e)}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,r7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","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 ie.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,On.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(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.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(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`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 ie.RenameField((0,On.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.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 ie.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,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.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 ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.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(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${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,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","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,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.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,On.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.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 ie.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 ie.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 ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.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 ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.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 ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,On.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.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 ie.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","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 ie.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 ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,On.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.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,On.getId)(e.exploreQueryNameDef()),r=new ie.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 ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.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 ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.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(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.fieldExpr()))}visitExprMinus(e){return new ie.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 ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text,r=this.getFieldExpr(e.fieldExpr(0)),i=this.getFieldExpr(e.fieldExpr(1));if(ie.isEquality(n))return this.astAt(new ie.ExprEquality(r,n,i),e);if(ie.isComparison(n))return this.astAt(new ie.ExprCompare(r,n,i),e);throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.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,ie.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,"count-expression-with-locality","Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new ie.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,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,r7.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.getPlainStringFrom({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 ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,On.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.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,r7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,On.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitCaseStatement(e){const n=e._valueExpr,r=n?this.getFieldExpr(n):void 0,i=e.caseWhen(),s=i.map(a=>new ie.CaseWhen(this.getFieldExpr(a._condition),this.getFieldExpr(a._result))),o=e._caseElse,u=o?this.getFieldExpr(o):void 0;return this.warnWithReplacement("sql-case","Use a `pick` statement instead of `case`",this.parseInfo.rangeFromContext(e),`${[...n?[`${this.getSourceCode(n)} ?`]:[],...i.map(a=>`pick ${this.getSourceCode(a._result)} when ${this.getSourceCode(a._condition)}`),o?`else ${o.text}`:"else null"].join(" ")}`),new ie.Case(r,s,u)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,On.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.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 ie.ImportSourceName((0,On.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,On.idToStr)(o[0]),u),o[0]))}return r}visitDebugExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new i7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new i7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,On.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.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 ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new nG)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.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 ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof cbe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new nG}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitRecordRef(e){const n=e.fieldPath(),r=n.fieldName().at(-1);if(r){const i=(0,On.getId)(r),s=new ie.ExprIdReference(this.getFieldPath(n,ie.ExpressionFieldReference));return new ie.RecordElement(i,s)}throw this.internalError(n,"IMPOSSIBLY A PATH CONTAINED ZERO ELEMENTS")}visitRecordExpr(e){const n=(0,On.getId)(e.recordKey()),r=this.getFieldExpr(e.fieldExpr());return new ie.RecordElement(n,r)}visitExprLiteralRecord(e){this.contextError(e,"not-yet-implemented","Record data is not yet implemented");const n=this.only(e.recordElement().map(r=>this.astAt(this.visit(r),r)),r=>r instanceof ie.RecordElement&&r,"a key value pair");return new ie.RecordLiteral(n)}visitExprArrayLiteral(e){return this.contextError(e,"not-yet-implemented","Array data is not yet implemented"),new ie.Unimplemented}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${this.getSourceCode(r)} !~ ${this.getSourceCode(i)}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${this.getSourceCode(r)} ~ ${this.getSourceCode(i)}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${this.getSourceCode(r)} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${this.getSourceCode(r)} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}visitExprWarnIn(e){const n=this.getFieldExpr(e.fieldExpr()),r=!!e.NOT(),i=e.fieldExprList().fieldExpr(),s=this.astAt(new ie.ExprLegacyIn(n,r,i.map(o=>this.getFieldExpr(o))),e);return this.warnWithReplacement("sql-in",`Use = (a|b|c) instead of${r?" NOT":""} IN (a,b,c)`,this.parseInfo.rangeFromContext(e),`${this.getSourceCode(e.fieldExpr())} ${r?"!=":"="} (${i.map(o=>this.getSourceCode(o)).join(" | ")})`),s}}a4.MalloyToAST=hbe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.Zone=void 0;class pbe{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})}}l4.Zone=pbe;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForDocumentSymbols=void 0;const gbe=$l,mbe=on;class ybe{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,mbe.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 Ebe(t,e,n){const r=new ybe(t,e,[],[]),i=r;return gbe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}c4.walkForDocumentSymbols=Ebe;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentCompletions=void 0;const Abe=$l,vbe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],Sbe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],_be=["source","explore","query","sql"];class Cbe{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 vbe)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 Sbe)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 _be)this.completions.push({type:"model_property",text:`${r}: `})}}}function bbe(t,e,n){const r=new Cbe(t,[],n),i=r;return Abe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}f4.walkForDocumentCompletions=bbe;var x4={};Object.defineProperty(x4,"__esModule",{value:!0}),x4.walkForDocumentHelpContext=void 0;const Tbe=i6;class Rbe extends Tbe.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 Obe(t,e){return new Rbe(e).visit(t)}x4.walkForDocumentHelpContext=Obe;var d4={},kg={};Object.defineProperty(kg,"__esModule",{value:!0}),kg.locationContainsPosition=void 0;function Dbe(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)}kg.locationContainsPosition=Dbe,Object.defineProperty(d4,"__esModule",{value:!0}),d4.ReferenceList=void 0;const Nbe=kg;class wbe{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,Nbe.locationContainsPosition)(r.location,e))return r}}d4.ReferenceList=wbe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.isNeedResponse=void 0;function Fbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}h4.isNeedResponse=Fbe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForModelAnnotation=void 0;const Lbe=$l;class Ibe{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 $be(t,e,n){const r=new Ibe(t,e,n),i=r;return Lbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}p4.walkForModelAnnotation=$be;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.walkForTablePath=void 0;const rG=on,Bbe=$l;class kbe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,rG.getId)(e.connectionId()),[r,i]=(0,rG.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function Mbe(t,e,n){const r=new kbe(t,e),i=r;return Bbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}g4.walkForTablePath=Mbe;var Pbe=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]}),jbe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Ube=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)&&Pbe(e,t,n);return jbe(e,t),e};Object.defineProperty(du,"__esModule",{value:!0}),du.MalloyParserErrorHandler=du.MalloyTranslator=du.MalloyChildTranslator=du.MalloyTranslation=void 0;const iG=EA,qbe=We,zbe=$A,Hbe=F,sG=Ube(vv),Qbe=a4,s7=Sv,Gbe=Ia,o7=l4,Wbe=c4,Vbe=f4,Ybe=x4,Kbe=d4,m4=h4,Xbe=kg,oG=Jo,Jbe=p4,Zbe=g4;class eTe extends zbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class tTe{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.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}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.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1330
1330
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),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=iG.CharStreams.fromString(e),i=new eTe(r),s=new iG.CommonTokenStream(i),o=new Hbe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new aG(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 nTe{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,Gbe.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.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}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,m4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,m4.isNeedResponse)(u))return u}return null}}class rTe{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 Qbe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof sG.Unimplemented&&u.logError("untranslated-parse-node","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,m4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class iTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,Wbe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class sTe{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,Vbe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class oTe{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,Ybe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class uTe{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,Jbe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class aTe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,Zbe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class lTe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=oG.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,m4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof sG.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.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});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 u7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new oG.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new tTe,this.modelAnnotationStep=new uTe(this.parseStep),this.metadataStep=new iTe(this.parseStep),this.completionsStep=new sTe(this.parseStep),this.helpContextStep=new oTe(this.parseStep),this.importsAndTablesStep=new nTe(this.parseStep),this.astStep=new rTe(this.importsAndTablesStep),this.tablePathInfoStep=new aTe(this.parseStep),this.translateStep=new lTe(this.astStep),this.references=new Kbe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new uG(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}
1331
1331
  | ${l}`,u>0&&(i=i+`
1332
1332
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}