@malloydata/malloy 0.0.80-dev230907183434 → 0.0.80

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.
Files changed (32) hide show
  1. package/dist/lang/ast/expressions/expr-aggregate-function.d.ts +8 -2
  2. package/dist/lang/ast/expressions/expr-aggregate-function.js +211 -12
  3. package/dist/lang/ast/expressions/expr-asymmetric.d.ts +2 -1
  4. package/dist/lang/ast/expressions/expr-asymmetric.js +5 -2
  5. package/dist/lang/ast/expressions/expr-avg.d.ts +1 -1
  6. package/dist/lang/ast/expressions/expr-avg.js +2 -2
  7. package/dist/lang/ast/expressions/expr-sum.d.ts +1 -1
  8. package/dist/lang/ast/expressions/expr-sum.js +2 -2
  9. package/dist/lang/ast/field-space/static-space.js +19 -2
  10. package/dist/lang/ast/field-space/struct-space-field-base.d.ts +2 -1
  11. package/dist/lang/ast/field-space/struct-space-field-base.js +3 -0
  12. package/dist/lang/ast/types/lookup-result.d.ts +5 -0
  13. package/dist/lang/ast/types/malloy-element.d.ts +1 -0
  14. package/dist/lang/ast/types/malloy-element.js +4 -0
  15. package/dist/lang/lib/Malloy/MalloyLexer.d.ts +75 -74
  16. package/dist/lang/lib/Malloy/MalloyLexer.js +1101 -1094
  17. package/dist/lang/lib/Malloy/MalloyParser.d.ts +91 -78
  18. package/dist/lang/lib/Malloy/MalloyParser.js +866 -801
  19. package/dist/lang/lib/Malloy/MalloyParserListener.d.ts +13 -0
  20. package/dist/lang/lib/Malloy/MalloyParserVisitor.d.ts +8 -0
  21. package/dist/lang/malloy-to-ast.d.ts +3 -0
  22. package/dist/lang/malloy-to-ast.js +76 -25
  23. package/dist/lang/parse-malloy.d.ts +1 -0
  24. package/dist/lang/parse-malloy.js +13 -0
  25. package/dist/lang/test/expressions.spec.js +241 -25
  26. package/dist/lang/test/parse.spec.js +1 -127
  27. package/dist/lang/test/query.spec.js +1 -1
  28. package/dist/lang/test/test-translator.d.ts +7 -1
  29. package/dist/lang/test/test-translator.js +40 -13
  30. package/dist/model/utils.d.ts +1 -0
  31. package/dist/model/utils.js +101 -1
  32. package/package.json +1 -1
@@ -27,8 +27,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.TableFunctionContext = exports.ExploreTableContext = exports.PipeElementContext = exports.FirstSegmentContext = exports.PipelineFromNameContext = exports.SqlSourceContext = exports.SQLSource_stubContext = exports.SQLSourceNameContext = exports.QuerySourceContext = exports.TableSourceContext = exports.SourceFromNamedModelEntryContext = exports.ExtendableSourceContext = exports.UnextendableSourceContext = exports.QueryByTurtleNameContext = exports.QueryByNameContext = exports.RefinableQueryContext = exports.RefinedQueryContext = exports.QueryFromSourceContext = exports.UnrefinableQueryContext = exports.QueryFromSQLSourceContext = exports.NormalQueryContext = exports.QueryContext = exports.SourceExtensionContext = exports.QueryRefinementContext = exports.RefineOperatorContext = exports.TopLevelQueryDefContext = exports.TopLevelQueryDefsContext = exports.IgnoredModelAnnotationsContext = exports.IgnoredObjectAnnotationsContext = exports.DocAnnotationsContext = exports.ImportURLContext = exports.ImportItemContext = exports.ImportSelectContext = exports.ImportStatementContext = exports.SqlInterpolationContext = exports.SqlStringContext = exports.BlockSQLDefContext = exports.SqlBlockContext = exports.DefineSQLStatementContext = exports.RunStatementContext = exports.IsDefineContext = exports.TagsContext = exports.TopLevelAnonQueryDefContext = exports.AnonymousQueryContext = exports.Use_top_level_query_defsContext = exports.DefineQueryContext = exports.DefineSourceStatementContext = exports.MalloyStatementContext = exports.MalloyDocumentContext = exports.MalloyParser = void 0;
28
28
  exports.FilterStatementContext = exports.JoinExpressionContext = exports.JoinOnContext = exports.JoinWithContext = exports.JoinDefContext = exports.IsExploreContext = exports.JoinListContext = exports.QueryExtendStatementListContext = exports.QueryExtendStatementContext = exports.QueryExtendContext = exports.DefJoinCrossContext = exports.DefJoinManyContext = exports.DefJoinOneContext = exports.JoinStatementContext = exports.DeclareStatementContext = exports.JoinNameDefContext = exports.FieldNameDefContext = exports.FieldDefContext = exports.DefListContext = exports.ExploreRenameDefContext = exports.RenameListContext = exports.DefDimensionsContext = exports.DefMeasuresContext = exports.DefIgnoreModel_stubContext = exports.DefExploreAnnotationContext = exports.DefExploreTimezoneContext = exports.DefExploreQueryContext = exports.DefExploreEditFieldContext = exports.DefExploreRenameContext = exports.DefExplorePrimaryKeyContext = exports.DefExploreWhere_stubContext = exports.DefJoin_stubContext = exports.DefDeclare_stubContext = exports.DefExploreMeasure_stubContext = exports.DefExploreDimension_stubContext = exports.ExploreStatementContext = exports.ExplorePropertiesContext = exports.SourceIDContext = exports.SourceNameDefContext = exports.ExtendedQueryContext = exports.BareExtendedSource_stubContext = exports.ExploreContext = exports.SourceDefinitionContext = exports.SourcePropertyListContext = exports.QueryNameContext = exports.ExploreQueryNameContext = exports.FilterShortcutContext = exports.QueryPropertiesContext = exports.ConnectionIdContext = exports.TableMethodContext = void 0;
29
29
  exports.DateLiteralContext = exports.ExprNowContext = exports.ExprRegexContext = exports.ExprBoolContext = exports.ExprNULLContext = exports.ExprTimeContext = exports.ExprNumberContext = exports.ExprStringContext = exports.LiteralContext = exports.NumericLiteralContext = exports.ShortStringContext = exports.StringContext = exports.CompareOpContext = exports.MalloyTypeContext = exports.AggregateContext = exports.SampleSpecContext = exports.QueryAnnotationContext = exports.TimezoneStatementContext = exports.SampleStatementContext = exports.IndexStatementContext = exports.IndexFieldsContext = exports.IndexElementContext = exports.TopStatementContext = exports.BySpecContext = exports.LimitStatementContext = exports.OrderBySpecContext = exports.OrderingContext = exports.OrderByStatementContext = exports.ProjectStatementContext = exports.CalculateStatementContext = exports.AggregateStatementContext = exports.NestDefContext = exports.NestExistingContext = exports.NestEntryContext = exports.NestedQueryListContext = exports.NestStatementContext = exports.QueryFieldEntryContext = exports.QueryFieldListContext = exports.GroupByStatementContext = exports.QueryJoinStatementContext = exports.QueryStatementContext = exports.ExploreQueryDefContext = exports.ExploreQueryNameDefContext = exports.SubQueryDefListContext = exports.HavingStatementContext = exports.WhereStatementContext = exports.FilterClauseListContext = exports.FilterByWhereContext = exports.FilterByShortcutContext = exports.FilteredByContext = void 0;
30
- exports.RefExprContext = exports.TaggedRefContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.MalloyOrSQLTypeContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = exports.LiteralTimestampContext = void 0;
31
- exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = void 0;
30
+ exports.TaggedRefContext = exports.CollectionWildCardContext = exports.FieldCollectionContext = exports.FieldNameListContext = exports.ArgumentListContext = exports.PickContext = exports.PickStatementContext = exports.PartialAllowedFieldExprContext = exports.ExprUngroupContext = exports.ExprPickContext = exports.ExprFuncContext = exports.ExprAggFuncContext = exports.ExprExprContext = exports.ExprAggregateContext = exports.ExprPathlessAggregateContext = exports.ExprCountDisinctContext = exports.ExprCoalesceContext = exports.ExprLogicalOrContext = exports.ExprLogicalAndContext = exports.ExprNotContext = exports.ExprApplyContext = exports.ExprCompareContext = exports.ExprOrTreeContext = exports.ExprAndTreeContext = exports.ExprForRangeContext = exports.ExprRangeContext = exports.ExprAddSubContext = exports.ExprMulDivContext = exports.ExprMinusContext = exports.ExprSafeCastContext = exports.ExprCastContext = exports.ExprTimeTruncContext = exports.ExprDurationContext = exports.ExprLiteralContext = exports.ExprFilterContext = exports.ExprFieldPathContext = exports.FieldExprContext = exports.MalloyOrSQLTypeContext = exports.UngroupContext = exports.TimeframeContext = exports.IdContext = exports.TableURIContext = exports.TablePathContext = exports.LiteralYearContext = exports.LiteralQuarterContext = exports.LiteralMonthContext = exports.LiteralWeekContext = exports.LiteralDayContext = exports.LiteralHourContext = exports.LiteralTimestampContext = void 0;
31
+ exports.ConnectionNameContext = exports.NameSQLBlockContext = exports.SqlExploreNameRefContext = exports.JustExprContext = exports.FieldNameContext = exports.JoinNameContext = exports.FieldPathContext = exports.CollectionMemberContext = exports.RefExprContext = void 0;
32
32
  const ATN_1 = require("antlr4ts/atn/ATN");
33
33
  const ATNDeserializer_1 = require("antlr4ts/atn/ATNDeserializer");
34
34
  const FailedPredicateException_1 = require("antlr4ts/FailedPredicateException");
@@ -71,7 +71,7 @@ class MalloyParser extends Parser_1.Parser {
71
71
  this.state = 260;
72
72
  this._errHandler.sync(this);
73
73
  _la = this._input.LA(1);
74
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.SQLC))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IMPORT - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)) | (1 << (MalloyParser.DOC_ANNOTATION - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 130)) | (1 << (MalloyParser.LITERAL_HOUR - 130)) | (1 << (MalloyParser.LITERAL_DAY - 130)) | (1 << (MalloyParser.LITERAL_QUARTER - 130)) | (1 << (MalloyParser.LITERAL_MONTH - 130)) | (1 << (MalloyParser.LITERAL_WEEK - 130)) | (1 << (MalloyParser.LITERAL_YEAR - 130)) | (1 << (MalloyParser.IDENTIFIER - 130)) | (1 << (MalloyParser.NUMERIC_LITERAL - 130)) | (1 << (MalloyParser.INTEGER_LITERAL - 130)) | (1 << (MalloyParser.SQL_BEGIN - 130)))) !== 0)) {
74
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.SQLC))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IMPORT - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.DOC_ANNOTATION - 96)) | (1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 131)) | (1 << (MalloyParser.LITERAL_HOUR - 131)) | (1 << (MalloyParser.LITERAL_DAY - 131)) | (1 << (MalloyParser.LITERAL_QUARTER - 131)) | (1 << (MalloyParser.LITERAL_MONTH - 131)) | (1 << (MalloyParser.LITERAL_WEEK - 131)) | (1 << (MalloyParser.LITERAL_YEAR - 131)) | (1 << (MalloyParser.IDENTIFIER - 131)) | (1 << (MalloyParser.NUMERIC_LITERAL - 131)) | (1 << (MalloyParser.INTEGER_LITERAL - 131)) | (1 << (MalloyParser.SQL_BEGIN - 131)))) !== 0)) {
75
75
  {
76
76
  this.state = 258;
77
77
  this._errHandler.sync(this);
@@ -113,6 +113,7 @@ class MalloyParser extends Parser_1.Parser {
113
113
  case MalloyParser.PICK:
114
114
  case MalloyParser.QUARTER:
115
115
  case MalloyParser.SECOND:
116
+ case MalloyParser.SOURCE_KW:
116
117
  case MalloyParser.SUM:
117
118
  case MalloyParser.TABLE:
118
119
  case MalloyParser.TRUE:
@@ -1784,7 +1785,7 @@ class MalloyParser extends Parser_1.Parser {
1784
1785
  this.state = 516;
1785
1786
  this._errHandler.sync(this);
1786
1787
  _la = this._input.LA(1);
1787
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DECLARE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.EXTENDQ) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.HAVING) | (1 << MalloyParser.INDEX) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.LIMIT) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.ORDER_BY) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SAMPLE) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.TOP) | (1 << MalloyParser.WHERE) | (1 << MalloyParser.TIMEZONE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)) | (1 << (MalloyParser.DOC_ANNOTATION - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 130)) | (1 << (MalloyParser.LITERAL_HOUR - 130)) | (1 << (MalloyParser.LITERAL_DAY - 130)) | (1 << (MalloyParser.LITERAL_QUARTER - 130)) | (1 << (MalloyParser.LITERAL_MONTH - 130)) | (1 << (MalloyParser.LITERAL_WEEK - 130)) | (1 << (MalloyParser.LITERAL_YEAR - 130)) | (1 << (MalloyParser.IDENTIFIER - 130)) | (1 << (MalloyParser.NUMERIC_LITERAL - 130)) | (1 << (MalloyParser.INTEGER_LITERAL - 130)) | (1 << (MalloyParser.SQL_BEGIN - 130)))) !== 0)) {
1788
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DECLARE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.EXTENDQ) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.HAVING) | (1 << MalloyParser.INDEX) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.LIMIT) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.ORDER_BY) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SAMPLE) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.TOP) | (1 << MalloyParser.WHERE) | (1 << MalloyParser.TIMEZONE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.DOC_ANNOTATION - 96)) | (1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 131)) | (1 << (MalloyParser.LITERAL_HOUR - 131)) | (1 << (MalloyParser.LITERAL_DAY - 131)) | (1 << (MalloyParser.LITERAL_QUARTER - 131)) | (1 << (MalloyParser.LITERAL_MONTH - 131)) | (1 << (MalloyParser.LITERAL_WEEK - 131)) | (1 << (MalloyParser.LITERAL_YEAR - 131)) | (1 << (MalloyParser.IDENTIFIER - 131)) | (1 << (MalloyParser.NUMERIC_LITERAL - 131)) | (1 << (MalloyParser.INTEGER_LITERAL - 131)) | (1 << (MalloyParser.SQL_BEGIN - 131)))) !== 0)) {
1788
1789
  {
1789
1790
  this.state = 514;
1790
1791
  this._errHandler.sync(this);
@@ -1834,6 +1835,7 @@ class MalloyParser extends Parser_1.Parser {
1834
1835
  case MalloyParser.PICK:
1835
1836
  case MalloyParser.QUARTER:
1836
1837
  case MalloyParser.SECOND:
1838
+ case MalloyParser.SOURCE_KW:
1837
1839
  case MalloyParser.SUM:
1838
1840
  case MalloyParser.TABLE:
1839
1841
  case MalloyParser.TRUE:
@@ -2190,7 +2192,7 @@ class MalloyParser extends Parser_1.Parser {
2190
2192
  this.state = 564;
2191
2193
  this._errHandler.sync(this);
2192
2194
  _la = this._input.LA(1);
2193
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.ACCEPT) | (1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DECLARE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.EXCEPT) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PRIMARY_KEY) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RENAME) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.WHERE) | (1 << MalloyParser.TIMEZONE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)) | (1 << (MalloyParser.DOC_ANNOTATION - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 130)) | (1 << (MalloyParser.LITERAL_HOUR - 130)) | (1 << (MalloyParser.LITERAL_DAY - 130)) | (1 << (MalloyParser.LITERAL_QUARTER - 130)) | (1 << (MalloyParser.LITERAL_MONTH - 130)) | (1 << (MalloyParser.LITERAL_WEEK - 130)) | (1 << (MalloyParser.LITERAL_YEAR - 130)) | (1 << (MalloyParser.IDENTIFIER - 130)) | (1 << (MalloyParser.NUMERIC_LITERAL - 130)) | (1 << (MalloyParser.INTEGER_LITERAL - 130)) | (1 << (MalloyParser.SQL_BEGIN - 130)))) !== 0)) {
2195
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.ACCEPT) | (1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DECLARE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.EXCEPT) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PRIMARY_KEY) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RENAME) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE) | (1 << MalloyParser.WHERE) | (1 << MalloyParser.TIMEZONE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.DOC_ANNOTATION - 96)) | (1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 131)) | (1 << (MalloyParser.LITERAL_HOUR - 131)) | (1 << (MalloyParser.LITERAL_DAY - 131)) | (1 << (MalloyParser.LITERAL_QUARTER - 131)) | (1 << (MalloyParser.LITERAL_MONTH - 131)) | (1 << (MalloyParser.LITERAL_WEEK - 131)) | (1 << (MalloyParser.LITERAL_YEAR - 131)) | (1 << (MalloyParser.IDENTIFIER - 131)) | (1 << (MalloyParser.NUMERIC_LITERAL - 131)) | (1 << (MalloyParser.INTEGER_LITERAL - 131)) | (1 << (MalloyParser.SQL_BEGIN - 131)))) !== 0)) {
2194
2196
  {
2195
2197
  this.state = 562;
2196
2198
  this._errHandler.sync(this);
@@ -2237,6 +2239,7 @@ class MalloyParser extends Parser_1.Parser {
2237
2239
  case MalloyParser.PICK:
2238
2240
  case MalloyParser.QUARTER:
2239
2241
  case MalloyParser.SECOND:
2242
+ case MalloyParser.SOURCE_KW:
2240
2243
  case MalloyParser.SUM:
2241
2244
  case MalloyParser.TABLE:
2242
2245
  case MalloyParser.TRUE:
@@ -2945,7 +2948,7 @@ class MalloyParser extends Parser_1.Parser {
2945
2948
  this.state = 672;
2946
2949
  this._errHandler.sync(this);
2947
2950
  _la = this._input.LA(1);
2948
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)) | (1 << (MalloyParser.SEMI - 96)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 130)) | (1 << (MalloyParser.LITERAL_HOUR - 130)) | (1 << (MalloyParser.LITERAL_DAY - 130)) | (1 << (MalloyParser.LITERAL_QUARTER - 130)) | (1 << (MalloyParser.LITERAL_MONTH - 130)) | (1 << (MalloyParser.LITERAL_WEEK - 130)) | (1 << (MalloyParser.LITERAL_YEAR - 130)) | (1 << (MalloyParser.IDENTIFIER - 130)) | (1 << (MalloyParser.NUMERIC_LITERAL - 130)) | (1 << (MalloyParser.INTEGER_LITERAL - 130)) | (1 << (MalloyParser.SQL_BEGIN - 130)))) !== 0)) {
2951
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (MalloyParser.ANNOTATION - 97)) | (1 << (MalloyParser.ARROW - 97)) | (1 << (MalloyParser.OPAREN - 97)) | (1 << (MalloyParser.OCURLY - 97)) | (1 << (MalloyParser.MINUS - 97)) | (1 << (MalloyParser.SEMI - 97)))) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 131)) | (1 << (MalloyParser.LITERAL_HOUR - 131)) | (1 << (MalloyParser.LITERAL_DAY - 131)) | (1 << (MalloyParser.LITERAL_QUARTER - 131)) | (1 << (MalloyParser.LITERAL_MONTH - 131)) | (1 << (MalloyParser.LITERAL_WEEK - 131)) | (1 << (MalloyParser.LITERAL_YEAR - 131)) | (1 << (MalloyParser.IDENTIFIER - 131)) | (1 << (MalloyParser.NUMERIC_LITERAL - 131)) | (1 << (MalloyParser.INTEGER_LITERAL - 131)) | (1 << (MalloyParser.SQL_BEGIN - 131)))) !== 0)) {
2949
2952
  {
2950
2953
  this.state = 670;
2951
2954
  this._errHandler.sync(this);
@@ -2985,6 +2988,7 @@ class MalloyParser extends Parser_1.Parser {
2985
2988
  case MalloyParser.PICK:
2986
2989
  case MalloyParser.QUARTER:
2987
2990
  case MalloyParser.SECOND:
2991
+ case MalloyParser.SOURCE_KW:
2988
2992
  case MalloyParser.SUM:
2989
2993
  case MalloyParser.TABLE:
2990
2994
  case MalloyParser.TRUE:
@@ -3174,7 +3178,7 @@ class MalloyParser extends Parser_1.Parser {
3174
3178
  this.state = 703;
3175
3179
  this._errHandler.sync(this);
3176
3180
  _la = this._input.LA(1);
3177
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & ((1 << (MalloyParser.ANNOTATION - 96)) | (1 << (MalloyParser.ARROW - 96)) | (1 << (MalloyParser.OPAREN - 96)) | (1 << (MalloyParser.OCURLY - 96)) | (1 << (MalloyParser.MINUS - 96)))) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 130)) | (1 << (MalloyParser.LITERAL_HOUR - 130)) | (1 << (MalloyParser.LITERAL_DAY - 130)) | (1 << (MalloyParser.LITERAL_QUARTER - 130)) | (1 << (MalloyParser.LITERAL_MONTH - 130)) | (1 << (MalloyParser.LITERAL_WEEK - 130)) | (1 << (MalloyParser.LITERAL_YEAR - 130)) | (1 << (MalloyParser.IDENTIFIER - 130)) | (1 << (MalloyParser.NUMERIC_LITERAL - 130)) | (1 << (MalloyParser.INTEGER_LITERAL - 130)) | (1 << (MalloyParser.SQL_BEGIN - 130)))) !== 0)) {
3181
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << MalloyParser.AGGREGATE) | (1 << MalloyParser.CALCULATE) | (1 << MalloyParser.DIMENSION) | (1 << MalloyParser.GROUP_BY) | (1 << MalloyParser.JOIN_CROSS) | (1 << MalloyParser.JOIN_ONE) | (1 << MalloyParser.JOIN_MANY) | (1 << MalloyParser.MEASURE) | (1 << MalloyParser.NEST) | (1 << MalloyParser.PROJECT) | (1 << MalloyParser.QUERY) | (1 << MalloyParser.RUN) | (1 << MalloyParser.SELECT) | (1 << MalloyParser.SOURCE))) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.FROM - 32)) | (1 << (MalloyParser.FROM_SQL - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.IS - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TABLE - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & ((1 << (MalloyParser.ANNOTATION - 97)) | (1 << (MalloyParser.ARROW - 97)) | (1 << (MalloyParser.OPAREN - 97)) | (1 << (MalloyParser.OCURLY - 97)) | (1 << (MalloyParser.MINUS - 97)))) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & ((1 << (MalloyParser.LITERAL_TIMESTAMP - 131)) | (1 << (MalloyParser.LITERAL_HOUR - 131)) | (1 << (MalloyParser.LITERAL_DAY - 131)) | (1 << (MalloyParser.LITERAL_QUARTER - 131)) | (1 << (MalloyParser.LITERAL_MONTH - 131)) | (1 << (MalloyParser.LITERAL_WEEK - 131)) | (1 << (MalloyParser.LITERAL_YEAR - 131)) | (1 << (MalloyParser.IDENTIFIER - 131)) | (1 << (MalloyParser.NUMERIC_LITERAL - 131)) | (1 << (MalloyParser.INTEGER_LITERAL - 131)) | (1 << (MalloyParser.SQL_BEGIN - 131)))) !== 0)) {
3178
3182
  {
3179
3183
  this.state = 702;
3180
3184
  this.isExplore();
@@ -4774,7 +4778,7 @@ class MalloyParser extends Parser_1.Parser {
4774
4778
  {
4775
4779
  this.state = 936;
4776
4780
  _la = this._input.LA(1);
4777
- if (!(((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (MalloyParser.LT - 112)) | (1 << (MalloyParser.GT - 112)) | (1 << (MalloyParser.EQ - 112)) | (1 << (MalloyParser.NE - 112)) | (1 << (MalloyParser.LTE - 112)) | (1 << (MalloyParser.GTE - 112)) | (1 << (MalloyParser.NOT_MATCH - 112)) | (1 << (MalloyParser.MATCH - 112)))) !== 0))) {
4781
+ if (!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (MalloyParser.LT - 113)) | (1 << (MalloyParser.GT - 113)) | (1 << (MalloyParser.EQ - 113)) | (1 << (MalloyParser.NE - 113)) | (1 << (MalloyParser.LTE - 113)) | (1 << (MalloyParser.GTE - 113)) | (1 << (MalloyParser.NOT_MATCH - 113)) | (1 << (MalloyParser.MATCH - 113)))) !== 0))) {
4778
4782
  this._errHandler.recoverInline(this);
4779
4783
  }
4780
4784
  else {
@@ -5330,7 +5334,7 @@ class MalloyParser extends Parser_1.Parser {
5330
5334
  let _alt;
5331
5335
  this.enterOuterAlt(_localctx, 1);
5332
5336
  {
5333
- this.state = 1056;
5337
+ this.state = 1061;
5334
5338
  this._errHandler.sync(this);
5335
5339
  switch (this.interpreter.adaptivePredict(this._input, 110, this._ctx)) {
5336
5340
  case 1:
@@ -5359,7 +5363,7 @@ class MalloyParser extends Parser_1.Parser {
5359
5363
  this.state = 981;
5360
5364
  this.match(MalloyParser.MINUS);
5361
5365
  this.state = 982;
5362
- this.fieldExpr(21);
5366
+ this.fieldExpr(22);
5363
5367
  }
5364
5368
  break;
5365
5369
  case 4:
@@ -5370,7 +5374,7 @@ class MalloyParser extends Parser_1.Parser {
5370
5374
  this.state = 983;
5371
5375
  this.match(MalloyParser.NOT);
5372
5376
  this.state = 984;
5373
- this.fieldExpr(12);
5377
+ this.fieldExpr(13);
5374
5378
  }
5375
5379
  break;
5376
5380
  case 5:
@@ -5411,25 +5415,25 @@ class MalloyParser extends Parser_1.Parser {
5411
5415
  break;
5412
5416
  case 7:
5413
5417
  {
5414
- _localctx = new ExprAggregateContext(_localctx);
5418
+ _localctx = new ExprPathlessAggregateContext(_localctx);
5415
5419
  this._ctx = _localctx;
5416
5420
  _prevctx = _localctx;
5417
- this.state = 1001;
5421
+ this.state = 1000;
5418
5422
  this._errHandler.sync(this);
5419
5423
  _la = this._input.LA(1);
5420
- if (_la === MalloyParser.BQ_STRING || _la === MalloyParser.IDENTIFIER) {
5424
+ if (_la === MalloyParser.SOURCE_KW) {
5421
5425
  {
5422
5426
  this.state = 998;
5423
- this.fieldPath();
5427
+ this.match(MalloyParser.SOURCE_KW);
5424
5428
  this.state = 999;
5425
5429
  this.match(MalloyParser.DOT);
5426
5430
  }
5427
5431
  }
5428
- this.state = 1003;
5432
+ this.state = 1002;
5429
5433
  this.aggregate();
5430
- this.state = 1004;
5434
+ this.state = 1003;
5431
5435
  this.match(MalloyParser.OPAREN);
5432
- this.state = 1007;
5436
+ this.state = 1006;
5433
5437
  this._errHandler.sync(this);
5434
5438
  switch (this._input.LA(1)) {
5435
5439
  case MalloyParser.ALL:
@@ -5450,6 +5454,7 @@ class MalloyParser extends Parser_1.Parser {
5450
5454
  case MalloyParser.PICK:
5451
5455
  case MalloyParser.QUARTER:
5452
5456
  case MalloyParser.SECOND:
5457
+ case MalloyParser.SOURCE_KW:
5453
5458
  case MalloyParser.SUM:
5454
5459
  case MalloyParser.TRUE:
5455
5460
  case MalloyParser.WEEK:
@@ -5472,13 +5477,13 @@ class MalloyParser extends Parser_1.Parser {
5472
5477
  case MalloyParser.INTEGER_LITERAL:
5473
5478
  case MalloyParser.SQL_BEGIN:
5474
5479
  {
5475
- this.state = 1005;
5480
+ this.state = 1004;
5476
5481
  this.fieldExpr(0);
5477
5482
  }
5478
5483
  break;
5479
5484
  case MalloyParser.STAR:
5480
5485
  {
5481
- this.state = 1006;
5486
+ this.state = 1005;
5482
5487
  this.match(MalloyParser.STAR);
5483
5488
  }
5484
5489
  break;
@@ -5487,86 +5492,104 @@ class MalloyParser extends Parser_1.Parser {
5487
5492
  default:
5488
5493
  break;
5489
5494
  }
5490
- this.state = 1009;
5495
+ this.state = 1008;
5491
5496
  this.match(MalloyParser.CPAREN);
5492
5497
  }
5493
5498
  break;
5494
5499
  case 8:
5495
5500
  {
5496
- _localctx = new ExprExprContext(_localctx);
5501
+ _localctx = new ExprAggregateContext(_localctx);
5497
5502
  this._ctx = _localctx;
5498
5503
  _prevctx = _localctx;
5504
+ this.state = 1010;
5505
+ this.fieldPath();
5499
5506
  this.state = 1011;
5500
- this.match(MalloyParser.OPAREN);
5507
+ this.match(MalloyParser.DOT);
5501
5508
  this.state = 1012;
5502
- this.partialAllowedFieldExpr();
5509
+ this.aggregate();
5503
5510
  this.state = 1013;
5511
+ this.match(MalloyParser.OPAREN);
5512
+ this.state = 1015;
5513
+ this._errHandler.sync(this);
5514
+ _la = this._input.LA(1);
5515
+ if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (MalloyParser.OPAREN - 101)) | (1 << (MalloyParser.MINUS - 101)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 101)) | (1 << (MalloyParser.LITERAL_HOUR - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (MalloyParser.LITERAL_DAY - 133)) | (1 << (MalloyParser.LITERAL_QUARTER - 133)) | (1 << (MalloyParser.LITERAL_MONTH - 133)) | (1 << (MalloyParser.LITERAL_WEEK - 133)) | (1 << (MalloyParser.LITERAL_YEAR - 133)) | (1 << (MalloyParser.IDENTIFIER - 133)) | (1 << (MalloyParser.NUMERIC_LITERAL - 133)) | (1 << (MalloyParser.INTEGER_LITERAL - 133)) | (1 << (MalloyParser.SQL_BEGIN - 133)))) !== 0)) {
5516
+ {
5517
+ this.state = 1014;
5518
+ this.fieldExpr(0);
5519
+ }
5520
+ }
5521
+ this.state = 1017;
5504
5522
  this.match(MalloyParser.CPAREN);
5505
5523
  }
5506
5524
  break;
5507
5525
  case 9:
5508
5526
  {
5509
- _localctx = new ExprAggFuncContext(_localctx);
5527
+ _localctx = new ExprExprContext(_localctx);
5510
5528
  this._ctx = _localctx;
5511
5529
  _prevctx = _localctx;
5512
- this.state = 1018;
5513
- this._errHandler.sync(this);
5514
- switch (this.interpreter.adaptivePredict(this._input, 103, this._ctx)) {
5515
- case 1:
5516
- {
5517
- this.state = 1015;
5518
- this.fieldPath();
5519
- this.state = 1016;
5520
- this.match(MalloyParser.DOT);
5521
- }
5522
- break;
5523
- }
5530
+ this.state = 1019;
5531
+ this.match(MalloyParser.OPAREN);
5524
5532
  this.state = 1020;
5525
- this.id();
5533
+ this.partialAllowedFieldExpr();
5526
5534
  this.state = 1021;
5535
+ this.match(MalloyParser.CPAREN);
5536
+ }
5537
+ break;
5538
+ case 10:
5539
+ {
5540
+ _localctx = new ExprAggFuncContext(_localctx);
5541
+ this._ctx = _localctx;
5542
+ _prevctx = _localctx;
5543
+ this.state = 1023;
5544
+ this.fieldPath();
5545
+ this.state = 1024;
5546
+ this.match(MalloyParser.DOT);
5547
+ this.state = 1025;
5548
+ this.id();
5549
+ this.state = 1026;
5527
5550
  this.match(MalloyParser.OPAREN);
5528
5551
  {
5529
- this.state = 1023;
5552
+ this.state = 1028;
5530
5553
  this._errHandler.sync(this);
5531
5554
  _la = this._input.LA(1);
5532
- if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & ((1 << (MalloyParser.OPAREN - 100)) | (1 << (MalloyParser.MINUS - 100)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 100)) | (1 << (MalloyParser.LITERAL_HOUR - 100)))) !== 0) || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & ((1 << (MalloyParser.LITERAL_DAY - 132)) | (1 << (MalloyParser.LITERAL_QUARTER - 132)) | (1 << (MalloyParser.LITERAL_MONTH - 132)) | (1 << (MalloyParser.LITERAL_WEEK - 132)) | (1 << (MalloyParser.LITERAL_YEAR - 132)) | (1 << (MalloyParser.IDENTIFIER - 132)) | (1 << (MalloyParser.NUMERIC_LITERAL - 132)) | (1 << (MalloyParser.INTEGER_LITERAL - 132)) | (1 << (MalloyParser.SQL_BEGIN - 132)))) !== 0)) {
5555
+ if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (MalloyParser.OPAREN - 101)) | (1 << (MalloyParser.MINUS - 101)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 101)) | (1 << (MalloyParser.LITERAL_HOUR - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (MalloyParser.LITERAL_DAY - 133)) | (1 << (MalloyParser.LITERAL_QUARTER - 133)) | (1 << (MalloyParser.LITERAL_MONTH - 133)) | (1 << (MalloyParser.LITERAL_WEEK - 133)) | (1 << (MalloyParser.LITERAL_YEAR - 133)) | (1 << (MalloyParser.IDENTIFIER - 133)) | (1 << (MalloyParser.NUMERIC_LITERAL - 133)) | (1 << (MalloyParser.INTEGER_LITERAL - 133)) | (1 << (MalloyParser.SQL_BEGIN - 133)))) !== 0)) {
5533
5556
  {
5534
- this.state = 1022;
5557
+ this.state = 1027;
5535
5558
  this.argumentList();
5536
5559
  }
5537
5560
  }
