{"version":3,"sources":["../src/components/ActionElement.tsx","../src/components/DragHandle.tsx","../src/components/InlineCombinator.tsx","../src/defaults.ts","../src/components/NotToggle.tsx","../src/components/QueryBuilder.tsx","../src/hooks/useQueryBuilder.ts","../src/utils/arrayUtils.ts","../src/utils/isRuleGroup.ts","../src/utils/convertQuery.ts","../src/utils/defaultValidator.ts","../src/utils/optGroupUtils.ts","../src/utils/filterFieldsByComparator.ts","../src/utils/misc.ts","../src/utils/parseNumber.ts","../src/utils/formatQuery/utils.ts","../src/utils/formatQuery/defaultRuleProcessorCEL.ts","../src/utils/formatQuery/defaultRuleProcessorMongoDB.ts","../src/utils/formatQuery/defaultRuleProcessorSpEL.ts","../src/utils/formatQuery/defaultValueProcessorByRule.ts","../src/utils/formatQuery/defaultRuleProcessorJsonLogic.ts","../src/utils/formatQuery/defaultRuleProcessorSQL.ts","../src/utils/isRuleOrGroupValid.ts","../src/utils/uniq.ts","../src/utils/formatQuery/formatQuery.ts","../src/utils/formatQuery/index.ts","../src/utils/generateID.ts","../src/utils/getCompatContextProvider.tsx","../src/utils/mergeClassnames.ts","../src/utils/getValidationClassNames.ts","../src/utils/getValueSourcesUtil.ts","../src/utils/hooks/useControlledOrUncontrolled.ts","../src/messages.ts","../src/utils/hooks/usePrevious.ts","../src/utils/hooks/useDeprecatedProps.ts","../src/utils/hooks/useMergedContext.ts","../src/utils/objectUtils.ts","../src/utils/hooks/usePreferProp.ts","../src/utils/hooks/useReactDndWarning.ts","../src/utils/parserUtils.ts","../src/utils/parseCEL/celParser.js","../src/utils/parseCEL/utils.ts","../src/utils/parseCEL/parseCEL.ts","../src/utils/parseJsonLogic/utils.ts","../src/utils/parseJsonLogic/parseJsonLogic.ts","../src/utils/parseMongoDB/utils.ts","../src/utils/parseMongoDB/parseMongoDB.ts","../src/utils/parseSQL/sqlParser.js","../src/utils/parseSQL/utils.ts","../src/utils/parseSQL/parseSQL.ts","../src/utils/pathUtils.ts","../src/utils/prepareQueryObjects.ts","../src/utils/queryTools.ts","../src/utils/regenerateIDs.ts","../src/utils/toOptions.tsx","../src/utils/transformQuery.ts","../src/hooks/useRule.ts","../src/hooks/useRuleGroup.ts","../src/hooks/useSelectElementChangeHandler.ts","../src/hooks/useStopEventPropagation.ts","../src/hooks/useValueEditor.ts","../src/hooks/useValueSelector.ts","../src/components/QueryBuilderContext.ts","../src/components/Rule.tsx","../src/components/RuleGroup.tsx","../src/components/ValueEditor.tsx","../src/components/ValueSelector.tsx","../src/components/defaults.ts","../src/index.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ActionProps } from '../types';\n\nexport const ActionElement = ({\n  className,\n  handleOnClick,\n  label,\n  title,\n  disabled,\n  disabledTranslation,\n  testID,\n}: ActionProps) => (\n  <button\n    type=\"button\"\n    data-testid={testID}\n    disabled={disabled && !disabledTranslation}\n    className={className}\n    title={disabledTranslation && disabled ? disabledTranslation.title : title}\n    onClick={e => handleOnClick(e)}>\n    {disabledTranslation && disabled ? disabledTranslation.label : label}\n  </button>\n);\n\nActionElement.displayName = 'ActionElement';\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { DragHandleProps } from '../types';\n\nexport const DragHandle = forwardRef<HTMLSpanElement, DragHandleProps>(\n  ({ className, label, title, testID }, dragRef) => (\n    <span data-testid={testID} ref={dragRef} className={className} title={title}>\n      {label}\n    </span>\n  )\n);\n\nDragHandle.displayName = 'DragHandle';\n","import * as React from 'react';\nimport { standardClassnames, TestID } from '../defaults';\nimport type { InlineCombinatorProps } from '../types';\n\nexport const InlineCombinator = ({\n  component: CombinatorSelectorComponent,\n  independentCombinators: _independentCombinators,\n  ...props\n}: InlineCombinatorProps) => (\n  <div className={standardClassnames.betweenRules} data-testid={TestID.inlineCombinator}>\n    <CombinatorSelectorComponent {...props} testID={TestID.combinators} />\n  </div>\n);\n\nInlineCombinator.displayName = 'InlineCombinator';\n","import type {\n  Classnames,\n  DefaultCombinator,\n  DefaultCombinatorExtended,\n  DefaultOperator,\n  DefaultOperatorName,\n  TranslationsFull,\n} from './types/index.noReact';\n\nconst placeholderName = '~';\nconst placeholderLabel = '------';\nexport const defaultPlaceholderFieldName = placeholderName;\nexport const defaultPlaceholderFieldLabel = placeholderLabel;\nexport const defaultPlaceholderFieldGroupLabel = placeholderLabel;\nexport const defaultPlaceholderOperatorName = placeholderName;\nexport const defaultPlaceholderOperatorLabel = placeholderLabel;\nexport const defaultPlaceholderOperatorGroupLabel = placeholderLabel;\n\nexport const defaultJoinChar = ',';\n\nexport const defaultTranslations: TranslationsFull = {\n  fields: {\n    title: 'Fields',\n    placeholderName: defaultPlaceholderFieldName,\n    placeholderLabel: defaultPlaceholderFieldLabel,\n    placeholderGroupLabel: defaultPlaceholderFieldGroupLabel,\n  },\n  operators: {\n    title: 'Operators',\n    placeholderName: defaultPlaceholderOperatorName,\n    placeholderLabel: defaultPlaceholderOperatorLabel,\n    placeholderGroupLabel: defaultPlaceholderOperatorGroupLabel,\n  },\n  value: {\n    title: 'Value',\n  },\n  removeRule: {\n    label: 'x',\n    title: 'Remove rule',\n  },\n  removeGroup: {\n    label: 'x',\n    title: 'Remove group',\n  },\n  addRule: {\n    label: '+Rule',\n    title: 'Add rule',\n  },\n  addGroup: {\n    label: '+Group',\n    title: 'Add group',\n  },\n  combinators: {\n    title: 'Combinators',\n  },\n  notToggle: {\n    label: 'Not',\n    title: 'Invert this group',\n  },\n  cloneRule: {\n    label: '⧉',\n    title: 'Clone rule',\n  },\n  cloneRuleGroup: {\n    label: '⧉',\n    title: 'Clone group',\n  },\n  dragHandle: {\n    label: '⁞⁞',\n    title: 'Drag handle',\n  },\n  lockRule: {\n    label: '🔓',\n    title: 'Lock rule',\n  },\n  lockGroup: {\n    label: '🔓',\n    title: 'Lock group',\n  },\n  lockRuleDisabled: {\n    label: '🔒',\n    title: 'Unlock rule',\n  },\n  lockGroupDisabled: {\n    label: '🔒',\n    title: 'Unlock group',\n  },\n  valueSourceSelector: {\n    title: 'Value source',\n  },\n};\n\nexport const defaultOperators: DefaultOperator[] = [\n  { name: '=', label: '=' },\n  { name: '!=', label: '!=' },\n  { name: '<', label: '<' },\n  { name: '>', label: '>' },\n  { name: '<=', label: '<=' },\n  { name: '>=', label: '>=' },\n  { name: 'contains', label: 'contains' },\n  { name: 'beginsWith', label: 'begins with' },\n  { name: 'endsWith', label: 'ends with' },\n  { name: 'doesNotContain', label: 'does not contain' },\n  { name: 'doesNotBeginWith', label: 'does not begin with' },\n  { name: 'doesNotEndWith', label: 'does not end with' },\n  { name: 'null', label: 'is null' },\n  { name: 'notNull', label: 'is not null' },\n  { name: 'in', label: 'in' },\n  { name: 'notIn', label: 'not in' },\n  { name: 'between', label: 'between' },\n  { name: 'notBetween', label: 'not between' },\n];\n\nexport const defaultOperatorNegationMap: Record<DefaultOperatorName, DefaultOperatorName> = {\n  '=': '!=',\n  '!=': '=',\n  '<': '>=',\n  '<=': '>',\n  '>': '<=',\n  '>=': '<',\n  beginsWith: 'doesNotBeginWith',\n  doesNotBeginWith: 'beginsWith',\n  endsWith: 'doesNotEndWith',\n  doesNotEndWith: 'endsWith',\n  contains: 'doesNotContain',\n  doesNotContain: 'contains',\n  between: 'notBetween',\n  notBetween: 'between',\n  in: 'notIn',\n  notIn: 'in',\n  notNull: 'null',\n  null: 'notNull',\n};\n\nexport const defaultCombinators: DefaultCombinator[] = [\n  { name: 'and', label: 'AND' },\n  { name: 'or', label: 'OR' },\n];\n\nexport const defaultCombinatorsExtended: DefaultCombinatorExtended[] = [\n  ...defaultCombinators,\n  { name: 'xor', label: 'XOR' },\n];\n\nexport const standardClassnames = {\n  queryBuilder: 'queryBuilder',\n  ruleGroup: 'ruleGroup',\n  header: 'ruleGroup-header',\n  body: 'ruleGroup-body',\n  combinators: 'ruleGroup-combinators',\n  addRule: 'ruleGroup-addRule',\n  addGroup: 'ruleGroup-addGroup',\n  cloneRule: 'rule-cloneRule',\n  cloneGroup: 'ruleGroup-cloneGroup',\n  removeGroup: 'ruleGroup-remove',\n  notToggle: 'ruleGroup-notToggle',\n  rule: 'rule',\n  fields: 'rule-fields',\n  operators: 'rule-operators',\n  value: 'rule-value',\n  removeRule: 'rule-remove',\n  betweenRules: 'betweenRules',\n  valid: 'queryBuilder-valid',\n  invalid: 'queryBuilder-invalid',\n  dndDragging: 'dndDragging',\n  dndOver: 'dndOver',\n  dndCopy: 'dndCopy',\n  dragHandle: 'queryBuilder-dragHandle',\n  disabled: 'queryBuilder-disabled',\n  lockRule: 'rule-lock',\n  lockGroup: 'ruleGroup-lock',\n  valueSource: 'rule-valueSource',\n  valueListItem: 'rule-value-list-item',\n  branches: 'queryBuilder-branches',\n} as const;\n\nexport const defaultControlClassnames: Classnames = {\n  queryBuilder: '',\n  ruleGroup: '',\n  header: '',\n  body: '',\n  combinators: '',\n  addRule: '',\n  addGroup: '',\n  cloneRule: '',\n  cloneGroup: '',\n  removeGroup: '',\n  notToggle: '',\n  rule: '',\n  fields: '',\n  operators: '',\n  value: '',\n  removeRule: '',\n  dragHandle: '',\n  lockRule: '',\n  lockGroup: '',\n  valueSource: '',\n};\n\nexport const groupInvalidReasons = {\n  empty: 'empty',\n  invalidCombinator: 'invalid combinator',\n  invalidIndependentCombinators: 'invalid independent combinators',\n} as const;\n\nexport const TestID = {\n  rule: 'rule',\n  ruleGroup: 'rule-group',\n  inlineCombinator: 'inline-combinator',\n  addGroup: 'add-group',\n  removeGroup: 'remove-group',\n  cloneGroup: 'clone-group',\n  cloneRule: 'clone-rule',\n  addRule: 'add-rule',\n  removeRule: 'remove-rule',\n  combinators: 'combinators',\n  fields: 'fields',\n  operators: 'operators',\n  valueEditor: 'value-editor',\n  notToggle: 'not-toggle',\n  dragHandle: 'drag-handle',\n  lockRule: 'lock-rule',\n  lockGroup: 'lock-group',\n  valueSourceSelector: 'value-source-selector',\n} as const;\n\nexport const LogType = {\n  parentPathDisabled: 'action aborted: parent path disabled',\n  pathDisabled: 'action aborted: path is disabled',\n  queryUpdate: 'query updated',\n  onAddRuleFalse: 'onAddRule callback returned false',\n  onAddGroupFalse: 'onAddGroup callback returned false',\n  onRemoveFalse: 'onRemove callback returned false',\n  add: 'rule or group added',\n  remove: 'rule or group removed',\n  update: 'rule or group updated',\n  move: 'rule or group moved',\n} as const;\n","import * as React from 'react';\nimport type { NotToggleProps } from '../types';\n\nexport const NotToggle = ({\n  className,\n  handleOnChange,\n  title,\n  label,\n  checked,\n  disabled,\n  testID,\n}: NotToggleProps) => (\n  <label data-testid={testID} className={className} title={title}>\n    <input\n      type=\"checkbox\"\n      onChange={e => handleOnChange(e.target.checked)}\n      checked={!!checked}\n      disabled={disabled}\n    />\n    {label}\n  </label>\n);\n\nNotToggle.displayName = 'NotToggle';\n","import * as React from 'react';\nimport { useQueryBuilder } from '../hooks';\nimport type { QueryBuilderProps, RuleGroupType, RuleGroupTypeIC } from '../types';\nimport { QueryBuilderContext } from './QueryBuilderContext';\n\nexport const QueryBuilder = <RG extends RuleGroupType | RuleGroupTypeIC>(\n  props: QueryBuilderProps<RG>\n) => {\n  const qb = { ...props, ...useQueryBuilder(props) };\n\n  const { ruleGroup: RuleGroupControlElement } = qb.schema.controls;\n\n  return (\n    <QueryBuilderContext.Provider\n      key={qb.schema.enableDragAndDrop ? 'dnd' : 'no-dnd'}\n      value={qb.rqbContext}>\n      <div\n        className={qb.wrapperClassName}\n        data-dnd={qb.schema.enableDragAndDrop ? 'enabled' : 'disabled'}\n        data-inlinecombinators={\n          qb.schema.independentCombinators || qb.schema.showCombinatorsBetweenRules\n            ? 'enabled'\n            : 'disabled'\n        }>\n        <RuleGroupControlElement\n          translations={qb.translations}\n          ruleGroup={qb.query}\n          rules={qb.query.rules}\n          combinator={'combinator' in qb.query ? qb.query.combinator : undefined}\n          not={!!qb.query.not}\n          schema={qb.schema}\n          actions={qb.actions}\n          id={qb.query.id}\n          path={[]}\n          disabled={!!qb.query.disabled || qb.queryDisabled}\n          parentDisabled={qb.queryDisabled}\n          context={qb.context}\n        />\n      </div>\n    </QueryBuilderContext.Provider>\n  );\n};\n\nQueryBuilder.displayName = 'QueryBuilder';\n","import { clsx } from 'clsx';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n  LogType,\n  defaultCombinators,\n  defaultOperators,\n  defaultTranslations,\n  standardClassnames,\n} from '../defaults';\nimport type {\n  Field,\n  Option,\n  QueryActions,\n  QueryBuilderProps,\n  RuleGroupType,\n  RuleGroupTypeIC,\n  RuleType,\n  Schema,\n  UpdateableProperties,\n} from '../types';\nimport {\n  add,\n  filterFieldsByComparator,\n  findPath,\n  generateID,\n  getFirstOption,\n  getValueSourcesUtil,\n  isOptionGroupArray,\n  joinWith,\n  move,\n  objectKeys,\n  pathIsDisabled,\n  prepareRuleGroup,\n  remove,\n  uniqByName,\n  uniqOptGroups,\n  update,\n  useControlledOrUncontrolled,\n  useMergedContext,\n} from '../utils';\n\nconst noop = () => {};\n\nexport const useQueryBuilder = <RG extends RuleGroupType | RuleGroupTypeIC>(\n  props: QueryBuilderProps<RG>\n) => {\n  const {\n    defaultQuery,\n    query: queryProp,\n    fields: fieldsPropOriginal,\n    operators = defaultOperators,\n    combinators = defaultCombinators,\n    translations: translationsProp = defaultTranslations,\n    enableMountQueryChange: enableMountQueryChangeProp = true,\n    controlClassnames: controlClassnamesProp,\n    controlElements: controlElementsProp,\n    getDefaultField,\n    getDefaultOperator,\n    getDefaultValue,\n    getOperators,\n    getValueEditorType,\n    getValueEditorSeparator = () => null,\n    getValueSources,\n    getInputType,\n    getValues,\n    getRuleClassname = () => '',\n    getRuleGroupClassname = () => '',\n    onAddRule = r => r,\n    onAddGroup = rg => rg,\n    onRemove = () => true,\n    onQueryChange = noop,\n    showCombinatorsBetweenRules = false,\n    showNotToggle = false,\n    showCloneButtons = false,\n    showLockButtons = false,\n    resetOnFieldChange = true,\n    resetOnOperatorChange = false,\n    autoSelectField = true,\n    autoSelectOperator = true,\n    addRuleToNewGroups = false,\n    enableDragAndDrop: enableDragAndDropProp,\n    independentCombinators,\n    listsAsArrays = false,\n    parseNumbers = false,\n    disabled = false,\n    validator,\n    debugMode: debugModeProp = false,\n    onLog = console.log,\n    idGenerator = generateID,\n  } = props as QueryBuilderProps<RG>;\n\n  const rqbContext = useMergedContext({\n    controlClassnames: controlClassnamesProp,\n    controlElements: controlElementsProp,\n    debugMode: debugModeProp,\n    enableDragAndDrop: enableDragAndDropProp,\n    enableMountQueryChange: enableMountQueryChangeProp,\n    translations: translationsProp,\n  });\n\n  const {\n    controlClassnames,\n    controlElements,\n    debugMode,\n    enableDragAndDrop,\n    enableMountQueryChange,\n    translations,\n  } = rqbContext;\n\n  // #region Set up `fields`\n  const defaultField = useMemo(\n    (): Field => ({\n      id: translations.fields.placeholderName,\n      name: translations.fields.placeholderName,\n      label: translations.fields.placeholderLabel,\n    }),\n    [translations.fields.placeholderLabel, translations.fields.placeholderName]\n  );\n  const fieldsProp = useMemo(\n    () => fieldsPropOriginal ?? [defaultField],\n    [defaultField, fieldsPropOriginal]\n  );\n\n  const fields = useMemo(() => {\n    const f = Array.isArray(fieldsProp)\n      ? fieldsProp\n      : objectKeys(fieldsProp)\n          .map((fld): Field => ({ ...fieldsProp[fld], name: fld }))\n          .sort((a, b) => a.label.localeCompare(b.label));\n    if (isOptionGroupArray(f)) {\n      if (autoSelectField) {\n        return uniqOptGroups(f);\n      } else {\n        return uniqOptGroups([\n          {\n            label: translations.fields.placeholderGroupLabel,\n            options: [defaultField],\n          },\n          ...f,\n        ]);\n      }\n    } else {\n      if (autoSelectField) {\n        return uniqByName(f);\n      } else {\n        return uniqByName([defaultField, ...f]);\n      }\n    }\n  }, [autoSelectField, defaultField, fieldsProp, translations.fields.placeholderGroupLabel]);\n\n  const fieldMap = useMemo(() => {\n    if (!Array.isArray(fieldsProp)) {\n      const fp: Record<string, Field> = {};\n      objectKeys(fieldsProp).forEach(f => (fp[f] = { ...fieldsProp[f], name: f }));\n      if (autoSelectField) {\n        return fp;\n      } else {\n        return { ...fp, [translations.fields.placeholderName]: defaultField };\n      }\n    }\n    const fm: Record<string, Field> = {};\n    if (isOptionGroupArray(fields)) {\n      fields.forEach(f => f.options.forEach(opt => (fm[opt.name] = opt)));\n    } else {\n      fields.forEach(f => (fm[f.name] = f));\n    }\n    return fm;\n  }, [autoSelectField, defaultField, fields, fieldsProp, translations.fields.placeholderName]);\n  // #endregion\n\n  // #region Set up `operators`\n  const defaultOperator = useMemo(\n    (): Option => ({\n      id: translations.operators.placeholderName,\n      name: translations.operators.placeholderName,\n      label: translations.operators.placeholderLabel,\n    }),\n    [translations.operators.placeholderLabel, translations.operators.placeholderName]\n  );\n\n  const getOperatorsMain = useCallback(\n    (field: string) => {\n      const fieldData = fieldMap[field];\n      let opsFinal = operators;\n\n      if (fieldData?.operators) {\n        opsFinal = fieldData.operators;\n      } else if (getOperators) {\n        const ops = getOperators(field);\n        if (ops) {\n          opsFinal = ops;\n        }\n      }\n\n      if (!autoSelectOperator) {\n        if (isOptionGroupArray(opsFinal)) {\n          opsFinal = [\n            {\n              label: translations.operators.placeholderGroupLabel,\n              options: [defaultOperator],\n            },\n            ...opsFinal,\n          ];\n        } else {\n          opsFinal = [defaultOperator, ...opsFinal];\n        }\n      }\n\n      return isOptionGroupArray(opsFinal) ? uniqOptGroups(opsFinal) : uniqByName(opsFinal);\n    },\n    [\n      autoSelectOperator,\n      defaultOperator,\n      fieldMap,\n      getOperators,\n      operators,\n      translations.operators.placeholderGroupLabel,\n    ]\n  );\n\n  const getRuleDefaultOperator = useCallback(\n    (field: string) => {\n      const fieldData = fieldMap[field];\n      if (fieldData?.defaultOperator) {\n        return fieldData.defaultOperator;\n      }\n\n      if (getDefaultOperator) {\n        if (typeof getDefaultOperator === 'function') {\n          return getDefaultOperator(field);\n        } else {\n          return getDefaultOperator;\n        }\n      }\n\n      const ops = getOperatorsMain(field) ?? /* istanbul ignore next */ [];\n      return ops.length\n        ? getFirstOption(ops) ?? /* istanbul ignore next */ ''\n        : /* istanbul ignore next */ '';\n    },\n    [fieldMap, getDefaultOperator, getOperatorsMain]\n  );\n  // #endregion\n\n  // #region Rule property getters\n  const getValueEditorTypeMain = useCallback(\n    (field: string, operator: string) => {\n      if (getValueEditorType) {\n        const vet = getValueEditorType(field, operator);\n        if (vet) return vet;\n      }\n\n      return 'text';\n    },\n    [getValueEditorType]\n  );\n\n  const getValueSourcesMain = useCallback(\n    (field: string, operator: string) =>\n      getValueSourcesUtil(fieldMap[field], operator, getValueSources),\n    [fieldMap, getValueSources]\n  );\n\n  const getValuesMain = useCallback(\n    (field: string, operator: string) => {\n      const fieldData = fieldMap[field];\n      // Ignore this in tests because Rule already checks for\n      // the presence of the values property in fieldData.\n      /* istanbul ignore if */\n      if (fieldData?.values) {\n        return fieldData.values;\n      }\n      if (getValues) {\n        const vals = getValues(field, operator);\n        if (vals) return vals;\n      }\n\n      return [];\n    },\n    [fieldMap, getValues]\n  );\n\n  const getRuleDefaultValue = useCallback(\n    (rule: RuleType) => {\n      const fieldData = fieldMap[rule.field];\n      if (fieldData?.defaultValue !== undefined && fieldData.defaultValue !== null) {\n        return fieldData.defaultValue;\n      } else if (getDefaultValue) {\n        return getDefaultValue(rule);\n      }\n\n      let value: any = '';\n\n      const values = getValuesMain(rule.field, rule.operator);\n\n      const getFirstOptionsFrom = (opts: any[]) => {\n        const firstOption = getFirstOption(opts);\n        if (rule.operator === 'between' || rule.operator === 'notBetween') {\n          const valueAsArray = [firstOption, firstOption];\n          return listsAsArrays\n            ? valueAsArray\n            : joinWith(\n                valueAsArray.map(v => v ?? /* istanbul ignore next */ ''),\n                ','\n              );\n        } else {\n          return firstOption;\n        }\n      };\n\n      if (rule.valueSource === 'field') {\n        const filteredFields = filterFieldsByComparator(fieldData, fields, rule.operator);\n        if (filteredFields.length > 0) {\n          value = getFirstOptionsFrom(filteredFields);\n        } else {\n          value = '';\n        }\n      } else if (values.length) {\n        value = getFirstOptionsFrom(values);\n      } else {\n        const editorType = getValueEditorTypeMain(rule.field, rule.operator);\n        if (editorType === 'checkbox') {\n          value = false;\n        }\n      }\n\n      return value;\n    },\n    [fieldMap, fields, getDefaultValue, getValueEditorTypeMain, getValuesMain, listsAsArrays]\n  );\n\n  const getInputTypeMain = useCallback(\n    (field: string, operator: string) => {\n      if (getInputType) {\n        const inputType = getInputType(field, operator);\n        if (inputType) return inputType;\n      }\n\n      return 'text';\n    },\n    [getInputType]\n  );\n  // #endregion\n\n  // #region Rule/group creators\n  const createRule = useCallback((): RuleType => {\n    let field = '';\n    /* istanbul ignore else */\n    if (fields?.length > 0 && fields[0]) {\n      field = getFirstOption(fields) ?? /* istanbul ignore next */ '';\n    }\n    if (getDefaultField) {\n      if (typeof getDefaultField === 'function') {\n        field = getDefaultField(fields);\n      } else {\n        field = getDefaultField;\n      }\n    }\n\n    const operator = getRuleDefaultOperator(field);\n\n    const valueSource = getValueSourcesMain(field, operator)[0] ?? 'value';\n\n    const newRule: RuleType = {\n      id: idGenerator(),\n      field,\n      operator,\n      valueSource,\n      value: '',\n    };\n\n    const value = getRuleDefaultValue(newRule);\n\n    return { ...newRule, value };\n  }, [\n    fields,\n    getDefaultField,\n    getRuleDefaultOperator,\n    getRuleDefaultValue,\n    getValueSourcesMain,\n    idGenerator,\n  ]);\n\n  const createRuleGroup = useCallback((): RG => {\n    // TODO: figure out how to avoid `@ts-expect-error` here\n    if (independentCombinators) {\n      // @ts-expect-error TS can't tell that RG means RuleGroupTypeIC\n      return {\n        id: idGenerator(),\n        rules: addRuleToNewGroups ? [createRule()] : [],\n        not: false,\n      };\n    }\n    // @ts-expect-error TS can't tell that RG means RuleGroupType\n    return {\n      id: idGenerator(),\n      rules: addRuleToNewGroups ? [createRule()] : [],\n      combinator: getFirstOption(combinators) ?? /* istanbul ignore next */ '',\n      not: false,\n    };\n  }, [addRuleToNewGroups, combinators, createRule, idGenerator, independentCombinators]);\n  // #endregion\n\n  // #region Handle controlled mode vs uncontrolled mode\n  const isFirstRender = useRef(true);\n  // This state variable is only used when the component is uncontrolled\n  const [queryState, setQueryState] = useState(\n    defaultQuery ? prepareRuleGroup(defaultQuery, { idGenerator }) : createRuleGroup()\n  );\n  // We assume here that if `queryProp` is passed in, and it's not the first render,\n  // that `queryProp` has already been prepared, i.e. the user is just passing back\n  // the `onQueryChange` callback parameter as `queryProp`. This appears to have a huge\n  // performance impact.\n  const query: RG = queryProp\n    ? isFirstRender.current\n      ? prepareRuleGroup(queryProp, { idGenerator })\n      : queryProp\n    : queryState;\n\n  useControlledOrUncontrolled({\n    defaultQuery,\n    queryProp,\n    isFirstRender: isFirstRender.current,\n  });\n\n  isFirstRender.current = false;\n\n  // Run `onQueryChange` on mount, if enabled\n  useEffect(() => {\n    if (enableMountQueryChange) {\n      onQueryChange(query);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // Help prevent `dispatch` from being regenerated on every render.\n  // This assignment doesn't need memoization because even if `queryProp`\n  // changes references, `!queryProp` is still `true`.\n  const uncontrolled = !queryProp;\n\n  /**\n   * Updates the state-based query if the component is uncontrolled, then calls\n   * `onQueryChange` with the updated query object. (`useCallback` is only effective\n   * here when the user's `onQueryChange` handler is undefined or has a stable reference,\n   * which usually means that it's wrapped in its own `useCallback`).\n   */\n  const dispatch = useCallback(\n    (newQuery: RG) => {\n      if (uncontrolled) {\n        setQueryState(newQuery);\n      }\n      onQueryChange(newQuery);\n    },\n    [onQueryChange, uncontrolled]\n  );\n  // #endregion\n\n  // #region Query update methods\n  const queryDisabled = useMemo(\n    () => disabled === true || (Array.isArray(disabled) && disabled.some(p => p.length === 0)),\n    [disabled]\n  );\n  const disabledPaths = useMemo(() => (Array.isArray(disabled) && disabled) || [], [disabled]);\n\n  const onRuleAdd = (rule: RuleType, parentPath: number[], context?: any) => {\n    if (pathIsDisabled(parentPath, query) || queryDisabled) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({ type: LogType.parentPathDisabled, rule, parentPath, query });\n      }\n      return;\n    }\n    const newRule = onAddRule(rule, parentPath, query, context);\n    if (!newRule) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({ type: LogType.onAddRuleFalse, rule, parentPath, query });\n      }\n      return;\n    }\n    const newQuery = add(query, newRule, parentPath, {\n      combinators,\n      combinatorPreceding: newRule.combinatorPreceding ?? undefined,\n    });\n    if (debugMode) {\n      onLog({ type: LogType.add, query, newQuery, newRule, parentPath });\n    }\n    dispatch(newQuery);\n  };\n\n  const onGroupAdd = (ruleGroup: RG, parentPath: number[], context?: any) => {\n    if (pathIsDisabled(parentPath, query) || queryDisabled) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({\n          type: LogType.parentPathDisabled,\n          ruleGroup,\n          parentPath,\n          query,\n        });\n      }\n      return;\n    }\n    const newGroup = onAddGroup(ruleGroup, parentPath, query, context);\n    if (!newGroup) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({ type: LogType.onAddGroupFalse, ruleGroup, parentPath, query });\n      }\n      return;\n    }\n    const newQuery = add(query, newGroup, parentPath, {\n      combinators,\n      combinatorPreceding: (newGroup as RuleGroupTypeIC).combinatorPreceding ?? undefined,\n    });\n    if (debugMode) {\n      onLog({ type: LogType.add, query, newQuery, newGroup, parentPath });\n    }\n    dispatch(newQuery);\n  };\n\n  const onPropChange = (prop: UpdateableProperties, value: any, path: number[]) => {\n    if ((pathIsDisabled(path, query) && prop !== 'disabled') || queryDisabled) {\n      if (debugMode) {\n        onLog({ type: LogType.pathDisabled, path, prop, value, query });\n      }\n      return;\n    }\n    const newQuery = update(query, prop, value, path, {\n      resetOnFieldChange,\n      resetOnOperatorChange,\n      getRuleDefaultOperator,\n      getValueSources: getValueSourcesMain,\n      getRuleDefaultValue,\n    });\n    if (debugMode) {\n      onLog({ type: LogType.update, query, newQuery, prop, value, path });\n    }\n    dispatch(newQuery);\n  };\n\n  const onRuleOrGroupRemove = (path: number[], context?: any) => {\n    if (pathIsDisabled(path, query) || queryDisabled) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({ type: LogType.pathDisabled, path, query });\n      }\n      return;\n    }\n    const ruleOrGroup = findPath(path, query);\n    // istanbul ignore else\n    if (ruleOrGroup) {\n      if (onRemove(ruleOrGroup as RG | RuleType, path, query, context)) {\n        const newQuery = remove(query, path);\n        if (debugMode) {\n          onLog({ type: LogType.remove, query, newQuery, path, ruleOrGroup });\n        }\n        dispatch(newQuery);\n      } else {\n        if (debugMode) {\n          onLog({ type: LogType.onRemoveFalse, ruleOrGroup, path, query });\n        }\n      }\n    }\n  };\n\n  const moveRule = (oldPath: number[], newPath: number[], clone?: boolean) => {\n    if (pathIsDisabled(oldPath, query) || queryDisabled) {\n      // istanbul ignore else\n      if (debugMode) {\n        onLog({ type: LogType.pathDisabled, oldPath, newPath, query });\n      }\n      return;\n    }\n    const newQuery = move(query, oldPath, newPath, { clone, combinators });\n    if (debugMode) {\n      onLog({ type: LogType.move, query, newQuery, oldPath, newPath, clone });\n    }\n    dispatch(newQuery);\n  };\n  // #endregion\n\n  const { validationResult, validationMap } = useMemo(() => {\n    const validationResult = typeof validator === 'function' ? validator(query) : {};\n    const validationMap = typeof validationResult === 'object' ? validationResult : {};\n    return { validationResult, validationMap };\n  }, [query, validator]);\n\n  const schema = useMemo(\n    (): Schema => ({\n      fields,\n      fieldMap,\n      combinators,\n      classNames: controlClassnames,\n      createRule,\n      createRuleGroup,\n      controls: controlElements,\n      getOperators: getOperatorsMain,\n      getValueEditorType: getValueEditorTypeMain,\n      getValueSources: getValueSourcesMain,\n      getInputType: getInputTypeMain,\n      getValues: getValuesMain,\n      getValueEditorSeparator,\n      getRuleClassname,\n      getRuleGroupClassname,\n      showCombinatorsBetweenRules,\n      showNotToggle,\n      showCloneButtons,\n      showLockButtons,\n      autoSelectField,\n      autoSelectOperator,\n      addRuleToNewGroups,\n      enableDragAndDrop,\n      independentCombinators: !!independentCombinators,\n      listsAsArrays,\n      parseNumbers,\n      validationMap,\n      disabledPaths,\n    }),\n    [\n      addRuleToNewGroups,\n      autoSelectField,\n      autoSelectOperator,\n      combinators,\n      controlClassnames,\n      controlElements,\n      createRule,\n      createRuleGroup,\n      disabledPaths,\n      enableDragAndDrop,\n      fieldMap,\n      fields,\n      getInputTypeMain,\n      getOperatorsMain,\n      getRuleClassname,\n      getRuleGroupClassname,\n      getValueEditorTypeMain,\n      getValuesMain,\n      getValueSourcesMain,\n      getValueEditorSeparator,\n      independentCombinators,\n      listsAsArrays,\n      parseNumbers,\n      showCloneButtons,\n      showCombinatorsBetweenRules,\n      showLockButtons,\n      showNotToggle,\n      validationMap,\n    ]\n  );\n\n  const actions: QueryActions = {\n    onRuleAdd,\n    onGroupAdd,\n    onRuleRemove: onRuleOrGroupRemove,\n    onGroupRemove: onRuleOrGroupRemove,\n    onPropChange,\n    moveRule,\n  };\n\n  const wrapperClassName = useMemo(\n    () =>\n      clsx(standardClassnames.queryBuilder, clsx(controlClassnames.queryBuilder), {\n        [standardClassnames.disabled]: query.disabled || queryDisabled,\n        [standardClassnames.valid]: typeof validationResult === 'boolean' && validationResult,\n        [standardClassnames.invalid]: typeof validationResult === 'boolean' && !validationResult,\n      }),\n    [controlClassnames.queryBuilder, queryDisabled, query.disabled, validationResult]\n  );\n\n  return {\n    actions,\n    query,\n    queryDisabled,\n    rqbContext,\n    schema,\n    translations,\n    wrapperClassName,\n  };\n};\n","import { defaultJoinChar } from '../defaults';\n\n/**\n * Splits a string by a given character (default ','). Escaped characters (characters\n * preceded by a backslash) will not apply to the split, and the backslash will be\n * removed in the array element. Inverse of `joinWith`.\n *\n * @example\n * splitBy('this\\\\,\\\\,that,,the other,,,\\\\,')\n * // or\n * splitBy('this\\\\,\\\\,that,,the other,,,\\\\,', ',')\n * // would return\n * ['this,,that', '', 'the other', '', '', ',']\n */\nexport const splitBy = (str?: string, splitChar = defaultJoinChar) =>\n  typeof str === 'string'\n    ? str\n        .split(`\\\\${splitChar}`)\n        .map(c => c.split(splitChar))\n        .reduce((prev, curr, idx) => {\n          if (idx === 0) {\n            return curr;\n          }\n          return [\n            ...prev.slice(0, prev.length - 1),\n            `${prev[prev.length - 1]}${splitChar}${curr[0]}`,\n            ...curr.slice(1),\n          ];\n        }, [])\n    : [];\n\n/**\n * Joins an array of strings using the given character (default ','). When the given\n * character appears in an array element, a backslash will be added just before it to\n * distinguish it from the join character. Inverse of `splitBy`.\n *\n * @example\n * joinWith(['this,,that', '', 'the other', '', '', ','])\n * // would return\n * 'this\\\\,\\\\,that,,the other,,,\\\\,'\n */\nexport const joinWith = (strArr: any[], joinChar = defaultJoinChar) =>\n  strArr.map(str => `${str ?? ''}`.replaceAll(joinChar, `\\\\${joinChar}`)).join(joinChar);\n\n/**\n * Trims the value if it is a string. Otherwise returns value as-is.\n */\nexport const trimIfString = (val: any) => (typeof val === 'string' ? val.trim() : val);\n\n/**\n * Splits strings by comma and trims each element. Arrays are returned as-is but\n * any string elements are trimmed.\n */\nexport const toArray = (v: any) =>\n  Array.isArray(v)\n    ? v.map(trimIfString)\n    : typeof v === 'string'\n    ? splitBy(v, defaultJoinChar)\n        .filter(s => !/^\\s*$/.test(s))\n        .map(s => s.trim())\n    : typeof v === 'number'\n    ? [v]\n    : [];\n\nexport const nullFreeArray = <T>(arr: T[]): arr is Exclude<T, null>[] => arr.every(Boolean);\n","import type {\n  RuleGroupType,\n  RuleGroupTypeAny,\n  RuleGroupTypeIC,\n  RuleType,\n} from '../types/index.noReact';\n\n/**\n * Determines if this is either a RuleGroupType or RuleGroupTypeIC.\n * `'rules' in query` can be used as an alternative.\n */\nexport const isRuleGroup = (rg: any): rg is RuleGroupTypeAny =>\n  !!rg && typeof rg === 'object' && 'rules' in rg && Array.isArray(rg.rules);\n\nexport const isRuleGroupType = (rg: RuleType | RuleGroupTypeAny): rg is RuleGroupType =>\n  isRuleGroup(rg) && 'combinator' in rg;\n\nexport const isRuleGroupTypeIC = (rg: RuleType | RuleGroupTypeAny): rg is RuleGroupTypeIC =>\n  isRuleGroup(rg) && !('combinator' in rg);\n","import type {\n  RuleGroupArray,\n  RuleGroupICArray,\n  RuleGroupType,\n  RuleGroupTypeIC,\n  RuleType,\n} from '../types/index.noReact';\nimport { isRuleGroupTypeIC } from './isRuleGroup';\n\nconst processRuleOrStringOrRuleGroupIC = (r: string | RuleType | RuleGroupTypeIC) =>\n  typeof r === 'object' && 'rules' in r ? generateRuleGroupICWithConsistentCombinators(r) : r;\n\nconst generateRuleGroupICWithConsistentCombinators = (rg: RuleGroupTypeIC): RuleGroupTypeIC => {\n  const returnArray: RuleGroupICArray = [];\n  const push = (r: any) =>\n    returnArray.push(processRuleOrStringOrRuleGroupIC(r) as RuleType | RuleGroupTypeIC);\n  let startIndex = 0;\n  for (let i = 0; i < rg.rules.length; i += 2) {\n    if (rg.rules.length === 1) {\n      push(rg.rules[0]);\n    } else if (rg.rules[i + 1] === 'and') {\n      startIndex = i;\n      let j = 1;\n      while (rg.rules[startIndex + j] === 'and') {\n        i += 2;\n        j += 2;\n      }\n      returnArray.push({\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-expect-error TS can't keep track of odd/even indexes here\n        rules: rg.rules.slice(startIndex, i + 1).map(processRuleOrStringOrRuleGroupIC),\n      });\n      i -= 2;\n    } else if (rg.rules[i + 1] === 'or') {\n      if (i === 0 || i === rg.rules.length - 3) {\n        if (i === 0 || rg.rules[i - 1] === 'or') {\n          push(rg.rules[i]);\n        }\n        push(rg.rules[i + 1]);\n        if (i === rg.rules.length - 3) {\n          push(rg.rules[i + 2]);\n        }\n      } else {\n        if (rg.rules[i - 1] === 'and') {\n          push(rg.rules[i + 1]);\n        } else {\n          push(rg.rules[i]);\n          push(rg.rules[i + 1]);\n        }\n      }\n    }\n  }\n  if (\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-expect-error TS still thinks returnArray has length 0\n    returnArray.length === 1 &&\n    typeof returnArray[0] === 'object' &&\n    'rules' in returnArray[0]\n  ) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-expect-error TS still thinks returnArray has length 0\n    return { ...rg, ...returnArray[0] };\n  }\n  return { ...rg, rules: returnArray };\n};\n\nexport const convertFromIC = <RG extends RuleGroupType = RuleGroupType>(\n  rg: RuleGroupTypeIC\n): RG => {\n  const processedRG = generateRuleGroupICWithConsistentCombinators(rg);\n  const rulesAsMixedList = processedRG.rules.map(r =>\n    typeof r === 'string' || !('rules' in r) ? r : convertFromIC(r)\n  );\n  const combinator = rulesAsMixedList.length < 2 ? 'and' : (rulesAsMixedList[1] as string);\n  const rules = rulesAsMixedList.filter(r => typeof r !== 'string') as RuleGroupArray;\n  return { ...processedRG, combinator, rules } as RG;\n};\n\nexport const convertToIC = <RGIC extends RuleGroupTypeIC = RuleGroupTypeIC>(\n  rg: RuleGroupType\n): RGIC => {\n  const { combinator, ...queryWithoutCombinator } = rg;\n  const rules: (RuleGroupTypeIC | RuleType | string)[] = [];\n  rg.rules.forEach((r, idx, arr) => {\n    if ('rules' in r) {\n      rules.push(convertToIC(r));\n    } else {\n      rules.push(r);\n    }\n    if (idx < arr.length - 1) {\n      rules.push(combinator);\n    }\n  });\n  return { ...queryWithoutCombinator, rules } as RGIC;\n};\n\nfunction convertQuery(query: RuleGroupType): RuleGroupTypeIC;\nfunction convertQuery(query: RuleGroupTypeIC): RuleGroupType;\nfunction convertQuery(query: RuleGroupType | RuleGroupTypeIC): RuleGroupType | RuleGroupTypeIC {\n  return isRuleGroupTypeIC(query) ? convertFromIC(query) : convertToIC(query);\n}\n\nexport { convertQuery };\n","import { defaultCombinators, groupInvalidReasons } from '../defaults';\nimport type {\n  QueryValidator,\n  RuleGroupTypeAny,\n  RuleType,\n  ValidationMap,\n} from '../types/index.noReact';\n\n/**\n * This is an example validation function you can pass to QueryBuilder in the\n * `validator` prop. It assumes that you want to validate groups, and has a no-op\n * for validating rules which you should replace with your own implementation.\n */\nexport const defaultValidator: QueryValidator = query => {\n  const result: ValidationMap = {};\n\n  const validateRule = (_rule: RuleType) => {\n    // Replace this with your custom implementation.\n    // Inside this function, set `result[_rule.id] = true` for a valid\n    // rule, or `{ valid: false, reasons: ['your', 'reasons', 'here'] }`\n    // for an invalid rule.\n  };\n\n  const validateGroup = (rg: RuleGroupTypeAny) => {\n    const reasons: any[] = [];\n    if (rg.rules.length === 0) {\n      reasons.push(groupInvalidReasons.empty);\n    } else if (!('combinator' in rg)) {\n      // Odd indexes should be valid combinators and even indexes should be rules or groups\n      let invalidICs = false;\n      for (let i = 0; i < rg.rules.length && !invalidICs; i++) {\n        if (\n          (i % 2 === 0 && typeof rg.rules[i] === 'string') ||\n          (i % 2 === 1 && typeof rg.rules[i] !== 'string') ||\n          (i % 2 === 1 &&\n            typeof rg.rules[i] === 'string' &&\n            !defaultCombinators.map(c => c.name as string).includes(rg.rules[i] as string))\n        ) {\n          invalidICs = true;\n        }\n      }\n      if (invalidICs) {\n        reasons.push(groupInvalidReasons.invalidIndependentCombinators);\n      }\n    }\n    // Non-independent combinators should be valid, but only checked if there are multiple rules\n    // since combinators don't really apply to groups with only one rule/group\n    if (\n      'combinator' in rg &&\n      !defaultCombinators.map(c => c.name as string).includes(rg.combinator) &&\n      rg.rules.length > 1\n    ) {\n      reasons.push(groupInvalidReasons.invalidCombinator);\n    }\n    /* istanbul ignore else */\n    if (rg.id) {\n      if (reasons.length) {\n        result[rg.id] = { valid: false, reasons };\n      } else {\n        result[rg.id] = true;\n      }\n    }\n    rg.rules.forEach(r => {\n      if (typeof r === 'string') {\n        // Validation for this case was done earlier\n      } else if ('rules' in r) {\n        validateGroup(r);\n      } else {\n        validateRule(r);\n      }\n    });\n  };\n\n  validateGroup(query);\n\n  return result;\n  // You can return the result object itself like above, or if you just\n  // want the entire query to be marked invalid if _any_ rules/groups are\n  // invalid, return a boolean like this:\n  //   return Object.values(result).map(rv => (typeof rv !== 'boolean')).includes(true);\n  // That will return `true` if no errors were found.\n};\n","import type { Field, Option, OptionGroup, OptionList } from '../types/index.noReact';\n\nexport const isOptionGroupArray = (arr: Field['values']): arr is OptionGroup[] =>\n  Array.isArray(arr) && arr.length > 0 && 'options' in arr[0];\n\nexport const getOption = <OptType extends Option = Option>(\n  arr: OptionList<OptType>,\n  name: string\n): OptType | undefined =>\n  (isOptionGroupArray(arr) ? arr.flatMap(og => og.options) : arr).find(op => op.name === name);\n\nexport const getFirstOption = (arr?: OptionList) =>\n  !Array.isArray(arr) || arr.length === 0\n    ? null\n    : isOptionGroupArray(arr)\n    ? arr[0].options[0].name\n    : arr[0].name;\n","import type { Field, OptionList } from '../types/index.noReact';\nimport { isOptionGroupArray } from './optGroupUtils';\n\nexport const filterFieldsByComparator = (\n  field: Field,\n  fields: OptionList<Field>,\n  operator: string\n) => {\n  if (!field.comparator) {\n    const filterOutSameName = (f: Field) => f.name !== field.name;\n    if (isOptionGroupArray(fields)) {\n      return fields.map(og => ({\n        ...og,\n        options: og.options.filter(filterOutSameName),\n      }));\n    }\n    return fields.filter(filterOutSameName);\n  }\n\n  const filterByComparator = (fieldToCompare: Field) => {\n    if (field.name === fieldToCompare.name) {\n      return false;\n    }\n    if (typeof field.comparator === 'string') {\n      return field[field.comparator] === fieldToCompare[field.comparator];\n    }\n    return field.comparator!(fieldToCompare, operator);\n  };\n\n  if (isOptionGroupArray(fields)) {\n    return fields\n      .map(og => ({ ...og, options: og.options.filter(filterByComparator) }))\n      .filter(og => og.options.length > 0);\n  }\n\n  return fields.filter(filterByComparator);\n};\n","export const numericRegex = /^\\s*[+-]?(\\d+|\\d*\\.\\d+|\\d+\\.\\d*)([Ee][+-]?\\d+)?\\s*$/;\n\nexport const isPojo = (obj: any): obj is Record<string, any> =>\n  obj === null || typeof obj !== 'object' ? false : Object.getPrototypeOf(obj) === Object.prototype;\n","import type { ParseNumbersMethod } from '../types/index.noReact';\nimport { numericRegex } from './misc';\n\nexport interface ParseNumberOptions {\n  parseNumbers?: ParseNumbersMethod;\n}\n\nexport const parseNumber = (v: any, { parseNumbers }: ParseNumberOptions) => {\n  if (typeof v === 'bigint' || typeof v === 'number') {\n    return v;\n  }\n  return parseNumbers && (parseNumbers === 'native' || numericRegex.test(v)) ? parseFloat(v) : v;\n};\n","import type {\n  DefaultCombinatorName,\n  RuleGroupTypeAny,\n  ValueProcessorByRule,\n  ValueProcessorLegacy,\n} from '../../types/index.noReact';\nimport { numericRegex } from '../misc';\nimport { parseNumber } from '../parseNumber';\n\nexport const mapSQLOperator = (op: string) => {\n  switch (op.toLowerCase()) {\n    case 'null':\n      return 'is null';\n    case 'notnull':\n      return 'is not null';\n    case 'notin':\n      return 'not in';\n    case 'notbetween':\n      return 'not between';\n    case 'contains':\n    case 'beginswith':\n    case 'endswith':\n      return 'like';\n    case 'doesnotcontain':\n    case 'doesnotbeginwith':\n    case 'doesnotendwith':\n      return 'not like';\n    default:\n      return op;\n  }\n};\n\nexport const mongoOperators = {\n  '=': '$eq',\n  '!=': '$ne',\n  '<': '$lt',\n  '<=': '$lte',\n  '>': '$gt',\n  '>=': '$gte',\n  in: '$in',\n  notIn: '$nin',\n};\n\nexport const celCombinatorMap: Record<DefaultCombinatorName, '&&' | '||'> = {\n  and: '&&',\n  or: '||',\n};\n\n/**\n * Register these operators with jsonLogic before applying the\n * result of formatQuery(query, 'jsonlogic').\n *\n * @example\n * ```\n * for (const [op, func] of Object.entries(jsonLogicAdditionalOperators)) {\n *   jsonLogic.add_operation(op, func);\n * }\n * jsonLogic.apply({ \"startsWith\": [{ \"var\": \"firstName\" }, \"Stev\"] }, data);\n * ```\n */\nexport const jsonLogicAdditionalOperators: Record<\n  'startsWith' | 'endsWith',\n  (...args: any[]) => boolean\n> = {\n  startsWith: (a: string, b: string) => typeof a === 'string' && a.startsWith(b),\n  endsWith: (a: string, b: string) => typeof a === 'string' && a.endsWith(b),\n};\n\nexport const numerifyValues = (rg: RuleGroupTypeAny): RuleGroupTypeAny => ({\n  ...rg,\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-expect-error TS doesn't keep track of odd/even indexes here\n  rules: rg.rules.map(r => {\n    if (typeof r === 'string') {\n      return r;\n    }\n\n    if ('rules' in r) {\n      return numerifyValues(r);\n    }\n\n    let { value } = r;\n    if (typeof value === 'string') {\n      value = parseNumber(value, { parseNumbers: true });\n    }\n\n    return { ...r, value };\n  }),\n});\n\nexport const isValidValue = (v: any) =>\n  (typeof v === 'string' && v.length > 0) ||\n  (typeof v === 'number' && !isNaN(v)) ||\n  (typeof v !== 'string' && typeof v !== 'number');\n\nexport const shouldRenderAsNumber = (v: any, parseNumbers?: boolean) =>\n  parseNumbers &&\n  (typeof v === 'number' ||\n    typeof v === 'bigint' ||\n    (typeof v === 'string' && numericRegex.test(v)));\n\nexport const isValueProcessorLegacy = (\n  vp: ValueProcessorLegacy | ValueProcessorByRule\n): vp is ValueProcessorLegacy => vp.length >= 3;\n\nexport const quoteFieldNamesWithArray = (\n  quoteFieldNamesWith: null | string | [string, string] = ['', '']\n): [string, string] =>\n  Array.isArray(quoteFieldNamesWith)\n    ? quoteFieldNamesWith\n    : typeof quoteFieldNamesWith === 'string'\n    ? [quoteFieldNamesWith, quoteFieldNamesWith]\n    : quoteFieldNamesWith ?? ['', ''];\n","import type { RuleProcessor } from '../../types/index.noReact';\nimport { toArray, trimIfString } from '../arrayUtils';\nimport { shouldRenderAsNumber } from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\nconst escapeDoubleQuotes = (v: any, escapeQuotes?: boolean) =>\n  typeof v !== 'string' || !escapeQuotes ? v : v.replaceAll(`\"`, `\\\\\"`);\n\nexport const defaultRuleProcessorCEL: RuleProcessor = (\n  { field, operator, value, valueSource },\n  // istanbul ignore next\n  { escapeQuotes, parseNumbers } = {}\n) => {\n  const valueIsField = valueSource === 'field';\n  const operatorTL = operator.replace(/^=$/, '==');\n  const useBareValue =\n    typeof value === 'number' ||\n    typeof value === 'boolean' ||\n    typeof value === 'bigint' ||\n    shouldRenderAsNumber(value, parseNumbers);\n\n  switch (operatorTL) {\n    case '<':\n    case '<=':\n    case '==':\n    case '!=':\n    case '>':\n    case '>=':\n      return `${field} ${operatorTL} ${\n        valueIsField || useBareValue\n          ? trimIfString(value)\n          : `\"${escapeDoubleQuotes(value, escapeQuotes)}\"`\n      }`;\n\n    case 'contains':\n    case 'doesNotContain': {\n      const negate = shouldNegate(operatorTL) ? '!' : '';\n      return `${negate}${field}.contains(${\n        valueIsField ? trimIfString(value) : `\"${escapeDoubleQuotes(value, escapeQuotes)}\"`\n      })`;\n    }\n\n    case 'beginsWith':\n    case 'doesNotBeginWith': {\n      const negate = shouldNegate(operatorTL) ? '!' : '';\n      return `${negate}${field}.startsWith(${\n        valueIsField ? trimIfString(value) : `\"${escapeDoubleQuotes(value, escapeQuotes)}\"`\n      })`;\n    }\n\n    case 'endsWith':\n    case 'doesNotEndWith': {\n      const negate = shouldNegate(operatorTL) ? '!' : '';\n      return `${negate}${field}.endsWith(${\n        valueIsField ? trimIfString(value) : `\"${escapeDoubleQuotes(value, escapeQuotes)}\"`\n      })`;\n    }\n\n    case 'null':\n      return `${field} == null`;\n\n    case 'notNull':\n      return `${field} != null`;\n\n    case 'in':\n    case 'notIn': {\n      const negate = shouldNegate(operatorTL);\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length > 0) {\n        return `${negate ? '!(' : ''}${field} in [${valueAsArray\n          .map(val =>\n            valueIsField || shouldRenderAsNumber(val, parseNumbers)\n              ? `${trimIfString(val)}`\n              : `\"${escapeDoubleQuotes(val, escapeQuotes)}\"`\n          )\n          .join(', ')}]${negate ? ')' : ''}`;\n      } else {\n        return '';\n      }\n    }\n\n    case 'between':\n    case 'notBetween': {\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length >= 2 && !!valueAsArray[0] && !!valueAsArray[1]) {\n        const [first, second] = valueAsArray;\n        const firstNum = shouldRenderAsNumber(first, true) ? parseFloat(first) : NaN;\n        const secondNum = shouldRenderAsNumber(second, true) ? parseFloat(second) : NaN;\n        let firstValue = isNaN(firstNum)\n          ? valueIsField\n            ? `${first}`\n            : `\"${escapeDoubleQuotes(first, escapeQuotes)}\"`\n          : firstNum;\n        let secondValue = isNaN(secondNum)\n          ? valueIsField\n            ? `${second}`\n            : `\"${escapeDoubleQuotes(second, escapeQuotes)}\"`\n          : secondNum;\n\n        if (firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {\n          const tempNum = secondNum;\n          secondValue = firstNum;\n          firstValue = tempNum;\n        }\n\n        if (operator === 'between') {\n          return `(${field} >= ${firstValue} && ${field} <= ${secondValue})`;\n        } else {\n          return `(${field} < ${firstValue} || ${field} > ${secondValue})`;\n        }\n      } else {\n        return '';\n      }\n    }\n  }\n  return '';\n};\n","import type { RuleProcessor } from '../../types/index.noReact';\nimport { toArray, trimIfString } from '../arrayUtils';\nimport { isValidValue, mongoOperators, shouldRenderAsNumber } from './utils';\n\nconst escapeDoubleQuotes = (v: any) =>\n  typeof v !== 'string' ? v : v.replaceAll('\\\\', '\\\\\\\\').replaceAll(`\"`, `\\\\\"`);\n\nexport const defaultRuleProcessorMongoDB: RuleProcessor = (\n  { field, operator, value, valueSource },\n  // istanbul ignore next\n  { parseNumbers } = {}\n) => {\n  const valueIsField = valueSource === 'field';\n  const useBareValue =\n    typeof value === 'number' ||\n    typeof value === 'boolean' ||\n    typeof value === 'bigint' ||\n    shouldRenderAsNumber(value, parseNumbers);\n\n  if (operator === '=' && !valueIsField) {\n    return `{\"${field}\":${useBareValue ? trimIfString(value) : `\"${escapeDoubleQuotes(value)}\"`}}`;\n  }\n\n  switch (operator) {\n    case '<':\n    case '<=':\n    case '=':\n    case '!=':\n    case '>':\n    case '>=': {\n      const mongoOperator = mongoOperators[operator];\n      return valueIsField\n        ? `{\"$expr\":{\"${mongoOperator}\":[\"$${field}\",\"$${value}\"]}}`\n        : `{\"${field}\":{\"${mongoOperator}\":${\n            useBareValue ? trimIfString(value) : `\"${escapeDoubleQuotes(value)}\"`\n          }}}`;\n    }\n\n    case 'contains':\n      return valueIsField\n        ? `{\"$where\":\"this.${field}.includes(this.${value})\"}`\n        : `{\"${field}\":{\"$regex\":\"${escapeDoubleQuotes(value)}\"}}`;\n\n    case 'beginsWith':\n      return valueIsField\n        ? `{\"$where\":\"this.${field}.startsWith(this.${value})\"}`\n        : `{\"${field}\":{\"$regex\":\"^${escapeDoubleQuotes(value)}\"}}`;\n\n    case 'endsWith':\n      return valueIsField\n        ? `{\"$where\":\"this.${field}.endsWith(this.${value})\"}`\n        : `{\"${field}\":{\"$regex\":\"${escapeDoubleQuotes(value)}$\"}}`;\n\n    case 'doesNotContain':\n      return valueIsField\n        ? `{\"$where\":\"!this.${field}.includes(this.${value})\"}`\n        : `{\"${field}\":{\"$not\":{\"$regex\":\"${escapeDoubleQuotes(value)}\"}}}`;\n\n    case 'doesNotBeginWith':\n      return valueIsField\n        ? `{\"$where\":\"!this.${field}.startsWith(this.${value})\"}`\n        : `{\"${field}\":{\"$not\":{\"$regex\":\"^${escapeDoubleQuotes(value)}\"}}}`;\n\n    case 'doesNotEndWith':\n      return valueIsField\n        ? `{\"$where\":\"!this.${field}.endsWith(this.${value})\"}`\n        : `{\"${field}\":{\"$not\":{\"$regex\":\"${escapeDoubleQuotes(value)}$\"}}}`;\n\n    case 'null':\n      return `{\"${field}\":null}`;\n\n    case 'notNull':\n      return `{\"${field}\":{\"$ne\":null}}`;\n\n    case 'in':\n    case 'notIn': {\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length > 0) {\n        return valueIsField\n          ? `{\"$where\":\"${operator === 'notIn' ? '!' : ''}[${valueAsArray\n              .map(val => `this.${val}`)\n              .join(',')}].includes(this.${field})\"}`\n          : `{\"${field}\":{\"${mongoOperators[operator]}\":[${valueAsArray\n              .map(val =>\n                shouldRenderAsNumber(val, parseNumbers)\n                  ? `${trimIfString(val)}`\n                  : `\"${escapeDoubleQuotes(val)}\"`\n              )\n              .join(',')}]}}`;\n      } else {\n        return '';\n      }\n    }\n\n    case 'between':\n    case 'notBetween': {\n      const valueAsArray = toArray(value);\n      if (\n        valueAsArray.length >= 2 &&\n        isValidValue(valueAsArray[0]) &&\n        isValidValue(valueAsArray[1])\n      ) {\n        const [first, second] = valueAsArray;\n        const firstNum = shouldRenderAsNumber(first, true) ? parseFloat(first) : NaN;\n        const secondNum = shouldRenderAsNumber(second, true) ? parseFloat(second) : NaN;\n        const firstValue =\n          valueIsField || !isNaN(firstNum) ? `${first}` : `\"${escapeDoubleQuotes(first)}\"`;\n        const secondValue =\n          valueIsField || !isNaN(secondNum) ? `${second}` : `\"${escapeDoubleQuotes(second)}\"`;\n        if (operator === 'between') {\n          return valueIsField\n            ? `{\"$and\":[{\"$expr\":{\"$gte\":[\"$${field}\",\"$${firstValue}\"]}},{\"$expr\":{\"$lte\":[\"$${field}\",\"$${secondValue}\"]}}]}`\n            : `{\"${field}\":{\"$gte\":${firstValue},\"$lte\":${secondValue}}}`;\n        } else {\n          return valueIsField\n            ? `{\"$or\":[{\"$expr\":{\"$lt\":[\"$${field}\",\"$${firstValue}\"]}},{\"$expr\":{\"$gt\":[\"$${field}\",\"$${secondValue}\"]}}]}`\n            : `{\"$or\":[{\"${field}\":{\"$lt\":${firstValue}}},{\"${field}\":{\"$gt\":${secondValue}}}]}`;\n        }\n      } else {\n        return '';\n      }\n    }\n  }\n  return '';\n};\n","import type { RuleProcessor } from '../../types/index.noReact';\nimport { toArray, trimIfString } from '../arrayUtils';\nimport { shouldRenderAsNumber } from './utils';\n\nconst shouldNegate = (op: string) => /^(does)?not/i.test(op);\n\nconst wrapInNegation = (clause: string, negate: boolean) => (negate ? `!(${clause})` : `${clause}`);\n\nconst escapeSingleQuotes = (v: any, escapeQuotes?: boolean) =>\n  typeof v !== 'string' || !escapeQuotes ? v : v.replaceAll(`'`, `\\\\'`);\n\nexport const defaultRuleProcessorSpEL: RuleProcessor = (\n  { field, operator, value, valueSource },\n  // istanbul ignore next\n  { escapeQuotes, parseNumbers } = {}\n) => {\n  const valueIsField = valueSource === 'field';\n  const operatorTL = operator.replace(/^=$/, '==');\n  const useBareValue =\n    typeof value === 'number' ||\n    typeof value === 'boolean' ||\n    typeof value === 'bigint' ||\n    shouldRenderAsNumber(value, parseNumbers);\n\n  switch (operatorTL) {\n    case '<':\n    case '<=':\n    case '==':\n    case '!=':\n    case '>':\n    case '>=':\n      return `${field} ${operatorTL} ${\n        valueIsField || useBareValue\n          ? trimIfString(value)\n          : `'${escapeSingleQuotes(value, escapeQuotes)}'`\n      }`;\n\n    case 'contains':\n    case 'doesNotContain':\n      return wrapInNegation(\n        `${field} matches ${\n          valueIsField || useBareValue\n            ? trimIfString(value)\n            : `'${escapeSingleQuotes(value, escapeQuotes)}'`\n        }`,\n        shouldNegate(operatorTL)\n      );\n\n    case 'beginsWith':\n    case 'doesNotBeginWith': {\n      const valueTL = valueIsField\n        ? `'^'.concat(${trimIfString(value)})`\n        : `'${\n            (typeof value === 'string' && !value.startsWith('^')) || useBareValue ? '^' : ''\n          }${escapeSingleQuotes(value, escapeQuotes)}'`;\n      return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate(operatorTL));\n    }\n\n    case 'endsWith':\n    case 'doesNotEndWith': {\n      const valueTL = valueIsField\n        ? `${trimIfString(value)}.concat('$')`\n        : `'${escapeSingleQuotes(value, escapeQuotes)}${\n            (typeof value === 'string' && !value.endsWith('$')) || useBareValue ? '$' : ''\n          }'`;\n      return wrapInNegation(`${field} matches ${valueTL}`, shouldNegate(operatorTL));\n    }\n\n    case 'null':\n      return `${field} == null`;\n\n    case 'notNull':\n      return `${field} != null`;\n\n    case 'in':\n    case 'notIn': {\n      const negate = shouldNegate(operatorTL) ? '!' : '';\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length > 0) {\n        return `${negate}(${valueAsArray\n          .map(\n            val =>\n              `${field} == ${\n                valueIsField || shouldRenderAsNumber(val, parseNumbers)\n                  ? `${trimIfString(val)}`\n                  : `'${escapeSingleQuotes(val, escapeQuotes)}'`\n              }`\n          )\n          .join(' or ')})`;\n      } else {\n        return '';\n      }\n    }\n\n    case 'between':\n    case 'notBetween': {\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length >= 2 && !!valueAsArray[0] && !!valueAsArray[1]) {\n        const [first, second] = valueAsArray;\n        const firstNum = shouldRenderAsNumber(first, true) ? parseFloat(first) : NaN;\n        const secondNum = shouldRenderAsNumber(second, true) ? parseFloat(second) : NaN;\n        let firstValue = isNaN(firstNum)\n          ? valueIsField\n            ? `${first}`\n            : `'${escapeSingleQuotes(first, escapeQuotes)}'`\n          : firstNum;\n        let secondValue = isNaN(secondNum)\n          ? valueIsField\n            ? `${second}`\n            : `'${escapeSingleQuotes(second, escapeQuotes)}'`\n          : secondNum;\n        if (firstValue === firstNum && secondValue === secondNum && secondNum < firstNum) {\n          const tempNum = secondNum;\n          secondValue = firstNum;\n          firstValue = tempNum;\n        }\n        if (operator === 'between') {\n          return `(${field} >= ${firstValue} and ${field} <= ${secondValue})`;\n        } else {\n          return `(${field} < ${firstValue} or ${field} > ${secondValue})`;\n        }\n      } else {\n        return '';\n      }\n    }\n  }\n\n  return '';\n};\n","import type { ValueProcessorByRule } from '../../types/index.noReact';\nimport { toArray, trimIfString } from '../arrayUtils';\nimport { isValidValue, quoteFieldNamesWithArray, shouldRenderAsNumber } from './utils';\n\nconst escapeSingleQuotes = (v: any, escapeQuotes?: boolean) =>\n  escapeQuotes && typeof v === 'string' ? v.replaceAll(`'`, `''`) : v;\n\nexport const defaultValueProcessorByRule: ValueProcessorByRule = (\n  { operator, value, valueSource },\n  // istanbul ignore next\n  { escapeQuotes, parseNumbers, quoteFieldNamesWith } = {}\n) => {\n  const valueIsField = valueSource === 'field';\n  const [qfnwPre, qfnwPost] = quoteFieldNamesWithArray(quoteFieldNamesWith);\n  const operatorLowerCase = operator.toLowerCase();\n\n  const wrapFieldName = (f: any) => `${qfnwPre}${f}${qfnwPost}`;\n\n  switch (operatorLowerCase) {\n    case 'null':\n    case 'notnull': {\n      return '';\n    }\n\n    case 'in':\n    case 'notin': {\n      const valueAsArray = toArray(value);\n      if (valueAsArray.length > 0) {\n        return `(${valueAsArray\n          .map(v =>\n            valueIsField\n              ? wrapFieldName(v)\n              : shouldRenderAsNumber(v, parseNumbers)\n              ? `${trimIfString(v)}`\n              : `'${escapeSingleQuotes(v, escapeQuotes)}'`\n          )\n          .join(', ')})`;\n      }\n      return '';\n    }\n\n    case 'between':\n    case 'notbetween': {\n      const valueAsArray = toArray(value);\n      if (\n        valueAsArray.length >= 2 &&\n        isValidValue(valueAsArray[0]) &&\n        isValidValue(valueAsArray[1])\n      ) {\n        const [first, second] = valueAsArray;\n        return valueIsField\n          ? `${wrapFieldName(first)} and ${wrapFieldName(second)}`\n          : shouldRenderAsNumber(first, parseNumbers) && shouldRenderAsNumber(second, parseNumbers)\n          ? `${trimIfString(first)} and ${trimIfString(second)}`\n          : `'${escapeSingleQuotes(first, escapeQuotes)}' and '${escapeSingleQuotes(\n              second,\n              escapeQuotes\n            )}'`;\n      }\n      return '';\n    }\n\n    case 'contains':\n    case 'doesnotcontain':\n      return valueIsField\n        ? `'%' || ${wrapFieldName(value)} || '%'`\n        : `'%${escapeSingleQuotes(value, escapeQuotes)}%'`;\n\n    case 'beginswith':\n    case 'doesnotbeginwith':\n      return valueIsField\n        ? `${wrapFieldName(value)} || '%'`\n        : `'${escapeSingleQuotes(value, escapeQuotes)}%'`;\n\n    case 'endswith':\n    case 'doesnotendwith':\n      return valueIsField\n        ? `'%' || ${wrapFieldName(value)}`\n        : `'%${escapeSingleQuotes(value, escapeQuotes)}'`;\n  }\n\n  if (typeof value === 'boolean') {\n    return value ? 'TRUE' : 'FALSE';\n  }\n\n  return valueIsField\n    ? wrapFieldName(value)\n    : shouldRenderAsNumber(value, parseNumbers)\n    ? `${trimIfString(value)}`\n    : `'${escapeSingleQuotes(value, escapeQuotes)}'`;\n};\n","import type {\n  JsonLogicVar,\n  RQBJsonLogic,\n  RuleProcessor,\n  RuleType,\n} from '../../types/index.noReact';\nimport { toArray } from '../arrayUtils';\nimport { isValidValue, shouldRenderAsNumber } from './utils';\n\nconst convertOperator = (op: '<' | '<=' | '=' | '!=' | '>' | '>=') =>\n  op\n    .replace(/^(=)$/, '$1=')\n    .replace(/^notNull$/i, '!=')\n    .replace(/^null$/i, '==') as '<' | '<=' | '==' | '!=' | '===' | '!==' | '>' | '>=';\n\nconst negateIfNotOp = (op: string, jsonRule: RQBJsonLogic) =>\n  /^(does)?not/i.test(op) ? { '!': jsonRule } : jsonRule;\n\nexport const defaultRuleProcessorJsonLogic: RuleProcessor = (\n  { field, operator, value, valueSource }: RuleType,\n  { parseNumbers } = {}\n): RQBJsonLogic => {\n  const valueIsField = valueSource === 'field';\n  const fieldObject: JsonLogicVar = { var: field };\n  const fieldOrNumberRenderer = (v: any) =>\n    valueIsField ? { var: `${v}` } : shouldRenderAsNumber(v, parseNumbers) ? parseFloat(v) : v;\n\n  switch (operator) {\n    case '<':\n    case '<=':\n    case '=':\n    case '!=':\n    case '>':\n    case '>=':\n      return {\n        [convertOperator(operator)]: [fieldObject, fieldOrNumberRenderer(value)],\n      } as RQBJsonLogic;\n\n    case 'null':\n    case 'notNull': {\n      return {\n        [`${operator === 'notNull' ? '!' : '='}=`]: [fieldObject, null],\n      } as RQBJsonLogic;\n    }\n\n    case 'in':\n    case 'notIn': {\n      // TODO: extract this map function\n      const valueAsArray = toArray(value).map(fieldOrNumberRenderer);\n      if (valueAsArray.length > 0) {\n        const jsonRule: RQBJsonLogic = { in: [fieldObject, valueAsArray] };\n        return negateIfNotOp(operator, jsonRule);\n      }\n      return false;\n    }\n\n    case 'between':\n    case 'notBetween': {\n      const valueAsArray = toArray(value);\n      if (\n        valueAsArray.length >= 2 &&\n        isValidValue(valueAsArray[0]) &&\n        isValidValue(valueAsArray[1])\n      ) {\n        let [first, second] = valueAsArray;\n        if (\n          !valueIsField &&\n          shouldRenderAsNumber(first, true) &&\n          shouldRenderAsNumber(second, true)\n        ) {\n          const firstNum = parseFloat(first);\n          const secondNum = parseFloat(second);\n          if (secondNum < firstNum) {\n            const tempNum = secondNum;\n            second = firstNum;\n            first = tempNum;\n          } else {\n            first = firstNum;\n            second = secondNum;\n          }\n        } else if (valueIsField) {\n          first = { var: first };\n          second = { var: second };\n        }\n        const jsonRule: RQBJsonLogic = { '<=': [first, fieldObject, second] };\n        return negateIfNotOp(operator, jsonRule);\n      }\n      return false;\n    }\n\n    case 'contains':\n    case 'doesNotContain': {\n      const jsonRule: RQBJsonLogic = {\n        in: [fieldOrNumberRenderer(value), fieldObject],\n      };\n      return negateIfNotOp(operator, jsonRule);\n    }\n\n    case 'beginsWith':\n    case 'doesNotBeginWith': {\n      const jsonRule: RQBJsonLogic = {\n        startsWith: [fieldObject, fieldOrNumberRenderer(value)],\n      };\n      return negateIfNotOp(operator, jsonRule);\n    }\n\n    case 'endsWith':\n    case 'doesNotEndWith': {\n      const jsonRule: RQBJsonLogic = {\n        endsWith: [fieldObject, fieldOrNumberRenderer(value)],\n      };\n      return negateIfNotOp(operator, jsonRule);\n    }\n  }\n  return false;\n};\n","import type {\n  RuleType,\n  ValueProcessorByRule,\n  ValueProcessorOptions,\n} from '../../types/index.noReact';\nimport { defaultValueProcessorByRule } from './defaultValueProcessorByRule';\nimport { mapSQLOperator, quoteFieldNamesWithArray } from './utils';\n\ntype DefaultRuleProcessorSqlParams = ValueProcessorOptions & {\n  valueProcessor?: ValueProcessorByRule;\n  quoteFieldNamesWith?: string | [string, string];\n};\n\nexport const defaultRuleProcessorSQL = (\n  rule: RuleType,\n  {\n    parseNumbers,\n    escapeQuotes,\n    quoteFieldNamesWith = ['', ''],\n    valueProcessor = defaultValueProcessorByRule,\n  }: DefaultRuleProcessorSqlParams = {}\n) => {\n  const value = valueProcessor(rule, { parseNumbers, escapeQuotes, quoteFieldNamesWith });\n  const operator = mapSQLOperator(rule.operator);\n\n  const operatorLowerCase = operator.toLowerCase();\n  if (\n    (operatorLowerCase === 'in' ||\n      operatorLowerCase === 'not in' ||\n      operatorLowerCase === 'between' ||\n      operatorLowerCase === 'not between') &&\n    !value\n  ) {\n    return '';\n  }\n\n  const [qFNWpre, qFNWpost] = quoteFieldNamesWithArray(quoteFieldNamesWith);\n\n  return `${qFNWpre}${rule.field}${qFNWpost} ${operator} ${value}`.trim();\n};\n","import type {\n  RuleGroupTypeAny,\n  RuleType,\n  RuleValidator,\n  ValidationResult,\n} from '../types/index.noReact';\nimport { isPojo } from './misc';\n\nexport const isValidationResult = (vr?: ValidationResult): vr is ValidationResult =>\n  isPojo(vr) && typeof vr.valid === 'boolean';\n\nexport const isRuleOrGroupValid = (\n  rg: RuleType | RuleGroupTypeAny,\n  validationResult?: boolean | ValidationResult,\n  validator?: RuleValidator\n) => {\n  if (typeof validationResult === 'boolean') {\n    return validationResult;\n  }\n  if (isValidationResult(validationResult)) {\n    return validationResult.valid;\n  }\n  if (typeof validator === 'function' && !('rules' in rg)) {\n    const vr = validator(rg);\n    if (typeof vr === 'boolean') {\n      return vr;\n    }\n    // istanbul ignore else\n    if (isValidationResult(vr)) {\n      return vr.valid;\n    }\n  }\n  return true;\n};\n","import type { Option, OptionGroup } from '../types/index.noReact';\n\nexport const uniqByName = <T extends { name: string }>(originalArray: T[]): T[] => {\n  const names = new Set<string>();\n  const newArray: any[] = [];\n  originalArray.forEach(el => {\n    if (!names.has(el.name)) {\n      names.add(el.name);\n      newArray.push(el);\n    }\n  });\n  return newArray;\n};\n\nexport const uniqOptGroups = <T extends Option>(originalArray: OptionGroup<T>[]) => {\n  const labels = new Set<string>();\n  const names = new Set<string>();\n  const newArray: OptionGroup<T>[] = [];\n  originalArray.forEach(el => {\n    if (!labels.has(el.label)) {\n      labels.add(el.label);\n      const optionsForThisGroup: T[] = [];\n      el.options.forEach(opt => {\n        if (!names.has(opt.name)) {\n          names.add(opt.name);\n          optionsForThisGroup.push(opt);\n        }\n      });\n      newArray.push({ ...el, options: optionsForThisGroup });\n    }\n  });\n  return newArray;\n};\n","import { defaultPlaceholderFieldName, defaultPlaceholderOperatorName } from '../../defaults';\nimport type {\n  DefaultCombinatorName,\n  ExportFormat,\n  FormatQueryOptions,\n  ParameterizedNamedSQL,\n  ParameterizedSQL,\n  QueryValidator,\n  RQBJsonLogic,\n  RuleGroupType,\n  RuleGroupTypeAny,\n  RuleProcessor,\n  RuleType,\n  RuleValidator,\n  ValidationMap,\n  ValidationResult,\n} from '../../types/index.noReact';\nimport { toArray } from '../arrayUtils';\nimport { convertFromIC } from '../convertQuery';\nimport { isRuleGroup, isRuleGroupType } from '../isRuleGroup';\nimport { isRuleOrGroupValid } from '../isRuleOrGroupValid';\nimport { uniqByName } from '../uniq';\nimport { defaultRuleProcessorCEL } from './defaultRuleProcessorCEL';\nimport { defaultRuleProcessorJsonLogic } from './defaultRuleProcessorJsonLogic';\nimport { defaultRuleProcessorMongoDB } from './defaultRuleProcessorMongoDB';\nimport { defaultRuleProcessorSpEL } from './defaultRuleProcessorSpEL';\nimport { defaultRuleProcessorSQL } from './defaultRuleProcessorSQL';\nimport { defaultValueProcessorByRule } from './defaultValueProcessorByRule';\nimport {\n  celCombinatorMap,\n  isValueProcessorLegacy,\n  mapSQLOperator,\n  numerifyValues,\n  quoteFieldNamesWithArray,\n  shouldRenderAsNumber,\n} from './utils';\n\n/**\n * Generates a formatted (indented two spaces) JSON string from a query object.\n */\nfunction formatQuery(ruleGroup: RuleGroupTypeAny): string;\n/**\n * Generates a {@link ParameterizedSQL} object from a query object.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options: 'parameterized' | (Omit<FormatQueryOptions, 'format'> & { format: 'parameterized' })\n): ParameterizedSQL;\n/**\n * Generates a {@link ParameterizedNamedSQL} object from a query object.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options:\n    | 'parameterized_named'\n    | (Omit<FormatQueryOptions, 'format'> & { format: 'parameterized_named' })\n): ParameterizedNamedSQL;\n/**\n * Generates a {@link JsonLogic} object from a query object.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options: 'jsonlogic' | (Omit<FormatQueryOptions, 'format'> & { format: 'jsonlogic' })\n): RQBJsonLogic;\n/**\n * Generates a formatted (indented two spaces) JSON string from a query object.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options: Omit<FormatQueryOptions, 'format'>\n): string;\n/**\n * Generates a query string in the requested format.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options: Exclude<ExportFormat, 'parameterized' | 'parameterized_named' | 'jsonlogic'>\n): string;\n/**\n * Generates a query string in the requested format.\n */\nfunction formatQuery(\n  ruleGroup: RuleGroupTypeAny,\n  options: Omit<FormatQueryOptions, 'format'> & {\n    format: Exclude<ExportFormat, 'parameterized' | 'parameterized_named' | 'jsonlogic'>;\n  }\n): string;\nfunction formatQuery(ruleGroup: RuleGroupTypeAny, options: FormatQueryOptions | ExportFormat = {}) {\n  let format: ExportFormat = 'json';\n  let valueProcessorInternal = defaultValueProcessorByRule;\n  let ruleProcessorInternal: RuleProcessor | null = null;\n  let quoteFieldNamesWith: [string, string] = ['', ''];\n  let validator: QueryValidator = () => true;\n  let fields: Required<FormatQueryOptions>['fields'] = [];\n  let validationMap: ValidationMap = {};\n  let fallbackExpression = '';\n  let paramPrefix = ':';\n  let paramsKeepPrefix = false;\n  let parseNumbers = false;\n  let placeholderFieldName = defaultPlaceholderFieldName;\n  let placeholderOperatorName = defaultPlaceholderOperatorName;\n\n  if (typeof options === 'string') {\n    format = options.toLowerCase() as ExportFormat;\n    if (format === 'mongodb') {\n      ruleProcessorInternal = defaultRuleProcessorMongoDB;\n    } else if (format === 'cel') {\n      ruleProcessorInternal = defaultRuleProcessorCEL;\n    } else if (format === 'spel') {\n      ruleProcessorInternal = defaultRuleProcessorSpEL;\n    } else if (format === 'jsonlogic') {\n      ruleProcessorInternal = defaultRuleProcessorJsonLogic;\n    }\n  } else {\n    format = (options.format ?? 'json').toLowerCase() as ExportFormat;\n    const { valueProcessor = null, ruleProcessor = null } = options;\n    if (typeof ruleProcessor === 'function') {\n      ruleProcessorInternal = ruleProcessor;\n    }\n    valueProcessorInternal =\n      typeof valueProcessor === 'function'\n        ? (r, opts) =>\n            isValueProcessorLegacy(valueProcessor)\n              ? valueProcessor(r.field, r.operator, r.value, r.valueSource)\n              : valueProcessor(r, opts)\n        : format === 'mongodb'\n        ? ruleProcessorInternal ?? defaultRuleProcessorMongoDB\n        : format === 'cel'\n        ? ruleProcessorInternal ?? defaultRuleProcessorCEL\n        : format === 'spel'\n        ? ruleProcessorInternal ?? defaultRuleProcessorSpEL\n        : format === 'jsonlogic'\n        ? ruleProcessorInternal ?? defaultRuleProcessorJsonLogic\n        : defaultValueProcessorByRule;\n    quoteFieldNamesWith = quoteFieldNamesWithArray(options.quoteFieldNamesWith);\n    validator = options.validator ?? (() => true);\n    fields = options.fields ?? [];\n    fallbackExpression = options.fallbackExpression ?? '';\n    paramPrefix = options.paramPrefix ?? ':';\n    paramsKeepPrefix = !!options.paramsKeepPrefix;\n    parseNumbers = !!options.parseNumbers;\n    placeholderFieldName = options.placeholderFieldName ?? defaultPlaceholderFieldName;\n    placeholderOperatorName = options.placeholderOperatorName ?? defaultPlaceholderOperatorName;\n  }\n  if (!fallbackExpression) {\n    fallbackExpression =\n      format === 'mongodb'\n        ? '\"$and\":[{\"$expr\":true}]'\n        : format === 'cel' || format === 'spel'\n        ? '1 == 1'\n        : '(1 = 1)';\n  }\n\n  /**\n   * JSON\n   */\n  if (format === 'json' || format === 'json_without_ids') {\n    const rg = parseNumbers ? numerifyValues(ruleGroup) : ruleGroup;\n    if (format === 'json') {\n      return JSON.stringify(rg, null, 2);\n    }\n    return JSON.stringify(rg, [\n      'rules',\n      'field',\n      'value',\n      'operator',\n      'combinator',\n      'not',\n      'valueSource',\n    ]);\n  }\n\n  // istanbul ignore else\n  if (typeof validator === 'function') {\n    const validationResult = validator(ruleGroup);\n    if (typeof validationResult === 'boolean') {\n      if (validationResult === false) {\n        return format === 'parameterized'\n          ? { sql: fallbackExpression, params: [] }\n          : format === 'parameterized_named'\n          ? { sql: fallbackExpression, params: {} }\n          : format === 'mongodb'\n          ? `{${fallbackExpression}}`\n          : format === 'jsonlogic'\n          ? false\n          : fallbackExpression;\n      }\n    } else {\n      validationMap = validationResult;\n    }\n  }\n\n  const validatorMap: Record<string, RuleValidator> = {};\n  const uniqueFields = uniqByName(fields);\n  uniqueFields.forEach(f => {\n    // istanbul ignore else\n    if (typeof f.validator === 'function') {\n      validatorMap[f.name] = f.validator;\n    }\n  });\n\n  const validateRule = (rule: RuleType) => {\n    let validationResult: boolean | ValidationResult | undefined = undefined;\n    let fieldValidator: RuleValidator | undefined = undefined;\n    if (rule.id) {\n      validationResult = validationMap[rule.id];\n    }\n    if (fields.length) {\n      const fieldArr = fields.filter(f => f.name === rule.field);\n      if (fieldArr.length) {\n        const field = fieldArr[0];\n        // istanbul ignore else\n        if (typeof field.validator === 'function') {\n          fieldValidator = field.validator;\n        }\n      }\n    }\n    return [validationResult, fieldValidator] as const;\n  };\n\n  /**\n   * SQL\n   */\n  if (format === 'sql') {\n    const processRuleGroup = (rg: RuleGroupTypeAny, outermost?: boolean): string => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return outermost ? fallbackExpression : '';\n      }\n\n      const processedRules = rg.rules.map(rule => {\n        // Independent combinators\n        if (typeof rule === 'string') {\n          return rule;\n        }\n\n        // Groups\n        if (isRuleGroup(rule)) {\n          return processRuleGroup(rule);\n        }\n\n        // Basic rule validation\n        const [validationResult, fieldValidator] = validateRule(rule);\n        if (\n          !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n          rule.field === placeholderFieldName ||\n          rule.operator === placeholderOperatorName\n        ) {\n          return '';\n        }\n\n        const escapeQuotes = (rule.valueSource ?? 'value') === 'value';\n\n        // Use custom rule processor if provided...\n        if (typeof ruleProcessorInternal === 'function') {\n          return ruleProcessorInternal(rule, { parseNumbers, escapeQuotes, quoteFieldNamesWith });\n        }\n        // ...otherwise use default rule processor and pass in the value\n        // processor (which may be custom)\n        return defaultRuleProcessorSQL(rule, {\n          parseNumbers,\n          escapeQuotes,\n          valueProcessor: valueProcessorInternal,\n          quoteFieldNamesWith,\n        });\n      });\n\n      if (processedRules.length === 0) {\n        return fallbackExpression;\n      }\n\n      return `${rg.not ? 'NOT ' : ''}(${processedRules\n        .filter(Boolean)\n        .join(isRuleGroupType(rg) ? ` ${rg.combinator} ` : ' ')})`;\n    };\n\n    return processRuleGroup(ruleGroup, true);\n  }\n\n  /**\n   * Parameterized SQL\n   */\n  if (format === 'parameterized' || format === 'parameterized_named') {\n    const parameterized = format === 'parameterized';\n    const params: any[] = [];\n    const params_named: Record<string, any> = {};\n    const fieldParamIndexes: Record<string, number> = {};\n\n    const getNextNamedParam = (field: string) => {\n      fieldParamIndexes[field] = (fieldParamIndexes[field] ?? 0) + 1;\n      return `${field}_${fieldParamIndexes[field]}`;\n    };\n\n    const processRule = (rule: RuleType) => {\n      const [validationResult, fieldValidator] = validateRule(rule);\n      if (\n        !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n        rule.field === placeholderFieldName ||\n        rule.operator === placeholderOperatorName\n      ) {\n        return '';\n      }\n\n      const value = valueProcessorInternal(rule, { parseNumbers, quoteFieldNamesWith });\n      const operator = mapSQLOperator(rule.operator);\n\n      if ((rule.valueSource ?? 'value') === 'value') {\n        if (operator.toLowerCase() === 'is null' || operator.toLowerCase() === 'is not null') {\n          return `${quoteFieldNamesWith[0]}${rule.field}${quoteFieldNamesWith[1]} ${operator}`;\n        } else if (operator.toLowerCase() === 'in' || operator.toLowerCase() === 'not in') {\n          if (value) {\n            const splitValue = toArray(rule.value);\n            if (parameterized) {\n              splitValue.forEach(v =>\n                params.push(shouldRenderAsNumber(v, parseNumbers) ? parseFloat(v) : v)\n              );\n              return `${quoteFieldNamesWith[0]}${rule.field}${\n                quoteFieldNamesWith[1]\n              } ${operator} (${splitValue.map(() => '?').join(', ')})`;\n            }\n            const inParams: string[] = [];\n            splitValue.forEach(v => {\n              const thisParamName = getNextNamedParam(rule.field);\n              inParams.push(`${paramPrefix}${thisParamName}`);\n              params_named[`${paramsKeepPrefix ? paramPrefix : ''}${thisParamName}`] =\n                shouldRenderAsNumber(v, parseNumbers) ? parseFloat(v) : v;\n            });\n            return `${quoteFieldNamesWith[0]}${rule.field}${\n              quoteFieldNamesWith[1]\n            } ${operator} (${inParams.join(', ')})`;\n          } else {\n            return '';\n          }\n        } else if (\n          operator.toLowerCase() === 'between' ||\n          operator.toLowerCase() === 'not between'\n        ) {\n          if (value) {\n            const valueAsArray = toArray(rule.value);\n            const [first, second] = valueAsArray\n              .slice(0, 2)\n              .map(v => (shouldRenderAsNumber(v, parseNumbers) ? parseFloat(v) : v));\n            if (parameterized) {\n              params.push(first);\n              params.push(second);\n              return `${quoteFieldNamesWith[0]}${rule.field}${quoteFieldNamesWith[1]} ${operator} ? and ?`;\n            }\n            const firstParamName = getNextNamedParam(rule.field);\n            const secondParamName = getNextNamedParam(rule.field);\n            params_named[`${paramsKeepPrefix ? paramPrefix : ''}${firstParamName}`] = first;\n            params_named[`${paramsKeepPrefix ? paramPrefix : ''}${secondParamName}`] = second;\n            return `${quoteFieldNamesWith[0]}${rule.field}${quoteFieldNamesWith[1]} ${operator} ${paramPrefix}${firstParamName} and ${paramPrefix}${secondParamName}`;\n          } else {\n            return '';\n          }\n        }\n        let paramValue = rule.value;\n        if (typeof rule.value === 'string') {\n          if (shouldRenderAsNumber(rule.value, parseNumbers)) {\n            paramValue = parseFloat(rule.value);\n          } else {\n            // Note that we're using `value` here, which has been processed through\n            // a `valueProcessor`, as opposed to `rule.value` which has not\n            paramValue = /^'.*'$/g.test(value)\n              ? value.replace(/(^'|'$)/g, '')\n              : /* istanbul ignore next */ value;\n          }\n        }\n        let paramName = '';\n        if (parameterized) {\n          params.push(paramValue);\n        } else {\n          paramName = getNextNamedParam(rule.field);\n          params_named[`${paramsKeepPrefix ? paramPrefix : ''}${paramName}`] = paramValue;\n        }\n        return `${quoteFieldNamesWith[0]}${rule.field}${quoteFieldNamesWith[1]} ${operator} ${\n          parameterized ? '?' : `${paramPrefix}${paramName}`\n        }`.trim();\n      } else {\n        const operatorLowerCase = operator.toLowerCase();\n        if (\n          (operatorLowerCase === 'in' ||\n            operatorLowerCase === 'not in' ||\n            operatorLowerCase === 'between' ||\n            operatorLowerCase === 'not between') &&\n          !value\n        ) {\n          return '';\n        }\n      }\n      return `${quoteFieldNamesWith[0]}${rule.field}${quoteFieldNamesWith[1]} ${operator} ${value}`.trim();\n    };\n\n    const processRuleGroup = (rg: RuleGroupTypeAny, outermost?: boolean): string => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return outermost ? fallbackExpression : '';\n      }\n\n      const processedRules = rg.rules.map(rule => {\n        if (typeof rule === 'string') {\n          return rule;\n        }\n        if (isRuleGroup(rule)) {\n          return processRuleGroup(rule);\n        }\n        return processRule(rule);\n      });\n\n      if (processedRules.length === 0) {\n        return fallbackExpression;\n      }\n\n      return `${rg.not ? 'NOT ' : ''}(${processedRules\n        .filter(Boolean)\n        .join(isRuleGroupType(rg) ? ` ${rg.combinator} ` : ' ')})`;\n    };\n\n    if (parameterized) {\n      return { sql: processRuleGroup(ruleGroup, true), params };\n    }\n    return { sql: processRuleGroup(ruleGroup, true), params: params_named };\n  }\n\n  /**\n   * MongoDB\n   */\n  if (format === 'mongodb') {\n    const processRuleGroup = (rg: RuleGroupType, outermost?: boolean) => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return outermost ? fallbackExpression : '';\n      }\n\n      const combinator = `\"$${rg.combinator.toLowerCase()}\"`;\n      let hasChildRules = false;\n\n      const expressions: string[] = rg.rules\n        .map(rule => {\n          if (isRuleGroup(rule)) {\n            const processedRuleGroup = processRuleGroup(rule);\n            if (processedRuleGroup) {\n              hasChildRules = true;\n              // Don't wrap in curly braces if the result already is.\n              return /^\\{.+\\}$/.test(processedRuleGroup)\n                ? processedRuleGroup\n                : `{${processedRuleGroup}}`;\n            }\n            return '';\n          }\n          const [validationResult, fieldValidator] = validateRule(rule);\n          if (\n            !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n            rule.field === placeholderFieldName ||\n            rule.operator === placeholderOperatorName\n          ) {\n            return '';\n          }\n          return (ruleProcessorInternal ?? valueProcessorInternal)(rule, { parseNumbers });\n        })\n        .filter(Boolean);\n\n      return expressions.length > 0\n        ? expressions.length === 1 && !hasChildRules\n          ? expressions[0]\n          : `${combinator}:[${expressions.join(',')}]`\n        : fallbackExpression;\n    };\n\n    const rgStandard = isRuleGroupType(ruleGroup) ? ruleGroup : convertFromIC(ruleGroup);\n    const processedQuery = processRuleGroup(rgStandard, true);\n    return /^\\{.+\\}$/.test(processedQuery) ? processedQuery : `{${processedQuery}}`;\n  }\n\n  /**\n   * CEL\n   */\n  if (format === 'cel') {\n    const processRuleGroup = (rg: RuleGroupTypeAny, outermost?: boolean) => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return outermost ? fallbackExpression : '';\n      }\n\n      const expression: string = rg.rules\n        .map(rule => {\n          if (typeof rule === 'string') {\n            return celCombinatorMap[rule as DefaultCombinatorName];\n          }\n          if (isRuleGroup(rule)) {\n            return processRuleGroup(rule);\n          }\n          const [validationResult, fieldValidator] = validateRule(rule);\n          if (\n            !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n            rule.field === placeholderFieldName ||\n            rule.operator === placeholderOperatorName\n          ) {\n            return '';\n          }\n          return (ruleProcessorInternal ?? valueProcessorInternal)(rule, {\n            parseNumbers,\n            escapeQuotes: (rule.valueSource ?? 'value') === 'value',\n          });\n        })\n        .filter(Boolean)\n        .join(\n          isRuleGroupType(rg)\n            ? ` ${celCombinatorMap[rg.combinator as DefaultCombinatorName]} `\n            : ' '\n        );\n\n      const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? '!' : ''}(`, ')'] : ['', ''];\n\n      return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;\n    };\n\n    return processRuleGroup(ruleGroup, true);\n  }\n\n  /**\n   * SpEL\n   */\n  if (format === 'spel') {\n    const processRuleGroup = (rg: RuleGroupTypeAny, outermost?: boolean) => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return outermost ? fallbackExpression : '';\n      }\n\n      const expression: string = rg.rules\n        .map(rule => {\n          if (typeof rule === 'string') {\n            return rule;\n          }\n          if (isRuleGroup(rule)) {\n            return processRuleGroup(rule);\n          }\n          const [validationResult, fieldValidator] = validateRule(rule);\n          if (\n            !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n            rule.field === placeholderFieldName ||\n            rule.operator === placeholderOperatorName\n          ) {\n            return '';\n          }\n          return (ruleProcessorInternal ?? valueProcessorInternal)(rule, {\n            parseNumbers,\n            escapeQuotes: (rule.valueSource ?? 'value') === 'value',\n          });\n        })\n        .filter(Boolean)\n        .join(isRuleGroupType(rg) ? ` ${rg.combinator} ` : ' ');\n\n      const [prefix, suffix] = rg.not || !outermost ? [`${rg.not ? '!' : ''}(`, ')'] : ['', ''];\n\n      return expression ? `${prefix}${expression}${suffix}` : fallbackExpression;\n    };\n\n    return processRuleGroup(ruleGroup, true);\n  }\n\n  /**\n   * JsonLogic\n   */\n  if (format === 'jsonlogic') {\n    const query = isRuleGroupType(ruleGroup) ? ruleGroup : convertFromIC(ruleGroup);\n\n    const processRuleGroup = (rg: RuleGroupType): RQBJsonLogic => {\n      if (!isRuleOrGroupValid(rg, validationMap[rg.id ?? /* istanbul ignore next */ ''])) {\n        return false;\n      }\n\n      const processedRules = rg.rules\n        .map(rule => {\n          if (isRuleGroup(rule)) {\n            return processRuleGroup(rule);\n          }\n          const [validationResult, fieldValidator] = validateRule(rule);\n          if (\n            !isRuleOrGroupValid(rule, validationResult, fieldValidator) ||\n            rule.field === placeholderFieldName ||\n            rule.operator === placeholderOperatorName\n          ) {\n            return false;\n          }\n          return (ruleProcessorInternal ?? valueProcessorInternal)(rule, { parseNumbers });\n        })\n        .filter(Boolean);\n\n      if (processedRules.length === 0) {\n        return false;\n      }\n\n      const jsonRuleGroup: RQBJsonLogic =\n        processedRules.length === 1\n          ? processedRules[0]\n          : ({\n              [rg.combinator]: processedRules,\n            } as {\n              [k in keyof DefaultCombinatorName]: [RQBJsonLogic, RQBJsonLogic, ...RQBJsonLogic[]];\n            });\n\n      return rg.not ? { '!': jsonRuleGroup } : jsonRuleGroup;\n    };\n\n    return processRuleGroup(query);\n  }\n\n  return '';\n}\n\nexport { formatQuery };\n","import type { ValueProcessorLegacy } from '../../types/index.noReact';\nimport { defaultRuleProcessorCEL } from './defaultRuleProcessorCEL';\nimport { defaultRuleProcessorMongoDB } from './defaultRuleProcessorMongoDB';\nimport { defaultRuleProcessorSpEL } from './defaultRuleProcessorSpEL';\nimport { defaultValueProcessorByRule } from './defaultValueProcessorByRule';\n\nconst internalValueProcessors = {\n  default: defaultValueProcessorByRule,\n  mongodb: defaultRuleProcessorMongoDB,\n  cel: defaultRuleProcessorCEL,\n  spel: defaultRuleProcessorSpEL,\n} as const;\n\nconst generateValueProcessor =\n  (format: 'default' | 'mongodb' | 'cel' | 'spel'): ValueProcessorLegacy =>\n  (field, operator, value, valueSource) =>\n    internalValueProcessors[format](\n      { field, operator, value, valueSource },\n      { parseNumbers: false }\n    );\n// TODO: deprecate this\nexport const defaultValueProcessor = generateValueProcessor('default');\n/**\n * @deprecated Prefer `defaultRuleProcessorMongoDB`.\n */\nexport const defaultMongoDBValueProcessor = generateValueProcessor('mongodb');\n/**\n * @deprecated Prefer `defaultRuleProcessorCEL`.\n */\nexport const defaultCELValueProcessor = generateValueProcessor('cel');\n/**\n * @deprecated Prefer `defaultRuleProcessorSpEL`.\n */\nexport const defaultSpELValueProcessor = generateValueProcessor('spel');\n\nexport { defaultRuleProcessorJsonLogic } from './defaultRuleProcessorJsonLogic';\nexport { defaultRuleProcessorSQL } from './defaultRuleProcessorSQL';\nexport * from './formatQuery';\nexport { jsonLogicAdditionalOperators } from './utils';\nexport {\n  defaultRuleProcessorCEL,\n  defaultRuleProcessorMongoDB,\n  defaultRuleProcessorSpEL,\n  defaultValueProcessorByRule,\n};\n/**\n * @deprecated Renamed to \"defaultRuleProcessorCEL\".\n */\nexport const defaultValueProcessorCELByRule = defaultRuleProcessorCEL;\n/**\n * @deprecated Renamed to \"defaultRuleProcessorMongoDB\".\n */\nexport const defaultValueProcessorMongoDBByRule = defaultRuleProcessorMongoDB;\n/**\n * @deprecated Renamed to \"defaultRuleProcessorSpEL\".\n */\nexport const defaultValueProcessorSpELByRule = defaultRuleProcessorSpEL;\n","const cryptoModule = globalThis.crypto;\n\n/**\n * Generates a valid v4 UUID, i.e. matching this regex:\n * ```\n * /^[0-9A-F]{8}-[0-9A-F]{4}-[4][0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i\n * ```\n * @returns Valid v4 UUID\n */\n// Default implementation adapted from https://stackoverflow.com/a/68141099/217579\nexport let generateID = () =>\n  '00-0-4-2-000'.replace(/[^-]/g, (s: any) =>\n    (((Math.random() + ~~s) * 0x10000) >> s).toString(16).padStart(4, '0')\n  );\n\n// Improve on the default implementation by using the crypto package if it's available\nif (cryptoModule) {\n  // istanbul ignore else\n  if (typeof cryptoModule.randomUUID === 'function') {\n    generateID = () => cryptoModule.randomUUID();\n  } else if (typeof cryptoModule.getRandomValues === 'function') {\n    // `randomUUID` is much simpler and [faster](https://jsbench.me/krlcjfxscp/1),\n    // but it's only guaranteed to be available in secure contexts (https, etc.).\n    // `generateID` doesn't need to be cryptographically secure, it only needs a\n    // low chance of collisions. We can fall back to the always-available\n    // `getRandomValues` to build a v4 UUID when `randomUUID` is not available.\n    /** `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx` */\n    const template = [\n      ''.padEnd(8, 'x'),\n      ''.padEnd(4, 'x'),\n      // third section starts with the UUID version\n      '4'.padEnd(4, 'x'),\n      // First character of fourth section is limited to four specific characters\n      'y'.padEnd(4, 'x'),\n      ''.padEnd(12, 'x'),\n    ].join('-');\n    const position19vals = ['8', '9', 'a', 'b'];\n    const re = /[xy]/g;\n    const container = new Uint32Array(32);\n\n    generateID = () => {\n      cryptoModule.getRandomValues(container);\n      let i = -1;\n      return template.replaceAll(re, char => {\n        i++;\n        return char === 'y' ? position19vals[container[i] % 4] : (container[i] % 16).toString(16);\n      });\n    };\n  }\n}\n","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { QueryBuilderContext } from '../components';\nimport type { QueryBuilderContextProps, QueryBuilderContextProvider } from '../types';\nimport { mergeClassnames } from './mergeClassnames';\n\nexport type GetCompatContextProviderProps = Pick<\n  QueryBuilderContextProps,\n  'controlClassnames' | 'controlElements'\n> & { key: string };\n\nexport const getCompatContextProvider =\n  ({\n    key,\n    controlClassnames: compatClassnames,\n    controlElements: compatElements,\n  }: GetCompatContextProviderProps): QueryBuilderContextProvider =>\n  props => {\n    const rqbContext = useContext(QueryBuilderContext);\n    const classnamesObject = useMemo(\n      () =>\n        compatClassnames\n          ? {\n              controlClassnames: mergeClassnames(\n                rqbContext.controlClassnames,\n                props.controlClassnames,\n                compatClassnames\n              ),\n            }\n          : {},\n      [props.controlClassnames, rqbContext.controlClassnames]\n    );\n    const newContextProps = useMemo(\n      (): QueryBuilderContextProps => ({\n        ...rqbContext,\n        ...classnamesObject,\n        controlElements: {\n          ...rqbContext.controlElements,\n          ...compatElements,\n          ...props.controlElements,\n        },\n      }),\n      [classnamesObject, props.controlElements, rqbContext]\n    );\n\n    return (\n      <QueryBuilderContext.Provider value={newContextProps} key={key}>\n        {props.children}\n      </QueryBuilderContext.Provider>\n    );\n  };\n","import clsx from 'clsx';\nimport type { Classnames } from '../types';\n\nexport const mergeClassnames = (...args: (Partial<Classnames> | undefined)[]): Classnames => {\n  const joinClassnamesByName = (name: keyof Classnames) =>\n    clsx((args.filter(Boolean) as Partial<Classnames>[]).map(c => clsx(c[name])));\n  return {\n    queryBuilder: joinClassnamesByName('queryBuilder'),\n    ruleGroup: joinClassnamesByName('ruleGroup'),\n    header: joinClassnamesByName('header'),\n    body: joinClassnamesByName('body'),\n    combinators: joinClassnamesByName('combinators'),\n    addRule: joinClassnamesByName('addRule'),\n    addGroup: joinClassnamesByName('addGroup'),\n    cloneRule: joinClassnamesByName('cloneRule'),\n    cloneGroup: joinClassnamesByName('cloneGroup'),\n    removeGroup: joinClassnamesByName('removeGroup'),\n    rule: joinClassnamesByName('rule'),\n    fields: joinClassnamesByName('fields'),\n    operators: joinClassnamesByName('operators'),\n    value: joinClassnamesByName('value'),\n    removeRule: joinClassnamesByName('removeRule'),\n    notToggle: joinClassnamesByName('notToggle'),\n    dragHandle: joinClassnamesByName('dragHandle'),\n    lockRule: joinClassnamesByName('lockRule'),\n    lockGroup: joinClassnamesByName('lockGroup'),\n    valueSource: joinClassnamesByName('valueSource'),\n  };\n};\n","import { standardClassnames } from '../defaults';\nimport type { ValidationResult } from '../types/index.noReact';\n\nexport const getValidationClassNames = (validationResult: boolean | ValidationResult) => {\n  const valid =\n    typeof validationResult === 'boolean'\n      ? validationResult\n      : typeof validationResult === 'object' && validationResult !== null\n      ? validationResult.valid\n      : null;\n  return typeof valid === 'boolean'\n    ? valid\n      ? standardClassnames.valid\n      : standardClassnames.invalid\n    : '';\n};\n","import type { Field, ValueSources } from '../types/index.noReact';\n\nexport const getValueSourcesUtil = (\n  fieldData: Field,\n  operator: string,\n  getValueSources?: (field: string, operator: string) => ValueSources\n): ValueSources => {\n  // TypeScript doesn't allow it directly, but in practice\n  // `fieldData` can end up being undefined or null. The nullish\n  // coalescing assignment below avoids errors like\n  // \"TypeError: Cannot read properties of undefined (reading 'name')\"\n  const fd = fieldData ?? /* istanbul ignore else */ {};\n\n  if (fd.valueSources) {\n    if (typeof fd.valueSources === 'function') {\n      return fd.valueSources(operator);\n    }\n    return fd.valueSources;\n  }\n  if (getValueSources) {\n    const vals = getValueSources(fd.name, operator);\n    /* istanbul ignore else */\n    if (vals) return vals;\n  }\n\n  return ['value'];\n};\n","import { useEffect } from 'react';\nimport {\n  errorBothQueryDefaultQuery,\n  errorControlledToUncontrolled,\n  errorUncontrolledToControlled,\n} from '../../messages';\nimport type { RuleGroupTypeAny } from '../../types';\nimport { usePrevious } from './usePrevious';\n\nexport interface UseControlledOrUncontrolledParams {\n  defaultQuery?: RuleGroupTypeAny;\n  queryProp?: RuleGroupTypeAny;\n  isFirstRender: boolean;\n}\n\nlet didWarnBothQueryDefaultQuery = false;\nlet didWarnUncontrolledToControlled = false;\nlet didWarnControlledToUncontrolled = false;\n\n/**\n * Log errors when the component changes from controlled to uncontrolled,\n * vice versa, or both query and defaultQuery are provided.\n */\nexport const useControlledOrUncontrolled = ({\n  defaultQuery,\n  queryProp,\n  isFirstRender,\n}: UseControlledOrUncontrolledParams) => {\n  const prevQueryPresent = usePrevious(!!queryProp);\n\n  useEffect(() => {\n    // istanbul ignore else\n    if (process.env.NODE_ENV !== 'production') {\n      if (!!queryProp && !!defaultQuery && !didWarnBothQueryDefaultQuery) {\n        console.error(errorBothQueryDefaultQuery);\n        didWarnBothQueryDefaultQuery = true;\n      } else if (\n        prevQueryPresent &&\n        !queryProp &&\n        !!defaultQuery &&\n        !didWarnControlledToUncontrolled\n      ) {\n        console.error(errorControlledToUncontrolled);\n        didWarnControlledToUncontrolled = true;\n      } else if (\n        !(prevQueryPresent || isFirstRender) &&\n        !!queryProp &&\n        !defaultQuery &&\n        !didWarnUncontrolledToControlled\n      ) {\n        console.error(errorUncontrolledToControlled);\n        didWarnUncontrolledToControlled = true;\n      }\n    }\n  }, [defaultQuery, prevQueryPresent, queryProp, isFirstRender]);\n};\n","export const errorDeprecatedRuleGroupProps =\n  'A custom RuleGroup component has rendered a standard RuleGroup ' +\n  'component with deprecated props. The combinator, not, and rules ' +\n  'props should not be used. Instead, the full group object should ' +\n  'be passed as the ruleGroup prop.';\n\nexport const errorDeprecatedRuleProps =\n  'A custom RuleGroup component has rendered a standard Rule ' +\n  'component with deprecated props. The field, operator, value, and valueSource ' +\n  'props should not be used. Instead, the full rule object should ' +\n  'be passed as the rule prop.';\n\nexport const errorBothQueryDefaultQuery =\n  'QueryBuilder was rendered with both query and defaultQuery props. ' +\n  'QueryBuilder must be either controlled or uncontrolled (specify ' +\n  'either the query prop, or the defaultQuery prop, but not both). ' +\n  'Decide between using a controlled or uncontrolled query builder ' +\n  'and remove one of these props. More info: https://reactjs.org/link/controlled-components';\n\nexport const errorUncontrolledToControlled =\n  'QueryBuilder is changing from an uncontrolled component to be controlled. ' +\n  'This is likely caused by the query changing from undefined to ' +\n  'a defined value, which should not happen. ' +\n  'Decide between using a controlled or uncontrolled query builder ' +\n  'for the lifetime of the component. More info: https://reactjs.org/link/controlled-components';\n\nexport const errorControlledToUncontrolled =\n  'QueryBuilder is changing from a controlled component to be uncontrolled. ' +\n  'This is likely caused by the query changing from defined to ' +\n  'undefined, which should not happen. ' +\n  'Decide between using a controlled or uncontrolled query builder ' +\n  'for the lifetime of the component. More info: https://reactjs.org/link/controlled-components';\n\nexport const errorEnabledDndWithoutReactDnD =\n  'QueryBuilder was rendered with the enableDragAndDrop prop set to true, ' +\n  'but either react-dnd or react-dnd-html5-backend (or both) was not installed. ' +\n  'To enable drag-and-drop functionality, install both packages and wrap ' +\n  'QueryBuilder in QueryBuilderDnD from @react-querybuilder/dnd.';\n","// From https://usehooks.com/usePrevious/\nimport { useEffect, useRef } from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n  const ref = useRef<T | null>(null);\n\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n\n  return ref.current;\n};\n","import { useEffect } from 'react';\nimport { errorDeprecatedRuleGroupProps, errorDeprecatedRuleProps } from '../../messages';\n\nlet didWarnUsingDeprecatedRuleProps = false;\nlet didWarnUsingDeprecatedRuleGroupProps = false;\n\nexport const useDeprecatedProps = (type: 'rule' | 'ruleGroup', newPropPresent: boolean) => {\n  useEffect(() => {\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      type === 'rule' &&\n      !newPropPresent &&\n      !didWarnUsingDeprecatedRuleProps\n    ) {\n      console.error(errorDeprecatedRuleProps);\n      didWarnUsingDeprecatedRuleProps = true;\n    }\n\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      type === 'ruleGroup' &&\n      !newPropPresent &&\n      !didWarnUsingDeprecatedRuleGroupProps\n    ) {\n      console.error(errorDeprecatedRuleGroupProps);\n      didWarnUsingDeprecatedRuleGroupProps = true;\n    }\n  }, [newPropPresent, type]);\n};\n","import { useContext, useMemo } from 'react';\nimport { QueryBuilderContext, defaultControlElements } from '../../components';\nimport { defaultControlClassnames, defaultTranslations } from '../../defaults';\nimport type {\n  Controls,\n  QueryBuilderContextProps,\n  TranslationsFull,\n  WithRequired,\n} from '../../types';\nimport { mergeClassnames } from '../mergeClassnames';\nimport { objectKeys } from '../objectUtils';\nimport { usePreferProp } from './usePreferProp';\n\nexport type UseMergedContextProps = WithRequired<QueryBuilderContextProps, 'translations'>;\n\n/**\n * Inherit context, but props take precedence\n */\nexport const useMergedContext = (props: UseMergedContextProps) => {\n  const rqbContext = useContext(QueryBuilderContext);\n\n  const enableMountQueryChange = usePreferProp(\n    true,\n    props.enableMountQueryChange,\n    rqbContext.enableMountQueryChange\n  );\n\n  // Drag-and-drop should be disabled if context sets it to false because\n  // QueryBuilderDnD might not have loaded react-dnd yet. Therefore we prefer\n  // the prop here only if context is true or undefined.\n  const enableDragAndDrop =\n    usePreferProp(false, props.enableDragAndDrop, rqbContext.enableDragAndDrop) &&\n    rqbContext.enableDragAndDrop !== false;\n\n  const debugMode = usePreferProp(false, props.debugMode, rqbContext.debugMode);\n\n  const controlClassnames = useMemo(\n    () =>\n      mergeClassnames(\n        defaultControlClassnames,\n        rqbContext.controlClassnames,\n        props.controlClassnames\n      ),\n    [rqbContext.controlClassnames, props.controlClassnames]\n  );\n\n  const controlElements = useMemo(\n    (): Controls => ({\n      ...defaultControlElements,\n      ...rqbContext.controlElements,\n      ...props.controlElements,\n    }),\n    [props.controlElements, rqbContext.controlElements]\n  );\n\n  const translations = useMemo((): TranslationsFull => {\n    const translationsTemp: Partial<TranslationsFull> = {};\n    objectKeys(props.translations).forEach(t => {\n      const contextTranslations = rqbContext.translations;\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore Different keys have different requirements\n      translationsTemp[t] = {\n        ...defaultTranslations[t],\n        ...contextTranslations,\n        ...props.translations[t],\n      };\n    });\n    return { ...defaultTranslations, ...translationsTemp };\n  }, [rqbContext.translations, props.translations]);\n\n  const {\n    controlClassnames: _controlClassnames,\n    controlElements: _controlElements,\n    debugMode: _debugMode,\n    enableDragAndDrop: _enableDragAndDrop,\n    enableMountQueryChange: _enableMountQueryChange,\n    translations: _translations,\n    ...otherContext\n  } = rqbContext;\n\n  return {\n    controlClassnames,\n    controlElements,\n    debugMode,\n    enableDragAndDrop,\n    enableMountQueryChange,\n    translations,\n    ...otherContext,\n  };\n};\n","// All code in this file is adapted from:\n// npm: https://www.npmjs.com/package/ts-extras\n// src: https://github.com/sindresorhus/ts-extras\n\n/**\n * Original looked like this (not sure why template string is used):\n * ```\n * type ObjectKeys<T extends object> = `${Exclude<keyof T, symbol>}`;\n * ```\n */\ntype ObjectKeys<T extends object> = Exclude<keyof T, symbol>;\n\n/**\n * A strongly-typed version of `Object.keys()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-keys.ts)\n */\nexport const objectKeys = Object.keys as <Type extends object>(\n  value: Type\n) => Array<ObjectKeys<Type>>;\n\n/**\n * A strongly-typed version of `Object.entries()`.\n *\n * [Original source](https://github.com/sindresorhus/ts-extras/blob/44f57392c5f027268330771996c4fdf9260b22d6/source/object-entries.ts)\n */\nexport const objectEntries = Object.entries as <Type extends Record<PropertyKey, unknown>>(\n  value: Type\n) => Array<[ObjectKeys<Type>, Type[ObjectKeys<Type>]]>;\n","import { useMemo } from 'react';\n\nconst preferPropDefaultTrue = (prop?: boolean, context?: boolean) =>\n  prop === false ? false : prop ? true : context === false ? false : true;\n\nconst preferPropDefaultFalse = (prop?: boolean, context?: boolean) =>\n  prop ? true : prop === false ? false : context ? true : false;\n\nconst preferProp = (def: boolean, prop?: boolean, context?: boolean) =>\n  def ? preferPropDefaultTrue(prop, context) : preferPropDefaultFalse(prop, context);\n\nexport const usePreferProp = (def: boolean, prop?: boolean, context?: boolean) =>\n  useMemo(() => preferProp(def, prop, context), [context, def, prop]);\n","import { useEffect } from 'react';\nimport { errorEnabledDndWithoutReactDnD } from '../../messages';\n\nlet didWarnEnabledDndWithoutReactDnD = false;\n\nexport const useReactDndWarning = (enableDragAndDrop: boolean, dndRefs: boolean) => {\n  useEffect(() => {\n    if (\n      process.env.NODE_ENV !== 'production' &&\n      !didWarnEnabledDndWithoutReactDnD &&\n      enableDragAndDrop &&\n      !dndRefs\n    ) {\n      console.error(errorEnabledDndWithoutReactDnD);\n      didWarnEnabledDndWithoutReactDnD = true;\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n};\n","import type { DefaultOperatorName, Field, OptionList, ValueSources } from '../types/index.noReact';\nimport { filterFieldsByComparator } from './filterFieldsByComparator';\nimport { getValueSourcesUtil } from './getValueSourcesUtil';\nimport { isOptionGroupArray } from './optGroupUtils';\nimport { uniqByName } from './uniq';\n\nexport const getFieldsArray = (fields?: OptionList<Field> | Record<string, Field>) => {\n  let fieldsFlat: Field[] = [];\n  const fieldsArray = !fields\n    ? []\n    : Array.isArray(fields)\n    ? fields\n    : Object.keys(fields)\n        .map(fld => ({ ...fields[fld], name: fld }))\n        .sort((a, b) => a.label.localeCompare(b.label));\n  if (isOptionGroupArray(fieldsArray)) {\n    fieldsFlat = uniqByName(fieldsFlat.concat(...fieldsArray.map(opt => opt.options)));\n  } else {\n    fieldsFlat = uniqByName(fieldsArray);\n  }\n  return fieldsFlat;\n};\n\nexport function fieldIsValidUtil({\n  fieldsFlat,\n  fieldName,\n  operator,\n  subordinateFieldName,\n  getValueSources,\n}: {\n  fieldsFlat: Field[];\n  getValueSources?: (field: string, operator: string) => ValueSources;\n  fieldName: string;\n  operator: DefaultOperatorName;\n  subordinateFieldName?: string;\n}) {\n  // If fields option was an empty array or undefined, then all identifiers\n  // are considered valid.\n  if (fieldsFlat.length === 0) return true;\n\n  let valid = false;\n\n  const primaryField = fieldsFlat.find(ff => ff.name === fieldName);\n  if (primaryField) {\n    if (\n      !subordinateFieldName &&\n      operator !== 'notNull' &&\n      operator !== 'null' &&\n      !getValueSourcesUtil(primaryField, operator, getValueSources).some(vs => vs === 'value')\n    ) {\n      valid = false;\n    } else {\n      valid = true;\n    }\n\n    if (valid && !!subordinateFieldName) {\n      if (\n        getValueSourcesUtil(primaryField, operator, getValueSources).some(vs => vs === 'field') &&\n        fieldName !== subordinateFieldName\n      ) {\n        const validSubordinateFields = filterFieldsByComparator(\n          primaryField,\n          fieldsFlat,\n          operator\n        ) as Field[];\n        if (!validSubordinateFields.find(vsf => vsf.name === subordinateFieldName)) {\n          valid = false;\n        }\n      } else {\n        valid = false;\n      }\n    }\n  }\n\n  return valid;\n}\n","/* parser generated by jison 0.4.18 */\n/*\n  Returns a Parser object of the following structure:\n\n  Parser: {\n    yy: {}\n  }\n\n  Parser.prototype: {\n    yy: {},\n    trace: function(),\n    symbols_: {associative list: name ==> number},\n    terminals_: {associative list: number ==> name},\n    productions_: [...],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n    table: [...],\n    defaultActions: {...},\n    parseError: function(str, hash),\n    parse: function(input),\n\n    lexer: {\n        EOF: 1,\n        parseError: function(str, hash),\n        setInput: function(input),\n        input: function(),\n        unput: function(str),\n        more: function(),\n        less: function(n),\n        pastInput: function(),\n        upcomingInput: function(),\n        showPosition: function(),\n        test_match: function(regex_match_array, rule_index),\n        next: function(),\n        lex: function(),\n        begin: function(condition),\n        popState: function(),\n        _currentRules: function(),\n        topState: function(),\n        pushState: function(condition),\n\n        options: {\n            ranges: boolean           (optional: true ==> token location info will include a .range[] member)\n            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n        },\n\n        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n        rules: [...],\n        conditions: {associative list: name ==> set},\n    }\n  }\n\n\n  token location info (@$, _$, etc.): {\n    first_line: n,\n    last_line: n,\n    first_column: n,\n    last_column: n,\n    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)\n  }\n\n\n  the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n    text:        (matched text)\n    token:       (the produced terminal token, if any)\n    line:        (yylineno)\n  }\n  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n    loc:         (yylloc)\n    expected:    (string describing the set of expected tokens)\n    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n  }\n*/\nvar celParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,27],$V1=[1,31],$V2=[1,32],$V3=[1,28],$V4=[1,29],$V5=[1,30],$V6=[1,33],$V7=[1,34],$V8=[1,18],$V9=[1,26],$Va=[1,12],$Vb=[1,13],$Vc=[1,19],$Vd=[1,20],$Ve=[1,40],$Vf=[1,39],$Vg=[1,41],$Vh=[1,42],$Vi=[1,43],$Vj=[1,36],$Vk=[1,37],$Vl=[1,38],$Vm=[5,37,43,45,49,50,53,54,55,56,60,61,62,63],$Vn=[1,44],$Vo=[1,45],$Vp=[1,46],$Vq=[5,23,24,25,26,27,28,31,37,40,43,44,45,46,49,50,53,54,55,56,60,61,62,63],$Vr=[7,9,10,12,13,14,16,18,21,35,40,41,44,46],$Vs=[2,36],$Vt=[1,85],$Vu=[43,45,50],$Vv=[5,37,43,45,49,50,53,61,62,63],$Vw=[5,37,43,45,49,50,53,54,55,56,61,62,63],$Vx=[2,37],$Vy=[49,50];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"main\":3,\"expr\":4,\"EOF\":5,\"string_literal\":6,\"STRING_LIT\":7,\"bytes_literal\":8,\"b\":9,\"B\":10,\"number_literal\":11,\"INT_LIT\":12,\"UINT_LIT\":13,\"FLOAT_LIT\":14,\"boolean_literal\":15,\"BOOL_LIT\":16,\"null_literal\":17,\"NULL_LIT\":18,\"literal\":19,\"ident\":20,\"IDENT\":21,\"relop\":22,\"==\":23,\">=\":24,\">\":25,\"<=\":26,\"<\":27,\"!=\":28,\"relation\":29,\"member\":30,\"in\":31,\"list\":32,\"map\":33,\"negation\":34,\"!\":35,\"negative\":36,\"-\":37,\"unary\":38,\"primary\":39,\"DOT\":40,\"(\":41,\"expr_list\":42,\")\":43,\"[\":44,\"]\":45,\"{\":46,\"field_inits\":47,\"trailing_comma\":48,\"}\":49,\",\":50,\"map_inits\":51,\"math_operation\":52,\"+\":53,\"*\":54,\"/\":55,\"%\":56,\"conditional_expr\":57,\"conditional_and\":58,\"conditional_or\":59,\"?\":60,\":\":61,\"&&\":62,\"||\":63,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",7:\"STRING_LIT\",9:\"b\",10:\"B\",12:\"INT_LIT\",13:\"UINT_LIT\",14:\"FLOAT_LIT\",16:\"BOOL_LIT\",18:\"NULL_LIT\",21:\"IDENT\",23:\"==\",24:\">=\",25:\">\",26:\"<=\",27:\"<\",28:\"!=\",31:\"in\",35:\"!\",37:\"-\",40:\"DOT\",41:\"(\",43:\")\",44:\"[\",45:\"]\",46:\"{\",49:\"}\",50:\",\",53:\"+\",54:\"*\",55:\"/\",56:\"%\",60:\"?\",61:\":\",62:\"&&\",63:\"||\"},\nproductions_: [0,[3,2],[6,1],[8,2],[8,2],[11,1],[11,1],[11,1],[15,1],[17,1],[19,1],[19,1],[19,1],[19,1],[19,1],[20,1],[22,1],[22,1],[22,1],[22,1],[22,1],[22,1],[29,3],[29,3],[29,3],[34,1],[34,2],[36,1],[36,2],[38,2],[30,1],[30,1],[30,3],[30,6],[30,4],[30,5],[48,0],[48,1],[39,1],[39,2],[39,5],[39,6],[39,3],[39,1],[39,1],[39,1],[32,4],[33,4],[52,3],[52,3],[52,3],[52,3],[52,3],[4,1],[4,1],[4,1],[4,1],[4,1],[4,1],[57,5],[58,3],[59,3],[42,1],[42,3],[47,3],[47,5],[51,3],[51,5]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return { nodeType: 'Main', value: $$[$0-1] }; \nbreak;\ncase 2:\nthis.$ = { type: 'StringLiteral', value: $$[$0] };\nbreak;\ncase 3: case 4:\nthis.$ = { type: 'BytesLiteral', value: $$[$0] };\nbreak;\ncase 5:\nthis.$ = { type: 'IntegerLiteral', value: parseInt($$[$0], /x/.test($$[$0]) ? 16 : 10) };\nbreak;\ncase 6:\nthis.$ = { type: 'UnsignedIntegerLiteral', value: parseInt($$[$0].replace(/u$/i, ''), /^0x/.test($$[$0]) ? 16 : 10) };\nbreak;\ncase 7:\nthis.$ = { type: 'FloatLiteral', value: parseFloat($$[$0]) };\nbreak;\ncase 8:\nthis.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true' };\nbreak;\ncase 9:\nthis.$ = { type: 'NullLiteral', value: null };\nbreak;\ncase 10: case 11: case 12: case 13: case 14: case 16: case 17: case 18: case 19: case 20: case 21: case 38: case 43: case 44: case 45: case 53: case 54: case 55: case 56: case 57: case 58:\nthis.$ = $$[$0];\nbreak;\ncase 15:\nthis.$ = { type: 'Identifier', value: $$[$0] };\nbreak;\ncase 22: case 23: case 24:\nthis.$ = { type: 'Relation', left: $$[$0-2], operator: $$[$0-1], right: $$[$0] };\nbreak;\ncase 25: case 27:\nthis.$ = 1;\nbreak;\ncase 26: case 28:\nthis.$ = this.$ += 1;;\nbreak;\ncase 29:\nthis.$ = { type: 'Negation', negations: $$[$0-1], value: $$[$0] };\nbreak;\ncase 30: case 31:\nthis.$ =  $$[$0];\nbreak;\ncase 32:\nthis.$ = { type: 'Member', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 33:\nthis.$ = { type: 'Member', left: $$[$0-5], right: $$[$0-3], list: $$[$0-1] };\nbreak;\ncase 34:\nthis.$ = { type: 'DynamicPropertyAccessor', left: $$[$0-3], right: $$[$0-1] };\nbreak;\ncase 35:\nthis.$ = { type: 'FieldsObject', left: $$[$0-4], list: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 36:\nthis.$ = false;\nbreak;\ncase 37:\nthis.$ = true;\nbreak;\ncase 39:\nthis.$ = { type: 'Property', value: $$[$0] };\nbreak;\ncase 40:\nthis.$ = { type: 'FunctionCall', name: $$[$0-4], args: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 41:\nthis.$ = { type: 'Property', value: $$[$0-4], args: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 42:\nthis.$ = { type: 'ExpressionGroup', value: $$[$0-1] };\nbreak;\ncase 46:\nthis.$ = { type: 'List', value: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 47:\nthis.$ = { type: 'Map', value: $$[$0-2], trailingComma: $$[$0-1] };\nbreak;\ncase 48:\nthis.$ = { type: 'Addition', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 49:\nthis.$ = { type: 'Subtraction', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 50:\nthis.$ = { type: 'Multiplication', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 51:\nthis.$ = { type: 'Division', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 52:\nthis.$ = { type: 'Modulo', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 59:\nthis.$ = { type: 'ConditionalExpr', condition: $$[$0-4], valueIfTrue: $$[$0-2], valueIfFalse: $$[$0] };\nbreak;\ncase 60:\nthis.$ = { type: 'ConditionalAnd', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 61:\nthis.$ = { type: 'ConditionalOr', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 62:\nthis.$ = { type: 'ExpressionList', value: [ $$[$0] ] };\nbreak;\ncase 63:\nthis.$ = $$[$0-2]; this.$.value.push($$[$0]);;\nbreak;\ncase 64:\nthis.$ = { type: 'FieldInits', value: [ { type: 'FieldInit', left: $$[$0-2], right: $$[$0] } ] };\nbreak;\ncase 65:\nthis.$ = $$[$0-4]; this.$.value.push({ type: 'FieldInit', left: $$[$0-2], right: $$[$0] });;\nbreak;\ncase 66:\nthis.$ = { type: 'MapInits', value: [ { type: 'MapInit', left: $$[$0-2], right: $$[$0] } ] };\nbreak;\ncase 67:\nthis.$ = $$[$0-4]; this.$.value.push({ type: 'MapInit', left: $$[$0-2], right: $$[$0] });;\nbreak;\n}\n},\ntable: [{3:1,4:2,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{1:[3]},{5:[1,35],37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},o($Vm,[2,53],{22:47,23:[1,49],24:[1,50],25:[1,51],26:[1,52],27:[1,53],28:[1,54],31:[1,48],40:$Vn,44:$Vo,46:$Vp}),o($Vm,[2,54]),o($Vm,[2,55]),o($Vm,[2,56]),o($Vm,[2,57]),o($Vm,[2,58]),o($Vq,[2,30]),o($Vq,[2,31]),o($Vq,[2,38],{41:[1,55]}),{20:56,21:$V8},{4:57,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,43]),o($Vq,[2,44]),o($Vq,[2,45]),{6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,32:14,33:15,35:[1,59],39:58,40:$Va,41:$Vb,44:$Vc,46:$Vd},o([5,23,24,25,26,27,28,31,37,40,41,43,44,45,46,49,50,53,54,55,56,60,61,62,63],[2,15]),{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:60,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:63,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,51:62,52:8,57:4,58:5,59:6},o($Vq,[2,10]),o($Vq,[2,11]),o($Vq,[2,12]),o($Vq,[2,13]),o($Vq,[2,14]),o($Vr,[2,25]),o($Vq,[2,2]),o($Vq,[2,5]),o($Vq,[2,6]),o($Vq,[2,7]),{6:64,7:$V0},{6:65,7:$V0},o($Vq,[2,8]),o($Vq,[2,9]),{1:[2,1]},{4:66,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:67,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:68,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:69,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:70,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:71,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:72,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:73,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{20:74,21:$V8},{4:75,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{20:77,21:$V8,47:76},{6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,30:78,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd},{32:79,33:80,44:$Vc,46:$Vd},o($Vr,[2,16]),o($Vr,[2,17]),o($Vr,[2,18]),o($Vr,[2,19]),o($Vr,[2,20]),o($Vr,[2,21]),{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:81,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,39],{41:[1,82]}),{37:$Ve,43:[1,83],53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},o($Vq,[2,29]),o($Vr,[2,26]),{45:$Vs,48:84,50:$Vt},o($Vu,[2,62],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),{48:86,49:$Vs,50:[1,87]},{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,88],62:$Vk,63:$Vl},o($Vq,[2,3]),o($Vq,[2,4]),{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,89],62:$Vk,63:$Vl},o([5,43,45,49,50,61,62,63],[2,60],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o([5,43,45,49,50,61,63],[2,61],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk}),o($Vv,[2,48],{54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o($Vv,[2,49],{54:$Vg,55:$Vh,56:$Vi,60:$Vj}),o($Vw,[2,50],{60:$Vj}),o($Vw,[2,51],{60:$Vj}),o($Vw,[2,52],{60:$Vj}),o($Vq,[2,32],{41:[1,90]}),{37:$Ve,45:[1,91],53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl},{48:92,49:$Vs,50:[1,93]},{61:[1,94]},o($Vm,[2,22],{40:$Vn,44:$Vo,46:$Vp}),o($Vm,[2,23]),o($Vm,[2,24]),{43:$Vs,48:95,50:$Vt},{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:96,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,42]),{45:[1,97]},o([43,45],$Vx,{30:3,57:4,58:5,59:6,29:7,52:8,39:9,38:10,20:11,32:14,33:15,19:16,34:17,6:21,11:22,8:23,15:24,17:25,4:98,7:$V0,9:$V1,10:$V2,12:$V3,13:$V4,14:$V5,16:$V6,18:$V7,21:$V8,35:$V9,40:$Va,41:$Vb,44:$Vc,46:$Vd}),{49:[1,99]},{4:100,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,49:$Vx,52:8,57:4,58:5,59:6},{4:101,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:102,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:61,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,42:103,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,34]),{49:[1,104]},{20:105,21:$V8,49:$Vx},{4:106,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{43:[1,107]},{43:$Vs,48:108,50:$Vt},o($Vq,[2,46]),o($Vu,[2,63],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vq,[2,47]),{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,61:[1,109],62:$Vk,63:$Vl},o($Vy,[2,66],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vm,[2,59]),{43:[1,110],50:[1,111]},o($Vq,[2,35]),{61:[1,112]},o($Vy,[2,64],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vq,[2,40]),{43:[1,113]},{4:114,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,33]),{4:98,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},{4:115,6:21,7:$V0,8:23,9:$V1,10:$V2,11:22,12:$V3,13:$V4,14:$V5,15:24,16:$V6,17:25,18:$V7,19:16,20:11,21:$V8,29:7,30:3,32:14,33:15,34:17,35:$V9,38:10,39:9,40:$Va,41:$Vb,44:$Vc,46:$Vd,52:8,57:4,58:5,59:6},o($Vq,[2,41]),o($Vy,[2,67],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl}),o($Vy,[2,65],{37:$Ve,53:$Vf,54:$Vg,55:$Vh,56:$Vi,60:$Vj,62:$Vk,63:$Vl})],\ndefaultActions: {35:[2,1]},\nparseError: function parseError (str, hash) {\n    if (hash.recoverable) {\n        this.trace(str);\n    } else {\n        var error = new Error(str);\n        error.hash = hash;\n        throw error;\n    }\n},\nparse: function parse(input) {\n    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    var args = lstack.slice.call(arguments, 1);\n    var lexer = Object.create(this.lexer);\n    var sharedState = { yy: {} };\n    for (var k in this.yy) {\n        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n            sharedState.yy[k] = this.yy[k];\n        }\n    }\n    lexer.setInput(input, sharedState.yy);\n    sharedState.yy.lexer = lexer;\n    sharedState.yy.parser = this;\n    if (typeof lexer.yylloc == 'undefined') {\n        lexer.yylloc = {};\n    }\n    var yyloc = lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = lexer.options && lexer.options.ranges;\n    if (typeof sharedState.yy.parseError === 'function') {\n        this.parseError = sharedState.yy.parseError;\n    } else {\n        this.parseError = Object.getPrototypeOf(this).parseError;\n    }\n    function popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n    var lex = function () {\n        var token;\n        token = lexer.lex() || EOF;\n        if (typeof token !== 'number') {\n            token = self.symbols_[token] || token;\n        }\n        return token;\n    };\n    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n    while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n            action = this.defaultActions[state];\n        } else {\n            if (symbol === null || typeof symbol == 'undefined') {\n                symbol = lex();\n            }\n            action = table[state] && table[state][symbol];\n        }\n                    if (typeof action === 'undefined' || !action.length || !action[0]) {\n                var errStr = '';\n                expected = [];\n                for (p in table[state]) {\n                    if (this.terminals_[p] && p > TERROR) {\n                        expected.push('\\'' + this.terminals_[p] + '\\'');\n                    }\n                }\n                if (lexer.showPosition) {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n                } else {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n                }\n                this.parseError(errStr, {\n                    text: lexer.match,\n                    token: this.terminals_[symbol] || symbol,\n                    line: lexer.yylineno,\n                    loc: yyloc,\n                    expected: expected\n                });\n            }\n        if (action[0] instanceof Array && action.length > 1) {\n            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n        }\n        switch (action[0]) {\n        case 1:\n            stack.push(symbol);\n            vstack.push(lexer.yytext);\n            lstack.push(lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = lexer.yyleng;\n                yytext = lexer.yytext;\n                yylineno = lexer.yylineno;\n                yyloc = lexer.yylloc;\n                if (recovering > 0) {\n                    recovering--;\n                }\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\n            }\n            break;\n        case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {\n                first_line: lstack[lstack.length - (len || 1)].first_line,\n                last_line: lstack[lstack.length - 1].last_line,\n                first_column: lstack[lstack.length - (len || 1)].first_column,\n                last_column: lstack[lstack.length - 1].last_column\n            };\n            if (ranges) {\n                yyval._$.range = [\n                    lstack[lstack.length - (len || 1)].range[0],\n                    lstack[lstack.length - 1].range[1]\n                ];\n            }\n            r = this.performAction.apply(yyval, [\n                yytext,\n                yyleng,\n                yylineno,\n                sharedState.yy,\n                action[1],\n                vstack,\n                lstack\n            ].concat(args));\n            if (typeof r !== 'undefined') {\n                return r;\n            }\n            if (len) {\n                stack = stack.slice(0, -1 * len * 2);\n                vstack = vstack.slice(0, -1 * len);\n                lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n        case 3:\n            return true;\n        }\n    }\n    return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n        if (this.yy.parser) {\n            this.yy.parser.parseError(str, hash);\n        } else {\n            throw new Error(str);\n        }\n    },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n        this.yy = yy || this.yy || {};\n        this._input = input;\n        this._more = this._backtrack = this.done = false;\n        this.yylineno = this.yyleng = 0;\n        this.yytext = this.matched = this.match = '';\n        this.conditionStack = ['INITIAL'];\n        this.yylloc = {\n            first_line: 1,\n            first_column: 0,\n            last_line: 1,\n            last_column: 0\n        };\n        if (this.options.ranges) {\n            this.yylloc.range = [0,0];\n        }\n        this.offset = 0;\n        return this;\n    },\n\n// consumes and returns one char from the input\ninput:function () {\n        var ch = this._input[0];\n        this.yytext += ch;\n        this.yyleng++;\n        this.offset++;\n        this.match += ch;\n        this.matched += ch;\n        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno++;\n            this.yylloc.last_line++;\n        } else {\n            this.yylloc.last_column++;\n        }\n        if (this.options.ranges) {\n            this.yylloc.range[1]++;\n        }\n\n        this._input = this._input.slice(1);\n        return ch;\n    },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length - len);\n        //this.yyleng -= len;\n        this.offset -= len;\n        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n        this.match = this.match.substr(0, this.match.length - 1);\n        this.matched = this.matched.substr(0, this.matched.length - 1);\n\n        if (lines.length - 1) {\n            this.yylineno -= lines.length - 1;\n        }\n        var r = this.yylloc.range;\n\n        this.yylloc = {\n            first_line: this.yylloc.first_line,\n            last_line: this.yylineno + 1,\n            first_column: this.yylloc.first_column,\n            last_column: lines ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n                 + oldLines[oldLines.length - lines.length].length - lines[0].length :\n              this.yylloc.first_column - len\n        };\n\n        if (this.options.ranges) {\n            this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n        }\n        this.yyleng = this.yytext.length;\n        return this;\n    },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n        this._more = true;\n        return this;\n    },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n        if (this.options.backtrack_lexer) {\n            this._backtrack = true;\n        } else {\n            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n                text: \"\",\n                token: null,\n                line: this.yylineno\n            });\n\n        }\n        return this;\n    },\n\n// retain first n characters of the match\nless:function (n) {\n        this.unput(this.match.slice(n));\n    },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n        var past = this.matched.substr(0, this.matched.length - this.match.length);\n        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n    },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n        var next = this.match;\n        if (next.length < 20) {\n            next += this._input.substr(0, 20-next.length);\n        }\n        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n    },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n        var pre = this.pastInput();\n        var c = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n    },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n        var token,\n            lines,\n            backup;\n\n        if (this.options.backtrack_lexer) {\n            // save context\n            backup = {\n                yylineno: this.yylineno,\n                yylloc: {\n                    first_line: this.yylloc.first_line,\n                    last_line: this.last_line,\n                    first_column: this.yylloc.first_column,\n                    last_column: this.yylloc.last_column\n                },\n                yytext: this.yytext,\n                match: this.match,\n                matches: this.matches,\n                matched: this.matched,\n                yyleng: this.yyleng,\n                offset: this.offset,\n                _more: this._more,\n                _input: this._input,\n                yy: this.yy,\n                conditionStack: this.conditionStack.slice(0),\n                done: this.done\n            };\n            if (this.options.ranges) {\n                backup.yylloc.range = this.yylloc.range.slice(0);\n            }\n        }\n\n        lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno += lines.length;\n        }\n        this.yylloc = {\n            first_line: this.yylloc.last_line,\n            last_line: this.yylineno + 1,\n            first_column: this.yylloc.last_column,\n            last_column: lines ?\n                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n                         this.yylloc.last_column + match[0].length\n        };\n        this.yytext += match[0];\n        this.match += match[0];\n        this.matches = match;\n        this.yyleng = this.yytext.length;\n        if (this.options.ranges) {\n            this.yylloc.range = [this.offset, this.offset += this.yyleng];\n        }\n        this._more = false;\n        this._backtrack = false;\n        this._input = this._input.slice(match[0].length);\n        this.matched += match[0];\n        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n        if (this.done && this._input) {\n            this.done = false;\n        }\n        if (token) {\n            return token;\n        } else if (this._backtrack) {\n            // recover context\n            for (var k in backup) {\n                this[k] = backup[k];\n            }\n            return false; // rule action called reject() implying the next rule should be tested instead.\n        }\n        return false;\n    },\n\n// return next match in input\nnext:function () {\n        if (this.done) {\n            return this.EOF;\n        }\n        if (!this._input) {\n            this.done = true;\n        }\n\n        var token,\n            match,\n            tempMatch,\n            index;\n        if (!this._more) {\n            this.yytext = '';\n            this.match = '';\n        }\n        var rules = this._currentRules();\n        for (var i = 0; i < rules.length; i++) {\n            tempMatch = this._input.match(this.rules[rules[i]]);\n            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                match = tempMatch;\n                index = i;\n                if (this.options.backtrack_lexer) {\n                    token = this.test_match(tempMatch, rules[i]);\n                    if (token !== false) {\n                        return token;\n                    } else if (this._backtrack) {\n                        match = false;\n                        continue; // rule action called reject() implying a rule MISmatch.\n                    } else {\n                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n                        return false;\n                    }\n                } else if (!this.options.flex) {\n                    break;\n                }\n            }\n        }\n        if (match) {\n            token = this.test_match(match, rules[index]);\n            if (token !== false) {\n                return token;\n            }\n            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n            return false;\n        }\n        if (this._input === \"\") {\n            return this.EOF;\n        } else {\n            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n                text: \"\",\n                token: null,\n                line: this.yylineno\n            });\n        }\n    },\n\n// return next match that has a token\nlex:function lex () {\n        var r = this.next();\n        if (r) {\n            return r;\n        } else {\n            return this.lex();\n        }\n    },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n        this.conditionStack.push(condition);\n    },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n        var n = this.conditionStack.length - 1;\n        if (n > 0) {\n            return this.conditionStack.pop();\n        } else {\n            return this.conditionStack[0];\n        }\n    },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n        } else {\n            return this.conditions[\"INITIAL\"].rules;\n        }\n    },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n        n = this.conditionStack.length - 1 - Math.abs(n || 0);\n        if (n >= 0) {\n            return this.conditionStack[n];\n        } else {\n            return \"INITIAL\";\n        }\n    },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n        this.begin(condition);\n    },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n        return this.conditionStack.length;\n    },\noptions: {\"flex\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip end-of-line comments */\nbreak;\ncase 1:/* skip whitespace */\nbreak;\ncase 2:return 31\nbreak;\ncase 3:return 'as'\nbreak;\ncase 4:return 'break'\nbreak;\ncase 5:return 'const'\nbreak;\ncase 6:return 'continue'\nbreak;\ncase 7:return 'else'\nbreak;\ncase 8:return 'for'\nbreak;\ncase 9:return 'function'\nbreak;\ncase 10:return 'if'\nbreak;\ncase 11:return 'import'\nbreak;\ncase 12:return 'let'\nbreak;\ncase 13:return 'loop'\nbreak;\ncase 14:return 'package'\nbreak;\ncase 15:return 'namespace'\nbreak;\ncase 16:return 'return'\nbreak;\ncase 17:return 'var'\nbreak;\ncase 18:return 'void'\nbreak;\ncase 19:return 'while'\nbreak;\ncase 20:return 18\nbreak;\ncase 21:return 16\nbreak;\ncase 22:return 16\nbreak;\ncase 23:return 40\nbreak;\ncase 24:return 60\nbreak;\ncase 25:return 61\nbreak;\ncase 26:return 50\nbreak;\ncase 27:return 44\nbreak;\ncase 28:return 45\nbreak;\ncase 29:return 41\nbreak;\ncase 30:return 43\nbreak;\ncase 31:return 28\nbreak;\ncase 32:return 35\nbreak;\ncase 33:return 53\nbreak;\ncase 34:return 37\nbreak;\ncase 35:return 54\nbreak;\ncase 36:return 55\nbreak;\ncase 37:return 56\nbreak;\ncase 38:return 23\nbreak;\ncase 39:return 24\nbreak;\ncase 40:return 25\nbreak;\ncase 41:return 26\nbreak;\ncase 42:return 27\nbreak;\ncase 43:return 46\nbreak;\ncase 44:return 49\nbreak;\ncase 45:return 62\nbreak;\ncase 46:return 63\nbreak;\ncase 47:return 21\nbreak;\ncase 48:return 7\nbreak;\ncase 49:return 7\nbreak;\ncase 50:return 7\nbreak;\ncase 51:return 7\nbreak;\ncase 52:return 12\nbreak;\ncase 53:return 13\nbreak;\ncase 54:return 14\nbreak;\ncase 55:return 5\nbreak;\ncase 56:return 'INVALID'\nbreak;\ncase 57:console.log(yy_.yytext);\nbreak;\n}\n},\nrules: [/^(?:[/][/]\\s.*\\n)/,/^(?:\\s+)/,/^(?:in)/,/^(?:as)/,/^(?:break)/,/^(?:const)/,/^(?:continue)/,/^(?:else)/,/^(?:for)/,/^(?:function)/,/^(?:if)/,/^(?:import)/,/^(?:let)/,/^(?:loop)/,/^(?:package)/,/^(?:namespace)/,/^(?:return)/,/^(?:var)/,/^(?:void)/,/^(?:while)/,/^(?:null)/,/^(?:true)/,/^(?:false)/,/^(?:\\.)/,/^(?:\\?)/,/^(?::)/,/^(?:,)/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\()/,/^(?:\\))/,/^(?:!=)/,/^(?:!)/,/^(?:\\+)/,/^(?:-)/,/^(?:\\*)/,/^(?:\\/)/,/^(?:%)/,/^(?:==)/,/^(?:>=)/,/^(?:>)/,/^(?:<=)/,/^(?:<)/,/^(?:\\{)/,/^(?:\\})/,/^(?:&&)/,/^(?:\\|\\|)/,/^(?:[_a-zA-Z][_a-zA-Z0-9]*)/,/^(?:[rR]?['][']['](\\.|[^'])*['][']['])/,/^(?:[rR]?[\"][\"][\"](\\.|[^\"])*[\"][\"][\"])/,/^(?:[rR]?['](\\.|[^'\\n\\r])*['])/,/^(?:[rR]?[\"](\\.|[^\"\\n\\r])*[\"])/,/^(?:[-]?([0-9]+|0x[0-9a-fA-F]+))/,/^(?:([0-9]+|0x[0-9a-fA-F]+)[uU])/,/^(?:[-]?[0-9]+(\\.[0-9]+)?([eE][+-]?[0-9]+(\\.[0-9]+)?)?)/,/^(?:$)/,/^(?:.)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n  this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nexport { celParser };","import type { DefaultCombinatorName, DefaultOperatorName } from '../../types/index.noReact';\nimport type {\n  CELBooleanLiteral,\n  CELBytesLiteral,\n  CELConditionalAnd,\n  CELConditionalOr,\n  CELExpression,\n  CELExpressionGroup,\n  CELIdentifier,\n  CELLikeExpression,\n  CELList,\n  CELLiteral,\n  CELMap,\n  CELMember,\n  CELMemberIdentifierChain,\n  CELNegation,\n  CELNullLiteral,\n  CELNumericLiteral,\n  CELRelation,\n  CELRelop,\n  CELStringLiteral,\n} from './types';\n\nexport const isCELExpressionGroup = (expr: CELExpression): expr is CELExpressionGroup =>\n  expr.type === 'ExpressionGroup';\nexport const isCELConditionalAnd = (expr: CELExpression): expr is CELConditionalAnd =>\n  expr.type === 'ConditionalAnd';\nexport const isCELConditionalOr = (expr: CELExpression): expr is CELConditionalOr =>\n  expr.type === 'ConditionalOr';\nexport const isCELStringLiteral = (expr: CELExpression): expr is CELStringLiteral =>\n  expr.type === 'StringLiteral';\nexport const isCELLiteral = (expr: CELExpression): expr is CELLiteral =>\n  isCELNumericLiteral(expr) ||\n  isCELStringLiteral(expr) ||\n  expr.type === 'BooleanLiteral' ||\n  expr.type === 'NullLiteral' ||\n  expr.type === 'BytesLiteral';\nexport const isCELNumericLiteral = (expr: CELExpression): expr is CELNumericLiteral =>\n  expr.type === 'FloatLiteral' ||\n  expr.type === 'IntegerLiteral' ||\n  expr.type === 'UnsignedIntegerLiteral';\nexport const isCELRelation = (expr: CELExpression): expr is CELRelation => expr.type === 'Relation';\nexport const isCELList = (expr: CELExpression): expr is CELList => expr.type === 'List';\nexport const isCELMap = (expr: CELExpression): expr is CELMap => expr.type === 'Map';\nexport const isCELIdentifier = (expr: CELExpression): expr is CELIdentifier =>\n  expr.type === 'Identifier';\nexport const isCELNegation = (expr: CELExpression): expr is CELNegation => expr.type === 'Negation';\nexport const isCELMember = (expr: CELExpression): expr is CELMember => expr.type === 'Member';\n\nexport const isCELIdentifierOrChain = (\n  expr: CELExpression\n): expr is CELMemberIdentifierChain | CELIdentifier =>\n  isCELIdentifier(expr) ||\n  (isCELMember(expr) &&\n    !!expr.left &&\n    !!expr.right &&\n    !expr.list &&\n    !expr.value &&\n    isCELIdentifierOrChain(expr.left) &&\n    isCELIdentifier(expr.right));\n\nexport const isCELLikeExpression = (expr: CELExpression): expr is CELLikeExpression =>\n  isCELMember(expr) &&\n  !!expr.left &&\n  !!expr.right &&\n  !!expr.list &&\n  isCELIdentifierOrChain(expr.left) &&\n  isCELIdentifier(expr.right) &&\n  (expr.right.value === 'contains' ||\n    expr.right.value === 'startsWith' ||\n    expr.right.value === 'endsWith') &&\n  expr.list.value.length === 1 &&\n  (isCELStringLiteral(expr.list.value[0]) || isCELIdentifier(expr.list.value[0]));\n\nexport const getIdentifierFromChain = (expr: CELIdentifier | CELMemberIdentifierChain): string => {\n  if (isCELIdentifier(expr)) {\n    return expr.value;\n  }\n\n  return `${getIdentifierFromChain(expr.left)}.${expr.right.value}`;\n};\n\nfunction evalCELLiteralValue(literal: CELStringLiteral): string;\nfunction evalCELLiteralValue(literal: CELBooleanLiteral): boolean;\nfunction evalCELLiteralValue(literal: CELNumericLiteral): number | null;\nfunction evalCELLiteralValue(literal: CELBytesLiteral): null;\nfunction evalCELLiteralValue(literal: CELNullLiteral): null;\nfunction evalCELLiteralValue(literal: CELLiteral): string | boolean | number | null;\nfunction evalCELLiteralValue(literal: CELLiteral) {\n  if (literal.type === 'StringLiteral') {\n    return literal.value.replace(/^((?:'''|\"\"\"|'|\")?)([\\s\\S]*?)\\1$/gm, '$2');\n  } else if (literal.type === 'BooleanLiteral') {\n    return literal.value;\n  } else if (literal.type === 'NullLiteral' || literal.type === 'BytesLiteral') {\n    return null;\n  }\n  return literal.value;\n}\n\nexport const normalizeCombinator = (c: '&&' | '||'): DefaultCombinatorName =>\n  c === '||' ? 'or' : 'and';\n\nexport const normalizeOperator = (op: CELRelop, flip?: boolean): DefaultOperatorName => {\n  if (flip) {\n    if (op === '<') return '>';\n    if (op === '<=') return '>=';\n    if (op === '>') return '<';\n    if (op === '>=') return '<=';\n  }\n  if (op === '==') return '=';\n  return op;\n};\n\nexport const generateFlatAndOrList = (\n  expr: CELConditionalAnd | CELConditionalOr\n): (DefaultCombinatorName | CELExpression)[] => {\n  const combinator = normalizeCombinator(expr.type === 'ConditionalAnd' ? '&&' : '||');\n  const { left, right } = expr;\n  if (isCELConditionalAnd(left) || isCELConditionalOr(left)) {\n    return [...generateFlatAndOrList(left), combinator, right];\n  }\n  return [left, combinator, right];\n};\n\nexport const generateMixedAndOrList = (expr: CELConditionalAnd | CELConditionalOr) => {\n  const arr = generateFlatAndOrList(expr);\n  const returnArray: (DefaultCombinatorName | CELExpression | ('and' | CELExpression)[])[] = [];\n  let startIndex = 0;\n  for (let i = 0; i < arr.length; i += 2) {\n    if (arr[i + 1] === 'and') {\n      startIndex = i;\n      let j = 1;\n      while (arr[startIndex + j] === 'and') {\n        i += 2;\n        j += 2;\n      }\n      const tempAndArray = arr.slice(startIndex, i + 1) as ('and' | CELExpression)[];\n      returnArray.push(tempAndArray);\n      i -= 2;\n    } else if (arr[i + 1] === 'or') {\n      if (i === 0 || i === arr.length - 3) {\n        if (i === 0 || arr[i - 1] === 'or') {\n          returnArray.push(arr[i]);\n        }\n        returnArray.push(arr[i + 1]);\n        if (i === arr.length - 3) {\n          returnArray.push(arr[i + 2]);\n        }\n      } else {\n        if (arr[i - 1] === 'and') {\n          returnArray.push(arr[i + 1]);\n        } else {\n          returnArray.push(arr[i]);\n          returnArray.push(arr[i + 1]);\n        }\n      }\n    }\n  }\n  if (returnArray.length === 1 && Array.isArray(returnArray[0])) {\n    // If length is 1, then the only element is an AND array so just return that\n    return returnArray[0];\n  }\n  return returnArray;\n};\n\nexport { evalCELLiteralValue };\n","import type {\n  DefaultCombinatorName,\n  DefaultOperatorName,\n  DefaultRuleGroupArray,\n  DefaultRuleGroupICArray,\n  DefaultRuleGroupType,\n  DefaultRuleGroupTypeAny,\n  DefaultRuleGroupTypeIC,\n  DefaultRuleType,\n  ParseCELOptions,\n  ValueSource,\n} from '../../types/index.noReact';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { celParser } from './celParser';\nimport type { CELExpression, CELIdentifier, CELLiteral } from './types';\nimport {\n  evalCELLiteralValue,\n  generateFlatAndOrList,\n  generateMixedAndOrList,\n  getIdentifierFromChain,\n  isCELConditionalAnd,\n  isCELConditionalOr,\n  isCELExpressionGroup,\n  isCELIdentifierOrChain,\n  isCELLikeExpression,\n  isCELList,\n  isCELLiteral,\n  isCELMap,\n  isCELNegation,\n  isCELRelation,\n  isCELStringLiteral,\n  normalizeOperator,\n} from './utils';\n\n/**\n * Converts a CEL string expression into a query suitable for\n * the QueryBuilder component's `query` or `defaultQuery` props.\n */\nfunction parseCEL(cel: string): DefaultRuleGroupType;\nfunction parseCEL(\n  cel: string,\n  options: Omit<ParseCELOptions, 'independentCombinators'> & {\n    independentCombinators?: false;\n  }\n): DefaultRuleGroupType;\nfunction parseCEL(\n  cel: string,\n  options: Omit<ParseCELOptions, 'independentCombinators'> & {\n    independentCombinators: true;\n  }\n): DefaultRuleGroupTypeIC;\nfunction parseCEL(cel: string, options: ParseCELOptions = {}): DefaultRuleGroupTypeAny {\n  const { fields, independentCombinators, listsAsArrays } = options;\n  const ic = !!independentCombinators;\n  const fieldsFlat = getFieldsArray(fields);\n\n  const fieldIsValid = (\n    fieldName: string,\n    operator: DefaultOperatorName,\n    subordinateFieldName?: string\n  ) =>\n    fieldIsValidUtil({\n      fieldName,\n      fieldsFlat,\n      operator,\n      subordinateFieldName,\n      getValueSources: options?.getValueSources,\n    });\n\n  const emptyQuery: DefaultRuleGroupTypeAny = {\n    rules: [],\n    ...(ic ? {} : { combinator: 'and' }),\n  };\n\n  const processCELExpression = (\n    expr: CELExpression,\n    processOpts: {\n      groupOnlyIfNecessary?: boolean;\n      forwardNegation?: boolean;\n    } = {}\n  ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n    const { forwardNegation: forwardedNegation, groupOnlyIfNecessary } = processOpts;\n    /* istanbul ignore if */\n    if (isCELNegation(expr)) {\n      const negate = expr.negations % 2 === 1;\n      // TODO?: forwardNegation when isCELRelation(expr.value.value), in addition\n      // to CELLikeExpression? ('<=' becomes '>', 'in' becomes 'notIn', etc.)\n      const negatedExpr =\n        isCELExpressionGroup(expr.value) && isCELLikeExpression(expr.value.value)\n          ? processCELExpression(expr.value.value, { forwardNegation: negate })\n          : processCELExpression(expr.value, {\n              groupOnlyIfNecessary: true,\n              forwardNegation: negate,\n            });\n      if (negatedExpr) {\n        if (\n          !negate ||\n          (negate && !('rules' in negatedExpr) && negatedExpr.operator.startsWith('doesNot'))\n        ) {\n          return ic\n            ? ({ rules: [negatedExpr] } as DefaultRuleGroupTypeIC)\n            : ({\n                combinator: 'and',\n                rules: [negatedExpr],\n              } as DefaultRuleGroupType);\n        }\n        return ic\n          ? ({ rules: [negatedExpr], not: true } as DefaultRuleGroupTypeIC)\n          : ({\n              combinator: 'and',\n              rules: [negatedExpr],\n              not: true,\n            } as DefaultRuleGroupType);\n      }\n    } else if (isCELExpressionGroup(expr)) {\n      const rule = processCELExpression(expr.value, {\n        groupOnlyIfNecessary: true,\n      });\n      if (rule) {\n        if ('rules' in rule || (groupOnlyIfNecessary && isCELExpressionGroup(expr.value))) {\n          return rule;\n        }\n        return ic ? { rules: [rule] } : { combinator: 'and', rules: [rule] };\n      }\n    } else if (isCELConditionalAnd(expr) || isCELConditionalOr(expr)) {\n      if (ic) {\n        const andOrList = generateFlatAndOrList(expr);\n        const rules = andOrList.map(v => {\n          if (typeof v === 'string') {\n            return v;\n          }\n          return processCELExpression(v);\n        });\n        // Bail out completely if any rules in the list were invalid\n        // so as not to return an incorrect and/or sequence\n        if (!rules.every(Boolean)) {\n          return null;\n        }\n        return {\n          rules: rules as DefaultRuleGroupICArray,\n        };\n      }\n      const andOrList = generateMixedAndOrList(expr);\n      const combinator = andOrList[1] as DefaultCombinatorName;\n      const filteredList = andOrList\n        .filter(v => Array.isArray(v) || (!!v && typeof v !== 'string' && 'type' in v))\n        .map(v =>\n          Array.isArray(v) ? v.filter(vf => !!v && typeof vf !== 'string' && 'type' in vf) : v\n        ) as (CELExpression | CELExpression[])[];\n      const rules = filteredList\n        .map((exp): DefaultRuleGroupType | DefaultRuleType | null => {\n          if (Array.isArray(exp)) {\n            return {\n              combinator: 'and',\n              rules: exp\n                .map(e => processCELExpression(e))\n                .filter(r => !!r) as DefaultRuleGroupArray,\n            };\n          }\n          return processCELExpression(exp) as DefaultRuleType | DefaultRuleGroupType | null;\n        })\n        .filter(r => !!r) as DefaultRuleGroupArray;\n      /* istanbul ignore else */\n      if (rules.length > 0) {\n        return { combinator, rules };\n      }\n    } else if (isCELLikeExpression(expr)) {\n      const field = getIdentifierFromChain(expr.left);\n      const func = expr.right.value;\n      const operatorPre: DefaultOperatorName = func === 'startsWith' ? 'beginsWith' : func;\n      const operator = forwardedNegation\n        ? (`doesNot${operatorPre[0].toUpperCase()}${operatorPre\n            .slice(1)\n            .replace('s', '')}` as DefaultOperatorName)\n        : operatorPre;\n      const valueObj = expr.list.value[0];\n      const value = isCELStringLiteral(valueObj) ? evalCELLiteralValue(valueObj) : valueObj.value;\n      const valueSource: ValueSource | undefined =\n        expr.list.value[0].type === 'Identifier' ? 'field' : undefined;\n      if (fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)) {\n        return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n      }\n    } else if (isCELRelation(expr)) {\n      let field: string | null = null;\n      let value: any = undefined;\n      let valueSource: ValueSource | undefined = undefined;\n      let flip = false;\n      const { left, right } = expr;\n      if (isCELIdentifierOrChain(left)) {\n        field = getIdentifierFromChain(left);\n        if (isCELIdentifierOrChain(right)) {\n          value = getIdentifierFromChain(right);\n          valueSource = 'field';\n        } else if (isCELLiteral(right)) {\n          value = evalCELLiteralValue(right);\n        }\n      } else {\n        /* istanbul ignore else */\n        if (isCELIdentifierOrChain(right) && isCELLiteral(left) && expr.operator !== 'in') {\n          flip = true;\n          field = getIdentifierFromChain(right);\n          value = evalCELLiteralValue(left);\n        }\n      }\n      let operator = normalizeOperator(expr.operator, flip);\n      if (value === null && (operator === '=' || operator === '!=')) {\n        operator = operator === '=' ? 'null' : 'notNull';\n      } else if (operator === 'in' && isCELList(right)) {\n        if (right.value.value.every(isCELLiteral)) {\n          value = right.value.value.map(evalCELLiteralValue);\n        } else {\n          if (right.value.value.every(isCELIdentifierOrChain)) {\n            valueSource = 'field';\n            value = right.value.value.map(id => getIdentifierFromChain(id));\n          }\n        }\n        if (value && !listsAsArrays) {\n          value = value.map((v: string | boolean | number) => `${v}`).join(',');\n        }\n      } else if (operator === 'in' && isCELMap(right)) {\n        const keys = right.value.value.map(v => v.left);\n        if (keys.every(k => isCELLiteral(k) || isCELIdentifierOrChain(k))) {\n          value = (keys as (CELLiteral | CELIdentifier)[]).map(k =>\n            isCELLiteral(k) ? evalCELLiteralValue(k) : getIdentifierFromChain(k)\n          );\n        }\n        if (value && !listsAsArrays) {\n          value = value.map((v: string | boolean | number) => `${v}`).join(',');\n        }\n      }\n      if (\n        field &&\n        fieldIsValid(field, operator, valueSource === 'field' ? value : undefined) &&\n        typeof value !== 'undefined'\n      ) {\n        return valueSource ? { field, operator, value, valueSource } : { field, operator, value };\n      }\n    }\n    return null;\n  };\n\n  let processedCEL: CELExpression;\n  try {\n    processedCEL = celParser.parse(cel).value;\n  } catch (err) {\n    return emptyQuery;\n  }\n  const result = processCELExpression(processedCEL);\n  if (result) {\n    if ('rules' in result) {\n      return result;\n    }\n    return { rules: [result], ...(ic ? {} : { combinator: 'and' }) };\n  }\n\n  return emptyQuery;\n}\n\nexport { parseCEL };\n","import type {\n  JsonLogicAnd,\n  JsonLogicDoubleNegation,\n  JsonLogicEqual,\n  JsonLogicGreaterThan,\n  JsonLogicGreaterThanOrEqual,\n  JsonLogicInArray,\n  JsonLogicInString,\n  JsonLogicLessThan,\n  JsonLogicLessThanOrEqual,\n  JsonLogicNegation,\n  JsonLogicNotEqual,\n  JsonLogicOr,\n  JsonLogicStrictEqual,\n  JsonLogicStrictNotEqual,\n  JsonLogicVar,\n  RQBJsonLogic,\n  RQBJsonLogicEndsWith,\n  RQBJsonLogicStartsWith,\n  RQBJsonLogicVar,\n} from '../../types/index.noReact';\nimport { isPojo } from '../misc';\nimport type { JsonLogicBetweenExclusive, JsonLogicBetweenInclusive } from './types';\n\n// Standard JsonLogic operations\nexport const isJsonLogicVar = (\n  logic: RQBJsonLogic\n): logic is JsonLogicVar<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && 'var' in logic;\nexport const isRQBJsonLogicVar = (logic: RQBJsonLogic): logic is RQBJsonLogicVar =>\n  isJsonLogicVar(logic) && typeof logic.var === 'string';\nexport const isJsonLogicEqual = (logic: RQBJsonLogic): logic is JsonLogicEqual =>\n  isPojo(logic) && '==' in logic;\nexport const isJsonLogicStrictEqual = (logic: RQBJsonLogic): logic is JsonLogicStrictEqual =>\n  isPojo(logic) && '===' in logic;\nexport const isJsonLogicNotEqual = (logic: RQBJsonLogic): logic is JsonLogicNotEqual =>\n  isPojo(logic) && '!=' in logic;\nexport const isJsonLogicStrictNotEqual = (logic: RQBJsonLogic): logic is JsonLogicStrictNotEqual =>\n  isPojo(logic) && '!==' in logic;\nexport const isJsonLogicNegation = (logic: RQBJsonLogic): logic is JsonLogicNegation =>\n  isPojo(logic) && '!' in logic;\nexport const isJsonLogicDoubleNegation = (logic: RQBJsonLogic): logic is JsonLogicDoubleNegation =>\n  isPojo(logic) && '!!' in logic;\nexport const isJsonLogicOr = (\n  logic: RQBJsonLogic\n): logic is JsonLogicOr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && 'or' in logic;\nexport const isJsonLogicAnd = (\n  logic: RQBJsonLogic\n): logic is JsonLogicAnd<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && 'and' in logic;\nexport const isJsonLogicGreaterThan = (\n  logic: RQBJsonLogic\n): logic is JsonLogicGreaterThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && '>' in logic;\nexport const isJsonLogicGreaterThanOrEqual = (\n  logic: RQBJsonLogic\n): logic is JsonLogicGreaterThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && '>=' in logic;\nexport const isJsonLogicLessThan = (\n  logic: RQBJsonLogic\n): logic is JsonLogicLessThan<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && '<' in logic && logic['<'].length === 2;\nexport const isJsonLogicLessThanOrEqual = (\n  logic: RQBJsonLogic\n): logic is JsonLogicLessThanOrEqual<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && '<=' in logic && logic['<='].length === 2;\nexport const isJsonLogicInArray = (\n  logic: RQBJsonLogic\n): logic is JsonLogicInArray<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && 'in' in logic && Array.isArray(logic.in[1]);\nexport const isJsonLogicInString = (\n  logic: RQBJsonLogic\n): logic is JsonLogicInString<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n  isPojo(logic) && 'in' in logic && !Array.isArray(logic.in[1]);\n\n// \"Between\" operations are special cases of '<' and '<='\nexport const isJsonLogicBetweenExclusive = (\n  logic: RQBJsonLogic\n): logic is JsonLogicBetweenExclusive =>\n  isPojo(logic) && '<' in logic && Array.isArray(logic['<']) && logic['<'].length === 3;\nexport const isJsonLogicBetweenInclusive = (\n  logic: RQBJsonLogic\n): logic is JsonLogicBetweenInclusive =>\n  isPojo(logic) && '<=' in logic && Array.isArray(logic['<=']) && logic['<='].length === 3;\n\n// RQB extensions\nexport const isRQBJsonLogicStartsWith = (logic: RQBJsonLogic): logic is RQBJsonLogicStartsWith =>\n  isPojo(logic) && 'startsWith' in logic;\nexport const isRQBJsonLogicEndsWith = (logic: RQBJsonLogic): logic is RQBJsonLogicEndsWith =>\n  isPojo(logic) && 'endsWith' in logic;\n\n// Type guards for unused JsonLogic operations\n\n// import type {\n//   JsonLogicAll,\n//   JsonLogicCat,\n//   JsonLogicDifference,\n//   JsonLogicFilter,\n//   JsonLogicIf,\n//   JsonLogicLog,\n//   JsonLogicMap,\n//   JsonLogicMax,\n//   JsonLogicMerge,\n//   JsonLogicMin,\n//   JsonLogicMissing,\n//   JsonLogicMissingSome,\n//   JsonLogicNone,\n//   JsonLogicProduct,\n//   JsonLogicQuotient,\n//   JsonLogicReduce,\n//   JsonLogicRemainder,\n//   JsonLogicSome,\n//   JsonLogicSubstr,\n//   JsonLogicSum,\n// } from '../../types/index.noReact';\n//\n// export const isJsonLogicMissing = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMissing<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'missing' in logic;\n// export const isJsonLogicMissingSome = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMissingSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'missing_some' in logic;\n// export const isJsonLogicIf = (logic: RQBJsonLogic): logic is JsonLogicIf =>\n//   isPojo(logic) && 'if' in logic;\n// export const isJsonLogicMax = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMax<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'max' in logic;\n// export const isJsonLogicMin = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMin<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'min' in logic;\n// export const isJsonLogicSum = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicSum<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && '+' in logic;\n// export const isJsonLogicDifference = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicDifference<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && '-' in logic;\n// export const isJsonLogicProduct = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicProduct<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && '*' in logic;\n// export const isJsonLogicQuotient = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicQuotient<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && '/' in logic;\n// export const isJsonLogicRemainder = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicRemainder<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && '%' in logic;\n// export const isJsonLogicMap = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMap<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'map' in logic;\n// export const isJsonLogicFilter = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicFilter<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'filter' in logic;\n// export const isJsonLogicReduce = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicReduce<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'reduce' in logic;\n// export const isJsonLogicAll = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicAll<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'all' in logic;\n// export const isJsonLogicNone = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicNone<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'none' in logic;\n// export const isJsonLogicSome = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicSome<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'some' in logic;\n// export const isJsonLogicMerge = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicMerge<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'merge' in logic;\n// export const isJsonLogicCat = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicCat<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'cat' in logic;\n// export const isJsonLogicSubstr = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicSubstr<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'substr' in logic;\n// export const isJsonLogicLog = (\n//   logic: RQBJsonLogic\n// ): logic is JsonLogicLog<RQBJsonLogicStartsWith | RQBJsonLogicEndsWith> =>\n//   isPojo(logic) && 'log' in logic;\n","import { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n  DefaultOperatorName,\n  DefaultRuleGroupType,\n  DefaultRuleGroupTypeAny,\n  DefaultRuleGroupTypeIC,\n  DefaultRuleType,\n  JsonLogicReservedOperations,\n  ParseJsonLogicOptions,\n  RQBJsonLogic,\n  RQBJsonLogicVar,\n  ValueSource,\n} from '../../types/index.noReact';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport {\n  isJsonLogicAnd,\n  isJsonLogicBetweenExclusive,\n  isJsonLogicBetweenInclusive,\n  isJsonLogicDoubleNegation,\n  isJsonLogicEqual,\n  isJsonLogicGreaterThan,\n  isJsonLogicGreaterThanOrEqual,\n  isJsonLogicInArray,\n  isJsonLogicInString,\n  isJsonLogicLessThan,\n  isJsonLogicLessThanOrEqual,\n  isJsonLogicNegation,\n  isJsonLogicNotEqual,\n  isJsonLogicOr,\n  isJsonLogicStrictEqual,\n  isJsonLogicStrictNotEqual,\n  isRQBJsonLogicEndsWith,\n  isRQBJsonLogicStartsWith,\n  isRQBJsonLogicVar,\n} from './utils';\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a JsonLogic object into a query suitable for\n * the QueryBuilder component's `query` or `defaultQuery` props.\n */\nfunction parseJsonLogic(rqbJsonLogic: string | RQBJsonLogic): DefaultRuleGroupType;\nfunction parseJsonLogic(\n  rqbJsonLogic: string | RQBJsonLogic,\n  options: Omit<ParseJsonLogicOptions, 'independentCombinators'> & {\n    independentCombinators?: false;\n  }\n): DefaultRuleGroupType;\nfunction parseJsonLogic(\n  rqbJsonLogic: string | RQBJsonLogic,\n  options: Omit<ParseJsonLogicOptions, 'independentCombinators'> & {\n    independentCombinators: true;\n  }\n): DefaultRuleGroupTypeIC;\nfunction parseJsonLogic(\n  rqbJsonLogic: string | RQBJsonLogic,\n  options: ParseJsonLogicOptions = {}\n): DefaultRuleGroupTypeAny {\n  const fieldsFlat = getFieldsArray(options.fields);\n  const { getValueSources, listsAsArrays, jsonLogicOperations } = options;\n\n  const fieldIsValid = (\n    fieldName: string,\n    operator: DefaultOperatorName,\n    subordinateFieldName?: string\n  ) =>\n    fieldIsValidUtil({\n      fieldName,\n      fieldsFlat,\n      operator,\n      subordinateFieldName,\n      getValueSources,\n    });\n\n  // Overload 1: Always return a rule group or false for the outermost logic object\n  function processLogic(logic: RQBJsonLogic, outermost: true): DefaultRuleGroupType | false;\n  // Overload 2: If not the outermost object, return value could also be a rule\n  function processLogic(\n    logic: RQBJsonLogic,\n    outermost?: false\n  ): DefaultRuleGroupType | DefaultRuleType | false;\n  // Implementation\n  function processLogic(\n    logic: RQBJsonLogic,\n    outermost?: boolean\n  ): DefaultRuleGroupType | DefaultRuleType | false {\n    // Bail if the outermost logic is not a plain object\n    if (outermost && !isPojo(logic)) {\n      return false;\n    }\n    const key = Object.keys(logic)[0] as JsonLogicReservedOperations;\n    // @ts-expect-error `key in logic` is always true, but TS doesn't know that\n    const keyValue = logic[key];\n    // Rule groups\n    if (isJsonLogicAnd(logic)) {\n      return {\n        combinator: 'and',\n        rules: logic.and.map(l => processLogic(l)).filter(Boolean) as (\n          | DefaultRuleType\n          | DefaultRuleGroupType\n        )[],\n      };\n    } else if (isJsonLogicOr(logic)) {\n      return {\n        combinator: 'or',\n        rules: logic.or.map(l => processLogic(l)).filter(Boolean) as (\n          | DefaultRuleType\n          | DefaultRuleGroupType\n        )[],\n      };\n    } else if (isJsonLogicNegation(logic)) {\n      const rule = processLogic(logic['!']);\n      if (rule) {\n        if (\n          !isRuleGroupType(rule) &&\n          (rule.operator === 'between' ||\n            rule.operator === 'in' ||\n            rule.operator === 'contains' ||\n            rule.operator === 'beginsWith' ||\n            rule.operator === 'endsWith')\n        ) {\n          const newRule = { ...rule, operator: defaultOperatorNegationMap[rule.operator] };\n          if (outermost) {\n            return { combinator: 'and', rules: [newRule] };\n          }\n          return newRule;\n        } else if (isJsonLogicBetweenExclusive(logic['!']) && isRuleGroupType(rule)) {\n          return { ...rule, not: true };\n        }\n        return { combinator: 'and', rules: [rule], not: true };\n      }\n      return false;\n    } else if (isJsonLogicDoubleNegation(logic)) {\n      const rule = processLogic(logic['!!']);\n      return rule || false;\n    }\n\n    // All other keys represent rules\n    let rule: DefaultRuleType | false = false;\n    let field = '';\n    let operator: DefaultOperatorName = '=';\n    let value: any = '';\n    let valueSource: ValueSource | undefined = undefined;\n\n    if (jsonLogicOperations && objectKeys(jsonLogicOperations).includes(key)) {\n      // Custom operations\n      rule = jsonLogicOperations[key](keyValue) as DefaultRuleType;\n    } else if (\n      // Basic boolean operations\n      isJsonLogicEqual(logic) ||\n      isJsonLogicStrictEqual(logic) ||\n      isJsonLogicNotEqual(logic) ||\n      isJsonLogicStrictNotEqual(logic) ||\n      isJsonLogicGreaterThan(logic) ||\n      isJsonLogicGreaterThanOrEqual(logic) ||\n      isJsonLogicLessThan(logic) ||\n      isJsonLogicLessThanOrEqual(logic) ||\n      isJsonLogicInString(logic) ||\n      isRQBJsonLogicStartsWith(logic) ||\n      isRQBJsonLogicEndsWith(logic)\n    ) {\n      const [first, second] = keyValue;\n      if (isRQBJsonLogicVar(first) && !isPojo(second)) {\n        field = first.var;\n        value = second;\n      } else if (!isPojo(first) && isRQBJsonLogicVar(second)) {\n        field = second.var;\n        value = first;\n      } else if (isRQBJsonLogicVar(first) && isRQBJsonLogicVar(second)) {\n        field = first.var;\n        value = second.var;\n        valueSource = 'field';\n      } else {\n        return false;\n      }\n\n      // Translate operator if necessary\n      if (isJsonLogicEqual(logic) || isJsonLogicStrictEqual(logic)) {\n        operator = value === null ? 'null' : '=';\n      } else if (isJsonLogicNotEqual(logic) || isJsonLogicStrictNotEqual(logic)) {\n        operator = value === null ? 'notNull' : '!=';\n      } else if (isJsonLogicInString(logic)) {\n        operator = 'contains';\n      } else if (isRQBJsonLogicStartsWith(logic)) {\n        operator = 'beginsWith';\n      } else if (isRQBJsonLogicEndsWith(logic)) {\n        operator = 'endsWith';\n      } else {\n        operator = key as DefaultOperatorName;\n      }\n\n      if (fieldIsValid(field, operator, valueSource === 'field' ? value : undefined)) {\n        rule = { field, operator, value, valueSource };\n      }\n    } else if (isJsonLogicBetweenExclusive(logic) && isRQBJsonLogicVar(logic['<'][1])) {\n      field = logic['<'][1].var;\n      const values = [logic['<'][0], logic['<'][2]];\n      // istanbul ignore else\n      if (\n        values.every(isRQBJsonLogicVar) ||\n        values.every(el => typeof el === 'string') ||\n        values.every(el => typeof el === 'number') ||\n        values.every(el => typeof el === 'boolean')\n      ) {\n        return (\n          processLogic({\n            and: [{ '>': [{ var: field }, values[0]] }, { '<': [{ var: field }, values[1]] }],\n          }) || /* istanbul ignore next */ false\n        );\n      }\n    } else if (isJsonLogicBetweenInclusive(logic) && isRQBJsonLogicVar(logic['<='][1])) {\n      field = logic['<='][1].var;\n      operator = 'between';\n      const values = [logic['<='][0], logic['<='][2]];\n      if (logic['<='].every(isRQBJsonLogicVar)) {\n        const vars = values as RQBJsonLogicVar[];\n        valueSource = 'field';\n        const fieldList = vars.map(el => el.var).filter(sf => fieldIsValid(field, operator, sf));\n        value = listsAsArrays ? fieldList : fieldList.join(',');\n      } else {\n        // istanbul ignore else\n        if (\n          values.every(el => typeof el === 'string') ||\n          values.every(el => typeof el === 'number') ||\n          values.every(el => typeof el === 'boolean')\n        ) {\n          value = listsAsArrays ? values : values.map(el => `${el}`).join(',');\n        }\n      }\n\n      if (fieldIsValid(field, operator) && value.length >= 2) {\n        rule = { field, operator, value, valueSource };\n      }\n    } else if (isJsonLogicInArray(logic) && isRQBJsonLogicVar(keyValue[0])) {\n      field = keyValue[0].var;\n      operator = 'in';\n      if (logic.in[1].every(isRQBJsonLogicVar)) {\n        valueSource = 'field';\n        const fieldList = logic.in[1]\n          .map(el => el.var as string)\n          .filter(sf => fieldIsValid(field, operator, sf));\n        value = listsAsArrays ? fieldList : fieldList.join(',');\n      } else {\n        // istanbul ignore else\n        if (\n          logic.in[1].every(el => typeof el === 'string') ||\n          logic.in[1].every(el => typeof el === 'number') ||\n          logic.in[1].every(el => typeof el === 'boolean')\n        ) {\n          value = listsAsArrays ? logic.in[1] : logic.in[1].map(el => `${el}`).join(',');\n        }\n      }\n\n      // istanbul ignore else\n      if (value.length > 0) {\n        rule = { field, operator, value, valueSource };\n      }\n    }\n\n    return !rule ? false : outermost ? { combinator: 'and', rules: [rule] } : rule;\n  }\n\n  let logicRoot = rqbJsonLogic;\n  if (typeof rqbJsonLogic === 'string') {\n    try {\n      logicRoot = JSON.parse(rqbJsonLogic);\n    } catch (err) {\n      return emptyRuleGroup;\n    }\n  }\n\n  const result = processLogic(logicRoot, true);\n  const finalQuery: DefaultRuleGroupType = !result ? emptyRuleGroup : result;\n  return options.independentCombinators\n    ? convertToIC<DefaultRuleGroupTypeIC>(finalQuery)\n    : finalQuery;\n}\n\nexport { parseJsonLogic };\n","import type { DefaultOperatorName } from '../../types';\nimport type { MongoDbSupportedOperators } from './types';\n\nexport const getRegExStr = (re: string | RegExp) => (typeof re === 'string' ? re : re.source);\n\nexport const isPrimitive = (v: any): v is string | number | boolean =>\n  typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean';\n\nexport const mongoDbToRqbOperatorMap: { [o in MongoDbSupportedOperators]?: DefaultOperatorName } = {\n  $eq: '=',\n  $ne: '!=',\n  $gt: '>',\n  $gte: '>=',\n  $lt: '<',\n  $lte: '<=',\n};\n","import { defaultOperatorNegationMap } from '../../defaults';\nimport type {\n  DefaultOperatorName,\n  DefaultRuleGroupType,\n  DefaultRuleGroupTypeAny,\n  DefaultRuleGroupTypeIC,\n  DefaultRuleType,\n  ParseMongoDbOptions,\n} from '../../types/index.noReact';\nimport { convertToIC } from '../convertQuery';\nimport { isRuleGroupType } from '../isRuleGroup';\nimport { isPojo } from '../misc';\nimport { objectKeys } from '../objectUtils';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport type { MongoDbSupportedOperators } from './types';\nimport { getRegExStr, isPrimitive, mongoDbToRqbOperatorMap } from './utils';\n\nconst emptyRuleGroup: DefaultRuleGroupType = { combinator: 'and', rules: [] };\n\n/**\n * Converts a MongoDB query object or parseable string into a query suitable for\n * the QueryBuilder component's `query` or `defaultQuery` props.\n */\nfunction parseMongoDB(mongoDbRules: string | Record<string, any>): DefaultRuleGroupType;\nfunction parseMongoDB(\n  mongoDbRules: string | Record<string, any>,\n  options: Omit<ParseMongoDbOptions, 'independentCombinators'> & {\n    independentCombinators?: false;\n  }\n): DefaultRuleGroupType;\nfunction parseMongoDB(\n  mongoDbRules: string | Record<string, any>,\n  options: Omit<ParseMongoDbOptions, 'independentCombinators'> & {\n    independentCombinators: true;\n  }\n): DefaultRuleGroupTypeIC;\nfunction parseMongoDB(\n  mongoDbRules: string | Record<string, any>,\n  options: ParseMongoDbOptions = {}\n): DefaultRuleGroupTypeAny {\n  const listsAsArrays = !!options.listsAsArrays;\n  const fieldsFlat = getFieldsArray(options.fields);\n  const getValueSources = options.getValueSources;\n\n  const fieldIsValid = (\n    fieldName: string,\n    operator: DefaultOperatorName,\n    subordinateFieldName?: string\n  ) =>\n    fieldIsValidUtil({\n      fieldName,\n      fieldsFlat,\n      operator,\n      subordinateFieldName,\n      getValueSources,\n    });\n\n  function processMongoDbQueryBooleanOperator(\n    field: string,\n    mdbOperator: MongoDbSupportedOperators,\n    keyValue: any\n  ): DefaultRuleType | false {\n    let operator: DefaultOperatorName = '=';\n    let value: any = '';\n\n    // istanbul ignore else\n    if (\n      mdbOperator === '$eq' ||\n      mdbOperator === '$ne' ||\n      mdbOperator === '$gt' ||\n      mdbOperator === '$gte' ||\n      mdbOperator === '$lt' ||\n      mdbOperator === '$lte'\n    ) {\n      if (mdbOperator === '$ne' && keyValue === null) {\n        if (fieldIsValid(field, 'notNull')) {\n          return { field, operator: 'notNull', value: null };\n        }\n      } else {\n        operator = mongoDbToRqbOperatorMap[mdbOperator]!;\n        if (fieldIsValid(field, operator)) {\n          return { field, operator, value: keyValue };\n        }\n      }\n    } else if (mdbOperator === '$regex' && /^[^^].*[^$]$/.test(getRegExStr(keyValue))) {\n      if (fieldIsValid(field, 'contains')) {\n        return {\n          field,\n          operator: 'contains',\n          value: getRegExStr(keyValue),\n        };\n      }\n    } else if (mdbOperator === '$regex' && /^\\^.*[^$]/.test(getRegExStr(keyValue))) {\n      if (fieldIsValid(field, 'beginsWith')) {\n        return {\n          field,\n          operator: 'beginsWith',\n          value: getRegExStr(keyValue).replace(/^\\^/, ''),\n        };\n      }\n    } else if (mdbOperator === '$regex' && /[^^].*\\$/.test(getRegExStr(keyValue))) {\n      if (fieldIsValid(field, 'endsWith')) {\n        return {\n          field,\n          operator: 'endsWith',\n          value: getRegExStr(keyValue).replace(/\\$$/, ''),\n        };\n      }\n    } else if (mdbOperator === '$in' && Array.isArray(keyValue)) {\n      if (fieldIsValid(field, 'in')) {\n        if (listsAsArrays) {\n          value = keyValue;\n        } else {\n          value = keyValue.map(v => `${v}`).join(',');\n        }\n        return { field, operator: 'in', value };\n      }\n    } else if (mdbOperator === '$nin' && Array.isArray(keyValue)) {\n      if (fieldIsValid(field, 'notIn')) {\n        if (listsAsArrays) {\n          value = keyValue;\n        } else {\n          value = keyValue.map(v => `${v}`).join(',');\n        }\n        return { field, operator: 'notIn', value };\n      }\n    }\n\n    return false;\n  }\n\n  function processMongoDbQueryObjectKey(\n    key: string,\n    keyValue: any\n  ): DefaultRuleType | DefaultRuleGroupType | false {\n    let field = '';\n\n    // istanbul ignore else\n    if (key === '$and') {\n      if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every(isPojo)) {\n        return false;\n      }\n\n      // Check if this should result in a \"between\" clause\n      if (keyValue.length === 2 && keyValue.every(kv => objectKeys(kv).length === 1)) {\n        const [rule1, rule2] = keyValue;\n        const [ruleKey1, ruleKey2] = keyValue.map(kv => objectKeys(kv)[0]);\n        if (\n          ruleKey1 === ruleKey2 &&\n          isPojo(rule1[ruleKey1]) &&\n          objectKeys(rule1[ruleKey1]).length === 1 &&\n          isPojo(rule2[ruleKey2]) &&\n          objectKeys(rule2[ruleKey2]).length === 1 &&\n          (('$gte' in rule1[ruleKey1] &&\n            '$lte' in rule2[ruleKey2] &&\n            rule2[ruleKey2].$lte >= rule1[ruleKey1].$gte) ||\n            ('$lte' in rule1[ruleKey1] &&\n              '$gte' in rule2[ruleKey2] &&\n              rule1[ruleKey1].$lte >= rule2[ruleKey2].$gte))\n        ) {\n          const [val1, val2] = [\n            rule1[ruleKey1].$gte ?? rule1[ruleKey1].$lte,\n            rule2[ruleKey2].$lte ?? rule2[ruleKey2].$gte,\n          ];\n          let value = listsAsArrays ? [val1, val2] : `${val1},${val2}`;\n          if (val1 > val2) {\n            value = listsAsArrays ? [val2, val1] : `${val2},${val1}`;\n          }\n          return { field: ruleKey1, operator: 'between', value };\n        }\n      }\n\n      const rules = keyValue.map(l => processMongoDbQueryObject(l)).filter(Boolean) as (\n        | DefaultRuleType\n        | DefaultRuleGroupType\n      )[];\n\n      return rules.length > 0 ? { combinator: 'and', rules } : false;\n    } else if (key === '$or') {\n      if (!Array.isArray(keyValue) || keyValue.length === 0 || !keyValue.every(isPojo)) {\n        return false;\n      }\n\n      // Check if this should result in \"notBetween\"\n      if (keyValue.length === 2 && keyValue.every(kv => objectKeys(kv).length === 1)) {\n        const [rule1, rule2] = keyValue;\n        const [ruleKey1, ruleKey2] = keyValue.map(kv => objectKeys(kv)[0]);\n        if (\n          ruleKey1 === ruleKey2 &&\n          isPojo(rule1[ruleKey1]) &&\n          objectKeys(rule1[ruleKey1]).length === 1 &&\n          isPojo(rule2[ruleKey2]) &&\n          objectKeys(rule2[ruleKey2]).length === 1 &&\n          (('$gt' in rule1[ruleKey1] &&\n            '$lt' in rule2[ruleKey2] &&\n            rule1[ruleKey1].$gt >= rule2[ruleKey2].$lt) ||\n            ('$lt' in rule1[ruleKey1] &&\n              '$gt' in rule2[ruleKey2] &&\n              rule2[ruleKey2].$gt >= rule1[ruleKey1].$lt))\n        ) {\n          const [val1, val2] = [\n            rule1[ruleKey1].$gt ?? rule1[ruleKey1].$lt,\n            rule2[ruleKey2].$lt ?? rule2[ruleKey2].$gt,\n          ];\n          let value = listsAsArrays ? [val1, val2] : `${val1},${val2}`;\n          if (val1 > val2) {\n            value = listsAsArrays ? [val2, val1] : `${val2},${val1}`;\n          }\n          return { field: ruleKey1, operator: 'notBetween', value };\n        }\n      }\n\n      const rules = keyValue.map(l => processMongoDbQueryObject(l)).filter(Boolean) as (\n        | DefaultRuleType\n        | DefaultRuleGroupType\n      )[];\n\n      return rules.length > 0 ? { combinator: 'or', rules } : false;\n    } else if (key === '$not' && isPojo(keyValue)) {\n      const ruleOrGroup = processMongoDbQueryObject(keyValue);\n      if (ruleOrGroup) {\n        if (isRuleGroupType(ruleOrGroup)) {\n          return ruleOrGroup.not\n            ? { combinator: 'and', rules: [ruleOrGroup], not: true }\n            : { ...ruleOrGroup, not: true };\n        }\n        return { ...ruleOrGroup, operator: defaultOperatorNegationMap[ruleOrGroup.operator] };\n      }\n      return false;\n    } else if (key === '$expr') {\n      const op = objectKeys(keyValue)[0] as MongoDbSupportedOperators;\n      if (/^\\$(eq|gte?|lte?|n?in)$/.test(op)) {\n        if (\n          Array.isArray(keyValue[op]) &&\n          keyValue[op].length === 2 &&\n          typeof keyValue[op][0] === 'string' &&\n          /^\\$/.test(keyValue[op][0])\n        ) {\n          field = keyValue[op][0].replace(/^\\$/, '');\n          const val = keyValue[op][1];\n          if (\n            (typeof val === 'string' && /^\\$/.test(val)) ||\n            (Array.isArray(val) &&\n              val.every(v => typeof v === 'string') &&\n              val.every(v => /^\\$/.test(v)))\n          ) {\n            const valForProcessing = Array.isArray(val)\n              ? val.map(v => v.replace(/^\\$/, ''))\n              : val.replace(/^\\$/, '');\n            const tempRule = processMongoDbQueryBooleanOperator(field, op, valForProcessing);\n            if (tempRule) {\n              if (\n                typeof tempRule.value === 'string' &&\n                !fieldIsValid(field, tempRule.operator, tempRule.value)\n              ) {\n                return false;\n              }\n              return { ...tempRule, valueSource: 'field' };\n            }\n          }\n          return processMongoDbQueryBooleanOperator(field, op, keyValue[op][1]);\n        }\n      }\n    } else if (/^[^$]/.test(key)) {\n      field = key;\n\n      if (isPrimitive(keyValue)) {\n        if (fieldIsValid(field, '=')) {\n          return { field, operator: '=', value: keyValue };\n        }\n      } else if (keyValue === null) {\n        if (fieldIsValid(field, 'null')) {\n          return { field, operator: 'null', value: keyValue };\n        }\n      } else if (isPojo(keyValue)) {\n        let betweenRule: DefaultRuleType | false = false;\n        let notRule: DefaultRuleType | DefaultRuleGroupType | false = false;\n\n        const operators = objectKeys(keyValue)\n          .filter(o => /^\\$(eq|ne|gte?|lte?|n?in|regex|not)$/.test(o))\n          .sort() as MongoDbSupportedOperators[];\n        if (operators.length === 0) {\n          return false;\n        }\n\n        if ('$not' in keyValue && isPojo(keyValue.$not)) {\n          const invertedNotRule = processMongoDbQueryObject({ [field]: keyValue.$not });\n          if (invertedNotRule) {\n            if (isRuleGroupType(invertedNotRule)) {\n              notRule = { ...invertedNotRule, not: true };\n            } else {\n              notRule = {\n                ...invertedNotRule,\n                operator: defaultOperatorNegationMap[invertedNotRule.operator],\n              };\n            }\n          }\n        }\n\n        if ('$gte' in keyValue && '$lte' in keyValue) {\n          // This is (at least) a compact \"between\" clause\n          betweenRule = {\n            field,\n            operator: 'between',\n            value: listsAsArrays\n              ? [keyValue.$gte, keyValue.$lte]\n              : `${keyValue.$gte},${keyValue.$lte}`,\n          };\n        }\n\n        const rules = operators\n          // filter out $not\n          .filter(op => !(notRule && op === '$not'))\n          // filter out $gte and $lte if they were both present\n          .filter(op => !(betweenRule && (op === '$gte' || op === '$lte')))\n          .map(op => processMongoDbQueryBooleanOperator(field, op, keyValue[op]))\n          .filter(Boolean) as (DefaultRuleGroupType | DefaultRuleType)[];\n\n        if (notRule) {\n          rules.unshift(notRule);\n        }\n\n        if (betweenRule) {\n          rules.unshift(betweenRule);\n        }\n\n        if (rules.length === 0) {\n          return false;\n        }\n        if (rules.length === 1) {\n          return rules[0];\n        }\n        return { combinator: 'and', rules };\n      }\n    }\n\n    return false;\n  }\n\n  function processMongoDbQueryObject(\n    mongoDbQueryObject: Record<string, any>\n  ): DefaultRuleGroupType | DefaultRuleType | false {\n    const rules = objectKeys(mongoDbQueryObject)\n      .map(k => processMongoDbQueryObjectKey(k, mongoDbQueryObject[k]))\n      .filter(Boolean) as DefaultRuleGroupType[];\n    return rules.length === 1 ? rules[0] : rules.length > 1 ? { combinator: 'and', rules } : false;\n  }\n\n  let mongoDbPOJO = mongoDbRules;\n  if (typeof mongoDbRules === 'string') {\n    try {\n      mongoDbPOJO = JSON.parse(mongoDbRules);\n    } catch (err) {\n      return emptyRuleGroup;\n    }\n  }\n\n  // Bail if the mongoDbPOJO is not actually a POJO\n  if (!isPojo(mongoDbPOJO)) {\n    return emptyRuleGroup;\n  }\n\n  const result = processMongoDbQueryObject(mongoDbPOJO as Record<string, any>);\n  const finalQuery: DefaultRuleGroupType = result\n    ? isRuleGroupType(result)\n      ? result\n      : { combinator: 'and', rules: [result] }\n    : emptyRuleGroup;\n  return options.independentCombinators\n    ? convertToIC<DefaultRuleGroupTypeIC>(finalQuery)\n    : finalQuery;\n}\n\nexport { parseMongoDB };\n","/* parser generated by jison 0.4.18 */\n/*\n  Returns a Parser object of the following structure:\n\n  Parser: {\n    yy: {}\n  }\n\n  Parser.prototype: {\n    yy: {},\n    trace: function(),\n    symbols_: {associative list: name ==> number},\n    terminals_: {associative list: number ==> name},\n    productions_: [...],\n    performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n    table: [...],\n    defaultActions: {...},\n    parseError: function(str, hash),\n    parse: function(input),\n\n    lexer: {\n        EOF: 1,\n        parseError: function(str, hash),\n        setInput: function(input),\n        input: function(),\n        unput: function(str),\n        more: function(),\n        less: function(n),\n        pastInput: function(),\n        upcomingInput: function(),\n        showPosition: function(),\n        test_match: function(regex_match_array, rule_index),\n        next: function(),\n        lex: function(),\n        begin: function(condition),\n        popState: function(),\n        _currentRules: function(),\n        topState: function(),\n        pushState: function(condition),\n\n        options: {\n            ranges: boolean           (optional: true ==> token location info will include a .range[] member)\n            flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n            backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n        },\n\n        performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n        rules: [...],\n        conditions: {associative list: name ==> set},\n    }\n  }\n\n\n  token location info (@$, _$, etc.): {\n    first_line: n,\n    last_line: n,\n    first_column: n,\n    last_column: n,\n    range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)\n  }\n\n\n  the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n    text:        (matched text)\n    token:       (the produced terminal token, if any)\n    line:        (yylineno)\n  }\n  while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n    loc:         (yylloc)\n    expected:    (string describing the set of expected tokens)\n    recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n  }\n*/\nvar sqlParser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,8],$V1=[1,4],$V2=[2,4],$V3=[1,11],$V4=[1,10],$V5=[2,16],$V6=[1,14],$V7=[1,15],$V8=[1,16],$V9=[6,8],$Va=[2,148],$Vb=[1,19],$Vc=[1,20],$Vd=[16,33,35,36,37,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Ve=[16,18,32,33,35,36,37,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vf=[2,162],$Vg=[1,29],$Vh=[6,8,14,17,146,150,152,154],$Vi=[1,42],$Vj=[1,61],$Vk=[1,53],$Vl=[1,60],$Vm=[1,62],$Vn=[1,63],$Vo=[1,64],$Vp=[1,65],$Vq=[1,66],$Vr=[1,59],$Vs=[1,54],$Vt=[1,55],$Vu=[1,56],$Vv=[1,57],$Vw=[1,58],$Vx=[1,43],$Vy=[1,44],$Vz=[1,45],$VA=[1,47],$VB=[1,34],$VC=[1,67],$VD=[16,35,36,37,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$VE=[6,8,14,17,150,152,154],$VF=[2,145],$VG=[1,76],$VH=[1,77],$VI=[6,8,14,17,43,133,138,144,146,150,152,154],$VJ=[1,80],$VK=[1,79],$VL=[1,81],$VM=[6,8,14,17,36,43,51,52,53,71,72,74,77,89,109,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$VN=[6,8,14,17,34,36,43,51,52,53,71,72,74,77,89,109,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$VO=[1,102],$VP=[1,100],$VQ=[1,101],$VR=[1,96],$VS=[1,97],$VT=[1,98],$VU=[1,99],$VV=[1,103],$VW=[1,104],$VX=[1,105],$VY=[1,106],$VZ=[1,107],$V_=[1,108],$V$=[2,107],$V01=[6,8,14,17,34,36,43,45,51,52,53,71,72,74,77,79,81,89,93,94,95,96,97,98,99,100,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V11=[6,8,14,17,34,36,43,45,51,52,53,71,72,74,77,79,81,89,93,94,95,96,97,98,99,100,101,103,105,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V21=[2,82],$V31=[1,110],$V41=[1,109],$V51=[1,117],$V61=[2,65],$V71=[1,119],$V81=[16,35,37,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$V91=[16,29,35,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,121,195],$Va1=[1,162],$Vb1=[1,164],$Vc1=[17,43],$Vd1=[6,8,14,16,17,34,35,36,43,45,50,51,52,53,56,57,59,60,62,71,72,74,76,77,79,81,82,83,84,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,103,105,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182,192,193,194,195],$Ve1=[2,60],$Vf1=[1,174],$Vg1=[1,172],$Vh1=[6,8,138,146],$Vi1=[16,35,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vj1=[6,8,14,17,138,144,146,150,152,154],$Vk1=[6,8,14,17,36,43,51,52,53,71,72,74,77,89,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vl1=[6,8,14,17,34,36,43,51,52,53,71,72,74,77,89,93,94,95,96,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vm1=[6,8,14,17,34,36,43,51,52,53,71,72,74,77,79,81,89,93,94,95,96,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$Vn1=[16,35,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vo1=[16,35,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vp1=[6,8,14,17,43,157],$Vq1=[16,35,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vr1=[71,74,77],$Vs1=[16,35,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$Vt1=[1,239],$Vu1=[6,8,14,17],$Vv1=[1,257],$Vw1=[1,253],$Vx1=[2,199],$Vy1=[1,261],$Vz1=[1,262],$VA1=[6,8,14,17,43,129,135,138,144,146,150,152,154,182],$VB1=[1,264],$VC1=[1,267],$VD1=[1,268],$VE1=[1,269],$VF1=[1,270],$VG1=[2,176],$VH1=[1,266],$VI1=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182],$VJ1=[6,8,14,17,135,138,144,146,150,152,154],$VK1=[1,282],$VL1=[2,181],$VM1=[170,173],$VN1=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],$VO1=[2,201],$VP1=[1,287],$VQ1=[1,299],$VR1=[1,307],$VS1=[1,308],$VT1=[1,309],$VU1=[6,8,14,17,138,146,150,152,154],$VV1=[1,319],$VW1=[1,325],$VX1=[1,326],$VY1=[2,206],$VZ1=[1,337],$V_1=[16,152],$V$1=[6,8,14,17,152,154],$V02=[1,353];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"main\":3,\"selectClause\":4,\"semicolonOpt\":5,\"EOF\":6,\"unionClause\":7,\";\":8,\"unionClauseNotParenthesized\":9,\"unionClauseParenthesized\":10,\"order_by_opt\":11,\"limit_opt\":12,\"selectClauseParenthesized\":13,\"UNION\":14,\"distinctOpt\":15,\"(\":16,\")\":17,\"SELECT\":18,\"highPriorityOpt\":19,\"maxStateMentTimeOpt\":20,\"straightJoinOpt\":21,\"sqlSmallResultOpt\":22,\"sqlBigResultOpt\":23,\"sqlBufferResultOpt\":24,\"sqlCacheOpt\":25,\"sqlCalcFoundRowsOpt\":26,\"selectExprList\":27,\"selectDataSetOpt\":28,\"ALL\":29,\"DISTINCT\":30,\"DISTINCTROW\":31,\"HIGH_PRIORITY\":32,\"MAX_STATEMENT_TIME\":33,\"=\":34,\"NUMERIC\":35,\"STRAIGHT_JOIN\":36,\"SQL_SMALL_RESULT\":37,\"SQL_BIG_RESULT\":38,\"SQL_BUFFER_RESULT\":39,\"SQL_CACHE\":40,\"SQL_NO_CACHE\":41,\"SQL_CALC_FOUND_ROWS\":42,\",\":43,\"selectExpr\":44,\"*\":45,\"selectExprStar\":46,\"expr\":47,\"selectExprAliasOpt\":48,\"identifier\":49,\"DOT\":50,\"AS\":51,\"IDENTIFIER\":52,\"STRING\":53,\"string\":54,\"number\":55,\"EXPONENT_NUMERIC\":56,\"HEX_NUMERIC\":57,\"boolean\":58,\"TRUE\":59,\"FALSE\":60,\"null\":61,\"NULL\":62,\"literal\":63,\"place_holder\":64,\"function_call\":65,\"function_call_param_list\":66,\"function_call_param\":67,\"identifier_list\":68,\"case_expr_opt\":69,\"when_then_list\":70,\"WHEN\":71,\"THEN\":72,\"case_when_else\":73,\"ELSE\":74,\"case_when\":75,\"CASE\":76,\"END\":77,\"simple_expr_prefix\":78,\"+\":79,\"simple_expr\":80,\"-\":81,\"~\":82,\"!\":83,\"BINARY\":84,\"expr_list\":85,\"ROW\":86,\"EXISTS\":87,\"{\":88,\"}\":89,\"||\":90,\"WILDCARD\":91,\"bit_expr\":92,\"|\":93,\"&\":94,\"<<\":95,\">>\":96,\"/\":97,\"DIV\":98,\"MOD\":99,\"%\":100,\"^\":101,\"not_opt\":102,\"NOT\":103,\"escape_opt\":104,\"ESCAPE\":105,\"predicate\":106,\"IN\":107,\"BETWEEN\":108,\"AND\":109,\"SOUNDS\":110,\"LIKE\":111,\"REGEXP\":112,\"comparison_operator\":113,\">=\":114,\">\":115,\"<=\":116,\"<\":117,\"<>\":118,\"!=\":119,\"sub_query_data_set_opt\":120,\"ANY\":121,\"boolean_primary\":122,\"IS\":123,\"boolean_extra\":124,\"UNKNOWN\":125,\"OR\":126,\"XOR\":127,\"where_opt\":128,\"WHERE\":129,\"group_by_opt\":130,\"group_by\":131,\"roll_up_opt\":132,\"WITH\":133,\"ROLLUP\":134,\"GROUP_BY\":135,\"group_by_order_by_item_list\":136,\"order_by\":137,\"ORDER_BY\":138,\"group_by_order_by_item\":139,\"sort_opt\":140,\"ASC\":141,\"DESC\":142,\"having_opt\":143,\"HAVING\":144,\"limit\":145,\"LIMIT\":146,\"OFFSET\":147,\"procedure_opt\":148,\"procedure\":149,\"PROCEDURE\":150,\"for_update_lock_in_share_mode_opt\":151,\"FOR\":152,\"UPDATE\":153,\"LOCK\":154,\"SHARE\":155,\"MODE\":156,\"FROM\":157,\"table_references\":158,\"partitionOpt\":159,\"escaped_table_reference\":160,\"table_reference\":161,\"OJ\":162,\"join_inner_cross\":163,\"INNER\":164,\"CROSS\":165,\"left_right\":166,\"LEFT\":167,\"RIGHT\":168,\"out_opt\":169,\"OUTER\":170,\"left_right_out_opt\":171,\"join_table\":172,\"JOIN\":173,\"table_factor\":174,\"join_condition\":175,\"on_join_condition\":176,\"NATURAL\":177,\"join_condition_opt\":178,\"ON\":179,\"USING\":180,\"partition_names\":181,\"PARTITION\":182,\"aliasOpt\":183,\"index_or_key\":184,\"INDEX\":185,\"KEY\":186,\"for_opt\":187,\"identifier_list_opt\":188,\"index_hint_list_opt\":189,\"index_hint_list\":190,\"index_hint\":191,\"USE\":192,\"IGNORE\":193,\"FORCE\":194,\"PLACE_HOLDER\":195,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"EOF\",8:\";\",14:\"UNION\",16:\"(\",17:\")\",18:\"SELECT\",29:\"ALL\",30:\"DISTINCT\",31:\"DISTINCTROW\",32:\"HIGH_PRIORITY\",33:\"MAX_STATEMENT_TIME\",34:\"=\",35:\"NUMERIC\",36:\"STRAIGHT_JOIN\",37:\"SQL_SMALL_RESULT\",38:\"SQL_BIG_RESULT\",39:\"SQL_BUFFER_RESULT\",40:\"SQL_CACHE\",41:\"SQL_NO_CACHE\",42:\"SQL_CALC_FOUND_ROWS\",43:\",\",45:\"*\",50:\"DOT\",51:\"AS\",52:\"IDENTIFIER\",53:\"STRING\",56:\"EXPONENT_NUMERIC\",57:\"HEX_NUMERIC\",59:\"TRUE\",60:\"FALSE\",62:\"NULL\",71:\"WHEN\",72:\"THEN\",74:\"ELSE\",76:\"CASE\",77:\"END\",79:\"+\",81:\"-\",82:\"~\",83:\"!\",84:\"BINARY\",86:\"ROW\",87:\"EXISTS\",88:\"{\",89:\"}\",90:\"||\",91:\"WILDCARD\",93:\"|\",94:\"&\",95:\"<<\",96:\">>\",97:\"/\",98:\"DIV\",99:\"MOD\",100:\"%\",101:\"^\",103:\"NOT\",105:\"ESCAPE\",107:\"IN\",108:\"BETWEEN\",109:\"AND\",110:\"SOUNDS\",111:\"LIKE\",112:\"REGEXP\",114:\">=\",115:\">\",116:\"<=\",117:\"<\",118:\"<>\",119:\"!=\",121:\"ANY\",123:\"IS\",125:\"UNKNOWN\",126:\"OR\",127:\"XOR\",129:\"WHERE\",133:\"WITH\",134:\"ROLLUP\",135:\"GROUP_BY\",138:\"ORDER_BY\",141:\"ASC\",142:\"DESC\",144:\"HAVING\",146:\"LIMIT\",147:\"OFFSET\",150:\"PROCEDURE\",152:\"FOR\",153:\"UPDATE\",154:\"LOCK\",155:\"SHARE\",156:\"MODE\",157:\"FROM\",162:\"OJ\",164:\"INNER\",165:\"CROSS\",167:\"LEFT\",168:\"RIGHT\",170:\"OUTER\",173:\"JOIN\",177:\"NATURAL\",179:\"ON\",180:\"USING\",182:\"PARTITION\",185:\"INDEX\",186:\"KEY\",192:\"USE\",193:\"IGNORE\",194:\"FORCE\",195:\"PLACE_HOLDER\"},\nproductions_: [0,[3,3],[3,3],[5,1],[5,0],[7,1],[7,3],[10,4],[10,4],[13,3],[9,4],[9,4],[4,12],[15,1],[15,1],[15,1],[15,0],[19,1],[19,0],[20,3],[20,0],[21,1],[21,0],[22,1],[22,0],[23,1],[23,0],[24,1],[24,0],[25,0],[25,1],[25,1],[26,1],[26,0],[27,3],[27,1],[44,1],[44,1],[44,2],[46,3],[48,0],[48,2],[48,1],[48,2],[48,1],[54,1],[55,1],[55,1],[55,1],[58,1],[58,1],[61,1],[63,1],[63,1],[63,1],[63,1],[63,1],[65,4],[66,3],[66,1],[67,0],[67,1],[67,1],[67,2],[67,1],[49,1],[49,3],[68,1],[68,3],[69,0],[69,1],[70,4],[70,5],[73,0],[73,2],[75,5],[78,2],[78,2],[78,2],[78,2],[78,2],[80,1],[80,1],[80,1],[80,1],[80,3],[80,4],[80,3],[80,4],[80,4],[80,1],[80,3],[80,3],[80,5],[92,1],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[92,3],[102,0],[102,1],[104,0],[104,2],[106,1],[106,6],[106,6],[106,6],[106,4],[106,5],[106,4],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[120,1],[120,1],[122,1],[122,4],[122,3],[122,6],[124,1],[124,1],[47,1],[47,4],[47,2],[47,3],[47,3],[47,3],[85,1],[85,3],[128,0],[128,2],[130,0],[130,1],[132,0],[132,2],[131,3],[11,0],[11,1],[137,3],[136,1],[136,3],[139,2],[140,0],[140,1],[140,1],[143,0],[143,2],[145,2],[145,4],[145,4],[12,0],[12,1],[148,0],[148,1],[149,2],[151,0],[151,2],[151,4],[28,0],[28,10],[158,1],[158,3],[160,1],[160,4],[163,0],[163,1],[163,1],[166,1],[166,1],[169,0],[169,1],[171,0],[171,2],[172,4],[172,5],[172,4],[172,6],[172,5],[178,0],[178,1],[176,2],[175,1],[175,4],[161,1],[161,1],[181,1],[181,3],[159,0],[159,4],[183,0],[183,2],[183,1],[184,1],[184,1],[187,0],[187,2],[187,2],[187,2],[188,0],[188,1],[189,0],[189,1],[190,1],[190,3],[191,6],[191,6],[191,6],[174,4],[174,4],[174,3],[64,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: case 2:\n return {nodeType: 'Main', value: $$[$0-2], hasSemicolon: $$[$0-1]}; \nbreak;\ncase 3: case 146:\nthis.$ = true;\nbreak;\ncase 4:\nthis.$ = false;\nbreak;\ncase 5: case 13: case 14: case 15: case 17: case 19: case 21: case 23: case 25: case 27: case 30: case 31: case 32: case 37: case 52: case 53: case 54: case 55: case 56: case 61: case 62: case 64: case 70: case 74: case 81: case 82: case 83: case 84: case 90: case 94: case 108: case 110: case 111: case 118: case 119: case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 131: case 133: case 142: case 144: case 149: case 155: case 156: case 158: case 163: case 165: case 166: case 177: case 178: case 179: case 180: case 182: case 191: case 193: case 195: case 196: case 204: case 205: case 211: case 213:\nthis.$ = $$[$0];\nbreak;\ncase 6:\nthis.$ = $$[$0-2], this.$.orderBy = $$[$0-1], this.$.limit = $$[$0];;\nbreak;\ncase 7: case 8:\nthis.$ = { type: 'Union', left: $$[$0-3], distinctOpt: $$[$0-1], right: $$[$0] };;\nbreak;\ncase 9:\nthis.$ = { type: 'SelectParenthesized', value: $$[$0-1] };;\nbreak;\ncase 10: case 11:\nthis.$ = { type: 'Union', left: $$[$0-3], distinctOpt: $$[$0-1], right: $$[$0] };\nbreak;\ncase 12:\n\n        this.$ = {\n          type: 'Select',\n          distinctOpt: $$[$0-10],\n          highPriorityOpt: $$[$0-9],\n          maxStateMentTimeOpt: $$[$0-8],\n          straightJoinOpt: $$[$0-7],\n          sqlSmallResultOpt: $$[$0-6],\n          sqlBigResultOpt: $$[$0-5],\n          sqlBufferResultOpt: $$[$0-4],\n          sqlCacheOpt: $$[$0-3],\n          sqlCalcFoundRowsOpt: $$[$0-2],\n          selectItems: $$[$0-1],\n          from: $$[$0].from,\n          partition: $$[$0].partition,\n          where: $$[$0].where,\n          groupBy: $$[$0].groupBy,\n          having: $$[$0].having,\n          orderBy: $$[$0].orderBy,\n          limit: $$[$0].limit,\n          procedure: $$[$0].procedure,\n          updateLockMode: $$[$0].updateLockMode\n        }\n      \nbreak;\ncase 16: case 18: case 20: case 22: case 24: case 26: case 28: case 29: case 33: case 60: case 69: case 73: case 107: case 109: case 141: case 143: case 145: case 148: case 154: case 157: case 162: case 164: case 167: case 176: case 181: case 190: case 199: case 206: case 210: case 212:\nthis.$ = null;\nbreak;\ncase 34:\n $$[$0-2].value.push($$[$0]); \nbreak;\ncase 35:\nthis.$ = { type: 'SelectExpr', value: [ $$[$0] ] };\nbreak;\ncase 36: case 65:\nthis.$ = { type: 'Identifier', value: $$[$0] };\nbreak;\ncase 38:\nthis.$ = $$[$0-1]; this.$.alias = $$[$0].alias; this.$.hasAs = $$[$0].hasAs;;\nbreak;\ncase 39: case 66:\nthis.$ = $$[$0-2]; $$[$0-2].value += '.' + $$[$0];\nbreak;\ncase 40: case 201:\nthis.$ = {alias: null, hasAs: null};\nbreak;\ncase 41: case 43:\nthis.$ = {alias: $$[$0], hasAs: true};\nbreak;\ncase 42:\nthis.$ = {alias: $$[$0], hasAs: false};\nbreak;\ncase 44:\nthis.$ = {alias: $$[$01], hasAs: false};\nbreak;\ncase 45:\nthis.$ = { type: 'String', value: $$[$0] };\nbreak;\ncase 46: case 47: case 48:\nthis.$ = { type: 'Number', value: $$[$0] };\nbreak;\ncase 49:\nthis.$ = { type: 'Boolean', value: 'TRUE' };\nbreak;\ncase 50:\nthis.$ = { type: 'Boolean', value: 'FALSE' };\nbreak;\ncase 51:\nthis.$ = { type: 'Null', value: 'null' };\nbreak;\ncase 57:\nthis.$ = {type: 'FunctionCall', name: $$[$0-3], params: $$[$0-1]};\nbreak;\ncase 58:\n $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; \nbreak;\ncase 59:\nthis.$ = [$$[$0]];;\nbreak;\ncase 63:\nthis.$ = { type: 'FunctionCallParam', distinctOpt: $$[$0-1], value: $$[$0] };\nbreak;\ncase 67:\nthis.$ = { type: 'IdentifierList', value: [ $$[$0] ] };\nbreak;\ncase 68: case 173:\nthis.$ = $$[$0-2]; $$[$0-2].value.push($$[$0]);;\nbreak;\ncase 71:\nthis.$ = { type: 'WhenThenList', value: [ { when: $$[$0-2], then: $$[$0] } ] };;\nbreak;\ncase 72:\nthis.$ = $$[$0-4]; this.$.value.push({ when: $$[$0-2], then: $$[$0] });;\nbreak;\ncase 75:\nthis.$ = { type: 'CaseWhen', caseExprOpt: $$[$0-3], whenThenList: $$[$0-2], else: $$[$0-1] };\nbreak;\ncase 76: case 77: case 78: case 79: case 80:\nthis.$ = { type: 'Prefix', prefix: $$[$0-1], value: $$[$0] };\nbreak;\ncase 85:\nthis.$ = { type: 'SimpleExprParentheses', value: $$[$0-1] };\nbreak;\ncase 86:\nthis.$ = { type: 'SimpleExprParentheses', value: $$[$0-2], hasRow: true };\nbreak;\ncase 87:\nthis.$ = { type: 'SubQuery', value: $$[$0-1] };\nbreak;\ncase 88:\nthis.$ = { type: 'SubQuery', value: $$[$0-1], hasExists: true };\nbreak;\ncase 89:\nthis.$ = { type: 'IdentifierExpr', identifier: $$[$0-2], value: $$[$0-1] };\nbreak;\ncase 91:\nthis.$ = { type: 'StartsWithExpr', value: $$[$0-2] };\nbreak;\ncase 92:\nthis.$ = { type: 'EndsWithExpr', value: $$[$0] };\nbreak;\ncase 93:\nthis.$ = { type: 'ContainsExpr', value: $$[$0-2] };\nbreak;\ncase 95:\nthis.$ = { type: 'BitExpression', operator: '|', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 96:\nthis.$ = { type: 'BitExpression', operator: '&', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 97:\nthis.$ = { type: 'BitExpression', operator: '<<', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 98:\nthis.$ = { type: 'BitExpression', operator: '>>', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 99:\nthis.$ = { type: 'BitExpression', operator: '+', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 100:\nthis.$ = { type: 'BitExpression', operator: '-', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 101:\nthis.$ = { type: 'BitExpression', operator: '*', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 102:\nthis.$ = { type: 'BitExpression', operator: '/', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 103:\nthis.$ = { type: 'BitExpression', operator: 'DIV', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 104:\nthis.$ = { type: 'BitExpression', operator: 'MOD', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 105:\nthis.$ = { type: 'BitExpression', operator: '%', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 106:\nthis.$ = { type: 'BitExpression', operator: '^', left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 112:\nthis.$ = { type: 'InSubQueryPredicate', hasNot: $$[$0-4], left: $$[$0-5] ,right: $$[$0-1] };\nbreak;\ncase 113:\nthis.$ = { type: 'InExpressionListPredicate', hasNot: $$[$0-4], left: $$[$0-5], right: $$[$0-1] };\nbreak;\ncase 114:\nthis.$ = { type: 'BetweenPredicate', hasNot: $$[$0-4], left: $$[$0-5], right: { left: $$[$0-2], right: $$[$0] } };\nbreak;\ncase 115:\nthis.$ = { type: 'SoundsLikePredicate', hasNot: false, left: $$[$0-3], right: $$[$0] };\nbreak;\ncase 116:\nthis.$ = { type: 'LikePredicate', hasNot: $$[$0-3], left: $$[$0-4], right: $$[$0-1], escape: $$[$0] };\nbreak;\ncase 117:\nthis.$ = { type: 'RegexpPredicate', hasNot: $$[$0-2], left: $$[$0-3], right: $$[$0] };\nbreak;\ncase 128:\nthis.$ = { type: 'IsNullBooleanPrimary', hasNot: $$[$0-1] , value: $$[$0-3] };\nbreak;\ncase 129:\nthis.$ = { type: 'ComparisonBooleanPrimary', left: $$[$0-2], operator: $$[$0-1], right: $$[$0] };\nbreak;\ncase 130:\nthis.$ = { type: 'ComparisonSubQueryBooleanPrimary', operator: $$[$0-4], subQueryOpt: $$[$0-3], left: $$[$0-5], right: $$[$0-1] };\nbreak;\ncase 132:\nthis.$ = { type: 'BooleanExtra', value: $$[$0] };\nbreak;\ncase 134:\nthis.$ = { type: 'IsExpression', hasNot: $$[$0-1], left: $$[$0-3], right: $$[$0] };\nbreak;\ncase 135:\nthis.$ = { type: 'NotExpression', value: $$[$0] };\nbreak;\ncase 136:\nthis.$ = { type: 'OrExpression', operator: $$[$0-1], left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 137:\nthis.$ = { type: 'AndExpression', operator: $$[$0-1], left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 138:\nthis.$ = { type: 'XorExpression', operator: $$[$0-1], left: $$[$0-2], right: $$[$0] };\nbreak;\ncase 139:\nthis.$ = { type: 'ExpressionList', value: [ $$[$0] ] };\nbreak;\ncase 140: case 215:\nthis.$ = $$[$0-2]; this.$.value.push($$[$0]);;\nbreak;\ncase 147:\nthis.$ = { type: 'GroupBy', value: $$[$0-1], rollUp: $$[$0] };\nbreak;\ncase 150:\nthis.$ = { type: 'OrderBy', value: $$[$0-1], rollUp: $$[$0] };\nbreak;\ncase 151: case 197:\nthis.$ = [ $$[$0] ];\nbreak;\ncase 152:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);;\nbreak;\ncase 153:\nthis.$ = { type: 'GroupByOrderByItem', value: $$[$0-1], sortOpt: $$[$0] };\nbreak;\ncase 159:\nthis.$ = { type: 'Limit', value: [ $$[$0] ] };\nbreak;\ncase 160:\nthis.$ = { type: 'Limit', value: [ $$[$0-2], $$[$0] ] };\nbreak;\ncase 161:\nthis.$ = { type: 'Limit', value: [ $$[$0], $$[$0-2] ], offsetMode: true };\nbreak;\ncase 168:\nthis.$ = $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 169:\nthis.$ = $$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 170:\nthis.$ = {};\nbreak;\ncase 171:\nthis.$ = { from: $$[$0-8], partition: $$[$0-7], where: $$[$0-6], groupBy: $$[$0-5], having: $$[$0-4], orderBy: $$[$0-3], limit: $$[$0-2], procedure: $$[$0-1], updateLockMode: $$[$0] };\nbreak;\ncase 172:\nthis.$ = { type: 'TableReferences', value: [ $$[$0] ] };\nbreak;\ncase 174:\nthis.$ = { type: 'TableReference', value: $$[$0] };\nbreak;\ncase 175:\nthis.$ = { type: 'TableReference', hasOj: true, value: $$[$0-1] };\nbreak;\ncase 183:\nthis.$ = { leftRight: null, outOpt: null };\nbreak;\ncase 184:\nthis.$ = { leftRight: $$[$0-1], outOpt: $$[$0] };\nbreak;\ncase 185:\nthis.$ = { type: 'InnerCrossJoinTable', innerCrossOpt: $$[$0-2], left: $$[$0-3], right: $$[$0], condition: null };\nbreak;\ncase 186:\nthis.$ = { type: 'InnerCrossJoinTable', innerCrossOpt: $$[$0-3], left: $$[$0-4], right: $$[$0-1], condition: $$[$0] };\nbreak;\ncase 187:\nthis.$ = { type: 'StraightJoinTable', left: $$[$0-3], right: $$[$0-1], condition: $$[$0] };\nbreak;\ncase 188:\nthis.$ = { type: 'LeftRightJoinTable', leftRight: $$[$0-4], outOpt: $$[$0-3], left: $$[$0-5], right: $$[$0-1], condition: $$[$0] };\nbreak;\ncase 189:\nthis.$ = { type: 'NaturalJoinTable', leftRight: $$[$0-2].leftRight, outOpt: $$[$0-2].outOpt, left: $$[$0-4], right: $$[$0] };\nbreak;\ncase 192:\nthis.$ = { type: 'OnJoinCondition', value: $$[$0] };\nbreak;\ncase 194:\nthis.$ = { type: 'UsingJoinCondition', value: $$[$0-1] };\nbreak;\ncase 198:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\ncase 200:\nthis.$ = { type: 'Partitions', value: $$[$0-1] };\nbreak;\ncase 202:\nthis.$ = { hasAs: true, alias: $$[$0] };\nbreak;\ncase 203:\nthis.$ = { hasAs: false, alias: $$[$0] };\nbreak;\ncase 207: case 208: case 209:\nthis.$ = { type: 'ForOptIndexHint', value: $$[$0] };\nbreak;\ncase 214:\nthis.$ = { type: 'IndexHintList', value: [ $$[$0] ] };\nbreak;\ncase 216:\nthis.$ = { type: 'UseIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] };\nbreak;\ncase 217:\nthis.$ = { type: 'IgnoreIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] };\nbreak;\ncase 218:\nthis.$ = { type: 'ForceIndexHint', value: $$[$0-1], forOpt: $$[$0-3], indexOrKey: $$[$0-4] };\nbreak;\ncase 219:\nthis.$ = { type: 'TableFactor', value: $$[$0-3], partition: $$[$0-2], alias: $$[$0-1].alias, hasAs: $$[$0-1].hasAs, indexHintOpt: $$[$0] };\nbreak;\ncase 220:\nthis.$ = { type: 'TableFactor', value: { type: 'SubQuery', value: $$[$0-2] }, alias: $$[$0].alias, hasAs: $$[$0].hasAs};\nbreak;\ncase 221:\nthis.$ = $$[$0-1]; this.$.hasParentheses = true;\nbreak;\ncase 222:\nthis.$ = { type: 'PlaceHolder', value: $$[$0], param: $$[$0].slice(2, -1)};\nbreak;\n}\n},\ntable: [{3:1,4:2,7:3,9:5,10:6,13:7,16:$V0,18:$V1},{1:[3]},{5:9,6:$V2,8:$V3,14:$V4},{5:12,6:$V2,8:$V3},o([16,32,33,35,36,37,38,39,40,41,42,45,52,53,56,57,59,60,62,76,79,81,82,83,84,86,87,88,91,103,195],$V5,{15:13,29:$V6,30:$V7,31:$V8}),o($V9,[2,5]),o([6,8,146],$Va,{11:17,137:18,138:$Vb}),{14:$Vc},{4:21,18:$V1},{6:[1,22]},{15:23,18:$V5,29:$V6,30:$V7,31:$V8},{6:[2,3]},{6:[1,24]},o($Vd,[2,18],{19:25,32:[1,26]}),o($Ve,[2,13]),o($Ve,[2,14]),o($Ve,[2,15]),o($V9,$Vf,{12:27,145:28,146:$Vg}),o($Vh,[2,149]),{16:$Vi,35:$Vj,47:32,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,136:30,139:31,195:$VC},{15:68,16:$V5,29:$V6,30:$V7,31:$V8},{17:[1,69]},{1:[2,1]},{4:70,9:71,18:$V1},{1:[2,2]},o($VD,[2,20],{20:72,33:[1,73]}),o($Vd,[2,17]),o($V9,[2,6]),o($VE,[2,163]),{35:[1,74]},o($Vh,$VF,{132:75,43:$VG,133:$VH}),o($VI,[2,151]),o($VI,[2,154],{140:78,109:$VJ,126:$VK,127:$VL,141:[1,82],142:[1,83]}),o($VM,[2,133],{113:85,34:[1,86],114:[1,87],115:[1,88],116:[1,89],117:[1,90],118:[1,91],119:[1,92],123:[1,84]}),{16:$Vi,35:$Vj,47:93,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($VN,[2,127]),o($VN,[2,111],{102:94,45:$VO,79:$VP,81:$VQ,93:$VR,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY,101:$VZ,103:$V_,107:$V$,108:$V$,111:$V$,112:$V$,110:[1,95]}),o($V01,[2,94]),o($V11,[2,81]),o($V11,$V21,{50:$V31,90:$V41}),o($V11,[2,83]),o($V11,[2,84]),{4:112,16:$Vi,18:$V1,35:$Vj,47:113,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:111,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:[1,114]},{16:[1,115]},{49:116,52:$V51},o($V11,[2,90]),{90:[1,118]},o($V11,[2,52]),o($V11,[2,53]),o($V11,[2,54]),o($V11,[2,55]),o($V11,[2,56]),o([6,8,14,17,34,36,43,45,50,51,52,53,71,72,74,77,79,81,89,90,93,94,95,96,97,98,99,100,101,103,105,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],$V61,{16:$V71}),{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:120,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:121,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:122,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:123,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:124,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,47:126,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,69:125,71:[2,69],75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($V11,[2,45]),o($V11,[2,46]),o($V11,[2,47]),o($V11,[2,48]),o($V11,[2,49]),o($V11,[2,50]),o($V11,[2,51]),o($V11,[2,222]),{10:128,13:127,16:$V0},o([6,8,14,138,146],[2,9]),o($V9,[2,10],{14:$V4}),o($V9,[2,11]),o($V81,[2,22],{21:129,36:[1,130]}),{34:[1,131]},o($VE,[2,159],{43:[1,132],147:[1,133]}),o($Vh,[2,150]),{16:$Vi,35:$Vj,47:32,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,139:134,195:$VC},{134:[1,135]},o($VI,[2,153]),{16:$Vi,35:$Vj,47:136,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:$Vi,35:$Vj,47:137,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:$Vi,35:$Vj,47:138,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($VI,[2,155]),o($VI,[2,156]),o([59,60,62,125],$V$,{102:139,103:$V_}),{16:$Vi,29:[1,142],35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,106:140,120:141,121:[1,143],195:$VC},o($V91,[2,118]),o($V91,[2,119]),o($V91,[2,120]),o($V91,[2,121]),o($V91,[2,122]),o($V91,[2,123]),o($V91,[2,124]),o($VM,[2,135]),{107:[1,144],108:[1,145],111:[1,146],112:[1,147]},{111:[1,148]},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:149,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:150,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:151,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:152,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:153,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:154,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:155,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:156,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:157,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:158,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:159,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:160,195:$VC},o([59,60,62,107,108,111,112,125],[2,108]),{91:[1,161]},{52:$Va1},{17:[1,163],43:$Vb1},{17:[1,165]},o($Vc1,[2,139],{109:$VJ,126:$VK,127:$VL}),{16:$Vi,35:$Vj,47:113,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:166,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{4:167,18:$V1},{16:$Vi,35:$Vj,47:168,49:39,50:$V31,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vd1,$V61),{49:169,52:$V51},o($Vc1,$Ve1,{122:33,106:35,92:36,80:37,63:38,65:40,78:41,75:46,54:48,55:49,58:50,61:51,64:52,66:170,67:171,46:173,47:175,49:176,16:$Vi,30:$Vf1,35:$Vj,45:$Vg1,52:$Vk,53:$Vl,56:$Vm,57:$Vn,59:$Vo,60:$Vp,62:$Vq,76:$Vr,79:$Vs,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,103:$VB,195:$VC}),o($V11,[2,76]),o($V11,[2,77]),o($V11,[2,78]),o($V11,[2,79]),o($V11,[2,80]),{70:177,71:[1,178]},{71:[2,70],109:$VJ,126:$VK,127:$VL},o($Vh1,[2,7],{14:$Vc}),o($Vh1,[2,8]),o($Vi1,[2,24],{22:179,37:[1,180]}),o($V81,[2,21]),{35:[1,181]},{35:[1,182]},{35:[1,183]},o($VI,[2,152]),o($Vj1,[2,146]),o($Vk1,[2,136],{109:$VJ}),o($VM,[2,137]),o($Vk1,[2,138],{109:$VJ}),{58:186,59:$Vo,60:$Vp,62:[1,185],124:184,125:[1,187]},o($VN,[2,129]),{16:[1,188]},{16:[2,125]},{16:[2,126]},{16:[1,189]},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:190,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:191,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:192,195:$VC},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:193,195:$VC},o([6,8,14,17,34,36,43,51,52,53,71,72,74,77,89,93,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,95],{45:$VO,79:$VP,81:$VQ,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY,101:$VZ}),o([6,8,14,17,34,36,43,51,52,53,71,72,74,77,89,93,94,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,96],{45:$VO,79:$VP,81:$VQ,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY}),o($Vl1,[2,97],{45:$VO,79:$VP,81:$VQ,97:$VV,98:$VW,99:$VX,100:$VY}),o($Vl1,[2,98],{45:$VO,79:$VP,81:$VQ,97:$VV,98:$VW,99:$VX,100:$VY}),o($Vm1,[2,99],{45:$VO,97:$VV,98:$VW,99:$VX,100:$VY}),o($Vm1,[2,100],{45:$VO,97:$VV,98:$VW,99:$VX,100:$VY}),o($V01,[2,101]),o($V01,[2,102]),o($V01,[2,103]),o($V01,[2,104]),o($V01,[2,105]),o([6,8,14,17,34,36,43,51,52,53,71,72,74,77,89,93,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,106],{45:$VO,79:$VP,81:$VQ,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY}),o($V11,[2,91]),o($Vd1,[2,66]),o($V11,[2,85]),{16:$Vi,35:$Vj,47:194,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($V11,[2,87]),{17:[1,195],43:$Vb1},{17:[1,196]},{89:[1,197],109:$VJ,126:$VK,127:$VL},o($V11,[2,92],{50:$V31,90:[1,198]}),{17:[1,199],43:[1,200]},o($Vc1,[2,59]),o($Vc1,[2,61]),o($Vc1,[2,62]),{16:$Vi,35:$Vj,47:201,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vc1,[2,64],{109:$VJ,126:$VK,127:$VL}),o([6,8,14,17,34,43,45,51,52,53,79,81,93,94,95,96,97,98,99,100,101,103,107,108,109,110,111,112,114,115,116,117,118,119,123,126,127,157],$V21,{50:[1,202],90:$V41}),{71:[1,204],73:203,74:[1,205],77:[2,73]},{16:$Vi,35:$Vj,47:206,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vn1,[2,26],{23:207,38:[1,208]}),o($Vi1,[2,23]),o($VD,[2,19]),o($VE,[2,160]),o($VE,[2,161]),o($VM,[2,134]),o($VN,[2,128]),o($VM,[2,131]),o($VM,[2,132]),{4:209,18:$V1},{4:210,16:$Vi,18:$V1,35:$Vj,47:113,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,85:211,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{45:$VO,79:$VP,81:$VQ,93:$VR,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY,101:$VZ,109:[1,212]},o($VN,[2,109],{104:213,105:[1,214]}),o($VN,[2,117],{45:$VO,79:$VP,81:$VQ,93:$VR,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY,101:$VZ}),o($VN,[2,115],{45:$VO,79:$VP,81:$VQ,93:$VR,94:$VS,95:$VT,96:$VU,97:$VV,98:$VW,99:$VX,100:$VY,101:$VZ}),o($Vc1,[2,140],{109:$VJ,126:$VK,127:$VL}),o($V11,[2,86]),o($V11,[2,88]),o($V11,[2,89]),{91:[1,215]},o($V11,[2,57]),o($Vc1,$Ve1,{122:33,106:35,92:36,80:37,63:38,65:40,78:41,75:46,54:48,55:49,58:50,61:51,64:52,46:173,47:175,49:176,67:216,16:$Vi,30:$Vf1,35:$Vj,45:$Vg1,52:$Vk,53:$Vl,56:$Vm,57:$Vn,59:$Vo,60:$Vp,62:$Vq,76:$Vr,79:$Vs,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,103:$VB,195:$VC}),o($Vc1,[2,63],{109:$VJ,126:$VK,127:$VL}),{45:[1,217],52:$Va1},{77:[1,218]},{16:$Vi,35:$Vj,47:219,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:$Vi,35:$Vj,47:220,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{72:[1,221],109:$VJ,126:$VK,127:$VL},o($Vo1,[2,28],{24:222,39:[1,223]}),o($Vn1,[2,25]),{17:[1,224]},{17:[1,225]},{17:[1,226],43:$Vb1},{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,106:227,195:$VC},o($VN,[2,116]),{16:$Vi,35:$Vj,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:228,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,195:$VC},o($V11,[2,93]),o($Vc1,[2,58]),o($Vp1,[2,39]),o($V11,[2,75]),{72:[1,229],109:$VJ,126:$VK,127:$VL},{77:[2,74],109:$VJ,126:$VK,127:$VL},{16:$Vi,35:$Vj,47:230,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vq1,[2,29],{25:231,40:[1,232],41:[1,233]}),o($Vo1,[2,27]),o($VN,[2,130]),o($VN,[2,112]),o($VN,[2,113]),o($VN,[2,114]),o($VN,[2,110]),{16:$Vi,35:$Vj,47:234,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vr1,[2,71],{109:$VJ,126:$VK,127:$VL}),o($Vs1,[2,33],{26:235,42:[1,236]}),o($Vq1,[2,30]),o($Vq1,[2,31]),o($Vr1,[2,72],{109:$VJ,126:$VK,127:$VL}),{16:$Vi,27:237,35:$Vj,44:238,45:$Vt1,46:240,47:241,49:176,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vs1,[2,32]),o($Vu1,[2,170],{28:242,43:[1,243],157:[1,244]}),o($Vp1,[2,35]),o($Vp1,[2,36]),o($Vp1,[2,37]),o($Vp1,[2,40],{48:245,51:[1,246],52:[1,247],53:[1,248],109:$VJ,126:$VK,127:$VL}),o($Vu1,[2,12]),{16:$Vi,35:$Vj,44:249,45:$Vt1,46:240,47:241,49:176,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:$Vv1,49:256,52:$V51,88:$Vw1,158:250,160:251,161:252,172:255,174:254},o($Vp1,[2,38]),{52:[1,258],53:[1,259]},o($Vp1,[2,42]),o($Vp1,[2,44]),o($Vp1,[2,34]),o([6,8,14,17,129,135,138,144,146,150,152,154],$Vx1,{159:260,43:$Vy1,182:$Vz1}),o($VA1,[2,172]),o($VA1,[2,174],{163:263,166:265,36:$VB1,164:$VC1,165:$VD1,167:$VE1,168:$VF1,173:$VG1,177:$VH1}),{162:[1,271]},o($VI1,[2,195]),o($VI1,[2,196]),o([6,8,14,17,36,43,51,52,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,192,193,194],$Vx1,{159:272,50:$V31,182:$Vz1}),{4:273,16:$Vv1,18:$V1,49:256,52:$V51,88:$Vw1,158:274,160:251,161:252,172:255,174:254},o($Vp1,[2,41]),o($Vp1,[2,43]),o($VJ1,[2,141],{128:275,129:[1,276]}),{16:$Vv1,49:256,52:$V51,88:$Vw1,160:277,161:252,172:255,174:254},{16:[1,278]},{173:[1,279]},{16:$Vv1,49:256,52:$V51,174:280},{169:281,170:$VK1,173:$VL1},{166:284,167:$VE1,168:$VF1,171:283,173:[2,183]},{173:[2,177]},{173:[2,178]},o($VM1,[2,179]),o($VM1,[2,180]),{16:$Vv1,49:256,52:$V51,161:285,172:255,174:254},o($VN1,$VO1,{183:286,49:288,51:$VP1,52:$V51}),{17:[1,289]},{17:[1,290],43:$Vy1},o($Vj1,[2,143],{130:291,131:292,135:[1,293]}),{16:$Vi,35:$Vj,47:294,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($VA1,[2,173]),{49:296,52:$V51,181:295},{16:$Vv1,49:256,52:$V51,174:297},{176:298,179:$VQ1},{173:[1,300]},{173:[2,182]},{173:[1,301]},{169:302,170:$VK1,173:$VL1},{36:$VB1,89:[1,303],163:263,164:$VC1,165:$VD1,166:265,167:$VE1,168:$VF1,173:$VG1,177:$VH1},o($VI1,[2,212],{189:304,190:305,191:306,192:$VR1,193:$VS1,194:$VT1}),{49:310,52:$V51},o($VN1,[2,203],{50:$V31}),o($VI1,$VO1,{49:288,183:311,51:$VP1,52:$V51}),o($VI1,[2,221]),o($VU1,[2,157],{143:312,144:[1,313]}),o($Vj1,[2,144]),{16:$Vi,35:$Vj,47:32,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,136:314,139:31,195:$VC},o($VJ1,[2,142],{109:$VJ,126:$VK,127:$VL}),{17:[1,315],43:[1,316]},o($Vc1,[2,197],{50:$V31}),o([6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,182],[2,185],{175:317,176:318,179:$VQ1,180:$VV1}),o($VI1,[2,187]),{16:$Vi,35:$Vj,47:320,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},{16:$Vv1,49:256,52:$V51,161:321,172:255,174:254},{16:$Vv1,49:256,52:$V51,174:322},{173:[2,184]},o($VA1,[2,175]),o($VI1,[2,219]),o($VI1,[2,213]),o($VI1,[2,214]),{184:324,185:$VW1,186:$VX1},{184:327,185:$VW1,186:$VX1},{184:328,185:$VW1,186:$VX1},o($VN1,[2,202],{50:$V31}),o($VI1,[2,220]),o($Vh,$Va,{137:18,11:329,138:$Vb}),{16:$Vi,35:$Vj,47:330,49:39,52:$Vk,53:$Vl,54:48,55:49,56:$Vm,57:$Vn,58:50,59:$Vo,60:$Vp,61:51,62:$Vq,63:38,64:52,65:40,75:46,76:$Vr,78:41,79:$Vs,80:37,81:$Vt,82:$Vu,83:$Vv,84:$Vw,86:$Vx,87:$Vy,88:$Vz,91:$VA,92:36,103:$VB,106:35,122:33,195:$VC},o($Vj1,$VF,{132:331,43:$VG,133:$VH}),o([6,8,14,17,36,43,51,52,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],[2,200]),{49:332,52:$V51},o($VI1,[2,186]),o($VI1,[2,193]),{16:[1,333]},o($VI1,[2,192],{109:$VJ,126:$VK,127:$VL}),{36:$VB1,163:263,164:$VC1,165:$VD1,166:265,167:$VE1,168:$VF1,173:$VG1,175:334,176:318,177:$VH1,179:$VQ1,180:$VV1},o($VI1,[2,189]),{191:335,192:$VR1,193:$VS1,194:$VT1},{16:$VY1,152:$VZ1,187:336},o($V_1,[2,204]),o($V_1,[2,205]),{16:$VY1,152:$VZ1,187:338},{16:$VY1,152:$VZ1,187:339},o($VE,$Vf,{145:28,12:340,146:$Vg}),o($VU1,[2,158],{109:$VJ,126:$VK,127:$VL}),o($Vj1,[2,147]),o($Vc1,[2,198],{50:$V31}),{49:342,52:$V51,68:341},o($VI1,[2,188]),o($VI1,[2,215]),{16:[1,343]},{135:[1,346],138:[1,345],173:[1,344]},{16:[1,347]},{16:[1,348]},o($V$1,[2,164],{148:349,149:350,150:[1,351]}),{17:[1,352],43:$V02},o($Vc1,[2,67],{50:$V31}),{17:[2,210],49:342,52:$V51,68:355,188:354},{16:[2,207]},{16:[2,208]},{16:[2,209]},{49:342,52:$V51,68:356},{49:342,52:$V51,68:357},o($Vu1,[2,167],{151:358,152:[1,359],154:[1,360]}),o($V$1,[2,165]),{52:[1,362],65:361},o($VI1,[2,194]),{49:363,52:$V51},{17:[1,364]},{17:[2,211],43:$V02},{17:[1,365],43:$V02},{17:[1,366],43:$V02},o($Vu1,[2,171]),{153:[1,367]},{107:[1,368]},o($V$1,[2,166]),{16:$V71},o($Vc1,[2,68],{50:$V31}),o($VI1,[2,216]),o($VI1,[2,217]),o($VI1,[2,218]),o($Vu1,[2,168]),{155:[1,369]},{156:[1,370]},o($Vu1,[2,169])],\ndefaultActions: {11:[2,3],22:[2,1],24:[2,2],142:[2,125],143:[2,126],267:[2,177],268:[2,178],282:[2,182],302:[2,184],344:[2,207],345:[2,208],346:[2,209]},\nparseError: function parseError (str, hash) {\n    if (hash.recoverable) {\n        this.trace(str);\n    } else {\n        var error = new Error(str);\n        error.hash = hash;\n        throw error;\n    }\n},\nparse: function parse(input) {\n    var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    var args = lstack.slice.call(arguments, 1);\n    var lexer = Object.create(this.lexer);\n    var sharedState = { yy: {} };\n    for (var k in this.yy) {\n        if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n            sharedState.yy[k] = this.yy[k];\n        }\n    }\n    lexer.setInput(input, sharedState.yy);\n    sharedState.yy.lexer = lexer;\n    sharedState.yy.parser = this;\n    if (typeof lexer.yylloc == 'undefined') {\n        lexer.yylloc = {};\n    }\n    var yyloc = lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = lexer.options && lexer.options.ranges;\n    if (typeof sharedState.yy.parseError === 'function') {\n        this.parseError = sharedState.yy.parseError;\n    } else {\n        this.parseError = Object.getPrototypeOf(this).parseError;\n    }\n    function popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n    var lex = function () {\n        var token;\n        token = lexer.lex() || EOF;\n        if (typeof token !== 'number') {\n            token = self.symbols_[token] || token;\n        }\n        return token;\n    };\n    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n    while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n            action = this.defaultActions[state];\n        } else {\n            if (symbol === null || typeof symbol == 'undefined') {\n                symbol = lex();\n            }\n            action = table[state] && table[state][symbol];\n        }\n                    if (typeof action === 'undefined' || !action.length || !action[0]) {\n                var errStr = '';\n                expected = [];\n                for (p in table[state]) {\n                    if (this.terminals_[p] && p > TERROR) {\n                        expected.push('\\'' + this.terminals_[p] + '\\'');\n                    }\n                }\n                if (lexer.showPosition) {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n                } else {\n                    errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n                }\n                this.parseError(errStr, {\n                    text: lexer.match,\n                    token: this.terminals_[symbol] || symbol,\n                    line: lexer.yylineno,\n                    loc: yyloc,\n                    expected: expected\n                });\n            }\n        if (action[0] instanceof Array && action.length > 1) {\n            throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n        }\n        switch (action[0]) {\n        case 1:\n            stack.push(symbol);\n            vstack.push(lexer.yytext);\n            lstack.push(lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = lexer.yyleng;\n                yytext = lexer.yytext;\n                yylineno = lexer.yylineno;\n                yyloc = lexer.yylloc;\n                if (recovering > 0) {\n                    recovering--;\n                }\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\n            }\n            break;\n        case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {\n                first_line: lstack[lstack.length - (len || 1)].first_line,\n                last_line: lstack[lstack.length - 1].last_line,\n                first_column: lstack[lstack.length - (len || 1)].first_column,\n                last_column: lstack[lstack.length - 1].last_column\n            };\n            if (ranges) {\n                yyval._$.range = [\n                    lstack[lstack.length - (len || 1)].range[0],\n                    lstack[lstack.length - 1].range[1]\n                ];\n            }\n            r = this.performAction.apply(yyval, [\n                yytext,\n                yyleng,\n                yylineno,\n                sharedState.yy,\n                action[1],\n                vstack,\n                lstack\n            ].concat(args));\n            if (typeof r !== 'undefined') {\n                return r;\n            }\n            if (len) {\n                stack = stack.slice(0, -1 * len * 2);\n                vstack = vstack.slice(0, -1 * len);\n                lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n        case 3:\n            return true;\n        }\n    }\n    return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n        if (this.yy.parser) {\n            this.yy.parser.parseError(str, hash);\n        } else {\n            throw new Error(str);\n        }\n    },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n        this.yy = yy || this.yy || {};\n        this._input = input;\n        this._more = this._backtrack = this.done = false;\n        this.yylineno = this.yyleng = 0;\n        this.yytext = this.matched = this.match = '';\n        this.conditionStack = ['INITIAL'];\n        this.yylloc = {\n            first_line: 1,\n            first_column: 0,\n            last_line: 1,\n            last_column: 0\n        };\n        if (this.options.ranges) {\n            this.yylloc.range = [0,0];\n        }\n        this.offset = 0;\n        return this;\n    },\n\n// consumes and returns one char from the input\ninput:function () {\n        var ch = this._input[0];\n        this.yytext += ch;\n        this.yyleng++;\n        this.offset++;\n        this.match += ch;\n        this.matched += ch;\n        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno++;\n            this.yylloc.last_line++;\n        } else {\n            this.yylloc.last_column++;\n        }\n        if (this.options.ranges) {\n            this.yylloc.range[1]++;\n        }\n\n        this._input = this._input.slice(1);\n        return ch;\n    },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length - len);\n        //this.yyleng -= len;\n        this.offset -= len;\n        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n        this.match = this.match.substr(0, this.match.length - 1);\n        this.matched = this.matched.substr(0, this.matched.length - 1);\n\n        if (lines.length - 1) {\n            this.yylineno -= lines.length - 1;\n        }\n        var r = this.yylloc.range;\n\n        this.yylloc = {\n            first_line: this.yylloc.first_line,\n            last_line: this.yylineno + 1,\n            first_column: this.yylloc.first_column,\n            last_column: lines ?\n                (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n                 + oldLines[oldLines.length - lines.length].length - lines[0].length :\n              this.yylloc.first_column - len\n        };\n\n        if (this.options.ranges) {\n            this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n        }\n        this.yyleng = this.yytext.length;\n        return this;\n    },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n        this._more = true;\n        return this;\n    },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n        if (this.options.backtrack_lexer) {\n            this._backtrack = true;\n        } else {\n            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n                text: \"\",\n                token: null,\n                line: this.yylineno\n            });\n\n        }\n        return this;\n    },\n\n// retain first n characters of the match\nless:function (n) {\n        this.unput(this.match.slice(n));\n    },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n        var past = this.matched.substr(0, this.matched.length - this.match.length);\n        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n    },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n        var next = this.match;\n        if (next.length < 20) {\n            next += this._input.substr(0, 20-next.length);\n        }\n        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n    },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n        var pre = this.pastInput();\n        var c = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n    },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n        var token,\n            lines,\n            backup;\n\n        if (this.options.backtrack_lexer) {\n            // save context\n            backup = {\n                yylineno: this.yylineno,\n                yylloc: {\n                    first_line: this.yylloc.first_line,\n                    last_line: this.last_line,\n                    first_column: this.yylloc.first_column,\n                    last_column: this.yylloc.last_column\n                },\n                yytext: this.yytext,\n                match: this.match,\n                matches: this.matches,\n                matched: this.matched,\n                yyleng: this.yyleng,\n                offset: this.offset,\n                _more: this._more,\n                _input: this._input,\n                yy: this.yy,\n                conditionStack: this.conditionStack.slice(0),\n                done: this.done\n            };\n            if (this.options.ranges) {\n                backup.yylloc.range = this.yylloc.range.slice(0);\n            }\n        }\n\n        lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno += lines.length;\n        }\n        this.yylloc = {\n            first_line: this.yylloc.last_line,\n            last_line: this.yylineno + 1,\n            first_column: this.yylloc.last_column,\n            last_column: lines ?\n                         lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n                         this.yylloc.last_column + match[0].length\n        };\n        this.yytext += match[0];\n        this.match += match[0];\n        this.matches = match;\n        this.yyleng = this.yytext.length;\n        if (this.options.ranges) {\n            this.yylloc.range = [this.offset, this.offset += this.yyleng];\n        }\n        this._more = false;\n        this._backtrack = false;\n        this._input = this._input.slice(match[0].length);\n        this.matched += match[0];\n        token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n        if (this.done && this._input) {\n            this.done = false;\n        }\n        if (token) {\n            return token;\n        } else if (this._backtrack) {\n            // recover context\n            for (var k in backup) {\n                this[k] = backup[k];\n            }\n            return false; // rule action called reject() implying the next rule should be tested instead.\n        }\n        return false;\n    },\n\n// return next match in input\nnext:function () {\n        if (this.done) {\n            return this.EOF;\n        }\n        if (!this._input) {\n            this.done = true;\n        }\n\n        var token,\n            match,\n            tempMatch,\n            index;\n        if (!this._more) {\n            this.yytext = '';\n            this.match = '';\n        }\n        var rules = this._currentRules();\n        for (var i = 0; i < rules.length; i++) {\n            tempMatch = this._input.match(this.rules[rules[i]]);\n            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                match = tempMatch;\n                index = i;\n                if (this.options.backtrack_lexer) {\n                    token = this.test_match(tempMatch, rules[i]);\n                    if (token !== false) {\n                        return token;\n                    } else if (this._backtrack) {\n                        match = false;\n                        continue; // rule action called reject() implying a rule MISmatch.\n                    } else {\n                        // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n                        return false;\n                    }\n                } else if (!this.options.flex) {\n                    break;\n                }\n            }\n        }\n        if (match) {\n            token = this.test_match(match, rules[index]);\n            if (token !== false) {\n                return token;\n            }\n            // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n            return false;\n        }\n        if (this._input === \"\") {\n            return this.EOF;\n        } else {\n            return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n                text: \"\",\n                token: null,\n                line: this.yylineno\n            });\n        }\n    },\n\n// return next match that has a token\nlex:function lex () {\n        var r = this.next();\n        if (r) {\n            return r;\n        } else {\n            return this.lex();\n        }\n    },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n        this.conditionStack.push(condition);\n    },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n        var n = this.conditionStack.length - 1;\n        if (n > 0) {\n            return this.conditionStack.pop();\n        } else {\n            return this.conditionStack[0];\n        }\n    },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n        if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n            return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n        } else {\n            return this.conditions[\"INITIAL\"].rules;\n        }\n    },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n        n = this.conditionStack.length - 1 - Math.abs(n || 0);\n        if (n >= 0) {\n            return this.conditionStack[n];\n        } else {\n            return \"INITIAL\";\n        }\n    },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n        this.begin(condition);\n    },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n        return this.conditionStack.length;\n    },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip comments */\nbreak;\ncase 1:/* skip sql comments */\nbreak;\ncase 2:/* skip sql comments */\nbreak;\ncase 3:/* skip whitespace */\nbreak;\ncase 4:return 195\nbreak;\ncase 5:return 52\nbreak;\ncase 6:return 52\nbreak;\ncase 7:return 52\nbreak;\ncase 8:return 18\nbreak;\ncase 9:return 29\nbreak;\ncase 10:return 121\nbreak;\ncase 11:return 30\nbreak;\ncase 12:return 31\nbreak;\ncase 13:return 32\nbreak;\ncase 14:return 33\nbreak;\ncase 15:return 36\nbreak;\ncase 16:return 37\nbreak;\ncase 17:return 38\nbreak;\ncase 18:return 39\nbreak;\ncase 19:return 40\nbreak;\ncase 20:return 41\nbreak;\ncase 21:return 42\nbreak;\ncase 22:return 51\nbreak;\ncase 23:return 59\nbreak;\ncase 24:return 60\nbreak;\ncase 25:return 62\nbreak;\ncase 26:return 'COLLATE'\nbreak;\ncase 27:return 84\nbreak;\ncase 28:return 86\nbreak;\ncase 29:return 87\nbreak;\ncase 30:return 76\nbreak;\ncase 31:return 71\nbreak;\ncase 32:return 72\nbreak;\ncase 33:return 74\nbreak;\ncase 34:return 77\nbreak;\ncase 35:return 98\nbreak;\ncase 36:return 99\nbreak;\ncase 37:return 103\nbreak;\ncase 38:return 108\nbreak;\ncase 39:return 107\nbreak;\ncase 40:return 110\nbreak;\ncase 41:return 111\nbreak;\ncase 42:return 105\nbreak;\ncase 43:return 112\nbreak;\ncase 44:return 123\nbreak;\ncase 45:return 125\nbreak;\ncase 46:return 109\nbreak;\ncase 47:return 126\nbreak;\ncase 48:return 127\nbreak;\ncase 49:return 157\nbreak;\ncase 50:return 182\nbreak;\ncase 51:return 192\nbreak;\ncase 52:return 185\nbreak;\ncase 53:return 186\nbreak;\ncase 54:return 152\nbreak;\ncase 55:return 173\nbreak;\ncase 56:return 138\nbreak;\ncase 57:return 135\nbreak;\ncase 58:return 193\nbreak;\ncase 59:return 194\nbreak;\ncase 60:return 164\nbreak;\ncase 61:return 165\nbreak;\ncase 62:return 179\nbreak;\ncase 63:return 180\nbreak;\ncase 64:return 167\nbreak;\ncase 65:return 168\nbreak;\ncase 66:return 170\nbreak;\ncase 67:return 177\nbreak;\ncase 68:return 129\nbreak;\ncase 69:return 141\nbreak;\ncase 70:return 142\nbreak;\ncase 71:return 133\nbreak;\ncase 72:return 134\nbreak;\ncase 73:return 144\nbreak;\ncase 74:return 147\nbreak;\ncase 75:return 150\nbreak;\ncase 76:return 153\nbreak;\ncase 77:return 154\nbreak;\ncase 78:return 155\nbreak;\ncase 79:return 156\nbreak;\ncase 80:return 162\nbreak;\ncase 81:return 146\nbreak;\ncase 82:return 14\nbreak;\ncase 83:return 43\nbreak;\ncase 84:return 34\nbreak;\ncase 85:return 16\nbreak;\ncase 86:return 17\nbreak;\ncase 87:return 82\nbreak;\ncase 88:return 119\nbreak;\ncase 89:return 83\nbreak;\ncase 90:return 90\nbreak;\ncase 91:return 93\nbreak;\ncase 92:return 94\nbreak;\ncase 93:return 79\nbreak;\ncase 94:return 81\nbreak;\ncase 95:return 45\nbreak;\ncase 96:return 97\nbreak;\ncase 97:return 100\nbreak;\ncase 98:return 101\nbreak;\ncase 99:return 96\nbreak;\ncase 100:return 114\nbreak;\ncase 101:return 115\nbreak;\ncase 102:return 95\nbreak;\ncase 103:return '<=>'\nbreak;\ncase 104:return 116\nbreak;\ncase 105:return 118\nbreak;\ncase 106:return 117\nbreak;\ncase 107:return 88\nbreak;\ncase 108:return 89\nbreak;\ncase 109:return 8\nbreak;\ncase 110:return 91\nbreak;\ncase 111:return 53\nbreak;\ncase 112:return 57\nbreak;\ncase 113:return 35\nbreak;\ncase 114:return 56\nbreak;\ncase 115:return 52\nbreak;\ncase 116:return 50\nbreak;\ncase 117:return 52\nbreak;\ncase 118:return 6\nbreak;\ncase 119:return 'INVALID'\nbreak;\n}\n},\nrules: [/^(?:[/][*](.|\\n)*?[*][/])/i,/^(?:[-][-]\\s.*\\n)/i,/^(?:[#]\\s.*\\n)/i,/^(?:\\s+)/i,/^(?:[$][{](.*?)[}])/i,/^(?:([`][^`]+[`])+)/i,/^(?:([\"][^\"]+[\"])+)/i,/^(?:[\\[]([^\\]]|\\]\\])+[\\]])/i,/^(?:SELECT\\b)/i,/^(?:ALL\\b)/i,/^(?:ANY\\b)/i,/^(?:DISTINCT\\b)/i,/^(?:DISTINCTROW\\b)/i,/^(?:HIGH_PRIORITY\\b)/i,/^(?:MAX_STATEMENT_TIME\\b)/i,/^(?:STRAIGHT_JOIN\\b)/i,/^(?:SQL_SMALL_RESULT\\b)/i,/^(?:SQL_BIG_RESULT\\b)/i,/^(?:SQL_BUFFER_RESULT\\b)/i,/^(?:SQL_CACHE\\b)/i,/^(?:SQL_NO_CACHE\\b)/i,/^(?:SQL_CALC_FOUND_ROWS\\b)/i,/^(?:AS\\b)/i,/^(?:TRUE\\b)/i,/^(?:FALSE\\b)/i,/^(?:NULL\\b)/i,/^(?:COLLATE\\b)/i,/^(?:BINARY\\b)/i,/^(?:ROW\\b)/i,/^(?:EXISTS\\b)/i,/^(?:CASE\\b)/i,/^(?:WHEN\\b)/i,/^(?:THEN\\b)/i,/^(?:ELSE\\b)/i,/^(?:END\\b)/i,/^(?:DIV\\b)/i,/^(?:MOD\\b)/i,/^(?:NOT\\b)/i,/^(?:BETWEEN\\b)/i,/^(?:IN\\b)/i,/^(?:SOUNDS\\b)/i,/^(?:LIKE\\b)/i,/^(?:ESCAPE\\b)/i,/^(?:REGEXP\\b)/i,/^(?:IS\\b)/i,/^(?:UNKNOWN\\b)/i,/^(?:AND\\b)/i,/^(?:OR\\b)/i,/^(?:XOR\\b)/i,/^(?:FROM\\b)/i,/^(?:PARTITION\\b)/i,/^(?:USE\\b)/i,/^(?:INDEX\\b)/i,/^(?:KEY\\b)/i,/^(?:FOR\\b)/i,/^(?:JOIN\\b)/i,/^(?:ORDER\\s+BY\\b)/i,/^(?:GROUP\\s+BY\\b)/i,/^(?:IGNORE\\b)/i,/^(?:FORCE\\b)/i,/^(?:INNER\\b)/i,/^(?:CROSS\\b)/i,/^(?:ON\\b)/i,/^(?:USING\\b)/i,/^(?:LEFT\\b)/i,/^(?:RIGHT\\b)/i,/^(?:OUTER\\b)/i,/^(?:NATURAL\\b)/i,/^(?:WHERE\\b)/i,/^(?:ASC\\b)/i,/^(?:DESC\\b)/i,/^(?:WITH\\b)/i,/^(?:ROLLUP\\b)/i,/^(?:HAVING\\b)/i,/^(?:OFFSET\\b)/i,/^(?:PROCEDURE\\b)/i,/^(?:UPDATE\\b)/i,/^(?:LOCK\\b)/i,/^(?:SHARE\\b)/i,/^(?:MODE\\b)/i,/^(?:OJ\\b)/i,/^(?:LIMIT\\b)/i,/^(?:UNION\\b)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\\()/i,/^(?:\\))/i,/^(?:~)/i,/^(?:!=)/i,/^(?:!)/i,/^(?:\\|\\|)/i,/^(?:\\|)/i,/^(?:&)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:\\*)/i,/^(?:\\/)/i,/^(?:%)/i,/^(?:\\^)/i,/^(?:>>)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<<)/i,/^(?:<=>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:;)/i,/^(?:['](%)+['])/i,/^(?:(['][^']*['])+)/i,/^(?:[0][x][0-9a-fA-F]+)/i,/^(?:[-]?[0-9]+(\\.[0-9]+)?)/i,/^(?:[-]?[0-9]+(\\.[0-9]+)?[eE][-+]?[0-9]+(\\.[0-9]+)?)/i,/^(?:[a-zA-Z_@#\\uff3f\\u4e00-\\u9fa5][a-zA-Z0-9_$@#\\uff3f\\u4e00-\\u9fa5]*)/i,/^(?:\\.)/i,/^(?:([`])(?:(?=(\\\\?))\\2.)*?\\1)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n  this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nexport { sqlParser };","import type { DefaultCombinatorNameExtended, DefaultOperatorName } from '../../types/index.noReact';\nimport type {\n  AndOperator,\n  ComparisonOperator,\n  MixedAndXorOrList,\n  OrOperator,\n  SQLAndExpression,\n  SQLExpression,\n  SQLIdentifier,\n  SQLLiteralValue,\n  SQLOrExpression,\n  SQLSignedNumberValue,\n  SQLWhereObjectAny,\n  SQLXorExpression,\n  XorOperator,\n} from './types';\n\nexport const isSQLLiteralValue = (v?: SQLWhereObjectAny): v is SQLLiteralValue =>\n  v?.type === 'String' || v?.type === 'Number' || v?.type === 'Boolean';\n\nexport const isSQLSignedNumber = (v?: SQLWhereObjectAny): v is SQLSignedNumberValue =>\n  v?.type === 'Prefix' && (v.prefix === '+' || v.prefix === '-') && v.value.type === 'Number';\n\nexport const isSQLLiteralOrSignedNumberValue = (\n  v?: SQLWhereObjectAny\n): v is SQLLiteralValue | SQLSignedNumberValue => isSQLLiteralValue(v) || isSQLSignedNumber(v);\n\nexport const isSQLIdentifier = (v?: SQLWhereObjectAny): v is SQLIdentifier =>\n  v?.type === 'Identifier';\n\nexport const isWildcardsOnly = (sqlExpr: SQLExpression) =>\n  isSQLLiteralValue(sqlExpr) && sqlExpr.type === 'String' && /^['\"]?%+['\"]?$/.test(sqlExpr.value);\n\nexport const getParamString = (param: any) => {\n  switch (typeof param) {\n    case 'number':\n      return `${param}`;\n    case 'boolean':\n      return param ? 'TRUE' : 'FALSE';\n    default:\n      return `'${param}'`;\n  }\n};\n\nexport const getFieldName = (f: string | SQLIdentifier) => {\n  const fieldName = typeof f === 'string' ? f : f.value;\n\n  if (fieldName.startsWith('`') && fieldName.endsWith('`')) {\n    return fieldName.replaceAll(/(^`|`$)/g, '').replaceAll('``', '`');\n  } else if (fieldName.startsWith('\"') && fieldName.endsWith('\"')) {\n    return fieldName.replaceAll(/(^\"|\"$)/g, '').replaceAll('\"\"', '\"');\n  } else if (fieldName.startsWith('[') && fieldName.endsWith(']')) {\n    return fieldName.replaceAll(/(^\\[|\\]$)/g, '').replaceAll(']]', ']');\n  }\n\n  return fieldName;\n};\n\nconst normalizeCombinator = (c: AndOperator | OrOperator | XorOperator) =>\n  c.replace('&&', 'and').replace('||', 'or').toLowerCase() as DefaultCombinatorNameExtended;\n\nexport const normalizeOperator = (op: ComparisonOperator, flip?: boolean): DefaultOperatorName => {\n  if (flip) {\n    if (op === '<') return '>';\n    if (op === '<=') return '>=';\n    if (op === '>') return '<';\n    if (op === '>=') return '<=';\n  }\n  if (op === '<>') return '!=';\n  return op;\n};\n\nexport const evalSQLLiteralValue = (valueObj: SQLLiteralValue | SQLSignedNumberValue) => {\n  if (valueObj.type === 'String') {\n    const valueString: string = valueObj.value;\n    if (\n      (valueString.startsWith(`'`) && valueString.endsWith(`'`)) ||\n      (valueString.startsWith(`\"`) && valueString.endsWith(`\"`))\n    ) {\n      const innerString = valueString.substring(1, valueString.length - 1);\n      return innerString.replaceAll(/''/gm, \"'\");\n    }\n    // Theoretically we should never get here since all strings will be wrapped in\n    // single or double quotes, but if we do get here we return the string as is.\n    return valueString;\n  } else if (valueObj.type === 'Boolean') {\n    return valueObj.value.toLowerCase() === 'true';\n  } else if (isSQLSignedNumber(valueObj)) {\n    return parseFloat(`${valueObj.prefix}${valueObj.value.value}`);\n  }\n  return parseFloat(valueObj.value);\n};\n\nexport const generateFlatAndOrList = (\n  expr: SQLAndExpression | SQLOrExpression | SQLXorExpression\n): (DefaultCombinatorNameExtended | SQLExpression)[] => {\n  const combinator = normalizeCombinator(expr.operator);\n  if (\n    expr.left.type === 'AndExpression' ||\n    expr.left.type === 'OrExpression' ||\n    expr.left.type === 'XorExpression'\n  ) {\n    return [...generateFlatAndOrList(expr.left), combinator, expr.right];\n  }\n  return [expr.left, combinator, expr.right];\n};\n\nexport const generateMixedAndXorOrList = (\n  expr: SQLAndExpression | SQLOrExpression | SQLXorExpression\n): MixedAndXorOrList => {\n  const arr = generateFlatAndOrList(expr);\n  let currentLevel = 0;\n  const orArray: MixedAndXorOrList = { combinator: 'or', expressions: [] };\n  let xorArray: MixedAndXorOrList = { combinator: 'xor', expressions: [] };\n  let andArray: MixedAndXorOrList = { combinator: 'and', expressions: [] };\n\n  for (let i = 0; i < arr.length - 2; i += 2) {\n    let levelDelta = 0;\n\n    // istanbul ignore else\n    if (arr[i + 1] === 'and') {\n      levelDelta = 2 - currentLevel;\n    } else if (arr[i + 1] === 'xor') {\n      levelDelta = 1 - currentLevel;\n    } else if (arr[i + 1] === 'or') {\n      levelDelta = 0 - currentLevel;\n    }\n\n    if (levelDelta > 0) {\n      for (let d = 0; d < levelDelta; d++) {\n        currentLevel += 1;\n        // istanbul ignore else\n        if (currentLevel === 1) {\n          xorArray = { combinator: 'xor', expressions: [] };\n          if (levelDelta === 1) {\n            xorArray.expressions.push(arr[i] as SQLExpression);\n            if (i >= arr.length - 3 || arr[i + 3] === 'xor') {\n              xorArray.expressions.push(arr[i + 2] as SQLExpression);\n            }\n          }\n        } else if (currentLevel === 2) {\n          andArray = { combinator: 'and', expressions: [] };\n          andArray.expressions.push(arr[i] as SQLExpression, arr[i + 2] as SQLExpression);\n        }\n      }\n    } else if (levelDelta < 0) {\n      for (let d = 0; d > levelDelta; d--) {\n        currentLevel -= 1;\n        // istanbul ignore else\n        if (currentLevel === 1) {\n          xorArray.expressions.push(andArray);\n          if (levelDelta === -1) {\n            xorArray.expressions.push(arr[i + 2] as SQLExpression);\n          }\n        } else if (currentLevel === 0) {\n          orArray.expressions.push(xorArray);\n          if (i >= arr.length - 3) {\n            orArray.expressions.push(arr[i + 2] as SQLExpression);\n          }\n        }\n      }\n    } else {\n      // If here, then levelDelta === 0\n      // istanbul ignore else\n      if (currentLevel === 0) {\n        if (i === 0 || (i > 3 && arr[i - 3] !== 'or')) {\n          orArray.expressions.push(arr[i] as SQLExpression);\n        }\n        if (i >= arr.length - 3 || arr[i + 3] === 'or') {\n          orArray.expressions.push(arr[i + 2] as SQLExpression);\n        }\n      } else if (currentLevel === 1) {\n        xorArray.expressions.push(arr[i + 2] as SQLExpression);\n      } else if (currentLevel === 2) {\n        andArray.expressions.push(arr[i + 2] as SQLExpression);\n      }\n    }\n  }\n\n  // Close up shop\n  if (currentLevel === 2) {\n    xorArray.expressions.push(andArray);\n    currentLevel -= 1;\n  }\n  if (currentLevel === 1) {\n    orArray.expressions.push(xorArray);\n    currentLevel -= 1;\n  }\n\n  // Collapse single-element arrays, in case there are only AND, only XOR, or only XOR/AND combinators\n  if (orArray.expressions.length === 1 && 'combinator' in orArray.expressions[0]) {\n    if (\n      orArray.expressions[0].expressions.length === 1 &&\n      'combinator' in orArray.expressions[0].expressions[0]\n    ) {\n      return orArray.expressions[0].expressions[0] as MixedAndXorOrList;\n    } else {\n      return orArray.expressions[0] as MixedAndXorOrList;\n    }\n  }\n\n  const returnArray: MixedAndXorOrList = { combinator: 'or', expressions: [] };\n\n  // Collapse multi-element arrays, in case XOR level is unnecessary\n  for (const o of orArray.expressions) {\n    if ('combinator' in o) {\n      // If here, then o is an XOR structure\n      if ('combinator' in o.expressions[0] && o.expressions.length === 1) {\n        // If here, then o.expressions[0] is an AND structure\n        // that should supplant its parent XOR structure\n        returnArray.expressions.push(o.expressions[0]);\n      } else {\n        returnArray.expressions.push(o);\n      }\n    } else {\n      returnArray.expressions.push(o);\n    }\n  }\n\n  return returnArray;\n};\n","import type {\n  DefaultOperatorName,\n  DefaultRuleGroupArray,\n  DefaultRuleGroupICArray,\n  DefaultRuleGroupType,\n  DefaultRuleGroupTypeAny,\n  DefaultRuleGroupTypeIC,\n  DefaultRuleType,\n  ParseSQLOptions,\n} from '../../types/index.noReact';\nimport { fieldIsValidUtil, getFieldsArray } from '../parserUtils';\nimport { sqlParser } from './sqlParser';\nimport type { MixedAndXorOrList, SQLExpression, SQLIdentifier } from './types';\nimport {\n  evalSQLLiteralValue,\n  generateFlatAndOrList,\n  generateMixedAndXorOrList,\n  getFieldName,\n  getParamString,\n  isSQLIdentifier,\n  isSQLLiteralOrSignedNumberValue,\n  normalizeOperator,\n} from './utils';\n\n/**\n * Converts a SQL `SELECT` statement into a query suitable for\n * the QueryBuilder component's `query` or `defaultQuery` props.\n */\nfunction parseSQL(sql: string): DefaultRuleGroupType;\nfunction parseSQL(\n  sql: string,\n  options: Omit<ParseSQLOptions, 'independentCombinators'> & {\n    independentCombinators?: false;\n  }\n): DefaultRuleGroupType;\nfunction parseSQL(\n  sql: string,\n  options: Omit<ParseSQLOptions, 'independentCombinators'> & {\n    independentCombinators: true;\n  }\n): DefaultRuleGroupTypeIC;\nfunction parseSQL(sql: string, options: ParseSQLOptions = {}): DefaultRuleGroupTypeAny {\n  const { params, paramPrefix, independentCombinators, fields, getValueSources } = options;\n  let sqlString = /^[ \\t\\n\\r\\s]*SELECT\\b/i.test(sql)\n    ? sql\n    : /^[ \\t\\n\\r\\s]*WHERE\\b/i.test(sql)\n    ? `SELECT * FROM t ${sql}`\n    : `SELECT * FROM t WHERE ${sql}`;\n  let ic = false;\n  const fieldsFlat = getFieldsArray(fields);\n\n  ic = !!independentCombinators;\n  /* istanbul ignore else */\n  if (params) {\n    if (Array.isArray(params)) {\n      let i = 0;\n      sqlString = sqlString.replace(/\\?/g, () => {\n        const paramString = getParamString(params[i]);\n        i++;\n        return paramString;\n      });\n    } else {\n      const keys = Object.keys(params);\n      const prefix = paramPrefix ?? ':';\n      keys.forEach(p => {\n        sqlString = sqlString.replace(\n          new RegExp(`\\\\${prefix}${p}\\\\b`, 'ig'),\n          getParamString(params[p])\n        );\n      });\n    }\n  }\n\n  const fieldIsValid = (\n    fieldName: string,\n    operator: DefaultOperatorName,\n    subordinateFieldName?: string\n  ) =>\n    fieldIsValidUtil({\n      fieldName,\n      fieldsFlat,\n      operator,\n      subordinateFieldName,\n      getValueSources,\n    });\n\n  const processSQLExpression = (\n    expr: SQLExpression\n  ): DefaultRuleType | DefaultRuleGroupTypeAny | null => {\n    if (expr.type === 'NotExpression') {\n      const val =\n        expr.value.type === 'SimpleExprParentheses' ? expr.value.value.value[0] : expr.value;\n      const rule = processSQLExpression(val);\n      /* instanbul ignore else */\n      if (rule) {\n        if ('rules' in rule) {\n          return { ...rule, not: true };\n        }\n        return {\n          rules: [rule],\n          not: true,\n          ...(!ic && { combinator: 'and' }),\n        };\n      }\n    } else if (expr.type === 'SimpleExprParentheses') {\n      const ex = expr.value.value[0];\n      if (\n        ex.type === 'AndExpression' ||\n        ex.type === 'OrExpression' ||\n        ex.type === 'XorExpression'\n      ) {\n        return processSQLExpression(ex);\n      }\n      const rule = processSQLExpression(ex) as DefaultRuleType;\n      return rule ? { rules: [rule], ...(ic ? {} : { combinator: 'and' }) } : null;\n    } else if (\n      expr.type === 'AndExpression' ||\n      expr.type === 'OrExpression' ||\n      expr.type === 'XorExpression'\n    ) {\n      if (ic) {\n        const andOrList = generateFlatAndOrList(expr);\n        const rules = andOrList.map(v => {\n          if (typeof v === 'string') {\n            return v;\n          }\n          return processSQLExpression(v);\n        });\n        // Bail out completely if any rules in the list were invalid\n        // so as not to return an incorrect and/or sequence\n        if (rules.includes(null)) {\n          return null;\n        }\n        return {\n          rules: rules as DefaultRuleGroupICArray,\n        };\n      }\n      const andXorOrList = generateMixedAndXorOrList(expr);\n      const { combinator } = andXorOrList;\n      const rules = andXorOrList.expressions\n        .map((obj): DefaultRuleGroupType | DefaultRuleType | null => {\n          if ('combinator' in obj) {\n            return {\n              combinator: obj.combinator,\n              rules: (obj.expressions as (SQLExpression | MixedAndXorOrList)[])\n                .map(o => {\n                  if ('combinator' in o) {\n                    return {\n                      combinator: o.combinator,\n                      rules: (o.expressions as SQLExpression[])\n                        .map(oa => processSQLExpression(oa))\n                        .filter(Boolean),\n                    };\n                  } else {\n                    return processSQLExpression(o);\n                  }\n                })\n                .filter(Boolean) as DefaultRuleGroupArray,\n            };\n          }\n          return processSQLExpression(obj) as DefaultRuleType | DefaultRuleGroupType | null;\n        })\n        .filter(Boolean) as DefaultRuleGroupArray;\n      /* istanbul ignore else */\n      if (rules.length > 0) {\n        return { combinator, rules };\n      }\n    } else if (expr.type === 'IsNullBooleanPrimary') {\n      /* istanbul ignore else */\n      if (isSQLIdentifier(expr.value)) {\n        const f = getFieldName(expr.value);\n        const operator = expr.hasNot ? 'notNull' : 'null';\n        if (fieldIsValid(f, operator)) {\n          return {\n            field: f,\n            operator,\n            value: null,\n          };\n        }\n      }\n    } else if (expr.type === 'ComparisonBooleanPrimary') {\n      /* istanbul ignore else */\n      if (\n        (isSQLIdentifier(expr.left) && !isSQLIdentifier(expr.right)) ||\n        (!isSQLIdentifier(expr.left) && isSQLIdentifier(expr.right))\n      ) {\n        const identifier = isSQLIdentifier(expr.left)\n          ? expr.left.value\n          : (expr.right as SQLIdentifier).value;\n        const valueObj = [expr.left, expr.right].find(t => !isSQLIdentifier(t));\n        if (isSQLLiteralOrSignedNumberValue(valueObj)) {\n          const f = getFieldName(identifier);\n          // flip the operator if the identifier was on the right,\n          // since it's now on the left as `field`\n          const operator = normalizeOperator(expr.operator, isSQLIdentifier(expr.right));\n          if (fieldIsValid(f, operator)) {\n            return {\n              field: f,\n              operator,\n              value: evalSQLLiteralValue(valueObj),\n            };\n          }\n        }\n      } else if (isSQLIdentifier(expr.left) && isSQLIdentifier(expr.right)) {\n        const f = getFieldName(expr.left);\n        const sf = getFieldName(expr.right);\n        const operator = normalizeOperator(expr.operator);\n        if (fieldIsValid(f, operator, sf)) {\n          return {\n            field: f,\n            operator,\n            value: sf,\n            valueSource: 'field',\n          };\n        }\n      }\n    } else if (expr.type === 'InExpressionListPredicate') {\n      /* istanbul ignore else */\n      if (isSQLIdentifier(expr.left)) {\n        const f = getFieldName(expr.left);\n        const valueArray = expr.right.value\n          .filter(isSQLLiteralOrSignedNumberValue)\n          .map(evalSQLLiteralValue);\n        const operator = expr.hasNot ? 'notIn' : 'in';\n        const fieldArray = expr.right.value\n          .filter(isSQLIdentifier)\n          .filter(sf => fieldIsValid(f, operator, sf.value))\n          .map(getFieldName);\n        if (valueArray.length > 0) {\n          const value = options?.listsAsArrays ? valueArray : valueArray.join(', ');\n          return { field: getFieldName(expr.left), operator, value };\n        } else if (fieldArray.length > 0) {\n          const value = options?.listsAsArrays ? fieldArray : fieldArray.join(', ');\n          return {\n            field: getFieldName(expr.left),\n            operator,\n            value,\n            valueSource: 'field',\n          };\n        }\n      }\n    } else if (expr.type === 'BetweenPredicate') {\n      /* istanbul ignore else */\n      if (\n        isSQLIdentifier(expr.left) &&\n        isSQLLiteralOrSignedNumberValue(expr.right.left) &&\n        isSQLLiteralOrSignedNumberValue(expr.right.right)\n      ) {\n        const valueArray = [expr.right.left, expr.right.right].map(evalSQLLiteralValue);\n        const value = options?.listsAsArrays ? valueArray : valueArray.join(', ');\n        const operator = expr.hasNot ? 'notBetween' : 'between';\n        return { field: getFieldName(expr.left), operator, value };\n      } else if (\n        isSQLIdentifier(expr.left) &&\n        isSQLIdentifier(expr.right.left) &&\n        isSQLIdentifier(expr.right.right)\n      ) {\n        const f = getFieldName(expr.left);\n        const valueArray = [expr.right.left, expr.right.right].map(getFieldName);\n        const operator = expr.hasNot ? 'notBetween' : 'between';\n        if (valueArray.every(sf => fieldIsValid(f, operator, sf))) {\n          const value = options?.listsAsArrays ? valueArray : valueArray.join(', ');\n          return { field: f, operator, value, valueSource: 'field' };\n        }\n      }\n    } else if (expr.type === 'LikePredicate') {\n      /* istanbul ignore else */\n      if (isSQLIdentifier(expr.left) && expr.right.type === 'String') {\n        const valueWithWildcards = evalSQLLiteralValue(expr.right) as string;\n        const valueWithoutWildcards = valueWithWildcards.replace(/(^%)|(%$)/g, '');\n        let operator: DefaultOperatorName = '=';\n        /* istanbul ignore else */\n        if (/^%.*%$/.test(valueWithWildcards) || valueWithWildcards === '%') {\n          operator = expr.hasNot ? 'doesNotContain' : 'contains';\n        } else if (/%$/.test(valueWithWildcards)) {\n          operator = expr.hasNot ? 'doesNotBeginWith' : 'beginsWith';\n        } else if (/^%/.test(valueWithWildcards)) {\n          operator = expr.hasNot ? 'doesNotEndWith' : 'endsWith';\n        }\n        const f = getFieldName(expr.left);\n        /* istanbul ignore else */\n        if (fieldIsValid(f, operator)) {\n          return { field: f, operator, value: valueWithoutWildcards };\n        }\n      } else if (\n        isSQLIdentifier(expr.left) &&\n        (expr.right.type === 'StartsWithExpr' ||\n          expr.right.type === 'EndsWithExpr' ||\n          expr.right.type === 'ContainsExpr')\n      ) {\n        let subordinateFieldName = '';\n        let operator: DefaultOperatorName = '=';\n\n        if (isSQLIdentifier(expr.right.value)) {\n          subordinateFieldName = getFieldName(expr.right.value);\n        }\n\n        if (expr.right.type === 'EndsWithExpr') {\n          operator = expr.hasNot ? 'doesNotEndWith' : 'endsWith';\n        } else if (expr.right.type === 'StartsWithExpr') {\n          operator = expr.hasNot ? 'doesNotBeginWith' : 'beginsWith';\n        } else if (expr.right.type === 'ContainsExpr') {\n          operator = expr.hasNot ? 'doesNotContain' : 'contains';\n        }\n\n        const baseFieldName = getFieldName(expr.left);\n\n        if (operator !== '=' && fieldIsValid(baseFieldName, operator, subordinateFieldName)) {\n          return {\n            field: baseFieldName,\n            operator,\n            value: subordinateFieldName,\n            valueSource: 'field',\n          };\n        }\n      } else if (isSQLIdentifier(expr.left) && isSQLIdentifier(expr.right)) {\n        const baseFieldName = getFieldName(expr.left);\n        const subordinateFieldName = getFieldName(expr.right);\n        const operator: DefaultOperatorName = '=';\n        if (fieldIsValid(baseFieldName, operator, subordinateFieldName)) {\n          return {\n            field: baseFieldName,\n            operator,\n            value: subordinateFieldName,\n            valueSource: 'field',\n          };\n        }\n      }\n    }\n    return null;\n  };\n\n  const { where } = sqlParser.parse(sqlString).value;\n  if (where) {\n    const result = processSQLExpression(where);\n    if (result) {\n      if ('rules' in result) {\n        return result;\n      }\n      return { rules: [result], ...(ic ? {} : { combinator: 'and' }) };\n    }\n  }\n  return { rules: [], ...(ic ? {} : { combinator: 'and' }) };\n}\n\nexport { parseSQL };\n","import type { RuleGroupTypeAny, RuleType } from '../types/index.noReact';\nimport { isPojo } from './misc';\n\nexport type FindPathReturnType = RuleGroupTypeAny | RuleType | null;\n\nexport const findPath = (path: number[], query: RuleGroupTypeAny): FindPathReturnType => {\n  let target: FindPathReturnType = query;\n  let level = 0;\n  while (level < path.length && target && 'rules' in target) {\n    const t: RuleGroupTypeAny | RuleType | string = target.rules[path[level]];\n    if (typeof t !== 'string') {\n      target = t;\n    } else {\n      target = null;\n    }\n    level++;\n  }\n\n  return target;\n};\n\nexport const getParentPath = (path: number[]) => path.slice(0, path.length - 1);\n\nexport const pathsAreEqual = (path1: number[], path2: number[]) =>\n  path1.length === path2.length && path1.every((val, idx) => val === path2[idx]);\n\nexport const isAncestor = (maybeAncestor: number[], path: number[]) =>\n  maybeAncestor.length < path.length && RegExp(`^${maybeAncestor.join('-')}`).test(path.join('-'));\n\nexport const getCommonAncestorPath = (path1: number[], path2: number[]) => {\n  const commonAncestorPath: number[] = [];\n  const parentPath1 = getParentPath(path1);\n  const parentPath2 = getParentPath(path2);\n  let i = 0;\n\n  while (i < parentPath1.length && i < parentPath2.length && parentPath1[i] === parentPath2[i]) {\n    commonAncestorPath.push(parentPath2[i]);\n    i++;\n  }\n\n  return commonAncestorPath;\n};\n\nexport const pathIsDisabled = (path: number[], query: RuleGroupTypeAny) => {\n  let disabled = !!query.disabled;\n  let target: RuleType | RuleGroupTypeAny = query;\n  let level = 0;\n  while (level < path.length && !disabled && 'rules' in target) {\n    const t: RuleGroupTypeAny | RuleType | string = target.rules[path[level]];\n    if (isPojo(t) && ('rules' in t || 'field' in t)) {\n      disabled = !!t.disabled;\n      target = t;\n    }\n    level++;\n  }\n  return disabled;\n};\n","import { produce } from 'immer';\nimport type {\n  RuleGroupArray,\n  RuleGroupICArray,\n  RuleGroupTypeAny,\n  RuleType,\n} from '../types/index.noReact';\nimport { generateID } from './generateID';\n\nexport interface PreparerOptions {\n  idGenerator?: () => string;\n}\n\n/**\n * Generates a valid rule\n */\nexport const prepareRule = (rule: RuleType, { idGenerator = generateID }: PreparerOptions = {}) =>\n  produce(rule, draft => {\n    if (!draft.id) {\n      draft.id = idGenerator();\n    }\n  });\n\n/**\n * Generates a valid rule group\n */\nexport const prepareRuleGroup = <RG extends RuleGroupTypeAny>(\n  queryObject: RG,\n  { idGenerator = generateID }: PreparerOptions = {}\n): RG =>\n  produce(queryObject, draft => {\n    if (!draft.id) {\n      draft.id = idGenerator();\n    }\n    draft.rules = draft.rules.map(r =>\n      typeof r === 'string'\n        ? r\n        : 'rules' in r\n        ? prepareRuleGroup(r, { idGenerator })\n        : prepareRule(r, { idGenerator })\n    ) as RuleGroupArray | RuleGroupICArray;\n  });\n\n/**\n * Generates a valid rule or group\n */\nexport const prepareRuleOrGroup = <RG extends RuleGroupTypeAny>(\n  rg: RG | RuleType,\n  { idGenerator = generateID }: PreparerOptions = {}\n) => ('rules' in rg ? prepareRuleGroup(rg, { idGenerator }) : prepareRule(rg, { idGenerator }));\n","import { produce } from 'immer';\nimport { defaultCombinators } from '../defaults';\nimport type {\n  OptionList,\n  RuleGroupTypeAny,\n  RuleType,\n  UpdateableProperties,\n  ValueSources,\n} from '../types/index.noReact';\nimport { generateID } from './generateID';\nimport { getFirstOption } from './optGroupUtils';\nimport { findPath, getCommonAncestorPath, getParentPath, pathsAreEqual } from './pathUtils';\nimport { prepareRuleOrGroup } from './prepareQueryObjects';\nimport { regenerateID, regenerateIDs } from './regenerateIDs';\n\n// TODO: eventually refactor the RuleGroup/IC types to be either/or in ALL cases.\n// Example for `add`:\n/*\nexport function add<RG extends RuleGroupType>(\n  query: RG,\n  ruleOrGroup: RG | RuleType,\n  parentPath: number[],\n  options?: Omit<AddOptions, 'combinatorPreceding'>\n): RG;\nexport function add<RGIC extends RuleGroupTypeIC>(\n  query: RGIC,\n  ruleOrGroup: RGIC | RuleType,\n  parentPath: number[],\n  options?: AddOptions\n): RGIC;\n*/\n\nexport interface AddOptions {\n  /**\n   * If the query is of type `RuleGroupTypeIC` (i.e. the query builder used\n   * `independentCombinators`), then the first combinator in this list will be\n   * inserted before the new rule/group if the parent group is not empty. This\n   * option is overridden by `combinatorPreceding`.\n   */\n  combinators?: OptionList;\n  /**\n   * If the query is of type `RuleGroupTypeIC` (i.e. the query builder used\n   * `independentCombinators`), then this combinator will be inserted before\n   * the new rule/group if the parent group is not empty. This option will\n   * supersede `combinators`.\n   */\n  combinatorPreceding?: string;\n  /**\n   * ID generator.\n   */\n  idGenerator?: () => string;\n}\n/**\n * Adds a rule or group to a query.\n * @param query - The query to update\n * @param ruleOrGroup - The rule or group to add\n * @param parentPath - Path of the group to add to\n * @param options -\n * @returns The full query with the new rule or group added\n */\nexport const add = <RG extends RuleGroupTypeAny>(\n  query: RG,\n  ruleOrGroup: RG | RuleType,\n  parentPath: number[],\n  {\n    combinators = defaultCombinators,\n    combinatorPreceding,\n    idGenerator = generateID,\n  }: AddOptions = {}\n) =>\n  produce(query, draft => {\n    const parent = findPath(parentPath, draft);\n\n    if (!parent || !('rules' in parent)) return;\n\n    if (!('combinator' in parent) && parent.rules.length > 0) {\n      const prevCombinator = parent.rules[parent.rules.length - 2];\n      parent.rules.push(\n        // @ts-expect-error This is technically a type violation until the next push\n        // to the rules array, but that happens immediately and unconditionally so\n        // there's no significant risk.\n        combinatorPreceding ??\n          (typeof prevCombinator === 'string' ? prevCombinator : getFirstOption(combinators))\n      );\n    }\n    // The \"as RuleType\" here just avoids the ambiguity with RuleGroupTypeAny\n    parent.rules.push(prepareRuleOrGroup(ruleOrGroup, { idGenerator }) as RuleType);\n  });\n\nexport interface UpdateOptions {\n  /**\n   * When updating the `field` of a rule, the rule's `operator`, `value`, and `valueSource`\n   * will be reset to their respective defaults. Defaults to `true`.\n   */\n  resetOnFieldChange?: boolean;\n  /**\n   * When updating the `operator` of a rule, the rule's `value` and `valueSource`\n   * will be reset to their respective defaults. Defaults to `false`.\n   */\n  resetOnOperatorChange?: boolean;\n  /**\n   * Determines the default operator name for a given field.\n   */\n  getRuleDefaultOperator?: (field: string) => string;\n  /**\n   * Determines the valid value sources for a given field and operator.\n   */\n  getValueSources?: (field: string, operator: string) => ValueSources;\n  /**\n   * Gets the default value for a given rule, in case the value needs to be reset.\n   */\n  getRuleDefaultValue?: (rule: RuleType) => any;\n}\n/**\n * Updates a property of a rule or group within a query.\n * @param query - The query to update\n * @param prop - The name of the property to update\n * @param value - The new value of the property\n * @param path - The path of the rule or group to update\n * @param options -\n * @returns The updated query\n */\nexport const update = <RG extends RuleGroupTypeAny>(\n  query: RG,\n  prop: UpdateableProperties,\n  value: any,\n  path: number[],\n  {\n    resetOnFieldChange = true,\n    resetOnOperatorChange = false,\n    getRuleDefaultOperator = () => '=',\n    getValueSources = () => ['value'],\n    getRuleDefaultValue = () => '',\n  }: UpdateOptions = {}\n) =>\n  produce(query, draft => {\n    if (prop === 'combinator' && !('combinator' in draft)) {\n      // Independent combinators\n      const parentRules = (findPath(getParentPath(path), draft) as RG).rules;\n      // Only update an independent combinator if it occupies an odd index\n      if (path[path.length - 1] % 2 === 1) {\n        parentRules[path[path.length - 1]] = value;\n      }\n      return;\n    }\n\n    const ruleOrGroup = findPath(path, draft);\n\n    // Ignore invalid paths\n    if (!ruleOrGroup) return;\n\n    const isGroup = 'rules' in ruleOrGroup;\n\n    // Only update if there is actually a change\n    // @ts-expect-error prop can refer to rule or group properties\n    if (ruleOrGroup[prop] === value) return;\n\n    // Handle valueSource updates later\n    if (prop !== 'valueSource') {\n      // @ts-expect-error prop can refer to rule or group properties\n      ruleOrGroup[prop] = value;\n    }\n\n    // If this is a group, there's no more to do\n    if (isGroup) return;\n\n    let resetValueSource = false;\n    let resetValue = false;\n\n    // Set default operator, valueSource, and value for field change\n    if (resetOnFieldChange && prop === 'field') {\n      ruleOrGroup.operator = getRuleDefaultOperator(value);\n      resetValueSource = true;\n      resetValue = true;\n    }\n\n    // Set default valueSource and value for operator change\n    if (resetOnOperatorChange && prop === 'operator') {\n      resetValueSource = true;\n      resetValue = true;\n    }\n\n    const defaultValueSource = getValueSources(ruleOrGroup.field, ruleOrGroup.operator)[0];\n    if (\n      (resetValueSource &&\n        ruleOrGroup.valueSource &&\n        defaultValueSource !== ruleOrGroup.valueSource) ||\n      (prop === 'valueSource' && value !== ruleOrGroup.valueSource)\n    ) {\n      // Only reset the value if we're changing the valueSource either\n      // 1) from `undefined` to something that is _not_ the default, or\n      // 2) from the current (defined) value to something else\n      resetValue =\n        !!ruleOrGroup.valueSource || (!ruleOrGroup.valueSource && value !== defaultValueSource);\n      ruleOrGroup.valueSource = resetValueSource ? defaultValueSource : value;\n    }\n\n    if (resetValue) {\n      // The default value should be a valid field name if defaultValueSource is 'field'\n      ruleOrGroup.value = getRuleDefaultValue(ruleOrGroup);\n    }\n  });\n\n/**\n * Removes a rule or group from a query.\n * @param query - The query to update\n * @param path - Path of the rule or group to remove\n * @returns The updated query\n */\nexport const remove = <RG extends RuleGroupTypeAny>(query: RG, path: number[]) => {\n  if (\n    // Can't remove the root group\n    path.length === 0 ||\n    // Can't independently remove independent combinators\n    (!('combinator' in query) && !findPath(path, query))\n  ) {\n    return query;\n  }\n\n  return produce(query, draft => {\n    const index = path[path.length - 1];\n    const parent = findPath(getParentPath(path), draft);\n    if (parent && 'rules' in parent) {\n      if (!('combinator' in parent) && parent.rules.length > 1) {\n        const idxStartDelete = index === 0 ? 0 : index - 1;\n        parent.rules.splice(idxStartDelete, 2);\n      } else {\n        parent.rules.splice(index, 1);\n      }\n    }\n  });\n};\n\nexport interface MoveOptions {\n  /**\n   * When `true`, the source rule/group will not be removed from its original path.\n   */\n  clone?: boolean;\n  /**\n   * If the query is of type `RuleGroupTypeIC` (i.e. the query builder used\n   * `independentCombinators`), then the first combinator in this list will be\n   * inserted before the rule/group if necessary.\n   */\n  combinators?: OptionList;\n  /**\n   * ID generator.\n   */\n  idGenerator?: () => string;\n}\n/**\n * Moves a rule or group from one path to another. In the options parameter, pass\n * `{ clone: true }` to copy instead of move.\n * @param query - The query to update\n * @param oldPath - Original path of the rule or group to move\n * @param newPath - Path to move the rule or group to\n * @param options -\n * @returns The updated query\n */\nexport const move = <RG extends RuleGroupTypeAny>(\n  query: RG,\n  oldPath: number[],\n  newPath: number[],\n  { clone = false, combinators = defaultCombinators, idGenerator = generateID }: MoveOptions = {}\n) => {\n  // Don't move to the same location or a path that doesn't exist yet\n  if (pathsAreEqual(oldPath, newPath) || !findPath(getParentPath(newPath), query)) {\n    return query;\n  }\n\n  const ruleOrGroupOriginal = findPath(oldPath, query);\n  if (!ruleOrGroupOriginal) {\n    return query;\n  }\n  const ruleOrGroup = clone\n    ? 'rules' in ruleOrGroupOriginal\n      ? regenerateIDs(ruleOrGroupOriginal, { idGenerator })\n      : regenerateID(ruleOrGroupOriginal, { idGenerator })\n    : ruleOrGroupOriginal;\n\n  return produce(query, draft => {\n    const independentCombinators = !('combinator' in draft);\n    const parentOfRuleToRemove = findPath(getParentPath(oldPath), draft) as RG;\n    const ruleToRemoveIndex = oldPath[oldPath.length - 1];\n    const oldPrevCombinator =\n      independentCombinators && ruleToRemoveIndex > 0\n        ? (parentOfRuleToRemove.rules[ruleToRemoveIndex - 1] as string)\n        : null;\n    const oldNextCombinator =\n      independentCombinators && ruleToRemoveIndex < parentOfRuleToRemove.rules.length - 1\n        ? (parentOfRuleToRemove.rules[ruleToRemoveIndex + 1] as string)\n        : null;\n\n    // Remove the source item if not cloning\n    if (!clone) {\n      const idxStartDelete = independentCombinators\n        ? Math.max(0, ruleToRemoveIndex - 1)\n        : ruleToRemoveIndex;\n      const deleteLength = independentCombinators ? 2 : 1;\n      parentOfRuleToRemove.rules.splice(idxStartDelete, deleteLength);\n    }\n\n    const newNewPath = [...newPath];\n    const commonAncestorPath = getCommonAncestorPath(oldPath, newPath);\n    if (\n      !clone &&\n      oldPath.length === commonAncestorPath.length + 1 &&\n      newPath[commonAncestorPath.length] > oldPath[commonAncestorPath.length]\n    ) {\n      // Getting here means there will be a shift of paths upward at the common\n      // ancestor level because the object at `oldPath` will be spliced out. The\n      // real new path should therefore be one or two higher than `newPath`.\n      newNewPath[commonAncestorPath.length] -= independentCombinators ? 2 : 1;\n    }\n    const newNewParentPath = getParentPath(newNewPath);\n    const parentToInsertInto = findPath(newNewParentPath, draft) as RG;\n    const newIndex = newNewPath[newNewPath.length - 1];\n\n    /**\n     * This function 1) glosses over the need for type assertions to splice directly\n     * into `parentToInsertInto.rules`, and 2) shortens the actual insertion code.\n     */\n    const insertRuleOrGroup = (...args: any[]) =>\n      parentToInsertInto.rules.splice(newIndex, 0, ...args);\n\n    // Insert the source item at the target path\n    if (parentToInsertInto.rules.length === 0 || !independentCombinators) {\n      insertRuleOrGroup(ruleOrGroup);\n    } else {\n      if (newIndex === 0) {\n        if (ruleToRemoveIndex === 0 && oldNextCombinator) {\n          insertRuleOrGroup(ruleOrGroup, oldNextCombinator);\n        } else {\n          const newNextCombinator =\n            parentToInsertInto.rules[1] || oldPrevCombinator || getFirstOption(combinators);\n          insertRuleOrGroup(ruleOrGroup, newNextCombinator);\n        }\n      } else {\n        if (oldPrevCombinator) {\n          insertRuleOrGroup(oldPrevCombinator, ruleOrGroup);\n        } else {\n          const newPrevCombinator =\n            parentToInsertInto.rules[newIndex - 2] ||\n            oldNextCombinator ||\n            getFirstOption(combinators);\n          insertRuleOrGroup(newPrevCombinator, ruleOrGroup);\n        }\n      }\n    }\n  });\n};\n","import type {\n  RuleGroupArray,\n  RuleGroupICArray,\n  RuleGroupType,\n  RuleGroupTypeIC,\n  RuleType,\n} from '../types/index.noReact';\nimport { generateID } from './generateID';\nimport { isPojo } from './misc';\n\nexport interface RegenerateIdOptions {\n  idGenerator?: () => string;\n}\n\n/**\n * Generates new `id` property for a rule.\n */\nexport const regenerateID = (\n  rule: RuleType,\n  { idGenerator = generateID }: RegenerateIdOptions = {}\n): RuleType => JSON.parse(JSON.stringify({ ...rule, id: idGenerator() }));\n\n/**\n * Recursively generates new `id` properties for all objects in a rule group.\n */\nexport const regenerateIDs = (\n  ruleOrGroup: RuleGroupType | RuleGroupTypeIC,\n  { idGenerator = generateID }: RegenerateIdOptions = {}\n): RuleGroupType | RuleGroupTypeIC => {\n  if (!isPojo(ruleOrGroup)) return ruleOrGroup;\n\n  if (!('rules' in ruleOrGroup)) {\n    return JSON.parse(JSON.stringify({ ...(ruleOrGroup as any), id: idGenerator() }));\n  }\n\n  if ('combinator' in ruleOrGroup) {\n    const rules = ruleOrGroup.rules.map(r =>\n      isPojo(r) && 'rules' in r\n        ? regenerateIDs(r, { idGenerator })\n        : regenerateID(r, { idGenerator })\n    ) as RuleGroupArray;\n    return { ...ruleOrGroup, id: idGenerator(), rules };\n  }\n\n  const rules = ruleOrGroup.rules.map(r =>\n    typeof r === 'string'\n      ? r\n      : isPojo(r) && 'rules' in r\n      ? regenerateIDs(r, { idGenerator })\n      : regenerateID(r, { idGenerator })\n  ) as RuleGroupICArray;\n  return { ...ruleOrGroup, id: idGenerator(), rules };\n};\n","import * as React from 'react';\nimport type { OptionList } from '../types/index.noReact';\nimport { isOptionGroupArray } from './optGroupUtils';\n\nexport const toOptions = (arr?: OptionList) =>\n  isOptionGroupArray(arr)\n    ? arr.map(og => (\n        <optgroup key={og.label} label={og.label}>\n          {og.options.map(opt => (\n            <option key={opt.name} value={opt.name}>\n              {opt.label}\n            </option>\n          ))}\n        </optgroup>\n      ))\n    : Array.isArray(arr)\n    ? arr.map(opt => (\n        <option key={opt.name} value={opt.name}>\n          {opt.label}\n        </option>\n      ))\n    : null;\n","import { produce } from 'immer';\nimport type {\n  RuleGroupType,\n  RuleGroupTypeAny,\n  RuleGroupTypeIC,\n  RuleType,\n} from '../types/index.noReact';\nimport { isRuleGroup, isRuleGroupType } from './isRuleGroup';\n\nconst remapProperties = (\n  obj: Record<string, any>,\n  propertyMap: Record<string, string | false>,\n  deleteRemappedProperties: boolean\n) =>\n  produce(obj, draft => {\n    for (const [k, v] of Object.entries(propertyMap)) {\n      if (v === false) {\n        delete draft[k];\n      } else if (!!v && k !== v && Object.hasOwn(draft, k)) {\n        draft[v] = draft[k];\n        if (deleteRemappedProperties) {\n          delete draft[k];\n        }\n      }\n    }\n  });\n\n/**\n * Options object for {@link transformQuery}.\n */\nexport interface TransformQueryOptions<RG extends RuleGroupTypeAny = RuleGroupType> {\n  /**\n   * When a rule is encountered in the hierarchy, it will be replaced\n   * with the result of this function.\n   *\n   * @defaultValue `r => r`\n   */\n  ruleProcessor?: (rule: RuleType) => any;\n  /**\n   * When a group is encountered in the hierarchy, it will be replaced\n   * with the result of this function. Note that the `rules` property from\n   * the original group will be processed as normal and reapplied to the\n   * new group object.\n   *\n   * @defaultValue `rg => rg`\n   */\n  ruleGroupProcessor?: (ruleGroup: RG) => Record<string, any>;\n  /**\n   * For each rule and group in the query, any properties matching a key\n   * in this object will be renamed to the corresponding value. To retain both\n   * the new _and_ the original properties, set `deleteRemappedProperties`\n   * to `false`.\n   *\n   * If a key has a value of `false`, the corresponding property will be removed\n   * without being copied to a new property name. (Warning: `{ rules: false }`\n   * will prevent recursion and only return the processed root group.)\n   *\n   * @defaultValue `{}`\n   *\n   * @example\n   * ```\n   *   transformQuery(\n   *     { combinator: 'and', not: true, rules: [] },\n   *     { propertyMap: { combinator: 'AndOr', not: false } }\n   *   )\n   *   // Returns: { AndOr: 'and', rules: [] }\n   * ```\n   */\n  propertyMap?: Record<string, string | false>;\n  /**\n   * Any combinator values (including independent combinators) will be translated\n   * from the key in this object to the value.\n   *\n   * @defaultValue `{}`\n   *\n   * @example\n   * ```\n   *   transformQuery(\n   *     { combinator: 'and', rules: [] },\n   *     { combinatorMap: { and: '&&', or: '||' } }\n   *   )\n   *   // Returns: { combinator: '&&', rules: [] }\n   * ```\n   */\n  combinatorMap?: Record<string, string>;\n  /**\n   * Any operator values will be translated from the key in this object to the value.\n   *\n   * @defaultValue `{}`\n   *\n   * @example\n   * ```\n   *   transformQuery(\n   *     { combinator: 'and', rules: [{ field: 'name', operator: '=', value: 'Steve Vai' }] },\n   *     { operatorMap: { '=': 'is' } }\n   *   )\n   *   // Returns:\n   *   // {\n   *   //   combinator: 'and',\n   *   //   rules: [{ field: 'name', operator: 'is', value: 'Steve Vai' }]\n   *   // }\n   * ```\n   */\n  operatorMap?: Record<string, string>;\n  /**\n   * Prevents the `path` property (see {@link Path}) from being added to each\n   * rule and group in the hierarchy.\n   *\n   * @defaultValue `false`\n   */\n  omitPath?: boolean;\n  /**\n   * Original properties remapped according to the `propertyMap` option will be removed.\n   *\n   * @defaultValue `true`\n   *\n   * @example\n   * ```\n   *   transformQuery(\n   *     { combinator: 'and', rules: [] },\n   *     { propertyMap: { combinator: 'AndOr' }, deleteRemappedProperties: false }\n   *   )\n   *   // Returns: { combinator: 'and', AndOr: 'and', rules: [] }\n   * ```\n   */\n  deleteRemappedProperties?: boolean;\n}\n\n/**\n * Recursively process a query heirarchy using this versatile utility function.\n *\n * [Documentation](https://react-querybuilder.js.org/docs/utils/misc#transformquery)\n */\nexport function transformQuery(\n  query: RuleGroupType,\n  options?: TransformQueryOptions<RuleGroupType>\n): any;\n/**\n * Recursively process a query heirarchy with independent combinators using this\n * versatile utility function.\n *\n * [Documentation](https://react-querybuilder.js.org/docs/utils/misc#transformquery)\n */\nexport function transformQuery(\n  query: RuleGroupTypeIC,\n  options?: TransformQueryOptions<RuleGroupTypeIC>\n): any;\nexport function transformQuery<RG extends RuleGroupTypeAny>(\n  query: RG,\n  options: TransformQueryOptions<RG> = {}\n) {\n  const {\n    ruleProcessor = r => r,\n    ruleGroupProcessor = rg => rg,\n    propertyMap = {},\n    combinatorMap = {},\n    operatorMap = {},\n    omitPath = false,\n    deleteRemappedProperties = true,\n  } = options;\n\n  const processGroup = (rg: RuleGroupTypeAny): any => ({\n    ...ruleGroupProcessor(\n      remapProperties(\n        {\n          ...rg,\n          ...(isRuleGroupType(rg)\n            ? { combinator: combinatorMap[rg.combinator] ?? rg.combinator }\n            : {}),\n        },\n        propertyMap,\n        deleteRemappedProperties\n      ) as RG\n    ),\n    ...(propertyMap['rules'] === false\n      ? null\n      : {\n          [propertyMap['rules'] ?? 'rules']: rg.rules.map((r: any, idx) => {\n            const pathObject = omitPath ? null : { path: [...rg.path!, idx] };\n            if (typeof r === 'string') {\n              // independent combinators\n              return combinatorMap[r] ?? r;\n            } else if (isRuleGroup(r)) {\n              // sub-groups\n              return processGroup({ ...r, ...pathObject });\n            }\n            // rules\n            return ruleProcessor(\n              remapProperties(\n                {\n                  ...{ ...r, ...pathObject },\n                  ...('operator' in r ? { operator: operatorMap[r.operator] ?? r.operator } : {}),\n                },\n                propertyMap,\n                deleteRemappedProperties\n              ) as RuleType\n            );\n          }),\n        }),\n  });\n\n  return processGroup({ ...query, ...(omitPath ? null : { path: [] }) });\n}\n","import { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { standardClassnames } from '../defaults';\nimport type { RuleProps, RuleType } from '../types';\nimport {\n  filterFieldsByComparator,\n  getOption,\n  getParentPath,\n  getValidationClassNames,\n  useDeprecatedProps,\n  useReactDndWarning,\n} from '../utils';\n\nexport const useRule = (props: RuleProps) => {\n  const {\n    id,\n    path,\n    rule: ruleProp,\n    schema,\n    actions: { moveRule, onPropChange, onRuleRemove },\n    disabled: disabledProp,\n    parentDisabled,\n    field: fieldProp,\n    operator: operatorProp,\n    value: valueProp,\n    valueSource: valueSourceProp,\n    dragMonitorId = '',\n    dropMonitorId = '',\n    dndRef = null,\n    dragRef = null,\n    isDragging = false,\n    isOver = false,\n  } = props;\n\n  const {\n    classNames: classNamesProp,\n    fields,\n    fieldMap,\n    getInputType,\n    getOperators,\n    getValueEditorType,\n    getValueEditorSeparator,\n    getValueSources,\n    getValues,\n    validationMap,\n    enableDragAndDrop,\n    getRuleClassname,\n  } = schema;\n\n  useDeprecatedProps('rule', !!ruleProp);\n\n  useReactDndWarning(enableDragAndDrop, !!(dragMonitorId || dropMonitorId || dndRef || dragRef));\n\n  const disabled = !!parentDisabled || !!disabledProp;\n\n  const rule = ruleProp\n    ? ruleProp\n    : {\n        id,\n        field: fieldProp ?? /* istanbul ignore next */ '',\n        operator: operatorProp ?? /* istanbul ignore next */ '',\n        value: valueProp,\n        valueSource: valueSourceProp,\n      };\n\n  const classNames = useMemo(\n    () => ({\n      dragHandle: clsx(standardClassnames.dragHandle, classNamesProp.dragHandle),\n      fields: clsx(standardClassnames.fields, classNamesProp.fields),\n      operators: clsx(standardClassnames.operators, classNamesProp.operators),\n      valueSource: clsx(standardClassnames.valueSource, classNamesProp.valueSource),\n      value: clsx(standardClassnames.value, classNamesProp.value),\n      cloneRule: clsx(standardClassnames.cloneRule, classNamesProp.cloneRule),\n      lockRule: clsx(standardClassnames.lockRule, classNamesProp.lockRule),\n      removeRule: clsx(standardClassnames.removeRule, classNamesProp.removeRule),\n    }),\n    [\n      classNamesProp.dragHandle,\n      classNamesProp.fields,\n      classNamesProp.operators,\n      classNamesProp.valueSource,\n      classNamesProp.value,\n      classNamesProp.cloneRule,\n      classNamesProp.lockRule,\n      classNamesProp.removeRule,\n    ]\n  );\n\n  const generateOnChangeHandler =\n    (prop: Exclude<keyof RuleType, 'id' | 'path'>) => (value: any, _context?: any) => {\n      if (!disabled) {\n        onPropChange(prop, value, path);\n      }\n    };\n\n  const cloneRule = (_event?: any, _context?: any) => {\n    if (!disabled) {\n      const newPath = [...getParentPath(path), path[path.length - 1] + 1];\n      moveRule(path, newPath, true);\n    }\n  };\n\n  const toggleLockRule = (_event?: any, _context?: any) => {\n    onPropChange('disabled', !disabled, path);\n  };\n\n  const removeRule = (_event?: any, _context?: any) => {\n    if (!disabled) {\n      onRuleRemove(path);\n    }\n  };\n\n  const fieldData = fieldMap?.[rule.field] ?? { name: rule.field, label: rule.field };\n  const inputType = fieldData.inputType ?? getInputType(rule.field, rule.operator);\n  const operators = getOperators(rule.field);\n  const operatorObject = getOption(operators, rule.operator);\n  const arity = operatorObject?.arity;\n  const hideValueControls =\n    (typeof arity === 'string' && arity === 'unary') || (typeof arity === 'number' && arity < 2);\n  const valueSources =\n    typeof fieldData.valueSources === 'function'\n      ? fieldData.valueSources(rule.operator)\n      : fieldData.valueSources ?? getValueSources(rule.field, rule.operator);\n  const valueEditorType =\n    rule.valueSource === 'field'\n      ? 'select'\n      : (typeof fieldData.valueEditorType === 'function'\n          ? fieldData.valueEditorType(rule.operator)\n          : fieldData.valueEditorType) ?? getValueEditorType(rule.field, rule.operator);\n  const valueEditorSeparator = getValueEditorSeparator(rule.field, rule.operator);\n  const values =\n    rule.valueSource === 'field'\n      ? filterFieldsByComparator(fieldData, fields, rule.operator)\n      : fieldData.values ?? getValues(rule.field, rule.operator);\n  const valueSourceOptions = valueSources.map(vs => ({ name: vs, label: vs }));\n\n  const validationResult =\n    validationMap[id ?? /* istanbul ignore next */ ''] ??\n    (typeof fieldData.validator === 'function' ? fieldData.validator(rule) : null);\n  const validationClassName = getValidationClassNames(validationResult);\n  const fieldBasedClassName = useMemo(() => fieldData?.className ?? '', [fieldData?.className]);\n  const operatorBasedClassName = useMemo(\n    () => operatorObject?.className ?? '',\n    [operatorObject?.className]\n  );\n\n  const outerClassName = clsx(\n    getRuleClassname(rule),\n    fieldBasedClassName,\n    operatorBasedClassName,\n    standardClassnames.rule,\n    classNamesProp.rule,\n    {\n      [standardClassnames.disabled]: disabled,\n      [standardClassnames.dndDragging]: isDragging,\n      [standardClassnames.dndOver]: isOver,\n    },\n    validationClassName\n  );\n\n  return {\n    classNames,\n    cloneRule,\n    disabled,\n    dndRef,\n    dragMonitorId,\n    dragRef,\n    dropMonitorId,\n    fieldData,\n    generateOnChangeHandler,\n    hideValueControls,\n    inputType,\n    operators,\n    outerClassName,\n    removeRule,\n    rule,\n    toggleLockRule,\n    validationResult,\n    valueEditorSeparator,\n    valueEditorType,\n    values,\n    valueSourceOptions,\n    valueSources,\n  };\n};\n","import { clsx } from 'clsx';\nimport { useMemo } from 'react';\nimport { standardClassnames } from '../defaults';\nimport type { RuleGroupProps, RuleGroupType, RuleGroupTypeAny } from '../types';\nimport {\n  getFirstOption,\n  getOption,\n  getParentPath,\n  getValidationClassNames,\n  useDeprecatedProps,\n  useReactDndWarning,\n} from '../utils';\n\nexport const useRuleGroup = (props: RuleGroupProps) => {\n  const {\n    id,\n    path,\n    ruleGroup: ruleGroupProp,\n    schema,\n    actions: { onGroupAdd, onGroupRemove, onPropChange, onRuleAdd, moveRule },\n    disabled: disabledProp,\n    parentDisabled,\n    combinator: combinatorProp,\n    rules: rulesProp,\n    not: notProp,\n    // Drag-and-drop\n    dragMonitorId = '',\n    dropMonitorId = '',\n    previewRef = null,\n    dragRef = null,\n    dropRef = null,\n    isDragging = false,\n    isOver = false,\n  } = props;\n\n  const {\n    classNames: classNamesProp,\n    combinators,\n    createRule,\n    createRuleGroup,\n    independentCombinators,\n    validationMap,\n    enableDragAndDrop,\n    getRuleGroupClassname,\n  } = schema;\n\n  useDeprecatedProps('ruleGroup', !!ruleGroupProp);\n\n  useReactDndWarning(\n    enableDragAndDrop,\n    !!(dragMonitorId || dropMonitorId || previewRef || dragRef || dropRef)\n  );\n\n  const disabled = !!parentDisabled || !!disabledProp;\n\n  const ruleGroup = ruleGroupProp\n    ? { ...ruleGroupProp }\n    : ({ rules: rulesProp, not: notProp } as RuleGroupTypeAny);\n\n  const combinator =\n    ruleGroupProp && 'combinator' in ruleGroupProp\n      ? ruleGroupProp.combinator\n      : !ruleGroupProp\n      ? combinatorProp ?? getFirstOption(combinators)!\n      : getFirstOption(combinators)!;\n\n  if (!independentCombinators) {\n    (ruleGroup as RuleGroupType).combinator = combinator;\n  }\n\n  const classNames = useMemo(\n    () => ({\n      header: clsx(standardClassnames.header, classNamesProp.header, {\n        [standardClassnames.dndOver]: isOver,\n      }),\n      dragHandle: clsx(standardClassnames.dragHandle, classNamesProp.dragHandle),\n      combinators: clsx(standardClassnames.combinators, classNamesProp.combinators),\n      notToggle: clsx(standardClassnames.notToggle, classNamesProp.notToggle),\n      addRule: clsx(standardClassnames.addRule, classNamesProp.addRule),\n      addGroup: clsx(standardClassnames.addGroup, classNamesProp.addGroup),\n      cloneGroup: clsx(standardClassnames.cloneGroup, classNamesProp.cloneGroup),\n      lockGroup: clsx(standardClassnames.lockGroup, classNamesProp.lockGroup),\n      removeGroup: clsx(standardClassnames.removeGroup, classNamesProp.removeGroup),\n      body: clsx(standardClassnames.body, classNamesProp.body),\n    }),\n    [\n      classNamesProp.addGroup,\n      classNamesProp.addRule,\n      classNamesProp.body,\n      classNamesProp.cloneGroup,\n      classNamesProp.combinators,\n      classNamesProp.dragHandle,\n      classNamesProp.header,\n      classNamesProp.lockGroup,\n      classNamesProp.notToggle,\n      classNamesProp.removeGroup,\n      isOver,\n    ]\n  );\n\n  const onCombinatorChange = (value: any, _context?: any) => {\n    if (!disabled) {\n      onPropChange('combinator', value, path);\n    }\n  };\n\n  const onIndependentCombinatorChange = (value: any, index: number, _context?: any) => {\n    if (!disabled) {\n      onPropChange('combinator', value, path.concat([index]));\n    }\n  };\n\n  const onNotToggleChange = (checked: boolean, _context?: any) => {\n    if (!disabled) {\n      onPropChange('not', checked, path);\n    }\n  };\n\n  const addRule = (_event?: any, context?: any) => {\n    if (!disabled) {\n      const newRule = createRule();\n      onRuleAdd(newRule, path, context);\n    }\n  };\n\n  const addGroup = (_event?: any, context?: any) => {\n    if (!disabled) {\n      const newGroup = createRuleGroup();\n      onGroupAdd(newGroup, path, context);\n    }\n  };\n\n  const cloneGroup = (_event?: any, _context?: any) => {\n    if (!disabled) {\n      const newPath = [...getParentPath(path), path[path.length - 1] + 1];\n      moveRule(path, newPath, true);\n    }\n  };\n\n  const toggleLockGroup = (_event?: any, _context?: any) => {\n    onPropChange('disabled', !disabled, path);\n  };\n\n  const removeGroup = (_event?: any, _context?: any) => {\n    if (!disabled) {\n      onGroupRemove(path);\n    }\n  };\n\n  const validationResult = validationMap[id ?? /* istanbul ignore next */ ''];\n  const validationClassName = getValidationClassNames(validationResult);\n  const combinatorBasedClassName = useMemo(\n    () => (independentCombinators ? null : getOption(combinators, combinator)?.className ?? ''),\n    [combinator, combinators, independentCombinators]\n  );\n\n  const outerClassName = clsx(\n    getRuleGroupClassname(ruleGroup),\n    combinatorBasedClassName,\n    standardClassnames.ruleGroup,\n    classNamesProp.ruleGroup,\n    {\n      [standardClassnames.disabled]: disabled,\n      [standardClassnames.dndDragging]: isDragging,\n    },\n    validationClassName\n  );\n\n  return {\n    addGroup,\n    addRule,\n    classNames,\n    cloneGroup,\n    combinator,\n    disabled,\n    dragMonitorId,\n    dragRef,\n    dropMonitorId,\n    dropRef,\n    isDragging,\n    isOver,\n    onCombinatorChange,\n    onGroupAdd,\n    onIndependentCombinatorChange,\n    onNotToggleChange,\n    outerClassName,\n    parentDisabled,\n    previewRef,\n    removeGroup,\n    ruleGroup,\n    toggleLockGroup,\n    validationClassName,\n    validationResult,\n  };\n};\n","import type { ChangeEvent } from 'react';\nimport { useMemo } from 'react';\n\ninterface UseSelectElementChangeHandlerParams {\n  onChange: (v: string | string[]) => void;\n  multiple?: boolean;\n}\n\n/**\n * Returns a memoized change handler for HTML select elements.\n */\nexport const useSelectElementChangeHandler = ({\n  multiple,\n  onChange,\n}: UseSelectElementChangeHandlerParams) => {\n  const selectElementChangeHandler = useMemo(\n    () =>\n      multiple\n        ? (e: ChangeEvent<HTMLSelectElement>) =>\n            onChange(Array.from(e.target.selectedOptions).map(o => o.value))\n        : (e: ChangeEvent<HTMLSelectElement>) => onChange(e.target.value),\n    [multiple, onChange]\n  );\n\n  return selectElementChangeHandler;\n};\n","import type { MouseEvent as ReactMouseEvent } from 'react';\nimport { objectEntries } from '../utils';\n\ntype EventMethod = (event: ReactMouseEvent, context?: any) => void;\ntype MethodObject<Keys extends string> = { [Key in Keys]: EventMethod };\n\nexport const useStopEventPropagation = <Keys extends string>(methods: MethodObject<Keys>) => {\n  // The `as` below is lying to TypeScript because the keys don't exist in\n  // the object yet, but they will later on so this is relatively safe.\n  const wrappedMethods = {} as MethodObject<Keys>;\n\n  for (const [fnName, fn] of objectEntries(methods)) {\n    wrappedMethods[fnName] = (event, context) => {\n      event.preventDefault();\n      event.stopPropagation();\n      fn(event, context);\n    };\n  }\n\n  return wrappedMethods;\n};\n","import { produce } from 'immer';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport type { ValueEditorProps } from '../types';\nimport { getFirstOption, joinWith, parseNumber, toArray } from '../utils';\n\nexport type UseValueEditorParams = Pick<\n  ValueEditorProps,\n  | 'handleOnChange'\n  | 'inputType'\n  | 'operator'\n  | 'value'\n  | 'listsAsArrays'\n  | 'type'\n  | 'values'\n  | 'parseNumbers'\n  | 'skipHook'\n>;\n\n/**\n * This effect is primarily concerned with multi-value editors like date range\n * pickers, editors for 'in' and 'between' operators, etc.\n *\n * @returns The value as an array (`valueAsArray`) and a change handler for\n * series of editors (`multiValueHandler`).\n *\n * **NOTE:** The following logic only applies if `skipHook` is not `true`. To avoid\n * automatically updating the `value`, pass `{ skipHook: true }`.\n *\n * If the `value` is an array and the `operator` is _not_ one of the known multi-value\n * operators (\"between\", \"notBetween\", \"in\", \"notIn\"), then the `value` will be set to\n * the first element of the array, i.e. `value[0]`.\n *\n * The same thing will happen if `inputType` is \"number\" and `value` is a string\n * containing a comma, since `<input type=\"number\">` doesn't handle commas.\n *\n * @example\n * // Consider the following rule:\n * `{ field: \"f1\", operator: \"in\", value: [\"twelve\",\"fourteen\"] }`\n * // If `operator` changes to \"=\", the value will be reset to \"twelve\".\n *\n * @example\n * // Consider the following rule:\n * `{ field: \"f1\", operator: \"between\", value: \"12,14\" }`\n * // If `operator` changes to \"=\", the value will be reset to \"12\".\n */\nexport const useValueEditor = ({\n  handleOnChange,\n  inputType,\n  operator,\n  value,\n  listsAsArrays,\n  parseNumbers,\n  values,\n  type,\n  skipHook,\n}: UseValueEditorParams) => {\n  useEffect(() => {\n    if (skipHook) return;\n    if (\n      type !== 'multiselect' &&\n      !['between', 'notBetween', 'in', 'notIn'].includes(operator) &&\n      (Array.isArray(value) ||\n        (inputType === 'number' && typeof value === 'string' && value.includes(',')))\n    ) {\n      handleOnChange(toArray(value)[0] ?? '');\n    }\n  }, [handleOnChange, inputType, operator, skipHook, type, value]);\n\n  const valueAsArray = useMemo(() => toArray(value), [value]);\n\n  const multiValueHandler = useCallback(\n    (v: any, i: number) => {\n      const val = produce(valueAsArray, va => {\n        va[i] = parseNumber(v, { parseNumbers });\n        // Enforce an array length of (at least) two for \"between\"/\"notBetween\"\n        if (i === 0 && (operator === 'between' || operator === 'notBetween') && !va[1]) {\n          va[1] = getFirstOption(values);\n        }\n      });\n      handleOnChange(listsAsArrays ? val : joinWith(val, ','));\n    },\n    [handleOnChange, listsAsArrays, operator, parseNumbers, valueAsArray, values]\n  );\n\n  return {\n    /**\n     * Array of values for when the main value represents a list, e.g. when operator\n     * is \"between\" or \"in\".\n     */\n    valueAsArray,\n    /**\n     * An update handler for a series of value editors, e.g. when operator is \"between\".\n     * Calling this function will update a single element of the value array and leave\n     * the rest of the array as is.\n     *\n     * @param {string} val The new value for the editor\n     * @param {number} idx The index of the editor (and the array element to update)\n     */\n    multiValueHandler,\n  };\n};\n","import { useCallback, useMemo } from 'react';\nimport type { ValueSelectorProps } from '../types';\nimport { joinWith, toArray } from '../utils';\n\nexport type UseValueSelectorParams = Pick<\n  ValueSelectorProps,\n  'handleOnChange' | 'listsAsArrays' | 'multiple' | 'value'\n>;\n\n/**\n * Transforms a value into an array when appropriate and provides\n * a memoized change handler.\n */\nexport const useValueSelector = ({\n  handleOnChange,\n  listsAsArrays = false,\n  multiple = false,\n  value,\n}: UseValueSelectorParams) => {\n  const onChange = useCallback(\n    (v: string | string[]) => {\n      if (multiple) {\n        const valueAsArray = toArray(v);\n        handleOnChange(listsAsArrays ? valueAsArray : joinWith(valueAsArray, ','));\n      } else {\n        handleOnChange(v);\n      }\n    },\n    [handleOnChange, listsAsArrays, multiple]\n  );\n\n  const val = useMemo(() => (multiple ? toArray(value) : value), [multiple, value]);\n\n  return {\n    /**\n     * Memoized change handler for value selectors\n     */\n    onChange,\n    /**\n     * The value as provided or, if appropriate, as an array\n     */\n    val,\n  };\n};\n","import { createContext } from 'react';\nimport type { QueryBuilderContextProps } from '../types';\n\nexport const QueryBuilderContext = createContext<QueryBuilderContextProps>({});\n\nQueryBuilderContext.displayName = 'QueryBuilderContext';\n","import * as React from 'react';\nimport { TestID } from '../defaults';\nimport { useRule, useStopEventPropagation } from '../hooks';\nimport type { RuleProps } from '../types';\n\nexport const Rule = (props: RuleProps) => {\n  const r = { ...props, ...useRule(props) };\n\n  const { cloneRule, toggleLockRule, removeRule } = r;\n  const methodsWithoutEventPropagation = useStopEventPropagation({\n    cloneRule,\n    toggleLockRule,\n    removeRule,\n  });\n\n  const subComponentProps = { ...r, ...methodsWithoutEventPropagation };\n\n  return (\n    <div\n      ref={r.dndRef}\n      data-testid={TestID.rule}\n      data-dragmonitorid={r.dragMonitorId}\n      data-dropmonitorid={r.dropMonitorId}\n      className={r.outerClassName}\n      data-rule-id={r.id}\n      data-level={r.path.length}\n      data-path={JSON.stringify(r.path)}>\n      <RuleComponents {...subComponentProps} />\n    </div>\n  );\n};\n\nRule.displayName = 'Rule';\n\nexport const RuleComponents = (r: RuleProps & ReturnType<typeof useRule>) => {\n  const {\n    schema: {\n      controls: {\n        dragHandle: DragHandleControlElement,\n        fieldSelector: FieldSelectorControlElement,\n        operatorSelector: OperatorSelectorControlElement,\n        valueSourceSelector: ValueSourceSelectorControlElement,\n        valueEditor: ValueEditorControlElement,\n        cloneRuleAction: CloneRuleActionControlElement,\n        lockRuleAction: LockRuleActionControlElement,\n        removeRuleAction: RemoveRuleActionControlElement,\n      },\n    },\n  } = r;\n\n  return (\n    <>\n      {r.schema.enableDragAndDrop && (\n        <DragHandleControlElement\n          testID={TestID.dragHandle}\n          ref={r.dragRef}\n          level={r.path.length}\n          path={r.path}\n          title={r.translations.dragHandle.title}\n          label={r.translations.dragHandle.label}\n          className={r.classNames.dragHandle}\n          disabled={r.disabled}\n          context={r.context}\n          validation={r.validationResult}\n          schema={r.schema}\n          ruleOrGroup={r.rule}\n        />\n      )}\n      <FieldSelectorControlElement\n        testID={TestID.fields}\n        options={r.schema.fields}\n        title={r.translations.fields.title}\n        value={r.rule.field}\n        operator={r.rule.operator}\n        className={r.classNames.fields}\n        handleOnChange={r.generateOnChangeHandler('field')}\n        level={r.path.length}\n        path={r.path}\n        disabled={r.disabled}\n        context={r.context}\n        validation={r.validationResult}\n        schema={r.schema}\n        rule={r.rule}\n      />\n      {(r.schema.autoSelectField || r.rule.field !== r.translations.fields.placeholderName) && (\n        <>\n          <OperatorSelectorControlElement\n            testID={TestID.operators}\n            field={r.rule.field}\n            fieldData={r.fieldData}\n            title={r.translations.operators.title}\n            options={r.operators}\n            value={r.rule.operator}\n            className={r.classNames.operators}\n            handleOnChange={r.generateOnChangeHandler('operator')}\n            level={r.path.length}\n            path={r.path}\n            disabled={r.disabled}\n            context={r.context}\n            validation={r.validationResult}\n            schema={r.schema}\n            rule={r.rule}\n          />\n          {(r.schema.autoSelectOperator ||\n            r.rule.operator !== r.translations.operators.placeholderName) &&\n            !r.hideValueControls && (\n              <>\n                {!['null', 'notNull'].includes(r.rule.operator) && r.valueSources.length > 1 && (\n                  <ValueSourceSelectorControlElement\n                    testID={TestID.valueSourceSelector}\n                    field={r.rule.field}\n                    fieldData={r.fieldData}\n                    title={r.translations.valueSourceSelector.title}\n                    options={r.valueSourceOptions}\n                    value={r.rule.valueSource ?? 'value'}\n                    className={r.classNames.valueSource}\n                    handleOnChange={r.generateOnChangeHandler('valueSource')}\n                    level={r.path.length}\n                    path={r.path}\n                    disabled={r.disabled}\n                    context={r.context}\n                    validation={r.validationResult}\n                    schema={r.schema}\n                    rule={r.rule}\n                  />\n                )}\n                <ValueEditorControlElement\n                  testID={TestID.valueEditor}\n                  field={r.rule.field}\n                  fieldData={r.fieldData}\n                  title={r.translations.value.title}\n                  operator={r.rule.operator}\n                  value={r.rule.value}\n                  valueSource={r.rule.valueSource ?? 'value'}\n                  type={r.valueEditorType}\n                  inputType={r.inputType}\n                  values={r.values}\n                  listsAsArrays={r.schema.listsAsArrays}\n                  parseNumbers={r.schema.parseNumbers}\n                  separator={r.valueEditorSeparator}\n                  className={r.classNames.value}\n                  handleOnChange={r.generateOnChangeHandler('value')}\n                  level={r.path.length}\n                  path={r.path}\n                  disabled={r.disabled}\n                  context={r.context}\n                  validation={r.validationResult}\n                  schema={r.schema}\n                  rule={r.rule}\n                />\n              </>\n            )}\n        </>\n      )}\n      {r.schema.showCloneButtons && (\n        <CloneRuleActionControlElement\n          testID={TestID.cloneRule}\n          label={r.translations.cloneRule.label}\n          title={r.translations.cloneRule.title}\n          className={r.classNames.cloneRule}\n          handleOnClick={r.cloneRule}\n          level={r.path.length}\n          path={r.path}\n          disabled={r.disabled}\n          context={r.context}\n          validation={r.validationResult}\n          ruleOrGroup={r.rule}\n          schema={r.schema}\n        />\n      )}\n      {r.schema.showLockButtons && (\n        <LockRuleActionControlElement\n          testID={TestID.lockRule}\n          label={r.translations.lockRule.label}\n          title={r.translations.lockRule.title}\n          className={r.classNames.lockRule}\n          handleOnClick={r.toggleLockRule}\n          level={r.path.length}\n          path={r.path}\n          disabled={r.disabled}\n          disabledTranslation={r.parentDisabled ? undefined : r.translations.lockRuleDisabled}\n          context={r.context}\n          validation={r.validationResult}\n          ruleOrGroup={r.rule}\n          schema={r.schema}\n        />\n      )}\n      <RemoveRuleActionControlElement\n        testID={TestID.removeRule}\n        label={r.translations.removeRule.label}\n        title={r.translations.removeRule.title}\n        className={r.classNames.removeRule}\n        handleOnClick={r.removeRule}\n        level={r.path.length}\n        path={r.path}\n        disabled={r.disabled}\n        context={r.context}\n        validation={r.validationResult}\n        ruleOrGroup={r.rule}\n        schema={r.schema}\n      />\n    </>\n  );\n};\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport { TestID } from '../defaults';\nimport { useRuleGroup, useStopEventPropagation } from '../hooks';\nimport type { RuleGroupProps } from '../types';\nimport { isRuleGroup, isRuleGroupType, pathsAreEqual } from '../utils';\n\nexport const RuleGroup = (props: RuleGroupProps) => {\n  const rg = { ...props, ...useRuleGroup(props) };\n\n  const { addRule, addGroup, cloneGroup, toggleLockGroup, removeGroup } = rg;\n  const methodsWithoutEventPropagation = useStopEventPropagation({\n    addRule,\n    addGroup,\n    cloneGroup,\n    toggleLockGroup,\n    removeGroup,\n  });\n\n  const subComponentProps = { ...rg, ...methodsWithoutEventPropagation };\n\n  return (\n    <div\n      ref={rg.previewRef}\n      className={rg.outerClassName}\n      data-testid={TestID.ruleGroup}\n      data-dragmonitorid={rg.dragMonitorId}\n      data-dropmonitorid={rg.dropMonitorId}\n      data-rule-group-id={rg.id}\n      data-level={rg.path.length}\n      data-path={JSON.stringify(rg.path)}>\n      <div ref={rg.dropRef} className={rg.classNames.header}>\n        <RuleGroupHeaderComponents {...subComponentProps} />\n      </div>\n      <div className={rg.classNames.body}>\n        <RuleGroupBodyComponents {...subComponentProps} />\n      </div>\n    </div>\n  );\n};\n\nRuleGroup.displayName = 'RuleGroup';\n\nexport const RuleGroupHeaderComponents = (rg: RuleGroupProps & ReturnType<typeof useRuleGroup>) => {\n  const {\n    schema: {\n      controls: {\n        dragHandle: DragHandleControlElement,\n        combinatorSelector: CombinatorSelectorControlElement,\n        notToggle: NotToggleControlElement,\n        addRuleAction: AddRuleActionControlElement,\n        addGroupAction: AddGroupActionControlElement,\n        cloneGroupAction: CloneGroupActionControlElement,\n        lockGroupAction: LockGroupActionControlElement,\n        removeGroupAction: RemoveGroupActionControlElement,\n      },\n    },\n  } = rg;\n\n  return (\n    <>\n      {rg.path.length > 0 && rg.schema.enableDragAndDrop && (\n        <DragHandleControlElement\n          key={TestID.dragHandle}\n          testID={TestID.dragHandle}\n          ref={rg.dragRef}\n          level={rg.path.length}\n          path={rg.path}\n          title={rg.translations.dragHandle.title}\n          label={rg.translations.dragHandle.label}\n          className={rg.classNames.dragHandle}\n          disabled={rg.disabled}\n          context={rg.context}\n          validation={rg.validationResult}\n          schema={rg.schema}\n          ruleOrGroup={rg.ruleGroup}\n        />\n      )}\n      {!rg.schema.showCombinatorsBetweenRules && !rg.schema.independentCombinators && (\n        <CombinatorSelectorControlElement\n          key={TestID.combinators}\n          testID={TestID.combinators}\n          options={rg.schema.combinators}\n          value={rg.combinator}\n          title={rg.translations.combinators.title}\n          className={rg.classNames.combinators}\n          handleOnChange={rg.onCombinatorChange}\n          rules={rg.ruleGroup.rules}\n          level={rg.path.length}\n          path={rg.path}\n          disabled={rg.disabled}\n          context={rg.context}\n          validation={rg.validationResult}\n          schema={rg.schema}\n        />\n      )}\n      {rg.schema.showNotToggle && (\n        <NotToggleControlElement\n          key={TestID.notToggle}\n          testID={TestID.notToggle}\n          className={rg.classNames.notToggle}\n          title={rg.translations.notToggle.title}\n          label={rg.translations.notToggle.label}\n          checked={rg.ruleGroup.not}\n          handleOnChange={rg.onNotToggleChange}\n          level={rg.path.length}\n          disabled={rg.disabled}\n          path={rg.path}\n          context={rg.context}\n          validation={rg.validationResult}\n          schema={rg.schema}\n          ruleGroup={rg.ruleGroup}\n        />\n      )}\n      <AddRuleActionControlElement\n        key={TestID.addRule}\n        testID={TestID.addRule}\n        label={rg.translations.addRule.label}\n        title={rg.translations.addRule.title}\n        className={rg.classNames.addRule}\n        handleOnClick={rg.addRule}\n        rules={rg.ruleGroup.rules}\n        level={rg.path.length}\n        path={rg.path}\n        disabled={rg.disabled}\n        context={rg.context}\n        validation={rg.validationResult}\n        ruleOrGroup={rg.ruleGroup}\n        schema={rg.schema}\n      />\n      <AddGroupActionControlElement\n        key={TestID.addGroup}\n        testID={TestID.addGroup}\n        label={rg.translations.addGroup.label}\n        title={rg.translations.addGroup.title}\n        className={rg.classNames.addGroup}\n        handleOnClick={rg.addGroup}\n        rules={rg.ruleGroup.rules}\n        level={rg.path.length}\n        path={rg.path}\n        disabled={rg.disabled}\n        context={rg.context}\n        validation={rg.validationResult}\n        ruleOrGroup={rg.ruleGroup}\n        schema={rg.schema}\n      />\n      {rg.schema.showCloneButtons && rg.path.length >= 1 && (\n        <CloneGroupActionControlElement\n          key={TestID.cloneGroup}\n          testID={TestID.cloneGroup}\n          label={rg.translations.cloneRuleGroup.label}\n          title={rg.translations.cloneRuleGroup.title}\n          className={rg.classNames.cloneGroup}\n          handleOnClick={rg.cloneGroup}\n          rules={rg.ruleGroup.rules}\n          level={rg.path.length}\n          path={rg.path}\n          disabled={rg.disabled}\n          context={rg.context}\n          validation={rg.validationResult}\n          ruleOrGroup={rg.ruleGroup}\n          schema={rg.schema}\n        />\n      )}\n      {rg.schema.showLockButtons && (\n        <LockGroupActionControlElement\n          key={TestID.lockGroup}\n          testID={TestID.lockGroup}\n          label={rg.translations.lockGroup.label}\n          title={rg.translations.lockGroup.title}\n          className={rg.classNames.lockGroup}\n          handleOnClick={rg.toggleLockGroup}\n          rules={rg.ruleGroup.rules}\n          level={rg.path.length}\n          path={rg.path}\n          disabled={rg.disabled}\n          disabledTranslation={rg.parentDisabled ? undefined : rg.translations.lockGroupDisabled}\n          context={rg.context}\n          validation={rg.validationResult}\n          ruleOrGroup={rg.ruleGroup}\n          schema={rg.schema}\n        />\n      )}\n      {rg.path.length > 0 && (\n        <RemoveGroupActionControlElement\n          key={TestID.removeGroup}\n          testID={TestID.removeGroup}\n          label={rg.translations.removeGroup.label}\n          title={rg.translations.removeGroup.title}\n          className={rg.classNames.removeGroup}\n          handleOnClick={rg.removeGroup}\n          rules={rg.ruleGroup.rules}\n          level={rg.path.length}\n          path={rg.path}\n          disabled={rg.disabled}\n          context={rg.context}\n          validation={rg.validationResult}\n          ruleOrGroup={rg.ruleGroup}\n          schema={rg.schema}\n        />\n      )}\n    </>\n  );\n};\n\nexport const RuleGroupBodyComponents = (rg: RuleGroupProps & ReturnType<typeof useRuleGroup>) => {\n  const {\n    schema: {\n      controls: {\n        combinatorSelector: CombinatorSelectorControlElement,\n        inlineCombinator: InlineCombinatorControlElement,\n        ruleGroup: RuleGroupControlElement,\n        rule: RuleControlElement,\n      },\n    },\n  } = rg;\n\n  return (\n    <>\n      {rg.ruleGroup.rules.map((r, idx) => {\n        const thisPath = [...rg.path, idx];\n        const thisPathDisabled =\n          rg.disabled ||\n          (typeof r !== 'string' && r.disabled) ||\n          rg.schema.disabledPaths.some(p => pathsAreEqual(thisPath, p));\n        const key = typeof r === 'string' ? [...thisPath, r].join('-') : r.id;\n        return (\n          <Fragment key={key}>\n            {idx > 0 &&\n              !rg.schema.independentCombinators &&\n              rg.schema.showCombinatorsBetweenRules && (\n                <InlineCombinatorControlElement\n                  key=\"inline-combinator\"\n                  options={rg.schema.combinators}\n                  value={rg.combinator}\n                  title={rg.translations.combinators.title}\n                  className={rg.classNames.combinators}\n                  handleOnChange={rg.onCombinatorChange}\n                  rules={rg.ruleGroup.rules}\n                  level={rg.path.length}\n                  context={rg.context}\n                  validation={rg.validationResult}\n                  component={CombinatorSelectorControlElement}\n                  path={thisPath}\n                  disabled={rg.disabled}\n                  independentCombinators={rg.schema.independentCombinators}\n                  schema={rg.schema}\n                />\n              )}\n            {typeof r === 'string' ? (\n              <InlineCombinatorControlElement\n                key=\"inline-combinator-str\"\n                options={rg.schema.combinators}\n                value={r}\n                title={rg.translations.combinators.title}\n                className={rg.classNames.combinators}\n                handleOnChange={val => rg.onIndependentCombinatorChange(val, idx)}\n                rules={rg.ruleGroup.rules}\n                level={rg.path.length}\n                context={rg.context}\n                validation={rg.validationResult}\n                component={CombinatorSelectorControlElement}\n                path={thisPath}\n                disabled={thisPathDisabled}\n                independentCombinators={rg.schema.independentCombinators}\n                schema={rg.schema}\n              />\n            ) : isRuleGroup(r) ? (\n              <RuleGroupControlElement\n                key=\"rule-group\"\n                id={r.id}\n                schema={rg.schema}\n                actions={rg.actions}\n                path={thisPath}\n                translations={rg.translations}\n                ruleGroup={r}\n                rules={r.rules}\n                combinator={isRuleGroupType(r) ? r.combinator : undefined}\n                not={!!r.not}\n                disabled={thisPathDisabled}\n                parentDisabled={rg.parentDisabled || rg.disabled}\n                context={rg.context}\n              />\n            ) : (\n              <RuleControlElement\n                key=\"rule\"\n                id={r.id!}\n                rule={r}\n                field={r.field}\n                operator={r.operator}\n                value={r.value}\n                valueSource={r.valueSource}\n                schema={rg.schema}\n                actions={rg.actions}\n                path={thisPath}\n                disabled={thisPathDisabled}\n                parentDisabled={rg.parentDisabled || rg.disabled}\n                translations={rg.translations}\n                context={rg.context}\n              />\n            )}\n          </Fragment>\n        );\n      })}\n    </>\n  );\n};\n","import * as React from 'react';\nimport { standardClassnames } from '../defaults';\nimport { useValueEditor } from '../hooks';\nimport type { ValueEditorProps } from '../types';\nimport { getFirstOption, parseNumber } from '../utils';\nimport { ValueSelector } from './ValueSelector';\n\nexport const ValueEditor = ({\n  operator,\n  value,\n  handleOnChange,\n  title,\n  className,\n  type = 'text',\n  inputType = 'text',\n  values = [],\n  listsAsArrays,\n  parseNumbers,\n  fieldData,\n  disabled,\n  separator = null,\n  skipHook = false,\n  testID,\n  selectorComponent: SelectorComponent = ValueSelector,\n  ...props\n}: ValueEditorProps) => {\n  const { valueAsArray, multiValueHandler } = useValueEditor({\n    skipHook,\n    handleOnChange,\n    inputType,\n    operator,\n    value,\n    type,\n    listsAsArrays,\n    parseNumbers,\n    values,\n  });\n\n  if (operator === 'null' || operator === 'notNull') {\n    return null;\n  }\n\n  const placeHolderText = fieldData?.placeholder ?? '';\n  const inputTypeCoerced = ['in', 'notIn'].includes(operator) ? 'text' : inputType || 'text';\n\n  if (\n    (operator === 'between' || operator === 'notBetween') &&\n    (type === 'select' || type === 'text')\n  ) {\n    const editors = ['from', 'to'].map((key, i) => {\n      if (type === 'text') {\n        return (\n          <input\n            key={key}\n            type={inputTypeCoerced}\n            placeholder={placeHolderText}\n            value={valueAsArray[i] ?? ''}\n            className={standardClassnames.valueListItem}\n            disabled={disabled}\n            onChange={e => multiValueHandler(e.target.value, i)}\n          />\n        );\n      }\n      return (\n        <SelectorComponent\n          {...props}\n          key={key}\n          className={standardClassnames.valueListItem}\n          handleOnChange={v => multiValueHandler(v, i)}\n          disabled={disabled}\n          value={valueAsArray[i] ?? getFirstOption(values)}\n          options={values}\n          listsAsArrays={listsAsArrays}\n        />\n      );\n    });\n\n    return (\n      <span data-testid={testID} className={className} title={title}>\n        {editors[0]}\n        {separator}\n        {editors[1]}\n      </span>\n    );\n  }\n\n  switch (type) {\n    case 'select':\n    case 'multiselect':\n      return (\n        <SelectorComponent\n          {...props}\n          testID={testID}\n          className={className}\n          title={title}\n          handleOnChange={handleOnChange}\n          disabled={disabled}\n          value={value}\n          options={values}\n          multiple={type === 'multiselect'}\n          listsAsArrays={listsAsArrays}\n        />\n      );\n\n    case 'textarea':\n      return (\n        <textarea\n          data-testid={testID}\n          placeholder={placeHolderText}\n          value={value}\n          title={title}\n          className={className}\n          disabled={disabled}\n          onChange={e => handleOnChange(e.target.value)}\n        />\n      );\n\n    case 'switch':\n    case 'checkbox':\n      return (\n        <input\n          data-testid={testID}\n          type=\"checkbox\"\n          className={className}\n          title={title}\n          onChange={e => handleOnChange(e.target.checked)}\n          checked={!!value}\n          disabled={disabled}\n        />\n      );\n\n    case 'radio':\n      return (\n        <span data-testid={testID} className={className} title={title}>\n          {values.map(v => (\n            <label key={v.name}>\n              <input\n                type=\"radio\"\n                value={v.name}\n                disabled={disabled}\n                checked={value === v.name}\n                onChange={e => handleOnChange(e.target.value)}\n              />\n              {v.label}\n            </label>\n          ))}\n        </span>\n      );\n  }\n\n  return (\n    <input\n      data-testid={testID}\n      type={inputTypeCoerced}\n      placeholder={placeHolderText}\n      value={value}\n      title={title}\n      className={className}\n      disabled={disabled}\n      onChange={e => handleOnChange(parseNumber(e.target.value, { parseNumbers }))}\n    />\n  );\n};\n\nValueEditor.displayName = 'ValueEditor';\n","import * as React from 'react';\nimport { useSelectElementChangeHandler, useValueSelector } from '../hooks';\nimport type { ValueSelectorProps } from '../types';\nimport { toOptions } from '../utils';\n\nexport const ValueSelector = ({\n  className,\n  handleOnChange,\n  options,\n  title,\n  value,\n  multiple,\n  listsAsArrays,\n  disabled,\n  testID,\n}: ValueSelectorProps) => {\n  const { onChange, val } = useValueSelector({ handleOnChange, listsAsArrays, multiple, value });\n\n  const selectElementChangeHandler = useSelectElementChangeHandler({ multiple, onChange });\n\n  return (\n    <select\n      data-testid={testID}\n      className={className}\n      value={val}\n      title={title}\n      disabled={disabled}\n      multiple={!!multiple}\n      onChange={selectElementChangeHandler}>\n      {toOptions(options)}\n    </select>\n  );\n};\n\nValueSelector.displayName = 'ValueSelector';\n","import type { Controls } from '../types';\nimport { ActionElement } from './ActionElement';\nimport { DragHandle } from './DragHandle';\nimport { InlineCombinator } from './InlineCombinator';\nimport { NotToggle } from './NotToggle';\nimport { Rule } from './Rule';\nimport { RuleGroup } from './RuleGroup';\nimport { ValueEditor } from './ValueEditor';\nimport { ValueSelector } from './ValueSelector';\n\nexport const defaultControlElements: Controls = {\n  addGroupAction: ActionElement,\n  removeGroupAction: ActionElement,\n  cloneGroupAction: ActionElement,\n  cloneRuleAction: ActionElement,\n  addRuleAction: ActionElement,\n  removeRuleAction: ActionElement,\n  combinatorSelector: ValueSelector,\n  inlineCombinator: InlineCombinator,\n  fieldSelector: ValueSelector,\n  operatorSelector: ValueSelector,\n  valueEditor: ValueEditor,\n  notToggle: NotToggle,\n  ruleGroup: RuleGroup,\n  rule: Rule,\n  dragHandle: DragHandle,\n  lockRuleAction: ActionElement,\n  lockGroupAction: ActionElement,\n  valueSourceSelector: ValueSelector,\n};\n","import { QueryBuilder } from './components';\nimport * as messages from './messages';\n\nexport * from './components';\nexport * from './defaults';\nexport * from './hooks';\nexport * from './types';\nexport * from './utils';\nexport { messages };\nexport default QueryBuilder;\n"],"mappings":"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G,KAAI,IAAG,KAAI,IAAG,OAAM,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI;AAAA,IACnU,cAAc,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GA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AAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,GAAE,EAAC,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,CAAC,IAAG,EAAE,GAAE,KAAI,EAAC,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAC,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,CAAC,CAAC;AAAA,IAC3gP,gBAAgB,EAAC,IAAG,CAAC,GAAE,CAAC,EAAC;AAAA,IACzB,YAAY,SAAS,WAAY,KAAK,MAAM;AACxC,UAAI,KAAK,aAAa;AAClB,aAAK,MAAM,GAAG;AAAA,MAClB,OAAO;AACH,YAAI,QAAQ,IAAI,MAAM,GAAG;AACzB,cAAM,OAAO;AACb,cAAM;AAAA,MACV;AAAA,IACJ;AAAA,IACA,OAAO,SAAS,MAAM,OAAO;AACzB,UAAI,OAAO,MAAM,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,SAAS,IAAI,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM;AACtK,UAAI,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;AACzC,UAAIC,SAAQ,OAAO,OAAO,KAAK,KAAK;AACpC,UAAI,cAAc,EAAE,IAAI,CAAC,EAAE;AAC3B,eAAS,KAAK,KAAK,IAAI;AACnB,YAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,CAAC,GAAG;AAClD,sBAAY,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;AAAA,QACjC;AAAA,MACJ;AACA,MAAAA,OAAM,SAAS,OAAO,YAAY,EAAE;AACpC,kBAAY,GAAG,QAAQA;AACvB,kBAAY,GAAG,SAAS;AACxB,UAAI,OAAOA,OAAM,UAAU,aAAa;AACpC,QAAAA,OAAM,SAAS,CAAC;AAAA,MACpB;AACA,UAAI,QAAQA,OAAM;AAClB,aAAO,KAAK,KAAK;AACjB,UAAI,SAASA,OAAM,WAAWA,OAAM,QAAQ;AAC5C,UAAI,OAAO,YAAY,GAAG,eAAe,YAAY;AACjD,aAAK,aAAa,YAAY,GAAG;AAAA,MACrC,OAAO;AACH,aAAK,aAAa,OAAO,eAAe,IAAI,EAAE;AAAA,MAClD;AACA,eAAS,SAAS,GAAG;AACjB,cAAM,SAAS,MAAM,SAAS,IAAI;AAClC,eAAO,SAAS,OAAO,SAAS;AAChC,eAAO,SAAS,OAAO,SAAS;AAAA,MACpC;AACA,UAAI,MAAM,WAAY;AAClB,YAAI;AACJ,gBAAQA,OAAM,IAAI,KAAK;AACvB,YAAI,OAAO,UAAU,UAAU;AAC3B,kBAAQ,KAAK,SAAS,KAAK,KAAK;AAAA,QACpC;AACA,eAAO;AAAA,MACX;AACA,UAAI,QAAQ,gBAAgB,OAAO,QAAQ,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,KAAK,UAAU;AAC/E,aAAO,MAAM;AACT,gBAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,YAAI,KAAK,eAAe,KAAK,GAAG;AAC5B,mBAAS,KAAK,eAAe,KAAK;AAAA,QACtC,OAAO;AACH,cAAI,WAAW,QAAQ,OAAO,UAAU,aAAa;AACjD,qBAAS,IAAI;AAAA,UACjB;AACA,mBAAS,MAAM,KAAK,KAAK,MAAM,KAAK,EAAE,MAAM;AAAA,QAChD;AACY,YAAI,OAAO,WAAW,eAAe,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG;AACvE,cAAI,SAAS;AACb,qBAAW,CAAC;AACZ,eAAK,KAAK,MAAM,KAAK,GAAG;AACpB,gBAAI,KAAK,WAAW,CAAC,KAAK,IAAI,QAAQ;AAClC,uBAAS,KAAK,MAAO,KAAK,WAAW,CAAC,IAAI,GAAI;AAAA,YAClD;AAAA,UACJ;AACA,cAAIA,OAAM,cAAc;AACpB,qBAAS,0BAA0B,WAAW,KAAK,QAAQA,OAAM,aAAa,IAAI,iBAAiB,SAAS,KAAK,IAAI,IAAI,aAAc,KAAK,WAAW,MAAM,KAAK,UAAU;AAAA,UAChL,OAAO;AACH,qBAAS,0BAA0B,WAAW,KAAK,mBAAmB,UAAU,MAAM,iBAAiB,OAAQ,KAAK,WAAW,MAAM,KAAK,UAAU;AAAA,UACxJ;AACA,eAAK,WAAW,QAAQ;AAAA,YACpB,MAAMA,OAAM;AAAA,YACZ,OAAO,KAAK,WAAW,MAAM,KAAK;AAAA,YAClC,MAAMA,OAAM;AAAA,YACZ,KAAK;AAAA,YACL;AAAA,UACJ,CAAC;AAAA,QACL;AACJ,YAAI,OAAO,CAAC,aAAa,SAAS,OAAO,SAAS,GAAG;AACjD,gBAAM,IAAI,MAAM,sDAAsD,QAAQ,cAAc,MAAM;AAAA,QACtG;AACA,gBAAQ,OAAO,CAAC,GAAG;AAAA,UACnB,KAAK;AACD,kBAAM,KAAK,MAAM;AACjB,mBAAO,KAAKA,OAAM,MAAM;AACxB,mBAAO,KAAKA,OAAM,MAAM;AACxB,kBAAM,KAAK,OAAO,CAAC,CAAC;AACpB,qBAAS;AACT,gBAAI,CAAC,gBAAgB;AACjB,uBAASA,OAAM;AACf,uBAASA,OAAM;AACf,yBAAWA,OAAM;AACjB,sBAAQA,OAAM;AACd,kBAAI,aAAa,GAAG;AAChB;AAAA,cACJ;AAAA,YACJ,OAAO;AACH,uBAAS;AACT,+BAAiB;AAAA,YACrB;AACA;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC;AACpC,kBAAM,IAAI,OAAO,OAAO,SAAS,GAAG;AACpC,kBAAM,KAAK;AAAA,cACP,YAAY,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE;AAAA,cAC/C,WAAW,OAAO,OAAO,SAAS,CAAC,EAAE;AAAA,cACrC,cAAc,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE;AAAA,cACjD,aAAa,OAAO,OAAO,SAAS,CAAC,EAAE;AAAA,YAC3C;AACA,gBAAI,QAAQ;AACR,oBAAM,GAAG,QAAQ;AAAA,gBACb,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE,MAAM,CAAC;AAAA,gBAC1C,OAAO,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,cACrC;AAAA,YACJ;AACA,gBAAI,KAAK,cAAc,MAAM,OAAO;AAAA,cAChC;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,OAAO,CAAC;AAAA,cACR;AAAA,cACA;AAAA,YACJ,EAAE,OAAO,IAAI,CAAC;AACd,gBAAI,OAAO,MAAM,aAAa;AAC1B,qBAAO;AAAA,YACX;AACA,gBAAI,KAAK;AACL,sBAAQ,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC;AACnC,uBAAS,OAAO,MAAM,GAAG,KAAK,GAAG;AACjC,uBAAS,OAAO,MAAM,GAAG,KAAK,GAAG;AAAA,YACrC;AACA,kBAAM,KAAK,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,mBAAO,KAAK,MAAM,CAAC;AACnB,mBAAO,KAAK,MAAM,EAAE;AACpB,uBAAW,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,MAAM,SAAS,CAAC,CAAC;AACjE,kBAAM,KAAK,QAAQ;AACnB;AAAA,UACJ,KAAK;AACD,mBAAO;AAAA,QACX;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AAAA,EAAC;AAED,MAAI,QAAS,WAAU;AACvB,QAAIA,SAAS;AAAA,MAEb,KAAI;AAAA,MAEJ,YAAW,SAAS,WAAW,KAAK,MAAM;AAClC,YAAI,KAAK,GAAG,QAAQ;AAChB,eAAK,GAAG,OAAO,WAAW,KAAK,IAAI;AAAA,QACvC,OAAO;AACH,gBAAM,IAAI,MAAM,GAAG;AAAA,QACvB;AAAA,MACJ;AAAA;AAAA,MAGJ,UAAS,SAAU,OAAO,IAAI;AACtB,aAAK,KAAK,MAAM,KAAK,MAAM,CAAC;AAC5B,aAAK,SAAS;AACd,aAAK,QAAQ,KAAK,aAAa,KAAK,OAAO;AAC3C,aAAK,WAAW,KAAK,SAAS;AAC9B,aAAK,SAAS,KAAK,UAAU,KAAK,QAAQ;AAC1C,aAAK,iBAAiB,CAAC,SAAS;AAChC,aAAK,SAAS;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,WAAW;AAAA,UACX,aAAa;AAAA,QACjB;AACA,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,GAAE,CAAC;AAAA,QAC5B;AACA,aAAK,SAAS;AACd,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,OAAM,WAAY;AACV,YAAI,KAAK,KAAK,OAAO,CAAC;AACtB,aAAK,UAAU;AACf,aAAK;AACL,aAAK;AACL,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,YAAI,QAAQ,GAAG,MAAM,iBAAiB;AACtC,YAAI,OAAO;AACP,eAAK;AACL,eAAK,OAAO;AAAA,QAChB,OAAO;AACH,eAAK,OAAO;AAAA,QAChB;AACA,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,MAAM,CAAC;AAAA,QACvB;AAEA,aAAK,SAAS,KAAK,OAAO,MAAM,CAAC;AACjC,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,OAAM,SAAU,IAAI;AACZ,YAAI,MAAM,GAAG;AACb,YAAI,QAAQ,GAAG,MAAM,eAAe;AAEpC,aAAK,SAAS,KAAK,KAAK;AACxB,aAAK,SAAS,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,SAAS,GAAG;AAE5D,aAAK,UAAU;AACf,YAAI,WAAW,KAAK,MAAM,MAAM,eAAe;AAC/C,aAAK,QAAQ,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,SAAS,CAAC;AACvD,aAAK,UAAU,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,CAAC;AAE7D,YAAI,MAAM,SAAS,GAAG;AAClB,eAAK,YAAY,MAAM,SAAS;AAAA,QACpC;AACA,YAAI,IAAI,KAAK,OAAO;AAEpB,aAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAa,SACR,MAAM,WAAW,SAAS,SAAS,KAAK,OAAO,eAAe,KAC5D,SAAS,SAAS,SAAS,MAAM,MAAM,EAAE,SAAS,MAAM,CAAC,EAAE,SAChE,KAAK,OAAO,eAAe;AAAA,QACjC;AAEA,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,GAAG;AAAA,QACvD;AACA,aAAK,SAAS,KAAK,OAAO;AAC1B,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,MAAK,WAAY;AACT,aAAK,QAAQ;AACb,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,QAAO,WAAY;AACX,YAAI,KAAK,QAAQ,iBAAiB;AAC9B,eAAK,aAAa;AAAA,QACtB,OAAO;AACH,iBAAO,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK,qIAAqI,KAAK,aAAa,GAAG;AAAA,YAC9N,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,KAAK;AAAA,UACf,CAAC;AAAA,QAEL;AACA,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,MAAK,SAAU,GAAG;AACV,aAAK,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC;AAAA,MAClC;AAAA;AAAA,MAGJ,WAAU,WAAY;AACd,YAAI,OAAO,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,KAAK,MAAM,MAAM;AACzE,gBAAQ,KAAK,SAAS,KAAK,QAAM,MAAM,KAAK,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAAA,MAC7E;AAAA;AAAA,MAGJ,eAAc,WAAY;AAClB,YAAI,OAAO,KAAK;AAChB,YAAI,KAAK,SAAS,IAAI;AAClB,kBAAQ,KAAK,OAAO,OAAO,GAAG,KAAG,KAAK,MAAM;AAAA,QAChD;AACA,gBAAQ,KAAK,OAAO,GAAE,EAAE,KAAK,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,OAAO,EAAE;AAAA,MAClF;AAAA;AAAA,MAGJ,cAAa,WAAY;AACjB,YAAI,MAAM,KAAK,UAAU;AACzB,YAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE,KAAK,GAAG;AAC1C,eAAO,MAAM,KAAK,cAAc,IAAI,OAAO,IAAI;AAAA,MACnD;AAAA;AAAA,MAGJ,YAAW,SAAS,OAAO,cAAc;AACjC,YAAI,OACA,OACA;AAEJ,YAAI,KAAK,QAAQ,iBAAiB;AAE9B,mBAAS;AAAA,YACL,UAAU,KAAK;AAAA,YACf,QAAQ;AAAA,cACJ,YAAY,KAAK,OAAO;AAAA,cACxB,WAAW,KAAK;AAAA,cAChB,cAAc,KAAK,OAAO;AAAA,cAC1B,aAAa,KAAK,OAAO;AAAA,YAC7B;AAAA,YACA,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,YACd,QAAQ,KAAK;AAAA,YACb,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,QAAQ,KAAK;AAAA,YACb,IAAI,KAAK;AAAA,YACT,gBAAgB,KAAK,eAAe,MAAM,CAAC;AAAA,YAC3C,MAAM,KAAK;AAAA,UACf;AACA,cAAI,KAAK,QAAQ,QAAQ;AACrB,mBAAO,OAAO,QAAQ,KAAK,OAAO,MAAM,MAAM,CAAC;AAAA,UACnD;AAAA,QACJ;AAEA,gBAAQ,MAAM,CAAC,EAAE,MAAM,iBAAiB;AACxC,YAAI,OAAO;AACP,eAAK,YAAY,MAAM;AAAA,QAC3B;AACA,aAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAa,QACA,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,SAC5E,KAAK,OAAO,cAAc,MAAM,CAAC,EAAE;AAAA,QACpD;AACA,aAAK,UAAU,MAAM,CAAC;AACtB,aAAK,SAAS,MAAM,CAAC;AACrB,aAAK,UAAU;AACf,aAAK,SAAS,KAAK,OAAO;AAC1B,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM;AAAA,QAChE;AACA,aAAK,QAAQ;AACb,aAAK,aAAa;AAClB,aAAK,SAAS,KAAK,OAAO,MAAM,MAAM,CAAC,EAAE,MAAM;AAC/C,aAAK,WAAW,MAAM,CAAC;AACvB,gBAAQ,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,MAAM,cAAc,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC;AACtH,YAAI,KAAK,QAAQ,KAAK,QAAQ;AAC1B,eAAK,OAAO;AAAA,QAChB;AACA,YAAI,OAAO;AACP,iBAAO;AAAA,QACX,WAAW,KAAK,YAAY;AAExB,mBAAS,KAAK,QAAQ;AAClB,iBAAK,CAAC,IAAI,OAAO,CAAC;AAAA,UACtB;AACA,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX;AAAA;AAAA,MAGJ,MAAK,WAAY;AACT,YAAI,KAAK,MAAM;AACX,iBAAO,KAAK;AAAA,QAChB;AACA,YAAI,CAAC,KAAK,QAAQ;AACd,eAAK,OAAO;AAAA,QAChB;AAEA,YAAI,OACA,OACA,WACA;AACJ,YAAI,CAAC,KAAK,OAAO;AACb,eAAK,SAAS;AACd,eAAK,QAAQ;AAAA,QACjB;AACA,YAAI,QAAQ,KAAK,cAAc;AAC/B,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,sBAAY,KAAK,OAAO,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC;AAClD,cAAI,cAAc,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAChE,oBAAQ;AACR,oBAAQ;AACR,gBAAI,KAAK,QAAQ,iBAAiB;AAC9B,sBAAQ,KAAK,WAAW,WAAW,MAAM,CAAC,CAAC;AAC3C,kBAAI,UAAU,OAAO;AACjB,uBAAO;AAAA,cACX,WAAW,KAAK,YAAY;AACxB,wBAAQ;AACR;AAAA,cACJ,OAAO;AAEH,uBAAO;AAAA,cACX;AAAA,YACJ,WAAW,CAAC,KAAK,QAAQ,MAAM;AAC3B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,OAAO;AACP,kBAAQ,KAAK,WAAW,OAAO,MAAM,KAAK,CAAC;AAC3C,cAAI,UAAU,OAAO;AACjB,mBAAO;AAAA,UACX;AAEA,iBAAO;AAAA,QACX;AACA,YAAI,KAAK,WAAW,IAAI;AACpB,iBAAO,KAAK;AAAA,QAChB,OAAO;AACH,iBAAO,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK,2BAA2B,KAAK,aAAa,GAAG;AAAA,YACpH,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,KAAK;AAAA,UACf,CAAC;AAAA,QACL;AAAA,MACJ;AAAA;AAAA,MAGJ,KAAI,SAAS,MAAO;AACZ,YAAI,IAAI,KAAK,KAAK;AAClB,YAAI,GAAG;AACH,iBAAO;AAAA,QACX,OAAO;AACH,iBAAO,KAAK,IAAI;AAAA,QACpB;AAAA,MACJ;AAAA;AAAA,MAGJ,OAAM,SAAS,MAAO,WAAW;AACzB,aAAK,eAAe,KAAK,SAAS;AAAA,MACtC;AAAA;AAAA,MAGJ,UAAS,SAAS,WAAY;AACtB,YAAI,IAAI,KAAK,eAAe,SAAS;AACrC,YAAI,IAAI,GAAG;AACP,iBAAO,KAAK,eAAe,IAAI;AAAA,QACnC,OAAO;AACH,iBAAO,KAAK,eAAe,CAAC;AAAA,QAChC;AAAA,MACJ;AAAA;AAAA,MAGJ,eAAc,SAAS,gBAAiB;AAChC,YAAI,KAAK,eAAe,UAAU,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,GAAG;AACnF,iBAAO,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC,EAAE;AAAA,QAChF,OAAO;AACH,iBAAO,KAAK,WAAW,SAAS,EAAE;AAAA,QACtC;AAAA,MACJ;AAAA;AAAA,MAGJ,UAAS,SAAS,SAAU,GAAG;AACvB,YAAI,KAAK,eAAe,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC;AACpD,YAAI,KAAK,GAAG;AACR,iBAAO,KAAK,eAAe,CAAC;AAAA,QAChC,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA;AAAA,MAGJ,WAAU,SAAS,UAAW,WAAW;AACjC,aAAK,MAAM,SAAS;AAAA,MACxB;AAAA;AAAA,MAGJ,gBAAe,SAAS,iBAAiB;AACjC,eAAO,KAAK,eAAe;AAAA,MAC/B;AAAA,MACJ,SAAS,EAAC,QAAO,KAAI;AAAA,MACrB,eAAe,SAAS,UAAU,IAAG,KAAI,2BAA0B,UAAU;AAC7E,YAAI,UAAQ;AACZ,gBAAO,2BAA2B;AAAA,UAClC,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAE,mBAAO;AACd;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA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AAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,MAAI,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,KAAI,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAI,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,EAAE,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,MAAI,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,EAAE,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,EAAE,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,IAAG,EAAE,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,EAAE,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,KAAI,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,IAAG,IAAG,EAAE,GAAE,OAAK,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,EAAE,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG,GAAE,OAAK,CAAC,IAAG,GAAG,GAAE,OAAK,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,GAAG,GAAE,OAAK,CAAC,GAAE,GAAG;AAC7wI,MAAI,SAAS;AAAA,IAAC,OAAO,SAAS,QAAS;AAAA,IAAE;AAAA,IACzC,IAAI,CAAC;AAAA,IACL,UAAU,EAAC,SAAQ,GAAE,QAAO,GAAE,gBAAe,GAAE,gBAAe,GAAE,OAAM,GAAE,eAAc,GAAE,KAAI,GAAE,+BAA8B,GAAE,4BAA2B,IAAG,gBAAe,IAAG,aAAY,IAAG,6BAA4B,IAAG,SAAQ,IAAG,eAAc,IAAG,KAAI,IAAG,KAAI,IAAG,UAAS,IAAG,mBAAkB,IAAG,uBAAsB,IAAG,mBAAkB,IAAG,qBAAoB,IAAG,mBAAkB,IAAG,sBAAqB,IAAG,eAAc,IAAG,uBAAsB,IAAG,kBAAiB,IAAG,oBAAmB,IAAG,OAAM,IAAG,YAAW,IAAG,eAAc,IAAG,iBAAgB,IAAG,sBAAqB,IAAG,KAAI,IAAG,WAAU,IAAG,iBAAgB,IAAG,oBAAmB,IAAG,kBAAiB,IAAG,qBAAoB,IAAG,aAAY,IAAG,gBAAe,IAAG,uBAAsB,IAAG,KAAI,IAAG,cAAa,IAAG,KAAI,IAAG,kBAAiB,IAAG,QAAO,IAAG,sBAAqB,IAAG,cAAa,IAAG,OAAM,IAAG,MAAK,IAAG,cAAa,IAAG,UAAS,IAAG,UAAS,IAAG,UAAS,IAAG,oBAAmB,IAAG,eAAc,IAAG,WAAU,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO,IAAG,QAAO,IAAG,WAAU,IAAG,gBAAe,IAAG,iBAAgB,IAAG,4BAA2B,IAAG,uBAAsB,IAAG,mBAAkB,IAAG,iBAAgB,IAAG,kBAAiB,IAAG,QAAO,IAAG,QAAO,IAAG,kBAAiB,IAAG,QAAO,IAAG,aAAY,IAAG,QAAO,IAAG,OAAM,IAAG,sBAAqB,IAAG,KAAI,IAAG,eAAc,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,UAAS,IAAG,aAAY,IAAG,OAAM,IAAG,UAAS,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,YAAW,IAAG,YAAW,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,OAAM,IAAG,OAAM,IAAG,KAAI,KAAI,KAAI,KAAI,WAAU,KAAI,OAAM,KAAI,cAAa,KAAI,UAAS,KAAI,aAAY,KAAI,MAAK,KAAI,WAAU,KAAI,OAAM,KAAI,UAAS,KAAI,QAAO,KAAI,UAAS,KAAI,uBAAsB,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,0BAAyB,KAAI,OAAM,KAAI,mBAAkB,KAAI,MAAK,KAAI,iBAAgB,KAAI,WAAU,KAAI,MAAK,KAAI,OAAM,KAAI,aAAY,KAAI,SAAQ,KAAI,gBAAe,KAAI,YAAW,KAAI,eAAc,KAAI,QAAO,KAAI,UAAS,KAAI,YAAW,KAAI,+BAA8B,KAAI,YAAW,KAAI,YAAW,KAAI,0BAAyB,KAAI,YAAW,KAAI,OAAM,KAAI,QAAO,KAAI,cAAa,KAAI,UAAS,KAAI,SAAQ,KAAI,SAAQ,KAAI,UAAS,KAAI,iBAAgB,KAAI,aAAY,KAAI,aAAY,KAAI,qCAAoC,KAAI,OAAM,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,QAAO,KAAI,oBAAmB,KAAI,gBAAe,KAAI,2BAA0B,KAAI,mBAAkB,KAAI,MAAK,KAAI,oBAAmB,KAAI,SAAQ,KAAI,SAAQ,KAAI,cAAa,KAAI,QAAO,KAAI,SAAQ,KAAI,WAAU,KAAI,SAAQ,KAAI,sBAAqB,KAAI,cAAa,KAAI,QAAO,KAAI,gBAAe,KAAI,kBAAiB,KAAI,qBAAoB,KAAI,WAAU,KAAI,sBAAqB,KAAI,MAAK,KAAI,SAAQ,KAAI,mBAAkB,KAAI,aAAY,KAAI,YAAW,KAAI,gBAAe,KAAI,SAAQ,KAAI,OAAM,KAAI,WAAU,KAAI,uBAAsB,KAAI,uBAAsB,KAAI,mBAAkB,KAAI,cAAa,KAAI,OAAM,KAAI,UAAS,KAAI,SAAQ,KAAI,gBAAe,KAAI,WAAU,GAAE,QAAO,EAAC;AAAA,IACz5F,YAAY,EAAC,GAAE,SAAQ,GAAE,OAAM,GAAE,KAAI,IAAG,SAAQ,IAAG,KAAI,IAAG,KAAI,IAAG,UAAS,IAAG,OAAM,IAAG,YAAW,IAAG,eAAc,IAAG,iBAAgB,IAAG,sBAAqB,IAAG,KAAI,IAAG,WAAU,IAAG,iBAAgB,IAAG,oBAAmB,IAAG,kBAAiB,IAAG,qBAAoB,IAAG,aAAY,IAAG,gBAAe,IAAG,uBAAsB,IAAG,KAAI,IAAG,KAAI,IAAG,OAAM,IAAG,MAAK,IAAG,cAAa,IAAG,UAAS,IAAG,oBAAmB,IAAG,eAAc,IAAG,QAAO,IAAG,SAAQ,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,OAAM,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,UAAS,IAAG,OAAM,IAAG,UAAS,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,YAAW,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,IAAG,OAAM,IAAG,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,KAAI,UAAS,KAAI,MAAK,KAAI,WAAU,KAAI,OAAM,KAAI,UAAS,KAAI,QAAO,KAAI,UAAS,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,OAAM,KAAI,MAAK,KAAI,WAAU,KAAI,MAAK,KAAI,OAAM,KAAI,SAAQ,KAAI,QAAO,KAAI,UAAS,KAAI,YAAW,KAAI,YAAW,KAAI,OAAM,KAAI,QAAO,KAAI,UAAS,KAAI,SAAQ,KAAI,UAAS,KAAI,aAAY,KAAI,OAAM,KAAI,UAAS,KAAI,QAAO,KAAI,SAAQ,KAAI,QAAO,KAAI,QAAO,KAAI,MAAK,KAAI,SAAQ,KAAI,SAAQ,KAAI,QAAO,KAAI,SAAQ,KAAI,SAAQ,KAAI,QAAO,KAAI,WAAU,KAAI,MAAK,KAAI,SAAQ,KAAI,aAAY,KAAI,SAAQ,KAAI,OAAM,KAAI,OAAM,KAAI,UAAS,KAAI,SAAQ,KAAI,eAAc;AAAA,IAC5vC,cAAc,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,CAAC,GAAE,EAAE,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,IAAG,CAAC,GAAE,CAAC,IAAG,EAAE,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KA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EAAC,GAAE,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,KAAI,EAAC,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,IAAG,IAAG,IAAG,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,KAAI,EAAC,KAAI,IAAG,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,GAAE,KAAI,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,MAAK,EAAC,IAAG,MAAK,IAAG,KAAI,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAE,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAK,EAAC,IAAG,KAAI,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,IAAG,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,CAAC,IAAG,IAAG,IAAG,GAAG,GAAE,KAAI,EAAC,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAE,CAAC,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,GAAE,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,IAAI,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,GAAE,EAAE,MAAK,MAAK,EAAC,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,CAAC,GAAE,EAAC,IAAG,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,MAAK,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAK,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,GAAE,KAAI,IAAG,IAAG,GAAE,EAAC,GAAE,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,MAAK,EAAC,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAK,EAAC,KAAI,KAAI,IAAG,MAAK,KAAI,KAAI,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,IAAG,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,CAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,MAAK,EAAC,KAAI,KAAI,IAAG,MAAK,KAAI,KAAI,CAAC,GAAE,EAAC,GAAE,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,KAAI,IAAG,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAE,MAAK,MAAK,EAAC,KAAI,KAAI,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,MAAK,KAAI,IAAG,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,KAAI,IAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,GAAE,EAAC,IAAG,MAAK,IAAG,CAAC,GAAE,GAAG,GAAE,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,CAAC,GAAE,EAAE,MAAK,MAAK,EAAC,IAAG,KAAI,KAAI,KAAI,IAAG,MAAK,IAAG,KAAI,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,KAAI,IAAG,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,KAAI,KAAI,EAAC,KAAI,IAAG,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,EAAE,MAAK,KAAI,EAAC,KAAI,KAAI,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,CAAC,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG,GAAE,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAC,IAAG,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,KAAI,KAAI,KAAI,MAAK,KAAI,MAAK,KAAI,KAAI,GAAE,EAAC,IAAG,MAAK,KAAI,MAAK,KAAI,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,MAAK,KAAI,MAAK,KAAI,IAAG,GAAE,EAAC,IAAG,MAAK,KAAI,MAAK,KAAI,IAAG,GAAE,EAAE,KAAI,KAAI,EAAC,KAAI,IAAG,IAAG,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,IAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,IAAG,KAAI,CAAC,GAAE,EAAC,IAAG,KAAI,IAAG,MAAK,IAAG,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,GAAE,KAAI,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,KAAI,KAAI,KAAI,KAAI,KAAI,CAAC,GAAE,GAAG,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,GAAE,EAAE,MAAK,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,KAAI,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,GAAE,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,KAAI,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,GAAG,EAAC,GAAE,EAAC,IAAG,KAAI,IAAG,MAAK,IAAG,IAAG,GAAE,EAAC,IAAG,KAAI,IAAG,MAAK,IAAG,IAAG,GAAE,EAAE,MAAK,CAAC,GAAE,GAAG,GAAE,EAAC,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ACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAG,mBAAO;AACf;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KAAK;AAAI,mBAAO;AAChB;AAAA,UACA,KA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","names":["React","React","React","React","clsx","useEffect","useMemo","useRef","escapeDoubleQuotes","shouldNegate","escapeSingleQuotes","React","useEffect","useEffect","useEffect","useEffect","useContext","useMemo","useMemo","useContext","useMemo","useEffect","useEffect","o","lexer","andOrList","rules","rule","emptyRuleGroup","o","lexer","normalizeCombinator","normalizeOperator","generateFlatAndOrList","generateFlatAndOrList","rules","normalizeOperator","produce","rules","produce","React","produce","produce","useMemo","useRef","useEffect","validationResult","validationMap","clsx","clsx","useMemo","useMemo","clsx","clsx","useMemo","useMemo","clsx","useMemo","produce","useCallback","useEffect","useMemo","useEffect","useMemo","useCallback","produce","useCallback","useMemo","useCallback","useMemo","React","React","Fragment","Fragment","React","React"]}