5538
5561
  }
5539
- this.state = 1025;
5562
+ this.state = 1030;
5540
5563
  this.match(MalloyParser.CPAREN);
5541
5564
  }
5542
5565
  break;
5543
- case 10:
5566
+ case 11:
5544
5567
  {
5545
5568
  _localctx = new ExprFuncContext(_localctx);
5546
5569
  this._ctx = _localctx;
5547
5570
  _prevctx = _localctx;
5548
- this.state = 1035;
5571
+ this.state = 1040;
5549
5572
  this._errHandler.sync(this);
5550
5573
  switch (this._input.LA(1)) {
5551
5574
  case MalloyParser.BQ_STRING:
5552
5575
  case MalloyParser.IDENTIFIER:
5553
5576
  {
5554
5577
  {
5555
- this.state = 1027;
5556
- this.id();
5557
5578
  this.state = 1032;
5579
+ this.id();
5580
+ this.state = 1037;
5558
5581
  this._errHandler.sync(this);
5559
5582
  _la = this._input.LA(1);
5560
5583
  if (_la === MalloyParser.EXCLAM) {
5561
5584
  {
5562
- this.state = 1028;
5585
+ this.state = 1033;
5563
5586
  this.match(MalloyParser.EXCLAM);
5564
- this.state = 1030;
5587
+ this.state = 1035;
5565
5588
  this._errHandler.sync(this);
5566
5589
  _la = this._input.LA(1);
5567
5590
  if (((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & ((1 << (MalloyParser.BOOLEAN - 37)) | (1 << (MalloyParser.DATE - 37)) | (1 << (MalloyParser.NUMBER - 37)))) !== 0) || _la === MalloyParser.STRING || _la === MalloyParser.TIMESTAMP) {
5568
5591
  {
5569
- this.state = 1029;
5592
+ this.state = 1034;
5570
5593
  this.malloyType();
5571
5594
  }
5572
5595
  }
@@ -5584,73 +5607,73 @@ class MalloyParser extends Parser_1.Parser {
5584
5607
  case MalloyParser.WEEK:
5585
5608
  case MalloyParser.YEAR:
5586
5609
  {
5587
- this.state = 1034;
5610
+ this.state = 1039;
5588
5611
  this.timeframe();
5589
5612
  }
5590
5613
  break;
5591
5614
  default:
5592
5615
  throw new NoViableAltException_1.NoViableAltException(this);
5593
5616
  }
5594
- this.state = 1037;
5617
+ this.state = 1042;
5595
5618
  this.match(MalloyParser.OPAREN);
5596
5619
  {
5597
- this.state = 1039;
5620
+ this.state = 1044;
5598
5621
  this._errHandler.sync(this);
5599
5622
  _la = this._input.LA(1);
5600
- if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & ((1 << (MalloyParser.OPAREN - 100)) | (1 << (MalloyParser.MINUS - 100)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 100)) | (1 << (MalloyParser.LITERAL_HOUR - 100)))) !== 0) || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & ((1 << (MalloyParser.LITERAL_DAY - 132)) | (1 << (MalloyParser.LITERAL_QUARTER - 132)) | (1 << (MalloyParser.LITERAL_MONTH - 132)) | (1 << (MalloyParser.LITERAL_WEEK - 132)) | (1 << (MalloyParser.LITERAL_YEAR - 132)) | (1 << (MalloyParser.IDENTIFIER - 132)) | (1 << (MalloyParser.NUMERIC_LITERAL - 132)) | (1 << (MalloyParser.INTEGER_LITERAL - 132)) | (1 << (MalloyParser.SQL_BEGIN - 132)))) !== 0)) {
5623
+ if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (MalloyParser.OPAREN - 101)) | (1 << (MalloyParser.MINUS - 101)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 101)) | (1 << (MalloyParser.LITERAL_HOUR - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (MalloyParser.LITERAL_DAY - 133)) | (1 << (MalloyParser.LITERAL_QUARTER - 133)) | (1 << (MalloyParser.LITERAL_MONTH - 133)) | (1 << (MalloyParser.LITERAL_WEEK - 133)) | (1 << (MalloyParser.LITERAL_YEAR - 133)) | (1 << (MalloyParser.IDENTIFIER - 133)) | (1 << (MalloyParser.NUMERIC_LITERAL - 133)) | (1 << (MalloyParser.INTEGER_LITERAL - 133)) | (1 << (MalloyParser.SQL_BEGIN - 133)))) !== 0)) {
5601
5624
  {
5602
- this.state = 1038;
5625
+ this.state = 1043;
5603
5626
  this.argumentList();
5604
5627
  }
5605
5628
  }
5606
5629
  }
5607
- this.state = 1041;
5630
+ this.state = 1046;
5608
5631
  this.match(MalloyParser.CPAREN);
5609
5632
  }
5610
5633
  break;
5611
- case 11:
5634
+ case 12:
5612
5635
  {
5613
5636
  _localctx = new ExprPickContext(_localctx);
5614
5637
  this._ctx = _localctx;
5615
5638
  _prevctx = _localctx;
5616
- this.state = 1043;
5639
+ this.state = 1048;
5617
5640
  this.pickStatement();
5618
5641
  }
5619
5642
  break;
5620
- case 12:
5643
+ case 13:
5621
5644
  {
5622
5645
  _localctx = new ExprUngroupContext(_localctx);
5623
5646
  this._ctx = _localctx;
5624
5647
  _prevctx = _localctx;
5625
- this.state = 1044;
5648
+ this.state = 1049;
5626
5649
  this.ungroup();
5627
- this.state = 1045;
5650
+ this.state = 1050;
5628
5651
  this.match(MalloyParser.OPAREN);
5629
- this.state = 1046;
5630
- this.fieldExpr(0);
5631
5652
  this.state = 1051;
5653
+ this.fieldExpr(0);
5654
+ this.state = 1056;
5632
5655
  this._errHandler.sync(this);
5633
5656
  _la = this._input.LA(1);
5634
5657
  while (_la === MalloyParser.COMMA) {
5635
5658
  {
5636
5659
  {
5637
- this.state = 1047;
5660
+ this.state = 1052;
5638
5661
  this.match(MalloyParser.COMMA);
5639
- this.state = 1048;
5662
+ this.state = 1053;
5640
5663
  this.fieldName();
5641
5664
  }
5642
5665
  }
5643
- this.state = 1053;
5666
+ this.state = 1058;
5644
5667
  this._errHandler.sync(this);
5645
5668
  _la = this._input.LA(1);
5646
5669
  }
5647
- this.state = 1054;
5670
+ this.state = 1059;
5648
5671
  this.match(MalloyParser.CPAREN);
5649
5672
  }
5650
5673
  break;
5651
5674
  }
5652
5675
  this._ctx._stop = this._input.tryLT(-1);
5653
- this.state = 1112;
5676
+ this.state = 1117;
5654
5677
  this._errHandler.sync(this);
5655
5678
  _alt = this.interpreter.adaptivePredict(this._input, 112, this._ctx);
5656
5679
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
@@ -5660,20 +5683,20 @@ class MalloyParser extends Parser_1.Parser {
5660
5683
  }
5661
5684
  _prevctx = _localctx;
5662
5685
  {
5663
- this.state = 1110;
5686
+ this.state = 1115;
5664
5687
  this._errHandler.sync(this);
5665
5688
  switch (this.interpreter.adaptivePredict(this._input, 111, this._ctx)) {
5666
5689
  case 1:
5667
5690
  {
5668
5691
  _localctx = new ExprMulDivContext(new FieldExprContext(_parentctx, _parentState));
5669
5692
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5670
- this.state = 1058;
5671
- if (!(this.precpred(this._ctx, 20))) {
5672
- throw this.createFailedPredicateException("this.precpred(this._ctx, 20)");
5693
+ this.state = 1063;
5694
+ if (!(this.precpred(this._ctx, 21))) {
5695
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 21)");
5673
5696
  }
5674
- this.state = 1059;
5697
+ this.state = 1064;
5675
5698
  _la = this._input.LA(1);
5676
- if (!(((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & ((1 << (MalloyParser.STAR - 120)) | (1 << (MalloyParser.SLASH - 120)) | (1 << (MalloyParser.PERCENT - 120)))) !== 0))) {
5699
+ if (!(((((_la - 121)) & ~0x1F) === 0 && ((1 << (_la - 121)) & ((1 << (MalloyParser.STAR - 121)) | (1 << (MalloyParser.SLASH - 121)) | (1 << (MalloyParser.PERCENT - 121)))) !== 0))) {
5677
5700
  this._errHandler.recoverInline(this);
5678
5701
  }
5679
5702
  else {
@@ -5683,19 +5706,19 @@ class MalloyParser extends Parser_1.Parser {
5683
5706
  this._errHandler.reportMatch(this);
5684
5707
  this.consume();
5685
5708
  }
5686
- this.state = 1060;
5687
- this.fieldExpr(21);
5709
+ this.state = 1065;
5710
+ this.fieldExpr(22);
5688
5711
  }
5689
5712
  break;
5690
5713
  case 2:
5691
5714
  {
5692
5715
  _localctx = new ExprAddSubContext(new FieldExprContext(_parentctx, _parentState));
5693
5716
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5694
- this.state = 1061;
5695
- if (!(this.precpred(this._ctx, 19))) {
5696
- throw this.createFailedPredicateException("this.precpred(this._ctx, 19)");
5717
+ this.state = 1066;
5718
+ if (!(this.precpred(this._ctx, 20))) {
5719
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 20)");
5697
5720
  }
5698
- this.state = 1062;
5721
+ this.state = 1067;
5699
5722
  _la = this._input.LA(1);
5700
5723
  if (!(_la === MalloyParser.PLUS || _la === MalloyParser.MINUS)) {
5701
5724
  this._errHandler.recoverInline(this);
@@ -5707,93 +5730,93 @@ class MalloyParser extends Parser_1.Parser {
5707
5730
  this._errHandler.reportMatch(this);
5708
5731
  this.consume();
5709
5732
  }
5710
- this.state = 1063;
5711
- this.fieldExpr(20);
5733
+ this.state = 1068;
5734
+ this.fieldExpr(21);
5712
5735
  }
5713
5736
  break;
5714
5737
  case 3:
5715
5738
  {
5716
5739
  _localctx = new ExprRangeContext(new FieldExprContext(_parentctx, _parentState));
5717
5740
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5718
- this.state = 1064;
5719
- if (!(this.precpred(this._ctx, 18))) {
5720
- throw this.createFailedPredicateException("this.precpred(this._ctx, 18)");
5741
+ this.state = 1069;
5742
+ if (!(this.precpred(this._ctx, 19))) {
5743
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 19)");
5721
5744
  }
5722
- this.state = 1065;
5745
+ this.state = 1070;
5723
5746
  this.match(MalloyParser.TO);
5724
- this.state = 1066;
5725
- this.fieldExpr(19);
5747
+ this.state = 1071;
5748
+ this.fieldExpr(20);
5726
5749
  }
5727
5750
  break;
5728
5751
  case 4:
5729
5752
  {
5730
5753
  _localctx = new ExprCompareContext(new FieldExprContext(_parentctx, _parentState));
5731
5754
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5732
- this.state = 1067;
5733
- if (!(this.precpred(this._ctx, 14))) {
5734
- throw this.createFailedPredicateException("this.precpred(this._ctx, 14)");
5755
+ this.state = 1072;
5756
+ if (!(this.precpred(this._ctx, 15))) {
5757
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 15)");
5735
5758
  }
5736
- this.state = 1068;
5759
+ this.state = 1073;
5737
5760
  this.compareOp();
5738
- this.state = 1069;
5739
- this.fieldExpr(15);
5761
+ this.state = 1074;
5762
+ this.fieldExpr(16);
5740
5763
  }
5741
5764
  break;
5742
5765
  case 5:
5743
5766
  {
5744
5767
  _localctx = new ExprLogicalAndContext(new FieldExprContext(_parentctx, _parentState));
5745
5768
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5746
- this.state = 1071;
5747
- if (!(this.precpred(this._ctx, 11))) {
5748
- throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
5769
+ this.state = 1076;
5770
+ if (!(this.precpred(this._ctx, 12))) {
5771
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 12)");
5749
5772
  }
5750
- this.state = 1072;
5773
+ this.state = 1077;
5751
5774
  this.match(MalloyParser.AND);
5752
- this.state = 1073;
5753
- this.fieldExpr(12);
5775
+ this.state = 1078;
5776
+ this.fieldExpr(13);
5754
5777
  }
5755
5778
  break;
5756
5779
  case 6:
5757
5780
  {
5758
5781
  _localctx = new ExprLogicalOrContext(new FieldExprContext(_parentctx, _parentState));
5759
5782
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5760
- this.state = 1074;
5761
- if (!(this.precpred(this._ctx, 10))) {
5762
- throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
5783
+ this.state = 1079;
5784
+ if (!(this.precpred(this._ctx, 11))) {
5785
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 11)");
5763
5786
  }
5764
- this.state = 1075;
5787
+ this.state = 1080;
5765
5788
  this.match(MalloyParser.OR);
5766
- this.state = 1076;
5767
- this.fieldExpr(11);
5789
+ this.state = 1081;
5790
+ this.fieldExpr(12);
5768
5791
  }
5769
5792
  break;
5770
5793
  case 7:
5771
5794
  {
5772
5795
  _localctx = new ExprCoalesceContext(new FieldExprContext(_parentctx, _parentState));
5773
5796
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5774
- this.state = 1077;
5775
- if (!(this.precpred(this._ctx, 9))) {
5776
- throw this.createFailedPredicateException("this.precpred(this._ctx, 9)");
5797
+ this.state = 1082;
5798
+ if (!(this.precpred(this._ctx, 10))) {
5799
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 10)");
5777
5800
  }
5778
- this.state = 1078;
5801
+ this.state = 1083;
5779
5802
  this.match(MalloyParser.DOUBLE_QMARK);
5780
- this.state = 1079;
5781
- this.fieldExpr(10);
5803
+ this.state = 1084;
5804
+ this.fieldExpr(11);
5782
5805
  }
5783
5806
  break;
5784
5807
  case 8:
5785
5808
  {
5786
5809
  _localctx = new ExprFilterContext(new FieldExprContext(_parentctx, _parentState));
5787
5810
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5788
- this.state = 1080;
5789
- if (!(this.precpred(this._ctx, 27))) {
5790
- throw this.createFailedPredicateException("this.precpred(this._ctx, 27)");
5811
+ this.state = 1085;
5812
+ if (!(this.precpred(this._ctx, 28))) {
5813
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 28)");
5791
5814
  }
5792
- this.state = 1081;
5815
+ this.state = 1086;
5793
5816
  this.match(MalloyParser.OCURLY);
5794
- this.state = 1082;
5817
+ this.state = 1087;
5795
5818
  this.filteredBy();
5796
- this.state = 1083;
5819
+ this.state = 1088;
5797
5820
  this.match(MalloyParser.CCURLY);
5798
5821
  }
5799
5822
  break;
@@ -5801,11 +5824,11 @@ class MalloyParser extends Parser_1.Parser {
5801
5824
  {
5802
5825
  _localctx = new ExprDurationContext(new FieldExprContext(_parentctx, _parentState));
5803
5826
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5804
- this.state = 1085;
5805
- if (!(this.precpred(this._ctx, 25))) {
5806
- throw this.createFailedPredicateException("this.precpred(this._ctx, 25)");
5827
+ this.state = 1090;
5828
+ if (!(this.precpred(this._ctx, 26))) {
5829
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 26)");
5807
5830
  }
5808
- this.state = 1086;
5831
+ this.state = 1091;
5809
5832
  this.timeframe();
5810
5833
  }
5811
5834
  break;
@@ -5813,13 +5836,13 @@ class MalloyParser extends Parser_1.Parser {
5813
5836
  {
5814
5837
  _localctx = new ExprTimeTruncContext(new FieldExprContext(_parentctx, _parentState));
5815
5838
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5816
- this.state = 1087;
5817
- if (!(this.precpred(this._ctx, 24))) {
5818
- throw this.createFailedPredicateException("this.precpred(this._ctx, 24)");
5839
+ this.state = 1092;
5840
+ if (!(this.precpred(this._ctx, 25))) {
5841
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 25)");
5819
5842
  }
5820
- this.state = 1088;
5843
+ this.state = 1093;
5821
5844
  this.match(MalloyParser.DOT);
5822
- this.state = 1089;
5845
+ this.state = 1094;
5823
5846
  this.timeframe();
5824
5847
  }
5825
5848
  break;
@@ -5827,13 +5850,13 @@ class MalloyParser extends Parser_1.Parser {
5827
5850
  {
5828
5851
  _localctx = new ExprCastContext(new FieldExprContext(_parentctx, _parentState));
5829
5852
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5830
- this.state = 1090;
5831
- if (!(this.precpred(this._ctx, 23))) {
5832
- throw this.createFailedPredicateException("this.precpred(this._ctx, 23)");
5853
+ this.state = 1095;
5854
+ if (!(this.precpred(this._ctx, 24))) {
5855
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 24)");
5833
5856
  }
5834
- this.state = 1091;
5857
+ this.state = 1096;
5835
5858
  this.match(MalloyParser.DOUBLECOLON);
5836
- this.state = 1092;
5859
+ this.state = 1097;
5837
5860
  this.malloyOrSQLType();
5838
5861
  }
5839
5862
  break;
@@ -5841,13 +5864,13 @@ class MalloyParser extends Parser_1.Parser {
5841
5864
  {
5842
5865
  _localctx = new ExprSafeCastContext(new FieldExprContext(_parentctx, _parentState));
5843
5866
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5844
- this.state = 1093;
5845
- if (!(this.precpred(this._ctx, 22))) {
5846
- throw this.createFailedPredicateException("this.precpred(this._ctx, 22)");
5867
+ this.state = 1098;
5868
+ if (!(this.precpred(this._ctx, 23))) {
5869
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 23)");
5847
5870
  }
5848
- this.state = 1094;
5871
+ this.state = 1099;
5849
5872
  this.match(MalloyParser.TRIPLECOLON);
5850
- this.state = 1095;
5873
+ this.state = 1100;
5851
5874
  this.malloyOrSQLType();
5852
5875
  }
5853
5876
  break;
@@ -5856,15 +5879,15 @@ class MalloyParser extends Parser_1.Parser {
5856
5879
  _localctx = new ExprForRangeContext(new FieldExprContext(_parentctx, _parentState));
5857
5880
  _localctx._startAt = _prevctx;
5858
5881
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5859
- this.state = 1096;
5860
- if (!(this.precpred(this._ctx, 17))) {
5861
- throw this.createFailedPredicateException("this.precpred(this._ctx, 17)");
5882
+ this.state = 1101;
5883
+ if (!(this.precpred(this._ctx, 18))) {
5884
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 18)");
5862
5885
  }
5863
- this.state = 1097;
5886
+ this.state = 1102;
5864
5887
  this.match(MalloyParser.FOR);
5865
- this.state = 1098;
5888
+ this.state = 1103;
5866
5889
  _localctx._duration = this.fieldExpr(0);
5867
- this.state = 1099;
5890
+ this.state = 1104;
5868
5891
  this.timeframe();
5869
5892
  }
5870
5893
  break;
@@ -5872,13 +5895,13 @@ class MalloyParser extends Parser_1.Parser {
5872
5895
  {
5873
5896
  _localctx = new ExprAndTreeContext(new FieldExprContext(_parentctx, _parentState));
5874
5897
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5875
- this.state = 1101;
5876
- if (!(this.precpred(this._ctx, 16))) {
5877
- throw this.createFailedPredicateException("this.precpred(this._ctx, 16)");
5898
+ this.state = 1106;
5899
+ if (!(this.precpred(this._ctx, 17))) {
5900
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 17)");
5878
5901
  }
5879
- this.state = 1102;
5902
+ this.state = 1107;
5880
5903
  this.match(MalloyParser.AMPER);
5881
- this.state = 1103;
5904
+ this.state = 1108;
5882
5905
  this.partialAllowedFieldExpr();
5883
5906
  }
5884
5907
  break;
@@ -5886,13 +5909,13 @@ class MalloyParser extends Parser_1.Parser {
5886
5909
  {
5887
5910
  _localctx = new ExprOrTreeContext(new FieldExprContext(_parentctx, _parentState));
5888
5911
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5889
- this.state = 1104;
5890
- if (!(this.precpred(this._ctx, 15))) {
5891
- throw this.createFailedPredicateException("this.precpred(this._ctx, 15)");
5912
+ this.state = 1109;
5913
+ if (!(this.precpred(this._ctx, 16))) {
5914
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 16)");
5892
5915
  }
5893
- this.state = 1105;
5916
+ this.state = 1110;
5894
5917
  this.match(MalloyParser.BAR);
5895
- this.state = 1106;
5918
+ this.state = 1111;
5896
5919
  this.partialAllowedFieldExpr();
5897
5920
  }
5898
5921
  break;
@@ -5900,20 +5923,20 @@ class MalloyParser extends Parser_1.Parser {
5900
5923
  {
5901
5924
  _localctx = new ExprApplyContext(new FieldExprContext(_parentctx, _parentState));
5902
5925
  this.pushNewRecursionContext(_localctx, _startState, MalloyParser.RULE_fieldExpr);
5903
- this.state = 1107;
5904
- if (!(this.precpred(this._ctx, 13))) {
5905
- throw this.createFailedPredicateException("this.precpred(this._ctx, 13)");
5926
+ this.state = 1112;
5927
+ if (!(this.precpred(this._ctx, 14))) {
5928
+ throw this.createFailedPredicateException("this.precpred(this._ctx, 14)");
5906
5929
  }
5907
- this.state = 1108;
5930
+ this.state = 1113;
5908
5931
  this.match(MalloyParser.QMARK);
5909
- this.state = 1109;
5932
+ this.state = 1114;
5910
5933
  this.partialAllowedFieldExpr();
5911
5934
  }
5912
5935
  break;
5913
5936
  }
5914
5937
  }
5915
5938
  }
5916
- this.state = 1114;
5939
+ this.state = 1119;
5917
5940
  this._errHandler.sync(this);
5918
5941
  _alt = this.interpreter.adaptivePredict(this._input, 112, this._ctx);
5919
5942
  }
@@ -5940,42 +5963,42 @@ class MalloyParser extends Parser_1.Parser {
5940
5963
  this.enterRule(_localctx, 222, MalloyParser.RULE_partialAllowedFieldExpr);
5941
5964
  let _la;
5942
5965
  try {
5943
- this.state = 1126;
5966
+ this.state = 1131;
5944
5967
  this._errHandler.sync(this);
5945
5968
  switch (this.interpreter.adaptivePredict(this._input, 115, this._ctx)) {
5946
5969
  case 1:
5947
5970
  this.enterOuterAlt(_localctx, 1);
5948
5971
  {
5949
- this.state = 1115;
5972
+ this.state = 1120;
5950
5973
  this.match(MalloyParser.OPAREN);
5951
- this.state = 1117;
5974
+ this.state = 1122;
5952
5975
  this._errHandler.sync(this);
5953
5976
  _la = this._input.LA(1);
5954
- if (((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (MalloyParser.LT - 112)) | (1 << (MalloyParser.GT - 112)) | (1 << (MalloyParser.EQ - 112)) | (1 << (MalloyParser.NE - 112)) | (1 << (MalloyParser.LTE - 112)) | (1 << (MalloyParser.GTE - 112)) | (1 << (MalloyParser.NOT_MATCH - 112)) | (1 << (MalloyParser.MATCH - 112)))) !== 0)) {
5977
+ if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (MalloyParser.LT - 113)) | (1 << (MalloyParser.GT - 113)) | (1 << (MalloyParser.EQ - 113)) | (1 << (MalloyParser.NE - 113)) | (1 << (MalloyParser.LTE - 113)) | (1 << (MalloyParser.GTE - 113)) | (1 << (MalloyParser.NOT_MATCH - 113)) | (1 << (MalloyParser.MATCH - 113)))) !== 0)) {
5955
5978
  {
5956
- this.state = 1116;
5979
+ this.state = 1121;
5957
5980
  this.compareOp();
5958
5981
  }
5959
5982
  }
5960
- this.state = 1119;
5983
+ this.state = 1124;
5961
5984
  this.fieldExpr(0);
5962
- this.state = 1120;
5985
+ this.state = 1125;
5963
5986
  this.match(MalloyParser.CPAREN);
5964
5987
  }
5965
5988
  break;
5966
5989
  case 2:
5967
5990
  this.enterOuterAlt(_localctx, 2);
5968
5991
  {
5969
- this.state = 1123;
5992
+ this.state = 1128;
5970
5993
  this._errHandler.sync(this);
5971
5994
  _la = this._input.LA(1);
5972
- if (((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & ((1 << (MalloyParser.LT - 112)) | (1 << (MalloyParser.GT - 112)) | (1 << (MalloyParser.EQ - 112)) | (1 << (MalloyParser.NE - 112)) | (1 << (MalloyParser.LTE - 112)) | (1 << (MalloyParser.GTE - 112)) | (1 << (MalloyParser.NOT_MATCH - 112)) | (1 << (MalloyParser.MATCH - 112)))) !== 0)) {
5995
+ if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & ((1 << (MalloyParser.LT - 113)) | (1 << (MalloyParser.GT - 113)) | (1 << (MalloyParser.EQ - 113)) | (1 << (MalloyParser.NE - 113)) | (1 << (MalloyParser.LTE - 113)) | (1 << (MalloyParser.GTE - 113)) | (1 << (MalloyParser.NOT_MATCH - 113)) | (1 << (MalloyParser.MATCH - 113)))) !== 0)) {
5973
5996
  {
5974
- this.state = 1122;
5997
+ this.state = 1127;
5975
5998
  this.compareOp();
5976
5999
  }
5977
6000
  }
5978
- this.state = 1125;
6001
+ this.state = 1130;
5979
6002
  this.fieldExpr(0);
5980
6003
  }
5981
6004
  break;
@@ -6004,7 +6027,7 @@ class MalloyParser extends Parser_1.Parser {
6004
6027
  let _alt;
6005
6028
  this.enterOuterAlt(_localctx, 1);
6006
6029
  {
6007
- this.state = 1129;
6030
+ this.state = 1134;
6008
6031
  this._errHandler.sync(this);
6009
6032
  _alt = 1;
6010
6033
  do {
@@ -6012,7 +6035,7 @@ class MalloyParser extends Parser_1.Parser {
6012
6035
  case 1:
6013
6036
  {
6014
6037
  {
6015
- this.state = 1128;
6038
+ this.state = 1133;
6016
6039
  this.pick();
6017
6040
  }
6018
6041
  }
@@ -6020,18 +6043,18 @@ class MalloyParser extends Parser_1.Parser {
6020
6043
  default:
6021
6044
  throw new NoViableAltException_1.NoViableAltException(this);
6022
6045
  }
6023
- this.state = 1131;
6046
+ this.state = 1136;
6024
6047
  this._errHandler.sync(this);
6025
6048
  _alt = this.interpreter.adaptivePredict(this._input, 116, this._ctx);
6026
6049
  } while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER);
6027
- this.state = 1135;
6050
+ this.state = 1140;
6028
6051
  this._errHandler.sync(this);
6029
6052
  switch (this.interpreter.adaptivePredict(this._input, 117, this._ctx)) {
6030
6053
  case 1:
6031
6054
  {
6032
- this.state = 1133;
6055
+ this.state = 1138;
6033
6056
  this.match(MalloyParser.ELSE);
6034
- this.state = 1134;
6057
+ this.state = 1139;
6035
6058
  _localctx._pickElse = this.fieldExpr(0);
6036
6059
  }
6037
6060
  break;
@@ -6061,20 +6084,20 @@ class MalloyParser extends Parser_1.Parser {
6061
6084
  try {
6062
6085
  this.enterOuterAlt(_localctx, 1);
6063
6086
  {
6064
- this.state = 1137;
6087
+ this.state = 1142;
6065
6088
  this.match(MalloyParser.PICK);
6066
- this.state = 1139;
6089
+ this.state = 1144;
6067
6090
  this._errHandler.sync(this);
6068
6091
  _la = this._input.LA(1);
6069
- if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 100)) & ~0x1F) === 0 && ((1 << (_la - 100)) & ((1 << (MalloyParser.OPAREN - 100)) | (1 << (MalloyParser.MINUS - 100)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 100)) | (1 << (MalloyParser.LITERAL_HOUR - 100)))) !== 0) || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & ((1 << (MalloyParser.LITERAL_DAY - 132)) | (1 << (MalloyParser.LITERAL_QUARTER - 132)) | (1 << (MalloyParser.LITERAL_MONTH - 132)) | (1 << (MalloyParser.LITERAL_WEEK - 132)) | (1 << (MalloyParser.LITERAL_YEAR - 132)) | (1 << (MalloyParser.IDENTIFIER - 132)) | (1 << (MalloyParser.NUMERIC_LITERAL - 132)) | (1 << (MalloyParser.INTEGER_LITERAL - 132)) | (1 << (MalloyParser.SQL_BEGIN - 132)))) !== 0)) {
6092
+ if (((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & ((1 << (MalloyParser.ALL - 32)) | (1 << (MalloyParser.AVG - 32)) | (1 << (MalloyParser.CAST - 32)) | (1 << (MalloyParser.COUNT - 32)) | (1 << (MalloyParser.DAY - 32)) | (1 << (MalloyParser.EXCLUDE - 32)) | (1 << (MalloyParser.FALSE - 32)) | (1 << (MalloyParser.HOUR - 32)) | (1 << (MalloyParser.MAX - 32)) | (1 << (MalloyParser.MIN - 32)) | (1 << (MalloyParser.MINUTE - 32)))) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & ((1 << (MalloyParser.MONTH - 64)) | (1 << (MalloyParser.NOT - 64)) | (1 << (MalloyParser.NOW - 64)) | (1 << (MalloyParser.NULL - 64)) | (1 << (MalloyParser.PICK - 64)) | (1 << (MalloyParser.QUARTER - 64)) | (1 << (MalloyParser.SECOND - 64)) | (1 << (MalloyParser.SOURCE_KW - 64)) | (1 << (MalloyParser.SUM - 64)) | (1 << (MalloyParser.TRUE - 64)) | (1 << (MalloyParser.WEEK - 64)) | (1 << (MalloyParser.YEAR - 64)) | (1 << (MalloyParser.HACKY_REGEX - 64)) | (1 << (MalloyParser.SQ_STRING - 64)) | (1 << (MalloyParser.DQ_STRING - 64)) | (1 << (MalloyParser.BQ_STRING - 64)))) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & ((1 << (MalloyParser.OPAREN - 101)) | (1 << (MalloyParser.MINUS - 101)) | (1 << (MalloyParser.LITERAL_TIMESTAMP - 101)) | (1 << (MalloyParser.LITERAL_HOUR - 101)))) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & ((1 << (MalloyParser.LITERAL_DAY - 133)) | (1 << (MalloyParser.LITERAL_QUARTER - 133)) | (1 << (MalloyParser.LITERAL_MONTH - 133)) | (1 << (MalloyParser.LITERAL_WEEK - 133)) | (1 << (MalloyParser.LITERAL_YEAR - 133)) | (1 << (MalloyParser.IDENTIFIER - 133)) | (1 << (MalloyParser.NUMERIC_LITERAL - 133)) | (1 << (MalloyParser.INTEGER_LITERAL - 133)) | (1 << (MalloyParser.SQL_BEGIN - 133)))) !== 0)) {
6070
6093
  {
6071
- this.state = 1138;
6094
+ this.state = 1143;
6072
6095
  _localctx._pickValue = this.fieldExpr(0);
6073
6096
  }
6074
6097
  }
6075
- this.state = 1141;
6098
+ this.state = 1146;
6076
6099
  this.match(MalloyParser.WHEN);
6077
- this.state = 1142;
6100
+ this.state = 1147;
6078
6101
  _localctx._pickWhen = this.partialAllowedFieldExpr();
6079
6102
  }
6080
6103
  }
@@ -6102,32 +6125,32 @@ class MalloyParser extends Parser_1.Parser {
6102
6125
  let _alt;
6103
6126
  this.enterOuterAlt(_localctx, 1);
6104
6127
  {
6105
- this.state = 1144;
6106
- this.fieldExpr(0);
6107
6128
  this.state = 1149;
6129
+ this.fieldExpr(0);
6130
+ this.state = 1154;
6108
6131
  this._errHandler.sync(this);
6109
6132
  _alt = this.interpreter.adaptivePredict(this._input, 119, this._ctx);
6110
6133
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
6111
6134
  if (_alt === 1) {
6112
6135
  {
6113
6136
  {
6114
- this.state = 1145;
6137
+ this.state = 1150;
6115
6138
  this.match(MalloyParser.COMMA);
6116
- this.state = 1146;
6139
+ this.state = 1151;
6117
6140
  this.fieldExpr(0);
6118
6141
  }
6119
6142
  }
6120
6143
  }
6121
- this.state = 1151;
6144
+ this.state = 1156;
6122
6145
  this._errHandler.sync(this);
6123
6146
  _alt = this.interpreter.adaptivePredict(this._input, 119, this._ctx);
6124
6147
  }
6125
- this.state = 1153;
6148
+ this.state = 1158;
6126
6149
  this._errHandler.sync(this);
6127
6150
  _la = this._input.LA(1);
6128
6151
  if (_la === MalloyParser.COMMA) {
6129
6152
  {
6130
- this.state = 1152;
6153
+ this.state = 1157;
6131
6154
  this.match(MalloyParser.COMMA);
6132
6155
  }
6133
6156
  }
@@ -6157,30 +6180,30 @@ class MalloyParser extends Parser_1.Parser {
6157
6180
  let _alt;
6158
6181
  this.enterOuterAlt(_localctx, 1);
6159
6182
  {
6160
- this.state = 1155;
6183
+ this.state = 1160;
6161
6184
  this.fieldName();
6162
- this.state = 1162;
6185
+ this.state = 1167;
6163
6186
  this._errHandler.sync(this);
6164
6187
  _alt = this.interpreter.adaptivePredict(this._input, 122, this._ctx);
6165
6188
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
6166
6189
  if (_alt === 1) {
6167
6190
  {
6168
6191
  {
6169
- this.state = 1157;
6192
+ this.state = 1162;
6170
6193
  this._errHandler.sync(this);
6171
6194
  _la = this._input.LA(1);
6172
6195
  if (_la === MalloyParser.COMMA) {
6173
6196
  {
6174
- this.state = 1156;
6197
+ this.state = 1161;
6175
6198
  this.match(MalloyParser.COMMA);
6176
6199
  }
6177
6200
  }
6178
- this.state = 1159;
6201
+ this.state = 1164;
6179
6202
  this.fieldName();
6180
6203
  }
6181
6204
  }
6182
6205
  }
6183
- this.state = 1164;
6206
+ this.state = 1169;
6184
6207
  this._errHandler.sync(this);
6185
6208
  _alt = this.interpreter.adaptivePredict(this._input, 122, this._ctx);
6186
6209
  }
@@ -6210,39 +6233,39 @@ class MalloyParser extends Parser_1.Parser {
6210
6233
  let _alt;
6211
6234
  this.enterOuterAlt(_localctx, 1);
6212
6235
  {
6213
- this.state = 1165;
6236
+ this.state = 1170;
6214
6237
  this.collectionMember();
6215
- this.state = 1172;
6238
+ this.state = 1177;
6216
6239
  this._errHandler.sync(this);
6217
6240
  _alt = this.interpreter.adaptivePredict(this._input, 124, this._ctx);
6218
6241
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
6219
6242
  if (_alt === 1) {
6220
6243
  {
6221
6244
  {
6222
- this.state = 1167;
6245
+ this.state = 1172;
6223
6246
  this._errHandler.sync(this);
6224
6247
  _la = this._input.LA(1);
6225
6248
  if (_la === MalloyParser.COMMA) {
6226
6249
  {
6227
- this.state = 1166;
6250
+ this.state = 1171;
6228
6251
  this.match(MalloyParser.COMMA);
6229
6252
  }
6230
6253
  }
6231
- this.state = 1169;
6254
+ this.state = 1174;
6232
6255
  this.collectionMember();
6233
6256
  }
6234
6257
  }
6235
6258
  }
6236
- this.state = 1174;
6259
+ this.state = 1179;
6237
6260
  this._errHandler.sync(this);
6238
6261
  _alt = this.interpreter.adaptivePredict(this._input, 124, this._ctx);
6239
6262
  }
6240
- this.state = 1176;
6263
+ this.state = 1181;
6241
6264
  this._errHandler.sync(this);
6242
6265
  _la = this._input.LA(1);
6243
6266
  if (_la === MalloyParser.COMMA) {
6244
6267
  {
6245
- this.state = 1175;
6268
+ this.state = 1180;
6246
6269
  this.match(MalloyParser.COMMA);
6247
6270
  }
6248
6271
  }
@@ -6271,18 +6294,18 @@ class MalloyParser extends Parser_1.Parser {
6271
6294
  try {
6272
6295
  this.enterOuterAlt(_localctx, 1);
6273
6296
  {
6274
- this.state = 1181;
6297
+ this.state = 1186;
6275
6298
  this._errHandler.sync(this);
6276
6299
  _la = this._input.LA(1);
6277
6300
  if (_la === MalloyParser.BQ_STRING || _la === MalloyParser.IDENTIFIER) {
6278
6301
  {
6279
- this.state = 1178;
6302
+ this.state = 1183;
6280
6303
  this.fieldPath();
6281
- this.state = 1179;
6304
+ this.state = 1184;
6282
6305
  this.match(MalloyParser.DOT);
6283
6306
  }
6284
6307
  }
6285
- this.state = 1183;
6308
+ this.state = 1188;
6286
6309
  this.match(MalloyParser.STAR);
6287
6310
  }
6288
6311
  }
@@ -6309,16 +6332,16 @@ class MalloyParser extends Parser_1.Parser {
6309
6332
  try {
6310
6333
  this.enterOuterAlt(_localctx, 1);
6311
6334
  {
6312
- this.state = 1185;
6335
+ this.state = 1190;
6313
6336
  this.tags();
6314
- this.state = 1186;
6337
+ this.state = 1191;
6315
6338
  this.fieldPath();
6316
- this.state = 1188;
6339
+ this.state = 1193;
6317
6340
  this._errHandler.sync(this);
6318
6341
  _la = this._input.LA(1);
6319
6342
  if (_la === MalloyParser.DOT) {
6320
6343
  {
6321
- this.state = 1187;
6344
+ this.state = 1192;
6322
6345
  this.refExpr();
6323
6346
  }
6324
6347
  }
@@ -6344,28 +6367,28 @@ class MalloyParser extends Parser_1.Parser {
6344
6367
  let _localctx = new RefExprContext(this._ctx, this.state);
6345
6368
  this.enterRule(_localctx, 238, MalloyParser.RULE_refExpr);
6346
6369
  try {
6347
- this.state = 1197;
6370
+ this.state = 1202;
6348
6371
  this._errHandler.sync(this);
6349
6372
  switch (this.interpreter.adaptivePredict(this._input, 128, this._ctx)) {
6350
6373
  case 1:
6351
6374
  this.enterOuterAlt(_localctx, 1);
6352
6375
  {
6353
- this.state = 1190;
6376
+ this.state = 1195;
6354
6377
  this.match(MalloyParser.DOT);
6355
- this.state = 1191;
6378
+ this.state = 1196;
6356
6379
  this.timeframe();
6357
6380
  }
6358
6381
  break;
6359
6382
  case 2:
6360
6383
  this.enterOuterAlt(_localctx, 2);
6361
6384
  {
6362
- this.state = 1192;
6385
+ this.state = 1197;
6363
6386
  this.match(MalloyParser.DOT);
6364
- this.state = 1193;
6387
+ this.state = 1198;
6365
6388
  this.aggregate();
6366
- this.state = 1194;
6389
+ this.state = 1199;
6367
6390
  this.match(MalloyParser.OPAREN);
6368
- this.state = 1195;
6391
+ this.state = 1200;
6369
6392
  this.match(MalloyParser.CPAREN);
6370
6393
  }
6371
6394
  break;
@@ -6391,27 +6414,27 @@ class MalloyParser extends Parser_1.Parser {
6391
6414
  let _localctx = new CollectionMemberContext(this._ctx, this.state);
6392
6415
  this.enterRule(_localctx, 240, MalloyParser.RULE_collectionMember);
6393
6416
  try {
6394
- this.state = 1202;
6417
+ this.state = 1207;
6395
6418
  this._errHandler.sync(this);
6396
6419
  switch (this.interpreter.adaptivePredict(this._input, 129, this._ctx)) {
6397
6420
  case 1:
6398
6421
  this.enterOuterAlt(_localctx, 1);
6399
6422
  {
6400
- this.state = 1199;
6423
+ this.state = 1204;
6401
6424
  this.taggedRef();
6402
6425
  }
6403
6426
  break;
6404
6427
  case 2:
6405
6428
  this.enterOuterAlt(_localctx, 2);
6406
6429
  {
6407
- this.state = 1200;
6430
+ this.state = 1205;
6408
6431
  this.collectionWildCard();
6409
6432
  }
6410
6433
  break;
6411
6434
  case 3:
6412
6435
  this.enterOuterAlt(_localctx, 3);
6413
6436
  {
6414
- this.state = 1201;
6437
+ this.state = 1206;
6415
6438
  this.fieldDef();
6416
6439
  }
6417
6440
  break;
@@ -6440,23 +6463,23 @@ class MalloyParser extends Parser_1.Parser {
6440
6463
  let _alt;
6441
6464
  this.enterOuterAlt(_localctx, 1);
6442
6465
  {
6443
- this.state = 1204;
6444
- this.fieldName();
6445
6466
  this.state = 1209;
6467
+ this.fieldName();
6468
+ this.state = 1214;
6446
6469
  this._errHandler.sync(this);
6447
6470
  _alt = this.interpreter.adaptivePredict(this._input, 130, this._ctx);
6448
6471
  while (_alt !== 2 && _alt !== ATN_1.ATN.INVALID_ALT_NUMBER) {
6449
6472
  if (_alt === 1) {
6450
6473
  {
6451
6474
  {
6452
- this.state = 1205;
6475
+ this.state = 1210;
6453
6476
  this.match(MalloyParser.DOT);
6454
- this.state = 1206;
6477
+ this.state = 1211;
6455
6478
  this.fieldName();
6456
6479
  }
6457
6480
  }
6458
6481
  }
6459
- this.state = 1211;
6482
+ this.state = 1216;
6460
6483
  this._errHandler.sync(this);
6461
6484
  _alt = this.interpreter.adaptivePredict(this._input, 130, this._ctx);
6462
6485
  }
@@ -6484,7 +6507,7 @@ class MalloyParser extends Parser_1.Parser {
6484
6507
  try {
6485
6508
  this.enterOuterAlt(_localctx, 1);
6486
6509
  {
6487
- this.state = 1212;
6510
+ this.state = 1217;
6488
6511
  this.id();
6489
6512
  }
6490
6513
  }
@@ -6510,7 +6533,7 @@ class MalloyParser extends Parser_1.Parser {
6510
6533
  try {
6511
6534
  this.enterOuterAlt(_localctx, 1);
6512
6535
  {
6513
- this.state = 1214;
6536
+ this.state = 1219;
6514
6537
  this.id();
6515
6538
  }
6516
6539
  }
@@ -6536,9 +6559,9 @@ class MalloyParser extends Parser_1.Parser {
6536
6559
  try {
6537
6560
  this.enterOuterAlt(_localctx, 1);
6538
6561
  {
6539
- this.state = 1216;
6562
+ this.state = 1221;
6540
6563
  this.fieldExpr(0);
6541
- this.state = 1217;
6564
+ this.state = 1222;
6542
6565
  this.match(MalloyParser.EOF);
6543
6566
  }
6544
6567
  }
@@ -6564,7 +6587,7 @@ class MalloyParser extends Parser_1.Parser {
6564
6587
  try {
6565
6588
  this.enterOuterAlt(_localctx, 1);
6566
6589
  {
6567
- this.state = 1219;
6590
+ this.state = 1224;
6568
6591
  this.id();
6569
6592
  }
6570
6593
  }
@@ -6590,7 +6613,7 @@ class MalloyParser extends Parser_1.Parser {
6590
6613
  try {
6591
6614
  this.enterOuterAlt(_localctx, 1);
6592
6615
  {
6593
- this.state = 1221;
6616
+ this.state = 1226;
6594
6617
  this.id();
6595
6618
  }
6596
6619
  }
@@ -6616,7 +6639,7 @@ class MalloyParser extends Parser_1.Parser {
6616
6639
  try {
6617
6640
  this.enterOuterAlt(_localctx, 1);
6618
6641
  {
6619
- this.state = 1223;
6642
+ this.state = 1228;
6620
6643
  this.string();
6621
6644
  }
6622
6645
  }
@@ -6645,37 +6668,37 @@ class MalloyParser extends Parser_1.Parser {
6645
6668
  fieldExpr_sempred(_localctx, predIndex) {
6646
6669
  switch (predIndex) {
6647
6670
  case 0:
6648
- return this.precpred(this._ctx, 20);
6671
+ return this.precpred(this._ctx, 21);
6649
6672
  case 1:
6650
- return this.precpred(this._ctx, 19);
6673
+ return this.precpred(this._ctx, 20);
6651
6674
  case 2:
6652
- return this.precpred(this._ctx, 18);
6675
+ return this.precpred(this._ctx, 19);
6653
6676
  case 3:
6654
- return this.precpred(this._ctx, 14);
6677
+ return this.precpred(this._ctx, 15);
6655
6678
  case 4:
6656
- return this.precpred(this._ctx, 11);
6679
+ return this.precpred(this._ctx, 12);
6657
6680
  case 5:
6658
- return this.precpred(this._ctx, 10);
6681
+ return this.precpred(this._ctx, 11);
6659
6682
  case 6:
6660
- return this.precpred(this._ctx, 9);
6683
+ return this.precpred(this._ctx, 10);
6661
6684
  case 7:
6662
- return this.precpred(this._ctx, 27);
6685
+ return this.precpred(this._ctx, 28);
6663
6686
  case 8:
6664
- return this.precpred(this._ctx, 25);
6687
+ return this.precpred(this._ctx, 26);
6665
6688
  case 9:
6666
- return this.precpred(this._ctx, 24);
6689
+ return this.precpred(this._ctx, 25);
6667
6690
  case 10:
6668
- return this.precpred(this._ctx, 23);
6691
+ return this.precpred(this._ctx, 24);
6669
6692
  case 11:
6670
- return this.precpred(this._ctx, 22);
6693
+ return this.precpred(this._ctx, 23);
6671
6694
  case 12:
6672
- return this.precpred(this._ctx, 17);
6695
+ return this.precpred(this._ctx, 18);
6673
6696
  case 13:
6674
- return this.precpred(this._ctx, 16);
6697
+ return this.precpred(this._ctx, 17);
6675
6698
  case 14:
6676
- return this.precpred(this._ctx, 15);
6699
+ return this.precpred(this._ctx, 16);
6677
6700
  case 15:
6678
- return this.precpred(this._ctx, 13);
6701
+ return this.precpred(this._ctx, 14);
6679
6702
  }
6680
6703
  return true;
6681
6704
  }
@@ -6762,80 +6785,81 @@ MalloyParser.QUARTER = 72;
6762
6785
  MalloyParser.REFINE = 73;
6763
6786
  MalloyParser.SECOND = 74;
6764
6787
  MalloyParser.STRING = 75;
6765
- MalloyParser.SUM = 76;
6766
- MalloyParser.SQL = 77;
6767
- MalloyParser.TABLE = 78;
6768
- MalloyParser.THEN = 79;
6769
- MalloyParser.THIS = 80;
6770
- MalloyParser.TIMESTAMP = 81;
6771
- MalloyParser.TO = 82;
6772
- MalloyParser.TRUE = 83;
6773
- MalloyParser.TURTLE = 84;
6774
- MalloyParser.WEEK = 85;
6775
- MalloyParser.WHEN = 86;
6776
- MalloyParser.WITH = 87;
6777
- MalloyParser.YEAR = 88;
6778
- MalloyParser.UNGROUPED = 89;
6779
- MalloyParser.STRING_ESCAPE = 90;
6780
- MalloyParser.HACKY_REGEX = 91;
6781
- MalloyParser.SQ_STRING = 92;
6782
- MalloyParser.DQ_STRING = 93;
6783
- MalloyParser.BQ_STRING = 94;
6784
- MalloyParser.DOC_ANNOTATION = 95;
6785
- MalloyParser.ANNOTATION = 96;
6786
- MalloyParser.AMPER = 97;
6787
- MalloyParser.ARROW = 98;
6788
- MalloyParser.FAT_ARROW = 99;
6789
- MalloyParser.OPAREN = 100;
6790
- MalloyParser.CPAREN = 101;
6791
- MalloyParser.OBRACK = 102;
6792
- MalloyParser.CBRACK = 103;
6793
- MalloyParser.OCURLY = 104;
6794
- MalloyParser.CCURLY = 105;
6795
- MalloyParser.DOUBLECOLON = 106;
6796
- MalloyParser.TRIPLECOLON = 107;
6797
- MalloyParser.EXCLAM = 108;
6798
- MalloyParser.COLON = 109;
6799
- MalloyParser.COMMA = 110;
6800
- MalloyParser.DOT = 111;
6801
- MalloyParser.LT = 112;
6802
- MalloyParser.GT = 113;
6803
- MalloyParser.EQ = 114;
6804
- MalloyParser.NE = 115;
6805
- MalloyParser.LTE = 116;
6806
- MalloyParser.GTE = 117;
6807
- MalloyParser.PLUS = 118;
6808
- MalloyParser.MINUS = 119;
6809
- MalloyParser.STAR = 120;
6810
- MalloyParser.STARSTAR = 121;
6811
- MalloyParser.SLASH = 122;
6812
- MalloyParser.BAR = 123;
6813
- MalloyParser.SEMI = 124;
6814
- MalloyParser.NOT_MATCH = 125;
6815
- MalloyParser.MATCH = 126;
6816
- MalloyParser.PERCENT = 127;
6817
- MalloyParser.DOUBLE_QMARK = 128;
6818
- MalloyParser.QMARK = 129;
6819
- MalloyParser.LITERAL_TIMESTAMP = 130;
6820
- MalloyParser.LITERAL_HOUR = 131;
6821
- MalloyParser.LITERAL_DAY = 132;
6822
- MalloyParser.LITERAL_QUARTER = 133;
6823
- MalloyParser.LITERAL_MONTH = 134;
6824
- MalloyParser.LITERAL_WEEK = 135;
6825
- MalloyParser.LITERAL_YEAR = 136;
6826
- MalloyParser.IDENTIFIER = 137;
6827
- MalloyParser.PERCENT_LITERAL = 138;
6828
- MalloyParser.NUMERIC_LITERAL = 139;
6829
- MalloyParser.INTEGER_LITERAL = 140;
6830
- MalloyParser.BLOCK_COMMENT = 141;
6831
- MalloyParser.COMMENT_TO_EOL = 142;
6832
- MalloyParser.WHITE_SPACE = 143;
6833
- MalloyParser.SQL_BEGIN = 144;
6834
- MalloyParser.CLOSE_CODE = 145;
6835
- MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 146;
6836
- MalloyParser.UNEXPECTED_CHAR = 147;
6837
- MalloyParser.OPEN_CODE = 148;
6838
- MalloyParser.SQL_END = 149;
6788
+ MalloyParser.SOURCE_KW = 76;
6789
+ MalloyParser.SUM = 77;
6790
+ MalloyParser.SQL = 78;
6791
+ MalloyParser.TABLE = 79;
6792
+ MalloyParser.THEN = 80;
6793
+ MalloyParser.THIS = 81;
6794
+ MalloyParser.TIMESTAMP = 82;
6795
+ MalloyParser.TO = 83;
6796
+ MalloyParser.TRUE = 84;
6797
+ MalloyParser.TURTLE = 85;
6798
+ MalloyParser.WEEK = 86;
6799
+ MalloyParser.WHEN = 87;
6800
+ MalloyParser.WITH = 88;
6801
+ MalloyParser.YEAR = 89;
6802
+ MalloyParser.UNGROUPED = 90;
6803
+ MalloyParser.STRING_ESCAPE = 91;
6804
+ MalloyParser.HACKY_REGEX = 92;
6805
+ MalloyParser.SQ_STRING = 93;
6806
+ MalloyParser.DQ_STRING = 94;
6807
+ MalloyParser.BQ_STRING = 95;
6808
+ MalloyParser.DOC_ANNOTATION = 96;
6809
+ MalloyParser.ANNOTATION = 97;
6810
+ MalloyParser.AMPER = 98;
6811
+ MalloyParser.ARROW = 99;
6812
+ MalloyParser.FAT_ARROW = 100;
6813
+ MalloyParser.OPAREN = 101;
6814
+ MalloyParser.CPAREN = 102;
6815
+ MalloyParser.OBRACK = 103;
6816
+ MalloyParser.CBRACK = 104;
6817
+ MalloyParser.OCURLY = 105;
6818
+ MalloyParser.CCURLY = 106;
6819
+ MalloyParser.DOUBLECOLON = 107;
6820
+ MalloyParser.TRIPLECOLON = 108;
6821
+ MalloyParser.EXCLAM = 109;
6822
+ MalloyParser.COLON = 110;
6823
+ MalloyParser.COMMA = 111;
6824
+ MalloyParser.DOT = 112;
6825
+ MalloyParser.LT = 113;
6826
+ MalloyParser.GT = 114;
6827
+ MalloyParser.EQ = 115;
6828
+ MalloyParser.NE = 116;
6829
+ MalloyParser.LTE = 117;
6830
+ MalloyParser.GTE = 118;
6831
+ MalloyParser.PLUS = 119;
6832
+ MalloyParser.MINUS = 120;
6833
+ MalloyParser.STAR = 121;
6834
+ MalloyParser.STARSTAR = 122;
6835
+ MalloyParser.SLASH = 123;
6836
+ MalloyParser.BAR = 124;
6837
+ MalloyParser.SEMI = 125;
6838
+ MalloyParser.NOT_MATCH = 126;
6839
+ MalloyParser.MATCH = 127;
6840
+ MalloyParser.PERCENT = 128;
6841
+ MalloyParser.DOUBLE_QMARK = 129;
6842
+ MalloyParser.QMARK = 130;
6843
+ MalloyParser.LITERAL_TIMESTAMP = 131;
6844
+ MalloyParser.LITERAL_HOUR = 132;
6845
+ MalloyParser.LITERAL_DAY = 133;
6846
+ MalloyParser.LITERAL_QUARTER = 134;
6847
+ MalloyParser.LITERAL_MONTH = 135;
6848
+ MalloyParser.LITERAL_WEEK = 136;
6849
+ MalloyParser.LITERAL_YEAR = 137;
6850
+ MalloyParser.IDENTIFIER = 138;
6851
+ MalloyParser.PERCENT_LITERAL = 139;
6852
+ MalloyParser.NUMERIC_LITERAL = 140;
6853
+ MalloyParser.INTEGER_LITERAL = 141;
6854
+ MalloyParser.BLOCK_COMMENT = 142;
6855
+ MalloyParser.COMMENT_TO_EOL = 143;
6856
+ MalloyParser.WHITE_SPACE = 144;
6857
+ MalloyParser.SQL_BEGIN = 145;
6858
+ MalloyParser.CLOSE_CODE = 146;
6859
+ MalloyParser.UNWATED_CHARS_TRAILING_NUMBERS = 147;
6860
+ MalloyParser.UNEXPECTED_CHAR = 148;
6861
+ MalloyParser.OPEN_CODE = 149;
6862
+ MalloyParser.SQL_END = 150;
6839
6863
  MalloyParser.RULE_malloyDocument = 0;
6840
6864
  MalloyParser.RULE_malloyStatement = 1;
6841
6865
  MalloyParser.RULE_defineSourceStatement = 2;
@@ -7009,11 +7033,11 @@ MalloyParser._LITERAL_NAMES = [
7009
7033
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
7010
7034
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
7011
7035
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
7012
- undefined, undefined, undefined, undefined, undefined, undefined, "'&'",
7013
- "'->'", "'=>'", "'('", "')'", "'['", "']'", "'{'", "'}'", "'::'", "':::'",
7014
- "'!'", "':'", "','", "'.'", "'<'", "'>'", "'='", "'!='", "'<='", "'>='",
7015
- "'+'", "'-'", "'*'", "'**'", "'/'", "'|'", "';'", "'!~'", "'~'", "'%'",
7016
- "'??'", "'?'", undefined, undefined, undefined, undefined, undefined,
7036
+ undefined, undefined, undefined, undefined, undefined, undefined, undefined,
7037
+ "'&'", "'->'", "'=>'", "'('", "')'", "'['", "']'", "'{'", "'}'", "'::'",
7038
+ "':::'", "'!'", "':'", "','", "'.'", "'<'", "'>'", "'='", "'!='", "'<='",
7039
+ "'>='", "'+'", "'-'", "'*'", "'**'", "'/'", "'|'", "';'", "'!~'", "'~'",
7040
+ "'%'", "'??'", "'?'", undefined, undefined, undefined, undefined, undefined,
7017
7041
  undefined, undefined, undefined, undefined, undefined, undefined, undefined,
7018
7042
  undefined, undefined, "'\"\"\"'", "'}%'",
7019
7043
  ];
@@ -7027,22 +7051,23 @@ MalloyParser._SYMBOLIC_NAMES = [
7027
7051
  "DAY", "DESC", "DISTINCT", "ELSE", "END", "EXCLUDE", "EXTEND", "FALSE",
7028
7052
  "FOR", "FROM", "FROM_SQL", "HAS", "HOUR", "IMPORT", "IS", "JSON", "LAST",
7029
7053
  "MAX", "MIN", "MINUTE", "MONTH", "NOT", "NOW", "NULL", "NUMBER", "ON",
7030
- "OR", "PICK", "QUARTER", "REFINE", "SECOND", "STRING", "SUM", "SQL", "TABLE",
7031
- "THEN", "THIS", "TIMESTAMP", "TO", "TRUE", "TURTLE", "WEEK", "WHEN", "WITH",
7032
- "YEAR", "UNGROUPED", "STRING_ESCAPE", "HACKY_REGEX", "SQ_STRING", "DQ_STRING",
7033
- "BQ_STRING", "DOC_ANNOTATION", "ANNOTATION", "AMPER", "ARROW", "FAT_ARROW",
7034
- "OPAREN", "CPAREN", "OBRACK", "CBRACK", "OCURLY", "CCURLY", "DOUBLECOLON",
7035
- "TRIPLECOLON", "EXCLAM", "COLON", "COMMA", "DOT", "LT", "GT", "EQ", "NE",
7036
- "LTE", "GTE", "PLUS", "MINUS", "STAR", "STARSTAR", "SLASH", "BAR", "SEMI",
7037
- "NOT_MATCH", "MATCH", "PERCENT", "DOUBLE_QMARK", "QMARK", "LITERAL_TIMESTAMP",
7038
- "LITERAL_HOUR", "LITERAL_DAY", "LITERAL_QUARTER", "LITERAL_MONTH", "LITERAL_WEEK",
7039
- "LITERAL_YEAR", "IDENTIFIER", "PERCENT_LITERAL", "NUMERIC_LITERAL", "INTEGER_LITERAL",
7040
- "BLOCK_COMMENT", "COMMENT_TO_EOL", "WHITE_SPACE", "SQL_BEGIN", "CLOSE_CODE",
7041
- "UNWATED_CHARS_TRAILING_NUMBERS", "UNEXPECTED_CHAR", "OPEN_CODE", "SQL_END",
7054
+ "OR", "PICK", "QUARTER", "REFINE", "SECOND", "STRING", "SOURCE_KW", "SUM",
7055
+ "SQL", "TABLE", "THEN", "THIS", "TIMESTAMP", "TO", "TRUE", "TURTLE", "WEEK",
7056
+ "WHEN", "WITH", "YEAR", "UNGROUPED", "STRING_ESCAPE", "HACKY_REGEX", "SQ_STRING",
7057
+ "DQ_STRING", "BQ_STRING", "DOC_ANNOTATION", "ANNOTATION", "AMPER", "ARROW",
7058
+ "FAT_ARROW", "OPAREN", "CPAREN", "OBRACK", "CBRACK", "OCURLY", "CCURLY",
7059
+ "DOUBLECOLON", "TRIPLECOLON", "EXCLAM", "COLON", "COMMA", "DOT", "LT",
7060
+ "GT", "EQ", "NE", "LTE", "GTE", "PLUS", "MINUS", "STAR", "STARSTAR", "SLASH",
7061
+ "BAR", "SEMI", "NOT_MATCH", "MATCH", "PERCENT", "DOUBLE_QMARK", "QMARK",
7062
+ "LITERAL_TIMESTAMP", "LITERAL_HOUR", "LITERAL_DAY", "LITERAL_QUARTER",
7063
+ "LITERAL_MONTH", "LITERAL_WEEK", "LITERAL_YEAR", "IDENTIFIER", "PERCENT_LITERAL",
7064
+ "NUMERIC_LITERAL", "INTEGER_LITERAL", "BLOCK_COMMENT", "COMMENT_TO_EOL",
7065
+ "WHITE_SPACE", "SQL_BEGIN", "CLOSE_CODE", "UNWATED_CHARS_TRAILING_NUMBERS",
7066
+ "UNEXPECTED_CHAR", "OPEN_CODE", "SQL_END",
7042
7067
  ];
7043
7068
  MalloyParser.VOCABULARY = new VocabularyImpl_1.VocabularyImpl(MalloyParser._LITERAL_NAMES, MalloyParser._SYMBOLIC_NAMES, []);
7044
7069
  MalloyParser._serializedATNSegments = 3;
7045
- MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x97\u04CC\x04" +
7070
+ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03\x98\u04D1\x04" +
7046
7071
  "\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04" +
7047
7072
  "\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r" +
7048
7073
  "\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12" +
@@ -7127,345 +7152,345 @@ MalloyParser._serializedATNSegment0 = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\
7127
7152
  "h\u03BC\nh\x03i\x03i\x03i\x03i\x03i\x03i\x03i\x05i\u03C5\ni\x03j\x03j" +
7128
7153
  "\x03k\x03k\x03l\x03l\x03m\x03m\x03n\x03n\x03o\x03o\x05o\u03D3\no\x03p" +
7129
7154
  "\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7130
- "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x05p\u03EC\np\x03p\x03p\x03" +
7131
- "p\x03p\x05p\u03F2\np\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x05" +
7132
- "p\u03FD\np\x03p\x03p\x03p\x05p\u0402\np\x03p\x03p\x03p\x03p\x03p\x05p" +
7133
- "\u0409\np\x05p\u040B\np\x03p\x05p\u040E\np\x03p\x03p\x05p\u0412\np\x03" +
7134
- "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x07p\u041C\np\fp\x0Ep\u041F\vp\x03" +
7135
- "p\x03p\x05p\u0423\np\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7136
- "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7155
+ "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x05p\u03EB\np\x03p\x03p\x03p\x03" +
7156
+ "p\x05p\u03F1\np\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x05p\u03FA\np\x03p" +
7157
+ "\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x05p\u0407\np\x03p" +
7158
+ "\x03p\x03p\x03p\x03p\x05p\u040E\np\x05p\u0410\np\x03p\x05p\u0413\np\x03" +
7159
+ "p\x03p\x05p\u0417\np\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x07p\u0421" +
7160
+ "\np\fp\x0Ep\u0424\vp\x03p\x03p\x05p\u0428\np\x03p\x03p\x03p\x03p\x03p" +
7161
+ "\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7137
7162
  "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7138
7163
  "p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03" +
7139
- "p\x07p\u0459\np\fp\x0Ep\u045C\vp\x03q\x03q\x05q\u0460\nq\x03q\x03q\x03" +
7140
- "q\x03q\x05q\u0466\nq\x03q\x05q\u0469\nq\x03r\x06r\u046C\nr\rr\x0Er\u046D" +
7141
- "\x03r\x03r\x05r\u0472\nr\x03s\x03s\x05s\u0476\ns\x03s\x03s\x03s\x03t\x03" +
7142
- "t\x03t\x07t\u047E\nt\ft\x0Et\u0481\vt\x03t\x05t\u0484\nt\x03u\x03u\x05" +
7143
- "u\u0488\nu\x03u\x07u\u048B\nu\fu\x0Eu\u048E\vu\x03v\x03v\x05v\u0492\n" +
7144
- "v\x03v\x07v\u0495\nv\fv\x0Ev\u0498\vv\x03v\x05v\u049B\nv\x03w\x03w\x03" +
7145
- "w\x05w\u04A0\nw\x03w\x03w\x03x\x03x\x03x\x05x\u04A7\nx\x03y\x03y\x03y" +
7146
- "\x03y\x03y\x03y\x03y\x05y\u04B0\ny\x03z\x03z\x03z\x05z\u04B5\nz\x03{\x03" +
7147
- "{\x03{\x07{\u04BA\n{\f{\x0E{\u04BD\v{\x03|\x03|\x03}\x03}\x03~\x03~\x03" +
7148
- "~\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x81\x03\x81\x03\x81\x02\x02\x03" +
7149
- "\xDE\x82\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12" +
7150
- "\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&" +
7151
- "\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02@\x02" +
7152
- "B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02\\\x02" +
7153
- "^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02r\x02t\x02v\x02x\x02" +
7154
- "z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88\x02\x8A\x02\x8C\x02" +
7155
- "\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A\x02\x9C\x02\x9E\x02" +
7156
- "\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC\x02\xAE\x02\xB0\x02" +
7157
- "\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC2\x02" +
7158
- "\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02\xCE\x02\xD0\x02\xD2\x02\xD4\x02" +
7159
- "\xD6\x02\xD8\x02\xDA\x02\xDC\x02\xDE\x02\xE0\x02\xE2\x02\xE4\x02\xE6\x02" +
7160
- "\xE8\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02\xF2\x02\xF4\x02\xF6\x02\xF8\x02" +
7161
- "\xFA\x02\xFC\x02\xFE\x02\u0100\x02\x02\x13\x04\x02kk\x93\x93\x04\x02d" +
7162
- "dqq\x04\x02\x03\x03\n\n\x04\x02\x17\x17\x1C\x1C\x04\x02%%//\x06\x0255" +
7163
- "UU\x8C\x8C\x8E\x8E\x06\x02&&,,?@NN\x07\x02\'\'--FFMMSS\x04\x02rw\x7F\x80" +
7164
- "\x03\x02^_\x03\x02\x8D\x8E\x04\x0255UU\x04\x02``\x8B\x8B\t\x02..::ABJ" +
7165
- "JLLWWZZ\x04\x02\"\"33\x05\x02zz||\x81\x81\x03\x02xy\x02\u0516\x02\u0106" +
7166
- "\x03\x02\x02\x02\x04\u0112\x03\x02\x02\x02\x06\u0114\x03\x02\x02\x02\b" +
7167
- "\u011D\x03\x02\x02\x02\n\u011F\x03\x02\x02\x02\f\u0125\x03\x02\x02\x02" +
7168
- "\x0E\u0128\x03\x02\x02\x02\x10\u012C\x03\x02\x02\x02\x12\u0131\x03\x02" +
7169
- "\x02\x02\x14\u0136\x03\x02\x02\x02\x16\u0142\x03\x02\x02\x02\x18\u0144" +
7170
- "\x03\x02\x02\x02\x1A\u014D\x03\x02\x02\x02\x1C\u0151\x03\x02\x02\x02\x1E" +
7171
- "\u0157\x03\x02\x02\x02 \u0163\x03\x02\x02\x02\"\u0168\x03\x02\x02\x02" +
7172
- "$\u016B\x03\x02\x02\x02&\u0170\x03\x02\x02\x02(\u0175\x03\x02\x02\x02" +
7173
- "*\u0179\x03\x02\x02\x02,\u0188\x03\x02\x02\x02.\u018D\x03\x02\x02\x02" +
7174
- "0\u0195\x03\x02\x02\x022\u019D\x03\x02\x02\x024\u01A7\x03\x02\x02\x02" +
7175
- "6\u01B3\x03\x02\x02\x028\u01BD\x03\x02\x02\x02:\u01BF\x03\x02\x02\x02" +
7176
- "<\u01D0\x03\x02\x02\x02>\u01D2\x03\x02\x02\x02@\u01DC\x03\x02\x02\x02" +
7177
- "B\u01EB\x03\x02\x02\x02D\u01ED\x03\x02\x02\x02F\u01FC\x03\x02\x02\x02" +
7178
- "H\u01FE\x03\x02\x02\x02J\u020A\x03\x02\x02\x02L\u020C\x03\x02\x02\x02" +
7179
- "N\u0211\x03\x02\x02\x02P\u0213\x03\x02\x02\x02R\u0215\x03\x02\x02\x02" +
7180
- "T\u0222\x03\x02\x02\x02V\u022B\x03\x02\x02\x02X\u022D\x03\x02\x02\x02" +
7181
- "Z\u022F\x03\x02\x02\x02\\\u023B\x03\x02\x02\x02^\u0253\x03\x02\x02\x02" +
7182
- "`\u0255\x03\x02\x02\x02b\u0259\x03\x02\x02\x02d\u025D\x03\x02\x02\x02" +
7183
- "f\u026A\x03\x02\x02\x02h\u026E\x03\x02\x02\x02j\u027B\x03\x02\x02\x02" +
7184
- "l\u0280\x03\x02\x02\x02n\u0282\x03\x02\x02\x02p\u0284\x03\x02\x02\x02" +
7185
- "r\u0293\x03\x02\x02\x02t\u0295\x03\x02\x02\x02v\u029B\x03\x02\x02\x02" +
7186
- "x\u029D\x03\x02\x02\x02z\u02A7\x03\x02\x02\x02|\u02B4\x03\x02\x02\x02" +
7187
- "~\u02D4\x03\x02\x02\x02\x80\u02D6\x03\x02\x02\x02\x82\u02DA\x03\x02\x02" +
7188
- "\x02\x84\u02DF\x03\x02\x02\x02\x86\u02E1\x03\x02\x02\x02\x88\u02EC\x03" +
7189
- "\x02\x02\x02\x8A\u02EF\x03\x02\x02\x02\x8C\u02F2\x03\x02\x02\x02\x8E\u02FF" +
7190
- "\x03\x02\x02\x02\x90\u0304\x03\x02\x02\x02\x92\u031D\x03\x02\x02\x02\x94" +
7191
- "\u031F\x03\x02\x02\x02\x96\u0321\x03\x02\x02\x02\x98\u0325\x03\x02\x02" +
7192
- "\x02\x9A\u0334\x03\x02\x02\x02\x9C\u0336\x03\x02\x02\x02\x9E\u033A\x03" +
7193
- "\x02\x02\x02\xA0\u0351\x03\x02\x02\x02\xA2\u0353\x03\x02\x02\x02\xA4\u0357" +
7194
- "\x03\x02\x02\x02\xA6\u035B\x03\x02\x02\x02\xA8\u035F\x03\x02\x02\x02\xAA" +
7195
- "\u0362\x03\x02\x02\x02\xAC\u0371\x03\x02\x02\x02\xAE\u0376\x03\x02\x02" +
7196
- "\x02\xB0\u037D\x03\x02\x02\x02\xB2\u037F\x03\x02\x02\x02\xB4\u038A\x03" +
7197
- "\x02\x02\x02\xB6\u038C\x03\x02\x02\x02\xB8\u0396\x03\x02\x02\x02\xBA\u039C" +
7198
- "\x03\x02\x02\x02\xBC\u039F\x03\x02\x02\x02\xBE\u03A2\x03\x02\x02\x02\xC0" +
7199
- "\u03A4\x03\x02\x02\x02\xC2\u03A6\x03\x02\x02\x02\xC4\u03A8\x03\x02\x02" +
7200
- "\x02\xC6\u03AA\x03\x02\x02\x02\xC8\u03AE\x03\x02\x02\x02\xCA\u03B0\x03" +
7201
- "\x02\x02\x02\xCC\u03B2\x03\x02\x02\x02\xCE\u03BB\x03\x02\x02\x02\xD0\u03C4" +
7202
- "\x03\x02\x02\x02\xD2\u03C6\x03\x02\x02\x02\xD4\u03C8\x03\x02\x02\x02\xD6" +
7203
- "\u03CA\x03\x02\x02\x02\xD8\u03CC\x03\x02\x02\x02\xDA\u03CE\x03\x02\x02" +
7204
- "\x02\xDC\u03D2\x03\x02\x02\x02\xDE\u0422\x03\x02\x02\x02\xE0\u0468\x03" +
7205
- "\x02\x02\x02\xE2\u046B\x03\x02\x02\x02\xE4\u0473\x03\x02\x02\x02\xE6\u047A" +
7206
- "\x03\x02\x02\x02\xE8\u0485\x03\x02\x02\x02\xEA\u048F\x03\x02\x02\x02\xEC" +
7207
- "\u049F\x03\x02\x02\x02\xEE\u04A3\x03\x02\x02\x02\xF0\u04AF\x03\x02\x02" +
7208
- "\x02\xF2\u04B4\x03\x02\x02\x02\xF4\u04B6\x03\x02\x02\x02\xF6\u04BE\x03" +
7209
- "\x02\x02\x02\xF8\u04C0\x03\x02\x02\x02\xFA\u04C2\x03\x02\x02\x02\xFC\u04C5" +
7210
- "\x03\x02\x02\x02\xFE\u04C7\x03\x02\x02\x02\u0100\u04C9\x03\x02\x02\x02" +
7211
- "\u0102\u0105\x05\x04\x03\x02\u0103\u0105\x07~\x02\x02\u0104\u0102\x03" +
7212
- "\x02\x02\x02\u0104\u0103\x03\x02\x02\x02\u0105\u0108\x03\x02\x02\x02\u0106" +
7213
- "\u0104\x03\x02\x02\x02\u0106\u0107\x03\x02\x02\x02\u0107\u0109\x03\x02" +
7214
- "\x02\x02\u0108\u0106\x03\x02\x02\x02\u0109\u010A\x07\x02\x02\x03\u010A" +
7215
- "\x03\x03\x02\x02\x02\u010B\u0113\x05\x06\x04\x02\u010C\u0113\x05\x12\n" +
7216
- "\x02\u010D\u0113\x05\b\x05\x02\u010E\u0113\x05\x1C\x0F\x02\u010F\u0113" +
7217
- "\x05\x10\t\x02\u0110\u0113\x05$\x13\x02\u0111\u0113\x05&\x14\x02\u0112" +
7218
- "\u010B\x03\x02\x02\x02\u0112\u010C\x03\x02\x02\x02\u0112\u010D\x03\x02" +
7219
- "\x02\x02\u0112\u010E\x03\x02\x02\x02\u0112\u010F\x03\x02\x02\x02\u0112" +
7220
- "\u0110\x03\x02\x02\x02\u0112\u0111\x03\x02\x02\x02\u0113\x05\x03\x02\x02" +
7221
- "\x02\u0114\u0115\x05\f\x07\x02\u0115\u0116\x07\x1D\x02\x02\u0116\u0117" +
7222
- "\x05R*\x02\u0117\x07\x03\x02\x02\x02\u0118\u011E\x05*\x16\x02\u0119\u011A" +
7223
- "\x05\f\x07\x02\u011A\u011B\x07\x18\x02\x02\u011B\u011C\x05\n\x06\x02\u011C" +
7224
- "\u011E\x03\x02\x02\x02\u011D\u0118\x03\x02\x02\x02\u011D\u0119\x03\x02" +
7225
- "\x02\x02\u011E\t\x03\x02\x02\x02\u011F\u0120\x05\f\x07\x02\u0120\u0121" +
7226
- "\x054\x1B\x02\u0121\v\x03\x02\x02\x02\u0122\u0124\x07b\x02\x02\u0123\u0122" +
7227
- "\x03\x02\x02\x02\u0124\u0127\x03\x02\x02\x02\u0125\u0123\x03\x02\x02\x02" +
7228
- "\u0125\u0126\x03\x02\x02\x02\u0126\r\x03\x02\x02\x02\u0127\u0125\x03\x02" +
7229
- "\x02\x02\u0128\u0129\x05\f\x07\x02\u0129\u012A\x07<\x02\x02\u012A\u012B" +
7230
- "\x05\f\x07\x02\u012B\x0F\x03\x02\x02\x02\u012C\u012D\x05\f\x07\x02\u012D" +
7231
- "\u012E\x07\x1A\x02\x02\u012E\u012F\x05\f\x07\x02\u012F\u0130\x05\n\x06" +
7232
- "\x02\u0130\x11\x03\x02\x02\x02\u0131\u0132\x07\x1E\x02\x02\u0132\u0133" +
7233
- "\x05\xFE\x80\x02\u0133\u0134\x05\x0E\b\x02\u0134\u0135\x05\x14\v\x02\u0135" +
7234
- "\x13\x03\x02\x02\x02\u0136\u0138\x07j\x02\x02\u0137\u0139\x05\x16\f\x02" +
7235
- "\u0138\u0137\x03\x02\x02\x02\u0139\u013A\x03\x02\x02\x02\u013A\u0138\x03" +
7236
- "\x02\x02\x02\u013A\u013B\x03\x02\x02\x02\u013B\u013C\x03\x02\x02\x02\u013C" +
7237
- "\u013D\x07k\x02\x02\u013D\x15\x03\x02\x02\x02\u013E\u013F\x07\x07\x02" +
7238
- "\x02\u013F\u0143\x05\u0100\x81\x02\u0140\u0141\x07\x1C\x02\x02\u0141\u0143" +
7239
- "\x05\x18\r\x02\u0142\u013E\x03\x02\x02\x02\u0142\u0140\x03\x02\x02\x02" +
7240
- "\u0143\x17\x03\x02\x02\x02\u0144\u0148\x07\x92\x02\x02\u0145\u0147\x05" +
7241
- "\x1A\x0E\x02\u0146\u0145\x03\x02\x02\x02\u0147\u014A\x03\x02\x02\x02\u0148" +
7242
- "\u0146\x03\x02\x02\x02\u0148\u0149\x03\x02\x02\x02\u0149\u014B\x03\x02" +
7243
- "\x02\x02\u014A\u0148\x03\x02\x02\x02\u014B\u014C\x07\x97\x02\x02\u014C" +
7244
- "\x19\x03\x02\x02\x02\u014D\u014E\x07\x96\x02\x02\u014E\u014F\x054\x1B" +
7245
- "\x02\u014F\u0150\t\x02\x02\x02\u0150\x1B\x03\x02\x02\x02\u0151\u0153\x07" +
7246
- ";\x02\x02\u0152\u0154\x05\x1E\x10\x02\u0153\u0152\x03\x02\x02\x02\u0153" +
7247
- "\u0154\x03\x02\x02\x02\u0154\u0155\x03\x02\x02\x02\u0155\u0156\x05\"\x12" +
7248
- "\x02\u0156\x1D\x03\x02\x02\x02\u0157\u0158\x07j\x02\x02\u0158\u015D\x05" +
7249
- " \x11\x02\u0159\u015A\x07p\x02\x02\u015A\u015C\x05 \x11\x02\u015B\u0159" +
7250
- "\x03\x02\x02\x02\u015C\u015F\x03\x02\x02\x02\u015D\u015B\x03\x02\x02\x02" +
7251
- "\u015D\u015E\x03\x02\x02\x02\u015E\u0160\x03\x02\x02\x02\u015F\u015D\x03" +
7252
- "\x02\x02\x02\u0160\u0161\x07k\x02\x02\u0161\u0162\x077\x02\x02\u0162\x1F" +
7253
- "\x03\x02\x02\x02\u0163\u0166\x05\xD6l\x02\u0164\u0165\x07<\x02\x02\u0165" +
7254
- "\u0167\x05\xD6l\x02\u0166\u0164\x03\x02\x02\x02\u0166\u0167\x03\x02\x02" +
7255
- "\x02\u0167!\x03\x02\x02\x02\u0168\u0169\x05\xC8e\x02\u0169#\x03\x02\x02" +
7256
- "\x02\u016A\u016C\x07a\x02\x02\u016B\u016A\x03\x02\x02\x02\u016C\u016D" +
7257
- "\x03\x02\x02\x02\u016D\u016B\x03\x02\x02\x02\u016D\u016E\x03\x02\x02\x02" +
7258
- "\u016E%\x03\x02\x02\x02\u016F\u0171\x07b\x02\x02\u0170\u016F\x03\x02\x02" +
7259
- "\x02\u0171\u0172\x03\x02\x02\x02\u0172\u0170\x03\x02\x02\x02\u0172\u0173" +
7260
- "\x03\x02\x02\x02\u0173\'\x03\x02\x02\x02\u0174\u0176\x07a\x02\x02\u0175" +
7261
- "\u0174\x03\x02\x02\x02\u0176\u0177\x03\x02\x02\x02\u0177\u0175\x03\x02" +
7262
- "\x02\x02\u0177\u0178\x03\x02\x02\x02\u0178)\x03\x02\x02\x02\u0179\u017A" +
7263
- "\x05\f\x07\x02\u017A\u017B\x07\x18\x02\x02\u017B\u0182\x05,\x17\x02\u017C" +
7264
- "\u017E\x07p\x02\x02\u017D\u017C\x03\x02\x02\x02\u017D\u017E\x03\x02\x02" +
7265
- "\x02\u017E\u017F\x03\x02\x02\x02\u017F\u0181\x05,\x17\x02\u0180\u017D" +
7266
- "\x03\x02\x02\x02\u0181\u0184\x03\x02\x02\x02\u0182\u0180\x03\x02\x02\x02" +
7267
- "\u0182\u0183\x03\x02\x02\x02\u0183\u0186\x03\x02\x02\x02\u0184\u0182\x03" +
7268
- "\x02\x02\x02\u0185\u0187\x07p\x02\x02\u0186\u0185\x03\x02\x02\x02\u0186" +
7269
- "\u0187\x03\x02\x02\x02\u0187+\x03\x02\x02\x02\u0188\u0189\x05\f\x07\x02" +
7270
- "\u0189\u018A\x05P)\x02\u018A\u018B\x05\x0E\b\x02\u018B\u018C\x054\x1B" +
7271
- "\x02\u018C-\x03\x02\x02\x02\u018D\u018E\x07x\x02\x02\u018E/\x03\x02\x02" +
7272
- "\x02\u018F\u0191\x05.\x18\x02\u0190\u018F\x03\x02\x02\x02\u0190\u0191" +
7273
- "\x03\x02\x02\x02\u0191\u0192\x03\x02\x02\x02\u0192\u0196\x05J&\x02\u0193" +
7274
- "\u0194\x07K\x02\x02\u0194\u0196\x05J&\x02\u0195\u0190\x03\x02\x02\x02" +
7275
- "\u0195\u0193\x03\x02\x02\x02\u01961\x03\x02\x02\x02\u0197\u0199\x05.\x18" +
7276
- "\x02\u0198\u0197\x03\x02\x02\x02\u0198\u0199\x03\x02\x02\x02\u0199\u019A" +
7277
- "\x03\x02\x02\x02\u019A\u019E\x05\\/\x02\u019B\u019C\x074\x02\x02\u019C" +
7278
- "\u019E\x05\\/\x02\u019D\u0198\x03\x02\x02\x02\u019D\u019B\x03\x02\x02" +
7279
- "\x02\u019E3\x03\x02\x02\x02\u019F\u01A3\x056\x1C\x02\u01A0\u01A2\x05D" +
7280
- "#\x02\u01A1\u01A0\x03\x02\x02\x02\u01A2\u01A5\x03\x02\x02\x02\u01A3\u01A1" +
7281
- "\x03\x02\x02\x02\u01A3\u01A4\x03\x02\x02\x02\u01A4\u01A8\x03\x02\x02\x02" +
7282
- "\u01A5\u01A3\x03\x02\x02\x02\u01A6\u01A8\x05> \x02\u01A7\u019F\x03\x02" +
7283
- "\x02\x02\u01A7\u01A6\x03\x02\x02\x02\u01A85\x03\x02\x02\x02\u01A9\u01AB" +
7284
- "\x05:\x1E\x02\u01AA\u01AC\x05D#\x02\u01AB\u01AA\x03\x02\x02\x02\u01AC" +
7285
- "\u01AD\x03\x02\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AD\u01AE\x03\x02" +
7286
- "\x02\x02\u01AE\u01B4\x03\x02\x02\x02\u01AF\u01B1\x058\x1D\x02\u01B0";
7287
- MalloyParser._serializedATNSegment1 = "\u01B2\x050\x19\x02\u01B1\u01B0\x03\x02\x02\x02\u01B1\u01B2\x03\x02\x02" +
7288
- "\x02\u01B2\u01B4\x03\x02\x02\x02\u01B3\u01A9\x03\x02\x02\x02\u01B3\u01AF" +
7289
- "\x03\x02\x02\x02\u01B47\x03\x02\x02\x02\u01B5\u01B7\x07d\x02\x02\u01B6" +
7290
- "\u01B5\x03\x02\x02\x02\u01B6\u01B7\x03\x02\x02\x02\u01B7\u01B8\x03\x02" +
7291
- "\x02\x02\u01B8\u01BE\x05\xD6l\x02\u01B9\u01BA\x05:\x1E\x02\u01BA\u01BB" +
7292
- "\t\x03\x02\x02\u01BB\u01BC\x05\xD6l\x02\u01BC\u01BE\x03\x02\x02\x02\u01BD" +
7293
- "\u01B6\x03\x02\x02\x02\u01BD\u01B9\x03\x02\x02\x02\u01BE9\x03\x02\x02" +
7294
- "\x02\u01BF\u01C1\x05<\x1F\x02\u01C0\u01C2\x052\x1A\x02\u01C1\u01C0\x03" +
7295
- "\x02\x02\x02\u01C1\u01C2\x03\x02\x02\x02\u01C2;\x03\x02\x02\x02\u01C3" +
7296
- "\u01D1\x05Z.\x02\u01C4\u01D1\x05F$\x02\u01C5\u01C6\x077\x02\x02\u01C6" +
7297
- "\u01C7\x07f\x02\x02\u01C7\u01C8\x054\x1B\x02\u01C8\u01C9\x07g\x02\x02" +
7298
- "\u01C9\u01D1\x03\x02\x02\x02\u01CA\u01CB\x078\x02\x02\u01CB\u01CC\x07" +
7299
- "f\x02\x02\u01CC\u01CD\x05\xFC\x7F\x02\u01CD\u01CE\x07g\x02\x02\u01CE\u01D1" +
7300
- "\x03\x02\x02\x02\u01CF\u01D1\x05> \x02\u01D0\u01C3\x03\x02\x02\x02\u01D0" +
7301
- "\u01C4\x03\x02\x02\x02\u01D0\u01C5\x03\x02\x02\x02\u01D0\u01CA\x03\x02" +
7302
- "\x02\x02\u01D0\u01CF\x03\x02\x02\x02\u01D1=\x03\x02\x02\x02\u01D2\u01D3" +
7303
- "\x05H%\x02\u01D3\u01D4\x07q\x02\x02\u01D4\u01D5\x07O\x02\x02\u01D5\u01D8" +
7304
- "\x07f\x02\x02\u01D6\u01D9\x05\x18\r\x02\u01D7\u01D9\x05\xCAf\x02\u01D8" +
7305
- "\u01D6\x03\x02\x02\x02\u01D8\u01D7\x03\x02\x02\x02\u01D9\u01DA\x03\x02" +
7306
- "\x02\x02\u01DA\u01DB\x07g\x02\x02\u01DB?\x03\x02\x02\x02\u01DC\u01E0\x05" +
7307
- "B\"\x02\u01DD\u01DF\x05D#\x02\u01DE\u01DD\x03\x02\x02\x02\u01DF\u01E2" +
7308
- "\x03\x02\x02\x02\u01E0\u01DE\x03\x02\x02\x02\u01E0\u01E1\x03\x02\x02\x02" +
7309
- "\u01E1A\x03\x02\x02\x02\u01E2\u01E0\x03\x02\x02\x02\u01E3\u01E5\x07d\x02" +
7310
- "\x02\u01E4\u01E3\x03\x02\x02\x02\u01E4\u01E5\x03\x02\x02\x02\u01E5\u01E6" +
7311
- "\x03\x02\x02\x02\u01E6\u01EC\x05J&\x02\u01E7\u01E9\x05N(\x02\u01E8\u01EA" +
7312
- "\x050\x19\x02\u01E9\u01E8\x03\x02\x02\x02\u01E9\u01EA\x03\x02\x02\x02" +
7313
- "\u01EA\u01EC\x03\x02\x02\x02\u01EB\u01E4\x03\x02\x02\x02\u01EB\u01E7\x03" +
7314
- "\x02\x02\x02\u01ECC\x03\x02\x02\x02\u01ED\u01EE\x07d\x02\x02\u01EE\u01EF" +
7315
- "\x05J&\x02\u01EFE\x03\x02\x02\x02\u01F0\u01F1\x07P\x02\x02\u01F1\u01F2" +
7316
- "\x07f\x02\x02\u01F2\u01F3\x05\xD4k\x02\u01F3\u01F4\x07g\x02\x02\u01F4" +
7317
- "\u01FD\x03\x02\x02\x02\u01F5\u01F6\x05H%\x02\u01F6\u01F7\x07q\x02\x02" +
7318
- "\u01F7\u01F8\x07P\x02\x02\u01F8\u01F9\x07f\x02\x02\u01F9\u01FA\x05\xD2" +
7319
- "j\x02\u01FA\u01FB\x07g\x02\x02\u01FB\u01FD\x03\x02\x02\x02\u01FC\u01F0" +
7320
- "\x03\x02\x02\x02\u01FC\u01F5\x03\x02\x02\x02\u01FDG\x03\x02\x02\x02\u01FE" +
7321
- "\u01FF\x05\xD6l\x02\u01FFI\x03\x02\x02\x02\u0200\u020B\x05L\'\x02\u0201" +
7322
- "\u0206\x07j\x02\x02\u0202\u0205\x05\x92J\x02\u0203\u0205\x07~\x02\x02" +
7323
- "\u0204\u0202\x03\x02\x02\x02\u0204\u0203\x03\x02\x02\x02\u0205\u0208\x03" +
7324
- "\x02\x02\x02\u0206\u0204\x03\x02\x02\x02\u0206\u0207\x03\x02\x02\x02\u0207" +
7325
- "\u0209\x03\x02\x02\x02\u0208\u0206\x03\x02\x02\x02\u0209\u020B\x07k\x02" +
7326
- "\x02\u020A\u0200\x03\x02\x02\x02\u020A\u0201\x03\x02\x02\x02\u020BK\x03" +
7327
- "\x02\x02\x02\u020C\u020D\x07j\x02\x02\u020D\u020E\x07\x83\x02\x02\u020E" +
7328
- "\u020F\x05\xDEp\x02\u020F\u0210\x07k\x02\x02\u0210M\x03\x02\x02\x02\u0211" +
7329
- "\u0212\x05\xD6l\x02\u0212O\x03\x02\x02\x02\u0213\u0214\x05\xD6l\x02\u0214" +
7330
- "Q\x03\x02\x02\x02\u0215\u021C\x05T+\x02\u0216\u0218\x07p\x02\x02\u0217" +
7331
- "\u0216\x03\x02\x02\x02\u0217\u0218\x03\x02\x02\x02\u0218\u0219\x03\x02" +
7332
- "\x02\x02\u0219\u021B\x05T+\x02\u021A\u0217\x03\x02\x02\x02\u021B\u021E" +
7333
- "\x03\x02\x02\x02\u021C\u021A\x03\x02\x02\x02\u021C\u021D\x03\x02\x02\x02" +
7334
- "\u021D\u0220\x03\x02\x02\x02\u021E\u021C\x03\x02\x02\x02\u021F\u0221\x07" +
7335
- "p\x02\x02\u0220\u021F\x03\x02\x02\x02\u0220\u0221\x03\x02\x02\x02\u0221" +
7336
- "S\x03\x02\x02\x02\u0222\u0223\x05\f\x07\x02\u0223\u0224\x05X-\x02\u0224" +
7337
- "\u0225\x05\x0E\b\x02\u0225\u0226\x05V,\x02\u0226U\x03\x02\x02\x02\u0227" +
7338
- "\u022C\x05:\x1E\x02\u0228\u0229\x054\x1B\x02\u0229\u022A\x052\x1A\x02" +
7339
- "\u022A\u022C\x03\x02\x02\x02\u022B\u0227\x03\x02\x02\x02\u022B\u0228\x03" +
7340
- "\x02\x02\x02\u022CW\x03\x02\x02\x02\u022D\u022E\x05\xD6l\x02\u022EY\x03" +
7341
- "\x02\x02\x02\u022F\u0230\x05\xD6l\x02\u0230[\x03\x02\x02\x02\u0231\u0236" +
7342
- "\x07j\x02\x02\u0232\u0235\x05^0\x02\u0233\u0235\x07~\x02\x02\u0234\u0232" +
7343
- "\x03\x02\x02\x02\u0234\u0233\x03\x02\x02\x02\u0235\u0238\x03\x02\x02\x02" +
7344
- "\u0236\u0234\x03\x02\x02\x02\u0236\u0237\x03\x02\x02\x02\u0237\u0239\x03" +
7345
- "\x02\x02\x02\u0238\u0236\x03\x02\x02\x02\u0239\u023C\x07k\x02\x02\u023A" +
7346
- "\u023C\x05L\'\x02\u023B\u0231\x03\x02\x02\x02\u023B\u023A\x03\x02\x02" +
7347
- "\x02\u023C]\x03\x02\x02\x02\u023D\u0254\x05b2\x02\u023E\u0254\x05`1\x02" +
7348
- "\u023F\u0254\x05p9\x02\u0240\u0254\x05r:\x02\u0241\u0254\x05\x88E\x02" +
7349
- "\u0242\u0243\x07\x16\x02\x02\u0243\u0254\x05\xF8}\x02\u0244\u0245\x07" +
7350
- "\x19\x02\x02\u0245\u0254\x05d3\x02\u0246\u0247\t\x04\x02\x02\u0247\u0254" +
7351
- "\x05\xE8u\x02\u0248\u0249\x05\f\x07\x02\u0249\u024A\x07\x18\x02\x02\u024A" +
7352
- "\u024B\x05\x8CG\x02\u024B\u0254\x03\x02\x02\x02\u024C\u0254\x05\xBC_\x02" +
7353
- "\u024D\u024F\x07b\x02\x02\u024E\u024D\x03\x02\x02\x02\u024F\u0250\x03" +
7354
- "\x02\x02\x02\u0250\u024E\x03\x02\x02\x02\u0250\u0251\x03\x02\x02\x02\u0251" +
7355
- "\u0254\x03\x02\x02\x02\u0252\u0254\x05(\x15\x02\u0253\u023D\x03\x02\x02" +
7356
- "\x02\u0253\u023E\x03\x02\x02\x02\u0253\u023F\x03\x02\x02\x02\u0253\u0240" +
7357
- "\x03\x02\x02\x02\u0253\u0241\x03\x02\x02\x02\u0253\u0242\x03\x02\x02\x02" +
7358
- "\u0253\u0244\x03\x02\x02\x02\u0253\u0246\x03\x02\x02\x02\u0253\u0248\x03" +
7359
- "\x02\x02\x02\u0253\u024C\x03\x02\x02\x02\u0253\u024E\x03\x02\x02\x02\u0253" +
7360
- "\u0252\x03\x02\x02\x02\u0254_\x03\x02\x02\x02\u0255\u0256\x05\f\x07\x02" +
7361
- "\u0256\u0257\x07\x13\x02\x02\u0257\u0258\x05h5\x02\u0258a\x03\x02\x02" +
7362
- "\x02\u0259\u025A\x05\f\x07\x02\u025A\u025B\x07\t\x02\x02\u025B\u025C\x05" +
7363
- "h5\x02\u025Cc\x03\x02\x02\x02\u025D\u0264\x05f4\x02\u025E\u0260\x07p\x02" +
7364
- "\x02\u025F\u025E\x03\x02\x02\x02\u025F\u0260\x03\x02\x02\x02\u0260\u0261" +
7365
- "\x03\x02\x02\x02\u0261\u0263\x05f4\x02\u0262\u025F\x03\x02\x02\x02\u0263" +
7366
- "\u0266\x03\x02\x02\x02\u0264\u0262\x03\x02\x02\x02\u0264\u0265\x03\x02" +
7367
- "\x02\x02\u0265\u0268\x03\x02\x02\x02\u0266\u0264\x03\x02\x02\x02\u0267" +
7368
- "\u0269\x07p\x02\x02\u0268\u0267\x03\x02\x02\x02\u0268\u0269\x03\x02\x02" +
7369
- "\x02\u0269e\x03\x02\x02\x02\u026A\u026B\x05\xF8}\x02\u026B\u026C\x05\x0E" +
7370
- "\b\x02\u026C\u026D\x05\xF8}\x02\u026Dg\x03\x02\x02\x02\u026E\u0275\x05" +
7371
- "j6\x02\u026F\u0271\x07p\x02\x02\u0270\u026F\x03\x02\x02\x02\u0270\u0271" +
7372
- "\x03\x02\x02\x02\u0271\u0272\x03\x02\x02\x02\u0272\u0274\x05j6\x02\u0273" +
7373
- "\u0270\x03\x02\x02\x02\u0274\u0277\x03\x02\x02\x02\u0275\u0273\x03\x02" +
7374
- "\x02\x02\u0275\u0276\x03\x02\x02\x02\u0276\u0279\x03\x02\x02\x02\u0277" +
7375
- "\u0275\x03\x02\x02\x02\u0278\u027A\x07p\x02\x02\u0279\u0278\x03\x02\x02" +
7376
- "\x02\u0279\u027A\x03\x02\x02\x02\u027Ai\x03\x02\x02\x02\u027B\u027C\x05" +
7377
- "\f\x07\x02\u027C\u027D\x05l7\x02\u027D\u027E\x05\x0E\b\x02\u027E\u027F" +
7378
- "\x05\xDEp\x02\u027Fk\x03\x02\x02\x02\u0280\u0281\x05\xD6l\x02\u0281m\x03" +
7379
- "\x02\x02\x02\u0282\u0283\x05\xD6l\x02\u0283o\x03\x02\x02\x02\u0284\u0285" +
7380
- "\x07\b\x02\x02\u0285\u0286\x05h5\x02\u0286q\x03\x02\x02\x02\u0287\u0288" +
7381
- "\x05\f\x07\x02\u0288\u0289\x07\x10\x02\x02\u0289\u028A\x05z>\x02\u028A" +
7382
- "\u0294\x03\x02\x02\x02\u028B\u028C\x05\f\x07\x02\u028C\u028D\x07\x11\x02" +
7383
- "\x02\u028D\u028E\x05z>\x02\u028E\u0294\x03\x02\x02\x02\u028F\u0290\x05" +
7384
- "\f\x07\x02\u0290\u0291\x07\x0F\x02\x02\u0291\u0292\x05z>\x02\u0292\u0294" +
7385
- "\x03\x02\x02\x02\u0293\u0287\x03\x02\x02\x02\u0293\u028B\x03\x02\x02\x02" +
7386
- "\u0293\u028F\x03\x02\x02\x02\u0294s\x03\x02\x02\x02\u0295\u0296\x07\v" +
7387
- "\x02\x02\u0296\u0297\x05x=\x02\u0297u\x03\x02\x02\x02\u0298\u029C\x05" +
7388
- "b2\x02\u0299\u029C\x05`1\x02\u029A\u029C\x05r:\x02\u029B\u0298\x03\x02" +
7389
- "\x02\x02\u029B\u0299\x03\x02\x02\x02\u029B\u029A\x03\x02\x02\x02\u029C" +
7390
- "w\x03\x02\x02\x02\u029D\u02A2\x07j\x02\x02\u029E\u02A1\x05v<\x02\u029F" +
7391
- "\u02A1\x07~\x02\x02\u02A0\u029E\x03\x02\x02\x02\u02A0\u029F\x03\x02\x02" +
7392
- "\x02\u02A1\u02A4\x03\x02\x02\x02\u02A2\u02A0\x03\x02\x02\x02\u02A2\u02A3" +
7393
- "\x03\x02\x02\x02\u02A3\u02A5\x03\x02\x02\x02\u02A4\u02A2\x03\x02\x02\x02" +
7394
- "\u02A5\u02A6\x07k\x02\x02\u02A6y\x03\x02\x02\x02\u02A7\u02AE\x05~@\x02" +
7395
- "\u02A8\u02AA\x07p\x02\x02\u02A9\u02A8\x03\x02\x02\x02\u02A9\u02AA\x03" +
7396
- "\x02\x02\x02\u02AA\u02AB\x03\x02\x02\x02\u02AB\u02AD\x05~@\x02\u02AC\u02A9" +
7397
- "\x03\x02\x02\x02\u02AD\u02B0\x03\x02\x02\x02\u02AE\u02AC\x03\x02\x02\x02" +
7398
- "\u02AE\u02AF\x03\x02\x02\x02\u02AF\u02B2\x03\x02\x02\x02\u02B0\u02AE\x03" +
7399
- "\x02\x02\x02\u02B1\u02B3\x07p\x02\x02\u02B2\u02B1\x03\x02\x02\x02\u02B2" +
7400
- "\u02B3\x03\x02\x02\x02\u02B3{\x03\x02\x02\x02\u02B4\u02B5\x05\f\x07\x02" +
7401
- "\u02B5\u02B6\x07<\x02\x02\u02B6\u02B7\x05\f\x07\x02\u02B7\u02B8\x05V," +
7402
- "\x02\u02B8}\x03\x02\x02\x02\u02B9\u02BB\x07b\x02\x02\u02BA\u02B9\x03\x02" +
7403
- "\x02\x02\u02BB\u02BE\x03\x02\x02\x02\u02BC\u02BA\x03\x02\x02\x02\u02BC" +
7404
- "\u02BD\x03\x02\x02\x02\u02BD\u02BF\x03\x02\x02\x02\u02BE\u02BC\x03\x02" +
7405
- "\x02\x02\u02BF\u02C1\x05n8\x02\u02C0\u02C2\x05|?\x02\u02C1\u02C0\x03\x02" +
7406
- "\x02\x02\u02C1\u02C2\x03\x02\x02\x02\u02C2\u02C3\x03\x02\x02\x02\u02C3" +
7407
- "\u02C4\x07Y\x02\x02\u02C4\u02C5\x05\xDEp\x02\u02C5\u02D5\x03\x02\x02\x02" +
7408
- "\u02C6\u02C8\x07b\x02\x02\u02C7\u02C6\x03\x02\x02\x02\u02C8\u02CB\x03" +
7409
- "\x02\x02\x02\u02C9\u02C7\x03\x02\x02\x02\u02C9\u02CA\x03\x02\x02\x02\u02CA" +
7410
- "\u02CC\x03\x02\x02\x02\u02CB\u02C9\x03\x02\x02\x02\u02CC\u02CE\x05n8\x02" +
7411
- "\u02CD\u02CF\x05|?\x02\u02CE\u02CD\x03\x02\x02\x02\u02CE\u02CF\x03\x02" +
7412
- "\x02\x02\u02CF\u02D2\x03\x02\x02\x02\u02D0\u02D1\x07G\x02\x02\u02D1\u02D3" +
7413
- "\x05\x80A\x02\u02D2\u02D0\x03\x02\x02\x02\u02D2\u02D3\x03\x02\x02\x02" +
7414
- "\u02D3\u02D5\x03\x02\x02\x02\u02D4\u02BC\x03\x02\x02\x02\u02D4\u02C9\x03" +
7415
- "\x02\x02\x02\u02D5\x7F\x03\x02\x02\x02\u02D6\u02D7\x05\xDEp\x02\u02D7" +
7416
- "\x81\x03\x02\x02\x02\u02D8\u02DB\x05\x88E\x02\u02D9\u02DB\x05\x8AF\x02" +
7417
- "\u02DA\u02D8\x03\x02\x02\x02\u02DA\u02D9\x03\x02\x02\x02\u02DB\x83\x03" +
7418
- "\x02\x02\x02\u02DC\u02DD\x07\x83\x02\x02\u02DD\u02E0\x05\xDEp\x02\u02DE" +
7419
- "\u02E0\x05\x88E\x02\u02DF\u02DC\x03\x02\x02\x02\u02DF\u02DE\x03\x02\x02" +
7420
- "\x02\u02E0\x85\x03\x02\x02\x02\u02E1\u02E6\x05\xDEp\x02\u02E2\u02E3\x07" +
7421
- "p\x02\x02\u02E3\u02E5\x05\xDEp\x02\u02E4\u02E2\x03\x02\x02\x02\u02E5\u02E8" +
7422
- "\x03\x02\x02\x02\u02E6\u02E4\x03\x02\x02\x02\u02E6\u02E7\x03\x02\x02\x02" +
7423
- "\u02E7\u02EA\x03\x02\x02\x02\u02E8\u02E6\x03\x02\x02\x02\u02E9\u02EB\x07" +
7424
- "p\x02\x02\u02EA\u02E9\x03\x02\x02\x02\u02EA\u02EB\x03\x02\x02\x02\u02EB" +
7425
- "\x87\x03\x02\x02\x02\u02EC\u02ED\x07 \x02\x02\u02ED\u02EE\x05\x86D\x02" +
7426
- "\u02EE\x89\x03\x02\x02\x02\u02EF\u02F0\x07\r\x02\x02\u02F0\u02F1\x05\x86" +
7427
- "D\x02\u02F1\x8B\x03\x02\x02\x02\u02F2\u02F9\x05\x90I\x02\u02F3\u02F5\x07" +
7428
- "p\x02\x02\u02F4\u02F3\x03\x02\x02\x02\u02F4\u02F5\x03\x02\x02\x02\u02F5" +
7429
- "\u02F6\x03\x02\x02\x02\u02F6\u02F8\x05\x90I\x02\u02F7\u02F4\x03\x02\x02" +
7430
- "\x02\u02F8\u02FB\x03\x02\x02\x02\u02F9\u02F7\x03\x02\x02\x02\u02F9\u02FA" +
7431
- "\x03\x02\x02\x02\u02FA\u02FD\x03\x02\x02\x02\u02FB\u02F9\x03\x02\x02\x02" +
7432
- "\u02FC\u02FE\x07p\x02\x02\u02FD\u02FC\x03\x02\x02\x02\u02FD\u02FE\x03" +
7433
- "\x02\x02\x02\u02FE\x8D\x03\x02\x02\x02\u02FF\u0300\x05\xD6l\x02\u0300" +
7434
- "\x8F\x03\x02\x02\x02\u0301\u0303\x07b\x02\x02\u0302\u0301\x03\x02\x02" +
7435
- "\x02\u0303\u0306\x03\x02\x02\x02\u0304\u0302\x03\x02\x02\x02\u0304\u0305" +
7436
- "\x03\x02\x02\x02\u0305\u0307\x03\x02\x02\x02\u0306\u0304\x03\x02\x02\x02" +
7437
- "\u0307\u0308\x05\x8EH\x02\u0308\u0309\x05\x0E\b\x02\u0309\u030A\x05@!" +
7438
- "\x02\u030A\x91\x03\x02\x02\x02\u030B\u031E\x05\x96L\x02\u030C\u031E\x05" +
7439
- "p9\x02\u030D\u031E\x05\x94K\x02\u030E\u031E\x05t;\x02\u030F\u031E\x05" +
7440
- "\xA6T\x02\u0310\u031E\x05\xB8]\x02\u0311\u031E\x05\xA2R\x02\u0312\u031E" +
7441
- "\x05\xA4S\x02\u0313\u031E\x05\xB2Z\x02\u0314\u031E\x05\xAEX\x02\u0315" +
7442
- "\u031E\x05\xA8U\x02\u0316\u031E\x05\x88E\x02\u0317\u031E\x05\x8AF\x02" +
7443
- "\u0318\u031E\x05\x9CO\x02\u0319\u031E\x05\xBA^\x02\u031A\u031E\x05\xBC" +
7444
- "_\x02\u031B\u031E\x05\xBE`\x02\u031C\u031E\x05(\x15\x02\u031D\u030B\x03" +
7445
- "\x02\x02\x02\u031D\u030C\x03\x02\x02\x02\u031D\u030D\x03\x02\x02\x02\u031D" +
7446
- "\u030E\x03\x02\x02\x02\u031D\u030F\x03\x02\x02\x02\u031D\u0310\x03\x02" +
7447
- "\x02\x02\u031D\u0311\x03\x02\x02\x02\u031D\u0312\x03\x02\x02\x02\u031D" +
7164
+ "p\x03p\x03p\x03p\x03p\x03p\x07p\u045E\np\fp\x0Ep\u0461\vp\x03q\x03q\x05" +
7165
+ "q\u0465\nq\x03q\x03q\x03q\x03q\x05q\u046B\nq\x03q\x05q\u046E\nq\x03r\x06" +
7166
+ "r\u0471\nr\rr\x0Er\u0472\x03r\x03r\x05r\u0477\nr\x03s\x03s\x05s\u047B" +
7167
+ "\ns\x03s\x03s\x03s\x03t\x03t\x03t\x07t\u0483\nt\ft\x0Et\u0486\vt\x03t" +
7168
+ "\x05t\u0489\nt\x03u\x03u\x05u\u048D\nu\x03u\x07u\u0490\nu\fu\x0Eu\u0493" +
7169
+ "\vu\x03v\x03v\x05v\u0497\nv\x03v\x07v\u049A\nv\fv\x0Ev\u049D\vv\x03v\x05" +
7170
+ "v\u04A0\nv\x03w\x03w\x03w\x05w\u04A5\nw\x03w\x03w\x03x\x03x\x03x\x05x" +
7171
+ "\u04AC\nx\x03y\x03y\x03y\x03y\x03y\x03y\x03y\x05y\u04B5\ny\x03z\x03z\x03" +
7172
+ "z\x05z\u04BA\nz\x03{\x03{\x03{\x07{\u04BF\n{\f{\x0E{\u04C2\v{\x03|\x03" +
7173
+ "|\x03}\x03}\x03~\x03~\x03~\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x81\x03" +
7174
+ "\x81\x03\x81\x02\x02\x03\xDE\x82\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f" +
7175
+ "\x02\x0E\x02\x10\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E" +
7176
+ "\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02" +
7177
+ ":\x02<\x02>\x02@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02" +
7178
+ "V\x02X\x02Z\x02\\\x02^\x02`\x02b\x02d\x02f\x02h\x02j\x02l\x02n\x02p\x02" +
7179
+ "r\x02t\x02v\x02x\x02z\x02|\x02~\x02\x80\x02\x82\x02\x84\x02\x86\x02\x88" +
7180
+ "\x02\x8A\x02\x8C\x02\x8E\x02\x90\x02\x92\x02\x94\x02\x96\x02\x98\x02\x9A" +
7181
+ "\x02\x9C\x02\x9E\x02\xA0\x02\xA2\x02\xA4\x02\xA6\x02\xA8\x02\xAA\x02\xAC" +
7182
+ "\x02\xAE\x02\xB0\x02\xB2\x02\xB4\x02\xB6\x02\xB8\x02\xBA\x02\xBC\x02\xBE" +
7183
+ "\x02\xC0\x02\xC2\x02\xC4\x02\xC6\x02\xC8\x02\xCA\x02\xCC\x02\xCE\x02\xD0" +
7184
+ "\x02\xD2\x02\xD4\x02\xD6\x02\xD8\x02\xDA\x02\xDC\x02\xDE\x02\xE0\x02\xE2" +
7185
+ "\x02\xE4\x02\xE6\x02\xE8\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02\xF2\x02\xF4" +
7186
+ "\x02\xF6\x02\xF8\x02\xFA\x02\xFC\x02\xFE\x02\u0100\x02\x02\x13\x04\x02" +
7187
+ "ll\x94\x94\x04\x02eerr\x04\x02\x03\x03\n\n\x04\x02\x17\x17\x1C\x1C\x04" +
7188
+ "\x02%%//\x06\x0255VV\x8D\x8D\x8F\x8F\x06\x02&&,,?@OO\x07\x02\'\'--FFM" +
7189
+ "MTT\x04\x02sx\x80\x81\x03\x02_`\x03\x02\x8E\x8F\x04\x0255VV\x04\x02aa" +
7190
+ "\x8C\x8C\t\x02..::ABJJLLXX[[\x04\x02\"\"33\x05\x02{{}}\x82\x82\x03\x02" +
7191
+ "yz\x02\u051C\x02\u0106\x03\x02\x02\x02\x04\u0112\x03\x02\x02\x02\x06\u0114" +
7192
+ "\x03\x02\x02\x02\b\u011D\x03\x02\x02\x02\n\u011F\x03\x02\x02\x02\f\u0125" +
7193
+ "\x03\x02\x02\x02\x0E\u0128\x03\x02\x02\x02\x10\u012C\x03\x02\x02\x02\x12" +
7194
+ "\u0131\x03\x02\x02\x02\x14\u0136\x03\x02\x02\x02\x16\u0142\x03\x02\x02" +
7195
+ "\x02\x18\u0144\x03\x02\x02\x02\x1A\u014D\x03\x02\x02\x02\x1C\u0151\x03" +
7196
+ "\x02\x02\x02\x1E\u0157\x03\x02\x02\x02 \u0163\x03\x02\x02\x02\"\u0168" +
7197
+ "\x03\x02\x02\x02$\u016B\x03\x02\x02\x02&\u0170\x03\x02\x02\x02(\u0175" +
7198
+ "\x03\x02\x02\x02*\u0179\x03\x02\x02\x02,\u0188\x03\x02\x02\x02.\u018D" +
7199
+ "\x03\x02\x02\x020\u0195\x03\x02\x02\x022\u019D\x03\x02\x02\x024\u01A7" +
7200
+ "\x03\x02\x02\x026\u01B3\x03\x02\x02\x028\u01BD\x03\x02\x02\x02:\u01BF" +
7201
+ "\x03\x02\x02\x02<\u01D0\x03\x02\x02\x02>\u01D2\x03\x02\x02\x02@\u01DC" +
7202
+ "\x03\x02\x02\x02B\u01EB\x03\x02\x02\x02D\u01ED\x03\x02\x02\x02F\u01FC" +
7203
+ "\x03\x02\x02\x02H\u01FE\x03\x02\x02\x02J\u020A\x03\x02\x02\x02L\u020C" +
7204
+ "\x03\x02\x02\x02N\u0211\x03\x02\x02\x02P\u0213\x03\x02\x02\x02R\u0215" +
7205
+ "\x03\x02\x02\x02T\u0222\x03\x02\x02\x02V\u022B\x03\x02\x02\x02X\u022D" +
7206
+ "\x03\x02\x02\x02Z\u022F\x03\x02\x02\x02\\\u023B\x03\x02\x02\x02^\u0253" +
7207
+ "\x03\x02\x02\x02`\u0255\x03\x02\x02\x02b\u0259\x03\x02\x02\x02d\u025D" +
7208
+ "\x03\x02\x02\x02f\u026A\x03\x02\x02\x02h\u026E\x03\x02\x02\x02j\u027B" +
7209
+ "\x03\x02\x02\x02l\u0280\x03\x02\x02\x02n\u0282\x03\x02\x02\x02p\u0284" +
7210
+ "\x03\x02\x02\x02r\u0293\x03\x02\x02\x02t\u0295\x03\x02\x02\x02v\u029B" +
7211
+ "\x03\x02\x02\x02x\u029D\x03\x02\x02\x02z\u02A7\x03\x02\x02\x02|\u02B4" +
7212
+ "\x03\x02\x02\x02~\u02D4\x03\x02\x02\x02\x80\u02D6\x03\x02\x02\x02\x82" +
7213
+ "\u02DA\x03\x02\x02\x02\x84\u02DF\x03\x02\x02\x02\x86\u02E1\x03\x02\x02" +
7214
+ "\x02\x88\u02EC\x03\x02\x02\x02\x8A\u02EF\x03\x02\x02\x02\x8C\u02F2\x03" +
7215
+ "\x02\x02\x02\x8E\u02FF\x03\x02\x02\x02\x90\u0304\x03\x02\x02\x02\x92\u031D" +
7216
+ "\x03\x02\x02\x02\x94\u031F\x03\x02\x02\x02\x96\u0321\x03\x02\x02\x02\x98" +
7217
+ "\u0325\x03\x02\x02\x02\x9A\u0334\x03\x02\x02\x02\x9C\u0336\x03\x02\x02" +
7218
+ "\x02\x9E\u033A\x03\x02\x02\x02\xA0\u0351\x03\x02\x02\x02\xA2\u0353\x03" +
7219
+ "\x02\x02\x02\xA4\u0357\x03\x02\x02\x02\xA6\u035B\x03\x02\x02\x02\xA8\u035F" +
7220
+ "\x03\x02\x02\x02\xAA\u0362\x03\x02\x02\x02\xAC\u0371\x03\x02\x02\x02\xAE" +
7221
+ "\u0376\x03\x02\x02\x02\xB0\u037D\x03\x02\x02\x02\xB2\u037F\x03\x02\x02" +
7222
+ "\x02\xB4\u038A\x03\x02\x02\x02\xB6\u038C\x03\x02\x02\x02\xB8\u0396\x03" +
7223
+ "\x02\x02\x02\xBA\u039C\x03\x02\x02\x02\xBC\u039F\x03\x02\x02\x02\xBE\u03A2" +
7224
+ "\x03\x02\x02\x02\xC0\u03A4\x03\x02\x02\x02\xC2\u03A6\x03\x02\x02\x02\xC4" +
7225
+ "\u03A8\x03\x02\x02\x02\xC6\u03AA\x03\x02\x02\x02\xC8\u03AE\x03\x02\x02" +
7226
+ "\x02\xCA\u03B0\x03\x02\x02\x02\xCC\u03B2\x03\x02\x02\x02\xCE\u03BB\x03" +
7227
+ "\x02\x02\x02\xD0\u03C4\x03\x02\x02\x02\xD2\u03C6\x03\x02\x02\x02\xD4\u03C8" +
7228
+ "\x03\x02\x02\x02\xD6\u03CA\x03\x02\x02\x02\xD8\u03CC\x03\x02\x02\x02\xDA" +
7229
+ "\u03CE\x03\x02\x02\x02\xDC\u03D2\x03\x02\x02\x02\xDE\u0427\x03\x02\x02" +
7230
+ "\x02\xE0\u046D\x03\x02\x02\x02\xE2\u0470\x03\x02\x02\x02\xE4\u0478\x03" +
7231
+ "\x02\x02\x02\xE6\u047F\x03\x02\x02\x02\xE8\u048A\x03\x02\x02\x02\xEA\u0494" +
7232
+ "\x03\x02\x02\x02\xEC\u04A4\x03\x02\x02\x02\xEE\u04A8\x03\x02\x02\x02\xF0" +
7233
+ "\u04B4\x03\x02\x02\x02\xF2\u04B9\x03\x02\x02\x02\xF4\u04BB\x03\x02\x02" +
7234
+ "\x02\xF6\u04C3\x03\x02\x02\x02\xF8\u04C5\x03\x02\x02\x02\xFA\u04C7\x03" +
7235
+ "\x02\x02\x02\xFC\u04CA\x03\x02\x02\x02\xFE\u04CC\x03\x02\x02\x02\u0100" +
7236
+ "\u04CE\x03\x02\x02\x02\u0102\u0105\x05\x04\x03\x02\u0103\u0105\x07\x7F" +
7237
+ "\x02\x02\u0104\u0102\x03\x02\x02\x02\u0104\u0103\x03\x02\x02\x02\u0105" +
7238
+ "\u0108\x03\x02\x02\x02\u0106\u0104\x03\x02\x02\x02\u0106\u0107\x03\x02" +
7239
+ "\x02\x02\u0107\u0109\x03\x02\x02\x02\u0108\u0106\x03\x02\x02\x02\u0109" +
7240
+ "\u010A\x07\x02\x02\x03\u010A\x03\x03\x02\x02\x02\u010B\u0113\x05\x06\x04" +
7241
+ "\x02\u010C\u0113\x05\x12\n\x02\u010D\u0113\x05\b\x05\x02\u010E\u0113\x05" +
7242
+ "\x1C\x0F\x02\u010F\u0113\x05\x10\t\x02\u0110\u0113\x05$\x13\x02\u0111" +
7243
+ "\u0113\x05&\x14\x02\u0112\u010B\x03\x02\x02\x02\u0112\u010C\x03\x02\x02" +
7244
+ "\x02\u0112\u010D\x03\x02\x02\x02\u0112\u010E\x03\x02\x02\x02\u0112\u010F" +
7245
+ "\x03\x02\x02\x02\u0112\u0110\x03\x02\x02\x02\u0112\u0111\x03\x02\x02\x02" +
7246
+ "\u0113\x05\x03\x02\x02\x02\u0114\u0115\x05\f\x07\x02\u0115\u0116\x07\x1D" +
7247
+ "\x02\x02\u0116\u0117\x05R*\x02\u0117\x07\x03\x02\x02\x02\u0118\u011E\x05" +
7248
+ "*\x16\x02\u0119\u011A\x05\f\x07\x02\u011A\u011B\x07\x18\x02\x02\u011B" +
7249
+ "\u011C\x05\n\x06\x02\u011C\u011E\x03\x02\x02\x02\u011D\u0118\x03\x02\x02" +
7250
+ "\x02\u011D\u0119\x03\x02\x02\x02\u011E\t\x03\x02\x02\x02\u011F\u0120\x05" +
7251
+ "\f\x07\x02\u0120\u0121\x054\x1B\x02\u0121\v\x03\x02\x02\x02\u0122\u0124" +
7252
+ "\x07c\x02\x02\u0123\u0122\x03\x02\x02\x02\u0124\u0127\x03\x02\x02\x02" +
7253
+ "\u0125\u0123\x03\x02\x02\x02\u0125\u0126\x03\x02\x02\x02\u0126\r\x03\x02" +
7254
+ "\x02\x02\u0127\u0125\x03\x02\x02\x02\u0128\u0129\x05\f\x07\x02\u0129\u012A" +
7255
+ "\x07<\x02\x02\u012A\u012B\x05\f\x07\x02\u012B\x0F\x03\x02\x02\x02\u012C" +
7256
+ "\u012D\x05\f\x07\x02\u012D\u012E\x07\x1A\x02\x02\u012E\u012F\x05\f\x07" +
7257
+ "\x02\u012F\u0130\x05\n\x06\x02\u0130\x11\x03\x02\x02\x02\u0131\u0132\x07" +
7258
+ "\x1E\x02\x02\u0132\u0133\x05\xFE\x80\x02\u0133\u0134\x05\x0E\b\x02\u0134" +
7259
+ "\u0135\x05\x14\v\x02\u0135\x13\x03\x02\x02\x02\u0136\u0138\x07k\x02\x02" +
7260
+ "\u0137\u0139\x05\x16\f\x02\u0138\u0137\x03\x02\x02\x02\u0139\u013A\x03" +
7261
+ "\x02\x02\x02\u013A\u0138\x03\x02\x02\x02\u013A\u013B\x03\x02\x02\x02\u013B" +
7262
+ "\u013C\x03\x02\x02\x02\u013C\u013D\x07l\x02\x02\u013D\x15\x03\x02\x02" +
7263
+ "\x02\u013E\u013F\x07\x07\x02\x02\u013F\u0143\x05\u0100\x81\x02\u0140\u0141" +
7264
+ "\x07\x1C\x02\x02\u0141\u0143\x05\x18\r\x02\u0142\u013E\x03\x02\x02\x02" +
7265
+ "\u0142\u0140\x03\x02\x02\x02\u0143\x17\x03\x02\x02\x02\u0144\u0148\x07" +
7266
+ "\x93\x02\x02\u0145\u0147\x05\x1A\x0E\x02\u0146\u0145\x03\x02\x02\x02\u0147" +
7267
+ "\u014A\x03\x02\x02\x02\u0148\u0146\x03\x02\x02\x02\u0148\u0149\x03\x02" +
7268
+ "\x02\x02\u0149\u014B\x03\x02\x02\x02\u014A\u0148\x03\x02\x02\x02\u014B" +
7269
+ "\u014C\x07\x98\x02\x02\u014C\x19\x03\x02\x02\x02\u014D\u014E\x07\x97\x02" +
7270
+ "\x02\u014E\u014F\x054\x1B\x02\u014F\u0150\t\x02\x02\x02\u0150\x1B\x03" +
7271
+ "\x02\x02\x02\u0151\u0153\x07;\x02\x02\u0152\u0154\x05\x1E\x10\x02\u0153" +
7272
+ "\u0152\x03\x02\x02\x02\u0153\u0154\x03\x02\x02\x02\u0154\u0155\x03\x02" +
7273
+ "\x02\x02\u0155\u0156\x05\"\x12\x02\u0156\x1D\x03\x02\x02\x02\u0157\u0158" +
7274
+ "\x07k\x02\x02\u0158\u015D\x05 \x11\x02\u0159\u015A\x07q\x02\x02\u015A" +
7275
+ "\u015C\x05 \x11\x02\u015B\u0159\x03\x02\x02\x02\u015C\u015F\x03\x02\x02" +
7276
+ "\x02\u015D\u015B\x03\x02\x02\x02\u015D\u015E\x03\x02\x02\x02\u015E\u0160" +
7277
+ "\x03\x02\x02\x02\u015F\u015D\x03\x02\x02\x02\u0160\u0161\x07l\x02\x02" +
7278
+ "\u0161\u0162\x077\x02\x02\u0162\x1F\x03\x02\x02\x02\u0163\u0166\x05\xD6" +
7279
+ "l\x02\u0164\u0165\x07<\x02\x02\u0165\u0167\x05\xD6l\x02\u0166\u0164\x03" +
7280
+ "\x02\x02\x02\u0166\u0167\x03\x02\x02\x02\u0167!\x03\x02\x02\x02\u0168" +
7281
+ "\u0169\x05\xC8e\x02\u0169#\x03\x02\x02\x02\u016A\u016C\x07b\x02\x02\u016B" +
7282
+ "\u016A\x03\x02\x02\x02\u016C\u016D\x03\x02\x02\x02\u016D\u016B\x03\x02" +
7283
+ "\x02\x02\u016D\u016E\x03\x02\x02\x02\u016E%\x03\x02\x02\x02\u016F\u0171" +
7284
+ "\x07c\x02\x02\u0170\u016F\x03\x02\x02\x02\u0171\u0172\x03\x02\x02\x02" +
7285
+ "\u0172\u0170\x03\x02\x02\x02\u0172\u0173\x03\x02\x02\x02\u0173\'\x03\x02" +
7286
+ "\x02\x02\u0174\u0176\x07b\x02\x02\u0175\u0174\x03\x02\x02\x02\u0176\u0177" +
7287
+ "\x03\x02\x02\x02\u0177\u0175\x03\x02\x02\x02\u0177\u0178\x03\x02\x02\x02" +
7288
+ "\u0178)\x03\x02\x02\x02\u0179\u017A\x05\f\x07\x02\u017A\u017B\x07\x18" +
7289
+ "\x02\x02\u017B\u0182\x05,\x17\x02\u017C\u017E\x07q\x02\x02\u017D\u017C" +
7290
+ "\x03\x02\x02\x02\u017D\u017E\x03\x02\x02\x02\u017E\u017F\x03\x02\x02\x02" +
7291
+ "\u017F\u0181\x05,\x17\x02\u0180\u017D\x03\x02\x02\x02\u0181\u0184\x03" +
7292
+ "\x02\x02\x02\u0182\u0180\x03\x02\x02\x02\u0182\u0183\x03\x02\x02\x02\u0183" +
7293
+ "\u0186\x03\x02\x02\x02\u0184\u0182\x03\x02\x02\x02\u0185\u0187\x07q\x02" +
7294
+ "\x02\u0186\u0185\x03\x02\x02\x02\u0186\u0187\x03\x02\x02\x02\u0187+\x03" +
7295
+ "\x02\x02\x02\u0188\u0189\x05\f\x07\x02\u0189\u018A\x05P)\x02\u018A\u018B" +
7296
+ "\x05\x0E\b\x02\u018B\u018C\x054\x1B\x02\u018C-\x03\x02\x02\x02\u018D\u018E" +
7297
+ "\x07y\x02\x02\u018E/\x03\x02\x02\x02\u018F\u0191\x05.\x18\x02\u0190\u018F" +
7298
+ "\x03\x02\x02\x02\u0190\u0191\x03\x02\x02\x02\u0191\u0192\x03\x02\x02\x02" +
7299
+ "\u0192\u0196\x05J&\x02\u0193\u0194\x07K\x02\x02\u0194\u0196\x05J&\x02" +
7300
+ "\u0195\u0190\x03\x02\x02\x02\u0195\u0193\x03\x02\x02\x02\u01961\x03\x02" +
7301
+ "\x02\x02\u0197\u0199\x05.\x18\x02\u0198\u0197\x03\x02\x02\x02\u0198\u0199" +
7302
+ "\x03\x02\x02\x02\u0199\u019A\x03\x02\x02\x02\u019A\u019E\x05\\/\x02\u019B" +
7303
+ "\u019C\x074\x02\x02\u019C\u019E\x05\\/\x02\u019D\u0198\x03\x02\x02\x02" +
7304
+ "\u019D\u019B\x03\x02\x02\x02\u019E3\x03\x02\x02\x02\u019F\u01A3\x056\x1C" +
7305
+ "\x02\u01A0\u01A2\x05D#\x02\u01A1\u01A0\x03\x02\x02\x02\u01A2\u01A5\x03" +
7306
+ "\x02\x02\x02\u01A3\u01A1\x03\x02\x02\x02\u01A3\u01A4\x03\x02\x02\x02\u01A4" +
7307
+ "\u01A8\x03\x02\x02\x02\u01A5\u01A3\x03\x02\x02\x02\u01A6\u01A8\x05> \x02" +
7308
+ "\u01A7\u019F\x03\x02\x02\x02\u01A7\u01A6\x03\x02\x02\x02\u01A85\x03\x02" +
7309
+ "\x02\x02\u01A9\u01AB\x05:\x1E\x02\u01AA\u01AC\x05D#\x02\u01AB\u01AA\x03" +
7310
+ "\x02\x02\x02\u01AC\u01AD\x03\x02\x02\x02\u01AD\u01AB\x03\x02\x02\x02\u01AD" +
7311
+ "\u01AE\x03\x02\x02\x02\u01AE\u01B4\x03";
7312
+ MalloyParser._serializedATNSegment1 = "\x02\x02\x02\u01AF\u01B1\x058\x1D\x02\u01B0\u01B2\x050\x19\x02\u01B1\u01B0" +
7313
+ "\x03\x02\x02\x02\u01B1\u01B2\x03\x02\x02\x02\u01B2\u01B4\x03\x02\x02\x02" +
7314
+ "\u01B3\u01A9\x03\x02\x02\x02\u01B3\u01AF\x03\x02\x02\x02\u01B47\x03\x02" +
7315
+ "\x02\x02\u01B5\u01B7\x07e\x02\x02\u01B6\u01B5\x03\x02\x02\x02\u01B6\u01B7" +
7316
+ "\x03\x02\x02\x02\u01B7\u01B8\x03\x02\x02\x02\u01B8\u01BE\x05\xD6l\x02" +
7317
+ "\u01B9\u01BA\x05:\x1E\x02\u01BA\u01BB\t\x03\x02\x02\u01BB\u01BC\x05\xD6" +
7318
+ "l\x02\u01BC\u01BE\x03\x02\x02\x02\u01BD\u01B6\x03\x02\x02\x02\u01BD\u01B9" +
7319
+ "\x03\x02\x02\x02\u01BE9\x03\x02\x02\x02\u01BF\u01C1\x05<\x1F\x02\u01C0" +
7320
+ "\u01C2\x052\x1A\x02\u01C1\u01C0\x03\x02\x02\x02\u01C1\u01C2\x03\x02\x02" +
7321
+ "\x02\u01C2;\x03\x02\x02\x02\u01C3\u01D1\x05Z.\x02\u01C4\u01D1\x05F$\x02" +
7322
+ "\u01C5\u01C6\x077\x02\x02\u01C6\u01C7\x07g\x02\x02\u01C7\u01C8\x054\x1B" +
7323
+ "\x02\u01C8\u01C9\x07h\x02\x02\u01C9\u01D1\x03\x02\x02\x02\u01CA\u01CB" +
7324
+ "\x078\x02\x02\u01CB\u01CC\x07g\x02\x02\u01CC\u01CD\x05\xFC\x7F\x02\u01CD" +
7325
+ "\u01CE\x07h\x02\x02\u01CE\u01D1\x03\x02\x02\x02\u01CF\u01D1\x05> \x02" +
7326
+ "\u01D0\u01C3\x03\x02\x02\x02\u01D0\u01C4\x03\x02\x02\x02\u01D0\u01C5\x03" +
7327
+ "\x02\x02\x02\u01D0\u01CA\x03\x02\x02\x02\u01D0\u01CF\x03\x02\x02\x02\u01D1" +
7328
+ "=\x03\x02\x02\x02\u01D2\u01D3\x05H%\x02\u01D3\u01D4\x07r\x02\x02\u01D4" +
7329
+ "\u01D5\x07P\x02\x02\u01D5\u01D8\x07g\x02\x02\u01D6\u01D9\x05\x18\r\x02" +
7330
+ "\u01D7\u01D9\x05\xCAf\x02\u01D8\u01D6\x03\x02\x02\x02\u01D8\u01D7\x03" +
7331
+ "\x02\x02\x02\u01D9\u01DA\x03\x02\x02\x02\u01DA\u01DB\x07h\x02\x02\u01DB" +
7332
+ "?\x03\x02\x02\x02\u01DC\u01E0\x05B\"\x02\u01DD\u01DF\x05D#\x02\u01DE\u01DD" +
7333
+ "\x03\x02\x02\x02\u01DF\u01E2\x03\x02\x02\x02\u01E0\u01DE\x03\x02\x02\x02" +
7334
+ "\u01E0\u01E1\x03\x02\x02\x02\u01E1A\x03\x02\x02\x02\u01E2\u01E0\x03\x02" +
7335
+ "\x02\x02\u01E3\u01E5\x07e\x02\x02\u01E4\u01E3\x03\x02\x02\x02\u01E4\u01E5" +
7336
+ "\x03\x02\x02\x02\u01E5\u01E6\x03\x02\x02\x02\u01E6\u01EC\x05J&\x02\u01E7" +
7337
+ "\u01E9\x05N(\x02\u01E8\u01EA\x050\x19\x02\u01E9\u01E8\x03\x02\x02\x02" +
7338
+ "\u01E9\u01EA\x03\x02\x02\x02\u01EA\u01EC\x03\x02\x02\x02\u01EB\u01E4\x03" +
7339
+ "\x02\x02\x02\u01EB\u01E7\x03\x02\x02\x02\u01ECC\x03\x02\x02\x02\u01ED" +
7340
+ "\u01EE\x07e\x02\x02\u01EE\u01EF\x05J&\x02\u01EFE\x03\x02\x02\x02\u01F0" +
7341
+ "\u01F1\x07Q\x02\x02\u01F1\u01F2\x07g\x02\x02\u01F2\u01F3\x05\xD4k\x02" +
7342
+ "\u01F3\u01F4\x07h\x02\x02\u01F4\u01FD\x03\x02\x02\x02\u01F5\u01F6\x05" +
7343
+ "H%\x02\u01F6\u01F7\x07r\x02\x02\u01F7\u01F8\x07Q\x02\x02\u01F8\u01F9\x07" +
7344
+ "g\x02\x02\u01F9\u01FA\x05\xD2j\x02\u01FA\u01FB\x07h\x02\x02\u01FB\u01FD" +
7345
+ "\x03\x02\x02\x02\u01FC\u01F0\x03\x02\x02\x02\u01FC\u01F5\x03\x02\x02\x02" +
7346
+ "\u01FDG\x03\x02\x02\x02\u01FE\u01FF\x05\xD6l\x02\u01FFI\x03\x02\x02\x02" +
7347
+ "\u0200\u020B\x05L\'\x02\u0201\u0206\x07k\x02\x02\u0202\u0205\x05\x92J" +
7348
+ "\x02\u0203\u0205\x07\x7F\x02\x02\u0204\u0202\x03\x02\x02\x02\u0204\u0203" +
7349
+ "\x03\x02\x02\x02\u0205\u0208\x03\x02\x02\x02\u0206\u0204\x03\x02\x02\x02" +
7350
+ "\u0206\u0207\x03\x02\x02\x02\u0207\u0209\x03\x02\x02\x02\u0208\u0206\x03" +
7351
+ "\x02\x02\x02\u0209\u020B\x07l\x02\x02\u020A\u0200\x03\x02\x02\x02\u020A" +
7352
+ "\u0201\x03\x02\x02\x02\u020BK\x03\x02\x02\x02\u020C\u020D\x07k\x02\x02" +
7353
+ "\u020D\u020E\x07\x84\x02\x02\u020E\u020F\x05\xDEp\x02\u020F\u0210\x07" +
7354
+ "l\x02\x02\u0210M\x03\x02\x02\x02\u0211\u0212\x05\xD6l\x02\u0212O\x03\x02" +
7355
+ "\x02\x02\u0213\u0214\x05\xD6l\x02\u0214Q\x03\x02\x02\x02\u0215\u021C\x05" +
7356
+ "T+\x02\u0216\u0218\x07q\x02\x02\u0217\u0216\x03\x02\x02\x02\u0217\u0218" +
7357
+ "\x03\x02\x02\x02\u0218\u0219\x03\x02\x02\x02\u0219\u021B\x05T+\x02\u021A" +
7358
+ "\u0217\x03\x02\x02\x02\u021B\u021E\x03\x02\x02\x02\u021C\u021A\x03\x02" +
7359
+ "\x02\x02\u021C\u021D\x03\x02\x02\x02\u021D\u0220\x03\x02\x02\x02\u021E" +
7360
+ "\u021C\x03\x02\x02\x02\u021F\u0221\x07q\x02\x02\u0220\u021F\x03\x02\x02" +
7361
+ "\x02\u0220\u0221\x03\x02\x02\x02\u0221S\x03\x02\x02\x02\u0222\u0223\x05" +
7362
+ "\f\x07\x02\u0223\u0224\x05X-\x02\u0224\u0225\x05\x0E\b\x02\u0225\u0226" +
7363
+ "\x05V,\x02\u0226U\x03\x02\x02\x02\u0227\u022C\x05:\x1E\x02\u0228\u0229" +
7364
+ "\x054\x1B\x02\u0229\u022A\x052\x1A\x02\u022A\u022C\x03\x02\x02\x02\u022B" +
7365
+ "\u0227\x03\x02\x02\x02\u022B\u0228\x03\x02\x02\x02\u022CW\x03\x02\x02" +
7366
+ "\x02\u022D\u022E\x05\xD6l\x02\u022EY\x03\x02\x02\x02\u022F\u0230\x05\xD6" +
7367
+ "l\x02\u0230[\x03\x02\x02\x02\u0231\u0236\x07k\x02\x02\u0232\u0235\x05" +
7368
+ "^0\x02\u0233\u0235\x07\x7F\x02\x02\u0234\u0232\x03\x02\x02\x02\u0234\u0233" +
7369
+ "\x03\x02\x02\x02\u0235\u0238\x03\x02\x02\x02\u0236\u0234\x03\x02\x02\x02" +
7370
+ "\u0236\u0237\x03\x02\x02\x02\u0237\u0239\x03\x02\x02\x02\u0238\u0236\x03" +
7371
+ "\x02\x02\x02\u0239\u023C\x07l\x02\x02\u023A\u023C\x05L\'\x02\u023B\u0231" +
7372
+ "\x03\x02\x02\x02\u023B\u023A\x03\x02\x02\x02\u023C]\x03\x02\x02\x02\u023D" +
7373
+ "\u0254\x05b2\x02\u023E\u0254\x05`1\x02\u023F\u0254\x05p9\x02\u0240\u0254" +
7374
+ "\x05r:\x02\u0241\u0254\x05\x88E\x02\u0242\u0243\x07\x16\x02\x02\u0243" +
7375
+ "\u0254\x05\xF8}\x02\u0244\u0245\x07\x19\x02\x02\u0245\u0254\x05d3\x02" +
7376
+ "\u0246\u0247\t\x04\x02\x02\u0247\u0254\x05\xE8u\x02\u0248\u0249\x05\f" +
7377
+ "\x07\x02\u0249\u024A\x07\x18\x02\x02\u024A\u024B\x05\x8CG\x02\u024B\u0254" +
7378
+ "\x03\x02\x02\x02\u024C\u0254\x05\xBC_\x02\u024D\u024F\x07c\x02\x02\u024E" +
7379
+ "\u024D\x03\x02\x02\x02\u024F\u0250\x03\x02\x02\x02\u0250\u024E\x03\x02" +
7380
+ "\x02\x02\u0250\u0251\x03\x02\x02\x02\u0251\u0254\x03\x02\x02\x02\u0252" +
7381
+ "\u0254\x05(\x15\x02\u0253\u023D\x03\x02\x02\x02\u0253\u023E\x03\x02\x02" +
7382
+ "\x02\u0253\u023F\x03\x02\x02\x02\u0253\u0240\x03\x02\x02\x02\u0253\u0241" +
7383
+ "\x03\x02\x02\x02\u0253\u0242\x03\x02\x02\x02\u0253\u0244\x03\x02\x02\x02" +
7384
+ "\u0253\u0246\x03\x02\x02\x02\u0253\u0248\x03\x02\x02\x02\u0253\u024C\x03" +
7385
+ "\x02\x02\x02\u0253\u024E\x03\x02\x02\x02\u0253\u0252\x03\x02\x02\x02\u0254" +
7386
+ "_\x03\x02\x02\x02\u0255\u0256\x05\f\x07\x02\u0256\u0257\x07\x13\x02\x02" +
7387
+ "\u0257\u0258\x05h5\x02\u0258a\x03\x02\x02\x02\u0259\u025A\x05\f\x07\x02" +
7388
+ "\u025A\u025B\x07\t\x02\x02\u025B\u025C\x05h5\x02\u025Cc\x03\x02\x02\x02" +
7389
+ "\u025D\u0264\x05f4\x02\u025E\u0260\x07q\x02\x02\u025F\u025E\x03\x02\x02" +
7390
+ "\x02\u025F\u0260\x03\x02\x02\x02\u0260\u0261\x03\x02\x02\x02\u0261\u0263" +
7391
+ "\x05f4\x02\u0262\u025F\x03\x02\x02\x02\u0263\u0266\x03\x02\x02\x02\u0264" +
7392
+ "\u0262\x03\x02\x02\x02\u0264\u0265\x03\x02\x02\x02\u0265\u0268\x03\x02" +
7393
+ "\x02\x02\u0266\u0264\x03\x02\x02\x02\u0267\u0269\x07q\x02\x02\u0268\u0267" +
7394
+ "\x03\x02\x02\x02\u0268\u0269\x03\x02\x02\x02\u0269e\x03\x02\x02\x02\u026A" +
7395
+ "\u026B\x05\xF8}\x02\u026B\u026C\x05\x0E\b\x02\u026C\u026D\x05\xF8}\x02" +
7396
+ "\u026Dg\x03\x02\x02\x02\u026E\u0275\x05j6\x02\u026F\u0271\x07q\x02\x02" +
7397
+ "\u0270\u026F\x03\x02\x02\x02\u0270\u0271\x03\x02\x02\x02\u0271\u0272\x03" +
7398
+ "\x02\x02\x02\u0272\u0274\x05j6\x02\u0273\u0270\x03\x02\x02\x02\u0274\u0277" +
7399
+ "\x03\x02\x02\x02\u0275\u0273\x03\x02\x02\x02\u0275\u0276\x03\x02\x02\x02" +
7400
+ "\u0276\u0279\x03\x02\x02\x02\u0277\u0275\x03\x02\x02\x02\u0278\u027A\x07" +
7401
+ "q\x02\x02\u0279\u0278\x03\x02\x02\x02\u0279\u027A\x03\x02\x02\x02\u027A" +
7402
+ "i\x03\x02\x02\x02\u027B\u027C\x05\f\x07\x02\u027C\u027D\x05l7\x02\u027D" +
7403
+ "\u027E\x05\x0E\b\x02\u027E\u027F\x05\xDEp\x02\u027Fk\x03\x02\x02\x02\u0280" +
7404
+ "\u0281\x05\xD6l\x02\u0281m\x03\x02\x02\x02\u0282\u0283\x05\xD6l\x02\u0283" +
7405
+ "o\x03\x02\x02\x02\u0284\u0285\x07\b\x02\x02\u0285\u0286\x05h5\x02\u0286" +
7406
+ "q\x03\x02\x02\x02\u0287\u0288\x05\f\x07\x02\u0288\u0289\x07\x10\x02\x02" +
7407
+ "\u0289\u028A\x05z>\x02\u028A\u0294\x03\x02\x02\x02\u028B\u028C\x05\f\x07" +
7408
+ "\x02\u028C\u028D\x07\x11\x02\x02\u028D\u028E\x05z>\x02\u028E\u0294\x03" +
7409
+ "\x02\x02\x02\u028F\u0290\x05\f\x07\x02\u0290\u0291\x07\x0F\x02\x02\u0291" +
7410
+ "\u0292\x05z>\x02\u0292\u0294\x03\x02\x02\x02\u0293\u0287\x03\x02\x02\x02" +
7411
+ "\u0293\u028B\x03\x02\x02\x02\u0293\u028F\x03\x02\x02\x02\u0294s\x03\x02" +
7412
+ "\x02\x02\u0295\u0296\x07\v\x02\x02\u0296\u0297\x05x=\x02\u0297u\x03\x02" +
7413
+ "\x02\x02\u0298\u029C\x05b2\x02\u0299\u029C\x05`1\x02\u029A\u029C\x05r" +
7414
+ ":\x02\u029B\u0298\x03\x02\x02\x02\u029B\u0299\x03\x02\x02\x02\u029B\u029A" +
7415
+ "\x03\x02\x02\x02\u029Cw\x03\x02\x02\x02\u029D\u02A2\x07k\x02\x02\u029E" +
7416
+ "\u02A1\x05v<\x02\u029F\u02A1\x07\x7F\x02\x02\u02A0\u029E\x03\x02\x02\x02" +
7417
+ "\u02A0\u029F\x03\x02\x02\x02\u02A1\u02A4\x03\x02\x02\x02\u02A2\u02A0\x03" +
7418
+ "\x02\x02\x02\u02A2\u02A3\x03\x02\x02\x02\u02A3\u02A5\x03\x02\x02\x02\u02A4" +
7419
+ "\u02A2\x03\x02\x02\x02\u02A5\u02A6\x07l\x02\x02\u02A6y\x03\x02\x02\x02" +
7420
+ "\u02A7\u02AE\x05~@\x02\u02A8\u02AA\x07q\x02\x02\u02A9\u02A8\x03\x02\x02" +
7421
+ "\x02\u02A9\u02AA\x03\x02\x02\x02\u02AA\u02AB\x03\x02\x02\x02\u02AB\u02AD" +
7422
+ "\x05~@\x02\u02AC\u02A9\x03\x02\x02\x02\u02AD\u02B0\x03\x02\x02\x02\u02AE" +
7423
+ "\u02AC\x03\x02\x02\x02\u02AE\u02AF\x03\x02\x02\x02\u02AF\u02B2\x03\x02" +
7424
+ "\x02\x02\u02B0\u02AE\x03\x02\x02\x02\u02B1\u02B3\x07q\x02\x02\u02B2\u02B1" +
7425
+ "\x03\x02\x02\x02\u02B2\u02B3\x03\x02\x02\x02\u02B3{\x03\x02\x02\x02\u02B4" +
7426
+ "\u02B5\x05\f\x07\x02\u02B5\u02B6\x07<\x02\x02\u02B6\u02B7\x05\f\x07\x02" +
7427
+ "\u02B7\u02B8\x05V,\x02\u02B8}\x03\x02\x02\x02\u02B9\u02BB\x07c\x02\x02" +
7428
+ "\u02BA\u02B9\x03\x02\x02\x02\u02BB\u02BE\x03\x02\x02\x02\u02BC\u02BA\x03" +
7429
+ "\x02\x02\x02\u02BC\u02BD\x03\x02\x02\x02\u02BD\u02BF\x03\x02\x02\x02\u02BE" +
7430
+ "\u02BC\x03\x02\x02\x02\u02BF\u02C1\x05n8\x02\u02C0\u02C2\x05|?\x02\u02C1" +
7431
+ "\u02C0\x03\x02\x02\x02\u02C1\u02C2\x03\x02\x02\x02\u02C2\u02C3\x03\x02" +
7432
+ "\x02\x02\u02C3\u02C4\x07Z\x02\x02\u02C4\u02C5\x05\xDEp\x02\u02C5\u02D5" +
7433
+ "\x03\x02\x02\x02\u02C6\u02C8\x07c\x02\x02\u02C7\u02C6\x03\x02\x02\x02" +
7434
+ "\u02C8\u02CB\x03\x02\x02\x02\u02C9\u02C7\x03\x02\x02\x02\u02C9\u02CA\x03" +
7435
+ "\x02\x02\x02\u02CA\u02CC\x03\x02\x02\x02\u02CB\u02C9\x03\x02\x02\x02\u02CC" +
7436
+ "\u02CE\x05n8\x02\u02CD\u02CF\x05|?\x02\u02CE\u02CD\x03\x02\x02\x02\u02CE" +
7437
+ "\u02CF\x03\x02\x02\x02\u02CF\u02D2\x03\x02\x02\x02\u02D0\u02D1\x07G\x02" +
7438
+ "\x02\u02D1\u02D3\x05\x80A\x02\u02D2\u02D0\x03\x02\x02\x02\u02D2\u02D3" +
7439
+ "\x03\x02\x02\x02\u02D3\u02D5\x03\x02\x02\x02\u02D4\u02BC\x03\x02\x02\x02" +
7440
+ "\u02D4\u02C9\x03\x02\x02\x02\u02D5\x7F\x03\x02\x02\x02\u02D6\u02D7\x05" +
7441
+ "\xDEp\x02\u02D7\x81\x03\x02\x02\x02\u02D8\u02DB\x05\x88E\x02\u02D9\u02DB" +
7442
+ "\x05\x8AF\x02\u02DA\u02D8\x03\x02\x02\x02\u02DA\u02D9\x03\x02\x02\x02" +
7443
+ "\u02DB\x83\x03\x02\x02\x02\u02DC\u02DD\x07\x84\x02\x02\u02DD\u02E0\x05" +
7444
+ "\xDEp\x02\u02DE\u02E0\x05\x88E\x02\u02DF\u02DC\x03\x02\x02\x02\u02DF\u02DE" +
7445
+ "\x03\x02\x02\x02\u02E0\x85\x03\x02\x02\x02\u02E1\u02E6\x05\xDEp\x02\u02E2" +
7446
+ "\u02E3\x07q\x02\x02\u02E3\u02E5\x05\xDEp\x02\u02E4\u02E2\x03\x02\x02\x02" +
7447
+ "\u02E5\u02E8\x03\x02\x02\x02\u02E6\u02E4\x03\x02\x02\x02\u02E6\u02E7\x03" +
7448
+ "\x02\x02\x02\u02E7\u02EA\x03\x02\x02\x02\u02E8\u02E6\x03\x02\x02\x02\u02E9" +
7449
+ "\u02EB\x07q\x02\x02\u02EA\u02E9\x03\x02\x02\x02\u02EA\u02EB\x03\x02\x02" +
7450
+ "\x02\u02EB\x87\x03\x02\x02\x02\u02EC\u02ED\x07 \x02\x02\u02ED\u02EE\x05" +
7451
+ "\x86D\x02\u02EE\x89\x03\x02\x02\x02\u02EF\u02F0\x07\r\x02\x02\u02F0\u02F1" +
7452
+ "\x05\x86D\x02\u02F1\x8B\x03\x02\x02\x02\u02F2\u02F9\x05\x90I\x02\u02F3" +
7453
+ "\u02F5\x07q\x02\x02\u02F4\u02F3\x03\x02\x02\x02\u02F4\u02F5\x03\x02\x02" +
7454
+ "\x02\u02F5\u02F6\x03\x02\x02\x02\u02F6\u02F8\x05\x90I\x02\u02F7\u02F4" +
7455
+ "\x03\x02\x02\x02\u02F8\u02FB\x03\x02\x02\x02\u02F9\u02F7\x03\x02\x02\x02" +
7456
+ "\u02F9\u02FA\x03\x02\x02\x02\u02FA\u02FD\x03\x02\x02\x02\u02FB\u02F9\x03" +
7457
+ "\x02\x02\x02\u02FC\u02FE\x07q\x02\x02\u02FD\u02FC\x03\x02\x02\x02\u02FD" +
7458
+ "\u02FE\x03\x02\x02\x02\u02FE\x8D\x03\x02\x02\x02\u02FF\u0300\x05\xD6l" +
7459
+ "\x02\u0300\x8F\x03\x02\x02\x02\u0301\u0303\x07c\x02\x02\u0302\u0301\x03" +
7460
+ "\x02\x02\x02\u0303\u0306\x03\x02\x02\x02\u0304\u0302\x03\x02\x02\x02\u0304" +
7461
+ "\u0305\x03\x02\x02\x02\u0305\u0307\x03\x02\x02\x02\u0306\u0304\x03\x02" +
7462
+ "\x02\x02\u0307\u0308\x05\x8EH\x02\u0308\u0309\x05\x0E\b\x02\u0309\u030A" +
7463
+ "\x05@!\x02\u030A\x91\x03\x02\x02\x02\u030B\u031E\x05\x96L\x02\u030C\u031E" +
7464
+ "\x05p9\x02\u030D\u031E\x05\x94K\x02\u030E\u031E\x05t;\x02\u030F\u031E" +
7465
+ "\x05\xA6T\x02\u0310\u031E\x05\xB8]\x02\u0311\u031E\x05\xA2R\x02\u0312" +
7466
+ "\u031E\x05\xA4S\x02\u0313\u031E\x05\xB2Z\x02\u0314\u031E\x05\xAEX\x02" +
7467
+ "\u0315\u031E\x05\xA8U\x02\u0316\u031E\x05\x88E\x02\u0317\u031E\x05\x8A" +
7468
+ "F\x02\u0318\u031E\x05\x9CO\x02\u0319\u031E\x05\xBA^\x02\u031A\u031E\x05" +
7469
+ "\xBC_\x02\u031B\u031E\x05\xBE`\x02\u031C\u031E\x05(\x15\x02\u031D\u030B" +
7470
+ "\x03\x02\x02\x02\u031D\u030C\x03\x02\x02\x02\u031D\u030D\x03\x02\x02\x02" +
7471
+ "\u031D\u030E\x03\x02\x02\x02\u031D\u030F\x03\x02\x02\x02\u031D\u0310\x03" +
7472
+ "\x02\x02\x02\u031D\u0311\x03\x02\x02\x02\u031D\u0312\x03\x02\x02\x02\u031D" +
7448
7473
  "\u0313\x03\x02\x02\x02\u031D\u0314\x03\x02\x02\x02\u031D\u0315\x03\x02" +
7449
7474
  "\x02\x02\u031D\u0316\x03\x02\x02\x02\u031D\u0317\x03\x02\x02\x02\u031D" +
7450
7475
  "\u0318\x03\x02\x02\x02\u031D\u0319\x03\x02\x02\x02\u031D\u031A\x03\x02" +
7451
7476
  "\x02\x02\u031D\u031B\x03\x02\x02\x02\u031D\u031C\x03\x02\x02\x02\u031E" +
7452
7477
  "\x93\x03\x02\x02\x02\u031F\u0320\x05r:\x02\u0320\x95\x03\x02\x02\x02\u0321" +
7453
7478
  "\u0322\x05\f\x07\x02\u0322\u0323\x07\f\x02\x02\u0323\u0324\x05\x98M\x02" +
7454
- "\u0324\x97\x03\x02\x02\x02\u0325\u032C\x05\x9AN\x02\u0326\u0328\x07p\x02" +
7479
+ "\u0324\x97\x03\x02\x02\x02\u0325\u032C\x05\x9AN\x02\u0326\u0328\x07q\x02" +
7455
7480
  "\x02\u0327\u0326\x03\x02\x02\x02\u0327\u0328\x03\x02\x02\x02\u0328\u0329" +
7456
7481
  "\x03\x02\x02\x02\u0329\u032B\x05\x9AN\x02\u032A\u0327\x03\x02\x02\x02" +
7457
7482
  "\u032B\u032E\x03\x02\x02\x02\u032C\u032A\x03\x02\x02\x02\u032C\u032D\x03" +
7458
7483
  "\x02\x02\x02\u032D\u0330\x03\x02\x02\x02\u032E\u032C\x03\x02\x02\x02\u032F" +
7459
- "\u0331\x07p\x02\x02\u0330\u032F\x03\x02\x02\x02\u0330\u0331\x03\x02\x02" +
7484
+ "\u0331\x07q\x02\x02\u0330\u032F\x03\x02\x02\x02\u0330\u0331\x03\x02\x02" +
7460
7485
  "\x02\u0331\x99\x03\x02\x02\x02\u0332\u0335\x05\xEEx\x02\u0333\u0335\x05" +
7461
7486
  "j6\x02\u0334\u0332\x03\x02\x02\x02\u0334\u0333\x03\x02\x02\x02\u0335\x9B" +
7462
7487
  "\x03\x02\x02\x02\u0336\u0337\x05\f\x07\x02\u0337\u0338\x07\x14\x02\x02" +
7463
7488
  "\u0338\u0339\x05\x9EP\x02\u0339\x9D\x03\x02\x02\x02\u033A\u0341\x05\xA0" +
7464
- "Q\x02\u033B\u033D\x07p\x02\x02\u033C\u033B\x03\x02\x02\x02\u033C\u033D" +
7489
+ "Q\x02\u033B\u033D\x07q\x02\x02\u033C\u033B\x03\x02\x02\x02\u033C\u033D" +
7465
7490
  "\x03\x02\x02\x02\u033D\u033E\x03\x02\x02\x02\u033E\u0340\x05\xA0Q\x02" +
7466
7491
  "\u033F\u033C\x03\x02\x02\x02\u0340\u0343\x03\x02\x02\x02\u0341\u033F\x03" +
7467
7492
  "\x02\x02\x02\u0341\u0342\x03\x02\x02\x02\u0342\u0345\x03\x02\x02\x02\u0343" +
7468
- "\u0341\x03\x02\x02\x02\u0344\u0346\x07p\x02\x02\u0345\u0344\x03\x02\x02" +
7493
+ "\u0341\x03\x02\x02\x02\u0344\u0346\x07q\x02\x02\u0345\u0344\x03\x02\x02" +
7469
7494
  "\x02\u0345\u0346\x03\x02\x02\x02\u0346\x9F\x03\x02\x02\x02\u0347\u0348" +
7470
7495
  "\x05\f\x07\x02\u0348\u034A\x05P)\x02\u0349\u034B\x050\x19\x02\u034A\u0349" +
7471
7496
  "\x03\x02\x02\x02\u034A\u034B\x03\x02\x02\x02\u034B\u0352\x03\x02\x02\x02" +
@@ -7478,26 +7503,26 @@ MalloyParser._serializedATNSegment1 = "\u01B2\x050\x19\x02\u01B1\u01B0\x03\x02\x
7478
7503
  "\u035C\x05\f\x07\x02\u035C\u035D\t\x05\x02\x02\u035D\u035E\x05\xEAv\x02" +
7479
7504
  "\u035E\xA7\x03\x02\x02\x02\u035F\u0360\x07\x15\x02\x02\u0360\u0361\x05" +
7480
7505
  "\xAAV\x02\u0361\xA9\x03\x02\x02\x02\u0362\u0369\x05\xACW\x02\u0363\u0365" +
7481
- "\x07p\x02\x02\u0364\u0363\x03\x02\x02\x02\u0364\u0365\x03\x02\x02\x02" +
7506
+ "\x07q\x02\x02\u0364\u0363\x03\x02\x02\x02\u0364\u0365\x03\x02\x02\x02" +
7482
7507
  "\u0365\u0366\x03\x02\x02\x02\u0366\u0368\x05\xACW\x02\u0367\u0364\x03" +
7483
7508
  "\x02\x02\x02\u0368\u036B\x03\x02\x02\x02\u0369\u0367\x03\x02\x02\x02\u0369" +
7484
7509
  "\u036A\x03\x02\x02\x02\u036A\u036D\x03\x02\x02\x02\u036B\u0369\x03\x02" +
7485
- "\x02\x02\u036C\u036E\x07p\x02\x02\u036D\u036C\x03\x02\x02\x02\u036D\u036E" +
7486
- "\x03\x02\x02\x02\u036E\xAB\x03\x02\x02\x02\u036F\u0372\x07\x8E\x02\x02" +
7510
+ "\x02\x02\u036C\u036E\x07q\x02\x02\u036D\u036C\x03\x02\x02\x02\u036D\u036E" +
7511
+ "\x03\x02\x02\x02\u036E\xAB\x03\x02\x02\x02\u036F\u0372\x07\x8F\x02\x02" +
7487
7512
  "\u0370\u0372\x05\xF8}\x02\u0371\u036F\x03\x02\x02\x02\u0371\u0370\x03" +
7488
7513
  "\x02\x02\x02\u0372\u0374\x03\x02\x02\x02\u0373\u0375\t\x06\x02\x02\u0374" +
7489
7514
  "\u0373\x03\x02\x02\x02\u0374\u0375\x03\x02\x02\x02\u0375\xAD\x03\x02\x02" +
7490
- "\x02\u0376\u0377\x07\x12\x02\x02\u0377\u0378\x07\x8E\x02\x02\u0378\xAF" +
7515
+ "\x02\u0376\u0377\x07\x12\x02\x02\u0377\u0378\x07\x8F\x02\x02\u0378\xAF" +
7491
7516
  "\x03\x02\x02\x02\u0379\u037A\x07(\x02\x02\u037A\u037E\x05\xF8}\x02\u037B" +
7492
7517
  "\u037C\x07(\x02\x02\u037C\u037E\x05\xDEp\x02\u037D\u0379\x03\x02\x02\x02" +
7493
7518
  "\u037D\u037B\x03\x02\x02\x02\u037E\xB1\x03\x02\x02\x02\u037F\u0380\x07" +
7494
- "\x1F\x02\x02\u0380\u0382\x07\x8E\x02\x02\u0381\u0383\x05\xB0Y\x02\u0382" +
7519
+ "\x1F\x02\x02\u0380\u0382\x07\x8F\x02\x02\u0381\u0383\x05\xB0Y\x02\u0382" +
7495
7520
  "\u0381\x03\x02\x02\x02\u0382\u0383\x03\x02\x02\x02\u0383\xB3\x03\x02\x02" +
7496
- "\x02\u0384\u0387\x05\xF4{\x02\u0385\u0386\x07q\x02\x02\u0386\u0388\x07" +
7497
- "z\x02\x02\u0387\u0385\x03\x02\x02\x02\u0387\u0388\x03\x02\x02\x02\u0388" +
7498
- "\u038B\x03\x02\x02\x02\u0389\u038B\x07z\x02\x02\u038A\u0384\x03\x02\x02" +
7521
+ "\x02\u0384\u0387\x05\xF4{\x02\u0385\u0386\x07r\x02\x02\u0386\u0388\x07" +
7522
+ "{\x02\x02\u0387\u0385\x03\x02\x02\x02\u0387\u0388\x03\x02\x02\x02\u0388" +
7523
+ "\u038B\x03\x02\x02\x02\u0389\u038B\x07{\x02\x02\u038A\u0384\x03\x02\x02" +
7499
7524
  "\x02\u038A\u0389\x03\x02\x02\x02\u038B\xB5\x03\x02\x02\x02\u038C\u0393" +
7500
- "\x05\xB4[\x02\u038D\u038F\x07p\x02\x02\u038E\u038D\x03\x02\x02\x02\u038E" +
7525
+ "\x05\xB4[\x02\u038D\u038F\x07q\x02\x02\u038E\u038D\x03\x02\x02\x02\u038E" +
7501
7526
  "\u038F\x03\x02\x02\x02\u038F\u0390\x03\x02\x02\x02\u0390\u0392\x05\xB4" +
7502
7527
  "[\x02\u0391\u038E\x03\x02\x02\x02\u0392\u0395\x03\x02\x02\x02\u0393\u0391" +
7503
7528
  "\x03\x02\x02\x02\u0393\u0394\x03\x02\x02\x02\u0394\xB7\x03\x02\x02\x02" +
@@ -7506,7 +7531,7 @@ MalloyParser._serializedATNSegment1 = "\u01B2\x050\x19\x02\u01B1\u01B0\x03\x02\x
7506
7531
  "\x03\x02\x02\x02\u039A\u039B\x03\x02\x02\x02\u039B\xB9\x03\x02\x02\x02" +
7507
7532
  "\u039C\u039D\x07\x1B\x02\x02\u039D\u039E\x05\xC0a\x02\u039E\xBB\x03\x02" +
7508
7533
  "\x02\x02\u039F\u03A0\x07!\x02\x02\u03A0\u03A1\x05\xC8e\x02\u03A1\xBD\x03" +
7509
- "\x02\x02\x02\u03A2\u03A3\x07b\x02\x02\u03A3\xBF\x03\x02\x02\x02\u03A4" +
7534
+ "\x02\x02\x02\u03A2\u03A3\x07c\x02\x02\u03A3\xBF\x03\x02\x02\x02\u03A4" +
7510
7535
  "\u03A5\t\x07\x02\x02\u03A5\xC1\x03\x02\x02\x02\u03A6\u03A7\t\b\x02\x02" +
7511
7536
  "\u03A7\xC3\x03\x02\x02\x02\u03A8\u03A9\t\t\x02\x02\u03A9\xC5\x03\x02\x02" +
7512
7537
  "\x02\u03AA\u03AB\t\n\x02\x02\u03AB\xC7\x03\x02\x02\x02\u03AC\u03AF\x05" +
@@ -7515,13 +7540,13 @@ MalloyParser._serializedATNSegment1 = "\u01B2\x050\x19\x02\u01B1\u01B0\x03\x02\x
7515
7540
  "\u03B1\xCB\x03\x02\x02\x02\u03B2\u03B3\t\f\x02\x02\u03B3\xCD\x03\x02\x02" +
7516
7541
  "\x02\u03B4\u03BC\x05\xC8e\x02\u03B5\u03BC\x05\xCCg\x02\u03B6\u03BC\x05" +
7517
7542
  "\xD0i\x02\u03B7\u03BC\x07E\x02\x02\u03B8\u03BC\t\r\x02\x02\u03B9\u03BC" +
7518
- "\x07]\x02\x02\u03BA\u03BC\x07D\x02\x02\u03BB\u03B4\x03\x02\x02\x02\u03BB" +
7543
+ "\x07^\x02\x02\u03BA\u03BC\x07D\x02\x02\u03BB\u03B4\x03\x02\x02\x02\u03BB" +
7519
7544
  "\u03B5\x03\x02\x02\x02\u03BB\u03B6\x03\x02\x02\x02\u03BB\u03B7\x03\x02" +
7520
7545
  "\x02\x02\u03BB\u03B8\x03\x02\x02\x02\u03BB\u03B9\x03\x02\x02\x02\u03BB" +
7521
- "\u03BA\x03\x02\x02\x02\u03BC\xCF\x03\x02\x02\x02\u03BD\u03C5\x07\x84\x02" +
7522
- "\x02\u03BE\u03C5\x07\x85\x02\x02\u03BF\u03C5\x07\x86\x02\x02\u03C0\u03C5" +
7523
- "\x07\x89\x02\x02\u03C1\u03C5\x07\x88\x02\x02\u03C2\u03C5\x07\x87\x02\x02" +
7524
- "\u03C3\u03C5\x07\x8A\x02\x02\u03C4\u03BD\x03\x02\x02\x02\u03C4\u03BE\x03" +
7546
+ "\u03BA\x03\x02\x02\x02\u03BC\xCF\x03\x02\x02\x02\u03BD\u03C5\x07\x85\x02" +
7547
+ "\x02\u03BE\u03C5\x07\x86\x02\x02\u03BF\u03C5\x07\x87\x02\x02\u03C0\u03C5" +
7548
+ "\x07\x8A\x02\x02\u03C1\u03C5\x07\x89\x02\x02\u03C2\u03C5\x07\x88\x02\x02" +
7549
+ "\u03C3\u03C5\x07\x8B\x02\x02\u03C4\u03BD\x03\x02\x02\x02\u03C4\u03BE\x03" +
7525
7550
  "\x02\x02\x02\u03C4\u03BF\x03\x02\x02\x02\u03C4\u03C0\x03\x02\x02\x02\u03C4" +
7526
7551
  "\u03C1\x03\x02\x02\x02\u03C4\u03C2\x03\x02\x02\x02\u03C4\u03C3\x03\x02" +
7527
7552
  "\x02\x02\u03C5\xD1\x03\x02\x02\x02\u03C6\u03C7\x05\xC8e\x02\u03C7\xD3" +
@@ -7530,120 +7555,122 @@ MalloyParser._serializedATNSegment1 = "\u01B2\x050\x19\x02\u01B1\u01B0\x03\x02\x
7530
7555
  "\u03CD\xD9\x03\x02\x02\x02\u03CE\u03CF\t\x10\x02\x02\u03CF\xDB\x03\x02" +
7531
7556
  "\x02\x02\u03D0\u03D3\x05\xC4c\x02\u03D1\u03D3\x05\xC8e\x02\u03D2\u03D0" +
7532
7557
  "\x03\x02\x02\x02\u03D2\u03D1\x03\x02\x02\x02\u03D3\xDD\x03\x02\x02\x02" +
7533
- "\u03D4\u03D5\bp\x01\x02\u03D5\u0423\x05\xF4{\x02\u03D6\u0423\x05\xCEh" +
7534
- "\x02\u03D7\u03D8\x07y\x02\x02\u03D8\u0423\x05\xDEp\x17\u03D9\u03DA\x07" +
7535
- "C\x02\x02\u03DA\u0423\x05\xDEp\x0E\u03DB\u03DC\x07*\x02\x02\u03DC\u03DD" +
7536
- "\x07f\x02\x02\u03DD\u03DE\x05\xDEp\x02\u03DE\u03DF\x07$\x02\x02\u03DF" +
7537
- "\u03E0\x05\xDCo\x02\u03E0\u03E1\x07g\x02\x02\u03E1\u0423\x03\x02\x02\x02" +
7538
- "\u03E2\u03E3\x07,\x02\x02\u03E3\u03E4\x07f\x02\x02\u03E4\u03E5\x070\x02" +
7539
- "\x02\u03E5\u03E6\x05\xDEp\x02\u03E6\u03E7\x07g\x02\x02\u03E7\u0423\x03" +
7540
- "\x02\x02\x02\u03E8\u03E9\x05\xF4{\x02\u03E9\u03EA\x07q\x02\x02\u03EA\u03EC" +
7541
- "\x03\x02\x02\x02\u03EB\u03E8\x03\x02\x02\x02\u03EB\u03EC\x03\x02\x02\x02" +
7542
- "\u03EC\u03ED\x03\x02\x02\x02\u03ED\u03EE\x05\xC2b\x02\u03EE\u03F1\x07" +
7543
- "f\x02\x02\u03EF\u03F2\x05\xDEp\x02\u03F0\u03F2\x07z\x02\x02\u03F1\u03EF" +
7544
- "\x03\x02\x02\x02\u03F1\u03F0\x03\x02\x02\x02\u03F1\u03F2\x03\x02\x02\x02" +
7545
- "\u03F2\u03F3\x03\x02\x02\x02\u03F3\u03F4\x07g\x02\x02\u03F4\u0423\x03" +
7546
- "\x02\x02\x02\u03F5\u03F6\x07f\x02\x02\u03F6\u03F7\x05\xE0q\x02\u03F7\u03F8" +
7547
- "\x07g\x02\x02\u03F8\u0423\x03\x02\x02\x02\u03F9\u03FA\x05\xF4{\x02\u03FA" +
7548
- "\u03FB\x07q\x02\x02\u03FB\u03FD\x03\x02\x02\x02\u03FC\u03F9\x03\x02\x02" +
7549
- "\x02\u03FC\u03FD\x03\x02\x02\x02\u03FD\u03FE\x03\x02\x02\x02\u03FE\u03FF" +
7550
- "\x05\xD6l\x02\u03FF\u0401\x07f\x02\x02\u0400\u0402\x05\xE6t\x02\u0401" +
7551
- "\u0400\x03\x02\x02\x02\u0401\u0402\x03\x02\x02\x02\u0402\u0403\x03\x02" +
7552
- "\x02\x02\u0403\u0404\x07g\x02\x02\u0404\u0423\x03\x02\x02\x02\u0405\u040A" +
7553
- "\x05\xD6l\x02\u0406\u0408\x07n\x02\x02\u0407\u0409\x05\xC4c\x02\u0408" +
7554
- "\u0407\x03\x02\x02\x02\u0408\u0409\x03\x02\x02\x02\u0409\u040B\x03\x02" +
7555
- "\x02\x02\u040A\u0406\x03\x02\x02\x02\u040A\u040B\x03\x02\x02\x02\u040B" +
7556
- "\u040E\x03\x02\x02\x02\u040C\u040E\x05\xD8m\x02\u040D\u0405\x03\x02\x02" +
7557
- "\x02\u040D\u040C\x03\x02\x02\x02\u040E\u040F\x03\x02\x02\x02\u040F\u0411" +
7558
- "\x07f\x02\x02\u0410\u0412\x05\xE6t\x02\u0411\u0410\x03\x02\x02\x02\u0411" +
7559
- "\u0412\x03\x02\x02\x02\u0412\u0413\x03\x02\x02\x02\u0413\u0414\x07g\x02" +
7560
- "\x02\u0414\u0423\x03\x02\x02\x02\u0415\u0423\x05\xE2r\x02\u0416\u0417" +
7561
- "\x05\xDAn\x02\u0417\u0418\x07f\x02\x02\u0418\u041D\x05\xDEp\x02\u0419" +
7562
- "\u041A\x07p\x02\x02\u041A\u041C\x05\xF8}\x02\u041B\u0419\x03\x02\x02\x02" +
7563
- "\u041C\u041F\x03\x02\x02\x02\u041D\u041B\x03\x02\x02\x02\u041D\u041E\x03" +
7564
- "\x02\x02\x02\u041E\u0420\x03\x02\x02\x02\u041F\u041D\x03\x02\x02\x02\u0420" +
7565
- "\u0421\x07g\x02\x02\u0421\u0423\x03\x02\x02\x02\u0422\u03D4\x03\x02\x02" +
7566
- "\x02\u0422\u03D6\x03\x02\x02\x02\u0422\u03D7\x03\x02\x02\x02\u0422\u03D9" +
7567
- "\x03\x02\x02\x02\u0422\u03DB\x03\x02\x02\x02\u0422\u03E2\x03\x02\x02\x02" +
7568
- "\u0422\u03EB\x03\x02\x02\x02\u0422\u03F5\x03\x02\x02\x02\u0422\u03FC\x03" +
7569
- "\x02\x02\x02\u0422\u040D\x03\x02\x02\x02\u0422\u0415\x03\x02\x02\x02\u0422" +
7570
- "\u0416\x03\x02\x02\x02\u0423\u045A\x03\x02\x02\x02\u0424\u0425\f\x16\x02" +
7571
- "\x02\u0425\u0426\t\x11\x02\x02\u0426\u0459\x05\xDEp\x17\u0427\u0428\f" +
7572
- "\x15\x02\x02\u0428\u0429\t\x12\x02\x02\u0429\u0459\x05\xDEp\x16\u042A" +
7573
- "\u042B\f\x14\x02\x02\u042B\u042C\x07T\x02\x02\u042C\u0459\x05\xDEp\x15" +
7574
- "\u042D\u042E\f\x10\x02\x02\u042E\u042F\x05\xC6d\x02\u042F\u0430\x05\xDE" +
7575
- "p\x11\u0430\u0459\x03\x02\x02\x02\u0431\u0432\f\r\x02\x02\u0432\u0433" +
7576
- "\x07#\x02\x02\u0433\u0459\x05\xDEp\x0E\u0434\u0435\f\f\x02\x02\u0435\u0436" +
7577
- "\x07H\x02\x02\u0436\u0459\x05\xDEp\r\u0437\u0438\f\v\x02\x02\u0438\u0439" +
7578
- "\x07\x82\x02\x02\u0439\u0459\x05\xDEp\f\u043A\u043B\f\x1D\x02\x02\u043B" +
7579
- "\u043C\x07j\x02\x02\u043C\u043D\x05\x84C\x02\u043D\u043E\x07k\x02\x02" +
7580
- "\u043E\u0459\x03\x02\x02\x02\u043F\u0440\f\x1B\x02\x02\u0440\u0459\x05" +
7581
- "\xD8m\x02\u0441\u0442\f\x1A\x02\x02\u0442\u0443\x07q\x02\x02\u0443\u0459" +
7582
- "\x05\xD8m\x02\u0444\u0445\f\x19\x02\x02\u0445\u0446\x07l\x02\x02\u0446" +
7583
- "\u0459\x05\xDCo\x02\u0447\u0448\f\x18\x02\x02\u0448\u0449\x07m\x02\x02" +
7584
- "\u0449\u0459\x05\xDCo\x02\u044A\u044B\f\x13\x02\x02\u044B\u044C\x076\x02" +
7585
- "\x02\u044C\u044D\x05\xDEp\x02\u044D\u044E\x05\xD8m\x02\u044E\u0459\x03" +
7586
- "\x02\x02\x02\u044F\u0450\f\x12\x02\x02\u0450\u0451\x07c\x02\x02\u0451" +
7587
- "\u0459\x05\xE0q\x02\u0452\u0453\f\x11\x02\x02\u0453\u0454\x07}\x02\x02" +
7588
- "\u0454\u0459\x05\xE0q\x02\u0455\u0456\f\x0F\x02\x02\u0456\u0457\x07\x83" +
7589
- "\x02\x02\u0457\u0459\x05\xE0q\x02\u0458\u0424\x03\x02\x02\x02\u0458\u0427" +
7590
- "\x03\x02\x02\x02\u0458\u042A\x03\x02\x02\x02\u0458\u042D\x03\x02\x02\x02" +
7591
- "\u0458\u0431\x03\x02\x02\x02\u0458\u0434\x03\x02\x02\x02\u0458\u0437\x03" +
7592
- "\x02\x02\x02\u0458\u043A\x03\x02\x02\x02\u0458\u043F\x03\x02\x02\x02\u0458" +
7593
- "\u0441\x03\x02\x02\x02\u0458\u0444\x03\x02\x02\x02\u0458\u0447\x03\x02" +
7594
- "\x02\x02\u0458\u044A\x03\x02\x02\x02\u0458\u044F\x03\x02\x02\x02\u0458" +
7595
- "\u0452\x03";
7596
- MalloyParser._serializedATNSegment2 = "\x02\x02\x02\u0458\u0455\x03\x02\x02\x02\u0459\u045C\x03\x02\x02\x02\u045A" +
7597
- "\u0458\x03\x02\x02\x02\u045A\u045B\x03\x02\x02\x02\u045B\xDF\x03\x02\x02" +
7598
- "\x02\u045C\u045A\x03\x02\x02\x02\u045D\u045F\x07f\x02\x02\u045E\u0460" +
7599
- "\x05\xC6d\x02\u045F\u045E\x03\x02\x02\x02\u045F\u0460\x03\x02\x02\x02" +
7600
- "\u0460\u0461\x03\x02\x02\x02\u0461\u0462\x05\xDEp\x02\u0462\u0463\x07" +
7601
- "g\x02\x02\u0463\u0469\x03\x02\x02\x02\u0464\u0466\x05\xC6d\x02\u0465\u0464" +
7602
- "\x03\x02\x02\x02\u0465\u0466\x03\x02\x02\x02\u0466\u0467\x03\x02\x02\x02" +
7603
- "\u0467\u0469\x05\xDEp\x02\u0468\u045D\x03\x02\x02\x02\u0468\u0465\x03" +
7604
- "\x02\x02\x02\u0469\xE1\x03\x02\x02\x02\u046A\u046C\x05\xE4s\x02\u046B" +
7605
- "\u046A\x03\x02\x02\x02\u046C\u046D\x03\x02\x02\x02\u046D\u046B\x03\x02" +
7606
- "\x02\x02\u046D\u046E\x03\x02\x02\x02\u046E\u0471\x03\x02\x02\x02\u046F" +
7607
- "\u0470\x071\x02\x02\u0470\u0472\x05\xDEp\x02\u0471\u046F\x03\x02\x02\x02" +
7608
- "\u0471\u0472\x03\x02\x02\x02\u0472\xE3\x03\x02\x02\x02\u0473\u0475\x07" +
7609
- "I\x02\x02\u0474\u0476\x05\xDEp\x02\u0475\u0474\x03\x02\x02\x02\u0475\u0476" +
7610
- "\x03\x02\x02\x02\u0476\u0477\x03\x02\x02\x02\u0477\u0478\x07X\x02\x02" +
7611
- "\u0478\u0479\x05\xE0q\x02\u0479\xE5\x03\x02\x02\x02\u047A\u047F\x05\xDE" +
7612
- "p\x02\u047B\u047C\x07p\x02\x02\u047C\u047E\x05\xDEp\x02\u047D\u047B\x03" +
7613
- "\x02\x02\x02\u047E\u0481\x03\x02\x02\x02\u047F\u047D\x03\x02\x02\x02\u047F" +
7614
- "\u0480\x03\x02\x02\x02\u0480\u0483\x03\x02\x02\x02\u0481\u047F\x03\x02" +
7615
- "\x02\x02\u0482\u0484\x07p\x02\x02\u0483\u0482\x03\x02\x02\x02\u0483\u0484" +
7616
- "\x03\x02\x02\x02\u0484\xE7\x03\x02\x02\x02\u0485\u048C\x05\xF8}\x02\u0486" +
7617
- "\u0488\x07p\x02\x02\u0487\u0486\x03\x02\x02\x02\u0487\u0488\x03\x02\x02" +
7618
- "\x02\u0488\u0489\x03\x02\x02\x02\u0489\u048B\x05\xF8}\x02\u048A\u0487" +
7619
- "\x03\x02\x02\x02\u048B\u048E\x03\x02\x02\x02\u048C\u048A\x03\x02\x02\x02" +
7620
- "\u048C\u048D\x03\x02\x02\x02\u048D\xE9\x03\x02\x02\x02\u048E\u048C\x03" +
7621
- "\x02\x02\x02\u048F\u0496\x05\xF2z\x02\u0490\u0492\x07p\x02\x02\u0491\u0490" +
7622
- "\x03\x02\x02\x02\u0491\u0492\x03\x02\x02\x02\u0492\u0493\x03\x02\x02\x02" +
7623
- "\u0493\u0495\x05\xF2z\x02\u0494\u0491\x03\x02\x02\x02\u0495\u0498\x03" +
7624
- "\x02\x02\x02\u0496\u0494\x03\x02\x02\x02\u0496\u0497\x03\x02\x02\x02\u0497" +
7625
- "\u049A\x03\x02\x02\x02\u0498\u0496\x03\x02\x02\x02\u0499\u049B\x07p\x02" +
7626
- "\x02\u049A\u0499\x03\x02\x02\x02\u049A\u049B\x03\x02\x02\x02\u049B\xEB" +
7627
- "\x03\x02\x02\x02\u049C\u049D\x05\xF4{\x02\u049D\u049E\x07q\x02\x02\u049E" +
7628
- "\u04A0\x03\x02\x02\x02\u049F\u049C\x03\x02\x02\x02\u049F\u04A0\x03\x02" +
7629
- "\x02\x02\u04A0\u04A1\x03\x02\x02\x02\u04A1\u04A2\x07z\x02\x02\u04A2\xED" +
7630
- "\x03\x02\x02\x02\u04A3\u04A4\x05\f\x07\x02\u04A4\u04A6\x05\xF4{\x02\u04A5" +
7631
- "\u04A7\x05\xF0y\x02\u04A6\u04A5\x03\x02\x02\x02\u04A6\u04A7\x03\x02\x02" +
7632
- "\x02\u04A7\xEF\x03\x02\x02\x02\u04A8\u04A9\x07q\x02\x02\u04A9\u04B0\x05" +
7633
- "\xD8m\x02\u04AA\u04AB\x07q\x02\x02\u04AB\u04AC\x05\xC2b\x02\u04AC\u04AD" +
7634
- "\x07f\x02\x02\u04AD\u04AE\x07g\x02\x02\u04AE\u04B0\x03\x02\x02\x02\u04AF" +
7635
- "\u04A8\x03\x02\x02\x02\u04AF\u04AA\x03\x02\x02\x02\u04B0\xF1\x03\x02\x02" +
7636
- "\x02\u04B1\u04B5\x05\xEEx\x02\u04B2\u04B5\x05\xECw\x02\u04B3\u04B5\x05" +
7637
- "j6\x02\u04B4\u04B1\x03\x02\x02\x02\u04B4\u04B2\x03\x02\x02\x02\u04B4\u04B3" +
7638
- "\x03\x02\x02\x02\u04B5\xF3\x03\x02\x02\x02\u04B6\u04BB\x05\xF8}\x02\u04B7" +
7639
- "\u04B8\x07q\x02\x02\u04B8\u04BA\x05\xF8}\x02\u04B9\u04B7\x03\x02\x02\x02" +
7640
- "\u04BA\u04BD\x03\x02\x02\x02\u04BB\u04B9\x03\x02\x02\x02\u04BB\u04BC\x03" +
7641
- "\x02\x02\x02\u04BC\xF5\x03\x02\x02\x02\u04BD\u04BB\x03\x02\x02\x02\u04BE" +
7642
- "\u04BF\x05\xD6l\x02\u04BF\xF7\x03\x02\x02\x02\u04C0\u04C1\x05\xD6l\x02" +
7643
- "\u04C1\xF9\x03\x02\x02\x02\u04C2\u04C3\x05\xDEp\x02\u04C3\u04C4\x07\x02" +
7644
- "\x02\x03\u04C4\xFB\x03\x02\x02\x02\u04C5\u04C6\x05\xD6l\x02\u04C6\xFD" +
7645
- "\x03\x02\x02\x02\u04C7\u04C8\x05\xD6l\x02\u04C8\xFF\x03\x02\x02\x02\u04C9" +
7646
- "\u04CA\x05\xC8e\x02\u04CA\u0101\x03\x02\x02\x02\x85\u0104\u0106\u0112" +
7558
+ "\u03D4\u03D5\bp\x01\x02\u03D5\u0428\x05\xF4{\x02\u03D6\u0428\x05\xCEh" +
7559
+ "\x02\u03D7\u03D8\x07z\x02\x02\u03D8\u0428\x05\xDEp\x18\u03D9\u03DA\x07" +
7560
+ "C\x02\x02\u03DA\u0428\x05\xDEp\x0F\u03DB\u03DC\x07*\x02\x02\u03DC\u03DD" +
7561
+ "\x07g\x02\x02\u03DD\u03DE\x05\xDEp\x02\u03DE\u03DF\x07$\x02\x02\u03DF" +
7562
+ "\u03E0\x05\xDCo\x02\u03E0\u03E1\x07h\x02\x02\u03E1\u0428\x03\x02\x02\x02" +
7563
+ "\u03E2\u03E3\x07,\x02\x02\u03E3\u03E4\x07g\x02\x02\u03E4\u03E5\x070\x02" +
7564
+ "\x02\u03E5\u03E6\x05\xDEp\x02\u03E6\u03E7\x07h\x02\x02\u03E7\u0428\x03" +
7565
+ "\x02\x02\x02\u03E8\u03E9\x07N\x02\x02\u03E9\u03EB\x07r\x02\x02\u03EA\u03E8" +
7566
+ "\x03\x02\x02\x02\u03EA\u03EB\x03\x02\x02\x02\u03EB\u03EC\x03\x02\x02\x02" +
7567
+ "\u03EC\u03ED\x05\xC2b\x02\u03ED\u03F0\x07g\x02\x02\u03EE\u03F1\x05\xDE" +
7568
+ "p\x02\u03EF\u03F1\x07{\x02\x02\u03F0\u03EE\x03\x02\x02\x02\u03F0\u03EF" +
7569
+ "\x03\x02\x02\x02\u03F0\u03F1\x03\x02\x02\x02\u03F1\u03F2\x03\x02\x02\x02" +
7570
+ "\u03F2\u03F3\x07h\x02\x02\u03F3\u0428\x03\x02\x02\x02\u03F4\u03F5\x05" +
7571
+ "\xF4{\x02\u03F5\u03F6\x07r\x02\x02\u03F6\u03F7\x05\xC2b\x02\u03F7\u03F9" +
7572
+ "\x07g\x02\x02\u03F8\u03FA\x05\xDEp\x02\u03F9\u03F8\x03\x02\x02\x02\u03F9" +
7573
+ "\u03FA\x03\x02\x02\x02\u03FA\u03FB\x03\x02\x02\x02\u03FB\u03FC\x07h\x02" +
7574
+ "\x02\u03FC\u0428\x03\x02\x02\x02\u03FD\u03FE\x07g\x02\x02\u03FE\u03FF" +
7575
+ "\x05\xE0q\x02\u03FF\u0400\x07h\x02\x02\u0400\u0428\x03\x02\x02\x02\u0401" +
7576
+ "\u0402\x05\xF4{\x02\u0402\u0403\x07r\x02\x02\u0403\u0404\x05\xD6l\x02" +
7577
+ "\u0404\u0406\x07g\x02\x02\u0405\u0407\x05\xE6t\x02\u0406\u0405\x03\x02" +
7578
+ "\x02\x02\u0406\u0407\x03\x02\x02\x02\u0407\u0408\x03\x02\x02\x02\u0408" +
7579
+ "\u0409\x07h\x02\x02\u0409\u0428\x03\x02\x02\x02\u040A\u040F\x05\xD6l\x02" +
7580
+ "\u040B\u040D\x07o\x02\x02\u040C\u040E\x05\xC4c\x02\u040D\u040C\x03\x02" +
7581
+ "\x02\x02\u040D\u040E\x03\x02\x02\x02\u040E\u0410\x03\x02\x02\x02\u040F" +
7582
+ "\u040B\x03\x02\x02\x02\u040F\u0410\x03\x02\x02\x02\u0410\u0413\x03\x02" +
7583
+ "\x02\x02\u0411\u0413\x05\xD8m\x02\u0412\u040A\x03\x02\x02\x02\u0412\u0411" +
7584
+ "\x03\x02\x02\x02\u0413\u0414\x03\x02\x02\x02\u0414\u0416\x07g\x02\x02" +
7585
+ "\u0415\u0417\x05\xE6t\x02\u0416\u0415\x03\x02\x02\x02\u0416\u0417\x03" +
7586
+ "\x02\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418\u0419\x07h\x02\x02\u0419" +
7587
+ "\u0428\x03\x02\x02\x02\u041A\u0428\x05\xE2r\x02\u041B\u041C\x05\xDAn\x02" +
7588
+ "\u041C\u041D\x07g\x02\x02\u041D\u0422\x05\xDEp\x02\u041E\u041F\x07q\x02" +
7589
+ "\x02\u041F\u0421\x05\xF8}\x02\u0420\u041E\x03\x02\x02\x02\u0421\u0424" +
7590
+ "\x03\x02\x02\x02\u0422\u0420\x03\x02\x02\x02\u0422\u0423\x03\x02\x02\x02" +
7591
+ "\u0423\u0425\x03\x02\x02\x02\u0424\u0422\x03\x02\x02\x02\u0425\u0426\x07" +
7592
+ "h\x02\x02\u0426\u0428\x03\x02\x02\x02\u0427\u03D4\x03\x02\x02\x02\u0427" +
7593
+ "\u03D6\x03\x02\x02\x02\u0427\u03D7\x03\x02\x02\x02\u0427\u03D9\x03\x02" +
7594
+ "\x02\x02\u0427\u03DB\x03\x02\x02\x02\u0427\u03E2\x03\x02\x02\x02\u0427" +
7595
+ "\u03EA\x03\x02\x02\x02\u0427\u03F4\x03\x02\x02\x02\u0427\u03FD\x03\x02" +
7596
+ "\x02\x02\u0427\u0401\x03\x02\x02\x02\u0427\u0412\x03\x02\x02\x02\u0427" +
7597
+ "\u041A\x03\x02\x02\x02\u0427\u041B\x03\x02\x02\x02\u0428\u045F\x03\x02" +
7598
+ "\x02\x02\u0429\u042A\f\x17\x02\x02\u042A\u042B\t\x11\x02\x02\u042B\u045E" +
7599
+ "\x05\xDEp\x18\u042C\u042D\f\x16\x02\x02\u042D\u042E\t\x12\x02\x02\u042E" +
7600
+ "\u045E\x05\xDEp\x17\u042F\u0430\f\x15\x02\x02\u0430\u0431\x07U\x02\x02" +
7601
+ "\u0431\u045E\x05\xDEp\x16\u0432\u0433\f\x11\x02\x02\u0433\u0434\x05\xC6" +
7602
+ "d\x02\u0434\u0435\x05\xDEp\x12\u0435\u045E\x03\x02\x02\x02\u0436\u0437" +
7603
+ "\f\x0E\x02\x02\u0437\u0438\x07#\x02\x02\u0438\u045E\x05\xDEp\x0F\u0439" +
7604
+ "\u043A\f\r\x02\x02\u043A\u043B\x07H\x02\x02\u043B\u045E\x05\xDEp\x0E\u043C" +
7605
+ "\u043D\f\f\x02\x02\u043D\u043E\x07\x83\x02\x02\u043E\u045E\x05\xDEp\r" +
7606
+ "\u043F\u0440\f\x1E\x02\x02\u0440\u0441\x07k\x02\x02\u0441\u0442\x05\x84" +
7607
+ "C\x02\u0442\u0443\x07l\x02\x02\u0443\u045E\x03\x02\x02\x02\u0444\u0445" +
7608
+ "\f\x1C\x02\x02\u0445\u045E\x05\xD8m\x02\u0446\u0447\f\x1B\x02\x02\u0447" +
7609
+ "\u0448\x07r\x02\x02\u0448\u045E\x05\xD8m\x02\u0449\u044A\f\x1A\x02\x02" +
7610
+ "\u044A\u044B\x07m\x02\x02\u044B\u045E\x05\xDCo\x02\u044C\u044D\f\x19\x02" +
7611
+ "\x02\u044D\u044E\x07n\x02\x02\u044E\u045E\x05\xDCo\x02\u044F\u0450\f\x14" +
7612
+ "\x02\x02\u0450\u0451\x076\x02\x02\u0451\u0452\x05\xDEp\x02\u0452\u0453" +
7613
+ "\x05\xD8m\x02\u0453\u045E\x03\x02\x02\x02\u0454\u0455\f\x13\x02\x02\u0455" +
7614
+ "\u0456\x07d\x02\x02\u0456\u045E\x05\xE0q\x02\u0457\u0458\f\x12\x02\x02" +
7615
+ "\u0458\u0459\x07~\x02\x02\u0459\u045E\x05\xE0q\x02\u045A\u045B\f\x10\x02" +
7616
+ "\x02\u045B\u045C\x07\x84\x02\x02\u045C\u045E\x05\xE0q\x02\u045D\u0429" +
7617
+ "\x03\x02\x02\x02\u045D\u042C\x03\x02\x02\x02\u045D\u042F\x03\x02\x02\x02" +
7618
+ "\u045D\u0432\x03\x02\x02\x02\u045D\u0436\x03\x02\x02\x02\u045D\u0439\x03" +
7619
+ "\x02\x02\x02\u045D\u043C\x03\x02\x02";
7620
+ MalloyParser._serializedATNSegment2 = "\x02\u045D\u043F\x03\x02\x02\x02\u045D\u0444\x03\x02\x02\x02\u045D\u0446" +
7621
+ "\x03\x02\x02\x02\u045D\u0449\x03\x02\x02\x02\u045D\u044C\x03\x02\x02\x02" +
7622
+ "\u045D\u044F\x03\x02\x02\x02\u045D\u0454\x03\x02\x02\x02\u045D\u0457\x03" +
7623
+ "\x02\x02\x02\u045D\u045A\x03\x02\x02\x02\u045E\u0461\x03\x02\x02\x02\u045F" +
7624
+ "\u045D\x03\x02\x02\x02\u045F\u0460\x03\x02\x02\x02\u0460\xDF\x03\x02\x02" +
7625
+ "\x02\u0461\u045F\x03\x02\x02\x02\u0462\u0464\x07g\x02\x02\u0463\u0465" +
7626
+ "\x05\xC6d\x02\u0464\u0463\x03\x02\x02\x02\u0464\u0465\x03\x02\x02\x02" +
7627
+ "\u0465\u0466\x03\x02\x02\x02\u0466\u0467\x05\xDEp\x02\u0467\u0468\x07" +
7628
+ "h\x02\x02\u0468\u046E\x03\x02\x02\x02\u0469\u046B\x05\xC6d\x02\u046A\u0469" +
7629
+ "\x03\x02\x02\x02\u046A\u046B\x03\x02\x02\x02\u046B\u046C\x03\x02\x02\x02" +
7630
+ "\u046C\u046E\x05\xDEp\x02\u046D\u0462\x03\x02\x02\x02\u046D\u046A\x03" +
7631
+ "\x02\x02\x02\u046E\xE1\x03\x02\x02\x02\u046F\u0471\x05\xE4s\x02\u0470" +
7632
+ "\u046F\x03\x02\x02\x02\u0471\u0472\x03\x02\x02\x02\u0472\u0470\x03\x02" +
7633
+ "\x02\x02\u0472\u0473\x03\x02\x02\x02\u0473\u0476\x03\x02\x02\x02\u0474" +
7634
+ "\u0475\x071\x02\x02\u0475\u0477\x05\xDEp\x02\u0476\u0474\x03\x02\x02\x02" +
7635
+ "\u0476\u0477\x03\x02\x02\x02\u0477\xE3\x03\x02\x02\x02\u0478\u047A\x07" +
7636
+ "I\x02\x02\u0479\u047B\x05\xDEp\x02\u047A\u0479\x03\x02\x02\x02\u047A\u047B" +
7637
+ "\x03\x02\x02\x02\u047B\u047C\x03\x02\x02\x02\u047C\u047D\x07Y\x02\x02" +
7638
+ "\u047D\u047E\x05\xE0q\x02\u047E\xE5\x03\x02\x02\x02\u047F\u0484\x05\xDE" +
7639
+ "p\x02\u0480\u0481\x07q\x02\x02\u0481\u0483\x05\xDEp\x02\u0482\u0480\x03" +
7640
+ "\x02\x02\x02\u0483\u0486\x03\x02\x02\x02\u0484\u0482\x03\x02\x02\x02\u0484" +
7641
+ "\u0485\x03\x02\x02\x02\u0485\u0488\x03\x02\x02\x02\u0486\u0484\x03\x02" +
7642
+ "\x02\x02\u0487\u0489\x07q\x02\x02\u0488\u0487\x03\x02\x02\x02\u0488\u0489" +
7643
+ "\x03\x02\x02\x02\u0489\xE7\x03\x02\x02\x02\u048A\u0491\x05\xF8}\x02\u048B" +
7644
+ "\u048D\x07q\x02\x02\u048C\u048B\x03\x02\x02\x02\u048C\u048D\x03\x02\x02" +
7645
+ "\x02\u048D\u048E\x03\x02\x02\x02\u048E\u0490\x05\xF8}\x02\u048F\u048C" +
7646
+ "\x03\x02\x02\x02\u0490\u0493\x03\x02\x02\x02\u0491\u048F\x03\x02\x02\x02" +
7647
+ "\u0491\u0492\x03\x02\x02\x02\u0492\xE9\x03\x02\x02\x02\u0493\u0491\x03" +
7648
+ "\x02\x02\x02\u0494\u049B\x05\xF2z\x02\u0495\u0497\x07q\x02\x02\u0496\u0495" +
7649
+ "\x03\x02\x02\x02\u0496\u0497\x03\x02\x02\x02\u0497\u0498\x03\x02\x02\x02" +
7650
+ "\u0498\u049A\x05\xF2z\x02\u0499\u0496\x03\x02\x02\x02\u049A\u049D\x03" +
7651
+ "\x02\x02\x02\u049B\u0499\x03\x02\x02\x02\u049B\u049C\x03\x02\x02\x02\u049C" +
7652
+ "\u049F\x03\x02\x02\x02\u049D\u049B\x03\x02\x02\x02\u049E\u04A0\x07q\x02" +
7653
+ "\x02\u049F\u049E\x03\x02\x02\x02\u049F\u04A0\x03\x02\x02\x02\u04A0\xEB" +
7654
+ "\x03\x02\x02\x02\u04A1\u04A2\x05\xF4{\x02\u04A2\u04A3\x07r\x02\x02\u04A3" +
7655
+ "\u04A5\x03\x02\x02\x02\u04A4\u04A1\x03\x02\x02\x02\u04A4\u04A5\x03\x02" +
7656
+ "\x02\x02\u04A5\u04A6\x03\x02\x02\x02\u04A6\u04A7\x07{\x02\x02\u04A7\xED" +
7657
+ "\x03\x02\x02\x02\u04A8\u04A9\x05\f\x07\x02\u04A9\u04AB\x05\xF4{\x02\u04AA" +
7658
+ "\u04AC\x05\xF0y\x02\u04AB\u04AA\x03\x02\x02\x02\u04AB\u04AC\x03\x02\x02" +
7659
+ "\x02\u04AC\xEF\x03\x02\x02\x02\u04AD\u04AE\x07r\x02\x02\u04AE\u04B5\x05" +
7660
+ "\xD8m\x02\u04AF\u04B0\x07r\x02\x02\u04B0\u04B1\x05\xC2b\x02\u04B1\u04B2" +
7661
+ "\x07g\x02\x02\u04B2\u04B3\x07h\x02\x02\u04B3\u04B5\x03\x02\x02\x02\u04B4" +
7662
+ "\u04AD\x03\x02\x02\x02\u04B4\u04AF\x03\x02\x02\x02\u04B5\xF1\x03\x02\x02" +
7663
+ "\x02\u04B6\u04BA\x05\xEEx\x02\u04B7\u04BA\x05\xECw\x02\u04B8\u04BA\x05" +
7664
+ "j6\x02\u04B9\u04B6\x03\x02\x02\x02\u04B9\u04B7\x03\x02\x02\x02\u04B9\u04B8" +
7665
+ "\x03\x02\x02\x02\u04BA\xF3\x03\x02\x02\x02\u04BB\u04C0\x05\xF8}\x02\u04BC" +
7666
+ "\u04BD\x07r\x02\x02\u04BD\u04BF\x05\xF8}\x02\u04BE\u04BC\x03\x02\x02\x02" +
7667
+ "\u04BF\u04C2\x03\x02\x02\x02\u04C0\u04BE\x03\x02\x02\x02\u04C0\u04C1\x03" +
7668
+ "\x02\x02\x02\u04C1\xF5\x03\x02\x02\x02\u04C2\u04C0\x03\x02\x02\x02\u04C3" +
7669
+ "\u04C4\x05\xD6l\x02\u04C4\xF7\x03\x02\x02\x02\u04C5\u04C6\x05\xD6l\x02" +
7670
+ "\u04C6\xF9\x03\x02\x02\x02\u04C7\u04C8\x05\xDEp\x02\u04C8\u04C9\x07\x02" +
7671
+ "\x02\x03\u04C9\xFB\x03\x02\x02\x02\u04CA\u04CB\x05\xD6l\x02\u04CB\xFD" +
7672
+ "\x03\x02\x02\x02\u04CC\u04CD\x05\xD6l\x02\u04CD\xFF\x03\x02\x02\x02\u04CE" +
7673
+ "\u04CF\x05\xC8e\x02\u04CF\u0101\x03\x02\x02\x02\x85\u0104\u0106\u0112" +
7647
7674
  "\u011D\u0125\u013A\u0142\u0148\u0153\u015D\u0166\u016D\u0172\u0177\u017D" +
7648
7675
  "\u0182\u0186\u0190\u0195\u0198\u019D\u01A3\u01A7\u01AD\u01B1\u01B3\u01B6" +
7649
7676
  "\u01BD\u01C1\u01D0\u01D8\u01E0\u01E4\u01E9\u01EB\u01FC\u0204\u0206\u020A" +
@@ -7652,9 +7679,9 @@ MalloyParser._serializedATNSegment2 = "\x02\x02\x02\u0458\u0455\x03\x02\x02\x02\
7652
7679
  "\u02C9\u02CE\u02D2\u02D4\u02DA\u02DF\u02E6\u02EA\u02F4\u02F9\u02FD\u0304" +
7653
7680
  "\u031D\u0327\u032C\u0330\u0334\u033C\u0341\u0345\u034A\u0351\u0364\u0369" +
7654
7681
  "\u036D\u0371\u0374\u037D\u0382\u0387\u038A\u038E\u0393\u039A\u03AE\u03BB" +
7655
- "\u03C4\u03D2\u03EB\u03F1\u03FC\u0401\u0408\u040A\u040D\u0411\u041D\u0422" +
7656
- "\u0458\u045A\u045F\u0465\u0468\u046D\u0471\u0475\u047F\u0483\u0487\u048C" +
7657
- "\u0491\u0496\u049A\u049F\u04A6\u04AF\u04B4\u04BB";
7682
+ "\u03C4\u03D2\u03EA\u03F0\u03F9\u0406\u040D\u040F\u0412\u0416\u0422\u0427" +
7683
+ "\u045D\u045F\u0464\u046A\u046D\u0472\u0476\u047A\u0484\u0488\u048C\u0491" +
7684
+ "\u0496\u049B\u049F\u04A4\u04AB\u04B4\u04B9\u04C0";
7658
7685
  MalloyParser._serializedATN = Utils.join([
7659
7686
  MalloyParser._serializedATNSegment0,
7660
7687
  MalloyParser._serializedATNSegment1,
@@ -13908,15 +13935,13 @@ class ExprCountDisinctContext extends FieldExprContext {
13908
13935
  }
13909
13936
  }
13910
13937
  exports.ExprCountDisinctContext = ExprCountDisinctContext;
13911
- class ExprAggregateContext extends FieldExprContext {
13938
+ class ExprPathlessAggregateContext extends FieldExprContext {
13912
13939
  aggregate() {
13913
13940
  return this.getRuleContext(0, AggregateContext);
13914
13941
  }
13915
13942
  OPAREN() { return this.getToken(MalloyParser.OPAREN, 0); }
13916
13943
  CPAREN() { return this.getToken(MalloyParser.CPAREN, 0); }
13917
- fieldPath() {
13918
- return this.tryGetRuleContext(0, FieldPathContext);
13919
- }
13944
+ SOURCE_KW() { return this.tryGetToken(MalloyParser.SOURCE_KW, 0); }
13920
13945
  DOT() { return this.tryGetToken(MalloyParser.DOT, 0); }
13921
13946
  fieldExpr() {
13922
13947
  return this.tryGetRuleContext(0, FieldExprContext);
@@ -13927,6 +13952,46 @@ class ExprAggregateContext extends FieldExprContext {
13927
13952
  this.copyFrom(ctx);
13928
13953
  }
13929
13954
  // @Override
13955
+ enterRule(listener) {
13956
+ if (listener.enterExprPathlessAggregate) {
13957
+ listener.enterExprPathlessAggregate(this);
13958
+ }
13959
+ }
13960
+ // @Override
13961
+ exitRule(listener) {
13962
+ if (listener.exitExprPathlessAggregate) {
13963
+ listener.exitExprPathlessAggregate(this);
13964
+ }
13965
+ }
13966
+ // @Override
13967
+ accept(visitor) {
13968
+ if (visitor.visitExprPathlessAggregate) {
13969
+ return visitor.visitExprPathlessAggregate(this);
13970
+ }
13971
+ else {
13972
+ return visitor.visitChildren(this);
13973
+ }
13974
+ }
13975
+ }
13976
+ exports.ExprPathlessAggregateContext = ExprPathlessAggregateContext;
13977
+ class ExprAggregateContext extends FieldExprContext {
13978
+ fieldPath() {
13979
+ return this.getRuleContext(0, FieldPathContext);
13980
+ }
13981
+ DOT() { return this.getToken(MalloyParser.DOT, 0); }
13982
+ aggregate() {
13983
+ return this.getRuleContext(0, AggregateContext);
13984
+ }
13985
+ OPAREN() { return this.getToken(MalloyParser.OPAREN, 0); }
13986
+ CPAREN() { return this.getToken(MalloyParser.CPAREN, 0); }
13987
+ fieldExpr() {
13988
+ return this.tryGetRuleContext(0, FieldExprContext);
13989
+ }
13990
+ constructor(ctx) {
13991
+ super(ctx.parent, ctx.invokingState);
13992
+ this.copyFrom(ctx);
13993
+ }
13994
+ // @Override
13930
13995
  enterRule(listener) {
13931
13996
  if (listener.enterExprAggregate) {
13932
13997
  listener.enterExprAggregate(this);
@@ -13983,15 +14048,15 @@ class ExprExprContext extends FieldExprContext {
13983
14048
  }
13984
14049
  exports.ExprExprContext = ExprExprContext;
13985
14050
  class ExprAggFuncContext extends FieldExprContext {
14051
+ fieldPath() {
14052
+ return this.getRuleContext(0, FieldPathContext);
14053
+ }
14054
+ DOT() { return this.getToken(MalloyParser.DOT, 0); }
13986
14055
  id() {
13987
14056
  return this.getRuleContext(0, IdContext);
13988
14057
  }
13989
14058
  OPAREN() { return this.getToken(MalloyParser.OPAREN, 0); }
13990
14059
  CPAREN() { return this.getToken(MalloyParser.CPAREN, 0); }
13991
- fieldPath() {
13992
- return this.tryGetRuleContext(0, FieldPathContext);
13993
- }
13994
- DOT() { return this.tryGetToken(MalloyParser.DOT, 0); }
13995
14060
  argumentList() {
13996
14061
  return this.tryGetRuleContext(0, ArgumentListContext);
13997
14062
  }