@inixiative/json-rules 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/_isIterateeCall.js","../node_modules/lodash-es/_createAssigner.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/get.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/lodash-es/cloneDeepWith.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/_baseIsMatch.js","../node_modules/lodash-es/_isStrictComparable.js","../node_modules/lodash-es/_getMatchData.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseMatches.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_hasPath.js","../node_modules/lodash-es/hasIn.js","../node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/_basePropertyDeep.js","../node_modules/lodash-es/property.js","../node_modules/lodash-es/_baseIteratee.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_assignMergeValue.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/toPlainObject.js","../node_modules/lodash-es/_baseMergeDeep.js","../node_modules/lodash-es/_baseMerge.js","../node_modules/lodash-es/isEqual.js","../node_modules/lodash-es/merge.js","../node_modules/lodash-es/_baseSet.js","../node_modules/lodash-es/set.js","../node_modules/lodash-es/_baseSome.js","../node_modules/lodash-es/some.js","../src/scope.ts","../src/engineGlobals.ts","../src/operator.ts","../src/operatorCatalog.ts","../src/errors.ts","../src/dateExpr.ts","../src/valueSource.ts","../src/traverse.ts","../src/bindings.ts","../src/number.ts","../src/amount.ts","../src/offset.ts","../src/date.ts","../src/fuzzy.ts","../src/pattern.ts","../src/field.ts","../src/window.ts","../src/check.ts","../src/own.ts","../src/fieldMap/endpointKey.ts","../src/fieldMap/indexBridges.ts","../src/fieldMap/stitch.ts","../src/validate.ts","../src/fieldMap/validate.ts","../src/lens/chain.ts","../src/fieldMap/entry.ts","../src/fieldMap/walk.ts","../src/lens/narrowRule.ts","../src/lens/policy.ts","../src/lens/bindings.ts","../src/lens/coerceRule.ts","../src/lens/createLens.ts","../src/fieldMap/shape.ts","../src/compileLiteral.ts","../src/lens/fieldFit.ts","../src/lens/validateRuleInLens.ts","../src/lens/describeRule.ts","../src/lens/describeRuleSources.ts","../src/toPrisma/relationUtils.ts","../src/lens/projectPaths.ts","../src/lens/sourceOptions.ts","../src/lens/materializeSourceQuery.ts","../src/lens/materializeSources.ts","../src/lens/narrowing.ts","../src/lens/projectModels.ts","../src/lens/projectLens.ts","../src/lens/storedLens.ts","../src/fieldMap/resolveFieldMap.ts","../src/negate.ts","../src/enumMatch.ts","../src/toSql/escape.ts","../src/toSql/quoting.ts","../src/toPrisma/anyNull.ts","../src/toPrisma/recurse.ts","../src/toPrisma/valueSource.ts","../src/toPrisma/logical.ts","../src/toPrisma/offset.ts","../src/toPrisma/utils.ts","../src/toPrisma/field.ts","../src/toPrisma/groupStep.ts","../src/toPrisma/aggregate.ts","../src/toPrisma/countStep.ts","../src/toPrisma/array.ts","../src/toPrisma/date.ts","../src/toPrisma/condition.ts","../src/toPrisma/execute.ts","../src/toPrisma/index.ts","../src/toSql/params.ts","../src/toSql/join.ts","../src/toSql/valueSource.ts","../src/toSql/compare.ts","../src/toSql/json.ts","../src/toSql/shift.ts","../src/toSql/offset.ts","../src/toSql/recurse.ts","../src/toSql/field.ts","../src/toSql/aggregate.ts","../src/toSql/array.ts","../src/toSql/date.ts","../src/toSql/logical.ts","../src/toSql/condition.ts","../src/toSql/index.ts","../src/lens/toSourceQueries.ts","../src/lens/walkLensPath.ts"],"names":["freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","array","iteratee","index","length","arrayMap_default","isArray","isArray_default","symbolProto","symbolToString","baseToString","INFINITY","baseToString_default","isObject","type","isObject_default","identity","identity_default","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_default","coreJsData","coreJsData_default","maskSrcKey","uid","isMasked","func","isMasked_default","funcProto","funcToString","toSource","toSource_default","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","baseIsNative_default","getValue","object","key","getValue_default","getNative","getNative_default","WeakMap","WeakMap_default","objectCreate","baseCreate","proto","baseCreate_default","apply","thisArg","args","apply_default","copyArray","source","copyArray_default","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","shortOut_default","constant","constant_default","defineProperty","defineProperty_default","baseSetToString","string","baseSetToString_default","setToString","setToString_default","arrayEach","arrayEach_default","MAX_SAFE_INTEGER","reIsUint","isIndex","isIndex_default","baseAssignValue","baseAssignValue_default","eq","other","eq_default","assignValue","objValue","assignValue_default","copyObject","props","customizer","isNew","newValue","copyObject_default","nativeMax","overRest","start","transform","otherArgs","overRest_default","baseRest","baseRest_default","isLength","isLength_default","isArrayLike","isArrayLike_default","isIterateeCall","isIterateeCall_default","createAssigner","assigner","sources","guard","createAssigner_default","isPrototype","Ctor","isPrototype_default","baseTimes","n","baseTimes_default","argsTag","baseIsArguments","baseIsArguments_default","propertyIsEnumerable","isArguments","isArguments_default","stubFalse","stubFalse_default","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","isBuffer_default","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseIsTypedArray_default","baseUnary","baseUnary_default","freeProcess","nodeUtil","types","nodeUtil_default","nodeIsTypedArray","isTypedArray","isTypedArray_default","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","arrayLikeKeys_default","overArg","arg","overArg_default","nativeKeys","nativeKeys_default","baseKeys","baseKeys_default","keys","keys_default","nativeKeysIn","nativeKeysIn_default","baseKeysIn","isProto","baseKeysIn_default","keysIn","keysIn_default","reIsDeepProp","reIsPlainProp","isKey","isKey_default","nativeCreate","nativeCreate_default","hashClear","hashClear_default","hashDelete","hashDelete_default","HASH_UNDEFINED","hashGet","data","hashGet_default","hashHas","hashHas_default","hashSet","hashSet_default","Hash","entries","entry","Hash_default","listCacheClear","listCacheClear_default","assocIndexOf","assocIndexOf_default","arrayProto","splice","listCacheDelete","lastIndex","listCacheDelete_default","listCacheGet","listCacheGet_default","listCacheHas","listCacheHas_default","listCacheSet","listCacheSet_default","ListCache","ListCache_default","Map","Map_default","mapCacheClear","mapCacheClear_default","isKeyable","isKeyable_default","getMapData","map","getMapData_default","mapCacheDelete","mapCacheDelete_default","mapCacheGet","mapCacheGet_default","mapCacheHas","mapCacheHas_default","mapCacheSet","size","mapCacheSet_default","MapCache","MapCache_default","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","memoize_default","MAX_MEMOIZE_SIZE","memoizeCapped","memoizeCapped_default","rePropName","reEscapeChar","stringToPath","match","number","quote","subString","stringToPath_default","toString","toString_default","castPath","castPath_default","toKey","toKey_default","baseGet","path","baseGet_default","get","defaultValue","get_default","arrayPush","values","offset","arrayPush_default","getPrototype","getPrototype_default","objectCtorString","isPlainObject","isPlainObject_default","stackClear","stackClear_default","stackDelete","stackDelete_default","stackGet","stackGet_default","stackHas","stackHas_default","LARGE_ARRAY_SIZE","stackSet","pairs","stackSet_default","Stack","Stack_default","baseAssign","baseAssign_default","baseAssignIn","baseAssignIn_default","allocUnsafe","cloneBuffer","buffer","isDeep","cloneBuffer_default","arrayFilter","predicate","resIndex","arrayFilter_default","stubArray","stubArray_default","nativeGetSymbols","getSymbols","symbol","getSymbols_default","copySymbols","copySymbols_default","getSymbolsIn","getSymbolsIn_default","copySymbolsIn","copySymbolsIn_default","baseGetAllKeys","keysFunc","symbolsFunc","baseGetAllKeys_default","getAllKeys","getAllKeys_default","getAllKeysIn","getAllKeysIn_default","DataView","DataView_default","Promise","Promise_default","Set","Set_default","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","getTag_default","initCloneArray","initCloneArray_default","Uint8Array","Uint8Array_default","cloneArrayBuffer","arrayBuffer","cloneArrayBuffer_default","cloneDataView","dataView","cloneDataView_default","reFlags","cloneRegExp","regexp","cloneRegExp_default","symbolValueOf","cloneSymbol","cloneSymbol_default","cloneTypedArray","typedArray","cloneTypedArray_default","initCloneByTag","initCloneByTag_default","initCloneObject","initCloneObject_default","baseIsMap","baseIsMap_default","nodeIsMap","isMap","isMap_default","baseIsSet","baseIsSet_default","nodeIsSet","isSet","isSet_default","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","stack","isFlat","isFull","isFunc","stacked","subValue","baseClone_default","cloneDeep","cloneDeep_default","cloneDeepWith","cloneDeepWith_default","setCacheAdd","setCacheAdd_default","setCacheHas","setCacheHas_default","SetCache","SetCache_default","arraySome","arraySome_default","cacheHas","cacheHas_default","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","equalArrays_default","mapToArray","mapToArray_default","setToArray","set","setToArray_default","equalByTag","convert","equalByTag_default","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","equalObjects_default","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqualDeep_default","baseIsEqual","baseIsEqual_default","baseIsMatch","matchData","noCustomizer","srcValue","baseIsMatch_default","isStrictComparable","isStrictComparable_default","getMatchData","getMatchData_default","matchesStrictComparable","matchesStrictComparable_default","baseMatches","baseMatches_default","baseHasIn","baseHasIn_default","hasPath","hasFunc","hasPath_default","hasIn","hasIn_default","baseMatchesProperty","baseMatchesProperty_default","baseProperty","baseProperty_default","basePropertyDeep","basePropertyDeep_default","property","property_default","baseIteratee","baseIteratee_default","createBaseFor","fromRight","iterable","createBaseFor_default","baseFor","baseFor_default","baseForOwn","baseForOwn_default","createBaseEach","eachFunc","collection","createBaseEach_default","baseEach","baseEach_default","assignMergeValue","assignMergeValue_default","isArrayLikeObject","isArrayLikeObject_default","safeGet","safeGet_default","toPlainObject","toPlainObject_default","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMergeDeep_default","baseMerge","baseMerge_default","isEqual","isEqual_default","merge","merge_default","baseSet","nested","baseSet_default","set_default","baseSome","baseSome_default","some","some_default","SCOPE_REF","parseScopeRef","ref","scopeOutOfBounds","depth","available","readScopeRef","scopes","parsed","SEGMENT","segments","m","step","at","boxed","readOwnPath","readField","target","readPath","context","checkOnlyScopeRef","rail","rejectScopedField","condition","readContextRef","DEFAULTS","store","copy","v","isThenable","engineGlobals","partial","fn","prev","QUERY_MODE_PROVIDERS","supportsQueryMode","provider","resolveCaseInsensitive","ruleFlag","resolveFuzzy","resolved","Operator","ArrayOperator","DateOperator","FieldKind","NUMERIC_KINDS","ORDERABLE_KINDS","STRINGY_KINDS","EQUATABLE_KINDS","ALL_KINDS","NULLABLE_KINDS","RuleTarget","isFieldKind","name","ALL_TARGETS","NON_SQL_TARGETS","NON_PRISMA_TARGETS","ValueShape","FIELD_OPERATOR_CATALOG","DATE_OPERATOR_CATALOG","ARRAY_OPERATOR_CATALOG","CATALOGS","catalogEntry","operator","family","leafCatalogEntry","node","comparatorOf","getValueShape","unknownOperator","isOperatorSupportedForTarget","getOperatorsForKind","kind","field","op","date","getArrayOperators","OPERATOR_ENTRIES","withShape","shapes","NO_VALUE_OPERATORS","ORDERED_OPERATORS","WINDOW_OPERATORS","RANGE_OPERATORS","OPERAND_OPERATORS","CONTAINS_OPERATORS","AGGREGATE_OPERATORS","AGGREGATE_MODES","getAggregateOperators","EQUALITY_OPERATORS","SET_OPERATORS","EXACT_OPERATORS","DAY_LIST_OPERATORS","DATE_RANGE_OPERATORS","OFFSET_OPERATORS","arrayWithShape","ARRAY_COUNT_OPERATORS","ARRAY_CONDITION_OPERATORS","ARRAY_MONOTONE_OPERATORS","NEGATED_OPERATORS","NEGATED_STRING_OPERATORS","NEGATED_RANGE_OPERATORS","bounding","comparators","UPPER_BOUND_OPERATORS","LOWER_BOUND_OPERATORS","INTEGER_KINDS","COERCIBLE_KINDS","COMPILE_COERCED_KINDS","SINGLE_VALUE_SHAPES","RELATIVE_UNITS","INTERVAL_FIELDS","isRelativeUnit","unit","isCalendarUnit","PERIOD_UNITS","DAY_NAMES","isDayName","complements","catalog","extra","a","b","COMPLEMENT_OPERATORS","COMPLEMENT_DATE_OPERATORS","OPPOSITE_OPERATORS","fieldlessArrayError","countRequired","rangeExprRequired","conditionRequired","relationNotValue","relationsNotValue","fuzzyNotCompiled","rule","unorderedOperand","end","unknownAggregateMode","mode","ambiguousCondition","noCompiledForm","what","why","windowUnsupported","toManyHopError","hop","pastScalarError","column","dayjs","utc","timezone","quarterOfYear","isoWeek","isDateExpr","DEFAULT_ZONE","requireNow","config","base","intervalTotal","units","total","amount","WALL","shiftByUnits","direction","zone","months","days","seconds","wall","isRollingExpr","rollingExpr","rollingShift","expr","isPeriodExpr","isEdgeExpr","namedPeriod","periodUnit","effectivePeriodUnit","resolvePeriodRange","now","stepUnit","eff","resolveDateExpr","rolling","period","resolvePointForOperator","positive","resolveDateExprRange","moved","SOURCE_FORMS","rowRef","matchSource","read","isValueSource","readBinding","optional","bindings","bound","compileBinding","readValueSource","isObjCondition","c","isIfNode","isRelationNode","childSlots","child","isLogicalNode","visitCondition","enter","scope","below","inner","someCondition","test","found","mapCondition","opts","clone","slots","slot","mapped","sameNode","original","item","mapUnits","mapExpr","mapLeafSources","isDate","out","leafSources","role","valueRefRoles","valueRefs","r","elementRefs","o","conditionShape","allOf","conditions","anyOf","bindTokens","listBindings","required","names","token","bindRule","resolve","bind","_optional","rest","MAX_SAFE","bigIntToNumber","toNumber","raw","readNumber","orderPair","readPair","readOrderedPair","pair","isOrderedValue","readSet","splitNull","operand","list","unitAmountProblem","resolveMagnitude","magnitude","problem","resolveUnits","resolveExpr","addOffset","ends","offsetAmount","offsetShift","isSameOrBefore","isSameOrAfter","checkDate","fieldValue","exprConfig","resolveDateConfig","tz","fieldDate","parseDateValue","getError","dayNumbers","listed","day","dates","parseCompareDates","compareDate","endDate","move","shift","point","toPoint","label","first","second","date1","date2","shiftedStart","shiftedEnd","pointOf","shifted","read_","ZONED_TIME","hasExplicitZone","coerceDateLiteral","maxFuzzyDistance","resolveMaxDistance","maxDistance","maxRatio","caps","tokenize","isNumeric","withinDistance","max","distance","fuzzyContains","haystack","query","needle","hay","queryTokens","hayTokens","hayToken","readPattern","flags","caseInsensitive","RE2JS","error","CLASSES","POSIX","PG_SPECIAL","MAX_REPEAT","codePoint","code","literal","char","postgresSource","refuse","i","refuseQuantifiedAnchor","translateEscape","inClass","upper","braced","hex","oct","w","quoted","ch","named","repeat","literalDash","rangeEnd","members","posix","expands","dash","closedRange","patternProblem","isEmptyValue","hasNoOperand","missing","isExistenceTest","listMembership","lists","member","each","lowerStrings","fromBigInt","coerceScalar","num","applyCoercion","checkField","computed","needsValue","ci","lower","lhs","rhs","fuzzy","containsMatch","containsValue","compareOrderedValues","hasMatch","isPattern","range","orderedRange","inRangeOrder","comparableFieldValue","toOrderedPrimitive","min","left","right","sameOrder","container","search","orderKind","hasWindow","conditionOpAndField","shape","extremalRewrite","orderField","dir","cof","isUpper","isLower","orderBy","take","skip","present","applyWindow","items","filterFn","order","compareNullsLast","aNull","bNull","x","y","windowRewrite","ordered","filter","validateRootArrayShape","check","options","evaluate","all","any","checkIfThenElse","checkArray","checkAggregate","errors","readArray","rawArray","windowFilter","arrayValue","itemField","nestedCondition","numbers","loc","sum","labelled","defaultMsg","itemCondition","elementwise","matches","failures","results","own","record","ownEntry","make","modelOf","model","fieldOf","endpointKey","fieldMap","parseEndpointKey","currentMap","keyByUnique","rows","on","endpointLabel","side","row","k","hint","groupByKey","indexBridges","rawData","bridge","aKey","bKey","aSide","endpoint","aRows","bRows","stitchFieldMaps","aOwner","bOwner","isOneToMany","validationResult","throwIfInvalid","e","validateRule","validateCondition","assertValidRule","pushIssue","validateLogicalArray","validateFieldRule","validateAggregateRule","validateArrayRule","validateDateRule","validateField","validateRef","issuePath","validateSource","forms","form","validateOffset","scoped","validateRelativeUnits","rejectSqlRowRange","targetSlug","forbidValueAndPath","validateValueShape","validateWindow","agg","isNumericRange","hasCondition","refuseCount","validateDateExpr","isDateRangeOrExprPair","validatePeriodUnit","isRange","ob","message","FORBIDDEN_FIELD_CHARS","validateFieldMaps","mapName","modelName","fieldName","assertValidFieldMaps","isLens","collectChain","visited","cursor","getRoot","isJsonEntry","isRelationEntry","declaredEnumValues","enums","relationTargetOf","walkMaps","maps","from","parts","next","walkFieldPath","rootModel","hops","last","walkWith","fieldEntry","walk","optionalToOneHops","relationTarget","hitsBridge","conditionTouchesBridge","wrapWithWheres","wheres","holdsWhenAbsent","underHopGrants","deeper","prefixConditionFields","cond","prefix","refs","hopGrants","policy","effect","resolveVisit","where","collectHopWheres","hopsAt","relationHops","refHops","anchorOf","narrowAt","anchor","valueWheres","grants","filterFirst","narrowRule","lensOrNarrowing","resolvePolicy","rootEffect","rewritten","normalizeGroupBy","g","isSourceSpec","normalizeSource","OFF_PATH","lens","chain","intersectStringSet","cur","augmentPicksWithRelations","rel","accumulatePicksOmitsInto","state","augmented","f","intersectIntoMap","vals","unionIntoMap","s","accumulateEnumFields","picksMap","omitsMap","declaredKey","accumulateInto","narrow","layer","spec","clauses","axes","relPath","fieldEnumPicks","fieldEnumOmits","typeEnumPicks","typeEnumOmits","current","applyNode","narrowing","parent","visitMapDefaults","dflt","enumName","enumN","sub","seg","isEnum","baseValues","typePicks","typeOmits","fp","fo","isFieldVisible","allowedEnumValues","resolvePolicyPath","effects","sourceReadsVisible","others","_","lensPathEnd","fieldPath","resolution","terminal","jsonSubPath","lensRootScope","stepIntoField","walked","open","relation","PARENT_PREFIX","isParentRef","baseName","mapNodeConditions","relations","mapLayerConditions","nrw","mapDefaults","defaults","models","layerConditions","declaredNames","listLensBindings","bindLens","effective","validateBindNames","occupied","anc","coerceRule","createLens","bridges","fieldShape","kindShape","acceptsEmptyString","refuseRelationsValue","readsText","comparesText","holdsString","ruleShape","entryKind","instantMs","ms","toInstant","compileFieldLiteral","declared","instant","flatten","ruleLiterals","NUMERIC_STRING","LITERAL_FIT","show","leafFitViolations","coerceType","expected","fits","coercedFits","fitsAsCompiled","arrayFitViolation","arrayOperator","visit","issues","scopeFor","fieldOk","terminalEntry","terminalFieldName","terminalIsEnum","terminalEnumType","terminalAllowedValues","misfit","literals","allowed","checkConditionAtVisit","validateRuleInLens","acc","describeRule","ENUMERABLE_SHAPES","VALUELESS_SHAPES","contribution","dedupeKey","describeRuleSources","seenKeys","terminalEffect","literalKey","prefixes","findReverseRelation","targetModel","currentModel","relationName","targetEntry","fieldDef","relationKeys","reverse","inverseRelation","candidates","projectFields","fetched","fields","groupBy","projectPaths","fetchedByPathField","sv","dottedPath","sourceLabels","sourceGroupBys","relField","foldPathGuards","baseRelPath","dotted","strict","crossed","hopKey","collectFieldPaths","traversalGuards","whereClauses","axis","clause","groupAtPath","groupsAtPaths","paths","optionKey","groups","accumulateOption","byKey","existing","accumulateRow","rowLabel","sortOptions","tier","ga","gb","cmp","ancestorGrants","visits","carried","level","inverse","here","sourcePlans","sourceClauses","guards","above","materializeSourceQuery","rowShape","flat","rowsAtPath","segment","materializeSources","eligibility","validateWhere","parentPolicy","position","validateSourceTargetVisibility","reported","toOnePathError","toMany","hiddenBy","ancestors","picks","validateModelNode","ancestorChain","sameLayerDefaults","modelFields","enumRegistry","whereVisits","isDefault","hidden","validateEnumOp","registry","dottedLabel","err","reserved","axesKey","ancEntry","ancAxes","validateDefaultsEnums","defaultsEnums","ancestorEnumNarrowings","registryVals","inheritedPicks","inheritedOmits","isInheritedVisible","validateEnumInheritance","validatePathNarrowing","sameLayerDefaultsForModel","synthAncestors","d","childAncestorChain","validateNarrowing","parentVisits","ancestorDefaultsEnums","ancestorDefaultsForModel","lensMapName","lensModel","ancestorChainForRoot","assertValidNarrowing","modelKey","unionFieldInto","merged","projectModels","fetchedByModelField","surface","visitedDeclared","visitedOffPath","queue","dkey","nextEntry","surfaceMap","fieldRecord","enumValuesByType","enumType","bb","aExposesB","bExposesA","projectLens","by","isBase","composeLens","id","records","ids","_id","parents","part","storeLens","_parent","resolveFieldMap","absent","negateLeaf","settle","leaf","flip","negate","holds","settleLiteral","enumMatches","hasNull","norm","wanted","hit","escapeIdentifier","identifier","escapeLikePattern","quoteField","alias","jsonb","jsonPath","columnExpr","jsonKey","RUNTIMES","installed","installedAnyNull","load","loaders","runtime","createRequire","__require","prismaAnyNull","anyNull","dispatch","setConditionBuilder","buildCondition","readPathValue","readSource","prismaRead","dateConfigOf","settleLeaf","comparison","sourced","_path","_bind","matchAll","overFetch","matchNothing","isMatchAll","isMatchNothing","andWhere","arms","arm","orWhere","notLeaf","buildAll","buildAny","buildIfThenElse","notIf","thenClause","implication","ifClause","elseClause","offsetNumber","offsetDate","buildNestedFilter","shapeOf","isJson","nullOf","hopArms","absentArms","buildMapAwareFilter","equalityFilter","queryMode","emptyValues","emptyString","notEmpty","empty","emptinessWhere","buildRelationRule","buildFieldRule","resolveRuleValue","enumEntry","matched","comparisonFilter","jsonMember","complemented","val","JSON_MATCH","unordered","comparator","walkResult","jsonFilter","fieldUpToJson","groupPath","implicitM2M","groupMembership","having","complement","membership","selected","buildAggregateRule","buildAggregateStep","holdsEmpty","aggregate","buildCountStep","holdsForEmpty","countHaving","buildArrayRule","compileArrayRule","isValueArray","childOptionsFor","buildValueArrayRule","buildArrayLeafFilter","childOptions","buildDateRule","buildDateLeafFilter","instantOf","window","one","two","executePrismaPlan","plan","prismaDelegate","groupBySteps","whereStep","stepResults","delegate","resolveStepRefs","obj","idx","normalizeOptions","toPrisma","bindable","nextParam","resolveField","asWritten","joined","joinAlias","sql","resolveFieldSql","fromAlias","buildJoinClause","currentAlias","targetAlias","targetDbName","onCondition","there","NO_VALUE","isMissing","resolveRef","resolveSource","compileTimeRead","SQL_COMPARATOR","orderedSql","operandSql","orNull","noOperandSql","negated","nullable","compareSql","rangeSql","perRow","symmetric","outside","guarded","holdsObject","buildJsonComparison","j","text","json","lc","not","lowered","equal","like","element","contains","low","high","within","isRowRef","asInstant","readsRow","magnitudeSql","whole","cast","intervalSql","terms","term","factor","shiftDate","z","knownOperand","NOT_KNOWN","refuseJsonOperand","resolveRange","resolveComparison","arithmetic","has","listLower","withShapeString","same","rhsVal","rhsCol","noneOf","sqlMatch","emptinessSql","coerce","subquery","buildAggregateSubquery","isNative","extract","arrayShape","asOperand","readsDate","notADate","sides","resolvePoint","resolveWindow","dow","nowOperand","expressionPoint","withOffset","points","el","builderState","hasMap","rootAlias","toSql","mergeSelect","into","head","nestedSelects","compileOne","prismaWhere","labelPath","nestedPaths","select","prisma","sqlQuery","labelCol","groupCols","joins","joinSql","whereSql","col","toSourceQueries","composedWhere","walkLensPath"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nexport default baseSome;\n","import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n","export type Scopes = readonly unknown[];\n\nexport type ScopeRef = { depth: number; path: string };\n\nconst SCOPE_REF = /^(\\$+)\\.(.*)$/;\n\nexport const parseScopeRef = (ref: string): ScopeRef | null => {\n const match = SCOPE_REF.exec(ref);\n return match ? { depth: match[1].length, path: match[2] } : null;\n};\n\nexport const scopeOutOfBounds = (ref: string, depth: number, available: number): string =>\n `Scope ref '${ref}' needs depth ${depth} but only ${available} ${available === 1 ? 'scope is' : 'scopes are'} in reach`;\n\nexport type ScopedRef<S> = { scope: S; path: string };\nexport type ScopeOutOfBounds = { outOfBounds: string };\n\n// Resolves a ref against a stack of scopes (innermost last): a bare ref is the innermost\n// scope, `$.` the innermost, `$$.` the one above it, … A ref deeper than the stack is\n// out of bounds and carries its message.\nexport const readScopeRef = <S>(\n ref: string,\n scopes: readonly S[],\n): ScopedRef<S> | ScopeOutOfBounds => {\n const parsed = parseScopeRef(ref);\n if (!parsed) return { scope: scopes[scopes.length - 1], path: ref };\n if (parsed.depth > scopes.length)\n return { outOfBounds: scopeOutOfBounds(ref, parsed.depth, scopes.length) };\n return { scope: scopes[scopes.length - parsed.depth], path: parsed.path };\n};\n\n// Segments of a path: dotted names, bracket indices and quoted keys (`ids[1]`, `meta[\"a.b\"]`).\nconst SEGMENT = /\\[(\\d+)\\]|\\[([\"'])(.*?)\\2\\]|([^.[\\]]+)/g;\nconst segments = (path: string): string[] =>\n path === '' ? [''] : [...path.matchAll(SEGMENT)].map((m) => m[1] ?? m[3] ?? m[4]);\n\n// One step of a path read: an own property, or an inherited one (a class getter, a string's\n// `length`) unless Object.prototype names it — `constructor`, `toString`, `__proto__` never\n// resolve — and never a method.\nconst step = (at: unknown, key: string): unknown => {\n if (at === null || at === undefined) return undefined;\n const boxed = Object(at) as Record<string, unknown>;\n if (Object.hasOwn(boxed, key)) return boxed[key];\n if (key in Object.prototype || !(key in boxed)) return undefined;\n const value = boxed[key];\n return typeof value === 'function' ? undefined : value;\n};\n\n/** A path read that never reaches Object.prototype: own properties, inherited getters and data,\n * bracket indices. */\nexport const readOwnPath = (root: unknown, path: string): unknown =>\n segments(path).reduce<unknown>(step, root);\n\nexport const readField = (ref: string, scopes: Scopes): unknown => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) throw new Error(target.outOfBounds);\n return readOwnPath(target.scope, target.path);\n};\n\nexport const readPath = (ref: string, scopes: Scopes, context: unknown): unknown =>\n parseScopeRef(ref) ? readField(ref, scopes) : readOwnPath(context, ref);\n\nexport const checkOnlyScopeRef = (ref: string, rail: 'toSql' | 'toPrisma'): string =>\n `Scope ref '${ref}' is not supported by ${rail}(); evaluate with check()`;\n\nexport const rejectScopedField = (condition: object, rail: 'toSql' | 'toPrisma'): void => {\n if (!('field' in condition) || typeof condition.field !== 'string') return;\n if (parseScopeRef(condition.field)) throw new Error(checkOnlyScopeRef(condition.field, rail));\n};\n\n/** A compiler's bare (context) ref: the context it was given, which must be there. A path that\n * reads nothing reads null. */\nexport const readContextRef = (\n ref: string,\n context: unknown,\n rail: 'toSql' | 'toPrisma',\n): unknown => {\n if (!context)\n throw new Error(\n `context is required to resolve path '${ref}'. Pass context when calling ${rail}().`,\n );\n return readOwnPath(context, ref) ?? null;\n};\n","import { cloneDeep, cloneDeepWith, isPlainObject, merge, set } from 'lodash-es';\nimport type { FuzzyConfig } from './fuzzy';\nimport { readOwnPath } from './scope';\n\nexport type PrismaProvider =\n | 'postgresql'\n | 'mysql'\n | 'sqlite'\n | 'sqlserver'\n | 'cockroachdb'\n | 'mongodb';\n\nexport type EngineGlobalsState = {\n // Defaults for string operators; a rule's own `caseInsensitive` / `fuzzy` overrides them.\n string: {\n caseInsensitive: boolean;\n fuzzy: boolean | FuzzyConfig;\n };\n prismaOptions: {\n datasource: {\n provider: PrismaProvider;\n };\n /** Prisma's `AnyNull` — matches a DB NULL, a JSON null and an absent Json path. Defaults to\n * your installed @prisma/client's; set it only to use another. */\n anyNull?: unknown;\n };\n};\n\ntype DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];\n};\n\nconst DEFAULTS: EngineGlobalsState = {\n string: {\n caseInsensitive: false,\n fuzzy: false,\n },\n prismaOptions: {\n datasource: {\n provider: 'postgresql',\n },\n },\n};\n\nlet store: EngineGlobalsState = cloneDeep(DEFAULTS);\n\n// Plain data is copied; an instance (Prisma's AnyNull) is held as given — Prisma knows it by\n// identity.\nconst copy = <T>(value: T): T =>\n cloneDeepWith(value, (v) =>\n typeof v === 'object' && v !== null && !Array.isArray(v) && !isPlainObject(v) ? v : undefined,\n );\n\nconst isThenable = (v: unknown): boolean =>\n v != null && typeof (v as { then?: unknown }).then === 'function';\n\nexport const engineGlobals = {\n set: (path: string, value: unknown): void => {\n set(store, path, copy(value));\n },\n get: (path: string): unknown => readOwnPath(store, path),\n reset: (): void => {\n store = cloneDeep(DEFAULTS);\n },\n // Scoped override: merge `partial` over the current state, run `fn`, restore. SYNCHRONOUS\n // ONLY — JS run-to-completion makes a sync `fn` atomic, so overlapping evaluations never\n // observe the override. An async `fn` would yield mid-scope and leak/collide, so it throws.\n with: <T>(partial: DeepPartial<EngineGlobalsState>, fn: () => T): T => {\n const prev = store;\n store = merge(copy(prev), copy(partial));\n try {\n const result = fn();\n if (isThenable(result))\n throw new Error(\n 'engineGlobals.with() callback must be synchronous (it returned a Promise).',\n );\n return result;\n } finally {\n store = prev;\n }\n },\n};\n\n// Providers whose Prisma connector accepts `mode: 'insensitive'` (QueryMode). The\n// rest are case-insensitive by collation and reject the argument.\nconst QUERY_MODE_PROVIDERS: ReadonlySet<PrismaProvider> = new Set([\n 'postgresql',\n 'cockroachdb',\n 'mongodb',\n]);\n\nexport const supportsQueryMode = (provider: PrismaProvider): boolean =>\n QUERY_MODE_PROVIDERS.has(provider);\n\n// A rule's explicit flag wins; otherwise fall back to the engine-global default.\nexport const resolveCaseInsensitive = (ruleFlag?: boolean): boolean =>\n ruleFlag ?? (engineGlobals.get('string.caseInsensitive') as boolean | undefined) ?? false;\n\n// Resolve a rule's fuzzy flag against the global default, normalized to a config or false.\nexport const resolveFuzzy = (ruleFlag?: boolean | FuzzyConfig): FuzzyConfig | false => {\n const resolved =\n ruleFlag ?? (engineGlobals.get('string.fuzzy') as boolean | FuzzyConfig | undefined) ?? false;\n if (!resolved) return false;\n return resolved === true ? {} : resolved;\n};\n","export const Operator = {\n equals: 'equals',\n notEquals: 'notEquals',\n lessThan: 'lessThan',\n lessThanEquals: 'lessThanEquals',\n greaterThan: 'greaterThan',\n greaterThanEquals: 'greaterThanEquals',\n contains: 'contains',\n notContains: 'notContains',\n in: 'in',\n notIn: 'notIn',\n matches: 'matches',\n notMatches: 'notMatches',\n between: 'between',\n notBetween: 'notBetween',\n isEmpty: 'isEmpty',\n notEmpty: 'notEmpty',\n exists: 'exists',\n notExists: 'notExists',\n startsWith: 'startsWith',\n notStartsWith: 'notStartsWith',\n endsWith: 'endsWith',\n notEndsWith: 'notEndsWith',\n} as const;\n\nexport type Operator = (typeof Operator)[keyof typeof Operator];\n\nexport const ArrayOperator = {\n all: 'all',\n any: 'any',\n none: 'none',\n atLeast: 'atLeast',\n atMost: 'atMost',\n exactly: 'exactly',\n empty: 'empty',\n notEmpty: 'notEmpty',\n} as const;\n\nexport type ArrayOperator = (typeof ArrayOperator)[keyof typeof ArrayOperator];\n\nexport const DateOperator = {\n before: 'before',\n after: 'after',\n onOrBefore: 'onOrBefore',\n onOrAfter: 'onOrAfter',\n notBefore: 'notBefore',\n notAfter: 'notAfter',\n within: 'within',\n notWithin: 'notWithin',\n between: 'between',\n notBetween: 'notBetween',\n dayIn: 'dayIn',\n dayNotIn: 'dayNotIn',\n} as const;\n\nexport type DateOperator = (typeof DateOperator)[keyof typeof DateOperator];\n","import { unknownOperator } from './errors';\nimport { ArrayOperator, DateOperator, Operator } from './operator';\nimport type { AggregateMode } from './types';\n\nexport const FieldKind = {\n String: 'String',\n Boolean: 'Boolean',\n Int: 'Int',\n BigInt: 'BigInt',\n Float: 'Float',\n Decimal: 'Decimal',\n DateTime: 'DateTime',\n Json: 'Json',\n Bytes: 'Bytes',\n Enum: 'Enum',\n} as const;\n\nexport type FieldKind = (typeof FieldKind)[keyof typeof FieldKind];\n\nexport const NUMERIC_KINDS: readonly FieldKind[] = ['Int', 'Float', 'Decimal', 'BigInt'];\nconst ORDERABLE_KINDS: readonly FieldKind[] = ['String', ...NUMERIC_KINDS, 'DateTime'];\nconst STRINGY_KINDS: readonly FieldKind[] = ['String'];\nconst EQUATABLE_KINDS: readonly FieldKind[] = [\n 'String',\n 'Boolean',\n 'Int',\n 'BigInt',\n 'Float',\n 'Decimal',\n 'DateTime',\n 'Enum',\n];\nexport const ALL_KINDS: readonly FieldKind[] = Object.values(FieldKind);\n// Any column can be nullable — nullability is a per-field property, not a per-kind one.\n// isEmpty/notEmpty (\"null or empty string\") are therefore valid on every kind; the\n// SQL/Prisma compilers emit meaningful `IS NULL OR = ''` for any nullable column.\nconst NULLABLE_KINDS: readonly FieldKind[] = ALL_KINDS;\n\nexport const RuleTarget = {\n check: 'check',\n toPrisma: 'toPrisma',\n toSql: 'toSql',\n} as const;\n\nexport type RuleTarget = (typeof RuleTarget)[keyof typeof RuleTarget];\n\n/** Whether a name is a FieldKind (own-property: `toString` is not). */\nexport const isFieldKind = (name: unknown): name is FieldKind =>\n typeof name === 'string' && Object.hasOwn(FieldKind, name);\n\nexport const ALL_TARGETS: readonly RuleTarget[] = ['check', 'toPrisma', 'toSql'];\nconst NON_SQL_TARGETS: readonly RuleTarget[] = ['check', 'toPrisma'];\nconst NON_PRISMA_TARGETS: readonly RuleTarget[] = ['check', 'toSql'];\n\nexport const ValueShape = {\n none: 'none',\n scalar: 'scalar',\n ordered: 'ordered',\n array: 'array',\n string: 'string',\n pattern: 'pattern',\n range: 'range',\n dateValue: 'dateValue',\n dateRange: 'dateRange',\n dateWindow: 'dateWindow',\n dayList: 'dayList',\n count: 'count',\n predicate: 'predicate',\n} as const;\n\nexport type ValueShape = (typeof ValueShape)[keyof typeof ValueShape];\n\n/** How an ordered operator compares its field with its one operand (a count, its matches). */\nexport type Comparator = 'lt' | 'lte' | 'gt' | 'gte' | 'equals';\n\nexport type CatalogEntry = {\n kinds: readonly FieldKind[];\n targets: readonly RuleTarget[];\n valueShape: ValueShape;\n acceptsExpr?: boolean;\n comparator?: Comparator;\n /** The positive operator this one negates: its exact complement, keeping NULL fields. */\n negates?: string;\n};\n\nexport const FIELD_OPERATOR_CATALOG: Record<Operator, CatalogEntry> = {\n [Operator.equals]: { kinds: EQUATABLE_KINDS, targets: ALL_TARGETS, valueShape: 'scalar' },\n [Operator.notEquals]: {\n negates: Operator.equals,\n kinds: EQUATABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'scalar',\n },\n [Operator.lessThan]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'lt',\n },\n [Operator.lessThanEquals]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'lte',\n },\n [Operator.greaterThan]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'gt',\n },\n [Operator.greaterThanEquals]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'gte',\n },\n [Operator.in]: { kinds: EQUATABLE_KINDS, targets: ALL_TARGETS, valueShape: 'array' },\n [Operator.notIn]: {\n negates: Operator.in,\n kinds: EQUATABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'array',\n },\n [Operator.contains]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notContains]: {\n negates: Operator.contains,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.startsWith]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notStartsWith]: {\n negates: Operator.startsWith,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.endsWith]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notEndsWith]: {\n negates: Operator.endsWith,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.matches]: { kinds: STRINGY_KINDS, targets: NON_PRISMA_TARGETS, valueShape: 'pattern' },\n [Operator.notMatches]: {\n negates: Operator.matches,\n kinds: STRINGY_KINDS,\n targets: NON_PRISMA_TARGETS,\n valueShape: 'pattern',\n },\n [Operator.between]: { kinds: ORDERABLE_KINDS, targets: ALL_TARGETS, valueShape: 'range' },\n [Operator.notBetween]: {\n negates: Operator.between,\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'range',\n },\n [Operator.isEmpty]: { kinds: NULLABLE_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.notEmpty]: { kinds: NULLABLE_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.exists]: { kinds: ALL_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.notExists]: { kinds: ALL_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n};\n\nexport const DATE_OPERATOR_CATALOG: Record<DateOperator, CatalogEntry> = {\n [DateOperator.before]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lt',\n },\n [DateOperator.after]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gt',\n },\n [DateOperator.onOrBefore]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lte',\n },\n [DateOperator.onOrAfter]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gte',\n },\n [DateOperator.notBefore]: {\n negates: DateOperator.before,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gte',\n },\n [DateOperator.notAfter]: {\n negates: DateOperator.after,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lte',\n },\n [DateOperator.within]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateWindow',\n acceptsExpr: true,\n },\n [DateOperator.notWithin]: {\n negates: DateOperator.within,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateWindow',\n acceptsExpr: true,\n },\n [DateOperator.between]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateRange',\n acceptsExpr: true,\n },\n [DateOperator.notBetween]: {\n negates: DateOperator.between,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateRange',\n acceptsExpr: true,\n },\n [DateOperator.dayIn]: {\n kinds: ['DateTime'],\n targets: NON_PRISMA_TARGETS,\n valueShape: 'dayList',\n acceptsExpr: false,\n },\n [DateOperator.dayNotIn]: {\n negates: DateOperator.dayIn,\n kinds: ['DateTime'],\n targets: NON_PRISMA_TARGETS,\n valueShape: 'dayList',\n acceptsExpr: false,\n },\n};\n\ntype ArrayCatalogEntry = {\n targets: readonly RuleTarget[];\n valueShape: ValueShape;\n comparator?: Comparator;\n};\n\nexport const ARRAY_OPERATOR_CATALOG: Record<ArrayOperator, ArrayCatalogEntry> = {\n [ArrayOperator.all]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.any]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.none]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.atLeast]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'gte' },\n [ArrayOperator.atMost]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'lte' },\n [ArrayOperator.exactly]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'equals' },\n [ArrayOperator.empty]: { targets: ALL_TARGETS, valueShape: 'none' },\n [ArrayOperator.notEmpty]: { targets: ALL_TARGETS, valueShape: 'none' },\n};\n\n/** Which catalog an operator belongs to — `between` is both a field and a date operator. */\nexport type OperatorFamily = 'field' | 'date' | 'array';\n\nconst CATALOGS: Record<OperatorFamily, Record<string, CatalogEntry | ArrayCatalogEntry>> = {\n field: FIELD_OPERATOR_CATALOG,\n date: DATE_OPERATOR_CATALOG,\n array: ARRAY_OPERATOR_CATALOG,\n};\n\n/** An operator's catalog entry within its family; undefined when the family doesn't have it. */\nexport const catalogEntry = (\n operator: string,\n family: OperatorFamily,\n): CatalogEntry | ArrayCatalogEntry | undefined =>\n Object.hasOwn(CATALOGS[family], operator) ? CATALOGS[family][operator] : undefined;\n\n/** A field or date leaf's catalog entry: its operator read in its family. */\nexport const leafCatalogEntry = (node: {\n operator?: unknown;\n dateOperator?: unknown;\n}): CatalogEntry | undefined =>\n (typeof node.operator === 'string'\n ? catalogEntry(node.operator, 'field')\n : typeof node.dateOperator === 'string'\n ? catalogEntry(node.dateOperator, 'date')\n : undefined) as CatalogEntry | undefined;\n\n/** How an operator compares its field with one operand; undefined when it doesn't. */\nexport const comparatorOf = (operator: string, family: OperatorFamily): Comparator | undefined =>\n catalogEntry(operator, family)?.comparator;\n\nexport const getValueShape = (operator: string, family: OperatorFamily): ValueShape => {\n const entry = catalogEntry(operator, family);\n if (!entry) throw unknownOperator(operator, family);\n return entry.valueShape;\n};\n\nexport const isOperatorSupportedForTarget = (\n operator: string,\n family: OperatorFamily,\n target: RuleTarget,\n): boolean => catalogEntry(operator, family)?.targets.includes(target) ?? false;\n\nexport const getOperatorsForKind = (\n kind: FieldKind,\n target?: RuleTarget,\n): { field: Operator[]; date: DateOperator[] } => {\n const field = (Object.keys(FIELD_OPERATOR_CATALOG) as Operator[]).filter((op) => {\n const entry = FIELD_OPERATOR_CATALOG[op as Operator];\n if (!entry.kinds.includes(kind)) return false;\n if (target && !entry.targets.includes(target)) return false;\n return true;\n });\n const date = (Object.keys(DATE_OPERATOR_CATALOG) as DateOperator[]).filter((op) => {\n const entry = DATE_OPERATOR_CATALOG[op];\n if (!entry.kinds.includes(kind)) return false;\n if (target && !entry.targets.includes(target)) return false;\n return true;\n });\n return { field, date };\n};\n\nexport const getArrayOperators = (target?: RuleTarget): ArrayOperator[] => {\n return (Object.keys(ARRAY_OPERATOR_CATALOG) as ArrayOperator[]).filter((op) => {\n if (!target) return true;\n return ARRAY_OPERATOR_CATALOG[op].targets.includes(target);\n });\n};\n\n// --- Operator sets ---------------------------------------------------------------------------\n// Every set of operators the rails and validation branch on, defined here once. Sets that\n// follow from an entry's value shape are derived; the rest are listed.\n\nconst OPERATOR_ENTRIES: readonly [string, CatalogEntry][] = [\n ...Object.entries(FIELD_OPERATOR_CATALOG),\n ...Object.entries(DATE_OPERATOR_CATALOG),\n];\nconst withShape = (...shapes: ValueShape[]): readonly string[] =>\n OPERATOR_ENTRIES.flatMap(([operator, entry]) =>\n shapes.includes(entry.valueShape) ? [operator] : [],\n );\n\n/** Operators that read no comparison value. */\nexport const NO_VALUE_OPERATORS = withShape('none');\n/** Field comparisons with an order: `<`, `<=`, `>`, `>=`. */\nexport const ORDERED_OPERATORS = withShape('ordered');\n/** A window expression (`within`), not a pair. */\nexport const WINDOW_OPERATORS = withShape('dateWindow');\n/** Operators that compare against two ends. */\nexport const RANGE_OPERATORS = withShape('range', 'dateRange', 'dateWindow');\n/** Operators a null operand leaves with nothing to compare against — unlike `equals` /\n * `notEquals`, where null is the is-null sentinel. */\nexport const OPERAND_OPERATORS = withShape('ordered', 'string', 'pattern', 'array');\n/** Containment — of a substring, or of a list's member: `contains` / `notContains`. */\nexport const CONTAINS_OPERATORS: readonly string[] = [Operator.contains, Operator.notContains];\n/** The threshold comparisons an aggregate takes — equality, order and ranges; every target\n * compiles all of them. */\nexport const AGGREGATE_OPERATORS = withShape('scalar', 'ordered', 'range') as readonly Operator[];\n\n/** What an aggregate computes over its items. */\nexport const AGGREGATE_MODES: readonly AggregateMode[] = ['sum', 'avg'];\n\nexport const getAggregateOperators = (): readonly Operator[] => AGGREGATE_OPERATORS;\n\n/** Equality with one value: `equals` / `notEquals`. */\nexport const EQUALITY_OPERATORS = withShape('scalar');\n/** Membership in a list: `in` / `notIn`. */\nexport const SET_OPERATORS = withShape('array');\n/** Exact equality and membership: what a column answers by value, case-sensitively. */\nexport const EXACT_OPERATORS = withShape('scalar', 'array');\n/** Weekday lists: `dayIn` / `dayNotIn`. */\nexport const DAY_LIST_OPERATORS = withShape('dayList');\n/** Date ranges between two points: date `between` / `notBetween`. */\nexport const DATE_RANGE_OPERATORS = withShape('dateRange');\n/** Operators with a point to move: the comparisons and both ends of a pair. */\nexport const OFFSET_OPERATORS = withShape('scalar', 'ordered', 'range', 'dateValue', 'dateRange');\n\nconst arrayWithShape = (...shapes: ValueShape[]): readonly string[] =>\n Object.entries(ARRAY_OPERATOR_CATALOG).flatMap(([operator, entry]) =>\n shapes.includes(entry.valueShape) ? [operator] : [],\n );\n/** Array operators that count matching elements. */\nexport const ARRAY_COUNT_OPERATORS = arrayWithShape('count');\n/** Array operators that test each element against a condition. */\nexport const ARRAY_CONDITION_OPERATORS = arrayWithShape('predicate', 'count');\n/** Array operators a broader condition only widens: more matching elements never make them false. */\nexport const ARRAY_MONOTONE_OPERATORS: readonly string[] = [\n ArrayOperator.any,\n ArrayOperator.atLeast,\n];\n\n/** The negations: each is the complement of its positive form and keeps NULL fields\n * (the 2.19.0 ruling). */\nexport const NEGATED_OPERATORS: readonly string[] = [\n ...Object.entries(FIELD_OPERATOR_CATALOG),\n ...Object.entries(DATE_OPERATOR_CATALOG),\n].flatMap(([operator, entry]) => (entry.negates ? [operator] : []));\n/** Negations of a string operator: `notContains`, `notStartsWith`, `notEndsWith`. */\nexport const NEGATED_STRING_OPERATORS = NEGATED_OPERATORS.filter((op) =>\n withShape('string').includes(op),\n);\n/** Negations of a two-ended range. */\nexport const NEGATED_RANGE_OPERATORS = NEGATED_OPERATORS.filter((op) =>\n RANGE_OPERATORS.includes(op),\n);\n\n/** Comparisons that bound a field from above / below — what a window's extremal rewrite reads. */\nconst bounding = (...comparators: Comparator[]): readonly string[] =>\n OPERATOR_ENTRIES.flatMap(([operator, entry]) =>\n entry.comparator &&\n comparators.includes(entry.comparator) &&\n !NEGATED_OPERATORS.includes(operator)\n ? [operator]\n : [],\n );\nexport const UPPER_BOUND_OPERATORS = bounding('lt', 'lte');\nexport const LOWER_BOUND_OPERATORS = bounding('gt', 'gte');\n\n// --- Kind sets -------------------------------------------------------------------------------\n\n/** Kinds a calendar unit amount can read: whole numbers. */\nexport const INTEGER_KINDS: readonly FieldKind[] = ['Int', 'BigInt'];\n/** Kinds check() coerces a literal to (see coerceScalar in src/field.ts). */\nexport const COERCIBLE_KINDS: readonly FieldKind[] = [\n ...NUMERIC_KINDS,\n 'DateTime',\n 'Boolean',\n 'String',\n];\n/** Kinds whose literal the compilers coerce exactly as check() does — Prisma rejects a string on\n * Int/Float/Boolean; BigInt compares as Int. Decimal keeps its literal: Prisma and Postgres take\n * the numeric string losslessly, and a JS number would not. */\nexport const COMPILE_COERCED_KINDS: readonly FieldKind[] = [\n 'Int',\n 'BigInt',\n 'Float',\n 'Boolean',\n 'String',\n];\n\n/** Value shapes that take one literal. */\nexport const SINGLE_VALUE_SHAPES: readonly ValueShape[] = ['scalar', 'ordered', 'string'];\n\n// --- Date units ------------------------------------------------------------------------------\n\n/** Each relative unit: the Postgres interval field it adds to, its size there, and whether it is\n * a calendar unit (whole steps). Applied months, then days, then time, as Postgres does. */\nexport const RELATIVE_UNITS = {\n years: { interval: 'months', factor: 12, calendar: true },\n quarters: { interval: 'months', factor: 3, calendar: true },\n months: { interval: 'months', factor: 1, calendar: true },\n weeks: { interval: 'days', factor: 7, calendar: true },\n days: { interval: 'days', factor: 1, calendar: true },\n hours: { interval: 'secs', factor: 3600, calendar: false },\n minutes: { interval: 'secs', factor: 60, calendar: false },\n seconds: { interval: 'secs', factor: 1, calendar: false },\n} as const;\nexport type RelativeUnit = keyof typeof RELATIVE_UNITS;\nexport const INTERVAL_FIELDS = ['months', 'days', 'secs'] as const;\nexport const isRelativeUnit = (unit: string): unit is RelativeUnit =>\n Object.hasOwn(RELATIVE_UNITS, unit);\nexport const isCalendarUnit = (unit: string): boolean =>\n isRelativeUnit(unit) && RELATIVE_UNITS[unit].calendar;\n\nexport const PERIOD_UNITS: readonly string[] = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'isoWeek',\n 'day',\n 'hour',\n 'minute',\n 'second',\n];\n\n// --- Weekdays -------------------------------------------------------------------------------\n\n/** Weekday names in Postgres `EXTRACT(DOW)` order: sunday is 0. */\nexport const DAY_NAMES = [\n 'sunday',\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n] as const;\nexport const isDayName = (name: string): boolean =>\n (DAY_NAMES as readonly string[]).includes(name.toLowerCase());\n\n// --- Complements -----------------------------------------------------------------------------\n// Each operator's complement under check(). A negation keeps NULL fields (the 2.19.0 ruling), so\n// a flip is exact; an ordered comparison has no negated twin, so its complement is the opposite\n// comparison or an absent field.\n\n/** A catalog's negation pairs both ways, plus `extra` pairs that complement without being a\n * NULL-keeping negation. */\nconst complements = (\n catalog: Record<string, CatalogEntry>,\n extra: readonly [string, string][] = [],\n): Readonly<Record<string, string>> =>\n Object.fromEntries(\n [\n ...Object.entries(catalog).flatMap(([op, entry]) =>\n entry.negates ? [[entry.negates, op] as [string, string]] : [],\n ),\n ...extra,\n ].flatMap(([a, b]) => [\n [a, b],\n [b, a],\n ]),\n );\n\nexport const COMPLEMENT_OPERATORS = complements(FIELD_OPERATOR_CATALOG, [\n [Operator.isEmpty, Operator.notEmpty],\n [Operator.exists, Operator.notExists],\n]);\n\nexport const COMPLEMENT_DATE_OPERATORS = complements(DATE_OPERATOR_CATALOG);\n\n/** The opposite of a comparison with no negated twin: its complement, less the absent field. */\nexport const OPPOSITE_OPERATORS: Readonly<Record<string, string>> = {\n [Operator.lessThan]: Operator.greaterThanEquals,\n [Operator.lessThanEquals]: Operator.greaterThan,\n [Operator.greaterThan]: Operator.lessThanEquals,\n [Operator.greaterThanEquals]: Operator.lessThan,\n [DateOperator.onOrBefore]: DateOperator.after,\n [DateOperator.onOrAfter]: DateOperator.before,\n};\n","import { resolveFuzzy } from './engineGlobals';\nimport type { MapHop } from './fieldMap/walk';\nimport type { FuzzyConfig } from './fuzzy';\nimport {\n AGGREGATE_MODES,\n CONTAINS_OPERATORS,\n ORDERED_OPERATORS,\n RANGE_OPERATORS,\n} from './operatorCatalog';\n// Error texts every rail raises the same way.\n\n/** A rule kind a compiler compiles only with a field (check() also takes a root array). */\nexport const fieldlessArrayError = (target: 'toSql' | 'toPrisma'): Error =>\n new Error(`${target}: ArrayRule.field is required (fieldless arrayOps are check-only)`);\n\n/** An operator the catalog doesn't list in its family. */\nexport const unknownOperator = (operator: unknown, family: string): Error =>\n new Error(`Unknown ${family} operator: ${String(operator)}`);\n\n/** A counting array operator with no count. */\nexport const countRequired = (operator: string): Error => new Error(`${operator} requires a count`);\n\n/** A window date operator against a single point instead of a range expression. */\nexport const rangeExprRequired = (operator: string): Error =>\n new Error(\n `${operator} requires a range date expression (a period or rolling window), not a single point`,\n );\n\n/** A counting or element-wise array operator with no condition. */\nexport const conditionRequired = (operator: string): Error =>\n new Error(`${operator} requires a condition to check against array elements`);\n\n/** Comparing a to-one relation as a value. */\nexport const relationNotValue = (field: string): Error =>\n new Error(\n `'${field}' is a relation: it exists or not; compare its fields with '${field}.<field>'.`,\n );\n\n/** A to-many relation compared as a value: it is rows, which an array operator reads. */\nexport const relationsNotValue = (field: string): Error =>\n new Error(\n `'${field}' is a list of rows: compare it with an arrayOperator (any / all / none / empty / atLeast …).`,\n );\n\n/** Fuzzy matching (a rule's `fuzzy`, or the engine-global default) on a compiler: it has no\n * compiled form, so the compilers refuse what check() would match fuzzily. */\nexport const fuzzyNotCompiled = (rule: { fuzzy?: unknown; operator: string }): Error | null =>\n CONTAINS_OPERATORS.includes(rule.operator) &&\n resolveFuzzy(rule.fuzzy as boolean | FuzzyConfig | undefined)\n ? new Error('Fuzzy matching has no compiled form — evaluate it in memory with check().')\n : null;\n\n/** An ordered comparison or a range against a value that doesn't order — a boolean, a list or an\n * object: check() matches nothing, and the databases order it by type (Prisma panics). */\nexport const unorderedOperand = (operator: string, value: unknown): Error | null => {\n if (!ORDERED_OPERATORS.includes(operator) && !RANGE_OPERATORS.includes(operator)) return null;\n const ends = RANGE_OPERATORS.includes(operator) && Array.isArray(value) ? value : [value];\n return ends.some(\n (end) =>\n typeof end === 'boolean' ||\n (typeof end === 'object' && end !== null && !(end instanceof Date)),\n )\n ? new Error(\n `'${operator}' orders numbers, strings and dates; it can't compare ${JSON.stringify(value)}`,\n )\n : null;\n};\n\n/** An aggregate mode outside AGGREGATE_MODES. */\nexport const unknownAggregateMode = (mode: unknown): Error =>\n new Error(`aggregate.mode must be one of ${AGGREGATE_MODES.join(' / ')}, not '${String(mode)}'`);\n\n/** A node that is not exactly one kind of condition. */\nexport const ambiguousCondition = (): Error =>\n new Error(\n 'A condition is exactly one of: a field, date, array or aggregate rule, all, any, or if/then[/else]',\n );\n\n/** A rule a compiler can't express as check() reads it: refused, never compiled to something\n * else. `why` says what the target would do instead. */\nexport const noCompiledForm = (target: 'toSql' | 'toPrisma', what: string, why?: string): Error =>\n new Error(\n `${what} has no ${target === 'toSql' ? 'SQL' : 'Prisma'} form${why ? ` (${why})` : ''}; use ${target === 'toSql' ? 'check()' : 'toSql() or check()'}.`,\n );\n\n/** A window (filter / orderBy / take / skip) a compiler has no form for. */\nexport const windowUnsupported = (target: 'toSql' | 'toPrisma'): Error =>\n new Error(\n `Windowing (filter/orderBy/take/skip) is not supported by ${target}() for this rule; evaluate with check()${target === 'toPrisma' ? ' — toPrisma compiles a filter alone and an extremal take: 1' : ''}.`,\n );\n\n/** A to-many relation inside a plain field path: which child it reads is undefined. */\nexport const toManyHopError = (field: string, hop: MapHop): Error =>\n new Error(\n `'${field}' reads through the to-many relation '${hop.prefix}'; compare its rows with an arrayOperator rule on '${hop.prefix}'.`,\n );\n\n/** The error for a path that continues past a non-Json column. */\nexport const pastScalarError = (field: string, column: string): Error =>\n new Error(`'${field}' continues past '${column}', which is not a Json column`);\n","import dayjs from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear.js';\nimport timezone from 'dayjs/plugin/timezone.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport { isPlainObject } from 'lodash-es';\nimport { rangeExprRequired } from './errors';\nimport {\n type INTERVAL_FIELDS,\n leafCatalogEntry,\n PERIOD_UNITS,\n RELATIVE_UNITS,\n type RelativeUnit,\n UPPER_BOUND_OPERATORS,\n} from './operatorCatalog';\nimport type {\n DateConfig,\n DateExpr,\n EdgeExpr,\n PeriodExpr,\n PeriodUnit,\n RelativeUnits,\n RollingExpr,\n} from './types';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(quarterOfYear);\ndayjs.extend(isoWeek);\n\n/** True when a DateRule `value` is a structured date expression rather than an absolute date. */\nexport const isDateExpr = (value: unknown): value is DateExpr => {\n if (!isPlainObject(value)) return false;\n const v = value as Record<string, unknown>;\n return (\n 'ago' in v ||\n 'ahead' in v ||\n 'this' in v ||\n 'last' in v ||\n 'next' in v ||\n 'start' in v ||\n 'end' in v\n );\n};\n\n/** The zone an evaluation reads in when none is set: never the host's. */\nexport const DEFAULT_ZONE = 'UTC';\n\n/** A date config with its zone read: the expression layer never sees a value source. */\nexport type ResolvedDateConfig = Omit<DateConfig, 'timeZone'> & { timeZone: string };\n\nexport const requireNow = (config: ResolvedDateConfig): dayjs.Dayjs => {\n if (config.now === undefined)\n throw new Error('date expressions require `now` to be supplied to the evaluator');\n const base = dayjs(config.now).tz(config.timeZone);\n if (!base.isValid()) throw new Error(`invalid \\`now\\`: ${String(config.now)}`);\n return base;\n};\n\n// Units apply as Postgres applies an interval to a wall-clock time: the month part (years,\n// quarters, months), then the day part (weeks, days), then time — so a shift lands on the same\n// instant in check() and in toSql, at a month end (2024-02-29 + 1 year 1 month is 2025-03-29)\n// and across a DST change in the evaluation's zone (a day is 23 hours on the spring-forward day).\n/** The units' total in one Postgres interval field (months, days or secs). */\nconst intervalTotal = (\n units: RelativeUnits<number>,\n field: (typeof INTERVAL_FIELDS)[number],\n): number =>\n (Object.entries(units) as [RelativeUnit, number][]).reduce(\n (total, [unit, amount]) =>\n RELATIVE_UNITS[unit].interval === field\n ? total + amount * RELATIVE_UNITS[unit].factor\n : total,\n 0,\n );\n\nconst WALL = 'YYYY-MM-DDTHH:mm:ss.SSS';\n\n/** Move `base` by `units` on the wall clock of `zone` — forward for `ahead` (1), back for `ago` (-1). */\nexport const shiftByUnits = (\n base: dayjs.Dayjs,\n units: RelativeUnits<number>,\n direction: 1 | -1,\n zone: string,\n): dayjs.Dayjs => {\n const months = intervalTotal(units, 'months');\n const days = intervalTotal(units, 'days');\n const seconds = intervalTotal(units, 'secs');\n let wall = dayjs.utc(base.tz(zone).format(WALL));\n if (months) wall = wall.add(direction * months, 'month');\n if (days) wall = wall.add(direction * days, 'day');\n if (seconds) wall = wall.add(direction * seconds * 1000, 'millisecond');\n return dayjs.tz(wall.format(WALL), zone);\n};\n\nconst isRollingExpr = <A>(e: DateExpr<A>): e is RollingExpr<A> => 'ago' in e || 'ahead' in e;\n/** A rolling expression from units and a direction: back (-1) is `ago`, forward (1) `ahead`. */\nexport const rollingExpr = <A>(units: RelativeUnits<A>, direction: 1 | -1): RollingExpr<A> =>\n direction === -1 ? { ago: units } : { ahead: units };\n\n/** A rolling expression's units and direction: `ago` moves back (-1), `ahead` forward (1). */\nexport const rollingShift = <A>(expr: DateExpr<A>): [RelativeUnits<A>, 1 | -1] | null =>\n isRollingExpr(expr) ? ('ago' in expr ? [expr.ago, -1] : [expr.ahead, 1]) : null;\n\nexport const isPeriodExpr = <A>(e: DateExpr<A>): e is PeriodExpr =>\n 'this' in e || 'last' in e || 'next' in e;\nexport const isEdgeExpr = <A>(e: DateExpr<A>): e is EdgeExpr => 'start' in e || 'end' in e;\n\n/** What a period expression names, whichever of this / last / next it uses. */\nexport const namedPeriod = (expr: PeriodExpr): unknown =>\n 'this' in expr ? expr.this : 'last' in expr ? expr.last : expr.next;\n\n/** A period expression's unit; an unknown one throws (dayjs would read it as a millisecond). */\nconst periodUnit = (expr: PeriodExpr): PeriodUnit => {\n const unit = namedPeriod(expr);\n if (typeof unit !== 'string' || !PERIOD_UNITS.includes(unit))\n throw new Error(`Unknown period unit '${String(unit)}'`);\n return unit as PeriodUnit;\n};\n\n// `week` is governed by weekStart (default monday → isoWeek). `isoWeek` is always Monday.\nconst effectivePeriodUnit = (unit: PeriodUnit, config: ResolvedDateConfig): dayjs.OpUnitType => {\n if (unit === 'week')\n return (config.weekStart === 'sunday' ? 'week' : 'isoWeek') as dayjs.OpUnitType;\n return unit as dayjs.OpUnitType;\n};\n\n/** Resolve a calendar period (this/last/next) to its [start, end] boundaries. */\nconst resolvePeriodRange = (\n expr: PeriodExpr,\n config: ResolvedDateConfig,\n): [dayjs.Dayjs, dayjs.Dayjs] => {\n const now = requireNow(config);\n const unit = periodUnit(expr);\n // Step whole periods first, then snap — robust to month-length clamping.\n const stepUnit = (unit === 'isoWeek' ? 'week' : unit) as dayjs.QUnitType;\n let base = now;\n if ('last' in expr) base = now.subtract(1, stepUnit);\n else if ('next' in expr) base = now.add(1, stepUnit);\n const eff = effectivePeriodUnit(unit, config);\n return [base.startOf(eff), base.endOf(eff)];\n};\n\n/**\n * Resolve a point expression (for before/after/onOrBefore/onOrAfter).\n * Rolling → the offset instant; edge → the named boundary of a period.\n */\nexport const resolveDateExpr = (\n expr: DateExpr<number>,\n config: ResolvedDateConfig,\n): dayjs.Dayjs => {\n const rolling = rollingShift(expr);\n if (rolling) return shiftByUnits(requireNow(config), ...rolling, config.timeZone);\n if (isEdgeExpr(expr)) {\n const period = 'start' in expr ? expr.start : expr.end;\n const [start, end] = resolvePeriodRange(period, config);\n return 'start' in expr ? start : end;\n }\n throw new Error(\n 'a point operator requires a rolling or start/end edge expression, not a bare period',\n );\n};\n\n/**\n * Resolve the single comparison point for before/after/onOrBefore/onOrAfter.\n * Bare period → implied edge (before/onOrBefore → start; after/onOrAfter → end).\n * Rolling/edge → their point. Shared by check, toPrisma, and toSql.\n */\nexport const resolvePointForOperator = (\n expr: DateExpr<number>,\n operator: string,\n config: ResolvedDateConfig,\n): dayjs.Dayjs => {\n if (isPeriodExpr(expr)) {\n const [start, end] = resolvePeriodRange(expr, config);\n // An upper bound anchors at the start; a negation at its positive form's edge.\n const positive = leafCatalogEntry({ dateOperator: operator })?.negates ?? operator;\n return UPPER_BOUND_OPERATORS.includes(positive) ? start : end;\n }\n return resolveDateExpr(expr, config);\n};\n\n/**\n * Resolve a range expression (for `within`).\n * Period → its [start, end]; rolling → [now-Δ, now] / [now, now+Δ].\n */\nexport const resolveDateExprRange = (\n expr: DateExpr<number>,\n config: ResolvedDateConfig,\n): [dayjs.Dayjs, dayjs.Dayjs] => {\n if (isPeriodExpr(expr)) return resolvePeriodRange(expr, config);\n const rolling = rollingShift(expr);\n if (rolling) {\n const now = requireNow(config);\n const moved = shiftByUnits(now, ...rolling, config.timeZone);\n return rolling[1] === -1 ? [moved, now] : [now, moved];\n }\n throw rangeExprRequired('within');\n};\n","import { isPlainObject } from 'lodash-es';\nimport { parseScopeRef, readPath, type ScopeRef, type Scopes } from './scope';\nimport type { RuleValue, ValueSourceFields, ValueSourceOf } from './types';\n\n// A value source is `{ value } | { path } | { bind }`. One dispatch reads it; each rail supplies\n// only what a path and a bind mean there. Its consumers — a leaf's comparison value, an offset,\n// a unit amount, the evaluation's time zone — decide what the value means.\n\ntype Source = ValueSourceFields<unknown>;\n\n/** The three forms, in the order a source is read. */\nexport const SOURCE_FORMS = ['value', 'bind', 'path'] as const;\n\n/** A non-empty `path` — the one test for \"reads a path\". */\nexport const hasPath = (source: Source): source is Source & { path: string } =>\n typeof source.path === 'string' && source.path !== '';\n\n/** The scope a source's path reads when it reads the row (`$.`, `$$.`, …), else null. */\nexport const rowRef = (source: Source): ScopeRef | null =>\n hasPath(source) ? parseScopeRef(source.path) : null;\n\ntype SourceReaders<R> = {\n value: (value: unknown) => R;\n path: (ref: string) => R;\n bind: (name: string, optional: boolean | undefined) => R;\n};\n\n/** The one dispatch over a value source's three forms. */\nexport const matchSource = <R>(source: Source, read: SourceReaders<R>): R => {\n if (source.value !== undefined) return read.value(source.value);\n if (source.bind !== undefined) return read.bind(source.bind, source.bindOptional);\n if (hasPath(source)) return read.path(source.path);\n throw new Error('No value, path or bind specified');\n};\n\nexport const isValueSource = (v: unknown): v is ValueSourceOf<unknown> =>\n isPlainObject(v) &&\n ((v as Source).value !== undefined ||\n hasPath(v as Source) ||\n typeof (v as Source).bind === 'string');\n\n/**\n * The value of one `{ bind }` at evaluation. Key presence is the contract: an unsupplied\n * binding is a caller bug (a forgotten scope must never silently run) unless the source marks\n * it `bindOptional`, which reads as null. A supplied-but-undefined binding is null.\n */\nexport const readBinding = (\n name: string,\n optional: boolean | undefined,\n bindings: Record<string, RuleValue> | undefined,\n): RuleValue => {\n if (!bindings || !Object.hasOwn(bindings, name)) {\n if (optional === true) return null;\n throw new Error(`Missing binding for \"${name}\"`);\n }\n const bound = bindings[name];\n return bound === undefined ? null : bound;\n};\n\n/** A `{ bind }` the compilers meet unresolved: null when optional, a caller bug otherwise. */\nexport const compileBinding = (\n name: string,\n optional: boolean | undefined,\n rail: 'toSql' | 'toPrisma',\n): null => {\n if (optional === true) return null;\n throw new Error(\n `Unresolved binding '${name}' — resolve bindings (bindRule / bindLens) before compiling with ${rail}().`,\n );\n};\n\n/** check(): what a value source reads — the literal, the bound value, or the path read. */\nexport const readValueSource = (\n source: Source,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n): unknown =>\n matchSource<unknown>(source, {\n value: (value) => value,\n bind: (name, optional) => readBinding(name, optional, bindings),\n path: (ref) => readPath(ref, scopes, context) ?? null,\n });\n\n/** How a rail reads a source whose value it needs now (an amount, a zone). */\nexport type ReadSource = (source: ValueSourceOf<unknown>) => unknown;\n","import { isPlainObject } from 'lodash-es';\nimport { isDateExpr, rollingExpr, rollingShift } from './dateExpr';\nimport { isCalendarUnit } from './operatorCatalog';\nimport type { Condition, RelativeUnits, ValueSourceOf } from './types';\nimport { hasPath, isValueSource } from './valueSource';\n\nexport type ConditionNode = Record<string, unknown>;\n\nconst isObjCondition = (c: Condition): c is Exclude<Condition, boolean> =>\n typeof c === 'object' && c !== null;\n\n// An implication is any of its three keys, as conditionShape reads it.\nconst isIfNode = (node: ConditionNode): boolean => 'if' in node || 'then' in node || 'else' in node;\n\nexport const isRelationNode = (node: ConditionNode): boolean =>\n 'arrayOperator' in node || 'aggregate' in node;\n\n// The one structural walk over a condition tree — the grammar's child slots are listed\n// here and nowhere else. A node's logical children (`all` / `any` / `if`…) sit in its scope;\n// its `condition` / `filter` sit in the scope `below` returns for it (the same by default),\n// and `false` stops the walk there. A scope is whatever the walk tracks: a relation target,\n// a stack of them, a model.\ntype Below<S> = (node: ConditionNode, scope: S) => S | false;\n\ntype Slot = { key: string; index?: number; child: Condition; nested: boolean };\n\nconst childSlots = (node: ConditionNode): Slot[] => [\n ...(['all', 'any'] as const).flatMap((key) =>\n Array.isArray(node[key])\n ? (node[key] as Condition[]).map((child, index) => ({ key, index, child, nested: false }))\n : [],\n ),\n ...(isIfNode(node)\n ? (['if', 'then', 'else'] as const).flatMap((key) =>\n node[key] !== undefined ? [{ key, child: node[key] as Condition, nested: false }] : [],\n )\n : []),\n ...(['condition', 'filter'] as const).flatMap((key) =>\n node[key] !== undefined ? [{ key, child: node[key] as Condition, nested: true }] : [],\n ),\n];\n\nexport const isLogicalNode = (node: ConditionNode): boolean =>\n 'all' in node || 'any' in node || isIfNode(node);\n\n/** Visits every node with the scope it sits in. `enter` returns the scope for the node's\n * `condition` / `filter` (nothing for the same, `false` to stop there). */\nexport const visitCondition = <S = undefined>(\n condition: Condition,\n enter: (node: ConditionNode, scope: S) => S | false | undefined,\n scope?: S,\n): void => {\n if (!isObjCondition(condition)) return;\n const node = condition as ConditionNode;\n const below = enter(node, scope as S);\n const inner = below === undefined ? scope : below;\n for (const { child, nested } of childSlots(node)) {\n if (!nested) visitCondition(child, enter, scope);\n else if (inner !== false) visitCondition(child, enter, inner);\n }\n};\n\n/** True when `test` holds for any node; `below` scopes nested conditions as in visitCondition. */\nexport const someCondition = <S = undefined>(\n condition: Condition,\n test: (node: ConditionNode, scope: S) => boolean,\n below?: Below<S>,\n scope?: S,\n): boolean => {\n let found = false;\n visitCondition<S>(\n condition,\n (node, at) => {\n if (!found && test(node, at)) found = true;\n return found ? false : below?.(node, at);\n },\n scope,\n );\n return found;\n};\n\n// Rewrite twin. `rewrite` sees a shallow clone before its children rebuild (pre-order, so a\n// substitution's own children are still walked); `after` sees it once they have (to wrap it\n// without walking the wrapper). Never mutates the input, and returns it when nothing changed.\nexport const mapCondition = <S = undefined>(\n condition: Condition,\n opts: {\n rewrite?: (node: ConditionNode, scope: S) => ConditionNode;\n after?: (node: ConditionNode, scope: S) => Condition;\n below?: Below<S>;\n },\n scope?: S,\n): Condition => {\n if (!isObjCondition(condition)) return condition;\n const at = scope as S;\n const clone = { ...(condition as ConditionNode) };\n const node = opts.rewrite ? opts.rewrite(clone, at) : clone;\n const slots = childSlots(node);\n const inner = slots.some((slot) => slot.nested) && opts.below ? opts.below(node, at) : at;\n for (const key of ['all', 'any'])\n if (Array.isArray(node[key])) node[key] = [...(node[key] as [])];\n for (const { key, index, child, nested } of slots) {\n if (nested && inner === false) continue;\n const mapped = mapCondition(child, opts, nested ? (inner as S) : at);\n if (index === undefined) node[key] = mapped;\n else (node[key] as Condition[])[index] = mapped;\n }\n const result = opts.after ? opts.after(node, at) : (node as Condition);\n return result === node && sameNode(node, condition as ConditionNode) ? condition : result;\n};\n\n// Whether a rebuilt node holds exactly what the original did, so an untouched tree comes back\n// as the same object.\nconst sameNode = (node: ConditionNode, original: ConditionNode): boolean => {\n const keys = Object.keys(node);\n if (keys.length !== Object.keys(original).length) return false;\n return keys.every((key) => {\n const [a, b] = [node[key], original[key]];\n if (a === b) return true;\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((item, index) => item === b[index])\n );\n });\n};\n\n/** How a slot's value is used: the comparison value, a number, a whole number, a date shift. */\ntype SourceRole = 'value' | 'number' | 'whole' | 'shift';\n\ntype MapSource = (source: ValueSourceOf<unknown>, role: SourceRole) => ValueSourceOf<unknown>;\n\nconst mapUnits = (units: unknown, fn: MapSource): unknown =>\n isPlainObject(units)\n ? Object.fromEntries(\n Object.entries(units as Record<string, unknown>).map(([unit, amount]) => [\n unit,\n isValueSource(amount) ? fn(amount, isCalendarUnit(unit) ? 'whole' : 'number') : amount,\n ]),\n )\n : units;\n\nconst mapExpr = (expr: unknown, fn: MapSource): unknown => {\n const rolling = isDateExpr(expr) ? rollingShift(expr) : null;\n return rolling ? rollingExpr(mapUnits(rolling[0], fn) as RelativeUnits, rolling[1]) : expr;\n};\n\n/**\n * A leaf's value-source slots, listed once: the leaf itself, its offset, and — on a date rule —\n * each unit amount in its value and its offset's value. `fn` rewrites each slot (identity to\n * list them). Non-mutating; a node with no slots comes back as is.\n */\nexport const mapLeafSources = <T extends Record<string, unknown>>(node: T, fn: MapSource): T => {\n const isDate = 'dateOperator' in node;\n if (!isDate && !('operator' in node)) return node;\n let out: Record<string, unknown> = node;\n if (isDate && node.value !== undefined) {\n const value = Array.isArray(node.value)\n ? node.value.map((v) => mapExpr(v, fn))\n : mapExpr(node.value, fn);\n out = { ...out, value };\n }\n if (isValueSource(node.offset)) {\n const offset = isDate\n ? {\n ...node.offset,\n ...(node.offset.value !== undefined && { value: mapExpr(node.offset.value, fn) }),\n }\n : node.offset;\n out = { ...out, offset: fn(offset as ValueSourceOf<unknown>, isDate ? 'shift' : 'number') };\n }\n if (isValueSource(out)) out = fn(out, 'value');\n return out as T;\n};\n\ntype LeafSource = { source: ValueSourceOf<unknown>; role: SourceRole };\n\n/** Every value source on a leaf, with how its value is used. */\nexport const leafSources = (node: Record<string, unknown>): LeafSource[] => {\n const found: LeafSource[] = [];\n mapLeafSources(node, (source, role) => {\n found.push({ source, role });\n return source;\n });\n return found;\n};\n\ntype ValueRef = { ref: string; role: SourceRole };\n\n/** Every path a leaf reads on its value side, with how it is read. */\nexport const valueRefRoles = (node: Record<string, unknown>): ValueRef[] =>\n leafSources(node).flatMap(({ source, role }) =>\n hasPath(source) ? [{ ref: source.path, role }] : [],\n );\n\n/** Every path a leaf reads on its value side. */\nexport const valueRefs = (node: Record<string, unknown>): string[] =>\n valueRefRoles(node).map((r) => r.ref);\n\n// The element fields a relation node orders or aggregates by — read per element, under the\n// element's grants.\nexport const elementRefs = (node: Record<string, unknown>): string[] => [\n ...(Array.isArray(node.orderBy)\n ? (node.orderBy as { field?: unknown }[]).flatMap((o) =>\n typeof o?.field === 'string' ? [o.field] : [],\n )\n : []),\n ...(typeof (node.aggregate as { field?: unknown })?.field === 'string'\n ? [(node.aggregate as { field: string }).field]\n : []),\n];\n\nexport type ConditionShape = 'all' | 'any' | 'if' | 'field' | 'aggregate' | 'array' | 'date';\n\n/** What a condition node is — exactly one of the grammar's node kinds — or null when its keys\n * name more than one (a node every rail would read differently). */\nexport const conditionShape = (node: Record<string, unknown>): ConditionShape | null => {\n const shapes = new Set<ConditionShape>();\n if ('all' in node) shapes.add('all');\n if ('any' in node) shapes.add('any');\n if (isIfNode(node)) shapes.add('if');\n if ('arrayOperator' in node) shapes.add('array');\n if ('dateOperator' in node) shapes.add('date');\n if ('aggregate' in node) shapes.add('aggregate');\n else if ('operator' in node) shapes.add('field');\n return shapes.size === 1 ? [...shapes][0] : null;\n};\n\n/** Conditions AND-ed together: `true` for none, the condition itself for one. */\nexport const allOf = (conditions: readonly Condition[]): Condition =>\n conditions.length === 0\n ? true\n : conditions.length === 1\n ? conditions[0]\n : { all: [...conditions] };\n\n/** Conditions OR-ed together: `false` for none, the condition itself for one. */\nexport const anyOf = (conditions: readonly Condition[]): Condition =>\n conditions.length === 0\n ? false\n : conditions.length === 1\n ? conditions[0]\n : { any: [...conditions] };\n","import {\n type ConditionNode,\n leafSources,\n mapCondition,\n mapLeafSources,\n visitCondition,\n} from './traverse';\nimport type { Condition, RuleValue, ValueSourceOf } from './types';\n\nimport { readBinding } from './valueSource';\n\n// Every `{ bind }` on a leaf: its comparison value, its offset, its unit amounts.\ntype BindSource = Extract<ValueSourceOf<unknown>, { bind: string }>;\nconst bindTokens = (node: ConditionNode): BindSource[] =>\n leafSources(node).flatMap(({ source }) =>\n typeof source.bind === 'string' ? [source as BindSource] : [],\n );\n\n/** `required`: leave out the names an optional bind (`bindOptional`) may go unsupplied. */\nexport type ListBindingsOptions = { required?: boolean };\n\n/**\n * The bind names a rule reads, sorted. With `required`, only those a bindings map must cover —\n * not `bindOptional` (unsupplied, it reads null); a name optional at one leaf and required at\n * another is required.\n */\nexport const listBindings = (\n condition: Condition,\n { required = false }: ListBindingsOptions = {},\n): string[] => {\n const names = new Set<string>();\n visitCondition(condition, (node) => {\n for (const token of bindTokens(node))\n if (!required || token.bindOptional !== true) names.add(token.bind);\n });\n return [...names].sort();\n};\n\n/**\n * Substitute covered binds with their values; uncovered tokens stay in place (partial\n * resolution). A supplied-but-undefined binding becomes null to stay serializable.\n * Non-mutating.\n */\nexport const bindRule = (condition: Condition, bindings: Record<string, RuleValue>): Condition => {\n // A covered `{ bind, bindOptional }` source becomes `{ value }`; an uncovered one stays.\n const resolve = (source: ValueSourceOf<unknown>): ValueSourceOf<unknown> => {\n if (typeof source.bind !== 'string' || !Object.hasOwn(bindings, source.bind)) return source;\n const { bind, bindOptional: _optional, ...rest } = source;\n return { ...rest, value: readBinding(bind, true, bindings) } as ValueSourceOf<unknown>;\n };\n // A second pass resolves binds a substituted value brought with it (a bound `{ ago }` whose\n // amount is itself a `{ bind }`).\n return mapCondition(condition, {\n rewrite: (node) => mapLeafSources(mapLeafSources(node, resolve), resolve),\n });\n};\n","import type { OrderedRuleValue } from './types';\n\n// BigInt compares as Int: a bigint (what Prisma returns for a BigInt column) becomes a JS\n// number on every side of a comparison, so 5n matches 5. Past ±2^53 a number cannot hold it\n// exactly and every comparison would be silently wrong, so that throws instead.\nconst MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\n\nexport const bigIntToNumber = (value: bigint): number => {\n if (value > MAX_SAFE || value < -MAX_SAFE)\n throw new RangeError(\n `BigInt ${value} is outside the safe integer range (±2^53); json-rules compares BigInt as Int.`,\n );\n return Number(value);\n};\n\nexport const toNumber = (raw: unknown): unknown => {\n if (typeof raw === 'bigint') return bigIntToNumber(raw);\n if (typeof raw === 'string' && raw.trim() !== '' && Number.isFinite(Number(raw)))\n return Number(raw);\n return raw;\n};\n\n/** A source's number; null when it reads nothing. `what` names the slot in the error. */\nexport const readNumber = (raw: unknown, what: string): number | null => {\n if (raw === null || raw === undefined) return null;\n const value = toNumber(raw);\n if (typeof value !== 'number' || !Number.isFinite(value))\n throw new Error(`${what} reads a number (got ${String(raw)})`);\n return value;\n};\n\n/** A pair in ascending order — a range's ends, however authored. */\nexport const orderPair = <T>([a, b]: readonly [T, T] | T[]): [T, T] =>\n (b as never) < (a as never) ? [b, a] : [a, b];\n\n/** A range operand: two ends, or an error naming the operator. */\nexport const readPair = (value: unknown, operator: string): [unknown, unknown] => {\n if (!Array.isArray(value) || value.length !== 2)\n throw new Error(`${operator} operator requires an array of two values`);\n return [value[0], value[1]];\n};\n\n/** A range operand whose ends order (numbers, strings, dates), or an error naming the operator. */\nexport const readOrderedPair = (value: unknown, operator: string): [unknown, unknown] => {\n const pair = readPair(value, operator);\n if (!pair.every(isOrderedValue))\n throw new Error(\n `${operator} requires two ends that order — numbers, strings or dates (got ${JSON.stringify(value)})`,\n );\n return pair;\n};\n\n/** A set operand: a list, or an error — a scalar is not a set. */\nexport const readSet = (value: unknown): unknown[] => {\n if (!Array.isArray(value))\n throw new Error(`in / notIn requires a list (got ${JSON.stringify(value)})`);\n return value;\n};\n\n/** A set operand's non-null members, and whether it names null. */\nexport const splitNull = (operand: unknown): { values: unknown[]; hasNull: boolean } => {\n const list = readSet(operand);\n const values = list.filter((v) => v !== null);\n return { values, hasNull: values.length !== list.length };\n};\n\n/** A value that orders: a string, a number or a Date — also every date input. */\nexport const isOrderedValue = (value: unknown): value is OrderedRuleValue =>\n typeof value === 'string' || typeof value === 'number' || value instanceof Date;\n","import { rollingExpr, rollingShift } from './dateExpr';\nimport { readNumber } from './number';\nimport { isCalendarUnit } from './operatorCatalog';\nimport type { DateExpr, Magnitude, RelativeUnits } from './types';\nimport { hasPath, type ReadSource } from './valueSource';\n\n// A unit amount in a date expression: a literal number or a value source that reads one.\n\n/** Why a unit can't take `amount` — it reads a non-negative number, a calendar unit a whole\n * one — or null. */\nexport const unitAmountProblem = (amount: unknown, unit: string): string | null =>\n typeof amount === 'number' &&\n Number.isFinite(amount) &&\n amount >= 0 &&\n (!isCalendarUnit(unit) || Number.isInteger(amount))\n ? null\n : `${unit} must be a non-negative${isCalendarUnit(unit) ? ' whole' : ''} number (got ${String(amount)})`;\n\n/**\n * A unit amount's number. A supplied amount — literal, `{ value }` or `{ bind }` — that the unit\n * can't take is a caller error and throws. One read from data by `{ path }` — negative, or\n * fractional on a calendar unit — reads as null, as does nothing at all, so the comparison\n * fails closed on every rail.\n */\nexport const resolveMagnitude = (\n magnitude: Magnitude,\n read: ReadSource,\n unit: keyof RelativeUnits,\n): number | null => {\n const amount =\n typeof magnitude === 'number'\n ? magnitude\n : readNumber(read(magnitude), magnitude.path ? `'${magnitude.path}' (${unit})` : unit);\n const problem = amount === null ? null : unitAmountProblem(amount, unit);\n if (problem === null) return amount;\n if (typeof magnitude !== 'number' && hasPath(magnitude)) return null;\n throw new Error(problem);\n};\n\n/** Units with every amount read, or null when one reads nothing usable. */\nexport const resolveUnits = (\n units: RelativeUnits,\n read: ReadSource,\n): RelativeUnits<number> | null => {\n const resolved: RelativeUnits<number> = {};\n for (const [unit, magnitude] of Object.entries(units) as [keyof RelativeUnits, Magnitude][]) {\n if (magnitude === undefined) continue;\n const amount = resolveMagnitude(magnitude, read, unit);\n if (amount === null) return null;\n resolved[unit] = amount;\n }\n return resolved;\n};\n\n/** A date expression with its amounts read, or null when one reads nothing. */\nexport const resolveExpr = (expr: DateExpr, read: ReadSource): DateExpr<number> | null => {\n const rolling = rollingShift(expr);\n if (!rolling) return expr as DateExpr<number>;\n const units = resolveUnits(rolling[0], read);\n if (!units) return null;\n return rollingExpr(units, rolling[1]);\n};\n","import { isDateExpr, rollingShift } from './dateExpr';\nimport { readNumber, toNumber } from './number';\nimport type { RelativeUnits } from './types';\n\n// An offset moves a leaf's comparison value. It reads its own value source: a number on a field\n// rule, a rolling `{ ago }` / `{ ahead }` on a date rule.\n\n/**\n * A comparison value moved by a numeric offset. A range moves at both ends, and a range\n * missing an end is null — nothing to compare against.\n */\nexport const addOffset = (value: unknown, offset: number): unknown => {\n if (value === null || value === undefined) return null;\n if (Array.isArray(value)) {\n const ends = value.map((item) => addOffset(item, offset));\n return ends.some((end) => end === null) ? null : ends;\n }\n const number = toNumber(value);\n if (typeof number !== 'number' || !Number.isFinite(number))\n throw new Error(`offset needs a numeric comparison value (got ${String(value)})`);\n return number + offset;\n};\n\n/** A numeric offset's amount, read from its source; null when it reads nothing. */\nexport const offsetAmount = (raw: unknown): number | null => readNumber(raw, 'an offset');\n\n/** A date offset's rolling shift, read from its source; null when it reads nothing. */\nexport const offsetShift = (raw: unknown): [RelativeUnits, 1 | -1] | null => {\n if (raw === null || raw === undefined) return null;\n const rolling = isDateExpr(raw) ? rollingShift(raw) : null;\n if (!rolling)\n throw new Error(`a date offset reads { ago } or { ahead } (got ${JSON.stringify(raw)})`);\n return rolling;\n};\n","import dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport timezone from 'dayjs/plugin/timezone.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport { resolveExpr, resolveUnits } from './amount';\nimport {\n DEFAULT_ZONE,\n isDateExpr,\n type ResolvedDateConfig,\n resolveDateExpr,\n resolveDateExprRange,\n resolvePointForOperator,\n shiftByUnits,\n} from './dateExpr';\nimport { rangeExprRequired, unknownOperator } from './errors';\nimport { isOrderedValue, orderPair, readPair } from './number';\nimport { offsetShift } from './offset';\nimport { DateOperator } from './operator';\nimport {\n DATE_RANGE_OPERATORS,\n DAY_LIST_OPERATORS,\n DAY_NAMES,\n NEGATED_OPERATORS,\n WINDOW_OPERATORS,\n} from './operatorCatalog';\nimport { readField, type Scopes } from './scope';\nimport type { DateConfig, DateExpr, DateInputValue, DateRule, RuleValue } from './types';\nimport { type ReadSource, readValueSource, rowRef } from './valueSource';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isSameOrAfter);\n\nexport const checkDate = (\n condition: DateRule,\n scopes: Scopes,\n context: unknown,\n config: DateConfig = {},\n bindings?: Record<string, RuleValue>,\n): boolean | string => {\n const fieldValue = readField(condition.field, scopes);\n\n // Read the zone ONCE. Left unset when the caller set none, so expression `now` keeps its\n // prior behavior; anchoring and shifts default to UTC.\n const exprConfig = resolveDateConfig(config, (source) =>\n readValueSource(source, scopes, context, bindings),\n );\n const tz = exprConfig.timeZone;\n\n // Null: non-match for positive operators, match for negated ones (2.19.0 negation\n // ruling) — the compilers carry the same split. `== null`, not falsy: epoch 0 is a\n // real instant and compares; '' falls to the validity error below.\n if (fieldValue == null) {\n if (NEGATED_OPERATORS.includes(condition.dateOperator)) return true;\n return condition.error || `${condition.field} has no value`;\n }\n // A naive field string is anchored in the resolved zone (default UTC); an absolute\n // instant (Date/number/zone-stamped string) is used as-is. Consistent with the\n // engine's config.timeZone policy used by dateExpr and both compilers.\n const fieldDate = isOrderedValue(fieldValue) ? parseDateValue(fieldValue, tz) : null;\n if (!fieldDate?.isValid())\n throw new Error(`${condition.field} is not a valid date: ${String(fieldValue)}`);\n\n const getError = (op: string) => condition.error || `${condition.field} ${op}`;\n\n // A weekday list reads no instant.\n if (DAY_LIST_OPERATORS.includes(condition.dateOperator)) {\n const days = dayNumbers(readValueSource(condition, scopes, context, bindings));\n if (days === null) return condition.error || `${condition.field} has no comparison value`;\n const listed = days.includes(fieldDate.tz(tz).day());\n const names = days.map((day) => DAY_NAMES[day]).join(' or ');\n return condition.dateOperator === DateOperator.dayIn\n ? listed || getError(`must be on ${names}`)\n : !listed || getError(`must not be on ${names}`);\n }\n\n const dates = parseCompareDates(condition, scopes, context, exprConfig, tz, bindings);\n // Nothing to compare against — a null path, bind or magnitude: no operator matches, as SQL's\n // comparison with NULL never does. A null field was already decided above.\n if (dates === null) return condition.error || `${condition.field} has no comparison value`;\n // A window or range operator always reads a pair; the others read one point.\n const [compareDate, endDate = compareDate] = dates;\n\n switch (condition.dateOperator) {\n case DateOperator.before:\n return fieldDate.isBefore(compareDate) || getError(`must be before ${compareDate.format()}`);\n\n case DateOperator.after:\n return fieldDate.isAfter(compareDate) || getError(`must be after ${compareDate.format()}`);\n\n case DateOperator.onOrBefore:\n return (\n fieldDate.isSameOrBefore(compareDate) ||\n getError(`must be on or before ${compareDate.format()}`)\n );\n\n case DateOperator.onOrAfter:\n return (\n fieldDate.isSameOrAfter(compareDate) ||\n getError(`must be on or after ${compareDate.format()}`)\n );\n\n case DateOperator.within: {\n return (\n (fieldDate.isSameOrAfter(compareDate) && fieldDate.isSameOrBefore(endDate)) ||\n getError(`must be within ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.notBefore:\n return (\n fieldDate.isSameOrAfter(compareDate) ||\n getError(`must not be before ${compareDate.format()}`)\n );\n\n case DateOperator.notAfter:\n return (\n fieldDate.isSameOrBefore(compareDate) ||\n getError(`must not be after ${compareDate.format()}`)\n );\n\n case DateOperator.notWithin: {\n return (\n fieldDate.isBefore(compareDate) ||\n fieldDate.isAfter(endDate) ||\n getError(`must not be within ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.between: {\n return (\n (fieldDate.isSameOrAfter(compareDate) && fieldDate.isSameOrBefore(endDate)) ||\n getError(`must be between ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.notBetween: {\n return (\n fieldDate.isBefore(compareDate) ||\n fieldDate.isAfter(endDate) ||\n getError(`must not be between ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n default:\n throw unknownOperator((condition as { dateOperator?: unknown }).dateOperator, 'date');\n }\n};\n\nconst parseCompareDates = (\n condition: DateRule,\n scopes: Scopes,\n context: unknown,\n config: ResolvedDateConfig,\n tz: string,\n bindings?: Record<string, RuleValue>,\n): [dayjs.Dayjs] | [dayjs.Dayjs, dayjs.Dayjs] | null => {\n const operator = condition.dateOperator;\n\n const read: ReadSource = (source) => readValueSource(source, scopes, context, bindings);\n const raw = readValueSource(condition, scopes, context, bindings);\n if (raw === null || raw === undefined) return null;\n const move = condition.offset === undefined ? undefined : offsetShift(read(condition.offset));\n if (move === null) return null;\n const shift = (point: dayjs.Dayjs): dayjs.Dayjs | null => {\n if (move === undefined) return point;\n const units = resolveUnits(move[0], read);\n return units && shiftByUnits(point, units, move[1], tz);\n };\n\n if (WINDOW_OPERATORS.includes(operator)) {\n if (!isDateExpr(raw)) throw rangeExprRequired(operator);\n const expr = resolveExpr(raw, read);\n return expr && resolveDateExprRange(expr, config);\n }\n\n const toPoint = (value: unknown, label: string): dayjs.Dayjs | null => {\n if (value === null || value === undefined) return null;\n if (isDateExpr(value)) {\n const expr = resolveExpr(value, read);\n return expr && resolveDateExpr(expr, config);\n }\n const date = parseDateValue(value as DateInputValue, tz);\n if (!date.isValid()) throw new Error(`Invalid ${label}: ${String(value)}`);\n return date;\n };\n\n if (DATE_RANGE_OPERATORS.includes(operator)) {\n const [first, second] = readPair(raw, operator);\n const date1 = toPoint(first, 'start date');\n const date2 = toPoint(second, 'end date');\n if (!date1 || !date2) return null;\n const [start, end] = orderPair([date1, date2]);\n const shiftedStart = shift(start);\n const shiftedEnd = shift(end);\n return shiftedStart && shiftedEnd ? [shiftedStart, shiftedEnd] : null;\n }\n\n if (Array.isArray(raw)) throw new Error(`${operator} operator requires a single date value`);\n // Bare period + before/after ⇒ implied edge (before→start, after→end); the one anchoring\n // rule all three rails share.\n const pointOf = (expr: DateExpr): dayjs.Dayjs | null => {\n const resolved = resolveExpr(expr, read);\n return resolved && resolvePointForOperator(resolved, operator, config);\n };\n const point = isDateExpr(raw) ? pointOf(raw) : toPoint(raw, 'comparison date');\n if (!point) return null;\n const shifted = shift(point);\n return shifted && [shifted];\n};\n\n/**\n * The evaluation's date config with its zone read — the single seam that decides which zone\n * anchors a NAIVE (zoneless) value, frames dayIn/dayNotIn and runs shifts, for ONE evaluation.\n * A zone is a string or a value source read from context or bindings; one that reads nothing\n * is UTC. It is one zone per evaluation, so a row (`$.`) path has no meaning here. Absolute\n * instants never consult it.\n */\nexport const resolveDateConfig = (config: DateConfig, read: ReadSource): ResolvedDateConfig => {\n const zone = config.timeZone;\n if (zone === undefined || typeof zone === 'string')\n return { ...config, timeZone: zone ?? DEFAULT_ZONE };\n if (rowRef(zone))\n throw new Error(`timeZone is one per evaluation; read it from context, not '${zone.path}'`);\n const read_ = read(zone);\n if (read_ !== null && read_ !== undefined && typeof read_ !== 'string')\n throw new Error(`timeZone reads a zone name (got ${String(read_)})`);\n return { ...config, timeZone: read_ ?? DEFAULT_ZONE };\n};\n\n// Whether a date STRING names its own zone (never String(Date), whose render is host-locale-\n// dependent): a `Z` / `z`, or a `±HH`, `±HHMM` or `±HH:MM` offset after the time (with `T` or a\n// space — Postgres renders timestamptz as `2026-10-05 08:00:00+00`), or a GMT / UTC token\n// (RFC 2822, Date#toString). Anything else is zoneless and anchors in the evaluation zone.\nconst ZONED_TIME = /\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?\\s*(?:[zZ]|[+-]\\d{2}(?::?\\d{2})?)$/;\nconst hasExplicitZone = (value: string): boolean =>\n ZONED_TIME.test(value.trim()) || /\\b(?:GMT|UTC)\\b/.test(value);\n\n/**\n * Parse a comparison/field value into an instant, given the already-resolved anchor zone.\n * - Date object / epoch number → absolute instant, used as-is (never anchored).\n * - String with an explicit zone (`Z` or `±HH:MM` after a time) → absolute.\n * - Naive string (date-only or zoneless datetime) → anchored in `tz` via dayjs.tz; a\n * date-only string becomes midnight in that zone.\n */\nexport const parseDateValue = (value: DateInputValue | undefined, tz: string): dayjs.Dayjs => {\n // A string of digits is epoch milliseconds, as a number is.\n if (typeof value === 'string' && /^-?\\d+$/.test(value.trim())) return dayjs(Number(value));\n if (typeof value === 'string' && !hasExplicitZone(value)) {\n // dayjs.tz throws on an unparseable string; return the (invalid) base parse instead\n // so callers' isValid() checks surface the friendly \"not a valid date\" error.\n const base = dayjs(value);\n if (!base.isValid()) return base;\n return dayjs.tz(value, tz);\n }\n // An absolute instant in any of the forms above; the Date parser reads them all.\n return typeof value === 'string' ? dayjs(new Date(value.trim())) : dayjs(value);\n};\n\n// Literal and context date values compile to concrete Dates through the same parse-and-anchor\n// seam check() uses (naive strings → midnight in the zone; instants as-is): a raw 'YYYY-MM-DD'\n// is rejected by Prisma and would carry different zone semantics than check().\nexport const coerceDateLiteral = (value: unknown, zone: string): Date => {\n const parsed = isOrderedValue(value) ? parseDateValue(value, zone) : dayjs(Number.NaN);\n if (!parsed.isValid()) throw new Error(`Invalid date value: ${String(value)}`);\n return parsed.toDate();\n};\n\n/** A weekday list as `EXTRACT(DOW)` numbers (sunday 0); null when it reads nothing. */\nexport const dayNumbers = (days: unknown): number[] | null => {\n if (days === null || days === undefined) return null;\n if (!Array.isArray(days)) throw new Error('a weekday operator requires an array of day names');\n return days.map((day) => {\n const index = (DAY_NAMES as readonly string[]).indexOf(String(day).toLowerCase());\n if (index === -1) throw new Error(`Unknown day name: ${String(day)}`);\n return index;\n });\n};\n","import { distance } from 'fastest-levenshtein';\n\n// Fully JSON-serializable — a rule carries this over the wire, so no functions here.\nexport type FuzzyConfig = {\n maxDistance?: number; // flat edit-distance budget\n maxRatio?: number; // or a fraction of token length (0..1): floor(length * maxRatio)\n};\n\n// Short tokens must match exactly (so 2-3 char terms don't fuzz-match half the corpus);\n// longer tokens tolerate more typos.\nconst maxFuzzyDistance = (length: number): number => {\n if (length <= 3) return 0;\n if (length <= 6) return 1;\n return 2;\n};\n\n// maxDistance (absolute) and maxRatio (fraction of length) are both caps — the tighter one\n// wins, so `{ maxRatio: 0.2, maxDistance: 2 }` is \"≤20% of chars, but never more than 2\".\n// With neither set, fall back to the default length curve.\nconst resolveMaxDistance = (config: FuzzyConfig, length: number): number => {\n const { maxDistance, maxRatio } = config;\n const caps: number[] = [];\n if (typeof maxDistance === 'number') caps.push(maxDistance);\n if (typeof maxRatio === 'number') caps.push(Math.floor(length * maxRatio));\n return caps.length > 0 ? Math.min(...caps) : maxFuzzyDistance(length);\n};\n\nconst tokenize = (value: string): string[] => value.split(/[^a-z0-9\\p{L}]+/u).filter(Boolean);\n\nconst isNumeric = (token: string): boolean => /^\\d+$/.test(token);\n\nconst withinDistance = (a: string, b: string, max: number): boolean => {\n if (a === b) return true;\n if (Math.abs(a.length - b.length) > max) return false;\n return distance(a, b) <= max;\n};\n\n// True when every token in `query` matches `haystack` — as an exact substring of the whole\n// haystack, or within a length-scaled edit distance of some haystack token. Multi-word\n// queries AND their tokens; numbers are identity (never typo-corrected). Inputs lowercased.\nexport const fuzzyContains = (\n haystack: string,\n query: string,\n config: FuzzyConfig = {},\n): boolean => {\n const needle = query.trim().toLowerCase();\n if (!needle) return true;\n\n const hay = haystack.toLowerCase();\n if (hay.includes(needle)) return true;\n\n const queryTokens = tokenize(needle);\n if (queryTokens.length === 0) return false;\n\n const hayTokens = tokenize(hay);\n if (hayTokens.length === 0) return false;\n\n return queryTokens.every((token) => {\n const max = resolveMaxDistance(config, token.length);\n if (max === 0 || isNumeric(token)) return hayTokens.includes(token);\n return hayTokens.some((hayToken) => withinDistance(token, hayToken, max));\n });\n};\n","import { RE2JS } from 're2js';\n\n// A rule's pattern runs on RE2, in time linear in its input, so an untrusted rule can't stall\n// check() — Postgres's own engine doesn't backtrack either. A pattern RE2 can't run (a\n// backreference, a lookaround) is refused on every rail; of a RegExp's flags only `i` reads,\n// which SQL writes as `~*`.\n\nexport type Pattern = { source: string; caseInsensitive: boolean; re: RE2JS };\n\nexport const readPattern = (value: string | RegExp): Pattern => {\n const source = value instanceof RegExp ? value.source : value;\n const flags = value instanceof RegExp ? value.flags : '';\n if (/[^i]/.test(flags))\n throw new Error(`Refused pattern /${source}/${flags}: only the 'i' flag is supported`);\n const caseInsensitive = flags === 'i';\n try {\n return {\n source,\n caseInsensitive,\n re: RE2JS.compile(source, caseInsensitive ? RE2JS.CASE_INSENSITIVE : 0),\n };\n } catch (error) {\n throw new Error(`Refused pattern /${source}/: ${(error as Error).message}`);\n }\n};\n\n// RE2's classes are ASCII; Postgres's follow the database locale.\nconst CLASSES: Record<string, string> = {\n d: '0-9',\n w: '0-9A-Za-z_',\n s: '\\\\t\\\\n\\\\f\\\\r ',\n};\nconst POSIX: Record<string, string> = {\n alnum: '0-9A-Za-z',\n alpha: 'A-Za-z',\n ascii: '\\\\u0000-\\\\u007f',\n blank: '\\\\t ',\n cntrl: '\\\\u0000-\\\\u001f\\\\u007f',\n digit: '0-9',\n graph: '!-~',\n lower: 'a-z',\n print: ' -~',\n punct: '!-/:-@\\\\[-`{-~',\n space: '\\\\t\\\\n\\\\v\\\\f\\\\r ',\n upper: 'A-Z',\n word: '0-9A-Za-z_',\n xdigit: '0-9A-Fa-f',\n};\nconst PG_SPECIAL = /[\\\\^$.|?*+()[\\]{}]/;\nconst MAX_REPEAT = 255;\n\nconst codePoint = (code: number): string =>\n code <= 0xffff\n ? `\\\\u${code.toString(16).padStart(4, '0')}`\n : `\\\\U${code.toString(16).padStart(8, '0')}`;\n\nconst literal = (char: string): string => (PG_SPECIAL.test(char) ? `\\\\${char}` : char);\n\n/**\n * The pattern in Postgres's dialect, matching what RE2 matches: `.` stops at a newline, and\n * classes and word boundaries are ASCII. A construct Postgres can't express — a Unicode class,\n * a flag group, a repeat past 255 — is refused. `source` is one RE2 already compiled.\n */\nexport const postgresSource = (source: string): string => {\n const refuse = (what: string): never => {\n throw new Error(`Refused pattern /${source}/: ${what} has no Postgres form`);\n };\n let out = '';\n let i = 0;\n // RE2 takes a quantifier on an anchor (a no-op); Postgres rejects it.\n const refuseQuantifiedAnchor = (): void => {\n if (/^([*+?]|\\{\\d)/.test(source.slice(i))) refuse('a quantified anchor');\n };\n // One escape at `i` (the backslash), inside a class or not; returns the translation.\n const translateEscape = (inClass: boolean): string => {\n const c = source[i + 1];\n i += 2;\n if (Object.hasOwn(CLASSES, c)) return inClass ? CLASSES[c] : `[${CLASSES[c]}]`;\n const upper = c.toLowerCase();\n if (c !== upper && Object.hasOwn(CLASSES, upper)) {\n if (inClass) refuse(`a negated class \\\\${c} inside brackets`);\n return `[^${CLASSES[upper]}]`;\n }\n if (c === 'p' || c === 'P') return refuse('a Unicode class');\n if (c === 'C') return refuse('\\\\C');\n if (c === 'x') {\n const braced = source[i] === '{';\n const end = braced ? source.indexOf('}', i) : i + 2;\n const hex = source.slice(braced ? i + 1 : i, end);\n i = braced ? end + 1 : end;\n return codePoint(Number.parseInt(hex, 16));\n }\n if (c >= '0' && c <= '7') {\n let oct = c;\n while (oct.length < 3 && source[i] >= '0' && source[i] <= '7') oct += source[i++];\n return codePoint(Number.parseInt(oct, 8));\n }\n // RE2's word boundary is between ASCII word characters; Postgres's \\y reads the locale's.\n if (!inClass && (c === 'b' || c === 'B')) {\n const w = `[${CLASSES.w}]`;\n return c === 'b'\n ? `(?:(?<=${w})(?!${w})|(?<!${w})(?=${w}))`\n : `(?:(?<=${w})(?=${w})|(?<!${w})(?!${w}))`;\n }\n if (!inClass && (c === 'z' || c === 'A')) {\n refuseQuantifiedAnchor();\n return c === 'z' ? '\\\\Z' : '\\\\A';\n }\n if (c === 'Q') {\n const end = source.indexOf('\\\\E', i);\n const quoted = source.slice(i, end === -1 ? undefined : end);\n i = end === -1 ? source.length : end + 2;\n return [...quoted]\n .map(inClass ? (ch) => (/[\\\\\\]^-]/.test(ch) ? `\\\\${ch}` : ch) : literal)\n .join('');\n }\n return `\\\\${c}`;\n };\n while (i < source.length) {\n const c = source[i];\n if (c === '\\\\') {\n out += translateEscape(false);\n } else if (c === '.') {\n out += '[^\\\\n]';\n i++;\n } else if (c === '(' && source[i + 1] === '?') {\n const named = /^\\(\\?P?<[^>]+>/.exec(source.slice(i));\n if (named) {\n out += '(';\n i += named[0].length;\n } else if (source[i + 2] === ':') {\n out += '(?:';\n i += 3;\n } else refuse('a flag group');\n } else if (c === '{') {\n // A count with a leading zero is literal text to RE2.\n const repeat = /^\\{(0|[1-9]\\d*)(?:,(0|[1-9]\\d*)?)?\\}/.exec(source.slice(i));\n if (!repeat) {\n out += '\\\\{';\n i++;\n continue;\n }\n if (Number(repeat[1]) > MAX_REPEAT || Number(repeat[2] ?? 0) > MAX_REPEAT)\n refuse(`a repeat count past ${MAX_REPEAT}`);\n out += repeat[0];\n i += repeat[0].length;\n } else if (c === '[') {\n out += '[';\n i++;\n if (source[i] === '^') {\n out += '^';\n i++;\n }\n // A leading ] is a member, as in RE2.\n if (source[i] === ']') {\n out += '\\\\]';\n i++;\n }\n // A - after a class or a finished range is a literal, as RE2 reads it; after a range's -,\n // the next character ends the range, even a [.\n let literalDash = false;\n let rangeEnd = false;\n let members = 0;\n while (i < source.length && source[i] !== ']') {\n const posix: RegExpExecArray | null = rangeEnd\n ? null\n : /^\\[:(\\^?)([a-z]+):\\]/.exec(source.slice(i));\n const expands: boolean = !!posix || /^\\\\[dswDSW]/.test(source.slice(i));\n const dash: boolean =\n source[i] === '-' && members > 0 && source[i + 1] !== ']' && !rangeEnd;\n if (posix) {\n if (posix[1]) refuse(`a negated class [:^${posix[2]}:]`);\n if (!Object.hasOwn(POSIX, posix[2])) refuse(`the class [:${posix[2]}:]`);\n out += POSIX[posix[2]];\n i += posix[0].length;\n } else if (source[i] === '\\\\') {\n out += translateEscape(true);\n } else if (dash && literalDash) {\n out += '\\\\-';\n i++;\n } else {\n out += source[i] === '[' ? '\\\\[' : source[i];\n i++;\n }\n const closedRange: boolean = rangeEnd;\n rangeEnd = dash && !literalDash;\n literalDash = expands || closedRange;\n members++;\n }\n out += ']';\n i++;\n } else {\n out += c;\n i++;\n if (c === '^' || c === '$') refuseQuantifiedAnchor();\n }\n }\n return out;\n};\n\n/** Why a pattern is refused (on `target`, when given), or null. */\nexport const patternProblem = (value: string | RegExp, target?: string): string | null => {\n try {\n const { source } = readPattern(value);\n if (target === 'toSql') postgresSource(source);\n return null;\n } catch (error) {\n return (error as Error).message;\n }\n};\n","import { isEqual } from 'lodash-es';\nimport { parseDateValue, resolveDateConfig } from './date';\nimport { DEFAULT_ZONE } from './dateExpr';\nimport { resolveCaseInsensitive, resolveFuzzy } from './engineGlobals';\nimport { fuzzyContains } from './fuzzy';\nimport { bigIntToNumber, isOrderedValue, orderPair, readOrderedPair, readSet } from './number';\nimport { addOffset, offsetAmount } from './offset';\nimport { Operator } from './operator';\nimport {\n EQUALITY_OPERATORS,\n type FieldKind,\n NEGATED_OPERATORS,\n NO_VALUE_OPERATORS,\n NUMERIC_KINDS,\n OPERAND_OPERATORS,\n RANGE_OPERATORS,\n} from './operatorCatalog';\nimport { readPattern } from './pattern';\nimport { readField, type Scopes } from './scope';\nimport { allOf, anyOf } from './traverse';\nimport type { Condition, DateConfig, OrderedRuleValue, Rule, RuleValue } from './types';\nimport { readValueSource } from './valueSource';\n\n// A value is \"empty\" iff it is null, undefined, the empty string, or an empty array — as the\n// compilers read a column, a Json value and a list. (lodash isEmpty would also treat Dates and\n// numbers as empty, which breaks soft-delete grants like `deletedAt isEmpty`.)\nconst isEmptyValue = (value: unknown): boolean =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Nothing to compare against — no row matches on any rail, as SQL's NULL comparison and\n * arithmetic never do: an ordered, string, pattern or set comparison or a range that reads\n * nothing (or a range missing an end), or an offset that moved nothing. `equals` / `notEquals`\n * against a plain null stay the is-null sentinel.\n */\nexport const hasNoOperand = (rule: Pick<Rule, 'operator' | 'offset'>, value: unknown): boolean => {\n const missing = value === null || value === undefined;\n if (missing && (rule.offset !== undefined || OPERAND_OPERATORS.includes(rule.operator)))\n return true;\n if (!RANGE_OPERATORS.includes(rule.operator)) return false;\n return (\n missing || (Array.isArray(value) && value.some((end) => end === null || end === undefined))\n );\n};\n\n/** A field rule that only asks whether its field is there: existence or emptiness, or equality\n * with a null literal. */\nexport const isExistenceTest = (\n rule: Pick<Rule, 'operator' | 'value' | 'path' | 'bind'>,\n): boolean =>\n NO_VALUE_OPERATORS.includes(rule.operator) ||\n (EQUALITY_OPERATORS.includes(rule.operator) &&\n rule.value === null &&\n rule.path === undefined &&\n rule.bind === undefined);\n\n/** A list's membership in a set of lists, as the equalities it means: the compilers have no list\n * `in`. A member that isn't a list (or null) never equals one. */\nexport const listMembership = (rule: Rule, members: readonly unknown[]): Condition => {\n const lists = members.filter((member) => Array.isArray(member) || member === null);\n const each = (operator: Operator) =>\n lists.map((value) => ({ ...rule, operator, value }) as Condition);\n return rule.operator === Operator.in\n ? anyOf(each(Operator.equals))\n : allOf(each(Operator.notEquals));\n};\n\n/** Case-insensitivity lowers every string, a list's members included at any depth — never\n * inside an object. Every rail lowers through this. */\nexport const lowerStrings = (v: unknown): unknown =>\n typeof v === 'string' ? v.toLowerCase() : Array.isArray(v) ? v.map(lowerStrings) : v;\n\n// A bigint compares as a number (refused past the safe range).\nconst fromBigInt = (value: unknown): unknown => {\n if (typeof value === 'bigint') return bigIntToNumber(value);\n return Array.isArray(value) && value.some((v) => typeof v === 'bigint')\n ? value.map((v) => (typeof v === 'bigint' ? bigIntToNumber(v) : v))\n : value;\n};\n\n// Mirrors the server-side coerceValueForField contract: null/undefined pass through\n// (the is-null sentinel is valid on every field), arrays coerce element-wise, unknown\n// kinds pass through, and an uncoercible value returns unchanged so the comparison\n// fails with the rule's normal error instead of throwing on one dirty row.\nconst coerceScalar = (value: unknown, kind: FieldKind, zone: string): unknown => {\n if (value === null || value === undefined) return value;\n\n if (NUMERIC_KINDS.includes(kind)) {\n if (typeof value !== 'string' || value.trim() === '') return value;\n // A BigInt digit string past the safe range would round: refuse it, as for a bigint.\n if (kind === 'BigInt' && /^-?\\d+$/.test(value.trim()))\n return bigIntToNumber(BigInt(value.trim()));\n const num = Number(value);\n return Number.isFinite(num) ? num : value;\n }\n\n switch (kind) {\n case 'DateTime': {\n // Everything lands on epoch ms so equals/ordered compare across Date instances, ISO\n // strings and ms-timestamp strings. A zoneless string anchors in the evaluation's zone,\n // through the date rail's own parser.\n if (value instanceof Date) return value.getTime();\n if (typeof value === 'number') return value;\n if (typeof value !== 'string') return value;\n const parsed = parseDateValue(value, zone);\n return parsed.isValid() ? parsed.valueOf() : value;\n }\n case 'Boolean':\n if (value === 'true') return true;\n if (value === 'false') return false;\n return value;\n case 'String':\n return typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint'\n ? String(value)\n : value;\n default:\n return value;\n }\n};\n\n/** A value coerced to a field kind; a zoneless DateTime string anchors in `zone`. */\nexport const applyCoercion = (\n value: unknown,\n kind: FieldKind | undefined,\n zone: string = DEFAULT_ZONE,\n): unknown => {\n if (kind === undefined) return value;\n if (Array.isArray(value)) return value.map((item) => coerceScalar(item, kind, zone));\n return coerceScalar(value, kind, zone);\n};\n\nexport const checkField = (\n condition: Rule,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n config: DateConfig = {},\n // A computed left-hand side (an aggregate) in place of the field's value.\n computed?: { value: unknown },\n): boolean | string => {\n const raw = computed ? computed.value : (readField(condition.field, scopes) ?? null);\n // A Date compares as DateTime even unstamped, as the compilers read a DateTime column.\n const kind = condition.coerceType ?? (raw instanceof Date ? 'DateTime' : undefined);\n // Only a DateTime coercion reads the zone.\n const zone =\n kind === 'DateTime'\n ? resolveDateConfig(config, (source) => readValueSource(source, scopes, context, bindings))\n .timeZone\n : DEFAULT_ZONE;\n // An absent path reads as NULL, as a column does on the compiled rails.\n const fieldValue = applyCoercion(fromBigInt(raw), kind, zone);\n\n // Operators that don't need a value\n const needsValue = !NO_VALUE_OPERATORS.includes(condition.operator);\n const value = needsValue\n ? shift(\n applyCoercion(\n fromBigInt(readValueSource(condition, scopes, context, bindings) ?? null),\n kind,\n zone,\n ),\n condition,\n scopes,\n context,\n bindings,\n )\n : undefined;\n\n if (needsValue && hasNoOperand(condition, value)) {\n if (NEGATED_OPERATORS.includes(condition.operator) && fieldValue == null) return true;\n return condition.error || `${condition.field} has no comparison value`;\n }\n\n const getError = (op: string) =>\n condition.error || `${condition.field} ${op}${needsValue ? ` ${JSON.stringify(value)}` : ''}`;\n\n const ci = resolveCaseInsensitive(condition.caseInsensitive);\n const lower = (v: unknown): unknown => (ci ? lowerStrings(v) : v);\n const lhs = lower(fieldValue);\n const rhs = lower(value);\n\n // Fuzzy applies to containment search: typo-tolerant token match over strings, else the\n // exact containment check. fuzzyContains lowercases internally, so it's case-insensitive. A\n // list contains a member exactly: case-insensitivity matches text, not membership.\n const fuzzy = resolveFuzzy(condition.fuzzy);\n const containsMatch = (): boolean =>\n fuzzy && typeof fieldValue === 'string' && typeof value === 'string'\n ? fuzzyContains(fieldValue, value, fuzzy)\n : Array.isArray(fieldValue)\n ? (lhs as unknown[]).some((item) => isEqual(item, rhs))\n : containsValue(lhs, rhs);\n\n switch (condition.operator) {\n // Values compare as JSON does: by value (a list or an object deeply), never across types.\n case Operator.equals:\n return isEqual(lhs, rhs) || getError(`must equal`);\n case Operator.notEquals:\n return !isEqual(lhs, rhs) || getError(`must not equal`);\n case Operator.lessThan:\n return compareOrderedValues(fieldValue, value, 'lt') || getError(`must be less than`);\n case Operator.lessThanEquals:\n return (\n compareOrderedValues(fieldValue, value, 'lte') || getError(`must be less than or equal to`)\n );\n case Operator.greaterThan:\n return compareOrderedValues(fieldValue, value, 'gt') || getError(`must be greater than`);\n case Operator.greaterThanEquals:\n return (\n compareOrderedValues(fieldValue, value, 'gte') ||\n getError(`must be greater than or equal to`)\n );\n case Operator.in:\n return readSet(rhs).some((item) => isEqual(item, lhs)) || getError(`must be one of`);\n case Operator.notIn:\n return !readSet(rhs).some((item) => isEqual(item, lhs)) || getError(`must not be one of`);\n case Operator.contains:\n return containsMatch() || getError(`must contain`);\n case Operator.notContains:\n return !containsMatch() || getError(`must not contain`);\n case Operator.matches:\n return (\n (hasMatch(fieldValue) && isPattern(value) && readPattern(value).re.test(fieldValue)) ||\n getError(`must match pattern`)\n );\n case Operator.notMatches:\n return (\n !hasMatch(fieldValue) ||\n !isPattern(value) ||\n !readPattern(value).re.test(fieldValue) ||\n getError(`must not match pattern`)\n );\n case Operator.between: {\n const range = orderedRange(value, condition.operator);\n if (!inRangeOrder(fieldValue, range)) return getError(`must be between`);\n const comparableFieldValue = toOrderedPrimitive(fieldValue);\n const [min, max] = range;\n return (\n (comparableFieldValue >= min && comparableFieldValue <= max) || getError(`must be between`)\n );\n }\n case Operator.notBetween: {\n const range = orderedRange(value, condition.operator);\n if (!inRangeOrder(fieldValue, range)) return true;\n const comparableFieldValue = toOrderedPrimitive(fieldValue);\n const [min, max] = range;\n return (\n comparableFieldValue < min || comparableFieldValue > max || getError(`must not be between`)\n );\n }\n case Operator.isEmpty:\n return isEmptyValue(fieldValue) || getError(`must be empty`);\n case Operator.notEmpty:\n return !isEmptyValue(fieldValue) || getError(`must not be empty`);\n case Operator.exists:\n return fieldValue != null || getError(`must exist`);\n case Operator.notExists:\n return fieldValue == null || getError(`must not exist`);\n case Operator.startsWith:\n return (\n (typeof lhs === 'string' && typeof rhs === 'string' && lhs.startsWith(rhs)) ||\n getError(`must start with`)\n );\n case Operator.endsWith:\n return (\n (typeof lhs === 'string' && typeof rhs === 'string' && lhs.endsWith(rhs)) ||\n getError(`must end with`)\n );\n case Operator.notStartsWith:\n return (\n !(typeof lhs === 'string' && typeof rhs === 'string' && lhs.startsWith(rhs)) ||\n getError(`must not start with`)\n );\n case Operator.notEndsWith:\n return (\n !(typeof lhs === 'string' && typeof rhs === 'string' && lhs.endsWith(rhs)) ||\n getError(`must not end with`)\n );\n default:\n throw new Error('Unknown operator');\n }\n};\n\nconst shift = (\n value: unknown,\n condition: Rule,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n): unknown => {\n if (condition.offset === undefined) return value;\n const amount = offsetAmount(readValueSource(condition.offset, scopes, context, bindings));\n return amount === null ? null : addOffset(value, amount);\n};\n\nconst toOrderedPrimitive = (value: OrderedRuleValue): string | number =>\n value instanceof Date ? value.getTime() : value;\n\nconst compareOrderedValues = (\n left: unknown,\n right: unknown,\n operator: 'lt' | 'lte' | 'gt' | 'gte',\n): boolean => {\n if (!sameOrder(left, right) || !isOrderedValue(right)) return false;\n\n const lhs = toOrderedPrimitive(left);\n const rhs = toOrderedPrimitive(right);\n\n switch (operator) {\n case 'lt':\n return lhs < rhs;\n case 'lte':\n return lhs <= rhs;\n case 'gt':\n return lhs > rhs;\n case 'gte':\n return lhs >= rhs;\n }\n};\n\nconst hasMatch = (value: unknown): value is string => typeof value === 'string';\n\nconst isPattern = (value: unknown): value is string | RegExp =>\n typeof value === 'string' || value instanceof RegExp;\n\n/** A range operand's two ends, ordered. */\nconst orderedRange = (value: unknown, operator: string): [string | number, string | number] =>\n orderPair(\n readOrderedPair(value, operator).map((end) => toOrderedPrimitive(end as OrderedRuleValue)),\n ) as [string | number, string | number];\n\nconst containsValue = (container: unknown, search: unknown): boolean =>\n typeof container === 'string' && typeof search === 'string' && container.includes(search);\n\n/** Two values that order against each other: both numbers, both strings, or both dates. */\nconst sameOrder = (a: unknown, b: unknown): a is OrderedRuleValue =>\n isOrderedValue(a) && isOrderedValue(b) && orderKind(a) === orderKind(b);\n\nconst orderKind = (value: OrderedRuleValue | number | string): string =>\n value instanceof Date ? 'date' : typeof value;\n\n/** A field that orders against a range's ends (already reduced to primitives). */\nconst inRangeOrder = (\n value: unknown,\n range: [string | number, string | number],\n): value is OrderedRuleValue =>\n isOrderedValue(value) && typeof toOrderedPrimitive(value) === typeof range[0];\n","import { ArrayOperator, Operator } from './operator';\nimport { LOWER_BOUND_OPERATORS, UPPER_BOUND_OPERATORS } from './operatorCatalog';\nimport { readOwnPath } from './scope';\nimport { allOf, conditionShape } from './traverse';\nimport type { AggregateRule, ArrayRule, Condition, WindowFields } from './types';\n\n/** True when a rule carries any windowing selector (filter/orderBy/take/skip). */\nexport const hasWindow = (rule: WindowFields): boolean =>\n rule.filter !== undefined ||\n !!rule.orderBy?.length ||\n rule.take !== undefined ||\n rule.skip !== undefined;\n\nconst conditionOpAndField = (condition: unknown): { op: string; field: string } | null => {\n if (typeof condition !== 'object' || condition === null) return null;\n const c = condition as Record<string, unknown>;\n const shape = conditionShape(c);\n if ((shape !== 'field' && shape !== 'date') || typeof c.field !== 'string') return null;\n return { op: String(shape === 'date' ? c.dateOperator : c.operator), field: c.field };\n};\n\n/**\n * Extremal-window rewrite for compilation (toPrisma).\n *\n * When `take: 1` selects the extremal element (max via desc / min via asc; NULLs sort last, so\n * it is the extreme non-null value when there is one) and the condition compares that same\n * ordered field with a monotonic operator, the windowed predicate collapses to un-windowed\n * array rules:\n * - any + (desc & lower-bound) | (asc & upper-bound) ⟺ some element satisfies it\n * - all + (desc & upper-bound) | (asc & lower-bound) ⟺ the array is empty, or some element\n * has a value and every element with one satisfies it\n * `atLeast: 1` is treated as `any`. Returns the de-windowed condition, or null when the\n * rule is windowed but not extremal-eligible (caller throws \"unsupported\").\n */\nconst extremalRewrite = (rule: ArrayRule): Condition | null => {\n if (rule.filter !== undefined) return null;\n if (rule.skip !== undefined && rule.skip !== 0) return null;\n if (rule.take !== 1) return null;\n if (rule.orderBy?.length !== 1) return null;\n const { field: orderField, dir } = rule.orderBy[0];\n if (dir !== 'asc' && dir !== 'desc') return null;\n\n let kind: 'all' | 'any' | null = null;\n if (rule.arrayOperator === ArrayOperator.all) kind = 'all';\n else if (rule.arrayOperator === ArrayOperator.any) kind = 'any';\n else if (rule.arrayOperator === ArrayOperator.atLeast && rule.count === 1) kind = 'any';\n if (!kind) return null;\n\n const cof = conditionOpAndField(rule.condition);\n if (!cof || cof.field !== orderField) return null;\n const isUpper = UPPER_BOUND_OPERATORS.includes(cof.op);\n const isLower = LOWER_BOUND_OPERATORS.includes(cof.op);\n if (!isUpper && !isLower) return null;\n\n const max = dir === 'desc';\n const aligned =\n kind === 'all' ? (max && isUpper) || (!max && isLower) : (max && isLower) || (!max && isUpper);\n if (!aligned) return null;\n\n const { orderBy, take, skip, count, ...rest } = rule;\n if (kind === 'any') return { ...rest, arrayOperator: ArrayOperator.any } as ArrayRule;\n const present = { field: orderField, operator: Operator.exists } as Condition;\n return {\n any: [\n { field: rule.field, arrayOperator: ArrayOperator.empty },\n {\n all: [\n { field: rule.field, arrayOperator: ArrayOperator.any, condition: present },\n {\n ...rest,\n arrayOperator: ArrayOperator.all,\n condition: { if: present, then: rule.condition },\n },\n ],\n },\n ],\n } as Condition;\n};\n\n/**\n * Apply the window pipeline to an array: filter → order → skip → take.\n * `filterFn` evaluates `rule.filter` per item and must be supplied by the caller\n * when `rule.filter` is set (window.ts stays free of the evaluator).\n * Direction comes from orderBy `dir`; take/skip are positive offsets.\n */\nexport const applyWindow = <T>(\n items: T[],\n rule: WindowFields,\n filterFn?: (item: T) => boolean,\n): T[] => {\n let out = items;\n if (rule.filter !== undefined && filterFn) out = out.filter(filterFn);\n if (rule.orderBy?.length) {\n const keys = rule.orderBy;\n out = [...out].sort((a, b) => {\n for (const { field, dir } of keys) {\n const order = compareNullsLast(readOwnPath(a, field), readOwnPath(b, field), dir);\n if (order !== 0) return order;\n }\n return 0;\n });\n }\n if (rule.skip !== undefined) out = out.slice(rule.skip);\n if (rule.take !== undefined) out = out.slice(0, rule.take);\n return out;\n};\n\n/** Two sort keys in `dir` order, a NULL (or absent) one last either way — the extreme element\n * is the extreme value, as \"latest\" or \"earliest\" reads. */\nconst compareNullsLast = (a: unknown, b: unknown, dir: 'asc' | 'desc'): number => {\n const aNull = a === null || a === undefined;\n const bNull = b === null || b === undefined;\n if (aNull || bNull) return aNull === bNull ? 0 : aNull ? 1 : -1;\n const x = a instanceof Date ? a.getTime() : (a as number | string);\n const y = b instanceof Date ? b.getTime() : (b as number | string);\n const order = x < y ? -1 : x > y ? 1 : 0;\n return dir === 'asc' ? order : -order;\n};\n\n/**\n * A windowed array or aggregate rule as one Prisma can compile, or null when it can't. A filter\n * alone selects the elements a rule reads, so it folds into the rule: into the condition of any /\n * none / a count / an aggregate, as the antecedent of `all`, and as the condition of `none` / `any`\n * for `empty` / `notEmpty`. An unfiltered extremal window rewrites as `extremalRewrite` does.\n */\nexport const windowRewrite = (rule: ArrayRule | AggregateRule): Condition | null => {\n if (!hasWindow(rule)) return rule as Condition;\n const ordered = !!rule.orderBy?.length || rule.take !== undefined || rule.skip !== undefined;\n if (rule.filter !== undefined && !ordered) {\n const { filter, ...rest } = rule;\n if ('aggregate' in rule)\n return {\n ...rest,\n condition: rule.condition === undefined ? filter : allOf([filter, rule.condition]),\n } as Condition;\n switch (rule.arrayOperator) {\n case 'all':\n return { ...rest, condition: { if: filter, then: rule.condition ?? true } } as Condition;\n case 'empty':\n return { ...rest, arrayOperator: 'none', condition: filter } as Condition;\n case 'notEmpty':\n return { ...rest, arrayOperator: 'any', condition: filter } as Condition;\n default:\n return {\n ...rest,\n condition: rule.condition === undefined ? filter : allOf([filter, rule.condition]),\n } as Condition;\n }\n }\n return 'aggregate' in rule || rule.filter !== undefined ? null : extremalRewrite(rule);\n};\n","import { isObject, some } from 'lodash-es';\nimport { checkDate } from './date';\nimport {\n ambiguousCondition,\n conditionRequired,\n countRequired,\n unknownAggregateMode,\n unknownOperator,\n} from './errors';\nimport { checkField } from './field';\nimport { ArrayOperator } from './operator';\nimport {\n AGGREGATE_MODES,\n ARRAY_CONDITION_OPERATORS,\n ARRAY_COUNT_OPERATORS,\n} from './operatorCatalog';\nimport { readField, readOwnPath, type Scopes } from './scope';\nimport { conditionShape, visitCondition } from './traverse';\nimport type {\n AggregateRule,\n All,\n Any,\n ArrayRule,\n CheckData,\n Condition,\n DateConfig,\n Row,\n Rule,\n RuleValue,\n} from './types';\nimport { applyWindow } from './window';\n\nexport type CheckOptions = {\n context?: CheckData;\n bindings?: Record<string, RuleValue>;\n} & DateConfig;\n\ntype EvalOptions = CheckOptions & { context: CheckData; scopes: Scopes };\n\n// Over a root array, every leaf is a fieldless array rule, composed with all / any only.\nconst validateRootArrayShape = (rule: Condition): void =>\n visitCondition(rule, (node) => {\n const shape = conditionShape(node as Record<string, unknown>);\n if (shape === 'all' || shape === 'any') return;\n if (shape === 'array' && !('field' in node)) return false;\n throw new Error(\n 'check: when data is an array, every leaf must be a fieldless arrayOperator (composable with all/any)',\n );\n });\n\nexport const check = <TData extends CheckData>(\n conditions: Condition,\n data: TData,\n options?: CheckOptions,\n): boolean | string => {\n if (Array.isArray(data)) validateRootArrayShape(conditions);\n return evaluate(conditions, data, {\n ...options,\n context: options?.context ?? data,\n scopes: [data],\n });\n};\n\nconst evaluate = <TData extends CheckData>(\n conditions: Condition,\n data: TData,\n opts: EvalOptions,\n): boolean | string => {\n if (typeof conditions === 'boolean') return conditions;\n\n const node = conditions as never;\n switch (conditionShape(conditions as Record<string, unknown>)) {\n case 'all':\n return all((node as All).all, data, opts, (node as All).error);\n case 'any':\n return any((node as Any).any, data, opts, (node as Any).error);\n case 'if':\n return checkIfThenElse(node, data, opts);\n case 'array':\n return checkArray(node, opts);\n case 'aggregate':\n return checkAggregate(node, opts);\n case 'date':\n return checkDate(node, opts.scopes, opts.context as Row, opts, opts.bindings);\n case 'field':\n return checkField(node, opts.scopes, opts.context as Row, opts.bindings, opts);\n default:\n throw ambiguousCondition();\n }\n};\n\nconst enter = (opts: EvalOptions, item: unknown): EvalOptions => ({\n ...opts,\n scopes: [...opts.scopes, item],\n});\n\nconst all = <TData extends CheckData>(\n conditions: Condition[],\n data: TData,\n opts: EvalOptions,\n error?: string,\n): boolean | string => {\n const errors: string[] = [];\n\n for (const condition of conditions) {\n const result = evaluate(condition, data, opts);\n if (result !== true) {\n if (typeof result === 'string') {\n errors.push(result);\n } else {\n errors.push('false');\n }\n }\n }\n\n if (!errors.length) return true;\n if (error) return error;\n if (errors.length === 1) return errors[0];\n return `All conditions must pass: ${errors.join(' AND ')}`;\n};\n\nconst any = <TData extends CheckData>(\n conditions: Condition[],\n data: TData,\n opts: EvalOptions,\n error?: string,\n): boolean | string => {\n const errors: string[] = [];\n\n for (const condition of conditions) {\n const result = evaluate(condition, data, opts);\n if (result === true) return true;\n if (typeof result === 'string') errors.push(result);\n }\n\n if (error) return error;\n if (errors.length === 1) return errors[0];\n return `At least one condition must pass: ${errors.join(' OR ')}`;\n};\n\nconst checkIfThenElse = <TData extends CheckData>(\n condition: { if: Condition; then: Condition; else?: Condition },\n data: TData,\n opts: EvalOptions,\n): boolean | string => {\n const ifResult = evaluate(condition.if, data, opts);\n if (ifResult === true) return evaluate(condition.then, data, opts);\n // `false` is a legal else value (deny branch); use !== undefined so it's\n // evaluated rather than skipped by truthiness.\n return condition.else !== undefined ? evaluate(condition.else, data, opts) : true;\n};\n\n/** The array a rule reads; an absent or NULL one is empty, as on the compiled rails. */\nconst readArray = (value: unknown, field: string): unknown[] => {\n if (value === null || value === undefined) return [];\n if (!Array.isArray(value)) throw new Error(`${field} must be an array`);\n return value;\n};\n\nconst checkAggregate = (condition: AggregateRule, opts: EvalOptions): boolean | string => {\n const rawArray = readArray(readField(condition.field, opts.scopes), condition.field);\n const windowFilter = condition.filter;\n const arrayValue = applyWindow(\n rawArray,\n condition,\n windowFilter\n ? (item) => evaluate(windowFilter, item as Row, enter(opts, item)) === true\n : undefined,\n );\n\n const { mode, field: itemField } = condition.aggregate;\n // An unknown mode is a malformed rule, not a failed match: a negation must not turn it true.\n if (!AGGREGATE_MODES.includes(mode)) throw unknownAggregateMode(mode);\n\n const nestedCondition = condition.condition;\n const filtered = nestedCondition\n ? arrayValue.filter(\n (item) => evaluate(nestedCondition, item as Row, enter(opts, item)) === true,\n )\n : arrayValue;\n\n // NULL items are skipped, as SQL's SUM and AVG skip them.\n const numbers: number[] = filtered.flatMap((item, index) => {\n const raw = itemField ? readOwnPath(item, itemField) : item;\n if (raw === null || raw === undefined) return [];\n if (typeof raw !== 'number' || !Number.isFinite(raw)) {\n const loc = `${condition.field}[${index}]${itemField ? `.${itemField}` : ''}`;\n throw new Error(`${loc} must be a finite number`);\n }\n return [raw];\n });\n\n // An aggregate compares like a field whose value it computes; the sum and the average of\n // nothing are 0 (the compilers coalesce to match).\n const sum = numbers.reduce((total, n) => total + n, 0);\n const result = mode === 'sum' || numbers.length === 0 ? sum : sum / numbers.length;\n const labelled = { ...condition, field: `${condition.field} ${mode}` } as unknown as Rule;\n return checkField(labelled, opts.scopes, opts.context, opts.bindings, opts, { value: result });\n};\n\nconst checkArray = (condition: ArrayRule, opts: EvalOptions): boolean | string => {\n const rawArray = readArray(\n condition.field ? readField(condition.field, opts.scopes) : opts.scopes[opts.scopes.length - 1],\n condition.field || '(root)',\n );\n const windowFilter = condition.filter;\n const arrayValue = applyWindow(\n rawArray,\n condition,\n windowFilter\n ? (item) => evaluate(windowFilter, item as Row, enter(opts, item)) === true\n : undefined,\n );\n\n const getError = (defaultMsg: string) => condition.error || `${condition.field} ${defaultMsg}`;\n\n const itemCondition = condition.condition;\n const elementwise = ARRAY_CONDITION_OPERATORS.includes(condition.arrayOperator);\n if (elementwise && itemCondition === undefined) throw conditionRequired(condition.arrayOperator);\n\n const count = condition.count ?? 0;\n if (ARRAY_COUNT_OPERATORS.includes(condition.arrayOperator) && condition.count === undefined)\n throw countRequired(condition.arrayOperator);\n\n let matches = 0;\n let failures = 0;\n\n if (elementwise && itemCondition !== undefined) {\n if (arrayValue.length > 0 && !some(arrayValue, isObject))\n return getError(\n `contains only primitive values; use 'in' or 'contains' instead of array operators on primitive arrays`,\n );\n\n const results = arrayValue.map((item) =>\n evaluate(itemCondition, item as Row, enter(opts, item)),\n );\n matches = results.filter((r) => r === true).length;\n failures = results.filter((r) => typeof r === 'string').length;\n }\n\n switch (condition.arrayOperator) {\n case ArrayOperator.empty:\n return !arrayValue.length || getError('must be empty');\n\n case ArrayOperator.notEmpty:\n return !!arrayValue.length || getError('must not be empty');\n\n case ArrayOperator.all:\n return (\n matches === arrayValue.length || getError(`all elements must match (${failures} failed)`)\n );\n\n case ArrayOperator.any:\n return !!matches || getError('at least one element must match');\n\n case ArrayOperator.none:\n return !matches || getError(`no elements should match (${matches} matched)`);\n\n case ArrayOperator.atLeast:\n return (\n matches >= count || getError(`at least ${count} elements must match (${matches} matched)`)\n );\n\n case ArrayOperator.atMost:\n return (\n matches <= count || getError(`at most ${count} elements must match (${matches} matched)`)\n );\n\n case ArrayOperator.exactly:\n return (\n matches === count || getError(`exactly ${count} elements must match (${matches} matched)`)\n );\n\n default:\n throw unknownOperator((condition as ArrayRule).arrayOperator, 'array');\n }\n};\n","import type { FieldMap, FieldMapEntry, ModelEntry } from './fieldMap/types';\n\n/** Own-property read: a name that only exists on Object.prototype reads as absent. */\nexport const own = <T>(record: Record<string, T> | undefined, key: string): T | undefined =>\n record !== undefined && Object.hasOwn(record, key) ? record[key] : undefined;\n\n/** An own entry of `record`, created by `make` when absent — never one Object.prototype names. */\nexport const ownEntry = <T>(record: Record<string, T>, key: string, make: () => T): T => {\n if (!Object.hasOwn(record, key)) record[key] = make();\n return record[key];\n};\n\n/** A model of a field map, own-property only. */\nexport const modelOf = (map: FieldMap | undefined, model: string): ModelEntry | undefined =>\n own(map?.models, model);\n\n/** A field of a model, own-property only. */\nexport const fieldOf = (\n map: FieldMap | undefined,\n model: string,\n field: string,\n): FieldMapEntry | undefined => own(modelOf(map, model)?.fields, field);\n","import type { BridgeEndpoint } from './types.ts';\n\n/** The name a bridge endpoint goes by — `map:Model`: the stitched bridge field's name and the\n * raw-data key. */\nexport const endpointKey = ({\n fieldMap,\n model,\n}: Pick<BridgeEndpoint, 'fieldMap' | 'model'>): string => `${fieldMap}:${model}`;\n\n/** The map and model an endpoint key names; a bare model is in `currentMap`. */\nexport const parseEndpointKey = (\n key: string,\n currentMap: string,\n): { mapName: string; modelName: string } => {\n const at = key.indexOf(':');\n return at === -1\n ? { mapName: currentMap, modelName: key }\n : { mapName: key.slice(0, at), modelName: key.slice(at + 1) };\n};\n","import { own, ownEntry } from '../own';\nimport type { Row } from '../types';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nexport type BridgeDictionary = Record<\n string, // map name\n Record<\n string, // model name\n Record<string, Record<string, Row | Row[]>> // on field → identifier → row(s)\n >\n>;\n\nconst keyByUnique = (\n rows: Row[],\n on: string,\n endpointLabel: string,\n side: 'one' | 'oneToOne',\n): Record<string, Row> => {\n const out: Record<string, Row> = {};\n for (const row of rows) {\n const k = own(row, on) as string | number | undefined;\n if (k === undefined || k === null) continue;\n const key = String(k);\n if (Object.hasOwn(out, key)) {\n const hint =\n side === 'one'\n ? `endpoint[0] must be the \"one\" side of a oneToMany bridge — swap endpoints if '${endpointLabel}' is the \"many\" side`\n : `oneToOne bridges require unique '${on}' on both endpoints`;\n throw new Error(\n `indexBridges: duplicate '${on}' value '${key}' on '${endpointLabel}' — ${hint}.`,\n );\n }\n out[key] = row;\n }\n return out;\n};\n\n/** Rows grouped by their own `on` value; a row whose value is null joins nothing. */\nconst groupByKey = (rows: Row[], on: string): Record<string, Row[]> => {\n const out: Record<string, Row[]> = {};\n for (const row of rows) {\n const k = own(row, on);\n if (k === null || k === undefined) continue;\n ownEntry(out, String(k), () => []).push(row);\n }\n return out;\n};\n\nexport const indexBridges = (\n set: FieldMapSet,\n rawData: Record<string, Row[]>,\n): BridgeDictionary => {\n const out: BridgeDictionary = {};\n for (const bridge of set.bridges ?? []) {\n const [a, b] = bridge.endpoints;\n const aKey = endpointKey(a);\n const bKey = endpointKey(b);\n const aSide = bridge.cardinality === 'oneToMany' ? 'one' : 'oneToOne';\n const endpoint = (\n fieldMap: string,\n model: string,\n ): Record<string, Record<string, Row | Row[]>> =>\n ownEntry(\n ownEntry(out, fieldMap, () => ({})),\n model,\n () => ({}),\n );\n const aRows = own(rawData, aKey);\n if (aRows) endpoint(a.fieldMap, a.model)[a.on] = keyByUnique(aRows, a.on, aKey, aSide);\n const bRows = own(rawData, bKey);\n if (bRows) {\n if (bridge.cardinality === 'oneToMany') {\n endpoint(b.fieldMap, b.model)[b.on] = groupByKey(bRows, b.on);\n } else {\n endpoint(b.fieldMap, b.model)[b.on] = keyByUnique(bRows, b.on, bKey, 'oneToOne');\n }\n }\n }\n return out;\n};\n","import { modelOf, own } from '../own';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nexport const stitchFieldMaps = (set: FieldMapSet): FieldMapSet => {\n const out: FieldMapSet = {\n maps: structuredClone(set.maps),\n bridges: set.bridges ? structuredClone(set.bridges) : undefined,\n };\n\n for (const bridge of set.bridges ?? []) {\n const [a, b] = bridge.endpoints;\n const aKey = endpointKey(a);\n const bKey = endpointKey(b);\n const aOwner = modelOf(own(out.maps, a.fieldMap), a.model);\n const bOwner = modelOf(own(out.maps, b.fieldMap), b.model);\n if (!aOwner) {\n throw new Error(`stitchFieldMaps: endpoint '${aKey}' not found`);\n }\n if (!bOwner) {\n throw new Error(`stitchFieldMaps: endpoint '${bKey}' not found`);\n }\n if (a.fieldMap === b.fieldMap && a.model === b.model) {\n throw new Error(`stitchFieldMaps: self-bridge '${aKey}' to itself is not supported`);\n }\n if (!own(aOwner.fields, a.on)) {\n throw new Error(`stitchFieldMaps: endpoint '${aKey}' has no field '${a.on}' for join`);\n }\n if (!own(bOwner.fields, b.on)) {\n throw new Error(`stitchFieldMaps: endpoint '${bKey}' has no field '${b.on}' for join`);\n }\n\n if (own(aOwner.fields, bKey)) {\n throw new Error(`stitchFieldMaps: bridge '${bKey}' already injected on '${aKey}'`);\n }\n if (own(bOwner.fields, aKey)) {\n throw new Error(`stitchFieldMaps: bridge '${aKey}' already injected on '${bKey}'`);\n }\n\n const isOneToMany = bridge.cardinality === 'oneToMany';\n aOwner.fields[bKey] = { kind: 'bridge', type: bKey, isList: isOneToMany };\n bOwner.fields[aKey] = { kind: 'bridge', type: aKey, isList: false };\n }\n\n return out;\n};\n","import { isPlainObject as isPlainObjectLodash } from 'lodash-es';\nimport { unitAmountProblem } from './amount';\nimport { parseDateValue } from './date';\nimport {\n DEFAULT_ZONE,\n isDateExpr,\n isEdgeExpr,\n isPeriodExpr,\n namedPeriod,\n rollingShift,\n} from './dateExpr';\nimport {\n ambiguousCondition,\n conditionRequired,\n countRequired,\n rangeExprRequired,\n unknownAggregateMode,\n unknownOperator,\n windowUnsupported,\n} from './errors';\nimport { isOrderedValue, readOrderedPair } from './number';\nimport type { ArrayOperator, DateOperator, Operator } from './operator';\nimport {\n AGGREGATE_MODES,\n AGGREGATE_OPERATORS,\n catalogEntry,\n DAY_NAMES,\n FieldKind,\n getValueShape,\n isDayName,\n isFieldKind,\n isOperatorSupportedForTarget,\n isRelativeUnit,\n OFFSET_OPERATORS,\n PERIOD_UNITS,\n RANGE_OPERATORS,\n type RuleTarget,\n type ValueShape,\n WINDOW_OPERATORS,\n} from './operatorCatalog';\nimport { patternProblem } from './pattern';\nimport { parseScopeRef, scopeOutOfBounds } from './scope';\nimport { conditionShape } from './traverse';\nimport type { AggregateMode, ArrayRule, Condition, DateExpr, WindowFields } from './types';\nimport { rowRef, SOURCE_FORMS } from './valueSource';\nimport { hasWindow, windowRewrite } from './window';\n\nexport type ValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\nexport type ValidationResult = {\n ok: boolean;\n errors: ValidationIssue[];\n};\n\n/** Every validator's result: ok when it found nothing. */\nexport const validationResult = (errors: ValidationIssue[]): ValidationResult => ({\n ok: errors.length === 0,\n errors,\n});\n\n/** Every validator's assert form: throws the issues, one per line, under `label`. */\nexport const throwIfInvalid = (result: ValidationResult, label: string): void => {\n if (result.ok) return;\n throw new Error(`${label}:\\n${result.errors.map((e) => `${e.path}: ${e.message}`).join('\\n')}`);\n};\n\ntype ValidationContext = {\n target: RuleTarget;\n errors: ValidationIssue[];\n};\n\n/** Which engine a rule must compile for; `check` (the default) accepts every rule. */\nexport type ValidateRuleOptions = { target?: RuleTarget };\n\nexport const validateRule = (\n condition: unknown,\n options: ValidateRuleOptions = {},\n): ValidationResult => {\n const context: ValidationContext = {\n target: options.target ?? 'check',\n errors: [],\n };\n\n validateCondition(condition, '$', context, 1);\n return validationResult(context.errors);\n};\n\nexport const assertValidRule = (\n condition: unknown,\n options: ValidateRuleOptions = {},\n): asserts condition is Condition => {\n throwIfInvalid(validateRule(condition, options), 'validateRule');\n};\n\nconst validateCondition = (\n condition: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof condition === 'boolean') return;\n\n if (!isPlainObject(condition)) {\n pushIssue(context, path, 'invalid_condition', 'Condition must be a boolean or object');\n return;\n }\n\n const shape = conditionShape(condition);\n if (!shape) {\n pushIssue(context, path, 'ambiguous_condition', ambiguousCondition().message);\n return;\n }\n\n switch (shape) {\n case 'all':\n validateLogicalArray(condition.all, `${path}.all`, context, depth);\n break;\n case 'any':\n validateLogicalArray(condition.any, `${path}.any`, context, depth);\n break;\n case 'if':\n validateCondition(condition.if, `${path}.if`, context, depth);\n validateCondition(condition.then, `${path}.then`, context, depth);\n if ('else' in condition && condition.else !== undefined) {\n validateCondition(condition.else, `${path}.else`, context, depth);\n }\n break;\n case 'field':\n validateFieldRule(condition, path, context, depth);\n break;\n case 'aggregate':\n validateAggregateRule(condition, path, context, depth);\n break;\n case 'array':\n validateArrayRule(condition, path, context, depth);\n break;\n case 'date':\n validateDateRule(condition, path, context, depth);\n break;\n }\n};\n\nconst validateLogicalArray = (\n value: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (!Array.isArray(value)) {\n pushIssue(\n context,\n path,\n 'logical_array_required',\n 'Logical operator requires an array of conditions',\n );\n return;\n }\n\n value.forEach((item, index) => {\n validateCondition(item, `${path}[${index}]`, context, depth);\n });\n};\n\nconst validateField = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field === 'string')\n validateRef(rule.field, 'field', `${path}.field`, context, depth);\n};\n\nconst validateRef = (\n ref: string,\n key: 'field' | 'path',\n issuePath: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const parsed = parseScopeRef(ref);\n if (!parsed) return;\n const label = key === 'field' ? 'Field' : 'Path';\n if (parsed.depth > depth) {\n pushIssue(\n context,\n issuePath,\n 'scope_out_of_bounds',\n scopeOutOfBounds(ref, parsed.depth, depth),\n );\n }\n if (context.target === 'toPrisma') {\n pushIssue(\n context,\n issuePath,\n `unsupported_prisma_${key}`,\n `${label} '${ref}' is not supported by toPrisma()`,\n );\n } else if (context.target === 'toSql' && (key === 'field' || parsed.depth > 1)) {\n pushIssue(\n context,\n issuePath,\n `unsupported_sql_${key}`,\n `${label} '${ref}' is not supported by toSql()`,\n );\n }\n};\n\ntype SourceForm = (typeof SOURCE_FORMS)[number];\n\n// One value source — `{ value } | { path } | { bind }` — wherever it appears: a rule's comparison\n// value, an offset, a unit amount. Exactly one form; `bindOptional` only beside `bind`; a path is\n// gated like any ref. Returns the form, or null when it is malformed.\nconst validateSource = (\n source: Record<string, unknown>,\n at: string,\n context: ValidationContext,\n depth: number,\n): SourceForm | null => {\n const forms = SOURCE_FORMS.filter((form) => source[form] !== undefined);\n if (forms.length > 1) {\n pushIssue(context, at, 'ambiguous_value_source', 'Takes one of value, path or bind');\n return null;\n }\n if (forms.length === 0) {\n pushIssue(context, at, 'missing_value_source', 'Requires value, path or bind');\n return null;\n }\n const [form] = forms;\n if (form !== 'value' && (typeof source[form] !== 'string' || source[form] === '')) {\n pushIssue(context, `${at}.${form}`, 'invalid_value_source', `${form} is a non-empty string`);\n return null;\n }\n if (\n source.bindOptional !== undefined &&\n (form !== 'bind' || typeof source.bindOptional !== 'boolean')\n )\n pushIssue(\n context,\n `${at}.bindOptional`,\n 'invalid_value_source',\n 'bindOptional is a boolean beside bind',\n );\n if (form === 'path') validateRef(source.path as string, 'path', `${at}.path`, context, depth);\n return form;\n};\n\n// An offset moves the comparison value by what its own value source reads: a number on a field\n// rule, a rolling `{ ago }` / `{ ahead }` on a date rule. A date offset read per row is check-only.\nconst validateOffset = (\n rule: Record<string, unknown>,\n kind: 'field' | 'date',\n operator: string,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const { offset } = rule;\n if (offset === undefined) return;\n const at = `${path}.offset`;\n if (!OFFSET_OPERATORS.includes(operator)) {\n pushIssue(\n context,\n at,\n 'unsupported_offset_operator',\n `Operator '${operator}' has no comparison point to offset`,\n );\n return;\n }\n if (!isPlainObject(offset)) {\n pushIssue(context, at, 'invalid_offset', 'An offset is one of { value }, { path } or { bind }');\n return;\n }\n const form = validateSource(offset, at, context, depth);\n if (form === 'path') {\n const ref = offset.path as string;\n const scoped = rowRef(offset);\n if (kind === 'date' && scoped && scoped.depth <= 1 && context.target === 'toSql')\n pushIssue(\n context,\n `${at}.path`,\n 'unsupported_sql_path',\n `A row path on a date offset ('${ref}') is not supported by toSql()`,\n );\n return;\n }\n if (form !== 'value') return;\n const value = offset.value;\n if (kind === 'field') {\n if (typeof value !== 'number' || !Number.isFinite(value))\n pushIssue(context, `${at}.value`, 'invalid_offset', 'A field offset value is a number');\n return;\n }\n const rolling =\n isPlainObject(value) && Object.keys(value).length === 1 && isDateExpr(value)\n ? rollingShift(value)\n : null;\n if (!rolling) {\n pushIssue(\n context,\n `${at}.value`,\n 'invalid_offset',\n 'A date offset value is { ago } or { ahead }',\n );\n return;\n }\n validateRelativeUnits(\n rolling[0],\n `${at}.value.${Object.keys(value as object)[0]}`,\n context,\n depth,\n );\n};\n\n// A range read from a row column is a scalar, not a pair: toSql has no form for it.\nconst rejectSqlRowRange = (\n rule: Record<string, unknown>,\n operator: string,\n path: string,\n context: ValidationContext,\n): void => {\n if (context.target !== 'toSql' || !RANGE_OPERATORS.includes(operator)) return;\n if (!rowRef(rule)) return;\n pushIssue(\n context,\n `${path}.path`,\n 'unsupported_sql_path',\n `A range read from the row ('${rule.path}') is not supported by toSql()`,\n );\n};\n\nconst validateFieldRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Field rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (typeof rule.operator !== 'string' || !catalogEntry(rule.operator, 'field')) {\n pushIssue(\n context,\n `${path}.operator`,\n 'invalid_operator',\n unknownOperator(rule.operator, 'field').message,\n );\n return;\n }\n\n const operator = rule.operator as Operator;\n validateOffset(rule, 'field', operator, path, context, depth);\n\n if (!isOperatorSupportedForTarget(operator, 'field', context.target)) {\n pushIssue(\n context,\n `${path}.operator`,\n `unsupported_${targetSlug(context.target)}_operator`,\n `Operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n if (rule.coerceType !== undefined && !isFieldKind(rule.coerceType)) {\n pushIssue(\n context,\n `${path}.coerceType`,\n 'invalid_coerce_type',\n `coerceType must be one of: ${Object.keys(FieldKind).join(', ')}`,\n );\n }\n\n const shape = getValueShape(operator, 'field');\n\n if (shape === 'none') {\n forbidValueAndPath(rule, path, context);\n return;\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n rejectSqlRowRange(rule, operator, path, context);\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n validateValueShape(shape, rule.value, operator, `${path}.value`, context);\n};\n\nconst validateValueShape = (\n shape: ValueShape,\n value: unknown,\n operator: string,\n path: string,\n context: ValidationContext,\n): void => {\n switch (shape) {\n case 'scalar':\n case 'string':\n if (shape === 'string' && typeof value !== 'string') {\n pushIssue(\n context,\n path,\n 'invalid_string_value',\n `Operator '${operator}' requires a string value`,\n );\n }\n return;\n case 'ordered':\n if (!isOrderedValue(value)) {\n pushIssue(\n context,\n path,\n 'invalid_ordered_value',\n `Operator '${operator}' requires a string, number, or Date value`,\n );\n }\n return;\n case 'array':\n if (!Array.isArray(value)) {\n pushIssue(\n context,\n path,\n 'invalid_membership_value',\n `Operator '${operator}' requires an array value`,\n );\n }\n return;\n case 'pattern': {\n if (!(typeof value === 'string' || value instanceof RegExp)) {\n pushIssue(\n context,\n path,\n 'invalid_pattern_value',\n `Operator '${operator}' requires a string or RegExp value`,\n );\n return;\n }\n const problem = patternProblem(value, context.target);\n if (problem) pushIssue(context, path, 'unsupported_pattern', problem);\n return;\n }\n case 'range':\n try {\n readOrderedPair(value, operator);\n } catch (error) {\n pushIssue(context, path, 'invalid_range_value', (error as Error).message);\n }\n return;\n }\n};\n\nconst validateAggregateRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (rule.offset !== undefined)\n pushIssue(context, `${path}.offset`, 'unexpected_offset', 'Aggregate rules take no offset');\n validateWindow(rule, path, context, depth);\n\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Aggregate rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (!isPlainObject(rule.aggregate)) {\n pushIssue(context, `${path}.aggregate`, 'invalid_aggregate', 'aggregate must be an object');\n return;\n }\n\n const agg = rule.aggregate as Record<string, unknown>;\n if (!AGGREGATE_MODES.includes(agg.mode as AggregateMode))\n pushIssue(\n context,\n `${path}.aggregate.mode`,\n 'invalid_aggregate_mode',\n unknownAggregateMode(agg.mode).message,\n );\n\n if ('field' in agg && agg.field !== undefined && typeof agg.field !== 'string') {\n pushIssue(\n context,\n `${path}.aggregate.field`,\n 'invalid_aggregate_field',\n 'aggregate.field must be a string',\n );\n }\n\n if (!AGGREGATE_OPERATORS.includes(rule.operator as Operator)) {\n pushIssue(\n context,\n `${path}.operator`,\n 'invalid_aggregate_operator',\n `Aggregate rules only support: ${AGGREGATE_OPERATORS.join(', ')}`,\n );\n return;\n }\n\n if (context.target === 'toPrisma' && typeof rule.path === 'string') {\n pushIssue(\n context,\n `${path}.path`,\n 'unsupported_prisma_aggregate_path',\n `path is not supported by toPrisma() for aggregate rules; use value instead`,\n );\n }\n\n if ('condition' in rule && rule.condition !== undefined) {\n if (context.target === 'toSql') {\n pushIssue(\n context,\n `${path}.condition`,\n 'unsupported_sql_aggregate_condition',\n `Aggregate condition filtering is not supported by toSql(); use check() or toPrisma()`,\n );\n }\n validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n const value = rule.value;\n if (RANGE_OPERATORS.includes(rule.operator as string)) {\n if (!isNumericRange(value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_range_value',\n `Operator '${rule.operator}' requires a two-item numeric range`,\n );\n }\n } else {\n if (typeof value !== 'number') {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_aggregate_value',\n `Aggregate rule value must be a number`,\n );\n }\n }\n};\n\nconst validateArrayRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n if (context.target !== 'check') {\n pushIssue(\n context,\n `${path}.field`,\n 'field_required',\n 'Array rule requires a string field for this target',\n );\n }\n }\n validateField(rule, path, context, depth);\n\n validateWindow(rule, path, context, depth);\n\n if (typeof rule.arrayOperator !== 'string' || !catalogEntry(rule.arrayOperator, 'array')) {\n pushIssue(\n context,\n `${path}.arrayOperator`,\n 'invalid_array_operator',\n unknownOperator(rule.arrayOperator, 'array').message,\n );\n return;\n }\n\n const operator = rule.arrayOperator as ArrayOperator;\n\n if (!isOperatorSupportedForTarget(operator, 'array', context.target)) {\n pushIssue(\n context,\n `${path}.arrayOperator`,\n `unsupported_${targetSlug(context.target)}_array_operator`,\n `Array operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n // What the operator reads, as the catalog says: nothing, a predicate per element, or a count of\n // the elements that match.\n const shape = getValueShape(operator as ArrayOperator, 'array');\n const hasCondition = rule.condition !== undefined;\n const refuseCount = (): void => {\n if (rule.count !== undefined)\n pushIssue(\n context,\n `${path}.count`,\n 'unexpected_count',\n `Array operator '${operator}' does not accept count`,\n );\n };\n if (shape === 'none') {\n if (hasCondition)\n pushIssue(\n context,\n `${path}.condition`,\n 'unexpected_condition',\n `Array operator '${operator}' does not accept condition`,\n );\n refuseCount();\n } else if (shape === 'predicate') {\n if (hasCondition) validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n else\n pushIssue(\n context,\n `${path}.condition`,\n 'missing_condition',\n conditionRequired(operator).message,\n );\n refuseCount();\n } else if (shape === 'count') {\n if (context.target !== 'toPrisma' && typeof rule.count !== 'number')\n pushIssue(context, `${path}.count`, 'missing_count', countRequired(operator).message);\n else if (\n rule.count !== undefined &&\n !(typeof rule.count === 'number' && Number.isInteger(rule.count) && rule.count >= 0)\n )\n pushIssue(\n context,\n `${path}.count`,\n 'invalid_count',\n 'count must be a non-negative whole number',\n );\n if (hasCondition) validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n else if (context.target === 'check')\n pushIssue(\n context,\n `${path}.condition`,\n 'missing_condition',\n conditionRequired(operator).message,\n );\n }\n};\n\nconst validateDateRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Date rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (typeof rule.dateOperator !== 'string' || !catalogEntry(rule.dateOperator, 'date')) {\n pushIssue(\n context,\n `${path}.dateOperator`,\n 'invalid_date_operator',\n unknownOperator(rule.dateOperator, 'date').message,\n );\n return;\n }\n\n const operator = rule.dateOperator as DateOperator;\n validateOffset(rule, 'date', operator, path, context, depth);\n\n if (!isOperatorSupportedForTarget(operator, 'date', context.target)) {\n pushIssue(\n context,\n `${path}.dateOperator`,\n `unsupported_${targetSlug(context.target)}_date_operator`,\n `Date operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n const shape = getValueShape(operator, 'date');\n\n if (shape === 'dayList') {\n if (validateSource(rule, path, context, depth) !== 'value') return;\n const days = rule.value;\n if (!Array.isArray(days) || !days.every((day) => typeof day === 'string' && isDayName(day)))\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_day_list',\n `Date operator '${operator}' requires an array of day names (${DAY_NAMES.join(', ')})`,\n );\n return;\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n rejectSqlRowRange(rule, operator, path, context);\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n // Structured date expressions: ago/ahead, this/last/next, start/end.\n if (isDateExpr(rule.value)) {\n validateDateExpr(rule.value, operator, `${path}.value`, context, depth);\n return;\n }\n\n if (WINDOW_OPERATORS.includes(operator)) {\n // The range operators only accept an expression range (period or rolling), not a literal pair.\n pushIssue(context, `${path}.value`, 'invalid_date_range', rangeExprRequired(operator).message);\n return;\n }\n\n if (shape === 'dateRange') {\n if (!isDateRangeOrExprPair(rule.value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_range',\n `Date operator '${operator}' requires a two-item date range`,\n );\n return;\n }\n (rule.value as unknown[]).forEach((item, i) => {\n if (isDateExpr(item)) {\n validateDateExpr(item, operator, `${path}.value[${i}]`, context, depth);\n } else if (isOrderedValue(item) && !parseDateValue(item, DEFAULT_ZONE).isValid()) {\n pushIssue(\n context,\n `${path}.value[${i}]`,\n 'invalid_date_value',\n `Date operator '${operator}' value '${String(item)}' does not parse as a date`,\n );\n }\n });\n return;\n }\n\n if (!isOrderedValue(rule.value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_value',\n `Date operator '${operator}' requires a date-like value`,\n );\n return;\n }\n\n // A date-like value must actually parse — a string that survives validation but\n // fails the compilers/check() would persist clean and then fail at evaluation.\n if (!parseDateValue(rule.value, DEFAULT_ZONE).isValid()) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_value',\n `Date operator '${operator}' value '${String(rule.value)}' does not parse as a date`,\n );\n }\n};\n\n// --- Date-expression validation ---\nconst validateRelativeUnits = (\n units: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (!isPlainObject(units) || Object.keys(units).length === 0) {\n pushIssue(\n context,\n path,\n 'invalid_relative_units',\n 'Relative offset requires at least one unit',\n );\n return;\n }\n for (const [key, magnitude] of Object.entries(units)) {\n if (!isRelativeUnit(key)) {\n pushIssue(\n context,\n `${path}.${key}`,\n 'invalid_relative_unit',\n `Unknown relative unit '${key}'`,\n );\n continue;\n }\n // An amount is a literal number or a value source; a `{ value }` is checked like a literal.\n const form = isPlainObject(magnitude)\n ? validateSource(magnitude, `${path}.${key}`, context, depth)\n : 'literal';\n if (form === null || form === 'path' || form === 'bind') continue;\n const amount = form === 'value' ? (magnitude as Record<string, unknown>).value : magnitude;\n const problem = unitAmountProblem(amount, key);\n if (problem) pushIssue(context, `${path}.${key}`, 'invalid_relative_magnitude', problem);\n }\n};\n\nconst validatePeriodUnit = (unit: unknown, path: string, context: ValidationContext): void => {\n if (typeof unit !== 'string' || !PERIOD_UNITS.includes(unit)) {\n pushIssue(context, path, 'invalid_period_unit', `Unknown period unit '${String(unit)}'`);\n }\n};\n\nconst validateDateExpr = (\n expr: DateExpr,\n operator: DateOperator,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const isRange = WINDOW_OPERATORS.includes(operator);\n\n const rolling = rollingShift(expr);\n if (rolling) {\n validateRelativeUnits(rolling[0], path, context, depth);\n return;\n }\n\n if (isPeriodExpr(expr)) {\n validatePeriodUnit(namedPeriod(expr), path, context);\n return;\n }\n\n if (isEdgeExpr(expr)) {\n if (isRange) {\n pushIssue(context, path, 'invalid_date_range', rangeExprRequired(operator).message);\n return;\n }\n const period = 'start' in expr ? expr.start : expr.end;\n if (!isPlainObject(period) || !isPeriodExpr(period)) {\n pushIssue(context, path, 'invalid_period_unit', `start/end requires a this/last/next period`);\n return;\n }\n validatePeriodUnit(namedPeriod(period), path, context);\n return;\n }\n\n pushIssue(context, path, 'invalid_date_expression', 'Unrecognized date expression');\n};\n\nconst forbidValueAndPath = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n): void => {\n if ('value' in rule && rule.value !== undefined) {\n pushIssue(context, `${path}.value`, 'unexpected_value', 'Rule does not accept value');\n }\n if ('path' in rule && rule.path !== undefined) {\n pushIssue(context, `${path}.path`, 'unexpected_path', 'Rule does not accept path');\n }\n if ('bind' in rule && rule.bind !== undefined) {\n pushIssue(context, `${path}.bind`, 'unexpected_bind', 'Rule does not accept bind');\n }\n};\n\nconst targetSlug = (target: RuleTarget): string =>\n target === 'toPrisma' ? 'prisma' : target === 'toSql' ? 'sql' : 'check';\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n isPlainObjectLodash(value);\n\nconst isNumericRange = (value: unknown): value is [number, number] =>\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number';\n\nconst isDateRangeOrExprPair = (value: unknown): boolean =>\n Array.isArray(value) &&\n value.length === 2 &&\n (isOrderedValue(value[0]) || isDateExpr(value[0])) &&\n (isOrderedValue(value[1]) || isDateExpr(value[1]));\n\nconst validateWindow = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const windowed = hasWindow(rule as WindowFields);\n\n if (windowed && context.target !== 'check') {\n // toPrisma compiles a filter-only window and the extremal (take:1, aligned) one.\n const eligible =\n context.target === 'toPrisma' && windowRewrite(rule as unknown as ArrayRule) !== null;\n if (!eligible) {\n pushIssue(\n context,\n path,\n `unsupported_${targetSlug(context.target)}_window`,\n windowUnsupported(context.target).message,\n );\n }\n }\n\n if ('filter' in rule && rule.filter !== undefined) {\n validateCondition(rule.filter, `${path}.filter`, context, depth + 1);\n }\n\n if ('orderBy' in rule && rule.orderBy !== undefined) {\n const ob = rule.orderBy;\n // An empty orderBy orders nothing: no window, as hasWindow reads it.\n if (!Array.isArray(ob)) {\n pushIssue(\n context,\n `${path}.orderBy`,\n 'invalid_order_by',\n 'orderBy must be an array of { field, dir }',\n );\n } else {\n ob.forEach((o, i) => {\n if (\n !isPlainObject(o) ||\n typeof o.field !== 'string' ||\n (o.dir !== 'asc' && o.dir !== 'desc')\n ) {\n pushIssue(\n context,\n `${path}.orderBy[${i}]`,\n 'invalid_order_by',\n 'orderBy entries must be { field: string, dir: \"asc\" | \"desc\" }',\n );\n }\n });\n }\n }\n\n for (const key of ['take', 'skip'] as const) {\n if (key in rule && rule[key] !== undefined) {\n const v = rule[key];\n if (typeof v !== 'number' || !Number.isInteger(v) || v < 0) {\n pushIssue(\n context,\n `${path}.${key}`,\n `invalid_window_${key}`,\n `${key} must be a non-negative integer`,\n );\n }\n }\n }\n};\n\nconst pushIssue = (\n context: ValidationContext,\n path: string,\n code: string,\n message: string,\n): void => {\n context.errors.push({ path, code, message });\n};\n","import { throwIfInvalid, type ValidationResult, validationResult } from '../validate';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nconst FORBIDDEN_FIELD_CHARS = /[.:]/;\n\n/** Field names are plain identifiers: `.` walks a path and `:` names a bridge target. */\nexport const validateFieldMaps = (set: FieldMapSet): ValidationResult => {\n const errors = [];\n for (const [mapName, fieldMap] of Object.entries(set.maps))\n for (const [modelName, model] of Object.entries(fieldMap.models))\n for (const [fieldName, entry] of Object.entries(model.fields))\n if (entry.kind !== 'bridge' && FORBIDDEN_FIELD_CHARS.test(fieldName))\n errors.push({\n path: `${endpointKey({ fieldMap: mapName, model: modelName })}.${fieldName}`,\n message: 'contains forbidden character . or :',\n code: 'invalid_field_name',\n });\n return validationResult(errors);\n};\n\nexport const assertValidFieldMaps = (set: FieldMapSet): void =>\n throwIfInvalid(validateFieldMaps(set), 'validateFieldMaps');\n","import type { Lens, LensNarrowing } from './types.ts';\n\nexport const isLens = (x: Lens | LensNarrowing): x is Lens => 'model' in x;\n\nexport const collectChain = (x: Lens | LensNarrowing): LensNarrowing[] => {\n const list: LensNarrowing[] = [];\n const visited = new Set<LensNarrowing>();\n let cursor: Lens | LensNarrowing = x;\n while (!isLens(cursor)) {\n if (visited.has(cursor)) throw new Error('cycle detected in narrowing parent chain');\n visited.add(cursor);\n list.unshift(cursor);\n cursor = cursor.parent;\n }\n return list;\n};\n\n/** The lens a narrowing chain is rooted at. */\nexport const getRoot = (x: Lens | LensNarrowing): Lens =>\n isLens(x) ? x : (collectChain(x)[0].parent as Lens);\n","import { own } from '../own';\nimport type { FieldMapEntry } from './types';\n\n/**\n * A Json column. It declares no sub-fields, so a dotted sub-path into it is open-ended —\n * `check`/`toPrisma`/`toSql` resolve the remaining segments against the JSON value at\n * evaluation time. Lens path resolution stops at this boundary.\n */\nexport const isJsonEntry = (entry: FieldMapEntry): boolean =>\n entry.kind === 'scalar' && entry.type === 'Json';\n\n/** A relation to another model, in this source or across a bridge. */\nexport const isRelationEntry = (entry: FieldMapEntry): boolean =>\n entry.kind === 'object' || entry.kind === 'bridge';\n\n/** An enum field's declared values: the entry's own, else the registry's for its type. */\nexport const declaredEnumValues = (\n entry: FieldMapEntry,\n enums: Record<string, readonly string[]> | undefined,\n): readonly string[] | undefined => entry.values ?? own(enums, entry.type);\n","import { fieldOf, modelOf, own } from '../own';\nimport { someCondition } from '../traverse';\nimport type { Condition } from '../types';\nimport { parseEndpointKey } from './endpointKey.ts';\nimport { isJsonEntry } from './entry';\nimport type { FieldMap, FieldMapEntry } from './types';\n\n/** A model a walk stands on, and the relation path that reached it. */\nexport type MapVisit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n/** One segment of a walk: the entry it names at `at` (undefined when undeclared), and the model a\n * relation entry leads to. */\nexport type MapStep = {\n index: number;\n field: string;\n at: MapVisit;\n entry: FieldMapEntry | undefined;\n next: { mapName: string; modelName: string } | null;\n};\n\n/** The model a relation entry leads to, in this map or across a bridge; null for a column. */\nexport const relationTargetOf = (\n entry: FieldMapEntry,\n currentMap: string,\n): { mapName: string; modelName: string } | null => {\n if (entry.kind === 'object') return { mapName: currentMap, modelName: entry.type };\n if (entry.kind === 'bridge') return parseEndpointKey(entry.type, currentMap);\n return null;\n};\n\n/**\n * The one walk of a dotted path through field maps: each segment read at the model the previous\n * relation reached. It ends after an undeclared segment or a column; callers stop earlier where\n * their semantics do (a bridge, a hidden field, a Json boundary).\n */\nexport function* walkMaps(\n maps: Record<string, FieldMap>,\n from: MapVisit,\n path: string,\n): Generator<MapStep> {\n const parts = path.split('.');\n let at: MapVisit = from;\n for (let index = 0; index < parts.length; index++) {\n const field = parts[index];\n const entry = fieldOf(own(maps, at.mapName), at.modelName, field);\n const next = entry ? relationTargetOf(entry, at.mapName) : null;\n yield { index, field, at, entry, next };\n if (!next) return;\n at = { ...next, relPath: [...at.relPath, field] };\n }\n}\n\n/** A relation the walk crossed on the way to the terminal segment. */\nexport type MapHop = { field: string; prefix: string; entry: FieldMapEntry; from: string };\n\n/**\n * A dot-notation field path walked through a FieldMap — the one walk both compilers use:\n * - `direct` the path ends on a declared field (`entry`), a column of `model` or a relation\n * - `json-path` it reaches a Json column (`column`) and continues as a JSON path\n * - `bridge` it crosses a bridge to another source\n * - `past-scalar` it continues past a non-Json column, which has no sub-fields\n * - `fallback` a segment isn't declared; the compilers read the path as written\n * `hops` are the relations crossed before the terminal segment, outermost first.\n */\nexport type MapWalkResult =\n | { kind: 'direct'; hops: MapHop[]; entry: FieldMapEntry; model: string; column: string }\n | {\n kind: 'json-path';\n hops: MapHop[];\n entry: FieldMapEntry;\n model: string;\n column: string;\n stopIndex: number;\n jsonPath: string[];\n }\n | { kind: 'bridge'; hops: MapHop[] }\n | { kind: 'past-scalar'; hops: MapHop[]; column: string }\n | { kind: 'fallback'; hops: MapHop[] };\n\nexport const walkFieldPath = (field: string, map: FieldMap, rootModel: string): MapWalkResult => {\n const parts = field.split('.');\n const hops: MapHop[] = [];\n const from = { mapName: '', modelName: rootModel, relPath: [] };\n for (const { index: i, field: column, at, entry } of walkMaps({ '': map }, from, field)) {\n const model = at.modelName;\n if (!entry) return { kind: 'fallback', hops };\n if (entry.kind === 'bridge') return { kind: 'bridge', hops };\n const last = i === parts.length - 1;\n if (entry.kind === 'object') {\n if (!modelOf(map, entry.type)) return { kind: 'fallback', hops };\n if (last) return { kind: 'direct', hops, entry, model, column };\n hops.push({ field: column, prefix: parts.slice(0, i + 1).join('.'), entry, from: model });\n continue;\n }\n if (last) return { kind: 'direct', hops, entry, model, column };\n if (isJsonEntry(entry))\n return {\n kind: 'json-path',\n hops,\n entry,\n model,\n column,\n stopIndex: i + 1,\n jsonPath: parts.slice(i + 1),\n };\n return { kind: 'past-scalar', hops, column };\n }\n return { kind: 'fallback', hops };\n};\n\n/** A field's walk, when a map and model are given. */\nexport const walkWith = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): MapWalkResult | undefined => (map && model ? walkFieldPath(field, map, model) : undefined);\n\n/** The declared entry a field path ends on, when the map declares it. */\nexport const fieldEntry = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): FieldMapEntry | undefined => {\n const walk = walkWith(field, map, model);\n return walk?.kind === 'direct' ? walk.entry : undefined;\n};\n\n/**\n * The dotted prefixes of `field` that end on an OPTIONAL to-one relation, outermost first —\n * every hop at which the path can be absent as a whole. Same licensing authority as\n * `isRequired` on a column.\n */\nexport const optionalToOneHops = (field: string, map: FieldMap, rootModel: string): string[] =>\n walkFieldPath(field, map, rootModel)\n .hops.filter((hop) => !hop.entry.isList && hop.entry.isRequired === false)\n .map((hop) => hop.prefix);\n\n/** The model a path of relations leads to; null when a segment isn't a declared relation. */\nexport const relationTarget = (field: string, map: FieldMap, model: string): string | null => {\n const walk = walkFieldPath(field, map, model);\n return walk.kind === 'direct' && walk.entry.kind === 'object' ? walk.entry.type : null;\n};\n\n/** Whether a field path crosses a bridge. */\nexport const hitsBridge = (field: string, map: FieldMap, model: string): boolean =>\n walkFieldPath(field, map, model).kind === 'bridge';\n\n/**\n * Whether a bridge appears anywhere in a condition, a relation node's `condition` / `filter`\n * read at its target model. Bridge predicates compile to an over-fetch sentinel (`TRUE` / `{}`),\n * which is safe under AND / OR but not under the `NOT(if) OR then` of an implication — so an\n * implication that touches one over-fetches whole.\n */\nexport const conditionTouchesBridge = (\n condition: Condition,\n map: FieldMap | undefined,\n model: string | undefined,\n): boolean =>\n !!map &&\n !!model &&\n someCondition<string>(\n condition,\n (node, at) =>\n typeof node.field === 'string' && node.field !== '' && hitsBridge(node.field, map, at),\n (node, at) =>\n (typeof node.field === 'string' ? relationTarget(node.field, map, at) : at) ?? false,\n model,\n );\n","import { check } from '../check';\nimport { ArrayOperator } from '../operator.ts';\nimport { parseScopeRef, readScopeRef } from '../scope';\nimport {\n allOf,\n anyOf,\n elementRefs,\n isLogicalNode,\n isRelationNode,\n mapCondition,\n valueRefs,\n} from '../traverse';\nimport type { Condition, WindowFields } from '../types.ts';\nimport { hasWindow } from '../window.ts';\nimport type { Policy } from './policy.ts';\nimport { type RelationHop, relationHops, resolvePolicy, resolveVisit } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Composes a user rule with the lens's narrowing where-clauses, injecting each\n// `where` at its proper anchor in the rule tree (not blindly AND-ing at root).\n//\n// Anchoring rules (2.2.0):\n// - root.where → AND at root (path-specific at lens anchor)\n// - mapDefaults[M].models[X].where → injected wherever rule visits X in map M\n// - root.relations[R]...relations[R].where → injected when rule descends through R\n//\n// Operator-specific injection inside an arrayRule:\n// - any/none/atLeast/atMost/exactly/aggregate.condition: AND with original condition\n// - all and windowed rules: filter-first via the array rule's window `filter` (drops out-of-scope rows before\n// order/take/skip and before the all-check) — never a per-row negate implication\n\nconst wrapWithWheres = (rule: Condition, wheres: Condition[]): Condition =>\n wheres.length ? allOf([...wheres, rule]) : rule;\n\n// Whether a node holds with its field absent — check() answers. A node reading a value ref (or\n// one check() can't settle without options) keeps the plain AND, which only narrows.\nconst holdsWhenAbsent = (node: Condition): boolean => {\n if (valueRefs(node as Record<string, unknown>).length) return false;\n // A `$`-scoped field reads the same way at its own scope.\n const field = (node as { field?: unknown }).field;\n const scoped = typeof field === 'string' ? parseScopeRef(field) : null;\n try {\n return (\n check(scoped ? ({ ...(node as object), field: scoped.path } as Condition) : node, {}) === true\n );\n } catch {\n return false;\n }\n};\n\n// A node read through granted hops: each hop's grant AND-ed with it, so a related row outside its\n// grant fails the node. A missing related row is not a hidden one — where the node holds with its\n// path absent (a negation, notExists), a hop that isn't there satisfies it without the grant.\nconst underHopGrants = (node: Condition, hops: HopGrant[]): Condition => {\n if (!hops.length) return node;\n if (!holdsWhenAbsent(node)) return allOf([...hops.flatMap((hop) => hop.grants), node]);\n const [hop, ...deeper] = hops;\n return anyOf([\n allOf([...hop.grants, underHopGrants(node, deeper)]),\n allOf([{ field: hop.prefix, operator: 'notExists' } as Condition, node]),\n ]);\n};\n\n// Re-roots a related-model `where` grant so its field refs resolve from the current\n// anchor through the relation path (e.g. a User grant `tenantId` reached via `author`\n// becomes `author.tenantId`). Fails closed on shapes that can't be re-rooted\n// unambiguously — a `path` ref (root/current-element semantics don't survive re-rooting)\n// or a nested array/aggregate condition (row-scoped to a different anchor) — rather than\n// silently emitting a wrong or unenforced grant.\nexport const prefixConditionFields = (cond: Condition, prefix: string): Condition =>\n mapCondition(cond, {\n rewrite: (node) => {\n if (isLogicalNode(node)) return node;\n if (typeof node.field !== 'string' || node.field === '')\n throw new Error(\n `narrowRule: cannot re-root a relation grant of unknown shape under '${prefix}'`,\n );\n const refs = valueRefs(node);\n if (refs.length) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a path reference ('${refs[0]}') ` +\n `under '${prefix}'. Author the grant without 'path', or anchor it at the relation itself.`,\n );\n }\n if (parseScopeRef(node.field)) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a scope ref field ('${node.field}') ` +\n `under '${prefix}'. Author the grant against the model's own columns.`,\n );\n }\n if (node.condition !== undefined) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a nested array/aggregate condition on ` +\n `'${node.field}' under '${prefix}'. Anchor such grants at the relation's own model.`,\n );\n }\n return { ...node, field: `${prefix}.${node.field}` };\n },\n // A relation node's `filter` is relative to its elements, not to the anchor.\n below: () => false,\n });\n\ntype Visit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n// Gathers the (re-rooted) wheres for each traversed relation hop so they can be AND-ed\n// with the rule at the current anchor. To-many hops have no scalar path to AND against —\n// their grant must be row-scoped via an arrayOperator condition — so reaching one here\n// (a to-many with a grant but no condition anchor) fails closed rather than dropping it.\ntype HopGrant = { prefix: string; grants: Condition[] };\n\nconst hopGrants = (policy: Policy, hops: RelationHop[]): HopGrant[] =>\n hops.flatMap((hop) => {\n const effect = resolveVisit(policy, hop.map, hop.model, hop.relPath);\n if (effect.whereClauses.length === 0) return [];\n if (hop.isList) {\n throw new Error(\n `narrowRule: cannot enforce a to-many relation grant on '${hop.prefix}' without an ` +\n `arrayOperator condition to anchor it (row-scoped). Traverse '${hop.prefix}' via an ` +\n `array operator (any/all/none/...) so the grant can be injected safely.`,\n );\n }\n return [\n {\n prefix: hop.prefix,\n grants: effect.whereClauses.map((where) => prefixConditionFields(where, hop.prefix)),\n },\n ];\n });\n\nconst collectHopWheres = (policy: Policy, hops: RelationHop[]): Condition[] =>\n hopGrants(policy, hops).flatMap((hop) => hop.grants);\n\n// A scope is a visit the walk reached, or null inside a Json value (undeclared: nothing to grant).\ntype Scope = Visit | null;\n\n// The relation hops a ref crosses from the scope it names, and the visit it ends on. Grants\n// re-root under the ref's own scope prefix (`$.` is the node's own scope, so none).\nconst hopsAt = (\n ref: string,\n policy: Policy,\n scopes: readonly Scope[],\n): { hops: RelationHop[]; end: Visit | null } => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) throw new Error(`narrowRule: ${target.outOfBounds}`);\n if (!target.scope) return { hops: [], end: null };\n const prefix = ref.slice(0, ref.length - target.path.length);\n return relationHops(policy.lens.maps, target.scope, target.path, prefix === '$.' ? '' : prefix);\n};\n\n// A value ref's hops. A bare one is a root-row path — the lens gate resolves it at the lens\n// model, and check() reads it from the row when no context is given — so its grants re-root at\n// the root.\nconst refHops = (ref: string, policy: Policy, scopes: readonly Scope[]): RelationHop[] => {\n if (parseScopeRef(ref)) return hopsAt(ref, policy, scopes).hops;\n const prefix = scopes.length === 1 ? '' : `${'$'.repeat(scopes.length)}.`;\n return scopes[0] ? relationHops(policy.lens.maps, scopes[0], ref, prefix).hops : [];\n};\n\n// Where a node's field leads: every relation hop it crosses (each may carry a grant), and the\n// scope its `condition` / `filter` read at — the relation's visit when its last segment is one,\n// an open scope for a relation node over a Json array.\nconst anchorOf = (\n node: Record<string, unknown>,\n policy: Policy,\n scopes: readonly Scope[],\n): { hops: RelationHop[]; below: Visit | null } | null => {\n if (isLogicalNode(node) || typeof node.field !== 'string' || node.field === '') return null;\n const { hops, end } = hopsAt(node.field, policy, scopes);\n return { hops, below: end };\n};\n\n// Injects each grant at its anchor. A relation node (array or aggregate) whose field ends on a\n// relation gets that relation's grants row-scoped: AND-ed into its `condition`, or — for `all`, a\n// window, or a node with no `condition` (a count, an aggregate, emptiness) — into its `filter`,\n// which drops out-of-scope rows before anything else reads them; relations its `orderBy` or\n// `aggregate.field` cross add their grants there too. Every other hop's grant — on the field, or\n// on a value-side ref (`path`, an offset, an amount) — is re-rooted under the hop and AND-ed with\n// the node.\n/** A rule's grants injected at their anchors, the rule read from `root` under `policy`. */\nexport const narrowAt = (rule: Condition, policy: Policy, root: Visit): Condition =>\n mapCondition<readonly Scope[]>(\n rule,\n {\n below: (node, scopes) => {\n const anchor = anchorOf(node, policy, scopes);\n if (!anchor) return false;\n if (anchor.below) return [...scopes, anchor.below];\n return isRelationNode(node) ? [...scopes, null] : false;\n },\n after: (node, scopes) => {\n const anchor = anchorOf(node, policy, scopes);\n if (!anchor) return node as Condition;\n const valueWheres = collectHopWheres(\n policy,\n valueRefs(node).flatMap((ref) => refHops(ref, policy, scopes)),\n );\n const below = anchor.below;\n if (!below || !isRelationNode(node))\n return wrapWithWheres(\n underHopGrants(node as Condition, hopGrants(policy, anchor.hops)),\n valueWheres,\n );\n const grants = [\n ...resolveVisit(policy, below.mapName, below.modelName, below.relPath).whereClauses,\n ...collectHopWheres(\n policy,\n elementRefs(node).flatMap((ref) => relationHops(policy.lens.maps, below, ref).hops),\n ),\n ];\n const filterFirst =\n node.condition === undefined ||\n node.arrayOperator === ArrayOperator.all ||\n hasWindow(node as WindowFields);\n const out: Record<string, unknown> = { ...node };\n if (grants.length && filterFirst)\n out.filter = allOf([\n ...(node.filter !== undefined ? [node.filter as Condition] : []),\n ...grants,\n ]);\n else if (grants.length) out.condition = allOf([...grants, node.condition as Condition]);\n return wrapWithWheres(\n underHopGrants(out as Condition, hopGrants(policy, anchor.hops.slice(0, -1))),\n valueWheres,\n );\n },\n },\n [root],\n );\n\nexport const narrowRule = (rule: Condition, lensOrNarrowing: Lens | LensNarrowing): Condition => {\n const policy = resolvePolicy(lensOrNarrowing);\n const rootEffect = resolveVisit(policy, policy.lens.mapName, policy.lens.model, []);\n\n // First rewrite the rule, injecting where clauses at their anchors.\n const rewritten = narrowAt(rule, policy, {\n mapName: policy.lens.mapName,\n modelName: policy.lens.model,\n relPath: [],\n });\n\n // Then wrap with root-anchored where clauses (root.where +\n // mapDefaults[lens.mapName].models[lens.model].where).\n return wrapWithWheres(rewritten, rootEffect.whereClauses);\n};\n","import { declaredEnumValues, isJsonEntry } from '../fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { type MapVisit, relationTargetOf, walkMaps } from '../fieldMap/walk.ts';\nimport { modelOf, own } from '../own';\nimport { readScopeRef } from '../scope';\nimport type { Condition } from '../types.ts';\nimport { collectChain, getRoot } from './chain.ts';\nimport { narrowAt } from './narrowRule.ts';\nimport type {\n Lens,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n SourceEntry,\n SourceSpec,\n} from './types.ts';\n\nexport type VisitEffect = {\n picks: Set<string> | null;\n omits: Set<string>;\n enumValuesByField: Map<string, readonly string[]>;\n whereClauses: Condition[];\n sources: Map<string, Condition[]>;\n /** Per-field display label (from a SourceSpec's `label`): a sibling column or a dotted\n * to-one path; a later layer wins. */\n sourceLabels: Map<string, string>;\n /** Per-field option-partition axes (from a SourceSpec's `groupBy`, normalized); a later layer wins. */\n sourceGroupBys: Map<string, string[]>;\n /** The chain index of the earliest layer that declared each source's label / axes (keyed by\n * `declaredKey`): every layer after it that hides one of those columns drops it. */\n sourceDeclaredAt: Map<string, number>;\n relations: Map<string, ModelNarrowing>;\n};\n\n/** Normalize a `groupBy` declaration to its axes array (a bare string is one axis). */\nexport const normalizeGroupBy = (g: string | string[] | undefined): string[] | undefined =>\n g === undefined ? undefined : Array.isArray(g) ? g : [g];\n\n/** A `sources` entry is a `SourceSpec` when it carries `where`/`label`/`groupBy`; else it's a bare `Condition`. */\nexport const isSourceSpec = (v: SourceEntry): v is SourceSpec =>\n typeof v === 'object' &&\n v !== null &&\n !Array.isArray(v) &&\n ('where' in v || 'label' in v || 'groupBy' in v);\n\n/** Normalize a `sources` entry to a `SourceSpec` — a bare `Condition` becomes its `where`. */\nexport const normalizeSource = (v: SourceEntry): SourceSpec => {\n if (isSourceSpec(v)) return v;\n if (typeof v === 'object' && v !== null && !Array.isArray(v) && Object.keys(v).length === 0)\n throw new Error('sources: {} is not a Condition — use `true` for an unconstrained source');\n return { where: v };\n};\n\nexport type Policy = {\n lens: Lens;\n chain: LensNarrowing[];\n};\n\n/** A relPath matching no declared `root.relations` path — `resolveVisit` then applies\n * mapDefaults only: the model-intrinsic visit a model gets wherever it is reached off-path. */\nexport const OFF_PATH: readonly string[] = ['__offpath__'];\n\nexport const resolvePolicy = (lensOrNarrowing: Lens | LensNarrowing): Policy => {\n const lens = getRoot(lensOrNarrowing);\n const chain =\n (lensOrNarrowing as Lens).maps === lens.maps\n ? []\n : collectChain(lensOrNarrowing as LensNarrowing);\n return { lens, chain };\n};\n\nexport const intersectStringSet = (\n cur: Set<string> | null,\n next: readonly string[],\n): Set<string> => {\n if (cur === null) return new Set(next);\n return new Set(next.filter((x) => cur.has(x)));\n};\n\nexport const augmentPicksWithRelations = (\n n: ModelDefaultNarrowing | ModelNarrowing,\n): readonly string[] | undefined => {\n if (!n.picks) return undefined;\n if (!('relations' in n) || !n.relations) return n.picks;\n const out = [...n.picks];\n for (const rel of Object.keys(n.relations)) {\n if (!out.includes(rel)) out.push(rel);\n }\n return out;\n};\n\nconst accumulatePicksOmitsInto = (\n state: { picks: Set<string> | null; omits: Set<string> },\n n: ModelDefaultNarrowing | ModelNarrowing,\n): void => {\n const augmented = augmentPicksWithRelations(n);\n if (augmented) state.picks = intersectStringSet(state.picks, augmented);\n if (n.omits) for (const f of n.omits) state.omits.add(f);\n};\n\nconst intersectIntoMap = (\n map: Map<string, Set<string>>,\n key: string,\n vals: readonly string[],\n): void => {\n map.set(key, intersectStringSet(map.get(key) ?? null, vals));\n};\n\nconst unionIntoMap = (\n map: Map<string, Set<string>>,\n key: string,\n vals: readonly string[],\n): void => {\n const s = map.get(key) ?? new Set<string>();\n for (const v of vals) s.add(v);\n map.set(key, s);\n};\n\nconst accumulateEnumFields = (\n picksMap: Map<string, Set<string>>,\n omitsMap: Map<string, Set<string>>,\n n: ModelDefaultNarrowing | ModelNarrowing,\n): void => {\n if (n.enumPicks) {\n for (const [f, vals] of Object.entries(n.enumPicks)) intersectIntoMap(picksMap, f, vals);\n }\n if (n.enumOmits) {\n for (const [f, vals] of Object.entries(n.enumOmits)) unionIntoMap(omitsMap, f, vals);\n }\n};\n\nconst declaredKey = (field: string, kind: 'label' | 'groupBy', value: string | string[]): string =>\n JSON.stringify([field, kind, value]);\n\nconst accumulateInto = (\n out: VisitEffect,\n n: ModelDefaultNarrowing | ModelNarrowing,\n narrow: (condition: Condition) => Condition,\n layer: number,\n): void => {\n accumulatePicksOmitsInto(out, n);\n if (n.where !== undefined) out.whereClauses.push(narrow(n.where));\n if (n.sources) {\n for (const [field, entry] of Object.entries(n.sources)) {\n const spec = normalizeSource(entry);\n const clauses = out.sources.get(field) ?? [];\n if (spec.where !== undefined) clauses.push(narrow(spec.where));\n out.sources.set(field, clauses); // register the field even when only a label is set\n const axes = normalizeGroupBy(spec.groupBy);\n for (const [kind, value] of [\n ['label', spec.label],\n ['groupBy', axes],\n ] as const) {\n if (value === undefined) continue;\n const key = declaredKey(field, kind, value);\n if (!out.sourceDeclaredAt.has(key)) out.sourceDeclaredAt.set(key, layer);\n }\n if (spec.label !== undefined) out.sourceLabels.set(field, spec.label);\n if (axes !== undefined) out.sourceGroupBys.set(field, axes);\n }\n }\n};\n\nexport const resolveVisit = (\n policy: Policy,\n mapName: string,\n modelName: string,\n relPath: readonly string[],\n): VisitEffect => {\n const out: VisitEffect = {\n picks: null,\n omits: new Set(),\n enumValuesByField: new Map(),\n whereClauses: [],\n sources: new Map(),\n sourceLabels: new Map(),\n sourceGroupBys: new Map(),\n sourceDeclaredAt: new Map(),\n relations: new Map(),\n };\n\n const fieldMap: FieldMap | undefined = own(policy.lens.maps, mapName);\n const model = modelOf(fieldMap, modelName);\n if (!model) return out;\n\n const fieldEnumPicks = new Map<string, Set<string>>();\n const fieldEnumOmits = new Map<string, Set<string>>();\n const typeEnumPicks = new Map<string, Set<string>>();\n const typeEnumOmits = new Map<string, Set<string>>();\n\n // A layer's own conditions read through its parent: the relations they reach carry the\n // grants of every layer above, as a user rule's do — a child can't see what its parent hides.\n let narrow = (condition: Condition): Condition => condition;\n let current = 0;\n const applyNode = (n: ModelDefaultNarrowing | ModelNarrowing): void => {\n accumulateInto(out, n, narrow, current);\n accumulateEnumFields(fieldEnumPicks, fieldEnumOmits, n);\n };\n\n for (const [layer, narrowing] of policy.chain.entries()) {\n current = layer;\n const parent: Policy = { lens: policy.lens, chain: policy.chain.slice(0, layer) };\n narrow = (condition) =>\n layer === 0 ? condition : narrowAt(condition, parent, { mapName, modelName, relPath });\n const visitMapDefaults = own(narrowing.mapDefaults, mapName);\n if (visitMapDefaults) {\n const dflt = own(visitMapDefaults.models, modelName);\n if (dflt) applyNode(dflt);\n for (const [enumName, enumN] of Object.entries(visitMapDefaults.enums ?? {})) {\n if (enumN.picks) intersectIntoMap(typeEnumPicks, enumName, enumN.picks);\n if (enumN.omits) unionIntoMap(typeEnumOmits, enumName, enumN.omits);\n }\n }\n\n let node: ModelNarrowing | undefined = narrowing.root;\n if (relPath.length === 0) {\n if (mapName === policy.lens.mapName && modelName === policy.lens.model && node) {\n applyNode(node);\n for (const [rel, sub] of Object.entries(node.relations ?? {})) out.relations.set(rel, sub);\n }\n } else {\n for (const seg of relPath) {\n node = own(node?.relations, seg);\n if (!node) break;\n }\n if (node) {\n applyNode(node);\n for (const [rel, sub] of Object.entries(node.relations ?? {})) out.relations.set(rel, sub);\n }\n }\n }\n\n for (const [fieldName, entry] of Object.entries(model.fields)) {\n const isEnum = entry.kind === 'enum';\n // Enums draw from the registry; any other kind (scalar, Json) is gated by an explicit\n // `values` set. A hydrated source's folded `options` gate too and win when present — a\n // consumer re-feeds an exposed surface here, so this is load-bearing (see\n // test/lens.sourceOptionsGating.test.ts).\n const optionValues = entry.options?.map((o) => o.value);\n const baseValues =\n optionValues ?? (isEnum ? declaredEnumValues(entry, fieldMap?.enums) : entry.values);\n if (!baseValues) continue;\n let vals: readonly string[] = baseValues;\n if (isEnum) {\n const typePicks = typeEnumPicks.get(entry.type);\n const typeOmits = typeEnumOmits.get(entry.type);\n if (typePicks) vals = vals.filter((v) => typePicks.has(v));\n if (typeOmits) vals = vals.filter((v) => !typeOmits.has(v));\n }\n const fp = fieldEnumPicks.get(fieldName);\n const fo = fieldEnumOmits.get(fieldName);\n if (fp) vals = vals.filter((v) => fp.has(v));\n if (fo) vals = vals.filter((v) => !fo.has(v));\n out.enumValuesByField.set(fieldName, vals);\n }\n\n return out;\n};\n\nexport const isFieldVisible = (effect: VisitEffect, fieldName: string): boolean => {\n if (effect.omits.has(fieldName)) return false;\n if (effect.picks !== null && !effect.picks.has(fieldName)) return false;\n return true;\n};\n\nexport const allowedEnumValues = (\n effect: VisitEffect,\n fieldName: string,\n): readonly string[] | null => effect.enumValuesByField.get(fieldName) ?? null;\n\nexport type LensPathHop = {\n field: string;\n entry: FieldMapEntry;\n mapName: string;\n model: string;\n /** The relation path from the lens anchor to the model this hop reads. */\n relPath: string[];\n};\n\n/**\n * Where a dotted path lands through the lens, hop by hop. `hidden` is a field the model has but\n * the narrowing does not expose at this visit; `missing` is a field the model does not have (or a\n * model the map does not have); `pastScalar` is a segment after a scalar. A path that continues\n * below a Json column resolves at the column with the remainder in `jsonSubPath`.\n */\nexport type LensPathResolution =\n | { outcome: 'resolved'; hops: LensPathHop[]; terminal: LensPathHop; jsonSubPath: string[] }\n | { outcome: 'hidden' | 'missing' | 'pastScalar'; index: number; hops: LensPathHop[] };\n\nexport const resolvePolicyPath = (\n policy: Policy,\n from: MapVisit,\n path: string,\n): { resolution: LensPathResolution; effects: VisitEffect[] } => {\n const parts = path.split('.');\n const hops: LensPathHop[] = [];\n const effects: VisitEffect[] = [];\n for (const { index: i, field: fieldName, at, entry, next } of walkMaps(\n policy.lens.maps,\n from,\n path,\n )) {\n if (!entry) return { resolution: { outcome: 'missing', index: i, hops }, effects };\n const effect = resolveVisit(policy, at.mapName, at.modelName, at.relPath);\n if (!isFieldVisible(effect, fieldName))\n return { resolution: { outcome: 'hidden', index: i, hops }, effects };\n const hop: LensPathHop = {\n field: fieldName,\n entry,\n mapName: at.mapName,\n model: at.modelName,\n relPath: [...at.relPath],\n };\n hops.push(hop);\n effects.push(effect);\n const last = i === parts.length - 1;\n // A Json column declares no sub-fields; the evaluators resolve the remainder against the\n // value, so the path resolves at the column and carries the remainder.\n if (last || isJsonEntry(entry)) {\n return {\n resolution: {\n outcome: 'resolved',\n hops,\n terminal: hop,\n jsonSubPath: last ? [] : parts.slice(i + 1),\n },\n effects,\n };\n }\n if (!next) return { resolution: { outcome: 'pastScalar', index: i, hops }, effects };\n }\n return { resolution: { outcome: 'missing', index: parts.length, hops }, effects };\n};\n\n/**\n * Whether a source's label or axes, as in force at a visit, read only columns every layer but\n * their earliest declaration shows. The declaring layer may source a column it hides itself; any\n * other layer that hides it — an ancestor, or a layer after — drops it, so re-declaring an\n * ancestor's label never revives what a layer in between hid. A path that doesn't resolve stays,\n * for the compile to refuse.\n */\nexport const sourceReadsVisible = (\n policy: Policy,\n effect: VisitEffect,\n at: MapVisit,\n field: string,\n kind: 'label' | 'groupBy',\n): boolean => {\n const value =\n kind === 'label' ? effect.sourceLabels.get(field) : effect.sourceGroupBys.get(field);\n if (value === undefined) return true;\n const from = effect.sourceDeclaredAt.get(declaredKey(field, kind, value)) ?? -1;\n const others = { lens: policy.lens, chain: policy.chain.filter((_, i) => i !== from) };\n return (typeof value === 'string' ? [value] : value).every(\n (path) => resolvePolicyPath(others, at, path).resolution.outcome !== 'hidden',\n );\n};\n\nexport const lensPathEnd = (\n policy: Policy,\n from: MapVisit,\n fieldPath: string,\n): {\n mapName: string;\n modelName: string;\n relPath: string[];\n entry: FieldMapEntry;\n terminalEffect: VisitEffect;\n terminalFieldName: string;\n /** Segments consumed below a Json boundary — empty when the path ends on the declared entry. */\n jsonSubPath: string[];\n} | null => {\n const { resolution, effects } = resolvePolicyPath(policy, from, fieldPath);\n if (resolution.outcome !== 'resolved') return null;\n const { terminal, jsonSubPath } = resolution;\n return {\n mapName: terminal.mapName,\n modelName: terminal.model,\n relPath: terminal.relPath,\n entry: terminal.entry,\n terminalEffect: effects[effects.length - 1],\n terminalFieldName: terminal.field,\n jsonSubPath,\n };\n};\n\n/** Where a rule visit stands: a model reached through the lens, or open inside a Json value. */\nexport type VisitScope = MapVisit & { open: boolean };\n\nexport const lensRootScope = (policy: Policy): VisitScope => ({\n mapName: policy.lens.mapName,\n modelName: policy.lens.model,\n relPath: [],\n open: false,\n});\n\nexport type LensWalk = NonNullable<ReturnType<typeof lensPathEnd>>;\n\n/**\n * The scope a node's `field` leads into — where its `condition` / `filter` resolve — with the\n * scope the walk started from and the walk that reached it (none inside an open Json scope), or the issue that stops it. A `$`-prefixed\n * field counts scopes up the stack as check() does.\n */\nexport const stepIntoField = (\n policy: Policy,\n scopes: readonly VisitScope[],\n field: string,\n):\n | { from: VisitScope; next: VisitScope; walked: LensWalk | null }\n | { issue: { code: 'scope_out_of_bounds' | 'not_in_lens'; message: string } } => {\n const target = readScopeRef(field, scopes);\n if ('outOfBounds' in target)\n return { issue: { code: 'scope_out_of_bounds', message: target.outOfBounds } };\n if (target.scope.open) return { from: target.scope, next: target.scope, walked: null };\n const walked = lensPathEnd(policy, target.scope, target.path);\n if (!walked)\n return {\n issue: { code: 'not_in_lens', message: 'path does not resolve through the narrowed lens' },\n };\n const open = isJsonEntry(walked.entry);\n const relation = relationTargetOf(walked.entry, walked.mapName);\n const next = relation\n ? { ...relation, relPath: [...walked.relPath, walked.terminalFieldName], open }\n : { ...target.scope, open };\n return { from: target.scope, next, walked };\n};\n\n/** A relation a path crosses: the visit it reaches, its dotted prefix, and whether it's to-many. */\nexport type RelationHop = {\n map: string;\n model: string;\n relPath: string[];\n prefix: string;\n isList: boolean;\n};\n\n/**\n * The relations a path crosses from a visit, read from the field maps — grants apply to a relation\n * whether or not it is visible, so this walk does not gate. It stops at the first segment that\n * isn't a relation; `end` is the visit the last segment reaches when every segment is one.\n * `prefix` is prepended to each hop's dotted prefix (a `$`-scope ref).\n */\nexport const relationHops = (\n maps: Record<string, FieldMap>,\n from: MapVisit,\n path: string,\n prefix = '',\n): {\n hops: RelationHop[];\n end: MapVisit | null;\n} => {\n const parts = path.split('.');\n const hops: RelationHop[] = [];\n let end: MapVisit | null = null;\n for (const { index: i, field, at, entry, next } of walkMaps(maps, from, path)) {\n if (!entry || !next) break;\n const relPath = [...at.relPath, field];\n hops.push({\n map: next.mapName,\n model: next.modelName,\n relPath,\n prefix: `${prefix}${parts.slice(0, i + 1).join('.')}`,\n isList: entry.isList === true,\n });\n if (i === parts.length - 1) end = { ...next, relPath: [...relPath] };\n }\n return { hops, end };\n};\n","import { bindRule, listBindings } from '../bindings.ts';\nimport type { Condition, RuleValue } from '../types.ts';\nimport { collectChain, isLens } from './chain.ts';\nimport { isSourceSpec } from './policy.ts';\nimport type {\n Lens,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n NarrowingDefaults,\n SourceEntry,\n} from './types.ts';\n\nconst PARENT_PREFIX = 'parent:';\nconst isParentRef = (name: string): boolean => name.startsWith(PARENT_PREFIX);\nconst baseName = (name: string): string =>\n isParentRef(name) ? name.slice(PARENT_PREFIX.length) : name;\n\ntype Rewrite = (condition: Condition) => Condition;\n\n// A model node's condition slots — its `where`, each source's `where`, and the same through its\n// path relations — listed once. `fn` rewrites each; collecting is a rewrite that keeps them.\nconst mapNodeConditions = <T extends ModelDefaultNarrowing | ModelNarrowing>(\n node: T,\n fn: Rewrite,\n): T => {\n const out = { ...node } as ModelNarrowing;\n if (node.where !== undefined) out.where = fn(node.where);\n if (node.sources) {\n const sources: Record<string, SourceEntry> = {};\n for (const [field, entry] of Object.entries(node.sources))\n sources[field] = isSourceSpec(entry)\n ? entry.where !== undefined\n ? { ...entry, where: fn(entry.where) }\n : entry\n : fn(entry);\n out.sources = sources;\n }\n if ('relations' in node && node.relations) {\n const relations: Record<string, ModelNarrowing> = {};\n for (const [rel, sub] of Object.entries(node.relations))\n relations[rel] = mapNodeConditions(sub, fn);\n out.relations = relations;\n }\n return out as T;\n};\n\n// One narrowing layer's condition slots: its root and every map default's models.\nconst mapLayerConditions = (nrw: LensNarrowing, fn: Rewrite): LensNarrowing => {\n const mapDefaults: Record<string, NarrowingDefaults> = {};\n for (const [mapName, defaults] of Object.entries(nrw.mapDefaults ?? {})) {\n const models: Record<string, ModelDefaultNarrowing> = {};\n for (const [model, node] of Object.entries(defaults.models ?? {}))\n models[model] = mapNodeConditions(node, fn);\n mapDefaults[mapName] = defaults.models ? { ...defaults, models } : defaults;\n }\n return {\n ...nrw,\n root: nrw.root ? mapNodeConditions(nrw.root, fn) : undefined,\n mapDefaults: nrw.mapDefaults ? mapDefaults : undefined,\n };\n};\n\nconst layerConditions = (nrw: LensNarrowing): Condition[] => {\n const out: Condition[] = [];\n mapLayerConditions(nrw, (condition) => {\n out.push(condition);\n return condition;\n });\n return out;\n};\n\n// Bind names a layer *declares* (introduces). `parent:` tokens are inherited\n// references, not declarations.\nconst declaredNames = (nrw: LensNarrowing): Set<string> => {\n const names = new Set<string>();\n for (const cond of layerConditions(nrw))\n for (const name of listBindings(cond)) if (!isParentRef(name)) names.add(name);\n return names;\n};\n\n/**\n * Every bind name a lens (its whole narrowing chain) needs supplied to execute —\n * `bindOptional` tokens are not required (unsupplied, they resolve to null).\n * `parent:` references collapse to their base name — the caller supplies one value\n * per name and an inherited reference draws the same one. This is the \"what does\n * this lens require\" answer; pass `narrowing.parent` to see the names a child must\n * not collide with.\n */\nexport const listLensBindings = (lensOrNarrowing: Lens | LensNarrowing): string[] => {\n const names = new Set<string>();\n for (const nrw of collectChain(lensOrNarrowing))\n for (const cond of layerConditions(nrw))\n for (const name of listBindings(cond, { required: true })) names.add(baseName(name));\n return [...names].sort();\n};\n\n/**\n * Preprocess a lens: resolve every `{ bind }` token the map covers in the chain's\n * `where`/`sources`, returning a structurally-new lens with concrete conditions.\n * Partial — uncovered tokens stay, so stages bind progressively. Once resolved,\n * `narrowRule` / `toPrisma` / `toSql` / `toSourceQueries` / `projectPaths` consume the\n * lens unchanged: a bind needs nothing new downstream. `parent:name` draws the same\n * value as the ancestor's `name`. Does not mutate the input.\n */\nexport const bindLens = (\n lensOrNarrowing: Lens | LensNarrowing,\n bindings: Record<string, RuleValue>,\n): Lens | LensNarrowing => {\n if (isLens(lensOrNarrowing)) return lensOrNarrowing; // a bare lens carries no where/sources\n const effective: Record<string, RuleValue> = { ...bindings };\n for (const [k, v] of Object.entries(bindings)) effective[`${PARENT_PREFIX}${k}`] = v;\n return {\n ...mapLayerConditions(lensOrNarrowing, (condition) => bindRule(condition, effective)),\n parent: bindLens(lensOrNarrowing.parent, bindings),\n };\n};\n\n/**\n * Bind names are unique across a composed chain: a layer may not re-declare a name\n * an ancestor already declares — rename it, or reference the inherited one read-only\n * as `parent:name`. A `parent:name` reference must point at a name some ancestor\n * actually declares. Returns the problems as messages (folded into `validateNarrowing`).\n */\nexport const validateBindNames = (narrowing: LensNarrowing): string[] => {\n const errors: string[] = [];\n const occupied = new Set<string>();\n for (const anc of collectChain(narrowing.parent))\n for (const n of declaredNames(anc)) occupied.add(n);\n\n for (const n of declaredNames(narrowing)) {\n if (occupied.has(n))\n errors.push(\n `bind name '${n}' already declared by an ancestor narrowing — rename it, or reference the inherited one as 'parent:${n}'`,\n );\n }\n\n const refs = new Set<string>();\n for (const cond of layerConditions(narrowing))\n for (const name of listBindings(cond)) if (isParentRef(name)) refs.add(baseName(name));\n for (const r of refs)\n if (!occupied.has(r))\n errors.push(`bind 'parent:${r}' references an inherited binding no ancestor declares`);\n\n return errors;\n};\n","import { isRelationEntry } from '../fieldMap/entry.ts';\nimport { COERCIBLE_KINDS, type FieldKind } from '../operatorCatalog.ts';\nimport { conditionShape, isRelationNode, mapCondition } from '../traverse';\nimport type { Condition } from '../types.ts';\nimport { lensRootScope, resolvePolicy, stepIntoField, type VisitScope } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Stamp coerceType onto every field rule from the lens's field map — the explicit dual of the\n// server's coerceValueForField: the rule carries its coercion, check() never infers types from\n// values. A relation node's condition / filter stamp against the relation's model; below a Json\n// boundary the kind is undeclared, so nothing is stamped. A date rule, an aggregate comparison\n// (numeric by contract) and a rule that already names its coercion are left as they are.\nexport const coerceRule = (\n condition: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): Condition => {\n const policy = resolvePolicy(lensOrNarrowing);\n const step = (field: unknown, scopes: readonly VisitScope[]) =>\n typeof field === 'string' && field !== '' ? stepIntoField(policy, scopes, field) : null;\n return mapCondition<readonly VisitScope[]>(\n condition,\n {\n rewrite: (node, scopes) => {\n if (conditionShape(node) !== 'field' || node.coerceType) return node;\n const at = step(node.field, scopes);\n if (!at || 'issue' in at || !at.walked || at.walked.jsonSubPath.length) return node;\n const { entry } = at.walked;\n return entry.kind === 'scalar' && COERCIBLE_KINDS.includes(entry.type as FieldKind)\n ? { ...node, coerceType: entry.type }\n : node;\n },\n below: (node, scopes) => {\n if (!isRelationNode(node)) return false;\n const at = step(node.field, scopes);\n const entry = at && !('issue' in at) ? at.walked?.entry : undefined;\n return at && !('issue' in at) && entry && isRelationEntry(entry)\n ? [...scopes, at.next]\n : false;\n },\n },\n [lensRootScope(policy)],\n );\n};\n","import { stitchFieldMaps } from '../fieldMap/stitch.ts';\nimport type { Lens } from './types.ts';\n\n/** A lens over field maps, its bridges stitched into the maps as fields. */\nexport const createLens = ({ maps, bridges, mapName, model }: Lens): Lens => ({\n ...stitchFieldMaps({ maps, bridges }),\n mapName,\n model,\n});\n","import { relationsNotValue } from '../errors';\nimport { FieldKind, isFieldKind } from '../operatorCatalog';\nimport type { Rule } from '../types';\nimport type { FieldMap, FieldMapEntry } from './types';\nimport { fieldEntry, type MapWalkResult, walkWith } from './walk';\n\n/**\n * What a field reads, for the operators whose form depends on it: `text` (a String column),\n * `json` (a whole Json column), `json-path` (inside one), `list` (a scalar list), `relation` (a\n * to-one relation, which exists or not), `relations` (a to-many one, which only array operators\n * read), `instant` (a DateTime column), `scalar` (any other column), or `unknown` (no map, or a\n * path the map doesn't declare).\n */\nexport type FieldShape =\n | 'relations'\n | 'enum'\n | 'text'\n | 'json'\n | 'json-path'\n | 'list'\n | 'relation'\n | 'instant'\n | 'scalar'\n | 'unknown';\n\nexport const fieldShape = (walk: MapWalkResult | undefined): FieldShape => {\n if (walk?.kind === 'json-path') return 'json-path';\n if (walk?.kind !== 'direct') return 'unknown';\n if (walk.entry.kind === 'object') return walk.entry.isList ? 'relations' : 'relation';\n if (walk.entry.isList) return 'list';\n if (walk.entry.kind === 'enum') return 'enum';\n return kindShape(walk.entry.type);\n};\n\nconst kindShape = (kind: string): FieldShape => {\n if (kind === FieldKind.Json) return 'json';\n if (kind === FieldKind.Enum) return 'enum';\n if (kind === FieldKind.DateTime) return 'instant';\n return kind === FieldKind.String ? 'text' : 'scalar';\n};\n\n/**\n * Whether the emptiness operators may compare a field against `''`. Only a String (or Json)\n * column takes it — Postgres rejects `''` on a timestamp or integer, Prisma rejects\n * `equals: ''` on DateTime/Int/enum. The field map is the authority, a stamped `coerceType`\n * the fallback; with neither, an untyped field keeps its `''` branch.\n */\nexport const acceptsEmptyString = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n map: FieldMap | undefined,\n model: string | undefined,\n): boolean => {\n const entry = fieldEntry(rule.field, map, model);\n if (entry) return entry.kind === 'scalar' && (entry.type === 'String' || entry.type === 'Json');\n return (\n rule.coerceType === undefined || rule.coerceType === 'String' || rule.coerceType === 'Json'\n );\n};\n\n/** A field or date rule on a to-many relation: rows, which an array operator reads. */\nexport const refuseRelationsValue = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): void => {\n if (fieldShape(walkWith(field, map, model)) === 'relations') throw relationsNotValue(field);\n};\n\n/** A shape whose values read as text (an undeclared field may). */\nexport const readsText = (shape: FieldShape | undefined): boolean =>\n shape !== 'scalar' &&\n shape !== 'instant' &&\n shape !== 'list' &&\n shape !== 'enum' &&\n shape !== 'relation' &&\n shape !== 'relations';\n\n/** Whether a case-insensitive comparison applies — text against a string operand (or a list\n * holding one), as check() lowercases only strings. */\nexport const comparesText = (shape: FieldShape | undefined, operand: unknown): boolean =>\n readsText(shape) && holdsString(operand);\n\n// check() lowers strings through lists at any depth.\nconst holdsString = (v: unknown): boolean =>\n typeof v === 'string' || (Array.isArray(v) && v.some(holdsString));\n\n/** A rule's field shape: the map's authority, a stamped `coerceType` the fallback. */\nexport const ruleShape = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n map: FieldMap | undefined,\n model: string | undefined,\n): FieldShape => {\n const shape = fieldShape(walkWith(rule.field, map, model));\n return shape === 'unknown' && rule.coerceType !== undefined ? kindShape(rule.coerceType) : shape;\n};\n\n/** The kind a declared field compares as — undefined where the map does not pin one down:\n * relations, Json (open-ended), scalar lists, and scalar types outside FieldKind. */\nexport const entryKind = (entry: FieldMapEntry): FieldKind | undefined => {\n if (entry.isList) return undefined;\n if (entry.kind === 'enum') return FieldKind.Enum;\n if (entry.kind !== 'scalar' || entry.type === FieldKind.Json) return undefined;\n return isFieldKind(entry.type) ? entry.type : undefined;\n};\n","import { applyCoercion } from './field';\nimport { entryKind } from './fieldMap/shape';\nimport type { MapWalkResult } from './fieldMap/walk';\nimport { COMPILE_COERCED_KINDS, FieldKind, NUMERIC_KINDS } from './operatorCatalog';\nimport type { Rule } from './types';\n\n/** Epoch ms of a DateTime literal through check()'s own DateTime coercion (Date, ISO with or\n * without a zone, day-only, epoch ms or digits; zoneless anchors in UTC) — undefined when it\n * is not a representable instant. The gate and both compilers read dates through this seam. */\nexport const instantMs = (value: unknown, zone?: string): number | undefined => {\n const ms = applyCoercion(value, FieldKind.DateTime, zone);\n return typeof ms === 'number' && !Number.isNaN(new Date(ms).getTime()) ? ms : undefined;\n};\n\n// Prisma takes a Date. toSql takes the zoned ISO string: a pg driver serializes a Date param in\n// the HOST's zone, which a `timestamp` (no time zone) column — Prisma's Postgres default —\n// silently drops; a `...Z` string casts to the same instant on either column type.\nconst toInstant =\n (field: string, target: CompileTarget, zone: string) =>\n (value: unknown): unknown => {\n if (value === null || value === undefined) return value;\n const ms = instantMs(value, zone);\n if (ms === undefined)\n throw new Error(`Invalid date value for DateTime field '${field}': ${String(value)}`);\n return target === 'toPrisma' ? new Date(ms) : new Date(ms).toISOString();\n };\n\ntype CompileTarget = 'toPrisma' | 'toSql';\n\n/**\n * A field rule's comparison value as a compiler must emit it for the column `walk` reached. The\n * compiled query compares the column as stored, so a `coerceType` that overrides the declared\n * kind has no compiled equivalent and throws; a stamp equal to it coerces the literal the way\n * check() does. A DateTime column (declared, or a stamped `coerceType` when no map is passed)\n * gets its literals as instants. A Json sub-path or a scalar list declares no kind: unchanged.\n */\nexport const compileFieldLiteral = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n value: unknown,\n walk: MapWalkResult | undefined,\n target: CompileTarget,\n zone: () => string,\n): unknown => {\n if (value === null || value === undefined || walk?.kind === 'json-path') return value;\n const entry = walk?.kind === 'direct' ? walk.entry : undefined;\n if (entry?.isList) return value;\n const declared = entry ? entryKind(entry) : undefined;\n if (rule.coerceType !== undefined && declared !== undefined && rule.coerceType !== declared)\n throw new Error(\n `coerceType '${rule.coerceType}' overrides ${declared} field '${rule.field}', but ${target} compares the column as stored — evaluate it in memory with check(), or drop the override.`,\n );\n const kind = declared ?? rule.coerceType;\n if (kind === FieldKind.DateTime) {\n const instant = toInstant(rule.field, target, zone());\n return Array.isArray(value) ? value.map(instant) : instant(value);\n }\n // Unstamped, check() compares the literal as written, so a string never equals a number or a\n // boolean column, nor a number or boolean a String one; the compilers would cast it. Refuse it —\n // stamp `coerceType` to compare it.\n if (\n rule.coerceType === undefined &&\n declared === FieldKind.String &&\n (Array.isArray(value) ? value : [value]).some(\n (item) => typeof item === 'number' || typeof item === 'boolean',\n )\n )\n throw new Error(\n `'${rule.field}' is String but the literal is not a string; pass a string, or stamp coerceType: 'String'.`,\n );\n if (\n rule.coerceType === undefined &&\n declared !== undefined &&\n (NUMERIC_KINDS.includes(declared) || declared === FieldKind.Boolean) &&\n (Array.isArray(value) ? value : [value]).some((item) => typeof item === 'string')\n )\n throw new Error(\n `'${rule.field}' is ${declared} but the literal is a string; pass a ${declared === FieldKind.Boolean ? 'boolean' : 'number'}, or stamp coerceType: '${declared}'.`,\n );\n return rule.coerceType !== undefined && COMPILE_COERCED_KINDS.includes(rule.coerceType)\n ? applyCoercion(\n value,\n rule.coerceType,\n rule.coerceType === FieldKind.DateTime ? zone() : undefined,\n )\n : value;\n};\n","import { instantMs } from '../compileLiteral';\nimport { applyCoercion } from '../field';\nimport { isJsonEntry, isRelationEntry } from '../fieldMap/entry.ts';\nimport { entryKind } from '../fieldMap/shape';\nimport type { FieldMapEntry } from '../fieldMap/types';\nimport {\n FieldKind,\n leafCatalogEntry,\n NUMERIC_KINDS,\n SINGLE_VALUE_SHAPES,\n} from '../operatorCatalog';\nimport type { DateRule, Rule } from '../types';\nimport type { ValidationIssue } from '../validate';\n\nconst flatten = (value: unknown): unknown[] =>\n Array.isArray(value) ? value.flatMap(flatten) : [value];\n\n/** A leaf's literal operands, lists flattened. Null when the comparison value is read at\n * evaluation (a `path` or `bind`), unknown at gate time. */\nexport const ruleLiterals = (cond: { value?: unknown }): readonly unknown[] | null =>\n cond.value === undefined ? null : flatten(cond.value);\n\n// A date the compilers can turn into an instant — the seam compileFieldLiteral emits from, so the\n// gate accepts exactly what compiles.\nconst isDate = (v: unknown): boolean => instantMs(v) !== undefined;\n\nconst NUMERIC_STRING = /^-?\\d+(\\.\\d+)?$/;\n\n// What a literal must be to compare against a column of each kind — JSON values only, the\n// ones every rail accepts. Json and Bytes carry no value-taking\n// operator the catalog allows, so any passes.\nconst LITERAL_FIT: Record<FieldKind, { expected: string; fits: (v: unknown) => boolean }> = {\n String: { expected: 'a string', fits: (v) => typeof v === 'string' },\n Enum: { expected: 'a string', fits: (v) => typeof v === 'string' },\n Int: { expected: 'an integer', fits: Number.isSafeInteger },\n // BigInt compares as Int; a stamped digit string fits after coercion, like any Int literal.\n BigInt: { expected: 'an integer', fits: Number.isSafeInteger },\n Float: { expected: 'a number', fits: Number.isFinite },\n // A numeric string is the lossless JSON spelling of a Decimal (what a builder keeps, since\n // Number() would round it); Prisma and Postgres take it as written.\n Decimal: {\n expected: 'a number or a numeric string',\n fits: (v) => Number.isFinite(v) || (typeof v === 'string' && NUMERIC_STRING.test(v)),\n },\n Boolean: { expected: 'a boolean', fits: (v) => typeof v === 'boolean' },\n DateTime: { expected: 'a date', fits: isDate },\n Json: { expected: 'a value', fits: () => true },\n Bytes: { expected: 'a value', fits: () => true },\n};\n\nconst show = (v: unknown): string =>\n typeof v === 'string'\n ? `'${v}'`\n : typeof v === 'object' && v !== null\n ? JSON.stringify(v)\n : String(v);\n\n/**\n * Operator ⇄ kind, then literal ⇄ kind, for a field or date leaf. The kind is the rule's\n * `coerceType` when set, else the declared entry's; unknown means nothing to gate. With a\n * `coerceType` the literal fits as written or after check()'s own coercion — the coercion\n * compileFieldLiteral applies too, so every rail compares the same value.\n */\nexport const leafFitViolations = (\n cond: Rule | DateRule,\n declared: FieldKind | undefined,\n): ValidationIssue[] => {\n const coerceType = 'coerceType' in cond ? cond.coerceType : undefined;\n const kind = coerceType ?? declared;\n if (kind === undefined || kind === FieldKind.Json) return [];\n\n const op = 'operator' in cond ? cond.operator : cond.dateOperator;\n const entry = leafCatalogEntry(cond);\n if (!entry) return [];\n\n const coerced = coerceType !== undefined && coerceType !== declared;\n const label = coerced\n ? `field '${cond.field}' coerced to ${kind}`\n : `${kind} field '${cond.field}'`;\n\n if (!entry.kinds.includes(kind)) {\n return [\n {\n path: cond.field,\n code: 'operator_kind_mismatch',\n message: `operator '${op}' does not apply to ${label} (applies to: ${entry.kinds.join(', ')})`,\n },\n ];\n }\n\n // An offset is arithmetic on the field's kind: a number on a numeric field, a rolling shift\n // on a DateTime.\n if (cond.offset !== undefined) {\n const shiftable =\n 'dateOperator' in cond ? kind === FieldKind.DateTime : NUMERIC_KINDS.includes(kind);\n if (!shiftable)\n return [\n {\n path: cond.field,\n code: 'invalid_offset',\n message: `an offset does not apply to ${label}`,\n },\n ];\n }\n\n // Date-rule values are validateRule's (grammar-level, kind-independent); a regex pattern is\n // not a column value.\n if ('dateOperator' in cond || entry.valueShape === 'none' || entry.valueShape === 'pattern')\n return [];\n\n if (SINGLE_VALUE_SHAPES.includes(entry.valueShape) && Array.isArray(cond.value)) {\n return [\n {\n path: cond.field,\n code: 'invalid_value_shape',\n message: `operator '${op}' compares one value, but ${label} was given a list`,\n },\n ];\n }\n\n const { expected, fits } = LITERAL_FIT[kind];\n // A coercion that refuses its input (a BigInt past ±2^53) is a misfit, reported — never thrown.\n const coercedFits = (v: unknown): boolean => {\n try {\n return fits(applyCoercion(v, kind));\n } catch {\n return false;\n }\n };\n const fitsAsCompiled = (v: unknown): boolean =>\n fits(v) || (coerceType !== undefined && coercedFits(v));\n return (ruleLiterals(cond) ?? [])\n .filter((v) => v !== null && !fitsAsCompiled(v))\n .map((v) => ({\n path: cond.field,\n code: 'invalid_value',\n message: `value ${show(v)} does not fit ${label} (expected ${expected})`,\n }));\n};\n\n/** An array operator iterates its field, so the field must be a list: a to-many relation or\n * bridge, a scalar list, or a Json column (elements undeclared). */\nexport const arrayFitViolation = (\n field: string,\n arrayOperator: string,\n entry: FieldMapEntry,\n): ValidationIssue | null => {\n if (entry.isList === true || isJsonEntry(entry)) return null;\n const message = isRelationEntry(entry)\n ? `arrayOperator '${arrayOperator}' needs a list, but '${field}' is a to-one relation — a single related record; address its fields directly (e.g. '${field}.<field>')`\n : `arrayOperator '${arrayOperator}' needs a list, but '${field}' is a single ${entryKind(entry) ?? entry.type} value`;\n return { path: field, code: 'invalid_array_operator', message };\n};\n","import { ambiguousCondition, relationNotValue, relationsNotValue } from '../errors';\nimport { isExistenceTest } from '../field';\nimport { isRelationEntry } from '../fieldMap/entry.ts';\nimport { entryKind } from '../fieldMap/shape';\nimport type { FieldMapEntry } from '../fieldMap/types';\nimport { INTEGER_KINDS, NUMERIC_KINDS } from '../operatorCatalog';\nimport { parseScopeRef, readScopeRef } from '../scope';\nimport {\n conditionShape,\n elementRefs,\n isLogicalNode,\n valueRefRoles,\n visitCondition,\n} from '../traverse';\nimport type { Condition, DateRule, Rule } from '../types';\nimport { type ValidationIssue, type ValidationResult, validationResult } from '../validate';\nimport { arrayFitViolation, leafFitViolations, ruleLiterals } from './fieldFit.ts';\nimport type { Policy } from './policy.ts';\nimport {\n allowedEnumValues,\n type LensWalk,\n lensPathEnd,\n lensRootScope,\n resolvePolicy,\n stepIntoField,\n type VisitScope,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nconst visit = (\n rule: Condition,\n policy: Policy,\n root: VisitScope,\n issues: ValidationIssue[],\n): void =>\n visitCondition<readonly VisitScope[]>(\n rule,\n (node, scopes) => {\n // A node of two kinds evaluates as one or the other depending on the rail; the gate\n // refuses it rather than vouch for half of it.\n const kind = conditionShape(node as Record<string, unknown>);\n if (kind === null) {\n issues.push({\n path: typeof node.field === 'string' ? node.field : '',\n code: 'ambiguous_condition',\n message: ambiguousCondition().message,\n });\n return false;\n }\n if (isLogicalNode(node)) return;\n const cond = node as unknown as Exclude<Condition, boolean>;\n\n // A bare ref resolves at the current visit; `$`-prefixed refs count scopes up the stack.\n const scopeFor = (ref: string): { scope: VisitScope; field: string } | null => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) {\n issues.push({ path: ref, code: 'scope_out_of_bounds', message: target.outOfBounds });\n return null;\n }\n return { scope: target.scope, field: target.path };\n };\n\n let next: VisitScope = scopes[scopes.length - 1];\n let fieldOk = true;\n let walked: LensWalk | null = null;\n if ('field' in cond && typeof cond.field === 'string' && cond.field !== '') {\n const step = stepIntoField(policy, scopes, cond.field);\n if ('issue' in step) {\n issues.push({ path: cond.field, ...step.issue });\n fieldOk = false;\n } else {\n ({ next, walked } = step);\n }\n }\n const terminalEntry: FieldMapEntry | null = walked?.entry ?? null;\n const terminalFieldName = walked?.terminalFieldName ?? null;\n const terminalIsEnum = walked?.entry.kind === 'enum';\n const terminalEnumType = walked?.entry.type ?? null;\n // Below a Json boundary the value is undeclared, so the column's own allowed set says\n // nothing about it — only gate a path that ends ON the declared entry.\n const terminalAllowedValues =\n walked && walked.jsonSubPath.length === 0\n ? allowedEnumValues(walked.terminalEffect, walked.terminalFieldName)\n : null;\n\n // Gate every value-side ref — the RHS `path`, an offset `{ path }`, each magnitude `{ path }` —\n // the same way the LHS `field` is gated; otherwise a rule can reference outside the lens\n // through its comparison value. Prefixed refs resolve at the scope they name; bare refs are\n // root/context refs (resolve at the lens anchor). Inside an open scope a prefixed ref points\n // into the JSON value, so there is nothing to resolve — a root ref is still gated. An amount\n // reads a number, and a calendar unit's amount a whole number.\n for (const { ref, role } of valueRefRoles(cond as Record<string, unknown>)) {\n const target = parseScopeRef(ref)\n ? scopeFor(ref)\n : { scope: lensRootScope(policy), field: ref };\n if (!target || target.scope.open) continue;\n const walked = lensPathEnd(policy, target.scope, target.field);\n if (!walked) {\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message:\n role === 'value'\n ? 'path (comparison ref) does not resolve through the narrowed lens'\n : 'offset or magnitude ref does not resolve through the narrowed lens',\n });\n continue;\n }\n // A ref reads a column; a relation is rows, which the grant and the field's picks don't\n // scope.\n if (isRelationEntry(walked.entry)) {\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: 'a value ref reads a column, not a relation',\n });\n continue;\n }\n const kind = entryKind(walked.entry);\n if (role === 'value' || role === 'shift' || kind === undefined) continue;\n const fits = role === 'whole' ? INTEGER_KINDS.includes(kind) : NUMERIC_KINDS.includes(kind);\n if (!fits)\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: `${role === 'whole' ? 'a calendar unit reads a whole number' : 'an offset or magnitude reads a number'}, not ${kind}`,\n });\n }\n\n if (!fieldOk) return false;\n\n // An array operator iterates its field. On a non-list the node cannot evaluate, and its\n // `condition`/`filter` have no element scope to resolve against — report it and stop.\n if ('arrayOperator' in cond && typeof cond.field === 'string' && terminalEntry) {\n const misfit = arrayFitViolation(cond.field, cond.arrayOperator, terminalEntry);\n if (misfit) {\n issues.push(misfit);\n return false;\n }\n }\n\n // A relation is rows, not a value: a to-many one takes an array operator, a to-one one\n // exists or doesn't.\n if (\n terminalEntry &&\n isRelationEntry(terminalEntry) &&\n (kind === 'field' || kind === 'date') &&\n (terminalEntry.isList || !isExistenceTest(cond as Rule))\n ) {\n const field = (cond as Rule).field;\n issues.push({\n path: field,\n code: 'operator_kind_mismatch',\n message: (terminalEntry.isList ? relationsNotValue(field) : relationNotValue(field))\n .message,\n });\n return false;\n }\n\n // Operator and literal against the field's kind (an aggregate's operator compares the\n // aggregate, not the field).\n // A scalar list's elements carry the kind (a stamp names it), but its operators test the list.\n if (!terminalEntry?.isList && (kind === 'field' || kind === 'date')) {\n issues.push(\n ...leafFitViolations(\n cond as Rule | DateRule,\n terminalEntry ? entryKind(terminalEntry) : undefined,\n ),\n );\n }\n\n // The fields a relation node orders or aggregates by read its elements.\n if (!next.open)\n for (const ref of elementRefs(cond as Record<string, unknown>)) {\n if (ref !== '' && !lensPathEnd(policy, next, ref))\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: 'an orderBy or aggregate field does not resolve through the narrowed lens',\n });\n }\n\n // Value-set validation for leaf rules. Fires whenever the field carries an\n // allowed set — an enum (registry/narrowed) or any other kind with explicit\n // `values`.\n if (terminalAllowedValues && 'operator' in cond && terminalFieldName) {\n const literals = ruleLiterals(cond as { value?: unknown; path?: unknown });\n if (literals) {\n const allowed = new Set(terminalAllowedValues);\n const scope = terminalIsEnum\n ? `enum '${terminalEnumType}'`\n : `field '${terminalFieldName}'`;\n for (const v of literals) {\n if (typeof v === 'string' && !allowed.has(v)) {\n issues.push({\n path: terminalFieldName,\n code: 'value_not_allowed',\n message: `value '${v}' is not in the allowed set for ${scope} (allowed: ${[...allowed].join(', ')})`,\n });\n }\n }\n }\n }\n\n return [...scopes, next];\n },\n [root],\n );\n\n/**\n * Gate a condition whose `field` refs are relative to the visit (mapName, modelName, relPath)\n * of `policy` — the shape of a narrowing `where` anchored at a relation node or a model\n * default. The policy keeps its real anchor, so a bare `path` ref still resolves at the lens\n * root (check()'s root context) and a `$.` ref at the visit. Internal to the lens layer.\n */\nexport const checkConditionAtVisit = (\n cond: Condition,\n policy: Policy,\n mapName: string,\n modelName: string,\n relPath: readonly string[],\n): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n visit(cond, policy, { mapName, modelName, relPath, open: false }, issues);\n return issues;\n};\n\n/** Gate a rule against a lens: every field and value-side ref resolves through it, and every\n * operator, value and amount fits the field it reaches. */\nexport const validateRuleInLens = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): ValidationResult => {\n const policy = resolvePolicy(lensOrNarrowing);\n return validationResult(\n checkConditionAtVisit(rule, policy, policy.lens.mapName, policy.lens.model, []),\n );\n};\n","import { ALL_TARGETS, type RuleTarget } from '../operatorCatalog';\nimport { isLogicalNode, visitCondition } from '../traverse';\nimport type { Condition } from '../types';\nimport { type ValidationIssue, validateRule } from '../validate';\nimport type { Policy } from './policy.ts';\nimport { lensRootScope, resolvePolicy, stepIntoField, type VisitScope } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\nimport { validateRuleInLens } from './validateRuleInLens.ts';\n\nexport type RuleDescription = {\n sources: string[];\n bridgesCrossed: boolean;\n supportedTargets: RuleTarget[];\n /** What the lens refuses in the rule — validateRuleInLens's issues. */\n errors: ValidationIssue[];\n};\n\ntype Acc = {\n policy: Policy;\n sources: Set<string>;\n bridgesCrossed: boolean;\n};\n\nconst visit = (rule: Condition, acc: Acc): void =>\n visitCondition<readonly VisitScope[]>(\n rule,\n (node, scopes) => {\n acc.sources.add(scopes[scopes.length - 1].mapName);\n if (isLogicalNode(node)) return;\n if (typeof node.field !== 'string' || node.field === '') return;\n const step = stepIntoField(acc.policy, scopes, node.field);\n if ('issue' in step) return false;\n if (step.walked) {\n acc.sources.add(step.walked.mapName);\n if (step.walked.entry.kind === 'bridge' || step.walked.mapName !== step.from.mapName)\n acc.bridgesCrossed = true;\n }\n // `filter` and `condition` are both evaluated against the descended target.\n return [...scopes, step.next];\n },\n [lensRootScope(acc.policy)],\n );\n\nexport const describeRule = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): RuleDescription => {\n const policy = resolvePolicy(lensOrNarrowing);\n const acc: Acc = { policy, sources: new Set(), bridgesCrossed: false };\n visit(rule, acc);\n // A target takes the rule when validateRule passes it there; a bridge joins only in memory.\n return {\n sources: [...acc.sources].sort(),\n bridgesCrossed: acc.bridgesCrossed,\n supportedTargets: ALL_TARGETS.filter(\n (target) => (target === 'check' || !acc.bridgesCrossed) && validateRule(rule, { target }).ok,\n ),\n errors: validateRuleInLens(rule, lensOrNarrowing).errors,\n };\n};\n","import { leafCatalogEntry, ValueShape } from '../operatorCatalog';\nimport { readScopeRef } from '../scope';\nimport {\n type ConditionNode,\n isLogicalNode,\n isRelationNode,\n leafSources,\n visitCondition,\n} from '../traverse.ts';\nimport type { Condition, RuleValue } from '../types.ts';\nimport { ruleLiterals } from './fieldFit.ts';\nimport { lensPathEnd, resolvePolicy } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * The values one rule compares at one declared source — keyed the way `projectPaths`\n * keys a source (`path` + `field`), so the caller can join it back to the source's\n * model without spelling a path of its own. A `mapDefaults`-declared source resolves\n * wherever its model appears, so `path` may name a relation chain the narrowing never\n * spelled under `root.relations`; the dotted format is the same.\n */\nexport type RuleSourceDescription = {\n path: string;\n mapName: string;\n model: string;\n field: string;\n /** Every literal a leaf at this source named; list operators flattened, deduped by content. */\n values: RuleValue[];\n /**\n * The set of values cannot be enumerated from literals: a leaf read a value at evaluation\n * (a `path` / `bind` on its comparison value, an offset or an amount) or moved it by an offset, used an operator that describes values without naming them\n * (substring, pattern, range, date window), or used an operator the catalog does not\n * know. A caller deciding anything from `values` must fail closed.\n */\n dynamic: boolean;\n};\n\n/** Shapes whose `value` IS the named value(s): a literal, an ordered literal, a list, a\n * day list, or a date literal / point expression. Everything else describes values\n * without enumerating them. */\nconst ENUMERABLE_SHAPES = new Set<string>([\n ValueShape.scalar,\n ValueShape.ordered,\n ValueShape.array,\n ValueShape.dayList,\n ValueShape.dateValue,\n]);\n\n/** Shapes whose `value` is not about the field's values at all (a flag, a cardinality). */\nconst VALUELESS_SHAPES = new Set<string>([ValueShape.none, ValueShape.count]);\n\ntype Contribution = { values: RuleValue[]; dynamic: boolean };\n\nconst contribution = (node: ConditionNode): Contribution => {\n // A value read at evaluation — a path or bind anywhere on the leaf, its comparison value, an\n // offset or an amount — or an offset moving a literal: the literal doesn't name the value.\n if (\n node.offset !== undefined ||\n leafSources(node).some(({ source }) => source.value === undefined)\n )\n return { values: [], dynamic: true };\n const entry = leafCatalogEntry(node);\n if (!entry) return { values: [], dynamic: true };\n if (VALUELESS_SHAPES.has(entry.valueShape)) return { values: [], dynamic: false };\n if (!ENUMERABLE_SHAPES.has(entry.valueShape)) return { values: [], dynamic: true };\n if (!('value' in node)) return { values: [], dynamic: false };\n return { values: (ruleLiterals(node) ?? []) as RuleValue[], dynamic: false };\n};\n\nconst dedupeKey = (value: RuleValue): string => {\n if (value instanceof Date) return `d:${+value}`;\n if (value instanceof RegExp) return `r:${value}`;\n if (typeof value === 'object' && value !== null) return `j:${JSON.stringify(value)}`;\n return `p:${typeof value}:${String(value)}`;\n};\n\n/**\n * Which values a rule names at each source the lens declares — the lens owns the\n * vocabulary, so it answers questions about it; callers never spell a path. A leaf reaches a\n * source by its absolute path through the lens: nested (`{ field: 'orders', arrayOperator,\n * condition: { field: 'sku' } }`) and dotted (`{ field: 'orders.sku' }`) spellings are one path,\n * resolved by `lensPathEnd` — visibility, `mapDefaults`, and the Json boundary all apply, so a\n * source declared in `mapDefaults` answers wherever its model appears. Quantifier-blind on\n * purpose — a `none` relation names its value as much as an `any` one, `notIn` as much as `in` —\n * but shape-aware via the operator catalog: only literal-naming shapes contribute `values`;\n * substring / pattern / range / window operators, and operators the catalog does not know, mark\n * the source `dynamic` instead of inventing values. A relation node's own comparison (an\n * aggregate's threshold, an array `count`) belongs to the node, not to a source. Paths invisible\n * under the lens, unmapped segments, and sub-paths beneath a Json column are silent.\n */\nexport const describeRuleSources = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): RuleSourceDescription[] => {\n const policy = resolvePolicy(lensOrNarrowing);\n const root = policy.lens.model;\n const out = new Map<string, RuleSourceDescription>();\n // Each entry's literal keys, so a large `in` list dedupes in linear time.\n const seenKeys = new Map<string, Set<string>>();\n\n const record = (segments: string[], node: ConditionNode): void => {\n if (segments.length === 0) return;\n const resolved = lensPathEnd(\n policy,\n { mapName: policy.lens.mapName, modelName: root, relPath: [] },\n segments.join('.'),\n );\n if (!resolved || resolved.jsonSubPath.length > 0) return;\n const { mapName, modelName, relPath, terminalEffect, terminalFieldName } = resolved;\n if (!terminalEffect.sources.has(terminalFieldName)) return;\n\n const path = [root, ...relPath].join('.');\n const key = `${path}|${terminalFieldName}`;\n let entry = out.get(key);\n if (!entry) {\n entry = {\n path,\n mapName,\n model: modelName,\n field: terminalFieldName,\n values: [],\n dynamic: false,\n };\n out.set(key, entry);\n }\n const found = contribution(node);\n if (found.dynamic) entry.dynamic = true;\n const seen = seenKeys.get(key) ?? new Set<string>();\n seenKeys.set(key, seen);\n for (const literal of found.values) {\n const literalKey = dedupeKey(literal);\n if (seen.has(literalKey)) continue;\n seen.add(literalKey);\n entry.values.push(literal);\n }\n };\n\n // The scope is the stack of absolute anchors, innermost last; a `$`-prefixed field anchors at\n // the scope it names. An out-of-bounds ref anchors nowhere and is silent.\n const anchorOf = (field: string, prefixes: readonly string[][]): string[] | undefined => {\n const target = readScopeRef(field, prefixes);\n if ('outOfBounds' in target) return undefined;\n return [...target.scope, ...target.path.split('.')];\n };\n visitCondition<readonly string[][]>(\n rule,\n (node, prefixes) => {\n if (isLogicalNode(node)) return;\n const anchor =\n typeof node.field === 'string' ? anchorOf(node.field, prefixes) : prefixes.at(-1);\n if (!anchor) return false;\n if (!isRelationNode(node) && typeof node.field === 'string') record(anchor, node);\n return [...prefixes, anchor];\n },\n [[]],\n );\n return [...out.values()];\n};\n","import type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { modelOf } from '../own';\n\nconst findReverseRelation = (\n map: FieldMap,\n targetModel: string,\n currentModel: string,\n relationName?: string,\n): FieldMapEntry | null => {\n const targetEntry = modelOf(map, targetModel);\n if (!targetEntry) return null;\n\n for (const fieldDef of Object.values(targetEntry.fields)) {\n if (\n fieldDef.kind === 'object' &&\n fieldDef.type === currentModel &&\n (fieldDef.fromFields?.length ?? 0) > 0 &&\n (fieldDef.toFields?.length ?? 0) > 0 &&\n (relationName === undefined || fieldDef.relationName === relationName)\n ) {\n return fieldDef;\n }\n }\n return null;\n};\n\n/**\n * The column pairs that link a model to the target of one of its relations — `here` on the\n * model, `there` on the target — from the relation's own FK (forward) or its reverse side\n * (back-relation). Null when the map doesn't say. A composite FK has several pairs.\n */\nexport const relationKeys = (\n map: FieldMap,\n model: string,\n entry: FieldMapEntry,\n): { here: string; there: string }[] | null => {\n if (entry.fromFields?.length)\n return entry.fromFields.map((from, i) => ({ here: from, there: entry.toFields?.[i] ?? 'id' }));\n const reverse = findReverseRelation(map, entry.type, model, entry.relationName);\n if (!reverse?.fromFields?.length) return null;\n return reverse.fromFields.map((from, i) => ({\n here: reverse.toFields?.[i] ?? 'id',\n there: from,\n }));\n};\n\n/** The relation on `entry`'s target that points back at `model` — the same relation seen from\n * the other side (matched by `relationName` when the map gives one). Null when the map doesn't\n * declare it, or several fields could be it. */\nexport const inverseRelation = (\n map: FieldMap,\n model: string,\n field: string,\n entry: FieldMapEntry,\n): { field: string; entry: FieldMapEntry } | null => {\n // Without a relation name the other side can't be told apart from another relation between the\n // same models: none, rather than a guess (a grant carried through it would scope wrong rows).\n if (entry.relationName === undefined) return null;\n const candidates = Object.entries(modelOf(map, entry.type)?.fields ?? {}).filter(\n ([name, other]) =>\n other.kind === 'object' &&\n other.type === model &&\n other.relationName === entry.relationName &&\n !(entry.type === model && name === field),\n );\n return candidates.length === 1 ? { field: candidates[0][0], entry: candidates[0][1] } : null;\n};\n","import type { FieldMapEntry, ModelEntry, SourceOption } from '../fieldMap/types';\nimport { type MapVisit, relationTargetOf } from '../fieldMap/walk.ts';\nimport { own } from '../own';\nimport type { Condition } from '../types.ts';\nimport {\n isFieldVisible,\n type Policy,\n resolvePolicy,\n resolveVisit,\n sourceReadsVisible,\n type VisitEffect,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nexport type ProjectedVisit = {\n mapName: string;\n model: string;\n fields: Record<string, FieldMapEntry>;\n whereClauses: Condition[];\n /** Per-field source eligibility wheres, composed across layers (general + path). */\n sources: Record<string, Condition[]>;\n /** Per-field display label for a sourced field (from a SourceSpec's `label`): a sibling\n * column or a dotted to-one path. */\n sourceLabels: Record<string, string>;\n /** Per-field option-partition axes for a sourced field (from a SourceSpec's `groupBy`). */\n sourceGroupBys: Record<string, string[]>;\n};\n\n/** Each declared path's projected visit, keyed by dotted path from the lens model. */\nexport type PathProjection = Record<string, ProjectedVisit>;\n\n/**\n * The materialized option set for one sourced field — the fetched companion to a\n * serializable lens. Its `options` are `{ value, label? }` pairs (the standard\n * `<select>` shape); it feeds both projections: `projectPaths` keys by\n * `path`+`field` (exact), `projectModels` by `mapName`+`model`+`field` (union).\n */\nexport type SourceValues = {\n path: string;\n mapName: string;\n model: string;\n field: string;\n options: readonly SourceOption[];\n};\n\nexport type ProjectLensOptions = { sourceValues?: readonly SourceValues[] };\n\n/**\n * One visit's fields as the lens exposes them: the visible fields, a value-gated field carrying\n * its allowed `values`, fetched source `options` attached, and a grouped source's `groupBy` axes.\n * Both projections build their fields through it.\n */\nexport const projectFields = (\n policy: Policy,\n effect: VisitEffect,\n at: MapVisit,\n model: ModelEntry,\n fetched: (field: string) => readonly SourceOption[] | undefined,\n): Record<string, FieldMapEntry> => {\n const fields: Record<string, FieldMapEntry> = {};\n for (const [fieldName, entry] of Object.entries(model.fields)) {\n if (!isFieldVisible(effect, fieldName)) continue;\n const values = effect.enumValuesByField.get(fieldName);\n // Options never offer a value the lens disallows, whatever was fetched.\n const options = fetched(fieldName)?.filter(\n (o) => values === undefined || values.includes(o.value),\n );\n // Axes a layer hides drop, as they do from the visit's sourceGroupBys.\n const groupBy = sourceReadsVisible(policy, effect, at, fieldName, 'groupBy')\n ? effect.sourceGroupBys.get(fieldName)\n : undefined;\n fields[fieldName] = {\n ...entry,\n ...(values !== undefined && { values }),\n ...(options !== undefined && { options }),\n ...(groupBy !== undefined && { groupBy }),\n };\n }\n return fields;\n};\n\nexport const projectPaths = (\n lensOrNarrowing: Lens | LensNarrowing,\n opts: ProjectLensOptions = {},\n): PathProjection => {\n const policy = resolvePolicy(lensOrNarrowing);\n const out: PathProjection = {};\n\n const fetchedByPathField = new Map<string, readonly SourceOption[]>();\n for (const sv of opts.sourceValues ?? []) {\n fetchedByPathField.set(`${sv.path}|${sv.field}`, sv.options);\n }\n\n const visit = (\n mapName: string,\n modelName: string,\n relPath: string[],\n dottedPath: string,\n ): void => {\n if (Object.hasOwn(out, dottedPath)) return;\n const model = own(own(policy.lens.maps, mapName)?.models ?? {}, modelName);\n if (!model) return;\n\n const effect = resolveVisit(policy, mapName, modelName, relPath);\n\n // A sourced field's fetched pairs win; otherwise a value-gated field surfaces its resolved\n // allowed-set as options, so every selectable field exposes `options`.\n const at = { mapName, modelName, relPath };\n const fields = projectFields(policy, effect, at, model, (field) => {\n const fetched = fetchedByPathField.get(`${dottedPath}|${field}`);\n const values = effect.enumValuesByField.get(field);\n return fetched ?? values?.map((value) => ({ value, label: value }));\n });\n\n const sources: Record<string, Condition[]> = {};\n for (const [fieldName, clauses] of effect.sources) {\n if (isFieldVisible(effect, fieldName)) sources[fieldName] = clauses;\n }\n\n const sourceLabels: Record<string, string> = {};\n for (const [fieldName, label] of effect.sourceLabels) {\n if (\n isFieldVisible(effect, fieldName) &&\n sourceReadsVisible(policy, effect, at, fieldName, 'label')\n )\n sourceLabels[fieldName] = label;\n }\n\n const sourceGroupBys: Record<string, string[]> = {};\n for (const [fieldName, groupBy] of effect.sourceGroupBys) {\n if (\n isFieldVisible(effect, fieldName) &&\n sourceReadsVisible(policy, effect, at, fieldName, 'groupBy')\n )\n sourceGroupBys[fieldName] = groupBy;\n }\n\n out[dottedPath] = {\n mapName,\n model: modelName,\n fields,\n whereClauses: effect.whereClauses,\n sources,\n sourceLabels,\n sourceGroupBys,\n };\n\n for (const relField of effect.relations.keys()) {\n // A relation this visit hides is not projected, as projectModels skips it.\n if (!isFieldVisible(effect, relField)) continue;\n const entry = own(model.fields, relField);\n if (!entry) continue;\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n visit(target.mapName, target.modelName, [...relPath, relField], `${dottedPath}.${relField}`);\n }\n };\n\n visit(policy.lens.mapName, policy.lens.model, [], policy.lens.model);\n return out;\n};\n","import type { SourceOption } from '../fieldMap/types';\nimport { fieldOf, own } from '../own';\nimport { readOwnPath } from '../scope';\nimport { inverseRelation } from '../toPrisma/relationUtils';\nimport { allOf, visitCondition } from '../traverse';\nimport type { Condition, Row } from '../types';\nimport { prefixConditionFields } from './narrowRule.ts';\nimport { type Policy, relationHops, resolvePolicy, resolveVisit } from './policy.ts';\nimport type { ProjectedVisit } from './projectPaths.ts';\nimport { projectPaths } from './projectPaths.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * Fold the traversal guards one dotted path picks up: every traversed model's\n * effective narrowing `where` (tenancy/soft-delete) — declared relation nodes AND\n * mapDefaults, composed across all layers via `resolveVisit` — re-rooted onto the\n * sourced model, the same hop-where fold `narrowRule` performs for rule paths. The\n * compile always joins every hop the path names, so every hop must carry its guard\n * whether or not the narrowing declares it.\n *\n * `strict` (a materialization path — a groupBy axis or a dotted label; its value\n * names which): an unresolvable hop is fail-closed — throw.\n * Lenient (`null`, where-clause field paths): stop at the first non-relation segment\n * (a plain column, or a Json column with a sub-path tail) — no join past it exists.\n * `seen` dedups hops shared across paths: one guard fold per traversed node.\n */\nconst foldPathGuards = (\n policy: Policy,\n mapName: string,\n modelName: string,\n baseRelPath: readonly string[],\n dotted: string,\n strict: 'groupBy' | 'label' | null,\n seen: Set<string>,\n out: Condition[],\n): void => {\n const segments = dotted.split('.');\n // The last segment is the column; guards live on the traversed models.\n const { hops } = relationHops(\n policy.lens.maps,\n { mapName, modelName, relPath: baseRelPath },\n dotted,\n );\n const crossed = hops.filter((_, i) => i < segments.length - 1);\n if (strict && crossed.length < segments.length - 1) {\n const hop = segments[crossed.length];\n const on = crossed.at(-1)?.model ?? modelName;\n throw new Error(\n `${strict} '${dotted}': hop '${hop}' is not a resolvable relation on '${on}' — cannot guard its join`,\n );\n }\n for (const hop of crossed) {\n const hopKey = hop.relPath.join('.');\n if (seen.has(hopKey)) continue;\n seen.add(hopKey);\n const effect = resolveVisit(policy, hop.map, hop.model, hop.relPath);\n // A to-many hop has no single row to AND its grant against: fail closed, as narrowRule does.\n if (hop.isList && effect.whereClauses.length)\n throw new Error(\n `source path '${dotted}': cannot enforce the grant on to-many relation '${hop.prefix}' in a dotted path`,\n );\n for (const where of effect.whereClauses) out.push(prefixConditionFields(where, hop.prefix));\n }\n};\n\n/** Every dotted `field` a condition references. Relation nodes contribute their own\n * anchor `field`; their nested conditions are element-relative and compile inside the\n * relation filter, not as new joins from this model, so descent stops there. */\nconst collectFieldPaths = (condition: Condition): string[] => {\n const out: string[] = [];\n visitCondition(condition, (node) => {\n if (typeof node.field === 'string') out.push(node.field);\n return false;\n });\n return out;\n};\n\n/**\n * The composed traversal guards for one source: guards for every groupBy axis and\n * for a dotted label path (both strict — they name joins the select ships), and for\n * every relation path its `where` clauses reference (lenient) — the where ships\n * those joins just as surely as the group select does. Hops are folded once each\n * across all paths, so a label sharing a prefix with an axis costs no extra guard.\n */\nconst traversalGuards = (\n policy: Policy,\n mapName: string,\n modelName: string,\n baseRelPath: readonly string[],\n axes: readonly string[],\n whereClauses: readonly Condition[],\n label?: string,\n): Condition[] => {\n const out: Condition[] = [];\n const seen = new Set<string>();\n for (const axis of axes)\n foldPathGuards(policy, mapName, modelName, baseRelPath, axis, 'groupBy', seen, out);\n if (label?.includes('.'))\n foldPathGuards(policy, mapName, modelName, baseRelPath, label, 'label', seen, out);\n for (const clause of whereClauses) {\n for (const path of collectFieldPaths(clause)) {\n if (path.includes('.'))\n foldPathGuards(policy, mapName, modelName, baseRelPath, path, null, seen, out);\n }\n }\n return out;\n};\n\n/** Walk a dotted to-one path through nested row objects; undefined when unreachable.\n * Serves both materialization paths a source declares: a groupBy axis and a dotted label. */\nexport const groupAtPath = (row: Row, path: string): string | undefined => {\n const value = readOwnPath(row, path);\n return value == null || typeof value === 'object' ? undefined : String(value);\n};\n\n/** Resolve every axis for a row — all-or-nothing: any unreachable axis leaves the\n * option ungrouped. A partial key would make partition pins unpredictable. */\nexport const groupsAtPaths = (row: Row, paths: readonly string[]): string[] | undefined => {\n const out: string[] = [];\n for (const path of paths) {\n const value = groupAtPath(row, path);\n if (value === undefined) return undefined;\n out.push(value);\n }\n return out;\n};\n\n/** Dedup key — options are unique per (groups, value), not per value. */\nexport const optionKey = (groups: readonly string[] | undefined, value: string): string =>\n JSON.stringify([groups ?? null, value]);\n\n/** Merge one occurrence into the accumulator; the first non-null label wins. */\nconst accumulateOption = (\n byKey: Map<string, SourceOption>,\n value: string,\n label: string | undefined,\n groups: string[] | undefined,\n): void => {\n const key = optionKey(groups, value);\n const existing = byKey.get(key);\n if (existing === undefined) {\n byKey.set(key, {\n value,\n ...(label !== undefined ? { label } : {}),\n ...(groups !== undefined ? { groups } : {}),\n });\n } else if (existing.label === undefined && label !== undefined) {\n byKey.set(key, { ...existing, label });\n }\n};\n\n/** One fetched row's options: each non-null scalar value of `field` (one per element of a\n * scalar list), carrying the row's label and groups. */\nexport const accumulateRow = (\n byKey: Map<string, SourceOption>,\n row: Row,\n field: string,\n label: unknown,\n groups: string[] | undefined,\n): void => {\n const raw = readOwnPath(row, field);\n const rowLabel = label == null ? undefined : String(label);\n for (const value of Array.isArray(raw) ? raw : [raw]) {\n if (value == null || typeof value === 'object') continue;\n accumulateOption(byKey, String(value), rowLabel, groups);\n }\n};\n\n// Fixed locale: host-locale sorting would make option order machine-dependent.\n// Ungrouped options are their own leading tier — an empty-string DB label is a\n// real group and must never interleave with \"no group\". Grouped options order by\n// their axes lexicographically, then label/value.\nexport const sortOptions = (byKey: Map<string, SourceOption>): SourceOption[] =>\n [...byKey.values()].sort((a, b) => {\n const tier = (a.groups === undefined ? 0 : 1) - (b.groups === undefined ? 0 : 1);\n if (tier !== 0) return tier;\n const ga = a.groups ?? [];\n const gb = b.groups ?? [];\n for (let i = 0; i < Math.max(ga.length, gb.length); i++) {\n const cmp = (ga[i] ?? '').localeCompare(gb[i] ?? '', 'en', { numeric: true });\n if (cmp !== 0) return cmp;\n }\n return (a.label ?? a.value).localeCompare(b.label ?? b.value, 'en', { numeric: true });\n });\n\n/** One sourced field to materialize: where it sits, its label and axes, and its eligibility —\n * its source where(s), the guards of every relation they or the label / axes cross, and, for a\n * value-gated field, the values the lens allows. */\nexport type SourcePlan = {\n path: string;\n visit: ProjectedVisit;\n field: string;\n label?: string;\n groupBy?: string[];\n eligibility: Condition[];\n};\n\n/** Every sourced field the lens projects, planned once for both materializers. */\n/**\n * The grants of every visit above a source's own, as conditions on the source's rows: each\n * ancestor's `where` carried down through the inverse of the hop below it — a to-one inverse by\n * prefixing its fields, a to-many one through `any`. An option list never offers what the rows\n * under the grant don't hold, so a grant no inverse can carry (none declared, a bridge, a path\n * ref) offers nothing.\n */\nconst ancestorGrants = (policy: Policy, relPath: readonly string[]): Condition[] => {\n if (relPath.length === 0) return [];\n const root = { mapName: policy.lens.mapName, modelName: policy.lens.model, relPath: [] };\n const { hops, end } = relationHops(policy.lens.maps, root, relPath.join('.'));\n if (!end) return [false];\n const visits = [root, ...hops.map((hop) => ({ mapName: hop.map, modelName: hop.model }))];\n let carried: Condition | null = null;\n for (let level = 0; level < relPath.length; level++) {\n const at = visits[level];\n const declared = resolveVisit(\n policy,\n at.mapName,\n at.modelName,\n relPath.slice(0, level),\n ).whereClauses;\n const grants = carried === null ? declared : [...declared, carried];\n if (grants.length === 0) {\n carried = null;\n continue;\n }\n const map = own(policy.lens.maps, at.mapName);\n const entry = map && fieldOf(map, at.modelName, relPath[level]);\n const inverse =\n map && entry && entry.kind === 'object' && visits[level + 1].mapName === at.mapName\n ? inverseRelation(map, at.modelName, relPath[level], entry)\n : null;\n if (!inverse) return [false];\n const here = allOf(grants);\n try {\n carried = inverse.entry.isList\n ? ({ field: inverse.field, arrayOperator: 'any', condition: here } as Condition)\n : allOf([\n { field: inverse.field, operator: 'exists' } as Condition,\n prefixConditionFields(here, inverse.field),\n ]);\n } catch {\n return [false];\n }\n }\n return carried === null ? [] : [carried];\n};\n\nexport const sourcePlans = (lensOrNarrowing: Lens | LensNarrowing): SourcePlan[] => {\n const policy = resolvePolicy(lensOrNarrowing);\n return Object.entries(projectPaths(lensOrNarrowing)).flatMap(([path, visit]) =>\n Object.entries(visit.sources).map(([field, sourceClauses]) => {\n const label = own(visit.sourceLabels, field);\n const groupBy = own(visit.sourceGroupBys, field);\n const relPath = path.split('.').slice(1);\n const guards = traversalGuards(\n policy,\n visit.mapName,\n visit.model,\n relPath,\n groupBy ?? [],\n sourceClauses,\n label,\n );\n const allowed = own(visit.fields, field)?.values;\n const above = ancestorGrants(policy, relPath);\n return {\n path,\n visit,\n field,\n ...(label !== undefined && { label }),\n ...(groupBy !== undefined && { groupBy }),\n eligibility: [\n ...above,\n ...sourceClauses,\n ...guards,\n ...(allowed ? [{ field, operator: 'in', value: [...allowed] } as Condition] : []),\n ],\n };\n }),\n );\n};\n","import type { SourceOption } from '../fieldMap/types';\nimport type { Row } from '../types';\nimport type { SourceValues } from './projectPaths.ts';\nimport { accumulateRow, groupAtPath, groupsAtPaths, sortOptions } from './sourceOptions.ts';\nimport type { SourceQuery } from './toSourceQueries.ts';\n\n/** Which executor produced the rows — the caller always knows; never guessed. */\nexport type SourceRowShape = 'prisma' | 'sql';\n\n/**\n * Materialize one compiled `SourceQuery`'s fetched rows into its `SourceValues` —\n * the executor-side counterpart of `toSourceQueries`, so apps never hand-map rows.\n * `rowShape` names the wire format: prisma rows (default) nest each `groupBy` axis\n * (and a dotted `label`) as related objects; sql rows carry them flat under the\n * statement's `__group_i` / `__label` aliases. Grouped queries fetch without\n * DISTINCT, so dedup per (groups, value) happens here.\n */\n/** `rowShape`: how the rows came back — nested Prisma rows (the default) or flat SQL rows. */\nexport type MaterializeSourceQueryOptions = { rowShape?: SourceRowShape };\n\nexport const materializeSourceQuery = (\n query: SourceQuery,\n rows: readonly Row[],\n opts: MaterializeSourceQueryOptions = {},\n): SourceValues => {\n const rowShape = opts.rowShape ?? 'prisma';\n const byKey = new Map<string, SourceOption>();\n for (const row of rows) {\n // A dotted label and the axes ride the two wire formats: nested in prisma rows, flat\n // under the statement's `__label` / `__group_i` aliases in sql rows.\n const flat = rowShape === 'sql';\n accumulateRow(\n byKey,\n row,\n query.field,\n query.label === undefined\n ? undefined\n : flat && query.label.includes('.')\n ? row.__label\n : groupAtPath(row, query.label),\n query.groupBy === undefined\n ? undefined\n : groupsAtPaths(row, flat ? query.groupBy.map((_, i) => `__group_${i}`) : query.groupBy),\n );\n }\n return {\n path: query.path,\n mapName: query.mapName,\n model: query.model,\n field: query.field,\n options: sortOptions(byKey),\n };\n};\n","import { type CheckOptions, check } from '../check.ts';\nimport type { SourceOption } from '../fieldMap/types';\nimport { readOwnPath } from '../scope';\nimport { allOf } from '../traverse';\nimport type { Row } from '../types';\nimport type { SourceValues } from './projectPaths.ts';\nimport {\n accumulateRow,\n groupAtPath,\n groupsAtPaths,\n sortOptions,\n sourcePlans,\n} from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Rows anchored at a projection path: segments after the root model name descend\n// relations, flattening to-many arrays (mirrors the joins a SourceQuery would emit).\nconst rowsAtPath = (rows: readonly Row[], path: string): Row[] => {\n let current: Row[] = [...rows];\n for (const segment of path.split('.').slice(1)) {\n const next: Row[] = [];\n for (const row of current) {\n const value = readOwnPath(row, segment);\n if (Array.isArray(value)) next.push(...(value as Row[]));\n else if (value != null) next.push(value as Row);\n }\n current = next;\n }\n return current;\n};\n\n/**\n * Materialize each sourced field's option set from an already-fetched collection —\n * the in-memory executor of `sources` declarations, alongside `toSourceQueries`\n * (which compiles the same declarations to DISTINCT queries for a DB). Rows are\n * the collection fetched under the lens (relations inline). Each row must meet the field's\n * eligibility as `toSourceQueries` composes it — its source `where`, the grants above it, the\n * guards of the relations it crosses and any allowed values — evaluated with `check()`\n * (`options` feeds `{bind}` clauses). Scalar-list fields contribute one\n * option per element, labels take the first non-null value of the label column\n * (a sibling, or a dotted to-one path read through the nested rows), and sorting is\n * numeric-aware in a fixed locale. Feed the result to `projectLens` as `{ sourceValues }`.\n */\nexport const materializeSources = (\n lensOrNarrowing: Lens | LensNarrowing,\n rows: readonly Row[],\n options?: CheckOptions,\n): SourceValues[] =>\n sourcePlans(lensOrNarrowing).map(({ path, visit, field, label, groupBy, eligibility }) => {\n const where = allOf(eligibility);\n const byKey = new Map<string, SourceOption>();\n for (const row of rowsAtPath(rows, path)) {\n if (check(where, row, options) !== true) continue;\n // A dotted label reads through the same nested rows a groupBy axis does; an\n // unreachable axis (null hop) leaves the option ungrouped, never partial.\n accumulateRow(\n byKey,\n row,\n field,\n label === undefined ? undefined : groupAtPath(row, label),\n groupBy === undefined ? undefined : groupsAtPaths(row, groupBy),\n );\n }\n return {\n path,\n mapName: visit.mapName,\n model: visit.model,\n field,\n options: sortOptions(byKey),\n };\n });\n","import { declaredEnumValues, isRelationEntry } from '../fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { relationTargetOf } from '../fieldMap/walk.ts';\nimport { fieldOf, modelOf, own } from '../own';\nimport type { Condition } from '../types.ts';\nimport {\n throwIfInvalid,\n type ValidationIssue,\n type ValidationResult,\n validationResult,\n} from '../validate';\nimport { validateBindNames } from './bindings.ts';\nimport { collectChain, getRoot } from './chain.ts';\nimport {\n allowedEnumValues,\n augmentPicksWithRelations,\n intersectStringSet,\n normalizeGroupBy,\n normalizeSource,\n OFF_PATH,\n type Policy,\n relationHops,\n resolvePolicy,\n resolveVisit,\n sourceReadsVisible,\n} from './policy.ts';\nimport { projectPaths } from './projectPaths.ts';\nimport type {\n EnumNarrowing,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n} from './types.ts';\nimport { checkConditionAtVisit } from './validateRuleInLens.ts';\n\n/** A visit of the PARENT surface a `where` is validated at: the where's own model, reached\n * at `relPath` (a declared path, `[]` for the anchor, or `OFF_PATH` for the model-intrinsic\n * visit a model default gets everywhere else). */\ntype WhereVisit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n// A where filters incoming rows, so its refs must resolve on the parent surface at the visit it\n// is anchored to — never against this layer's own picks/omits, and never against a re-anchored\n// lens: the policy keeps its real root so a bare `path` ref (check()'s root context) is gated at\n// the lens anchor while `field` and `$.` refs are gated at the visit.\nconst validateWhere = (\n condition: Condition | undefined,\n parentPolicy: Policy,\n visits: readonly WhereVisit[],\n position: string,\n errors: ValidationIssue[],\n): void => {\n if (condition === undefined) return;\n const seen = new Set<string>();\n for (const { mapName, modelName, relPath } of visits) {\n for (const v of checkConditionAtVisit(condition, parentPolicy, mapName, modelName, relPath)) {\n // The gate's own code carries through: what is wrong, not only that something is.\n const message = `'${v.path}' ${v.message}`;\n if (seen.has(message)) continue;\n seen.add(message);\n errors.push({ path: position, code: v.code, message });\n }\n }\n};\n\n// A label or axis is client-visible option data: at every visit the node applies to, it may read\n// only what the layers after its earliest declaration show (`sourceReadsVisible`, the rule\n// projectLens enforces). The declaring layer itself stays free — visibility ≠ materialization\n// within one layer.\nconst validateSourceTargetVisibility = (\n narrowing: ModelNarrowing | ModelDefaultNarrowing,\n current: LensNarrowing,\n parentPolicy: Policy,\n visits: readonly WhereVisit[],\n position: string,\n errors: ValidationIssue[],\n): void => {\n const policy: Policy = { lens: parentPolicy.lens, chain: [...parentPolicy.chain, current] };\n const reported = new Set<string>();\n for (const at of visits) {\n const effect = resolveVisit(policy, at.mapName, at.modelName, at.relPath);\n for (const [field, entry] of Object.entries(narrowing.sources ?? {})) {\n const spec = normalizeSource(entry);\n for (const kind of ['label', 'groupBy'] as const) {\n if (spec[kind] === undefined || reported.has(`${field}|${kind}`)) continue;\n if (sourceReadsVisible(policy, effect, at, field, kind)) continue;\n reported.add(`${field}|${kind}`);\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${kind} '${String(spec[kind])}' reads a column hidden by another layer`,\n });\n }\n }\n }\n};\n\n// A materialization path — a groupBy axis or a dotted label — descends to-one relations\n// only and must land on a scalar/enum column. `kind` names it in the error.\nconst toOnePathError = (\n path: string,\n maps: Record<string, FieldMap>,\n mapName: string,\n modelName: string,\n kind: 'groupBy' | 'label',\n): string | null => {\n const segments = path.split('.');\n const { hops } = relationHops(maps, { mapName, modelName, relPath: [] }, path);\n const toMany = hops.find((hop, i) => hop.isList && i < segments.length - 1);\n if (toMany) return `${kind} cannot traverse to-many relation '${segments[hops.indexOf(toMany)]}'`;\n if (hops.length === segments.length)\n return `${kind} must end on a scalar column, '${segments.at(-1)}' is a relation`;\n const at = hops.at(-1) ?? { map: mapName, model: modelName };\n const seg = segments[hops.length];\n const entry = fieldOf(own(maps, at.map), at.model, seg);\n if (!entry) return `${kind} segment '${seg}' not on model '${at.model}'`;\n if (isRelationEntry(entry)) return `${kind} relation '${seg}' has no resolvable target`;\n return hops.length === segments.length - 1 ? null : `${kind} segment '${seg}' is not a relation`;\n};\n\n// Why a field a layer names is already hidden: an ancestor's picks leave it out (a relation it\n// narrows counts as picked) or its omits drop it, or a path node's own-layer defaults do.\nconst hiddenBy = (\n field: string,\n ancestors: readonly ModelNarrowing[],\n defaults: ModelDefaultNarrowing | undefined,\n): string | null => {\n for (const anc of ancestors) {\n const picks = augmentPicksWithRelations(anc);\n if (picks && !picks.includes(field)) return \"not in ancestor's picks\";\n if (anc.omits?.includes(field)) return 'was omitted by ancestor';\n }\n if (defaults?.picks && !defaults.picks.includes(field)) return 'not visible from defaults.picks';\n if (defaults?.omits?.includes(field)) return 'already excluded by defaults';\n return null;\n};\n\nconst validateModelNode = (\n narrowing: ModelNarrowing | ModelDefaultNarrowing,\n ancestorChain: ModelNarrowing[],\n sameLayerDefaults: ModelDefaultNarrowing | undefined,\n maps: Record<string, FieldMap>,\n mapName: string,\n modelFields: Record<string, FieldMapEntry>,\n modelName: string,\n enumRegistry: Record<string, readonly string[]> | undefined,\n position: string,\n errors: ValidationIssue[],\n parentPolicy: Policy,\n whereVisits: readonly WhereVisit[],\n isDefault = false,\n): void => {\n if (narrowing.picks && narrowing.omits) {\n errors.push({\n path: `${position}`,\n code: 'conflicting_selection',\n message: `cannot specify both picks and omits`,\n });\n }\n\n if (isDefault && 'relations' in narrowing && (narrowing as ModelNarrowing).relations) {\n errors.push({\n path: `${position}`,\n code: 'invalid_source',\n message: `defaults cannot declare 'relations' — relations are path-specific only`,\n });\n }\n\n for (const kind of ['picks', 'omits'] as const)\n for (const f of narrowing[kind] ?? []) {\n if (!own(modelFields, f)) {\n errors.push({\n path: `${position}.${kind}`,\n code: 'not_in_lens',\n message: `field '${f}' not on model`,\n });\n continue;\n }\n const hidden = hiddenBy(f, ancestorChain, isDefault ? undefined : sameLayerDefaults);\n if (hidden)\n errors.push({\n path: `${position}.${kind}`,\n code: 'not_visible',\n message: `'${f}' ${hidden}`,\n });\n }\n\n const validateEnumOp = (\n op: 'enumPicks' | 'enumOmits',\n fieldName: string,\n values: readonly string[],\n ): void => {\n const fieldEntry = own(modelFields, fieldName);\n if (!fieldEntry) {\n errors.push({\n path: `${position}.${op}`,\n code: 'not_in_lens',\n message: `field '${fieldName}' not on model`,\n });\n return;\n }\n if (fieldEntry.kind !== 'enum') {\n errors.push({\n path: `${position}.${op}`,\n code: 'wrong_kind',\n message: `field '${fieldName}' is not an enum field`,\n });\n return;\n }\n const registry = declaredEnumValues(fieldEntry, enumRegistry);\n for (const v of values) {\n if (registry && !registry.includes(v)) {\n errors.push({\n path: `${position}.${op}.${fieldName}`,\n code: 'value_not_allowed',\n message: `'${v}' is not a known value of enum '${fieldEntry.type}'`,\n });\n }\n }\n };\n for (const [field, vals] of Object.entries(narrowing.enumPicks ?? {})) {\n validateEnumOp('enumPicks', field, vals);\n }\n for (const [field, vals] of Object.entries(narrowing.enumOmits ?? {})) {\n validateEnumOp('enumOmits', field, vals);\n }\n\n validateWhere(narrowing.where, parentPolicy, whereVisits, `${position}.where`, errors);\n\n for (const [field, entry] of Object.entries(narrowing.sources ?? {})) {\n if (!own(modelFields, field)) {\n errors.push({\n path: `${position}.sources`,\n code: 'not_in_lens',\n message: `field '${field}' not on model`,\n });\n continue;\n }\n const spec = normalizeSource(entry);\n const dottedLabel = spec.label?.includes('.') ? spec.label : undefined;\n if (spec.label !== undefined) {\n if (dottedLabel) {\n const err = toOnePathError(dottedLabel, maps, mapName, modelName, 'label');\n if (err)\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${err}`,\n });\n } else if (!own(modelFields, spec.label)) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'not_in_lens',\n message: `label column '${spec.label}' not on model`,\n });\n }\n }\n const axes = normalizeGroupBy(spec.groupBy);\n // The sql compile aliases each axis column '__group_i' and a dotted label '__label' —\n // a source selecting a real column of that shape would clobber it in flat rows.\n if (axes !== undefined || dottedLabel !== undefined) {\n const reserved = /^__(group(_\\d+)?|label)$/;\n if (reserved.test(field) || (spec.label !== undefined && reserved.test(spec.label))) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `'__group*' / '__label' names are reserved on grouped or path-labeled sources (sql column aliases)`,\n });\n }\n }\n if (axes !== undefined) {\n for (const axis of axes) {\n const err = toOnePathError(axis, maps, mapName, modelName, 'groupBy');\n if (err)\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${err}`,\n });\n }\n // where/sources compose AND-only across layers; divergent axes would\n // silently re-partition an ancestor's option namespace — fail loud instead.\n const axesKey = JSON.stringify(axes);\n for (const anc of ancestorChain) {\n const ancEntry = own(anc.sources, field);\n if (ancEntry === undefined) continue;\n const ancAxes = normalizeGroupBy(normalizeSource(ancEntry).groupBy);\n if (ancAxes !== undefined && JSON.stringify(ancAxes) !== axesKey) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'not_visible',\n message: `groupBy [${axes}] conflicts with an ancestor layer's groupBy [${ancAxes}]`,\n });\n }\n }\n }\n validateWhere(spec.where, parentPolicy, whereVisits, `${position}.sources.${field}`, errors);\n }\n};\n\nconst validateDefaultsEnums = (\n mapName: string,\n defaultsEnums: Record<string, EnumNarrowing>,\n enumRegistry: Record<string, readonly string[]> | undefined,\n ancestorEnumNarrowings: Array<Record<string, EnumNarrowing>>,\n errors: ValidationIssue[],\n): void => {\n for (const [enumName, enumN] of Object.entries(defaultsEnums)) {\n const registryVals = own(enumRegistry, enumName);\n if (!registryVals) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}`,\n code: 'not_in_lens',\n message: `enum not in registry`,\n });\n continue;\n }\n let inheritedPicks: Set<string> | null = null;\n const inheritedOmits = new Set<string>();\n for (const anc of ancestorEnumNarrowings) {\n const a = anc[enumName];\n if (!a) continue;\n if (a.picks) inheritedPicks = intersectStringSet(inheritedPicks, a.picks);\n if (a.omits) for (const v of a.omits) inheritedOmits.add(v);\n }\n const isInheritedVisible = (v: string): boolean => {\n if (inheritedOmits.has(v)) return false;\n if (inheritedPicks && !inheritedPicks.has(v)) return false;\n return true;\n };\n for (const v of enumN.picks ?? []) {\n if (!registryVals.includes(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.picks`,\n code: 'value_not_allowed',\n message: `'${v}' not a known value`,\n });\n } else if (!isInheritedVisible(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.picks`,\n code: 'not_visible',\n message: `'${v}' not visible from ancestors`,\n });\n }\n }\n for (const v of enumN.omits ?? []) {\n if (!registryVals.includes(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.omits`,\n code: 'value_not_allowed',\n message: `'${v}' not a known value`,\n });\n } else if (!isInheritedVisible(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.omits`,\n code: 'not_visible',\n message: `'${v}' already excluded by ancestors`,\n });\n }\n }\n }\n};\n\n// A layer's enumPicks / enumOmits name only values its inheritance still shows — the allowed\n// set resolveVisit folds at the visit from `inherited` (the layers above, and for a path node this\n// layer's own defaults). A value the enum doesn't declare is validateEnumOp's to report.\nconst validateEnumInheritance = (\n narrowing: ModelDefaultNarrowing | ModelNarrowing,\n inherited: Policy,\n at: WhereVisit,\n modelFields: Record<string, FieldMapEntry>,\n enumRegistry: Record<string, readonly string[]> | undefined,\n position: string,\n errors: ValidationIssue[],\n): void => {\n const effect = resolveVisit(inherited, at.mapName, at.modelName, at.relPath);\n for (const op of ['enumPicks', 'enumOmits'] as const)\n for (const [field, values] of Object.entries(narrowing[op] ?? {})) {\n const entry = own(modelFields, field);\n if (entry?.kind !== 'enum') continue;\n const declared = declaredEnumValues(entry, enumRegistry) ?? [];\n const allowed = allowedEnumValues(effect, field) ?? declared;\n for (const v of values)\n if (declared.includes(v) && !allowed.includes(v))\n errors.push({\n path: `${position}.${op}.${field}`,\n code: 'not_visible',\n message: `'${v}' is not visible (not allowed by the inherited enum narrowing)`,\n });\n }\n};\n\nconst validatePathNarrowing = (\n narrowing: ModelNarrowing,\n ancestorChain: ModelNarrowing[],\n current: LensNarrowing,\n chain: LensNarrowing[],\n maps: Record<string, FieldMap>,\n mapName: string,\n modelName: string,\n position: string,\n errors: ValidationIssue[],\n parentPolicy: Policy,\n relPath: readonly string[],\n): void => {\n const fieldMap = own(maps, mapName);\n const model = modelOf(fieldMap, modelName);\n if (!model) return;\n\n const sameLayerDefaultsForModel = own(own(current.mapDefaults, mapName)?.models, modelName);\n const ancestorDefaultsForModel = chain\n .map((a) => own(own(a.mapDefaults, mapName)?.models, modelName))\n .filter((x): x is ModelDefaultNarrowing => x !== undefined);\n const synthAncestors = [\n ...ancestorDefaultsForModel.map((d) => d as ModelNarrowing),\n ...ancestorChain,\n ];\n\n validateModelNode(\n narrowing,\n synthAncestors,\n sameLayerDefaultsForModel,\n maps,\n mapName,\n model.fields,\n modelName,\n fieldMap?.enums,\n position,\n errors,\n parentPolicy,\n [{ mapName, modelName, relPath }],\n false,\n );\n\n validateEnumInheritance(\n narrowing,\n {\n lens: parentPolicy.lens,\n chain: [...parentPolicy.chain, { parent: current.parent, mapDefaults: current.mapDefaults }],\n },\n { mapName, modelName, relPath },\n model.fields,\n fieldMap?.enums,\n position,\n errors,\n );\n\n validateSourceTargetVisibility(\n narrowing,\n current,\n parentPolicy,\n [{ mapName, modelName, relPath }],\n position,\n errors,\n );\n\n for (const [relField, sub] of Object.entries(narrowing.relations ?? {})) {\n const entry = own(model.fields, relField);\n if (!entry) {\n errors.push({\n path: `${position}.relations`,\n code: 'not_in_lens',\n message: `'${relField}' not on model`,\n });\n continue;\n }\n if (!isRelationEntry(entry)) {\n errors.push({\n path: `${position}.relations`,\n code: 'wrong_kind',\n message: `'${relField}' is not a relation (kind=${entry.kind})`,\n });\n continue;\n }\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n if (!modelOf(own(maps, target.mapName), target.modelName)) {\n errors.push({\n path: `${position}.relations.${relField}`,\n code: 'not_in_lens',\n message: `target model not found in lens`,\n });\n continue;\n }\n const childAncestorChain = ancestorChain\n .map((anc) => own(anc.relations, relField))\n .filter((x): x is ModelNarrowing => x !== undefined);\n validatePathNarrowing(\n sub,\n childAncestorChain,\n current,\n chain,\n maps,\n target.mapName,\n target.modelName,\n `${position}.relations.${relField}`,\n errors,\n parentPolicy,\n [...relPath, relField],\n );\n }\n};\n\nexport const validateNarrowing = (narrowing: LensNarrowing): ValidationResult => {\n const errors: ValidationIssue[] = [];\n const set = getRoot(narrowing);\n const ancestors = collectChain(narrowing.parent);\n const parentPolicy = resolvePolicy(narrowing.parent);\n const parentVisits = projectPaths(narrowing.parent);\n\n for (const [mapName, defaults] of Object.entries(narrowing.mapDefaults ?? {})) {\n const fieldMap = own(set.maps, mapName);\n if (!fieldMap) {\n errors.push({ path: `mapDefaults.${mapName}`, code: 'not_in_lens', message: `not in lens` });\n continue;\n }\n\n const ancestorDefaultsEnums = ancestors\n .map((anc) => own(anc.mapDefaults, mapName)?.enums)\n .filter((x): x is NonNullable<typeof x> => x !== undefined);\n\n for (const [modelName, dflt] of Object.entries(defaults.models ?? {})) {\n const model = modelOf(fieldMap, modelName);\n if (!model) {\n errors.push({\n path: `mapDefaults.${mapName}.models.${modelName}`,\n code: 'not_in_lens',\n message: `not in fieldMap`,\n });\n continue;\n }\n const ancestorDefaultsForModel = ancestors\n .map((anc) => own(own(anc.mapDefaults, mapName)?.models, modelName))\n .filter((x): x is ModelDefaultNarrowing => x !== undefined);\n // A model default applies at EVERY visit of the model: the model-intrinsic (off-path)\n // visit plus each path the parent declares for it, so its where must resolve at all.\n const whereVisits: WhereVisit[] = [{ mapName, modelName, relPath: OFF_PATH }];\n for (const [path, visit] of Object.entries(parentVisits)) {\n if (visit.mapName === mapName && visit.model === modelName) {\n whereVisits.push({ mapName, modelName, relPath: path.split('.').slice(1) });\n }\n }\n validateModelNode(\n dflt,\n ancestorDefaultsForModel as ModelNarrowing[],\n undefined,\n set.maps,\n mapName,\n model.fields,\n modelName,\n fieldMap.enums,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n parentPolicy,\n whereVisits,\n true,\n );\n validateEnumInheritance(\n dflt,\n parentPolicy,\n { mapName, modelName, relPath: OFF_PATH },\n model.fields,\n fieldMap.enums,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n );\n validateSourceTargetVisibility(\n dflt,\n narrowing,\n parentPolicy,\n whereVisits,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n );\n }\n\n if (defaults.enums) {\n validateDefaultsEnums(mapName, defaults.enums, fieldMap.enums, ancestorDefaultsEnums, errors);\n }\n }\n\n if (narrowing.root) {\n const lensMapName = set.mapName;\n const lensModel = set.model;\n const fieldMap = own(set.maps, lensMapName);\n if (!fieldMap) {\n errors.push({\n path: `root`,\n code: 'not_in_lens',\n message: `lens map '${lensMapName}' not in lens`,\n });\n } else if (!modelOf(fieldMap, lensModel)) {\n errors.push({\n path: `root`,\n code: 'not_in_lens',\n message: `lens model '${lensModel}' not in fieldMap`,\n });\n } else {\n const ancestorChainForRoot = ancestors\n .map((anc) => anc.root)\n .filter((x): x is ModelNarrowing => x !== undefined);\n validatePathNarrowing(\n narrowing.root,\n ancestorChainForRoot,\n narrowing,\n ancestors,\n set.maps,\n lensMapName,\n lensModel,\n 'root',\n errors,\n parentPolicy,\n [],\n );\n }\n }\n\n for (const message of validateBindNames(narrowing))\n errors.push({ path: 'bindings', code: 'invalid_binding', message });\n\n return validationResult(errors);\n};\n\nexport const assertValidNarrowing = (narrowing: LensNarrowing): void =>\n throwIfInvalid(validateNarrowing(narrowing), 'validateNarrowing');\n","import { endpointKey } from '../fieldMap/endpointKey.ts';\nimport { isRelationEntry } from '../fieldMap/entry.ts';\nimport type { Bridge, FieldMap, FieldMapEntry, FieldMapSet, SourceOption } from '../fieldMap/types';\nimport { relationTargetOf } from '../fieldMap/walk.ts';\nimport { fieldOf, modelOf, own } from '../own';\nimport { OFF_PATH, type Policy, resolvePolicy, resolveVisit } from './policy.ts';\nimport { type ProjectLensOptions, projectFields } from './projectPaths.ts';\nimport { optionKey } from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nconst modelKey = (mapName: string, modelName: string): string => `${mapName}::${modelName}`;\n\ntype SurfaceModel = { mapName: string; modelName: string; fields: Map<string, FieldMapEntry> };\n\nconst unionFieldInto = (\n fields: Map<string, FieldMapEntry>,\n name: string,\n entry: FieldMapEntry,\n): void => {\n const existing = fields.get(name);\n if (!existing) {\n fields.set(name, entry.values ? { ...entry, values: [...entry.values] } : entry);\n return;\n }\n let next = existing;\n if (entry.values && existing.values) {\n const merged = new Set([...existing.values, ...entry.values]);\n next = { ...next, values: [...merged] };\n } else if (!entry.values && existing.values) {\n next = { ...next, values: undefined };\n }\n // A later visit may carry the partition axes an earlier (e.g. off-path) visit\n // lacked; divergence was already rejected before this merge.\n if (entry.groupBy !== undefined && next.groupBy === undefined) {\n next = { ...next, groupBy: entry.groupBy };\n }\n if (next !== existing) fields.set(name, next);\n};\n\n// Leak-safe total exposed surface of a narrowed lens, as a Lens. See docs/LENS.md.\nexport const projectModels = (\n lensOrNarrowing: Lens | LensNarrowing,\n opts: ProjectLensOptions = {},\n): Lens => {\n const policy: Policy = resolvePolicy(lensOrNarrowing);\n const { lens } = policy;\n\n // Per-model union of fetched options (the flattened surface collapses paths):\n // dedup by (group, value) across paths — the same key the materializers use —\n // so a grouped field's partition survives the union; a later occurrence wins.\n const fetchedByModelField = new Map<string, Map<string, SourceOption>>();\n for (const sv of opts.sourceValues ?? []) {\n const k = `${sv.mapName}::${sv.model}::${sv.field}`;\n const byKey = fetchedByModelField.get(k) ?? new Map<string, SourceOption>();\n for (const o of sv.options) byKey.set(optionKey(o.groups, o.value), o);\n fetchedByModelField.set(k, byKey);\n }\n\n const surface = new Map<string, SurfaceModel>();\n const visitedDeclared = new Set<string>();\n const visitedOffPath = new Set<string>();\n\n type Visit = {\n mapName: string;\n modelName: string;\n relPath: readonly string[];\n declared: boolean;\n };\n const queue: Visit[] = [\n { mapName: lens.mapName, modelName: lens.model, relPath: [], declared: true },\n ];\n\n while (queue.length > 0) {\n const { mapName, modelName, relPath, declared } = queue.shift() as Visit;\n const model = modelOf(own(lens.maps, mapName), modelName);\n if (!model) continue;\n\n const key = modelKey(mapName, modelName);\n if (declared) {\n const dkey = `${key}::${relPath.join('.')}`;\n if (visitedDeclared.has(dkey)) continue;\n visitedDeclared.add(dkey);\n } else {\n if (visitedOffPath.has(key)) continue;\n visitedOffPath.add(key);\n }\n\n const effect = resolveVisit(policy, mapName, modelName, declared ? relPath : OFF_PATH);\n\n let acc = surface.get(key);\n if (!acc) {\n acc = { mapName, modelName, fields: new Map() };\n surface.set(key, acc);\n }\n\n const at = { mapName, modelName, relPath: declared ? relPath : OFF_PATH };\n const fields = projectFields(policy, effect, at, model, (field) => {\n const fetched = fetchedByModelField.get(`${mapName}::${modelName}::${field}`);\n return fetched && [...fetched.values()];\n });\n for (const [fieldName, nextEntry] of Object.entries(fields)) {\n const entry = nextEntry;\n // The surface flattens per model: two paths grouping one field by DIFFERENT axes would\n // union two incompatible partition namespaces — fail loud instead of merging them.\n const axes = nextEntry.groupBy;\n const existing = acc.fields.get(fieldName)?.groupBy;\n if (\n axes !== undefined &&\n existing !== undefined &&\n JSON.stringify(existing) !== JSON.stringify(axes)\n )\n throw new Error(\n `projectLens: '${modelName}.${fieldName}' is grouped by different axes on different paths ([${existing}] vs [${axes}]) — one surface field cannot carry two partition namespaces`,\n );\n unionFieldInto(acc.fields, fieldName, nextEntry);\n\n if (isRelationEntry(entry)) {\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n if (declared && effect.relations.has(fieldName)) {\n queue.push({\n mapName: target.mapName,\n modelName: target.modelName,\n relPath: [...relPath, fieldName],\n declared: true,\n });\n } else {\n queue.push({\n mapName: target.mapName,\n modelName: target.modelName,\n relPath: [],\n declared: false,\n });\n }\n }\n }\n }\n\n const maps: Record<string, FieldMap> = {};\n for (const { mapName, modelName, fields } of surface.values()) {\n let surfaceMap = own(maps, mapName);\n if (!surfaceMap) {\n surfaceMap = { models: {} };\n maps[mapName] = surfaceMap;\n }\n const fieldRecord: Record<string, FieldMapEntry> = {};\n const enumValuesByType = new Map<string, Set<string>>();\n for (const [name, entry] of fields) {\n // A sourced field already carries fetched `options`; otherwise a value-gated\n // field surfaces its (unioned) allowed-set as options, so every selectable\n // field exposes `options` uniformly. `values` stays as the validation input.\n fieldRecord[name] =\n entry.options === undefined && entry.values\n ? { ...entry, options: entry.values.map((v) => ({ value: v, label: v })) }\n : entry;\n if (entry.kind === 'enum' && entry.values) {\n const set = enumValuesByType.get(entry.type) ?? new Set<string>();\n for (const v of entry.values) set.add(v);\n enumValuesByType.set(entry.type, set);\n }\n }\n surfaceMap.models[modelName] = {\n ...modelOf(own(lens.maps, mapName), modelName),\n fields: fieldRecord,\n };\n\n for (const [enumType, values] of enumValuesByType) {\n surfaceMap.enums ??= {};\n surfaceMap.enums[enumType] = [...values];\n }\n }\n\n // Keep a bridge only if one of its injected bridge-fields survived (else it\n // touches unexposed surface and its `on` keys would leak).\n const bridges: Bridge[] | undefined = lens.bridges?.filter((b) => {\n const [a, bb] = b.endpoints;\n const aExposesB = fieldOf(own(maps, a.fieldMap), a.model, endpointKey(bb));\n const bExposesA = fieldOf(own(maps, bb.fieldMap), bb.model, endpointKey(a));\n return aExposesB !== undefined || bExposesA !== undefined;\n });\n\n const result: FieldMapSet = { maps };\n if (bridges && bridges.length > 0) result.bridges = bridges;\n\n return { ...result, mapName: lens.mapName, model: lens.model };\n};\n","import { projectModels } from './projectModels.ts';\nimport { type PathProjection, type ProjectLensOptions, projectPaths } from './projectPaths.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * What a narrowed lens exposes. `by: 'path'` (the default) projects each declared path — its\n * visible fields, `where` clauses and sources — keyed by dotted path. `by: 'model'` flattens the\n * whole surface into a Lens: every model a path or relation reaches, each field the union of its\n * visits, bridges kept only where an exposed field crosses them.\n */\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n options?: ProjectLensOptions & { by?: 'path' },\n): PathProjection;\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n options: ProjectLensOptions & { by: 'model' },\n): Lens;\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n { by = 'path', ...options }: ProjectLensOptions & { by?: 'path' | 'model' } = {},\n): PathProjection | Lens {\n return by === 'model'\n ? projectModels(lensOrNarrowing, options)\n : projectPaths(lensOrNarrowing, options);\n}\n","import { own } from '../own';\nimport { collectChain, getRoot, isLens } from './chain.ts';\nimport { assertValidNarrowing } from './narrowing.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * A lens as stored, one record per layer: its `id`, the ids of every layer it composes with —\n * the base lens first, the nearest parent last — and its own part. The base lens is the\n * root-most layer: the lens itself, with no parents.\n */\nexport type StoredLens = { id: string; parents: string[] } & (Lens | Omit<LensNarrowing, 'parent'>);\n\nconst isBase = (record: StoredLens): record is StoredLens & Lens => 'maps' in record;\n\n/**\n * The composed lens a stored layer resolves to: its parents, read from `records`, nested from\n * the base down, each layer validated against the ones above it. Fails closed on a missing\n * record, a base that isn't first, or a parent whose own parents disagree with the list.\n */\nexport const composeLens = (\n id: string,\n records: Record<string, StoredLens>,\n): Lens | LensNarrowing => {\n const read = (at: string): StoredLens => {\n const record = own(records, at);\n if (!record) throw new Error(`composeLens: no stored lens '${at}'`);\n return record;\n };\n const ids = [...read(id).parents, id];\n if (new Set(ids).size !== ids.length)\n throw new Error(`composeLens: '${id}' lists a layer twice in its parents`);\n\n let lens: Lens | LensNarrowing | null = null;\n for (const [depth, at] of ids.entries()) {\n const record = read(at);\n const { id: _id, parents, ...part } = record;\n if (parents.join('\\u0000') !== ids.slice(0, depth).join('\\u0000'))\n throw new Error(\n `composeLens: '${at}' composes with [${parents.join(', ')}], not [${ids.slice(0, depth).join(', ')}] as '${id}' lists`,\n );\n const base = isBase(record);\n if (base !== (depth === 0))\n throw new Error(\n depth === 0\n ? `composeLens: '${at}' is not a base lens, so it can't head '${id}''s parents`\n : `composeLens: '${at}' is a base lens, so it can only head a chain`,\n );\n if (lens === null) {\n lens = part as Lens;\n continue;\n }\n const layer: LensNarrowing = { parent: lens, ...(part as Omit<LensNarrowing, 'parent'>) };\n assertValidNarrowing(layer);\n lens = layer;\n }\n return lens as Lens | LensNarrowing;\n};\n\n/** A composed lens as the records `composeLens` reads back: one per layer, the base first,\n * named by `ids` in the same order. */\nexport const storeLens = (lens: Lens | LensNarrowing, ids: readonly string[]): StoredLens[] => {\n const chain = isLens(lens) ? [] : collectChain(lens);\n if (ids.length !== chain.length + 1)\n throw new Error(\n `storeLens: the lens has ${chain.length + 1} layers, base included, but ${ids.length} ids`,\n );\n return [\n { ...getRoot(lens), id: ids[0], parents: [] },\n ...chain.map(({ parent: _parent, ...part }, depth) => ({\n ...part,\n id: ids[depth + 1],\n parents: ids.slice(0, depth + 1),\n })),\n ];\n};\n","import { own } from '../own';\nimport type { FieldMap, FieldMapSet } from './types';\n\n/** The FieldMap a compile reads: the map itself, or `mapName`'s map in a set — a set without a\n * `mapName` is refused rather than read as a map (no Json paths, no bridges). */\nexport const resolveFieldMap = (\n map: FieldMap | FieldMapSet | undefined,\n mapName: string | undefined,\n target: 'toSql' | 'toPrisma',\n): FieldMap | undefined => {\n if (!map || !('maps' in map)) return map;\n if (!mapName)\n throw new Error(\n `${target}: 'map' is a FieldMapSet — 'mapName' is required to resolve which map to use.`,\n );\n const resolved = own(map.maps, mapName);\n if (!resolved) throw new Error(`${target}: fieldMap set has no entry for '${mapName}'`);\n return resolved;\n};\n","import { hasNoOperand } from './field';\nimport { ArrayOperator } from './operator';\nimport {\n COMPLEMENT_DATE_OPERATORS,\n COMPLEMENT_OPERATORS,\n NEGATED_OPERATORS,\n OPPOSITE_OPERATORS,\n} from './operatorCatalog';\nimport { own } from './own';\nimport { allOf, anyOf, conditionShape } from './traverse';\nimport type { Condition, Rule } from './types';\n\ntype Node = Record<string, unknown>;\n\n/** A leaf with its operands read, or `null` when one reads nothing (the leaf is then false). */\nexport type Settle = (leaf: Node) => Node | null;\n\nconst absent = (field: unknown): Condition => ({ field, operator: 'notExists' }) as Condition;\n\nconst negateLeaf = (node: Node, settle: Settle): Condition => {\n const leaf = settle(node);\n // Nothing to compare against: a positive comparison is false everywhere, so its complement\n // holds everywhere; a negation still keeps a NULL field, so its complement is a present one.\n if (leaf === null) {\n const op = (node.operator ?? node.dateOperator) as string;\n return NEGATED_OPERATORS.includes(op)\n ? ({ field: node.field, operator: 'exists' } as Condition)\n : true;\n }\n if ('aggregate' in leaf) {\n const flip = own(COMPLEMENT_OPERATORS, leaf.operator as string);\n if (flip) return { ...leaf, operator: flip } as Condition;\n return { ...leaf, operator: own(OPPOSITE_OPERATORS, leaf.operator as string) } as Condition;\n }\n if (typeof leaf.dateOperator === 'string') {\n const flip = own(COMPLEMENT_DATE_OPERATORS, leaf.dateOperator);\n if (flip) return { ...leaf, dateOperator: flip } as Condition;\n return anyOf([\n { ...leaf, dateOperator: own(OPPOSITE_OPERATORS, leaf.dateOperator) } as Condition,\n absent(leaf.field),\n ]);\n }\n if (typeof leaf.arrayOperator === 'string') {\n const count = leaf.count as number;\n switch (leaf.arrayOperator) {\n case ArrayOperator.any:\n return { ...leaf, arrayOperator: ArrayOperator.none } as Condition;\n case ArrayOperator.none:\n return { ...leaf, arrayOperator: ArrayOperator.any } as Condition;\n case ArrayOperator.all:\n return {\n ...leaf,\n arrayOperator: ArrayOperator.any,\n condition: negate(leaf.condition as Condition, settle),\n } as Condition;\n case ArrayOperator.empty:\n return { ...leaf, arrayOperator: ArrayOperator.notEmpty } as Condition;\n case ArrayOperator.notEmpty:\n return { ...leaf, arrayOperator: ArrayOperator.empty } as Condition;\n case ArrayOperator.atLeast:\n return count <= 0\n ? false\n : ({ ...leaf, arrayOperator: ArrayOperator.atMost, count: count - 1 } as Condition);\n case ArrayOperator.atMost:\n return { ...leaf, arrayOperator: ArrayOperator.atLeast, count: count + 1 } as Condition;\n case ArrayOperator.exactly:\n return anyOf([\n ...(count > 0\n ? [{ ...leaf, arrayOperator: ArrayOperator.atMost, count: count - 1 } as Condition]\n : []),\n { ...leaf, arrayOperator: ArrayOperator.atLeast, count: count + 1 } as Condition,\n ]);\n }\n }\n const flip = own(COMPLEMENT_OPERATORS, leaf.operator as string);\n if (flip) return { ...leaf, operator: flip } as Condition;\n return anyOf([\n { ...leaf, operator: own(OPPOSITE_OPERATORS, leaf.operator as string) } as Condition,\n absent(leaf.field),\n ]);\n};\n\n/**\n * The condition that holds exactly where `condition` doesn't, under check(). A rail that can't\n * negate a predicate whose NULL means false (Prisma's NOT drops the row) compiles the complement\n * instead. `settle` reads a leaf's operands the way the rail will — a leaf whose operand reads\n * nothing is false, so its complement is true.\n */\nexport const negate = (condition: Condition, settle: Settle = (leaf) => leaf): Condition => {\n if (typeof condition === 'boolean') return !condition;\n const node = condition as Node;\n if (Array.isArray(node.all))\n return anyOf((node.all as Condition[]).map((c) => negate(c, settle)));\n if (Array.isArray(node.any))\n return allOf((node.any as Condition[]).map((c) => negate(c, settle)));\n if ('if' in node) {\n const holds = allOf([node.if as Condition, negate(node.then as Condition, settle)]);\n if (node.else === undefined) return holds;\n return {\n any: [\n holds,\n allOf([negate(node.if as Condition, settle), negate(node.else as Condition, settle)]),\n ],\n };\n }\n return negateLeaf(node, settle);\n};\n\n/** check()'s settle: a leaf's literal operand reads nothing when it's null or a range misses an\n * end — the compilers read paths and offsets into literals before negating. */\nexport const settleLiteral: Settle = (leaf) =>\n conditionShape(leaf) === 'field' &&\n leaf.value !== undefined &&\n hasNoOperand(leaf as Rule, leaf.value)\n ? null\n : leaf;\n","import { resolveCaseInsensitive } from './engineGlobals';\nimport { declaredEnumValues } from './fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from './fieldMap/types';\nimport { splitNull } from './number';\nimport { EQUALITY_OPERATORS, EXACT_OPERATORS, NEGATED_OPERATORS } from './operatorCatalog';\nimport type { Rule } from './types';\n\n// An enum column compares exactly: a case-insensitive equality or membership compiles to the\n// declared values that match ignoring case (Prisma has no case-insensitive mode on an enum), as\n// does one naming a value the enum doesn't declare.\n// String, pattern and ordered operators don't apply to an enum, as the catalog says.\n\n/**\n * The declared values a case-insensitive equality or membership on an enum matches, and whether\n * a NULL field matches it — or null when the column answers the comparison itself.\n */\nexport const enumMatches = (\n rule: Rule,\n value: unknown,\n entry: FieldMapEntry,\n map: FieldMap | undefined,\n): { values: string[]; matchesNull: boolean } | null => {\n if (!EXACT_OPERATORS.includes(rule.operator))\n throw new Error(\n `'${rule.operator}' does not apply to the enum '${rule.field}'; compare its values with equals / in.`,\n );\n const ci = resolveCaseInsensitive(rule.caseInsensitive);\n const declared = declaredEnumValues(entry, map?.enums);\n const { values, hasNull } = splitNull(\n EQUALITY_OPERATORS.includes(rule.operator) ? [value] : value,\n );\n // The column answers an exact comparison itself — unless a literal isn't a declared value,\n // which the database refuses to read; that matches no row.\n if (!ci && (!declared || values.every((v) => typeof v === 'string' && declared.includes(v))))\n return null;\n if (!declared)\n throw new Error(\n `'${rule.field}' is an enum: a case-insensitive comparison reads its declared values, which the map doesn't list.`,\n );\n const norm = (v: string) => (ci ? v.toLowerCase() : v);\n const wanted = new Set(values.filter((v) => typeof v === 'string').map((v) => norm(v as string)));\n const hit = declared.filter((v) => wanted.has(norm(v)));\n return NEGATED_OPERATORS.includes(rule.operator)\n ? { values: declared.filter((v) => !hit.includes(v)), matchesNull: !hasNull }\n : { values: hit, matchesNull: hasNull };\n};\n","export const escapeIdentifier = (identifier: string): string =>\n `\"${identifier.replace(/\"/g, '\"\"')}\"`;\n","import { escapeIdentifier } from './escape';\n\n/**\n * Escape a value for use in a LIKE pattern.\n * Escapes \\, %, and _ which are special characters in PostgreSQL LIKE.\n */\nexport const escapeLikePattern = (value: string): string => {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/%/g, '\\\\%').replace(/_/g, '\\\\_');\n};\n\n/**\n * A field as SQL: its column, then any JSON sub-path. The leaf reads as text (`->>`), or as\n * JSONB (`->`) when the result feeds a JSONB function such as jsonb_array_elements().\n *\n * \"name\" → \"name\"\n * \"data.theme\" → \"data\"->>'theme' (jsonb: \"data\"->'theme')\n * \"settings.display.mode\" → \"settings\"->'display'->>'mode'\n * with an alias → \"t0\".\"data\"->>'theme'\n */\nexport const quoteField = (field: string, alias?: string, jsonb = false): string => {\n const [column, ...jsonPath] = field.split('.');\n const columnExpr = alias\n ? `${escapeIdentifier(alias)}.${escapeIdentifier(column)}`\n : escapeIdentifier(column);\n if (jsonPath.length === 0) return columnExpr;\n const keys = jsonPath.map(jsonKey);\n const leaf = keys.pop() as string;\n return [columnExpr, ...keys].join('->') + (jsonb ? '->' : '->>') + leaf;\n};\n\n/** A JSON key as a SQL string literal. */\nexport const jsonKey = (key: string): string => `'${key.replace(/'/g, \"''\")}'`;\n","import { createRequire } from 'node:module';\nimport { engineGlobals } from '../engineGlobals';\n\n// Prisma matches a DB NULL, a JSON null and an absent Json path together only with its AnyNull\n// instance, which it knows by identity. The default is your own @prisma/client's (an optional\n// peer dependency); `engineGlobals.set('prismaOptions.anyNull', …)` overrides it.\n\nconst RUNTIMES = ['@prisma/client/runtime/client', '@prisma/client/runtime/library'];\n\nlet installed: unknown;\n\nconst installedAnyNull = (): unknown => {\n if (installed !== undefined) return installed;\n for (const load of loaders()) {\n for (const id of RUNTIMES) {\n try {\n const runtime = load(id) as { AnyNull?: unknown };\n if (runtime.AnyNull !== undefined) {\n installed = runtime.AnyNull;\n return installed;\n }\n } catch {\n // Not this Prisma version's runtime path, or no @prisma/client: try the next.\n }\n }\n }\n return undefined;\n};\n\n// ESM resolves from this module's URL; the CJS build has `require` (and no import.meta.url).\nconst loaders = (): ((id: string) => unknown)[] => {\n const out: ((id: string) => unknown)[] = [];\n try {\n out.push(createRequire(import.meta.url));\n } catch {\n // CJS: import.meta.url is empty.\n }\n if (typeof require === 'function') out.push(require);\n return out;\n};\n\nexport const prismaAnyNull = (): unknown => {\n const anyNull = engineGlobals.get('prismaOptions.anyNull') ?? installedAnyNull();\n if (anyNull === undefined)\n throw new Error(\n \"A null check on a Json field needs Prisma's AnyNull, and @prisma/client isn't installed: engineGlobals.set('prismaOptions.anyNull', Prisma.AnyNull).\",\n );\n return anyNull;\n};\n","import type { Condition } from '../types';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\n// The rail's one recursion point: sub-builders compile their child conditions through it, and\n// condition.ts installs the dispatcher — so no builder imports the dispatcher it is part of.\n\ntype BuildConditionFn = (\n condition: Condition,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n) => PrismaWhere;\n\nlet dispatch: BuildConditionFn;\n\nexport const setConditionBuilder = (fn: BuildConditionFn): void => {\n dispatch = fn;\n};\n\nexport const buildCondition: BuildConditionFn = (condition, options, state) =>\n dispatch(condition, options, state);\n","import { resolveDateConfig } from '../date';\nimport type { ResolvedDateConfig } from '../dateExpr';\nimport { noCompiledForm } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { type Settle, settleLiteral } from '../negate';\nimport { ORDERED_OPERATORS } from '../operatorCatalog';\nimport { checkOnlyScopeRef, parseScopeRef, readContextRef } from '../scope';\nimport type { ValueSourceFields } from '../types';\nimport { compileBinding, matchSource, type ReadSource } from '../valueSource';\nimport type { ToPrismaOptions } from './types';\n\n/** A path on the Prisma rail: a context read. Prisma WHERE has no column-to-column comparison\n * or arithmetic, so a row (`$.`) ref has no form here. */\nconst readPathValue = (ref: string, options?: ToPrismaOptions): unknown => {\n const scoped = parseScopeRef(ref);\n if (scoped) {\n if (scoped.depth > 1) throw new Error(checkOnlyScopeRef(ref, 'toPrisma'));\n throw new Error(\n `Path '${ref}' is not supported by toPrisma(): Prisma WHERE has no column-to-column ` +\n `comparison or arithmetic. Use toSql() or prisma.$queryRaw.`,\n );\n }\n return readContextRef(ref, options?.context, 'toPrisma');\n};\n\n/** A value source on the Prisma rail: its value, a context read, or an unresolved bind. */\nexport const readSource = (\n source: ValueSourceFields<unknown>,\n options?: ToPrismaOptions,\n): unknown =>\n matchSource<unknown>(source, {\n value: (value) => value,\n path: (ref) => readPathValue(ref, options),\n bind: (name, optional) => compileBinding(name, optional, 'toPrisma'),\n });\n\nexport const prismaRead =\n (options?: ToPrismaOptions): ReadSource =>\n (source) =>\n readSource(source, options);\n\nexport const dateConfigOf = (options?: ToPrismaOptions): ResolvedDateConfig =>\n resolveDateConfig(\n { now: options?.now, timeZone: options?.timeZone, weekStart: options?.weekStart },\n prismaRead(options),\n );\n\n/** A leaf with its value source and offset read as the Prisma rail reads them, for negation;\n * null when one reads nothing (the leaf is then false). */\nexport const settleLeaf =\n (options?: ToPrismaOptions): Settle =>\n (leaf) => {\n const comparison = typeof leaf.operator === 'string' || typeof leaf.dateOperator === 'string';\n const sourced =\n leaf.value !== undefined ||\n (typeof leaf.path === 'string' && leaf.path !== '') ||\n typeof leaf.bind === 'string';\n if (!comparison || 'aggregate' in leaf || !sourced) return leaf;\n // The complement of an ordered comparison keeps the values of other types, which Prisma's\n // Json filters can't test for.\n const shape = ruleShape(\n { field: String(leaf.field) },\n options?.map as FieldMap | undefined,\n options?.model,\n );\n if (\n (shape === 'json' || shape === 'json-path') &&\n typeof leaf.operator === 'string' &&\n ORDERED_OPERATORS.includes(leaf.operator)\n )\n throw noCompiledForm(\n 'toPrisma',\n `The complement of '${leaf.operator}' on the Json value '${leaf.field}'`,\n 'it keeps values of other types',\n );\n const value = readSource(leaf, options);\n const offset =\n leaf.offset === undefined ? undefined : readSource(leaf.offset as never, options);\n if (leaf.offset !== undefined && (offset === null || offset === undefined)) return null;\n const { path: _path, bind: _bind, bindOptional: _optional, ...rest } = leaf;\n const literal = {\n ...rest,\n value,\n ...(leaf.offset !== undefined && { offset: { value: offset } }),\n };\n if (typeof leaf.dateOperator === 'string')\n return value === null || value === undefined ? null : literal;\n return settleLiteral(literal);\n };\n","import type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport type { All, Any, Condition, IfThenElse } from '../types';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\n/**\n * The two boolean constants and how Prisma reads them.\n *\n * `{}` is match-all only where Prisma treats an empty filter as \"no constraint\": the top\n * level, an AND arm, a relation filter (`some: {}`). Inside an OR Prisma DROPS it — `OR: [x, {}]`\n * is just `x` — and `NOT: {}` is not the negation of true. `{ OR: [] }` is the documented\n * match-nothing and composes correctly everywhere.\n *\n * So the logical builders never nest a constant under OR or NOT; they fold it instead:\n * a `true` arm absorbs an OR, a `false` arm absorbs an AND, either drops out of the other,\n * and NOT of a constant is the other constant. The fold runs on compiled output, so it also\n * covers constants that arrive indirectly — `all: []`, `any: []`, `atLeast 0`, and the bridge\n * over-fetch sentinel (a bridge under `any` now over-fetches the disjunction instead of being\n * dropped by Prisma and under-fetching).\n *\n * Every arm is compiled exactly once, in order, BEFORE folding. Count operators push a\n * groupBy step into `state` as they compile, so an arm that then folds away leaves its step\n * behind — harmless (an unreferenced step is executed and ignored) and necessary: step refs\n * are positional, so nothing may be rebuilt or renumbered.\n */\nexport const matchAll = (): PrismaWhere => ({});\n/** Unknown here — a condition across a bridge: over-fetch, and let check() decide. Prisma reads\n * it as match-all, and so does every fold. */\nexport const overFetch = matchAll;\nexport const matchNothing = (): PrismaWhere => ({ OR: [] });\nconst isMatchAll = (where: PrismaWhere): boolean => Object.keys(where).length === 0;\nconst isMatchNothing = (where: PrismaWhere): boolean => {\n const keys = Object.keys(where);\n return keys.length === 1 && keys[0] === 'OR' && Array.isArray(where.OR) && where.OR.length === 0;\n};\n\n/** AND of arms: match-nothing absorbs, match-all drops, one arm stands alone. */\nexport const andWhere = (arms: PrismaWhere[]): PrismaWhere => {\n if (arms.some(isMatchNothing)) return matchNothing();\n const rest = arms.filter((arm) => !isMatchAll(arm));\n if (rest.length === 0) return matchAll();\n return rest.length === 1 ? rest[0] : { AND: rest };\n};\n\n/** OR of arms: match-all absorbs, match-nothing drops, one arm stands alone. */\nexport const orWhere = (arms: PrismaWhere[]): PrismaWhere => {\n if (arms.some(isMatchAll)) return matchAll();\n const rest = arms.filter((arm) => !isMatchNothing(arm));\n if (rest.length === 0) return matchNothing();\n return rest.length === 1 ? rest[0] : { OR: rest };\n};\n\n/** A leaf filter's complement. A bridged leaf compiles to the over-fetch sentinel `{}` —\n * unknown, not true — and its complement stays unknown; Prisma reads `NOT: {}` as match-all too. */\nexport const notLeaf = (where: PrismaWhere): PrismaWhere =>\n isMatchAll(where) ? where : { NOT: where };\n\nexport const buildAll = (\n all: All,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => andWhere(all.all.map((c) => buildCondition(c, options, state)));\n\nexport const buildAny = (\n any: Any,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => orWhere(any.any.map((c) => buildCondition(c, options, state)));\n\nexport const buildIfThenElse = (\n cond: IfThenElse,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n // if → then is: (complement of if) OR then\n // With else: (NOT(if) OR then) AND (if OR else)\n //\n // When any sub-clause hits a bridge, the precise compilation breaks. The sentinel `{}`\n // means \"unknown here\" for a bridge, and neither Prisma nor the constant fold can carry\n // that through a negation: Prisma ignores `NOT: {}` (measured: it matches everything),\n // and the fold would read it as NOT(true) = match-nothing. Either way an `if` bridge\n // collapses the implication to `then` alone, and a bridge in `then`/`else` with the\n // other branch present drops that branch. Over-fetch the whole expression and let the\n // caller's check() filter against hydrated cross-source data.\n if (\n conditionTouchesBridge(cond as Condition, options?.map as FieldMap | undefined, options?.model)\n ) {\n return overFetch();\n }\n\n // Each clause is built exactly once: a count-based array operator in `if` pushes a\n // GroupByStep as it compiles, and the same clause is reused in both conjuncts below.\n // Boolean branches (`then: true`, `else: false`, …) are compiled like any other\n // condition and folded by orWhere/andWhere/notWhere so no constant lands under OR/NOT.\n // Prisma's NOT drops a row whose `if` is NULL (a NULL field) that check() reads as false, so\n // the implication compiles the complement of `if` instead of negating it.\n const notIf = buildCondition(negate(cond.if, settleLeaf(options)), options, state);\n const thenClause = buildCondition(cond.then, options, state);\n const implication = orWhere([notIf, thenClause]);\n\n // !== undefined so `else: false` (deny branch) is emitted rather than skipped.\n if (cond.else !== undefined) {\n const ifClause = buildCondition(cond.if, options, state);\n const elseClause = buildCondition(cond.else, options, state);\n return andWhere([implication, orWhere([ifClause, elseClause])]);\n }\n\n return implication;\n};\n","import dayjs from 'dayjs';\nimport { resolveUnits } from '../amount';\nimport { shiftByUnits } from '../dateExpr';\nimport { addOffset, offsetAmount, offsetShift } from '../offset';\nimport type { DateOffset, NumberOffset } from '../types';\nimport type { ToPrismaOptions } from './types';\nimport { dateConfigOf, prismaRead, readSource } from './valueSource';\n\n// An offset moves the comparison value by what its own value source reads; null when either\n// reads nothing. Prisma has no arithmetic, so every side is known at compile time.\n\nexport const offsetNumber = (value: unknown, offset: NumberOffset, options?: ToPrismaOptions) => {\n const amount = offsetAmount(readSource(offset, options));\n return amount === null ? null : addOffset(value, amount);\n};\n\nexport const offsetDate = (\n instant: Date | null,\n offset: DateOffset,\n options?: ToPrismaOptions,\n): Date | null => {\n if (instant === null) return null;\n const move = offsetShift(readSource(offset, options));\n const units = move && resolveUnits(move[0], prismaRead(options));\n if (!move || !units) return null;\n return shiftByUnits(dayjs(instant), units, move[1], dateConfigOf(options).timeZone).toDate();\n};\n","import type { PrismaWhere } from './types';\n\n/**\n * Build a nested Prisma filter from a dot-notation field path.\n *\n * In Prisma, dot-notation always means relation traversal (unlike toSql where\n * dots mean JSON path). Each segment wraps the next from the inside out.\n *\n * @example\n * buildNestedFilter('status', { equals: 'active' })\n * // → { status: { equals: 'active' } }\n *\n * buildNestedFilter('user.profile.bio', { contains: 'hello' })\n * // → { user: { profile: { bio: { contains: 'hello' } } } }\n */\nexport const buildNestedFilter = (field: string, filter: unknown): PrismaWhere => {\n const parts = field.split('.');\n let result: unknown = filter;\n for (let i = parts.length - 1; i >= 0; i--) {\n result = { [parts[i]]: result };\n }\n return result as PrismaWhere;\n};\n","import { check } from '../check';\nimport { compileFieldLiteral } from '../compileLiteral';\nimport {\n engineGlobals,\n type PrismaProvider,\n resolveCaseInsensitive,\n supportsQueryMode,\n} from '../engineGlobals';\nimport { enumMatches } from '../enumMatch';\nimport {\n fuzzyNotCompiled,\n noCompiledForm,\n pastScalarError,\n relationNotValue,\n toManyHopError,\n unorderedOperand,\n} from '../errors';\nimport { hasNoOperand, isExistenceTest, listMembership } from '../field';\nimport { acceptsEmptyString, comparesText, type FieldShape, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { fieldEntry, optionalToOneHops, walkFieldPath, walkWith } from '../fieldMap/walk';\nimport { orderPair, readPair, splitNull } from '../number';\nimport { Operator } from '../operator';\nimport {\n COMPLEMENT_OPERATORS,\n comparatorOf,\n NEGATED_OPERATORS,\n NEGATED_RANGE_OPERATORS,\n NEGATED_STRING_OPERATORS,\n ORDERED_OPERATORS,\n SET_OPERATORS,\n} from '../operatorCatalog';\nimport { escapeLikePattern } from '../toSql/quoting';\nimport type { Condition, Rule } from '../types';\nimport { prismaAnyNull } from './anyNull';\nimport { andWhere, notLeaf, orWhere, overFetch } from './logical';\nimport { offsetNumber } from './offset';\nimport { buildCondition } from './recurse';\nimport type { PrismaWhere, ToPrismaOptions } from './types';\nimport { buildNestedFilter } from './utils';\nimport { dateConfigOf, readSource } from './valueSource';\n\nconst shapeOf = (rule: Pick<Rule, 'field' | 'coerceType'>, options?: ToPrismaOptions): FieldShape =>\n ruleShape(rule, options?.map as FieldMap | undefined, options?.model);\n\nconst isJson = (shape: FieldShape): boolean => shape === 'json' || shape === 'json-path';\n\n/** The filter value that matches a field's NULL: on Json, Prisma's AnyNull — a DB NULL, a JSON\n * null, and an absent path all read as null in check(). */\nconst nullOf = (shape: FieldShape): unknown => {\n if (!isJson(shape)) return null;\n return prismaAnyNull();\n};\n\n/** Each optional to-one hop on the path NULL: `{ rel: { col: { equals: null } } }` requires the\n * relation to exist, so a row without it needs its own arm. */\nexport const hopArms = (field: string, options?: ToPrismaOptions): PrismaWhere[] =>\n options?.map && options?.model\n ? optionalToOneHops(field, options.map as FieldMap, options.model).map((hop) =>\n buildNestedFilter(hop, { is: null }),\n )\n : [];\n\n/**\n * The arms that make a negation match the rows where the path is ABSENT — what check() reads as\n * null: the leaf NULL where the map licenses it (a nullable column, a Json path, a scalar list;\n * an `equals: null` arm on a NOT NULL column is a Prisma validation error), and each optional\n * to-one hop NULL.\n */\nexport const absentArms = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n options?: ToPrismaOptions,\n): PrismaWhere[] => {\n const shape = shapeOf(rule, options);\n const nullable =\n isJson(shape) ||\n shape === 'list' ||\n fieldEntry(rule.field, options?.map as FieldMap | undefined, options?.model)?.isRequired ===\n false;\n return [\n ...(nullable ? [buildMapAwareFilter(rule.field, { equals: nullOf(shape) }, options)] : []),\n ...hopArms(rule.field, options),\n ];\n};\n\n/** An equality filter. Prisma compiles an insensitive one to ILIKE and passes %, _ and backslash\n * through: escape them, so the value matches only itself. On Json it matches the JSON text, which\n * escapes quotes and control characters and doubles any escape, so a value holding one of those,\n * or a % or _, has no Prisma form. */\nconst equalityFilter = (\n key: 'equals' | 'not',\n value: unknown,\n mode: { mode?: 'insensitive' },\n shape: FieldShape,\n): PrismaWhere => {\n if (mode.mode && isJson(shape) && Array.isArray(value))\n throw noCompiledForm(\n 'toPrisma',\n `A case-insensitive comparison of a Json value with the list ${JSON.stringify(value)}`,\n );\n if (!mode.mode || typeof value !== 'string') return { [key]: value, ...mode };\n if (!isJson(shape)) return { [key]: escapeLikePattern(value), ...mode };\n // biome-ignore lint/suspicious/noControlCharactersInRegex: JSON text escapes them.\n if (/[%_\\\\\"\\u0000-\\u001f]/.test(value))\n throw noCompiledForm(\n 'toPrisma',\n `A case-insensitive equality on Json against '${value}'`,\n `Prisma matches the JSON text, where %, _, a backslash, a quote or a control character doesn't read as itself`,\n );\n return { [key]: value, ...mode };\n};\n\n/**\n * `mode: 'insensitive'` when the rule is case-insensitive and compares text: a String column, or a\n * string (or strings) against Json or an undeclared field — and only where the connector accepts\n * QueryMode (MySQL/SQLite are case-insensitive by collation and reject it).\n */\nconst queryMode = (\n rule: Rule,\n options: ToPrismaOptions | undefined,\n shape: FieldShape,\n value: unknown,\n): { mode?: 'insensitive' } => {\n const provider = (options?.datasource?.provider ??\n engineGlobals.get('prismaOptions.datasource.provider')) as PrismaProvider;\n return resolveCaseInsensitive(rule.caseInsensitive) &&\n supportsQueryMode(provider) &&\n comparesText(shape, value)\n ? { mode: 'insensitive' }\n : {};\n};\n\n/** The non-null values that read as empty, as filters: `''`, and `[]` on a list or Json. */\nconst emptyValues = (shape: FieldShape, emptyString: boolean): Record<string, unknown>[] => {\n if (shape === 'list') return [{ isEmpty: true }];\n const values: Record<string, unknown>[] = emptyString ? [{ equals: '' }] : [];\n return isJson(shape) ? [...values, { equals: [] }] : values;\n};\n\nconst notEmpty = (empty: Record<string, unknown>): Record<string, unknown> =>\n 'isEmpty' in empty ? { isEmpty: false } : { not: empty.equals };\n\n/**\n * Whether a field is empty — null (or absent through an optional relation), '', or an empty list\n * or Json array, as check() reads it — or, with `empty` false, not. One form for the emptiness\n * operators and the array ones.\n */\nexport const emptinessWhere = (\n field: string,\n shape: FieldShape,\n empty: boolean,\n emptyString: boolean,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n const at = (filter: unknown) => buildMapAwareFilter(field, filter, options);\n const values = emptyValues(shape, emptyString);\n if (empty)\n return orWhere([\n at({ equals: nullOf(shape) }),\n ...hopArms(field, options),\n ...values.map((value) => at(value)),\n ]);\n // A list has no `not`; `isEmpty: false` is NULL — so false — for a NULL list.\n return andWhere([\n ...(shape === 'list' ? [] : [at({ not: nullOf(shape) })]),\n ...values.map((value) => at(notEmpty(value))),\n ]);\n};\n\n/** A to-one relation as a field: it exists or it doesn't. */\nconst buildRelationRule = (rule: Rule, options?: ToPrismaOptions): PrismaWhere => {\n if (!isExistenceTest(rule)) throw relationNotValue(rule.field);\n const at = (filter: unknown) => buildMapAwareFilter(rule.field, filter, options);\n // check() answers which way it asks: for a missing relation, or a present one.\n return check({ ...rule, field: 'relation' } as Condition, { relation: null }) === true\n ? orWhere([at({ is: null }), ...hopArms(rule.field, options)])\n : at({ isNot: null });\n};\n\nexport const buildFieldRule = (rule: Rule, options?: ToPrismaOptions): PrismaWhere => {\n const at = (filter: unknown) => buildMapAwareFilter(rule.field, filter, options);\n const shape = shapeOf(rule, options);\n const arms = () => absentArms(rule, options);\n const emptyString = acceptsEmptyString(\n rule,\n options?.map as FieldMap | undefined,\n options?.model,\n );\n\n if (shape === 'relation') return buildRelationRule(rule, options);\n\n switch (rule.operator) {\n // A list filter has no `not`: its complements negate `equals` at the WHERE level.\n case Operator.exists:\n return shape === 'list' ? notLeaf(at({ equals: null })) : at({ not: nullOf(shape) });\n case Operator.notExists: {\n const absent = arms();\n return absent.length ? orWhere(absent) : at({ equals: nullOf(shape) });\n }\n // The emptiness operators OR / AND at the WHERE level: Prisma rejects a mixed null + string\n // list in `in` / `notIn`. isEmpty carries the leaf null arm unconditionally — it is the\n // operator.\n case Operator.isEmpty:\n case Operator.notEmpty:\n return emptinessWhere(\n rule.field,\n shape,\n rule.operator === Operator.isEmpty,\n emptyString,\n options,\n );\n }\n\n // Nothing to compare against (see hasNoOperand): no row matches; a negation keeps the absent\n // rows only.\n const value = resolveRuleValue(rule, options);\n if (hasNoOperand(rule, value))\n return orWhere(NEGATED_OPERATORS.includes(rule.operator) ? arms() : []);\n\n if (shape === 'list' && SET_OPERATORS.includes(rule.operator) && Array.isArray(value))\n return buildCondition(listMembership(rule, value), options);\n // Prisma's list filters take no null element.\n if (shape === 'list' && Array.isArray(value) && value.includes(null))\n throw noCompiledForm('toPrisma', `A list holding null in '${rule.field}'`);\n\n // Prisma's list filters have no case-insensitive mode.\n if (\n shape === 'list' &&\n resolveCaseInsensitive(rule.caseInsensitive) &&\n comparesText('text', value)\n )\n throw noCompiledForm('toPrisma', `A case-insensitive comparison on the list '${rule.field}'`);\n\n // An enum compares against its declared values (see enumMatches).\n const enumEntry =\n shape === 'enum'\n ? fieldEntry(rule.field, options?.map as FieldMap | undefined, options?.model)\n : undefined;\n const matched = enumEntry\n ? enumMatches(rule, value, enumEntry, options?.map as FieldMap | undefined)\n : null;\n if (matched) {\n const listed = at({ in: matched.values });\n return matched.matchesNull ? orWhere([listed, ...arms()]) : listed;\n }\n\n // Prisma's `not` / `notIn` compile to SQL `<>` / `NOT IN`, which drop NULL rows under\n // three-valued logic; a negation is the complement of its positive form in check(), so it\n // carries the absent arms.\n if (SET_OPERATORS.includes(rule.operator)) {\n const { values, hasNull } = splitNull(value);\n // Json has no `in`: one `equals` per value.\n const ci = queryMode(rule, options, shape, values);\n const listed = isJson(shape)\n ? rule.operator === Operator.in\n ? orWhere(values.map((v) => at(equalityFilter('equals', v, ci, shape))))\n : andWhere(values.map((v) => at(equalityFilter('not', v, ci, shape))))\n : at({ [rule.operator]: values, ...ci });\n if (rule.operator === Operator.in) return hasNull ? orWhere([listed, ...arms()]) : listed;\n return hasNull ? andWhere([listed, at({ not: nullOf(shape) })]) : orWhere([listed, ...arms()]);\n }\n\n // A string operator's positive form; a Json value contains a string's substring, or a\n // member of an array.\n const positive = (operator: string): PrismaWhere => {\n if (!isJson(shape) || operator !== Operator.contains)\n return at(comparisonFilter({ ...rule, operator: operator as Operator }, options));\n const member = at({ array_contains: [jsonMember(rule, value, options, shape)] });\n return typeof value === 'string'\n ? orWhere([at(comparisonFilter({ ...rule, operator }, options)), member])\n : member;\n };\n if (rule.operator === Operator.contains) return positive(Operator.contains);\n\n // A negated string operator or range negates its positive form at the WHERE level: no field\n // filter carries it on Json or a list. Prisma's Json filters can't test a value's type — the\n // positive is NULL for the other types — so on Json the complement, which keeps them, has no\n // form.\n const complemented = NEGATED_STRING_OPERATORS.includes(rule.operator)\n ? COMPLEMENT_OPERATORS[rule.operator]\n : NEGATED_RANGE_OPERATORS.includes(rule.operator)\n ? Operator.between\n : undefined;\n if (complemented) {\n if (isJson(shape))\n throw noCompiledForm(\n 'toPrisma',\n `'${rule.operator}' on the Json value '${rule.field}'`,\n `it keeps values of other types`,\n );\n return orWhere([notLeaf(positive(complemented)), ...arms()]);\n }\n\n const filter = at(comparisonFilter(rule, options));\n // `equals null` is the is-null sentinel: a path through an absent relation is null too.\n if (rule.operator === Operator.equals && value === null)\n return orWhere([filter, ...hopArms(rule.field, options)]);\n if (rule.operator === Operator.notEquals && shape === 'list')\n return value === null\n ? notLeaf(at({ equals: null }))\n : orWhere([notLeaf(at({ equals: value })), ...arms()]);\n return rule.operator === Operator.notEquals && value !== null\n ? orWhere([filter, ...arms()])\n : filter;\n};\n\n/** The comparison value: the rule's value source, coerced to the field, moved by its offset. */\nconst resolveRuleValue = (rule: Rule, options?: ToPrismaOptions): unknown => {\n const value = compileFieldLiteral(\n rule,\n readSource(rule, options),\n walkWith(rule.field, options?.map as FieldMap | undefined, options?.model),\n 'toPrisma',\n () => dateConfigOf(options).timeZone,\n );\n return rule.offset === undefined ? value : offsetNumber(value, rule.offset, options);\n};\n\n/** A leaf's comparison as a Prisma field filter, in the form its field's shape takes (a negated\n * range is its positive form; the caller negates the clause). */\nexport const comparisonFilter = (rule: Rule, options?: ToPrismaOptions): unknown => {\n const fuzzy = fuzzyNotCompiled(rule);\n if (fuzzy) throw fuzzy;\n const shape = shapeOf(rule, options);\n const val = () => resolveRuleValue(rule, options);\n const ci = (value: unknown) => queryMode(rule, options, shape, value);\n // String matching on Json is `string_*`; containment on a list is `has`.\n const match = (op: 'contains' | 'startsWith' | 'endsWith') => {\n const value = val();\n if (shape === 'list') {\n if (op !== 'contains')\n throw new Error(`Operator '${op}' does not apply to the list '${rule.field}'.`);\n return { has: value };\n }\n const key = isJson(shape) ? JSON_MATCH[op] : op;\n // Prisma matches with LIKE and passes % and _ through: escape them, as toSql does.\n const literal = typeof value === 'string' ? escapeLikePattern(value) : value;\n return { [key]: literal, ...ci(value) };\n };\n\n const unordered = unorderedOperand(rule.operator, val());\n if (unordered) throw unordered;\n const comparator = comparatorOf(rule.operator, 'field');\n if (comparator && ORDERED_OPERATORS.includes(rule.operator)) return { [comparator]: val() };\n\n switch (rule.operator) {\n case Operator.equals: {\n const value = val() ?? nullOf(shape);\n return equalityFilter('equals', value, ci(value), shape);\n }\n case Operator.notEquals: {\n const value = val() ?? nullOf(shape);\n return equalityFilter('not', value, ci(value), shape);\n }\n // A field's set membership is built by buildFieldRule; an aggregate's `having` takes it here.\n case Operator.in:\n case Operator.notIn:\n return { [rule.operator]: val() };\n case Operator.contains:\n return match('contains');\n case Operator.startsWith:\n return match('startsWith');\n case Operator.endsWith:\n return match('endsWith');\n case Operator.matches:\n case Operator.notMatches:\n throw noCompiledForm('toPrisma', `'${rule.operator}'`, 'Prisma has no pattern filter');\n // The POSITIVE range for both: `buildFieldRule` negates the whole clause for notBetween,\n // because a field filter cannot carry a two-sided negation.\n case Operator.between:\n case Operator.notBetween: {\n const [min, max] = orderPair(readPair(val(), rule.operator));\n return { gte: min, lte: max };\n }\n default:\n // Negated string operators / emptiness / existence are built at the WHERE level.\n throw new Error(`Operator '${rule.operator}' is built by buildFieldRule`);\n }\n};\n\n/** A Json array member Prisma can match exactly: `array_contains` reads an object or a list\n * partially (its fields / members contained), unlike check()'s equal member, and compares a\n * string case-sensitively. */\nconst jsonMember = (\n rule: Rule,\n value: unknown,\n options: ToPrismaOptions | undefined,\n shape: FieldShape,\n): unknown => {\n if (typeof value === 'object' && value !== null)\n throw new Error(\n `Membership of an object or a list in the Json array '${rule.field}' has no exact Prisma form; use toSql() or check().`,\n );\n if (queryMode(rule, options, shape, value).mode)\n throw noCompiledForm('toPrisma', `A case-insensitive member of the Json array '${rule.field}'`);\n return value;\n};\n\nconst JSON_MATCH = {\n contains: 'string_contains',\n startsWith: 'string_starts_with',\n endsWith: 'string_ends_with',\n} as const;\n\n/**\n * Build the Prisma WHERE for a leaf filter on `field`, map-aware when a map+model is available —\n * the one place every toPrisma leaf (field, date, array) nests its filter.\n * - JSON field mid-path → Prisma JSON path syntax: { metadata: { path: ['theme'], equals: 'dark' } }\n * - All other paths → standard nested relation filter\n */\nexport const buildMapAwareFilter = (\n field: string,\n filter: unknown,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n if (!options?.map || !options?.model) {\n return buildNestedFilter(field, filter);\n }\n\n const walkResult = walkFieldPath(field, options.map as FieldMap, options.model);\n const toMany = walkResult.hops.find((hop) => hop.entry.isList);\n if (toMany) throw toManyHopError(field, toMany);\n const parts = field.split('.');\n\n switch (walkResult.kind) {\n case 'fallback':\n case 'direct':\n return buildNestedFilter(field, filter);\n\n case 'bridge':\n return overFetch();\n\n case 'past-scalar':\n throw pastScalarError(field, walkResult.column);\n\n case 'json-path': {\n // Merge the json path array into the leaf filter, then nest normally\n const jsonFilter = { path: walkResult.jsonPath, ...(filter as object) };\n const fieldUpToJson = parts.slice(0, walkResult.stopIndex).join('.');\n return buildNestedFilter(fieldUpToJson, jsonFilter);\n }\n }\n};\n","import type { FieldMap } from '../fieldMap/types';\nimport { walkFieldPath } from '../fieldMap/walk';\nimport { modelOf } from '../own';\nimport { notLeaf } from './logical';\nimport { relationKeys } from './relationUtils';\nimport type { GroupByStep, PrismaBuildState, PrismaWhere } from './types';\nimport { buildNestedFilter } from './utils';\n\n// A count or aggregate over a relation compiles to a groupBy step on the related model and a\n// membership filter on the parent: to-one relations, then the to-many relation grouped over.\n\ntype GroupPath = {\n /** The dotted to-one hops before the to-many relation ('' when it is on the model itself). */\n through: string;\n /** The model grouped (the to-many relation's target). */\n target: string;\n /** The parent's key and the target's key that point at it. */\n parentKey: string;\n targetKey: string;\n};\n\n/** The path a group step aggregates over; `rule` names the rule kind in errors. */\nexport const groupPath = (\n field: string,\n map: FieldMap,\n model: string,\n rule: 'Count operators' | 'Aggregate rules',\n): GroupPath => {\n const segments = field.split('.');\n const walk = walkFieldPath(field, map, model);\n if (walk.kind !== 'direct' || walk.entry.kind !== 'object') {\n const on = walk.hops.at(-1)?.entry.type ?? model;\n throw new Error(\n `Field '${segments[walk.hops.length]}' is not a relation in model '${on}'. ${rule} require a relation field.`,\n );\n }\n const toMany = walk.hops.find((hop) => hop.entry.isList);\n if (toMany)\n throw new Error(\n `Intermediate field '${toMany.field}' in path '${field}' is a list relation. ` +\n `Only the final segment can be a list relation for ${rule.toLowerCase()}.`,\n );\n if (!walk.entry.isList)\n throw new Error(\n `Field '${walk.column}' is not a list relation in model '${walk.model}'. ${rule} only apply to one-to-many or many-to-many relations.`,\n );\n const keys = relationKeys(map, walk.model, walk.entry);\n if (!keys) {\n const implicitM2M = Object.values(modelOf(map, walk.entry.type)?.fields ?? {}).some(\n (f) => f.kind === 'object' && f.type === walk.model && f.isList && !f.fromFields?.length,\n );\n throw new Error(\n implicitM2M\n ? `'${walk.model}.${walk.column}' is an implicit many-to-many relation. ${rule} require an ` +\n `explicit join model with a FK — convert to an explicit @relation or use prisma.$queryRaw.`\n : `Cannot determine FK relationship between '${walk.model}' and '${walk.entry.type}'. ` +\n `Ensure the FieldMap contains both sides of the relation.`,\n );\n }\n if (keys.length > 1)\n throw new Error(\n `${rule} do not support composite FK relations ('${walk.model}.${walk.column}'). Use prisma.$queryRaw.`,\n );\n return {\n through: walk.hops.map((hop) => hop.field).join('.'),\n target: walk.entry.type,\n parentKey: keys[0].here,\n targetKey: keys[0].there,\n };\n};\n\n/**\n * Push a groupBy step and return the parents it selects — or, with `complement`, the parents it\n * doesn't. A groupBy only yields groups with at least one row, so a parent with no (matching)\n * children never appears in it: a predicate that holds for that empty case compiles as the\n * complement of the step for its negation.\n */\nexport const groupMembership = (\n state: PrismaBuildState,\n path: GroupPath,\n where: PrismaWhere,\n having: Record<string, unknown>,\n complement: boolean,\n): PrismaWhere => {\n const step: GroupByStep = {\n operation: 'groupBy',\n model: path.target,\n args: { by: [path.targetKey], where, having },\n extract: path.targetKey,\n };\n const ref = { __step: state.steps.length };\n state.steps.push(step);\n const membership = { [path.parentKey]: { in: ref } };\n const selected = complement ? notLeaf(membership) : membership;\n return path.through ? buildNestedFilter(path.through, selected) : selected;\n};\n","import { unknownAggregateMode, windowUnsupported } from '../errors';\nimport { checkField } from '../field';\nimport { isJsonEntry } from '../fieldMap/entry';\nimport type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport { AGGREGATE_MODES, NEGATED_RANGE_OPERATORS } from '../operatorCatalog';\nimport { fieldOf } from '../own';\nimport type { AggregateRule, Condition, Rule } from '../types';\nimport { hasWindow, windowRewrite } from '../window';\nimport { comparisonFilter, hopArms } from './field';\nimport { groupMembership, groupPath } from './groupStep';\nimport { matchAll, matchNothing, notLeaf, orWhere, overFetch } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\nexport const buildAggregateRule = (\n rule: AggregateRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n if (hasWindow(rule)) {\n const rewritten = windowRewrite(rule);\n if (!rewritten) throw windowUnsupported('toPrisma');\n return buildCondition(rewritten, options, state);\n }\n\n if (!options?.map || !options?.model || !state) {\n throw new Error(\n `Aggregate rules require a FieldMap and model to generate a Prisma plan. ` +\n `Pass { map, model } options to toPrisma().`,\n );\n }\n\n if (!AGGREGATE_MODES.includes(rule.aggregate.mode))\n throw unknownAggregateMode(rule.aggregate.mode);\n if (!rule.aggregate.field) {\n throw new Error(\n `Prisma aggregate rules require aggregate.field to specify the numeric field on the related model.`,\n );\n }\n\n return buildAggregateStep(\n rule,\n options as ToPrismaOptions & { map: FieldMap; model: string },\n state,\n );\n};\n\nconst buildAggregateStep = (\n rule: AggregateRule,\n options: ToPrismaOptions & { map: FieldMap; model: string },\n state: PrismaBuildState,\n): PrismaWhere => {\n const path = groupPath(rule.field, options.map, options.model, 'Aggregate rules');\n // A condition that crosses a bridge is unknown here: the step would aggregate every child.\n // Over-fetch and let check() decide.\n if (rule.condition && conditionTouchesBridge(rule.condition, options.map, path.target))\n return overFetch();\n const itemField = rule.aggregate.field ?? '';\n const item = fieldOf(options.map, path.target, itemField);\n if (!item)\n throw new Error(`aggregate.field '${itemField}' does not exist on model '${path.target}'.`);\n if (item.kind !== 'scalar' || isJsonEntry(item))\n throw new Error(\n `aggregate.field '${itemField}' on model '${path.target}' must be a numeric scalar, got ${item.kind === 'scalar' ? 'Json' : `'${item.kind}'`}.`,\n );\n\n // The comparison as check() makes it, with its operand read; nothing to compare against\n // matches nothing.\n const leaf = settleLeaf(options)(rule as unknown as Record<string, unknown>);\n if (leaf === null) return matchNothing();\n // A parent with no matching children has the empty aggregate (0) and no group: when the\n // comparison holds for it, select the parents outside the groups where it fails.\n const holdsEmpty =\n checkField(leaf as unknown as Rule, [{}], undefined, undefined, {}, { value: 0 }) === true;\n const target = (holdsEmpty ? negate(leaf as Condition) : leaf) as unknown as Rule;\n const filter = comparisonFilter(target, options);\n const aggregate = { [rule.aggregate.mode === 'sum' ? '_sum' : '_avg']: filter };\n // Prisma can't negate a two-sided bound inside a field filter; NOT the having clause instead.\n const having = NEGATED_RANGE_OPERATORS.includes(target.operator)\n ? notLeaf({ [itemField]: aggregate })\n : { [itemField]: aggregate };\n\n const where = rule.condition\n ? buildCondition(rule.condition, { ...options, model: path.target }, state)\n : matchAll();\n const membership = groupMembership(state, path, where, having, holdsEmpty);\n // check() reads the array under an absent to-one relation as empty.\n return holdsEmpty ? orWhere([membership, ...hopArms(rule.field, options)]) : membership;\n};\n","import { conditionRequired, countRequired } from '../errors';\nimport type { FieldMap } from '../fieldMap/types';\nimport { ArrayOperator } from '../operator';\nimport { comparatorOf } from '../operatorCatalog';\nimport type { ArrayRule } from '../types';\nimport { holdsForEmpty } from './array';\nimport { groupMembership, groupPath } from './groupStep';\nimport { matchAll } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\n/**\n * Generate a multi-step groupBy plan for count-based relation filtering.\n *\n * For { field: 'posts', arrayOperator: 'atLeast', count: 3, condition: ... } on User:\n * step 0: groupBy Post by authorId where <condition> having _count >= 3\n * where: { id: { in: { __step: 0 } } }\n *\n * The step is pushed into state.steps and the WHERE clause is returned directly.\n */\nexport const buildCountStep = (\n rule: ArrayRule,\n options: ToPrismaOptions & { map: FieldMap; model: string },\n state: PrismaBuildState,\n): PrismaWhere => {\n if (!rule.field) throw new Error('toPrisma: count-based ArrayRule requires a field path');\n const path = groupPath(rule.field, options.map, options.model, 'Count operators');\n\n // Same contract as check(): a count operator without a condition or count is an\n // authoring error, not a default.\n if (rule.condition === undefined) throw conditionRequired(rule.arrayOperator);\n if (rule.count === undefined) throw countRequired(rule.arrayOperator);\n const count = rule.count;\n if (rule.arrayOperator === ArrayOperator.atLeast && count === 0) return matchAll();\n\n const where = buildCondition(rule.condition, { ...options, model: path.target }, state);\n // The zero-inclusive operators hold for a parent with no matching children, which no group\n // carries: atMost N = NOT(atLeast N+1), exactly 0 = NOT(atLeast 1).\n const complement = holdsForEmpty(rule);\n const having = complement\n ? countHaving(\n ArrayOperator.atLeast,\n rule.arrayOperator === ArrayOperator.atMost ? count + 1 : 1,\n path.targetKey,\n )\n : countHaving(rule.arrayOperator, count, path.targetKey);\n return groupMembership(state, path, where, having, complement);\n};\n\n// Prisma 6.x having format: field first, then _count nested inside.\n// e.g. { fanUserUuid: { _count: { gte: 3 } } } — NOT { _count: { _all: { gte: 3 } } }\nconst countHaving = (op: ArrayOperator, count: number, field: string): Record<string, unknown> => {\n const bound = comparatorOf(op, 'array');\n if (!bound) throw new Error(`'${op}' does not count`);\n return { [field]: { _count: { [bound]: count } } };\n};\n","import { check } from '../check';\nimport {\n conditionRequired,\n fieldlessArrayError,\n noCompiledForm,\n unknownOperator,\n windowUnsupported,\n} from '../errors';\nimport { type FieldShape, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge, relationTarget } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport { ArrayOperator } from '../operator';\nimport { ARRAY_COUNT_OPERATORS, ARRAY_MONOTONE_OPERATORS } from '../operatorCatalog';\nimport type { AggregateRule, ArrayRule, Condition } from '../types';\nimport { hasWindow, windowRewrite } from '../window';\nimport { buildCountStep } from './countStep';\nimport { buildMapAwareFilter, emptinessWhere, hopArms } from './field';\nimport { orWhere, overFetch } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\n/** A rule over an array, which check() reads as empty when a to-one relation on its path is\n * absent: where the rule holds for an empty array, so does the row with no such relation. */\nexport const buildArrayRule = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n const where = compileArrayRule(rule, options, state);\n // An array held in a column carries its own absent arms (see emptinessWhere).\n return rule.field && holdsForEmpty(rule) && !isValueArray(rule.field, options)\n ? orWhere([where, ...hopArms(rule.field, options)])\n : where;\n};\n\n/** Whether a rule holds over an empty array — check() answers, as it reads one. */\nexport const holdsForEmpty = (rule: ArrayRule | AggregateRule): boolean =>\n check({ ...rule, field: 'items' } as Condition, { items: [] }) === true;\n\nconst compileArrayRule = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n if (hasWindow(rule)) {\n const rewritten = windowRewrite(rule);\n if (!rewritten) throw windowUnsupported('toPrisma');\n return buildCondition(rewritten, options, state);\n }\n\n // A condition that crosses a bridge is unknown here: unless a broader condition only widens the\n // rule, over-fetch every parent and let check() decide.\n if (\n rule.condition !== undefined &&\n !ARRAY_MONOTONE_OPERATORS.includes(rule.arrayOperator) &&\n conditionTouchesBridge(\n rule.condition,\n options?.map as FieldMap | undefined,\n childOptionsFor(rule, options)?.model,\n )\n )\n return overFetch();\n\n // Count operators generate a full WHERE clause (step ref) — skip the nested-filter wrapper\n if (ARRAY_COUNT_OPERATORS.includes(rule.arrayOperator)) {\n if (options?.map && options?.model && state) {\n return buildCountStep(\n rule,\n options as ToPrismaOptions & { map: FieldMap; model: string },\n state,\n );\n }\n throw new Error(\n `ArrayOperator '${rule.arrayOperator}' requires a FieldMap and model to generate a multi-step plan. ` +\n `Pass { map, model } options to toPrisma(). Without them, use prisma.$queryRaw for count-based relation filtering.`,\n );\n }\n\n if (!rule.field) {\n throw fieldlessArrayError('toPrisma');\n }\n const { field } = rule;\n if (isValueArray(field, options))\n return buildValueArrayRule(\n rule,\n field,\n ruleShape({ field }, options?.map as FieldMap | undefined, options?.model),\n options,\n );\n const filter = buildArrayLeafFilter(rule, options, state);\n return buildMapAwareFilter(rule.field, filter, options);\n};\n\nconst isValueArray = (field: string, options?: ToPrismaOptions): boolean => {\n const shape = ruleShape({ field }, options?.map as FieldMap | undefined, options?.model);\n return shape === 'list' || shape === 'json' || shape === 'json-path';\n};\n\n/** An array held in a column — a scalar list or a Json array. An absent or NULL one is empty,\n * as in check(); Prisma has no filter over its elements. */\nconst buildValueArrayRule = (\n rule: ArrayRule,\n field: string,\n shape: FieldShape,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n switch (rule.arrayOperator) {\n case ArrayOperator.empty:\n case ArrayOperator.notEmpty:\n return emptinessWhere(\n field,\n shape,\n rule.arrayOperator === ArrayOperator.empty,\n false,\n options,\n );\n default:\n throw noCompiledForm(\n 'toPrisma',\n `'${rule.arrayOperator}' over the ${shape === 'list' ? 'list' : 'Json array'} '${field}'`,\n shape === 'list' ? \"test a list's membership with 'contains'\" : undefined,\n );\n }\n};\n\nconst childOptionsFor = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n): ToPrismaOptions | undefined => {\n if (!options?.map || !options?.model || !rule.field) return options;\n const target = relationTarget(rule.field, options.map as FieldMap, options.model);\n return target ? { ...options, model: target } : options;\n};\n\nconst buildArrayLeafFilter = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): unknown => {\n // Inner condition runs against the relation target model, not the parent.\n // Without this, JSON-path and bridge detection misfire inside some/every/none.\n const childOptions = childOptionsFor(rule, options);\n switch (rule.arrayOperator) {\n // Prisma's `every` passes a child whose condition is NULL (a NULL field), which check()\n // fails: no child in the exact complement instead.\n case ArrayOperator.all:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return {\n none: buildCondition(negate(rule.condition, settleLeaf(childOptions)), childOptions, state),\n };\n\n case ArrayOperator.any:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return { some: buildCondition(rule.condition, childOptions, state) };\n\n case ArrayOperator.none:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return { none: buildCondition(rule.condition, childOptions, state) };\n\n case ArrayOperator.empty:\n return { none: {} };\n\n case ArrayOperator.notEmpty:\n return { some: {} };\n\n default:\n throw unknownOperator((rule as ArrayRule).arrayOperator, 'array');\n }\n};\n","import { resolveExpr } from '../amount';\nimport { coerceDateLiteral } from '../date';\nimport { isDateExpr, resolveDateExprRange, resolvePointForOperator } from '../dateExpr';\nimport { noCompiledForm, rangeExprRequired, unknownOperator } from '../errors';\nimport { isRelationEntry } from '../fieldMap/entry';\nimport { entryKind, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { orderPair, readPair } from '../number';\nimport { DateOperator } from '../operator';\nimport {\n comparatorOf,\n FieldKind,\n NEGATED_OPERATORS,\n NEGATED_RANGE_OPERATORS,\n} from '../operatorCatalog';\nimport type { DateRule } from '../types';\nimport { absentArms, buildMapAwareFilter } from './field';\nimport { notLeaf, orWhere } from './logical';\nimport { offsetDate } from './offset';\nimport type { PrismaWhere, ToPrismaOptions } from './types';\nimport { dateConfigOf, prismaRead, readSource } from './valueSource';\n\n// Negated date operators keep NULL rows, as the scalar negations in ./field.ts do. A range\n// complement is a WHERE-level NOT: a field-level `not` over `{ gte, lte }` distributes over both\n// keys and matches nothing.\nexport const buildDateRule = (rule: DateRule, options?: ToPrismaOptions): PrismaWhere => {\n // Prisma filters a date only on a DateTime column: Json and String compare text, a number a\n // number.\n const map = options?.map as FieldMap | undefined;\n const shape = ruleShape({ field: rule.field }, map, options?.model);\n if (shape === 'json' || shape === 'json-path')\n throw noCompiledForm(\n 'toPrisma',\n `A date rule on the Json value '${rule.field}'`,\n 'Prisma compares Json text',\n );\n const entry = fieldEntry(rule.field, map, options?.model);\n if (entry && !isRelationEntry(entry) && entryKind(entry) !== FieldKind.DateTime)\n throw noCompiledForm(\n 'toPrisma',\n `A date rule on the ${entry.type} field '${rule.field}'`,\n `Prisma compares it as ${entry.type}, not as an instant`,\n );\n const arms = NEGATED_OPERATORS.includes(rule.dateOperator) ? absentArms(rule, options) : [];\n const filter = buildDateLeafFilter(rule, options);\n // Nothing to compare against — a null path, bind, offset or magnitude: no row matches, and a\n // negation keeps the absent rows only, as on the other rails.\n if (filter === null) return orWhere(arms);\n const positive = buildMapAwareFilter(rule.field, filter, options);\n const nested = NEGATED_RANGE_OPERATORS.includes(rule.dateOperator) ? notLeaf(positive) : positive;\n return orWhere([nested, ...arms]);\n};\n\nconst buildDateLeafFilter = (rule: DateRule, options?: ToPrismaOptions): unknown => {\n const config = dateConfigOf(options);\n const read = prismaRead(options);\n const shift = (instant: Date | null): Date | null =>\n rule.offset === undefined ? instant : offsetDate(instant, rule.offset, options);\n const instantOf = (value: unknown): Date | null => {\n if (value === null || value === undefined) return null;\n if (!isDateExpr(value)) return coerceDateLiteral(value, config.timeZone);\n const expr = resolveExpr(value, read);\n return expr && resolvePointForOperator(expr, rule.dateOperator, config).toDate();\n };\n const source = () => readSource(rule, options);\n const point = (): Date | null => shift(instantOf(source()));\n const range = (): [Date, Date] | null => {\n const v = source();\n if (v === null || v === undefined) return null;\n const ends = readPair(v, rule.dateOperator).map(instantOf);\n if (ends[0] === null || ends[1] === null) return null;\n const [start, end] = orderPair(ends as Date[]).map(shift);\n return start && end ? [start, end] : null;\n };\n const window = (): [Date, Date] | null => {\n const v = source();\n if (v === null || v === undefined) return null;\n if (!isDateExpr(v)) throw rangeExprRequired(rule.dateOperator);\n const expr = resolveExpr(v, read);\n if (!expr) return null;\n const [start, end] = resolveDateExprRange(expr, config);\n return [start.toDate(), end.toDate()];\n };\n const one = (key: 'lt' | 'gt' | 'lte' | 'gte') => {\n const at = point();\n return at === null ? null : { [key]: at };\n };\n const two = (ends: [Date, Date] | null) => (ends ? { gte: ends[0], lte: ends[1] } : null);\n\n const comparator = comparatorOf(rule.dateOperator, 'date');\n if (comparator) return one(comparator as 'lt' | 'gt' | 'lte' | 'gte');\n\n switch (rule.dateOperator) {\n case DateOperator.within:\n case DateOperator.notWithin:\n return two(window());\n\n case DateOperator.between:\n case DateOperator.notBetween:\n return two(range());\n\n case DateOperator.dayIn:\n case DateOperator.dayNotIn:\n throw noCompiledForm('toPrisma', `'${rule.dateOperator}'`);\n\n default:\n throw unknownOperator((rule as DateRule).dateOperator, 'date');\n }\n};\n","import { ambiguousCondition } from '../errors';\nimport { refuseRelationsValue } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { rejectScopedField } from '../scope';\nimport { conditionShape } from '../traverse';\nimport type { Condition } from '../types';\nimport { buildAggregateRule } from './aggregate';\nimport { buildArrayRule } from './array';\nimport { buildDateRule } from './date';\nimport { buildFieldRule } from './field';\nimport { buildAll, buildAny, buildIfThenElse, matchNothing } from './logical';\nimport { setConditionBuilder } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\nexport const buildCondition = (\n condition: Condition,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n // Prisma's empty OR matches nothing — `false` compiles, same as toSql's FALSE. `{}` is\n // match-all only at the top level and under AND; the logical builders fold both\n // constants so neither ever lands under OR or NOT (see logical.ts).\n if (typeof condition === 'boolean') {\n return condition ? {} : matchNothing();\n }\n rejectScopedField(condition, 'toPrisma');\n\n const shape = conditionShape(condition as Record<string, unknown>);\n if (shape === 'field' || shape === 'date')\n refuseRelationsValue(\n (condition as { field: string }).field,\n options?.map as FieldMap | undefined,\n options?.model,\n );\n const node = condition as never;\n switch (shape) {\n case 'all':\n return buildAll(node, options, state);\n case 'any':\n return buildAny(node, options, state);\n case 'if':\n return buildIfThenElse(node, options, state);\n case 'array':\n return buildArrayRule(node, options, state);\n case 'aggregate':\n return buildAggregateRule(node, options, state);\n case 'date':\n return buildDateRule(node, options);\n case 'field':\n return buildFieldRule(node, options);\n default:\n throw ambiguousCondition();\n }\n};\n\nsetConditionBuilder(buildCondition);\n","import type { GroupByStep, ToPrismaResult, WhereStep } from './types';\n\n/**\n * Execute a Prisma query plan produced by toPrisma().\n *\n * The plan is a flat list of steps where all but the last are `groupBy` steps\n * that feed results (via { __step: N } sentinels) into subsequent steps.\n * The final step is always a `where` step whose resolved WHERE clause is returned.\n *\n * @param result - Result from toPrisma()\n * @param prismaDelegate - Map of camelCase model name → Prisma delegate\n * e.g. { post: prisma.post, user: prisma.user }\n * @returns The resolved WHERE clause (ready for findMany/count/etc.)\n *\n * @example\n * const plan = toPrisma(condition, { map, model: 'User' });\n * const where = await executePrismaPlan(plan, { post: prisma.post });\n * await prisma.user.findMany({ where });\n */\nexport const executePrismaPlan = async (\n plan: ToPrismaResult,\n prismaDelegate: Record<string, Record<string, (...args: unknown[]) => unknown>>,\n): Promise<Record<string, unknown>> => {\n const groupBySteps = plan.steps.filter((s): s is GroupByStep => s.operation === 'groupBy');\n const whereStep = plan.steps.find((s): s is WhereStep => s.operation === 'where');\n\n if (!whereStep) {\n throw new Error('executePrismaPlan: result has no where step');\n }\n\n const stepResults: unknown[][] = [];\n\n for (const step of groupBySteps) {\n const modelKey = step.model.charAt(0).toLowerCase() + step.model.slice(1);\n const delegate = prismaDelegate[modelKey];\n if (!delegate) {\n throw new Error(\n `executePrismaPlan: no delegate for model '${step.model}'. ` +\n `Ensure prismaDelegate has a key '${modelKey}'.`,\n );\n }\n const rows = await delegate[step.operation](step.args);\n // A related row whose join FK is null belongs to no root entity, so it can\n // never contribute a membership id. groupBy over a nullable FK still emits a\n // null group, and Prisma rejects a mixed null+string array in `in`/`notIn`,\n // so drop nulls here at the gather point. An empty result stays a real `[]`:\n // `in: []` matches nothing and `notIn: []` matches everything, both correct.\n stepResults.push(\n (rows as Record<string, unknown>[])\n .map((r) => r[step.extract])\n .filter((v) => v !== null && v !== undefined),\n );\n }\n\n return resolveStepRefs(whereStep.where, stepResults) as Record<string, unknown>;\n};\n\n/**\n * Recursively replace { __step: N } sentinels with the corresponding step result array.\n */\nconst resolveStepRefs = (obj: unknown, stepResults: unknown[][]): unknown => {\n if (obj === null || obj === undefined) return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => resolveStepRefs(item, stepResults));\n }\n\n if (typeof obj === 'object') {\n // Only plain objects are walked — a compiled leaf like a Date (or Decimal/\n // Buffer) must pass through untouched; entry-copying it would strip its\n // prototype and hand Prisma an empty object.\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) return obj;\n const record = obj as Record<string, unknown>;\n\n if ('__step' in record && typeof record.__step === 'number') {\n const idx = record.__step;\n if (idx >= stepResults.length) {\n throw new Error(\n `Step ref __step: ${idx} out of range (${stepResults.length} steps executed)`,\n );\n }\n return stepResults[idx];\n }\n\n const resolved: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(record)) {\n resolved[key] = resolveStepRefs(value, stepResults);\n }\n return resolved;\n }\n\n return obj;\n};\n","import { resolveFieldMap } from '../fieldMap/resolveFieldMap';\nimport type { Condition } from '../types';\nimport { buildCondition } from './condition';\nimport type { PrismaBuildState, ToPrismaOptions, ToPrismaResult } from './types';\n\nconst normalizeOptions = (options?: ToPrismaOptions): ToPrismaOptions | undefined =>\n options?.map\n ? { ...options, map: resolveFieldMap(options.map, options.mapName, 'toPrisma') }\n : options;\n\nexport { executePrismaPlan } from './execute';\nexport type {\n GroupByStep,\n PrismaStep,\n PrismaWhere,\n StepRef,\n ToPrismaOptions,\n ToPrismaResult,\n WhereStep,\n} from './types';\n\n/**\n * Compile a condition to a Prisma query plan: `steps`, any groupBy steps (counts and relation\n * aggregates, which need `{ map, model }`) and then the final `where`. Run a plan with\n * `executePrismaPlan(plan, client)` to resolve step refs; a single-step plan's `where` is its\n * last step's.\n *\n * @example\n * ```typescript\n * toPrisma({ field: 'status', operator: Operator.equals, value: 'active' }).steps\n * // → [{ operation: 'where', where: { status: { equals: 'active' } } }]\n *\n * const plan = toPrisma({ field: 'posts', arrayOperator: 'atLeast', count: 3, condition }, { map, model: 'User' });\n * const where = await executePrismaPlan(plan, prisma);\n * await prisma.user.findMany({ where });\n * ```\n */\nexport const toPrisma = (condition: Condition, options?: ToPrismaOptions): ToPrismaResult => {\n const state: PrismaBuildState = { steps: [] };\n const where = buildCondition(condition, normalizeOptions(options), state);\n return {\n steps: [...state.steps, { operation: 'where', where }],\n };\n};\n","import type { BuilderState } from './types';\n\n// A Date binds as its ISO-8601 instant: Postgres reads `…Z` into a timestamp column as UTC wall\n// time and into a timestamptz as the instant, while a driver's own Date serialization uses the\n// host zone.\nconst bindable = (value: unknown): unknown => {\n if (value instanceof Date) return value.toISOString();\n return Array.isArray(value) && value.some((item) => item instanceof Date)\n ? value.map(bindable)\n : value;\n};\n\nexport const nextParam = (state: BuilderState, value: unknown): string => {\n state.params.push(bindable(value));\n return `$${++state.paramIndex}`;\n};\n","import { pastScalarError, toManyHopError } from '../errors';\nimport { type FieldShape, fieldShape } from '../fieldMap/shape';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { type MapHop, walkFieldPath } from '../fieldMap/walk';\nimport { modelOf } from '../own';\nimport { relationKeys } from '../toPrisma/relationUtils';\nimport { escapeIdentifier } from './escape';\nimport { quoteField } from './quoting';\nimport type { BuilderState } from './types';\n\n/** A field's SQL and what it reads (a JSON path reads text unless `jsonb`). */\nexport type FieldSql = { sql: string; shape: FieldShape };\n\n/**\n * A dot-notation field as SQL. With a map, the path is walked once (walkFieldPath): each relation\n * hop becomes a LEFT JOIN (reused across the query), and the terminal column is qualified by the\n * last hop's alias, with a Json column's tail as a JSON path. Without a map, or for a path the\n * map doesn't declare, the path reads as written. Mutates state.joins / joinCounter / joinRegistry.\n */\nexport const resolveField = (\n field: string,\n state: BuilderState,\n { jsonb = false }: { jsonb?: boolean } = {},\n): FieldSql => {\n // As written, a dotted path is a JSON path.\n const asWritten = (): FieldSql => ({\n sql: quoteField(field, undefined, jsonb),\n shape: field.includes('.') ? 'json-path' : 'unknown',\n });\n if (!state.map || !state.currentModel || !state.currentAlias) return asWritten();\n const walk = walkFieldPath(field, state.map, state.currentModel);\n if (walk.kind === 'past-scalar') throw pastScalarError(field, walk.column);\n if (walk.kind === 'bridge')\n throw new Error(`'${field}' crosses a bridge to another source; toSql() has no column for it`);\n if (walk.kind === 'fallback' || (walk.entry.kind === 'object' && walk.entry.isList))\n return asWritten();\n const toMany = walk.hops.find((hop) => hop.entry.isList);\n if (toMany) throw toManyHopError(field, toMany);\n let alias = state.currentAlias;\n for (const hop of walk.hops) {\n const joined = joinAlias(state, alias, hop);\n if (!joined) return asWritten();\n alias = joined;\n }\n const shape = fieldShape(walk);\n // A to-one relation as a field reads the joined row's key: NULL when there is no row.\n if (walk.kind === 'direct' && walk.entry.kind === 'object') {\n const hop = { field: walk.column, prefix: field, entry: walk.entry, from: walk.model };\n const keys = relationKeys(state.map, walk.model, walk.entry);\n const joined = joinAlias(state, alias, hop);\n if (!keys || !joined) return asWritten();\n return { sql: `${escapeIdentifier(joined)}.${escapeIdentifier(keys[0].there)}`, shape };\n }\n const column = walk.kind === 'json-path' ? [walk.column, ...walk.jsonPath] : [walk.column];\n const sql = quoteField(column.join('.'), alias, jsonb);\n // A JSON null in a Json column is null, as check() reads it.\n return { sql: shape === 'json' && !jsonb ? `NULLIF(${sql}, 'null'::jsonb)` : sql, shape };\n};\n\nexport const resolveFieldSql = (\n field: string,\n state: BuilderState,\n options?: { jsonb?: boolean },\n): string => resolveField(field, state, options).sql;\n\n/** The alias a relation hop joins as — reused when the query already joined it. */\nconst joinAlias = (state: BuilderState, fromAlias: string, hop: MapHop): string | null => {\n const key = `${fromAlias}.${hop.field}`;\n const existing = state.joinRegistry?.get(key);\n if (existing) return existing;\n if (!state.joinCounter || !state.map) return null;\n const alias = `t${state.joinCounter.n + 1}`;\n const clause = buildJoinClause(state.map, hop.from, fromAlias, hop.entry, alias);\n if (!clause) return null;\n state.joinCounter.n += 1;\n state.joins?.push(clause);\n state.joinRegistry?.set(key, alias);\n return alias;\n};\n\n/**\n * Build a LEFT JOIN clause string for a relation field traversal.\n * Returns null when the FK cannot be determined.\n */\nconst buildJoinClause = (\n map: FieldMap,\n currentModel: string,\n currentAlias: string,\n fieldEntry: FieldMapEntry,\n targetAlias: string,\n): string | null => {\n const targetModel = fieldEntry.type;\n const targetDbName = modelOf(map, targetModel)?.dbName ?? targetModel;\n\n const keys = relationKeys(map, currentModel, fieldEntry);\n if (!keys) return null;\n const onCondition = keys\n .map(\n ({ here, there }) =>\n `${escapeIdentifier(targetAlias)}.${escapeIdentifier(there)} = ` +\n `${escapeIdentifier(currentAlias)}.${escapeIdentifier(here)}`,\n )\n .join(' AND ');\n\n return `LEFT JOIN ${escapeIdentifier(targetDbName as string)} AS ${escapeIdentifier(targetAlias)} ON ${onCondition}`;\n};\n","import { resolveDateConfig } from '../date';\nimport type { ResolvedDateConfig } from '../dateExpr';\nimport type { FieldShape } from '../fieldMap/shape';\nimport { checkOnlyScopeRef, parseScopeRef, readContextRef } from '../scope';\nimport type { ValueSourceFields } from '../types';\nimport { compileBinding, matchSource, type ReadSource } from '../valueSource';\nimport { resolveField } from './join';\nimport type { BuilderState } from './types';\n\n/**\n * An operand: a value bound as a parameter, or SQL evaluated per row. `computed` SQL is\n * arithmetic, whose NULL means \"nothing to compare against\" — never the is-null sentinel a\n * plain column comparison gets.\n */\nexport type ResolvedRhs =\n | { type: 'value'; value: unknown }\n | { type: 'column'; sql: string; shape?: FieldShape; computed?: true };\n\nexport const NO_VALUE: ResolvedRhs = { type: 'value', value: null };\n\nexport const isMissing = (rhs: ResolvedRhs): boolean =>\n rhs.type === 'value' && (rhs.value === null || rhs.value === undefined);\n\n/** A ref on the SQL rail: `$.x` reads the current row the way a `field` does — relation hops\n * join, a Json column's tail is a JSON path; a bare ref reads context. */\nconst resolveRef = (ref: string, state: BuilderState): ResolvedRhs => {\n const scoped = parseScopeRef(ref);\n if (scoped) {\n if (scoped.depth > 1) throw new Error(checkOnlyScopeRef(ref, 'toSql'));\n const column = resolveField(scoped.path, state);\n if (column.shape === 'relation')\n throw new Error(`'${ref}' is a relation; a value ref reads a column`);\n return { type: 'column', ...column };\n }\n return { type: 'value', value: readContextRef(ref, state.context, 'toSql') };\n};\n\n/** A value source on the SQL rail: a parameter, or a `$.` column. */\nexport const resolveSource = (\n source: ValueSourceFields<unknown>,\n state: BuilderState,\n): ResolvedRhs =>\n matchSource<ResolvedRhs>(source, {\n value: (value) => ({ type: 'value', value }),\n path: (ref) => resolveRef(ref, state),\n bind: (name, optional) => ({ type: 'value', value: compileBinding(name, optional, 'toSql') }),\n });\n\n/** Reads a source whose value is needed at compile time; a row ref here is a caller bug. */\nexport const compileTimeRead =\n (state: BuilderState): ReadSource =>\n (source) => {\n const resolved = resolveSource(source, state);\n if (resolved.type === 'column') throw new Error(`'${source.path}' is a row ref`);\n return resolved.value;\n };\n\nexport const dateConfigOf = (state: BuilderState): ResolvedDateConfig =>\n resolveDateConfig(state.dateConfig ?? {}, compileTimeRead(state));\n","import { type Comparator, comparatorOf, NEGATED_OPERATORS } from '../operatorCatalog';\nimport { nextParam } from './params';\nimport type { BuilderState } from './types';\nimport { isMissing, type ResolvedRhs } from './valueSource';\n\n// A field against an operand, for the field and date compilers alike. A negated comparison is\n// the complement of its positive form, as check() evaluates it: SQL's three-valued logic makes\n// it NULL — never true — for a NULL field, so every negation carries the NULL rows explicitly.\n// An operand that reads nothing matches no row, and a negation keeps the NULL fields only.\n\n/** A comparator as SQL. */\nconst SQL_COMPARATOR: Record<Comparator, string> = {\n lt: '<',\n lte: '<=',\n gt: '>',\n gte: '>=',\n equals: '=',\n};\n\n/** An ordered comparison's SQL symbol and whether it negates (keeps NULL); undefined for any\n * other operator. */\nexport const orderedSql = (\n operator: string,\n family: 'field' | 'date',\n): { symbol: string; negated: boolean } | undefined => {\n const comparator = comparatorOf(operator, family);\n return comparator\n ? { symbol: SQL_COMPARATOR[comparator], negated: NEGATED_OPERATORS.includes(operator) }\n : undefined;\n};\n\nconst operandSql = (rhs: ResolvedRhs, state: BuilderState): string =>\n rhs.type === 'column' ? rhs.sql : nextParam(state, rhs.value);\n\nexport const orNull = (field: string, expr: string): string => `(${expr} OR ${field} IS NULL)`;\n\n/** No operand to compare against: no row, or the NULL fields for a negation. */\nexport const noOperandSql = (field: string, negated: boolean, nullable = true): string =>\n negated && nullable ? `${field} IS NULL` : 'FALSE';\n\n/** `field <symbol> operand`. */\nexport const compareSql = (\n field: string,\n symbol: string,\n rhs: ResolvedRhs,\n negated: boolean,\n state: BuilderState,\n): string => {\n if (isMissing(rhs)) return noOperandSql(field, negated);\n const comparison = `${field} ${symbol} ${operandSql(rhs, state)}`;\n return negated ? orNull(field, comparison) : comparison;\n};\n\n/** `field BETWEEN a AND b`. Ends known now arrive sorted; ends read per row sort in SQL\n * (SYMMETRIC), and a per-row end that reads NULL matches nothing. */\nexport const rangeSql = (\n field: string,\n ends: [ResolvedRhs, ResolvedRhs] | null,\n negated: boolean,\n state: BuilderState,\n nullable = true,\n): string => {\n if (!ends || ends.some(isMissing)) return noOperandSql(field, negated, nullable);\n const [a, b] = ends.map((end) => operandSql(end, state));\n const perRow = ends.some((end) => end.type === 'column');\n const symmetric = perRow ? 'SYMMETRIC ' : '';\n if (!negated) return `${field} BETWEEN ${symmetric}${a} AND ${b}`;\n const outside = `${field} NOT BETWEEN ${symmetric}${a} AND ${b}`;\n const guarded = perRow ? `(${outside} AND ${a} IS NOT NULL AND ${b} IS NOT NULL)` : outside;\n return nullable ? orNull(field, guarded) : guarded;\n};\n","import { resolveCaseInsensitive } from '../engineGlobals';\nimport { noCompiledForm, unorderedOperand } from '../errors';\nimport { hasNoOperand, lowerStrings } from '../field';\nimport { splitNull } from '../number';\nimport { Operator } from '../operator';\nimport { NEGATED_OPERATORS } from '../operatorCatalog';\nimport { postgresSource, readPattern } from '../pattern';\nimport type { Rule } from '../types';\nimport { noOperandSql, orderedSql, orNull } from './compare';\nimport { nextParam } from './params';\nimport { escapeLikePattern } from './quoting';\nimport type { BuilderState } from './types';\n\n// A Json value compared as JSON, as check() compares it: by value — a list or an object deeply —\n// and never across types; JSON null is null; string operators read strings, and `contains` is\n// also exact membership in an array.\n\nconst holdsObject = (v: unknown): boolean =>\n Array.isArray(v) ? v.some(holdsObject) : typeof v === 'object' && v !== null;\n\n/**\n * `rule` against the Json value `jsonb` (a column, or a path read with `->`), its operand known\n * now: `value`, or a range's two ends.\n */\nexport const buildJsonComparison = (\n rule: Rule,\n jsonb: string,\n value: unknown,\n state: BuilderState,\n): string => {\n const j = `NULLIF(${jsonb}, 'null'::jsonb)`;\n const type = `jsonb_typeof(${j})`;\n const text = `(${j} #>> '{}')`;\n const json = (v: unknown): string => `${nextParam(state, JSON.stringify(v))}::jsonb`;\n const ci = resolveCaseInsensitive(rule.caseInsensitive);\n const lc = (expr: string): string => (ci ? `LOWER(${expr})` : expr);\n const negated = NEGATED_OPERATORS.includes(rule.operator);\n const not = (expr: string): string => orNull(j, `NOT (${expr})`);\n\n if (hasNoOperand(rule, value)) return noOperandSql(j, negated);\n const unordered = unorderedOperand(rule.operator, value);\n if (unordered) throw unordered;\n\n // Under the flag check() lowers strings through lists, never inside objects. A list operand\n // without objects compares against the lowered JSON text: any object the value holds then\n // differs in type anyway.\n const lowered = (v: unknown[]): string => {\n if (holdsObject(v))\n throw noCompiledForm(\n 'toSql',\n `A case-insensitive comparison of '${rule.field}' with a list holding objects`,\n );\n return json(lowerStrings(v));\n };\n /** One value: a string or a list compares case-insensitively under the flag; anything else\n * exactly. */\n const equal = (v: unknown): string =>\n ci && typeof v === 'string'\n ? `(${type} = 'string' AND LOWER(${text}) = LOWER(${nextParam(state, v)}))`\n : ci && Array.isArray(v)\n ? `(${type} = 'array' AND LOWER(${j}::text)::jsonb = ${lowered(v)})`\n : `${j} = ${json(v)}`;\n /** A string operator reads a string: `pattern` is a LIKE pattern. */\n const like = (pattern: string): string =>\n `(${type} = 'string' AND ${lc(text)} LIKE ${lc(nextParam(state, pattern))})`;\n // An array member equal to `v`: `@>` reads an object or a list partially, and a string under\n // the flag compares lowered, so those compare element by element.\n const member = (v: unknown): string => {\n const element = (match: string): string =>\n `(CASE WHEN ${type} = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${j}) AS e WHERE ${match}) ELSE FALSE END)`;\n if (ci && typeof v === 'string')\n return element(\n `jsonb_typeof(e) = 'string' AND LOWER(e #>> '{}') = LOWER(${nextParam(state, v)})`,\n );\n if (ci && Array.isArray(v)) return element(`LOWER(e::text)::jsonb = ${lowered(v)}`);\n return typeof v === 'object' && v !== null\n ? element(`e = ${json(v)}`)\n : `(${type} = 'array' AND ${j} @> ${json([v])})`;\n };\n // A string holds a string; an array holds any member.\n const contains = (v: unknown): string =>\n typeof v === 'string' ? `(${like(`%${escapeLikePattern(v)}%`)} OR ${member(v)})` : member(v);\n\n switch (rule.operator) {\n case Operator.equals:\n return value === null ? `${j} IS NULL` : equal(value);\n case Operator.notEquals:\n return value === null ? `${j} IS NOT NULL` : not(equal(value));\n case Operator.in:\n case Operator.notIn: {\n const { values, hasNull } = splitNull(value);\n const anyOf = values.length ? `(${values.map(equal).join(' OR ')})` : 'FALSE';\n if (rule.operator === Operator.in) return hasNull ? `(${anyOf} OR ${j} IS NULL)` : anyOf;\n return hasNull ? `(NOT ${anyOf} AND ${j} IS NOT NULL)` : not(anyOf);\n }\n case Operator.between:\n case Operator.notBetween: {\n const [low, high] = value as [unknown, unknown];\n const within = `(${type} = jsonb_typeof(${json(low)}) AND ${j} BETWEEN ${json(low)} AND ${json(high)})`;\n return rule.operator === Operator.between ? within : not(within);\n }\n case Operator.contains:\n return contains(value);\n case Operator.notContains:\n return not(contains(value));\n case Operator.startsWith:\n return like(`${escapeLikePattern(String(value))}%`);\n case Operator.endsWith:\n return like(`%${escapeLikePattern(String(value))}`);\n case Operator.notStartsWith:\n return not(like(`${escapeLikePattern(String(value))}%`));\n case Operator.notEndsWith:\n return not(like(`%${escapeLikePattern(String(value))}`));\n case Operator.matches:\n case Operator.notMatches: {\n const { source, caseInsensitive } = readPattern(value as string | RegExp);\n const match = `(${type} = 'string' AND ${text} ~${caseInsensitive ? '*' : ''} ${nextParam(state, postgresSource(source))})`;\n return rule.operator === Operator.matches ? match : not(match);\n }\n }\n const symbol = orderedSql(rule.operator, 'field')?.symbol;\n if (symbol) return `(${type} = jsonb_typeof(${json(value)}) AND ${j} ${symbol} ${json(value)})`;\n throw new Error(`Operator '${rule.operator}' is not supported on a Json value in SQL`);\n};\n","import dayjs from 'dayjs';\nimport { resolveMagnitude, resolveUnits } from '../amount';\nimport { shiftByUnits } from '../dateExpr';\nimport type { FieldShape } from '../fieldMap/shape';\nimport {\n INTERVAL_FIELDS,\n isCalendarUnit,\n RELATIVE_UNITS,\n type RelativeUnit,\n} from '../operatorCatalog';\nimport type { Magnitude, RelativeUnits } from '../types';\nimport { rowRef } from '../valueSource';\nimport type { FieldSql } from './join';\nimport { nextParam } from './params';\nimport type { BuilderState } from './types';\nimport {\n compileTimeRead,\n dateConfigOf,\n NO_VALUE,\n type ResolvedRhs,\n resolveSource,\n} from './valueSource';\n\n// A date moved by relative units, as check() moves it: on the wall clock of the evaluation's\n// zone, months then days then time. Postgres does the same arithmetic when an amount or the\n// base is read per row.\n\nconst isRowRef = (magnitude: Magnitude | undefined): boolean =>\n typeof magnitude === 'object' && rowRef(magnitude) !== null;\n\n/**\n * A date read from the row as an instant, whatever the session zone. A DateTime column goes\n * through its epoch, which a `timestamp` column (UTC wall time, as Prisma writes it) and a\n * `timestamptz` share. Text — a JSON path — reads as check() reads it: a number is epoch\n * milliseconds, a string with a zone is that instant, and a zoneless one is wall time in the\n * evaluation's zone.\n */\nexport const asInstant = (\n { sql, shape }: Pick<FieldSql, 'sql'> & { shape?: FieldShape },\n state: BuilderState,\n): string => {\n if (shape !== 'json-path' && shape !== 'text') return `to_timestamp(EXTRACT(EPOCH FROM ${sql}))`;\n const zone = nextParam(state, dateConfigOf(state).timeZone);\n return (\n `(CASE WHEN btrim(${sql}) ~ '^-?[0-9]+(\\\\.[0-9]+)?$' THEN to_timestamp(btrim(${sql})::numeric / 1000)` +\n ` WHEN ${sql} ~* '[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\\\.[0-9]+)?)?\\\\s*(z|[+-][0-9]{2}(:?[0-9]{2})?)\\\\s*$'` +\n ` OR ${sql} ~* '\\\\m(gmt|utc)\\\\M' THEN (${sql})::timestamptz` +\n ` ELSE (${sql})::timestamp AT TIME ZONE ${zone} END)`\n );\n};\n\n/** True when any unit is read per row — so the shift must compile to SQL. */\nexport const readsRow = (units: RelativeUnits): boolean => Object.values(units).some(isRowRef);\n\nconst magnitudeSql = (\n magnitude: Magnitude,\n state: BuilderState,\n unit: keyof RelativeUnits,\n): string => {\n const whole = isCalendarUnit(unit);\n const cast = whole ? 'int' : 'double precision';\n if (typeof magnitude === 'number' || !isRowRef(magnitude)) {\n const amount = resolveMagnitude(magnitude, compileTimeRead(state), unit);\n return `${nextParam(state, amount)}::${cast}`;\n }\n const c = (resolveSource(magnitude, state) as { sql: string }).sql;\n const usable = whole ? `${c} >= 0 AND ${c} = trunc(${c})` : `${c} >= 0`;\n return `(CASE WHEN ${usable} THEN ${c} END)::${cast}`;\n};\n\n/** `units` as a Postgres interval; NULL when an amount reads NULL. */\nconst intervalSql = (units: RelativeUnits, state: BuilderState): string => {\n const args = INTERVAL_FIELDS.flatMap((field) => {\n const terms = (Object.keys(units) as RelativeUnit[])\n .filter((unit) => units[unit] !== undefined && RELATIVE_UNITS[unit].interval === field)\n .map((unit) => {\n const term = magnitudeSql(units[unit] as Magnitude, state, unit);\n const { factor } = RELATIVE_UNITS[unit];\n return factor === 1 ? term : `${factor} * ${term}`;\n });\n return terms.length ? [`${field} => ${terms.join(' + ')}`] : [];\n });\n return `make_interval(${args.join(', ')})`;\n};\n\n/** A date operand moved by `units`: a value when everything is known now, else SQL. */\nexport const shiftDate = (\n rhs: ResolvedRhs,\n units: RelativeUnits,\n direction: 1 | -1,\n state: BuilderState,\n): ResolvedRhs => {\n const zone = dateConfigOf(state).timeZone;\n if (rhs.type === 'value' && !readsRow(units)) {\n const resolved = resolveUnits(units, compileTimeRead(state));\n if (rhs.value === null || rhs.value === undefined || resolved === null) return NO_VALUE;\n return {\n type: 'value',\n value: shiftByUnits(dayjs(rhs.value as Date), resolved, direction, zone).toDate(),\n };\n }\n const base =\n rhs.type === 'column'\n ? rhs.computed\n ? rhs.sql\n : asInstant(rhs, state)\n : `${nextParam(state, rhs.value ?? null)}::timestamptz`;\n const z = nextParam(state, zone);\n const sign = direction === 1 ? '+' : '-';\n return {\n type: 'column',\n computed: true,\n sql: `(((${base} AT TIME ZONE ${z}) ${sign} ${intervalSql(units, state)}) AT TIME ZONE ${z})`,\n };\n};\n","import { addOffset, offsetAmount, offsetShift } from '../offset';\nimport type { DateOffset, NumberOffset } from '../types';\nimport { nextParam } from './params';\nimport { shiftDate } from './shift';\nimport type { BuilderState } from './types';\nimport { isMissing, NO_VALUE, type ResolvedRhs, resolveSource } from './valueSource';\n\n// An offset moves an operand by what its own value source reads. NULL anywhere — base or\n// offset — leaves nothing to compare against, as in check().\n\n/** A numeric operand plus an offset, in double precision as check() adds; SQL when either side\n * is read per row. A range moves at both ends. */\nexport const offsetNumber = (\n rhs: ResolvedRhs,\n offset: NumberOffset,\n state: BuilderState,\n): ResolvedRhs => {\n const by = resolveSource(offset, state);\n if (rhs.type === 'value' && by.type === 'value') {\n const amount = offsetAmount(by.value);\n return amount === null ? NO_VALUE : { type: 'value', value: addOffset(rhs.value, amount) };\n }\n const operand = (side: ResolvedRhs, read: (value: unknown) => unknown) =>\n side.type === 'column'\n ? `(${side.sql})::double precision`\n : `${nextParam(state, read(side.value) ?? null)}::double precision`;\n return {\n type: 'column',\n computed: true,\n sql: `(${operand(rhs, (v) => v)} + ${operand(by, offsetAmount)})`,\n };\n};\n\n/** A date operand moved by a date offset's `{ ago }` / `{ ahead }`. A shift stored on the row\n * is check-only: Postgres has no form for a JSON interval. */\nexport const offsetDate = (\n rhs: ResolvedRhs,\n offset: DateOffset,\n state: BuilderState,\n): ResolvedRhs => {\n if (isMissing(rhs)) return NO_VALUE;\n const by = resolveSource(offset, state);\n if (by.type === 'column')\n throw new Error(\n `A row path on a date offset ('${offset.path}') is check-only; evaluate with check()`,\n );\n const move = offsetShift(by.value);\n return move === null ? NO_VALUE : shiftDate(rhs, ...move, state);\n};\n","import type { Condition } from '../types';\nimport type { BuilderState } from './types';\n\n// The rail's one recursion point: sub-builders compile their child conditions through it, and\n// condition.ts installs the dispatcher — so no builder imports the dispatcher it is part of.\n\ntype BuildConditionFn = (condition: Condition, state: BuilderState) => string;\n\nlet dispatch: BuildConditionFn;\n\nexport const setConditionBuilder = (fn: BuildConditionFn): void => {\n dispatch = fn;\n};\n\nexport const buildCondition: BuildConditionFn = (condition, state) => dispatch(condition, state);\n","import { compileFieldLiteral } from '../compileLiteral';\nimport { resolveCaseInsensitive } from '../engineGlobals';\nimport { enumMatches } from '../enumMatch';\nimport { fuzzyNotCompiled, noCompiledForm, relationNotValue } from '../errors';\nimport { hasNoOperand, isExistenceTest, listMembership, lowerStrings } from '../field';\nimport { acceptsEmptyString, comparesText, readsText } from '../fieldMap/shape';\nimport { fieldEntry, walkWith } from '../fieldMap/walk';\nimport { isOrderedValue, orderPair, readOrderedPair, readPair, splitNull } from '../number';\nimport { Operator } from '../operator';\nimport {\n CONTAINS_OPERATORS,\n EQUALITY_OPERATORS,\n getValueShape,\n NEGATED_OPERATORS,\n NO_VALUE_OPERATORS,\n RANGE_OPERATORS,\n SET_OPERATORS,\n} from '../operatorCatalog';\nimport { postgresSource, readPattern } from '../pattern';\nimport type { Rule } from '../types';\nimport { compareSql, noOperandSql, orderedSql, orNull as orNullSql, rangeSql } from './compare';\nimport { type FieldSql, resolveField, resolveFieldSql } from './join';\nimport { buildJsonComparison } from './json';\nimport { offsetNumber } from './offset';\nimport { nextParam } from './params';\nimport { escapeLikePattern } from './quoting';\nimport { buildCondition } from './recurse';\nimport type { BuilderState } from './types';\nimport { dateConfigOf, type ResolvedRhs, resolveSource } from './valueSource';\n\n/** A field rule as SQL; `lhs` compiles a computed left-hand side (an aggregate) in the column's place. */\nexport const buildFieldRule = (rule: Rule, state: BuilderState, lhs?: string): string => {\n const fuzzy = fuzzyNotCompiled(rule);\n if (fuzzy) throw fuzzy;\n const resolved: FieldSql =\n lhs === undefined ? resolveField(rule.field, state) : { sql: lhs, shape: 'scalar' };\n // A to-one relation as a field exists or not: its key is not a value to compare.\n if (resolved.shape === 'relation' && !isExistenceTest(rule)) throw relationNotValue(rule.field);\n // A computed left-hand side is never NULL (an aggregate coalesces): no NULL arms.\n const nullable = lhs === undefined;\n // An enum compares against its declared values (see enumMatches).\n if (resolved.shape === 'enum' && !NO_VALUE_OPERATORS.includes(rule.operator)) {\n const operand = knownOperand(rule, state);\n const entry = fieldEntry(rule.field, state.map, state.currentModel);\n const matched =\n operand !== NOT_KNOWN && entry && !hasNoOperand(rule, operand)\n ? enumMatches(rule, operand, entry, state.map)\n : null;\n if (matched) {\n const listed = `${resolved.sql}::text = ANY(${nextParam(state, matched.values)})`;\n return matched.matchesNull ? orNullSql(resolved.sql, listed) : listed;\n }\n }\n // An enum's exact comparisons read its value as text, which a string parameter matches.\n const compared: FieldSql =\n resolved.shape === 'enum' && !NO_VALUE_OPERATORS.includes(rule.operator)\n ? { ...resolved, sql: `${resolved.sql}::text` }\n : resolved;\n // A Json value against an operand known now compares as JSON.\n const isJson = resolved.shape === 'json' || resolved.shape === 'json-path';\n if (isJson && !NO_VALUE_OPERATORS.includes(rule.operator)) {\n const operand = knownOperand(rule, state);\n // A Json value compares by its type, which a per-row operand doesn't fix at compile time.\n if (operand === NOT_KNOWN)\n throw new Error(\n `The Json value '${rule.field}' compares against an operand known when compiling, not one read per row.`,\n );\n return buildJsonComparison(\n rule,\n resolveFieldSql(rule.field, state, { jsonb: true }),\n operand,\n state,\n );\n }\n // check() compares a Json value as JSON, never across types; SQL would compare its text.\n const refuseJsonOperand = (operand: ResolvedRhs): void => {\n if (\n operand.type === 'column' &&\n !operand.computed &&\n (operand.shape === 'json' || operand.shape === 'json-path')\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.field}' compared with a Json value read per row`,\n 'SQL would compare its text',\n );\n };\n if (RANGE_OPERATORS.includes(rule.operator)) {\n const ends = resolveRange(rule, state);\n ends?.forEach(refuseJsonOperand);\n return rangeSql(compared.sql, ends, NEGATED_OPERATORS.includes(rule.operator), state, nullable);\n }\n const rhs = resolveComparison(rule, state);\n refuseJsonOperand(rhs);\n // A string operator reads text; a value moved by an offset is a number or a date.\n if (\n rhs.type === 'column' &&\n getValueShape(rule.operator, 'field') === 'string' &&\n !readsText(resolved.shape) &&\n resolved.shape !== 'list'\n )\n throw noCompiledForm('toSql', `'${rule.operator}' on '${rule.field}'`, 'it is not text');\n if (rhs.type === 'column' && rhs.computed && resolved.shape === 'text' && lhs === undefined)\n throw noCompiledForm(\n 'toSql',\n `'${rule.field}' against a value moved by an offset`,\n 'an offset moves a number or a date',\n );\n const field = compared.sql;\n const ordered = orderedSql(rule.operator, 'field');\n if (ordered) return compareSql(field, ordered.symbol, rhs, false, state);\n // Nothing to compare against (see hasNoOperand): no row, or the NULL fields for a negation.\n if (rhs.type === 'value' && hasNoOperand(rule, rhs.value))\n return noOperandSql(field, NEGATED_OPERATORS.includes(rule.operator), nullable);\n const arithmetic = rhs.type === 'column' && rhs.computed === true;\n const lower =\n resolveCaseInsensitive(rule.caseInsensitive) &&\n (rhs.type === 'column'\n ? !arithmetic && readsText(resolved.shape) && readsText(rhs.shape)\n : comparesText(resolved.shape, rhs.value));\n const lc = (expr: string): string => (lower ? `LOWER(${expr})` : expr);\n const lowered = (values: unknown[]): unknown => (lower ? lowerStrings(values) : values);\n\n // A member read per row: a NULL one is nothing to look for, so only a NULL list is without it.\n // Postgres matches it only against a list of its own type: a text member in a String list.\n if (\n resolved.shape === 'list' &&\n rhs.type === 'column' &&\n CONTAINS_OPERATORS.includes(rule.operator)\n ) {\n if (\n fieldEntry(rule.field, state.map, state.currentModel)?.type !== 'String' ||\n !readsText(rhs.shape)\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.operator}' on the list '${rule.field}' with a member read per row ('${rule.path}')`,\n \"Postgres matches a member of the list's own type only\",\n );\n const has =\n resolveCaseInsensitive(rule.caseInsensitive) && readsText(rhs.shape)\n ? `EXISTS (SELECT 1 FROM unnest(${field}) AS e WHERE LOWER(e) = LOWER(${rhs.sql}))`\n : `array_position(${field}, ${rhs.sql}) IS NOT NULL`;\n return rule.operator === Operator.contains\n ? `(${rhs.sql} IS NOT NULL AND ${has})`\n : `(${field} IS NULL OR (${rhs.sql} IS NOT NULL AND NOT ${has}))`;\n }\n\n // A scalar list contains a member, as check() reads a list; NULL elements and a NULL list\n // contain nothing. Case-insensitively, its members compare lowered.\n if (resolved.shape === 'list' && rhs.type === 'value') {\n const listLower =\n resolveCaseInsensitive(rule.caseInsensitive) && comparesText('text', rhs.value);\n if (CONTAINS_OPERATORS.includes(rule.operator)) {\n const member = nextParam(state, rhs.value);\n const has = listLower\n ? `EXISTS (SELECT 1 FROM unnest(${field}) AS e WHERE LOWER(e) = LOWER(${member}))`\n : `array_position(${field}, ${member}) IS NOT NULL`;\n return rule.operator === Operator.contains ? has : `NOT ${has}`;\n }\n if (SET_OPERATORS.includes(rule.operator) && Array.isArray(rhs.value))\n return buildCondition(listMembership(rule, rhs.value), state);\n if (withShapeString(rule.operator))\n throw new Error(\n `'${rule.operator}' does not apply to the list '${rule.field}'; test its members with contains.`,\n );\n if (listLower && EQUALITY_OPERATORS.includes(rule.operator) && Array.isArray(rhs.value)) {\n const lowered = nextParam(state, lowerStrings(rhs.value));\n const same = `(${field} IS NOT NULL AND ARRAY(SELECT LOWER(e) FROM unnest(${field}) AS e) = ${lowered})`;\n return rule.operator === Operator.equals ? same : orNullSql(field, `NOT ${same}`);\n }\n }\n\n // Extract both variants up front so TypeScript doesn't need to narrow inside each case\n const rhsVal = rhs.type === 'value' ? rhs.value : undefined;\n const rhsCol = rhs.type === 'column' ? rhs.sql : undefined;\n\n // A set or a pattern is bound when compiling; one read per row has no SQL form.\n if (\n rhsCol !== undefined &&\n (SET_OPERATORS.includes(rule.operator) || getValueShape(rule.operator, 'field') === 'pattern')\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.operator}' against an operand read per row ('${rule.path}')`,\n );\n\n // Every negation carries the NULL rows explicitly (see ./compare).\n const orNull = (expr: string): string => (nullable ? orNullSql(field, expr) : expr);\n\n switch (rule.operator) {\n case Operator.equals:\n if (arithmetic) return `${field} = ${rhsCol}`;\n if (rhsCol !== undefined) return `${lc(field)} IS NOT DISTINCT FROM ${lc(rhsCol)}`;\n if (rhsVal === null) return `${field} IS NULL`;\n return `${lc(field)} = ${lc(nextParam(state, rhsVal))}`;\n\n case Operator.notEquals:\n if (arithmetic) return orNull(`${field} <> ${rhsCol}`);\n if (rhsCol !== undefined) return `${lc(field)} IS DISTINCT FROM ${lc(rhsCol)}`;\n if (rhsVal === null) return `${field} IS NOT NULL`;\n return orNull(`${lc(field)} <> ${lc(nextParam(state, rhsVal))}`);\n\n case Operator.in: {\n const { values, hasNull } = splitNull(rhsVal);\n if (!values.length) return hasNull ? `${field} IS NULL` : 'FALSE';\n const anyOf = `${lc(field)} = ANY(${nextParam(state, lowered(values))})`;\n return hasNull ? orNull(anyOf) : anyOf;\n }\n\n case Operator.notIn: {\n const { values, hasNull } = splitNull(rhsVal);\n if (!values.length) return hasNull ? `${field} IS NOT NULL` : 'TRUE';\n const noneOf = `${lc(field)} <> ALL(${nextParam(state, lowered(values))})`;\n return hasNull ? `(${noneOf} AND ${field} IS NOT NULL)` : orNull(noneOf);\n }\n\n case Operator.contains:\n return `${lc(field)} LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}%`))}`;\n\n case Operator.notContains:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}%`))}`,\n );\n\n case Operator.startsWith:\n return `${lc(field)} LIKE ${lc(nextParam(state, `${escapeLikePattern(String(rhsVal))}%`))}`;\n\n case Operator.endsWith:\n return `${lc(field)} LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}`))}`;\n\n case Operator.notStartsWith:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `${escapeLikePattern(String(rhsVal))}%`))}`,\n );\n\n case Operator.notEndsWith:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}`))}`,\n );\n\n case Operator.matches:\n return sqlMatch(field, rhsVal, false, state);\n\n case Operator.notMatches:\n return orNull(sqlMatch(field, rhsVal, true, state));\n\n case Operator.isEmpty:\n case Operator.notEmpty:\n return emptinessSql(\n rule.field,\n resolved,\n rule.operator === Operator.isEmpty,\n state,\n acceptsEmptyString(rule, state.map, state.currentModel),\n );\n\n case Operator.exists:\n return `${field} IS NOT NULL`;\n\n case Operator.notExists:\n return `${field} IS NULL`;\n\n default:\n throw new Error(`Unknown operator: ${(rule as Rule).operator}`);\n }\n};\n\n/** The comparison operand: the rule's value source, coerced to the field, moved by its offset. */\nconst resolveComparison = (rule: Rule, state: BuilderState): ResolvedRhs => {\n if (NO_VALUE_OPERATORS.includes(rule.operator)) return { type: 'value', value: undefined };\n const rhs = coerce(rule, resolveSource(rule, state), state);\n return rule.offset === undefined ? rhs : offsetNumber(rhs, rule.offset, state);\n};\n\nconst coerce = (rule: Rule, rhs: ResolvedRhs, state: BuilderState): ResolvedRhs =>\n rhs.type === 'column'\n ? rhs\n : {\n type: 'value',\n value: compileFieldLiteral(\n rule,\n rhs.value,\n walkWith(rule.field, state.map, state.currentModel),\n 'toSql',\n () => dateConfigOf(state).timeZone,\n ),\n };\n\n/** A range's two ends, sorted, each moved by the offset; null when the range reads nothing. */\nconst resolveRange = (rule: Rule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const rhs = coerce(rule, resolveSource(rule, state), state);\n const range = rhs.type === 'value' ? rhs.value : undefined;\n if (range === null || range === undefined) return null;\n // A missing end matches nothing (see rangeSql); a present one must order.\n const ends = readPair(range, rule.operator);\n if (ends.some((end) => end != null && !isOrderedValue(end)))\n readOrderedPair(range, rule.operator);\n return orderPair(ends).map((value) => {\n const end: ResolvedRhs = { type: 'value', value };\n return rule.offset === undefined ? end : offsetNumber(end, rule.offset, state);\n }) as [ResolvedRhs, ResolvedRhs];\n};\n\n/** A pattern as Postgres reads it: its source, and `~*` / `!~*` when case-insensitive. */\nconst sqlMatch = (field: string, value: unknown, negated: boolean, state: BuilderState): string => {\n if (typeof value !== 'string' && !(value instanceof RegExp))\n throw new Error('matches requires a string or RegExp pattern');\n const { source, caseInsensitive } = readPattern(value);\n return `${field} ${negated ? '!' : ''}~${caseInsensitive ? '*' : ''} ${nextParam(state, postgresSource(source))}`;\n};\n\nconst NOT_KNOWN = Symbol('not known');\n\n/** A comparison's operand when it is known now — a value, or a range of two values, moved by\n * a known offset — or NOT_KNOWN when it is read per row. */\nconst knownOperand = (rule: Rule, state: BuilderState): unknown => {\n if (RANGE_OPERATORS.includes(rule.operator)) {\n const ends = resolveRange(rule, state);\n if (!ends) return null;\n return ends.every((end) => end.type === 'value')\n ? ends.map((end) => (end as { value: unknown }).value)\n : NOT_KNOWN;\n }\n const rhs = resolveComparison(rule, state);\n return rhs.type === 'value' ? rhs.value : NOT_KNOWN;\n};\n\n/**\n * Whether a field is empty — NULL, '', or an empty list or Json array, as check() reads it — or,\n * with `empty` false, not. One form for the emptiness operators and the array ones.\n */\nexport const emptinessSql = (\n path: string,\n field: FieldSql,\n empty: boolean,\n state: BuilderState,\n emptyString: boolean,\n): string => {\n const { sql, shape } = field;\n if (shape === 'list')\n return empty ? `(${sql} IS NULL OR cardinality(${sql}) = 0)` : `cardinality(${sql}) > 0`;\n if (shape === 'json' || shape === 'json-path') {\n const j = resolveFieldSql(path, state, { jsonb: true });\n const values = [`'null'::jsonb`, ...(emptyString ? [`'\"\"'::jsonb`] : []), `'[]'::jsonb`].join(\n ', ',\n );\n return empty ? `(${j} IS NULL OR ${j} IN (${values}))` : `${j} NOT IN (${values})`;\n }\n if (!emptyString) return empty ? `${sql} IS NULL` : `${sql} IS NOT NULL`;\n return empty ? `(${sql} IS NULL OR ${sql} = '')` : `(${sql} IS NOT NULL AND ${sql} <> '')`;\n};\n\n/** A string operator other than containment: a list has no prefix or suffix. */\nconst withShapeString = (operator: string): boolean =>\n getValueShape(operator, 'field') === 'string' && !CONTAINS_OPERATORS.includes(operator);\n","import { unknownAggregateMode, windowUnsupported } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { AGGREGATE_MODES } from '../operatorCatalog';\nimport type { AggregateRule, Rule } from '../types';\nimport { hasWindow } from '../window';\nimport { buildFieldRule } from './field';\nimport { resolveFieldSql } from './join';\nimport { jsonKey } from './quoting';\nimport type { BuilderState } from './types';\n\nexport const buildAggregateRule = (rule: AggregateRule, state: BuilderState): string => {\n if (hasWindow(rule)) throw windowUnsupported('toSql');\n if (rule.condition) {\n throw new Error(\n `Aggregate condition filtering is not yet supported by toSql(). ` +\n `Use check() for in-memory evaluation or toPrisma() for database queries.`,\n );\n }\n\n const subquery = buildAggregateSubquery(rule, state);\n // An aggregate compares like a field whose value the subquery computes.\n return buildFieldRule(rule as unknown as Rule, state, subquery);\n};\n\nconst buildAggregateSubquery = (rule: AggregateRule, state: BuilderState): string => {\n const { mode, field: itemField } = rule.aggregate;\n // check() reads the sum and the average of nothing as 0.\n if (!AGGREGATE_MODES.includes(mode)) throw unknownAggregateMode(mode);\n const fn = mode === 'sum' ? 'SUM' : 'AVG';\n\n const shape = ruleShape({ field: rule.field }, state.map, state.currentModel);\n\n if (\n shape === 'relation' ||\n fieldEntry(rule.field, state.map, state.currentModel)?.kind === 'object'\n ) {\n throw new Error(\n `Field '${rule.field}' is a relation — toSql() cannot aggregate relation lists. Use toPrisma() instead.`,\n );\n }\n\n if (itemField?.includes('.')) {\n throw new Error(\n `aggregate.field '${itemField}' contains a nested path — toSql() only supports flat field names. Use check() for nested paths.`,\n );\n }\n\n const isNative = shape === 'list';\n // Aggregate functions read the array as JSONB (a native array as itself), never as text. A\n // Json value that is not an array — JSON null among them — has no elements, as check() reads\n // a null array.\n const read = resolveFieldSql(rule.field, state, { jsonb: !isNative });\n const field = isNative ? read : `(CASE WHEN jsonb_typeof(${read}) = 'array' THEN ${read} END)`;\n\n if (isNative) {\n if (itemField) {\n throw new Error(\n `aggregate.field is not supported for native array types. Use a JSONB column for object arrays.`,\n );\n }\n const agg = `COALESCE(${fn}(elem), 0)`;\n return `(SELECT ${agg} FROM unnest(${field}) AS elem)`;\n }\n\n if (itemField) {\n // JSONB object array\n const extract = `(elem->>${jsonKey(itemField)})::numeric`;\n const agg = `COALESCE(${fn}(${extract}), 0)`;\n return `(SELECT ${agg} FROM jsonb_array_elements(${field}) AS elem)`;\n }\n\n // JSONB primitive array\n const extract = `elem::numeric`;\n const agg = `COALESCE(${fn}(${extract}), 0)`;\n return `(SELECT ${agg} FROM jsonb_array_elements_text(${field}) AS elem)`;\n};\n","import { fieldlessArrayError, unknownOperator, windowUnsupported } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { ArrayOperator } from '../operator';\nimport type { ArrayRule } from '../types';\nimport { hasWindow } from '../window';\nimport { emptinessSql } from './field';\nimport { resolveField } from './join';\nimport type { BuilderState } from './types';\n\nexport const buildArrayRule = (rule: ArrayRule, state: BuilderState): string => {\n if (hasWindow(rule)) throw windowUnsupported('toSql');\n if (!rule.field) {\n throw fieldlessArrayError('toSql');\n }\n const shape = ruleShape({ field: rule.field }, state.map, state.currentModel);\n if (\n shape === 'relation' ||\n fieldEntry(rule.field, state.map, state.currentModel)?.kind === 'object'\n )\n throw new Error(\n `Field '${rule.field}' is a relation — relation arrays are not supported in SQL; use toPrisma().`,\n );\n\n switch (rule.arrayOperator) {\n case ArrayOperator.empty:\n case ArrayOperator.notEmpty: {\n // A list column, or else a Json array — an array rule names one.\n const field = resolveField(rule.field, state);\n const arrayShape = field.shape === 'list' ? field : { ...field, shape: 'json-path' as const };\n return emptinessSql(\n rule.field,\n arrayShape,\n rule.arrayOperator === ArrayOperator.empty,\n state,\n false,\n );\n }\n\n case ArrayOperator.all:\n case ArrayOperator.any:\n case ArrayOperator.none:\n case ArrayOperator.atLeast:\n case ArrayOperator.atMost:\n case ArrayOperator.exactly:\n throw new Error(\n `Array operator '${rule.arrayOperator}' with conditions is not supported in SQL. ` +\n 'Use application-level filtering for complex array operations.',\n );\n\n default:\n throw unknownOperator((rule as ArrayRule).arrayOperator, 'array');\n }\n};\n","import { resolveExpr } from '../amount';\nimport { coerceDateLiteral, dayNumbers } from '../date';\nimport {\n isDateExpr,\n requireNow,\n resolveDateExprRange,\n resolvePointForOperator,\n rollingShift,\n} from '../dateExpr';\nimport { noCompiledForm, rangeExprRequired, unknownOperator } from '../errors';\nimport type { FieldShape } from '../fieldMap/shape';\nimport { orderPair, readPair } from '../number';\nimport { DateOperator } from '../operator';\nimport { NEGATED_OPERATORS } from '../operatorCatalog';\nimport type { DateExpr, DateRule } from '../types';\nimport { compareSql, noOperandSql, orderedSql, orNull, rangeSql } from './compare';\nimport { type FieldSql, resolveField } from './join';\nimport { offsetDate } from './offset';\nimport { nextParam } from './params';\nimport { asInstant, readsRow, shiftDate } from './shift';\nimport type { BuilderState } from './types';\nimport {\n compileTimeRead,\n dateConfigOf,\n isMissing,\n NO_VALUE,\n type ResolvedRhs,\n resolveSource,\n} from './valueSource';\n\n// A known bound binds as an ISO instant, which compares against the column as stored. A bound\n// read per row, or a date stored as text, compares as instants on both sides — independent of\n// the column types and the session zone.\nconst asOperand = (rhs: ResolvedRhs, state: BuilderState): ResolvedRhs =>\n rhs.type === 'column' && !rhs.computed\n ? { type: 'column', sql: asInstant(rhs, state), computed: true }\n : rhs;\n\n// A date reads from a DateTime column, or text (a String column, a Json path), or a field the map\n// doesn't declare; a number, an enum, a list or a whole Json column is not one on Postgres.\nconst readsDate = (shape: FieldShape | undefined): boolean =>\n shape === undefined ||\n shape === 'instant' ||\n shape === 'text' ||\n shape === 'json-path' ||\n shape === 'unknown';\nconst notADate = (field: string): Error =>\n noCompiledForm('toSql', `A date rule on '${field}'`, 'it is not a date column');\n\nconst sides = (\n field: FieldSql,\n ends: ResolvedRhs[],\n state: BuilderState,\n): { lhs: string; ends: ResolvedRhs[] } => {\n const perRow = ends.some((end) => end.type === 'column');\n const text = field.shape === 'json-path' || field.shape === 'text';\n return perRow || text\n ? { lhs: asInstant(field, state), ends: ends.map((end) => asOperand(end, state)) }\n : { lhs: field.sql, ends };\n};\n\nexport const buildDateRule = (rule: DateRule, state: BuilderState): string => {\n const field = resolveField(rule.field, state);\n if (!readsDate(field.shape)) throw notADate(rule.field);\n const operand = resolveSource(rule, state);\n if (operand.type === 'column' && !readsDate(operand.shape))\n throw notADate(String(rule.path ?? rule.field));\n const ordered = orderedSql(rule.dateOperator, 'date');\n if (ordered) {\n const { lhs, ends } = sides(field, [resolvePoint(rule, state)], state);\n return compareSql(lhs, ordered.symbol, ends[0], ordered.negated, state);\n }\n\n const range = (pair: [ResolvedRhs, ResolvedRhs] | null, negated: boolean): string => {\n if (!pair) return rangeSql(field.sql, null, negated, state);\n const { lhs, ends } = sides(field, pair, state);\n return rangeSql(lhs, ends as [ResolvedRhs, ResolvedRhs], negated, state);\n };\n\n switch (rule.dateOperator) {\n case DateOperator.within:\n case DateOperator.notWithin:\n return range(resolveWindow(rule, state), NEGATED_OPERATORS.includes(rule.dateOperator));\n\n case DateOperator.between:\n case DateOperator.notBetween:\n return range(resolveRange(rule, state), NEGATED_OPERATORS.includes(rule.dateOperator));\n\n case DateOperator.dayIn:\n case DateOperator.dayNotIn: {\n const negated = rule.dateOperator === DateOperator.dayNotIn;\n const source = resolveSource(rule, state);\n if (source.type === 'column')\n throw noCompiledForm('toSql', `A weekday list read from the row ('${rule.path}')`);\n const numbers = dayNumbers(source.value);\n if (numbers === null) return noOperandSql(field.sql, negated);\n const zone = nextParam(state, dateConfigOf(state).timeZone);\n const days = nextParam(state, numbers);\n const dow = `EXTRACT(DOW FROM (${asInstant(field, state)} AT TIME ZONE ${zone}))`;\n return rule.dateOperator === DateOperator.dayIn\n ? `${dow} = ANY(${days})`\n : orNull(field.sql, `${dow} <> ALL(${days})`);\n }\n\n default:\n throw unknownOperator((rule as DateRule).dateOperator, 'date');\n }\n};\n\nconst nowOperand = (state: BuilderState): ResolvedRhs => ({\n type: 'value',\n value: requireNow(dateConfigOf(state)).toDate(),\n});\n\nconst expressionPoint = (expr: DateExpr, operator: string, state: BuilderState): ResolvedRhs => {\n const rolling = rollingShift(expr);\n if (rolling && readsRow(rolling[0])) return shiftDate(nowOperand(state), ...rolling, state);\n const resolved = resolveExpr(expr, compileTimeRead(state));\n if (resolved === null) return NO_VALUE;\n return {\n type: 'value',\n value: resolvePointForOperator(resolved, operator, dateConfigOf(state)).toDate(),\n };\n};\n\nconst toPoint = (value: unknown, operator: string, state: BuilderState): ResolvedRhs => {\n if (value === null || value === undefined) return NO_VALUE;\n if (isDateExpr(value)) return expressionPoint(value, operator, state);\n return { type: 'value', value: coerceDateLiteral(value, dateConfigOf(state).timeZone) };\n};\n\nconst withOffset = (rhs: ResolvedRhs, rule: DateRule, state: BuilderState): ResolvedRhs =>\n rule.offset === undefined ? rhs : offsetDate(rhs, rule.offset, state);\n\nconst resolvePoint = (rule: DateRule, state: BuilderState): ResolvedRhs => {\n const source = resolveSource(rule, state);\n const point = source.type === 'column' ? source : toPoint(source.value, rule.dateOperator, state);\n return withOffset(point, rule, state);\n};\n\nconst resolveWindow = (rule: DateRule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const source = resolveSource(rule, state);\n if (isMissing(source)) return null;\n if (source.type === 'column' || !isDateExpr(source.value))\n throw rangeExprRequired(rule.dateOperator);\n const rolling = rollingShift(source.value);\n if (rolling && readsRow(rolling[0])) {\n const now = nowOperand(state);\n const moved = shiftDate(now, ...rolling, state);\n return rolling[1] === -1 ? [moved, now] : [now, moved];\n }\n const resolved = resolveExpr(source.value, compileTimeRead(state));\n if (resolved === null) return null;\n const ends = resolveDateExprRange(resolved, dateConfigOf(state));\n return [\n { type: 'value', value: ends[0].toDate() },\n { type: 'value', value: ends[1].toDate() },\n ];\n};\n\nconst resolveRange = (rule: DateRule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const source = resolveSource(rule, state);\n if (isMissing(source)) return null;\n const raw = source.type === 'value' ? source.value : undefined;\n const points = readPair(raw, rule.dateOperator).map((el) =>\n toPoint(el, rule.dateOperator, state),\n );\n if (points.some(isMissing)) return null;\n const [first, second] = points;\n const ends: ResolvedRhs[] =\n first.type === 'value' && second.type === 'value'\n ? orderPair([first.value as Date, second.value as Date]).map((value) => ({\n type: 'value' as const,\n value,\n }))\n : points;\n return ends.map((end) => withOffset(end, rule, state)) as [ResolvedRhs, ResolvedRhs];\n};\n","import { conditionTouchesBridge } from '../fieldMap/walk';\nimport type { All, Any, Condition, IfThenElse } from '../types';\nimport { buildCondition } from './recurse';\nimport type { BuilderState } from './types';\n\nexport const buildAll = (all: All, state: BuilderState): string => {\n if (all.all.length === 0) return 'TRUE';\n const clauses = all.all.map((c) => buildCondition(c, state));\n return `(${clauses.join(' AND ')})`;\n};\n\nexport const buildAny = (any: Any, state: BuilderState): string => {\n if (any.any.length === 0) return 'FALSE';\n const clauses = any.any.map((c) => buildCondition(c, state));\n return `(${clauses.join(' OR ')})`;\n};\n\nexport const buildIfThenElse = (cond: IfThenElse, state: BuilderState): string => {\n // When any sub-clause hits a bridge, the precise compilation breaks: bridge\n // predicates compile to 'TRUE', and NOT(TRUE) OR X = X collapses the implication\n // (or in the with-else form, silently drops the then/else branch). Over-fetch\n // the whole expression and let the caller's check() filter precisely.\n if (conditionTouchesBridge(cond as Condition, state.map, state.currentModel)) {\n return 'TRUE';\n }\n\n const ifClause = buildCondition(cond.if, state);\n const thenClause = buildCondition(cond.then, state);\n\n // if → then is: (if IS NOT TRUE) OR then — an `if` that is NULL (a NULL field) is false, as in\n // check(), where NOT(NULL) would drop the row. With else: … AND (if IS TRUE OR else).\n if (cond.else !== undefined) {\n const elseClause = buildCondition(cond.else, state);\n return `(((${ifClause}) IS NOT TRUE OR ${thenClause}) AND ((${ifClause}) IS TRUE OR ${elseClause}))`;\n }\n return `((${ifClause}) IS NOT TRUE OR ${thenClause})`;\n};\n","import { ambiguousCondition } from '../errors';\nimport { refuseRelationsValue } from '../fieldMap/shape';\nimport { hitsBridge } from '../fieldMap/walk';\nimport { rejectScopedField } from '../scope';\nimport { conditionShape } from '../traverse';\nimport type { Condition } from '../types';\nimport { buildAggregateRule } from './aggregate';\nimport { buildArrayRule } from './array';\nimport { buildDateRule } from './date';\nimport { buildFieldRule } from './field';\nimport { buildAll, buildAny, buildIfThenElse } from './logical';\nimport { setConditionBuilder } from './recurse';\nimport type { BuilderState } from './types';\n\nexport const buildCondition = (condition: Condition, state: BuilderState): string => {\n if (typeof condition === 'boolean') {\n return condition ? 'TRUE' : 'FALSE';\n }\n rejectScopedField(condition, 'toSql');\n\n if (\n 'field' in condition &&\n typeof condition.field === 'string' &&\n state.map &&\n state.currentModel &&\n hitsBridge(condition.field, state.map, state.currentModel)\n ) {\n return 'TRUE';\n }\n\n const shape = conditionShape(condition as Record<string, unknown>);\n if (shape === 'field' || shape === 'date')\n refuseRelationsValue((condition as { field: string }).field, state.map, state.currentModel);\n const node = condition as never;\n switch (shape) {\n case 'all':\n return buildAll(node, state);\n case 'any':\n return buildAny(node, state);\n case 'if':\n return buildIfThenElse(node, state);\n case 'array':\n return buildArrayRule(node, state);\n case 'aggregate':\n return buildAggregateRule(node, state);\n case 'date':\n return buildDateRule(node, state);\n case 'field':\n return buildFieldRule(node, state);\n default:\n throw ambiguousCondition();\n }\n};\n\nsetConditionBuilder(buildCondition);\n","import { resolveFieldMap } from '../fieldMap/resolveFieldMap';\nimport type { Condition } from '../types';\nimport { buildCondition } from './condition';\nimport type { BuilderState, ToSqlOptions, ToSqlResult } from './types';\n\nexport type { ToSqlOptions, ToSqlResult } from './types';\n\n/** A fresh compile: the root alias (`t0` with a map), parameters, and the join registry every\n * field resolved against it shares. */\nexport const builderState = (options?: ToSqlOptions): BuilderState => {\n const map = resolveFieldMap(options?.map, options?.mapName, 'toSql');\n const hasMap = !!(map && options?.model);\n const rootAlias = options?.alias ?? (hasMap ? 't0' : undefined);\n return {\n params: [],\n paramIndex: 0,\n context: options?.context,\n dateConfig: { now: options?.now, timeZone: options?.timeZone, weekStart: options?.weekStart },\n map,\n currentModel: options?.model,\n currentAlias: rootAlias,\n joinCounter: hasMap ? { n: 0 } : undefined,\n joins: hasMap ? [] : undefined,\n joinRegistry: hasMap ? new Map() : undefined,\n };\n};\n\nexport const toSql = (condition: Condition, options?: ToSqlOptions): ToSqlResult => {\n const state = builderState(options);\n const sql = buildCondition(condition, state);\n return { sql, params: state.params, joins: state.joins ?? [] };\n};\n","import { toPrisma } from '../toPrisma/index.ts';\nimport type { PrismaStep, PrismaWhere, WhereStep } from '../toPrisma/types.ts';\nimport { buildCondition } from '../toSql/condition.ts';\nimport { escapeIdentifier } from '../toSql/escape.ts';\nimport { builderState } from '../toSql/index.ts';\nimport { resolveFieldSql } from '../toSql/join.ts';\nimport { allOf } from '../traverse';\nimport type { Condition } from '../types.ts';\nimport { resolvePolicy } from './policy.ts';\nimport { sourcePlans } from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/** Prisma `select` shape — nested for a grouped source's relation path. */\nexport type SourceSelect = { [field: string]: true | { select: SourceSelect } };\n\nexport type SourcePrismaQuery = {\n model: string;\n /** Absent for grouped sources — DISTINCT on the value column alone would collapse\n * same-value rows across groups; dedup happens in `materializeSourceQuery`. */\n distinct?: string[];\n select: SourceSelect;\n where: PrismaWhere;\n /** Present only if the composed where used count operators (run via executePrismaPlan). */\n steps?: PrismaStep[];\n};\n\n/** `sql` is null when the composed where uses a predicate SQL can't express\n * (e.g. array-condition operators); `error` then carries why. Prisma still\n * compiles — run that, or fall back to fetch + `check()`. */\nexport type SourceSqlQuery = { sql: string | null; params: unknown[]; error?: string };\n\nexport type SourceQuery = {\n path: string; // dotted projection path (e.g. 'Region' or 'User.region')\n mapName: string;\n model: string;\n field: string;\n /** Co-selected as each value's display label (from a SourceSpec's `label`): a sibling\n * column, or a dotted to-one path like a groupBy axis — then selected nested in prisma\n * and aliased `__label` in sql. */\n label?: string;\n /** Option-partition axes (from a SourceSpec's `groupBy`, normalized); each axis\n * column is selected nested in prisma and aliased `__group_i` in sql. */\n groupBy?: string[];\n composedWhere: Condition; // node whereClauses ∧ source where(s)\n prisma: SourcePrismaQuery;\n sql: SourceSqlQuery;\n};\n\n// 'map.definition.label' → { map: { select: { definition: { select: { label: true } } } } };\n// axes sharing a prefix merge into one nested select tree.\nconst mergeSelect = (into: SourceSelect, path: string[]): void => {\n const [head, ...rest] = path;\n if (rest.length === 0) {\n into[head] = true;\n return;\n }\n const existing = into[head];\n const nested = existing !== undefined && existing !== true ? existing.select : {};\n mergeSelect(nested, rest);\n into[head] = { select: nested };\n};\nconst nestedSelects = (paths: readonly string[]): SourceSelect => {\n const out: SourceSelect = {};\n for (const path of paths) mergeSelect(out, path.split('.'));\n return out;\n};\n\nconst compileOne = (\n lens: Lens,\n mapName: string,\n model: string,\n field: string,\n label: string | undefined,\n groupBy: string[] | undefined,\n where: Condition,\n): { prisma: SourcePrismaQuery; sql: SourceSqlQuery } => {\n const plan = toPrisma(where, { map: lens, mapName, model });\n // A plan ends on its where step.\n const prismaWhere = (plan.steps.at(-1) as WhereStep).where;\n const groupBySteps = plan.steps.filter((s) => s.operation !== 'where');\n // A dotted label materializes exactly like a groupBy axis — same nested select\n // (merged with any axis sharing its prefix), same joined SQL column.\n const labelPath = label?.includes('.') ? label : undefined;\n const nestedPaths = [...(groupBy ?? []), ...(labelPath ? [labelPath] : [])];\n const select: SourceSelect = {\n [field]: true,\n ...(label && !labelPath ? { [label]: true } : {}),\n ...(nestedPaths.length ? nestedSelects(nestedPaths) : {}),\n };\n const prisma: SourcePrismaQuery = {\n model,\n ...(groupBy ? {} : { distinct: [field] }),\n select,\n where: prismaWhere,\n ...(groupBySteps.length ? { steps: plan.steps } : {}),\n };\n\n let sqlQuery: SourceSqlQuery;\n try {\n // The where and the materialized columns resolve against one state, so a label or axis\n // path reuses (and extends) the where's joins.\n const state = builderState({ map: lens, mapName, model, alias: 't0' });\n const sql = buildCondition(where, state);\n const labelCol = labelPath ? resolveFieldSql(labelPath, state) : undefined;\n const groupCols = groupBy?.map((axis) => resolveFieldSql(axis, state));\n const joins = state.joins ?? [];\n const joinSql = joins.length ? ` ${joins.join(' ')}` : '';\n const whereSql = sql?.trim() ? ` WHERE ${sql}` : '';\n const root = escapeIdentifier('t0');\n const cols = [\n `${root}.${escapeIdentifier(field)}`,\n ...(labelCol\n ? [`${labelCol} AS ${escapeIdentifier('__label')}`]\n : label\n ? [`${root}.${escapeIdentifier(label)}`]\n : []),\n ...(groupCols\n ? groupCols.map((col, i) => `${col} AS ${escapeIdentifier(`__group_${i}`)}`)\n : []),\n ].join(', ');\n const statement = `SELECT DISTINCT ${cols} FROM ${escapeIdentifier(model)} AS ${root}${joinSql}${whereSql}`;\n sqlQuery = { sql: statement, params: state.params };\n } catch (err) {\n sqlQuery = { sql: null, params: [], error: err instanceof Error ? err.message : String(err) };\n }\n return { prisma, sql: sqlQuery };\n};\n\n/**\n * Compile a DISTINCT(value) query — Prisma and SQL — per sourced field across\n * the projected lens. The WHERE is the field's composed eligibility: the model's\n * own narrowing at that path AND its source where(s). The app runs these (with\n * its own client) to materialize each field's option set — feed the fetched rows\n * to `materializeSourceQuery`.\n */\nexport const toSourceQueries = (lensOrNarrowing: Lens | LensNarrowing): SourceQuery[] => {\n const { lens } = resolvePolicy(lensOrNarrowing);\n return sourcePlans(lensOrNarrowing).map(({ path, visit, field, label, groupBy, eligibility }) => {\n const composedWhere = allOf([...visit.whereClauses, ...eligibility]);\n const { prisma, sql } = compileOne(\n lens,\n visit.mapName,\n visit.model,\n field,\n label,\n groupBy,\n composedWhere,\n );\n return {\n path,\n mapName: visit.mapName,\n model: visit.model,\n field,\n ...(label !== undefined ? { label } : {}),\n ...(groupBy !== undefined ? { groupBy } : {}),\n composedWhere,\n prisma,\n sql,\n };\n });\n};\n","import {\n type LensPathResolution,\n lensRootScope,\n resolvePolicy,\n resolvePolicyPath,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nexport type { LensPathHop, LensPathResolution } from './policy.ts';\n\n/**\n * Resolve one dotted path through a lens, hop by hop, verifying as it walks: every hop is checked\n * against the narrowing at that visit, so a relation the narrowing dropped is `hidden`, a column the\n * model lacks is `missing`, and a segment past a scalar is `pastScalar`. This is the walk\n * `validateRuleInLens` gates a rule's field with, exposed for consumers that resolve paths of their\n * own (template tokens, loop bindings, presence guards).\n */\nexport const walkLensPath = (\n lensOrNarrowing: Lens | LensNarrowing,\n path: string,\n): LensPathResolution => {\n const policy = resolvePolicy(lensOrNarrowing);\n return resolvePolicyPath(policy, lensRootScope(policy), path).resolution;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/_isIterateeCall.js","../node_modules/lodash-es/_createAssigner.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/get.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/lodash-es/cloneDeepWith.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/_baseIsMatch.js","../node_modules/lodash-es/_isStrictComparable.js","../node_modules/lodash-es/_getMatchData.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseMatches.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_hasPath.js","../node_modules/lodash-es/hasIn.js","../node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/_basePropertyDeep.js","../node_modules/lodash-es/property.js","../node_modules/lodash-es/_baseIteratee.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_assignMergeValue.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/_safeGet.js","../node_modules/lodash-es/toPlainObject.js","../node_modules/lodash-es/_baseMergeDeep.js","../node_modules/lodash-es/_baseMerge.js","../node_modules/lodash-es/isEqual.js","../node_modules/lodash-es/merge.js","../node_modules/lodash-es/_baseSet.js","../node_modules/lodash-es/set.js","../node_modules/lodash-es/_baseSome.js","../node_modules/lodash-es/some.js","../src/scope.ts","../src/engineGlobals.ts","../src/operator.ts","../src/operatorCatalog.ts","../src/errors.ts","../src/dateExpr.ts","../src/valueSource.ts","../src/traverse.ts","../src/bindings.ts","../src/number.ts","../src/amount.ts","../src/offset.ts","../src/date.ts","../src/fuzzy.ts","../src/pattern.ts","../src/field.ts","../src/window.ts","../src/check.ts","../src/own.ts","../src/fieldMap/endpointKey.ts","../src/fieldMap/indexBridges.ts","../src/fieldMap/stitch.ts","../src/validate.ts","../src/fieldMap/validate.ts","../src/lens/chain.ts","../src/fieldMap/entry.ts","../src/fieldMap/walk.ts","../src/lens/narrowRule.ts","../src/lens/policy.ts","../src/lens/bindings.ts","../src/lens/coerceRule.ts","../src/lens/createLens.ts","../src/fieldMap/shape.ts","../src/compileLiteral.ts","../src/lens/fieldFit.ts","../src/lens/validateRuleInLens.ts","../src/lens/describeRule.ts","../src/lens/describeRuleSources.ts","../src/toPrisma/relationUtils.ts","../src/lens/projectPaths.ts","../src/lens/sourceOptions.ts","../src/lens/materializeSourceQuery.ts","../src/lens/materializeSources.ts","../src/lens/narrowing.ts","../src/lens/projectModels.ts","../src/lens/projectLens.ts","../src/lens/storedLens.ts","../src/fieldMap/resolveFieldMap.ts","../src/negate.ts","../src/enumMatch.ts","../src/toSql/escape.ts","../src/toSql/quoting.ts","../src/toPrisma/anyNull.ts","../src/toPrisma/recurse.ts","../src/toPrisma/valueSource.ts","../src/toPrisma/logical.ts","../src/toPrisma/offset.ts","../src/toPrisma/utils.ts","../src/toPrisma/field.ts","../src/toPrisma/groupStep.ts","../src/toPrisma/aggregate.ts","../src/toPrisma/countStep.ts","../src/toPrisma/array.ts","../src/toPrisma/date.ts","../src/toPrisma/condition.ts","../src/toPrisma/execute.ts","../src/toPrisma/index.ts","../src/toSql/params.ts","../src/toSql/join.ts","../src/toSql/valueSource.ts","../src/toSql/compare.ts","../src/toSql/json.ts","../src/toSql/shift.ts","../src/toSql/offset.ts","../src/toSql/recurse.ts","../src/toSql/field.ts","../src/toSql/aggregate.ts","../src/toSql/array.ts","../src/toSql/date.ts","../src/toSql/logical.ts","../src/toSql/condition.ts","../src/toSql/index.ts","../src/lens/toSourceQueries.ts","../src/lens/walkLensPath.ts"],"names":["freeGlobal","freeGlobal_default","freeSelf","root","root_default","Symbol","Symbol_default","objectProto","hasOwnProperty","nativeObjectToString","symToStringTag","getRawTag","value","isOwn","tag","unmasked","result","getRawTag_default","objectToString","objectToString_default","nullTag","undefinedTag","baseGetTag","baseGetTag_default","isObjectLike","isObjectLike_default","symbolTag","isSymbol","isSymbol_default","arrayMap","array","iteratee","index","length","arrayMap_default","isArray","isArray_default","symbolProto","symbolToString","baseToString","INFINITY","baseToString_default","isObject","type","isObject_default","identity","identity_default","asyncTag","funcTag","genTag","proxyTag","isFunction","isFunction_default","coreJsData","coreJsData_default","maskSrcKey","uid","isMasked","func","isMasked_default","funcProto","funcToString","toSource","toSource_default","reRegExpChar","reIsHostCtor","reIsNative","baseIsNative","pattern","baseIsNative_default","getValue","object","key","getValue_default","getNative","getNative_default","WeakMap","WeakMap_default","objectCreate","baseCreate","proto","baseCreate_default","apply","thisArg","args","apply_default","copyArray","source","copyArray_default","HOT_COUNT","HOT_SPAN","nativeNow","shortOut","count","lastCalled","stamp","remaining","shortOut_default","constant","constant_default","defineProperty","defineProperty_default","baseSetToString","string","baseSetToString_default","setToString","setToString_default","arrayEach","arrayEach_default","MAX_SAFE_INTEGER","reIsUint","isIndex","isIndex_default","baseAssignValue","baseAssignValue_default","eq","other","eq_default","assignValue","objValue","assignValue_default","copyObject","props","customizer","isNew","newValue","copyObject_default","nativeMax","overRest","start","transform","otherArgs","overRest_default","baseRest","baseRest_default","isLength","isLength_default","isArrayLike","isArrayLike_default","isIterateeCall","isIterateeCall_default","createAssigner","assigner","sources","guard","createAssigner_default","isPrototype","Ctor","isPrototype_default","baseTimes","n","baseTimes_default","argsTag","baseIsArguments","baseIsArguments_default","propertyIsEnumerable","isArguments","isArguments_default","stubFalse","stubFalse_default","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","isBuffer","isBuffer_default","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","typedArrayTags","baseIsTypedArray","baseIsTypedArray_default","baseUnary","baseUnary_default","freeProcess","nodeUtil","types","nodeUtil_default","nodeIsTypedArray","isTypedArray","isTypedArray_default","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","arrayLikeKeys_default","overArg","arg","overArg_default","nativeKeys","nativeKeys_default","baseKeys","baseKeys_default","keys","keys_default","nativeKeysIn","nativeKeysIn_default","baseKeysIn","isProto","baseKeysIn_default","keysIn","keysIn_default","reIsDeepProp","reIsPlainProp","isKey","isKey_default","nativeCreate","nativeCreate_default","hashClear","hashClear_default","hashDelete","hashDelete_default","HASH_UNDEFINED","hashGet","data","hashGet_default","hashHas","hashHas_default","hashSet","hashSet_default","Hash","entries","entry","Hash_default","listCacheClear","listCacheClear_default","assocIndexOf","assocIndexOf_default","arrayProto","splice","listCacheDelete","lastIndex","listCacheDelete_default","listCacheGet","listCacheGet_default","listCacheHas","listCacheHas_default","listCacheSet","listCacheSet_default","ListCache","ListCache_default","Map","Map_default","mapCacheClear","mapCacheClear_default","isKeyable","isKeyable_default","getMapData","map","getMapData_default","mapCacheDelete","mapCacheDelete_default","mapCacheGet","mapCacheGet_default","mapCacheHas","mapCacheHas_default","mapCacheSet","size","mapCacheSet_default","MapCache","MapCache_default","FUNC_ERROR_TEXT","memoize","resolver","memoized","cache","memoize_default","MAX_MEMOIZE_SIZE","memoizeCapped","memoizeCapped_default","rePropName","reEscapeChar","stringToPath","match","number","quote","subString","stringToPath_default","toString","toString_default","castPath","castPath_default","toKey","toKey_default","baseGet","path","baseGet_default","get","defaultValue","get_default","arrayPush","values","offset","arrayPush_default","getPrototype","getPrototype_default","objectCtorString","isPlainObject","isPlainObject_default","stackClear","stackClear_default","stackDelete","stackDelete_default","stackGet","stackGet_default","stackHas","stackHas_default","LARGE_ARRAY_SIZE","stackSet","pairs","stackSet_default","Stack","Stack_default","baseAssign","baseAssign_default","baseAssignIn","baseAssignIn_default","allocUnsafe","cloneBuffer","buffer","isDeep","cloneBuffer_default","arrayFilter","predicate","resIndex","arrayFilter_default","stubArray","stubArray_default","nativeGetSymbols","getSymbols","symbol","getSymbols_default","copySymbols","copySymbols_default","getSymbolsIn","getSymbolsIn_default","copySymbolsIn","copySymbolsIn_default","baseGetAllKeys","keysFunc","symbolsFunc","baseGetAllKeys_default","getAllKeys","getAllKeys_default","getAllKeysIn","getAllKeysIn_default","DataView","DataView_default","Promise","Promise_default","Set","Set_default","promiseTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","getTag_default","initCloneArray","initCloneArray_default","Uint8Array","Uint8Array_default","cloneArrayBuffer","arrayBuffer","cloneArrayBuffer_default","cloneDataView","dataView","cloneDataView_default","reFlags","cloneRegExp","regexp","cloneRegExp_default","symbolValueOf","cloneSymbol","cloneSymbol_default","cloneTypedArray","typedArray","cloneTypedArray_default","initCloneByTag","initCloneByTag_default","initCloneObject","initCloneObject_default","baseIsMap","baseIsMap_default","nodeIsMap","isMap","isMap_default","baseIsSet","baseIsSet_default","nodeIsSet","isSet","isSet_default","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","cloneableTags","baseClone","bitmask","stack","isFlat","isFull","isFunc","stacked","subValue","baseClone_default","cloneDeep","cloneDeep_default","cloneDeepWith","cloneDeepWith_default","setCacheAdd","setCacheAdd_default","setCacheHas","setCacheHas_default","SetCache","SetCache_default","arraySome","arraySome_default","cacheHas","cacheHas_default","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","equalArrays_default","mapToArray","mapToArray_default","setToArray","set","setToArray_default","equalByTag","convert","equalByTag_default","equalObjects","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","equalObjects_default","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","baseIsEqualDeep_default","baseIsEqual","baseIsEqual_default","baseIsMatch","matchData","noCustomizer","srcValue","baseIsMatch_default","isStrictComparable","isStrictComparable_default","getMatchData","getMatchData_default","matchesStrictComparable","matchesStrictComparable_default","baseMatches","baseMatches_default","baseHasIn","baseHasIn_default","hasPath","hasFunc","hasPath_default","hasIn","hasIn_default","baseMatchesProperty","baseMatchesProperty_default","baseProperty","baseProperty_default","basePropertyDeep","basePropertyDeep_default","property","property_default","baseIteratee","baseIteratee_default","createBaseFor","fromRight","iterable","createBaseFor_default","baseFor","baseFor_default","baseForOwn","baseForOwn_default","createBaseEach","eachFunc","collection","createBaseEach_default","baseEach","baseEach_default","assignMergeValue","assignMergeValue_default","isArrayLikeObject","isArrayLikeObject_default","safeGet","safeGet_default","toPlainObject","toPlainObject_default","baseMergeDeep","srcIndex","mergeFunc","isCommon","isTyped","baseMergeDeep_default","baseMerge","baseMerge_default","isEqual","isEqual_default","merge","merge_default","baseSet","nested","baseSet_default","set_default","baseSome","baseSome_default","some","some_default","SCOPE_REF","parseScopeRef","ref","scopeOutOfBounds","depth","available","readScopeRef","scopes","parsed","SEGMENT","segments","m","step","at","boxed","readOwnPath","readField","target","readPath","context","checkOnlyScopeRef","rail","rejectScopedField","condition","readContextRef","DEFAULTS","store","copy","v","isThenable","engineGlobals","partial","fn","prev","QUERY_MODE_PROVIDERS","supportsQueryMode","provider","resolveCaseInsensitive","ruleFlag","resolveFuzzy","resolved","Operator","ArrayOperator","DateOperator","FieldKind","NUMERIC_KINDS","ORDERABLE_KINDS","STRINGY_KINDS","EQUATABLE_KINDS","ALL_KINDS","NULLABLE_KINDS","RuleTarget","isFieldKind","name","ALL_TARGETS","NON_SQL_TARGETS","NON_PRISMA_TARGETS","ValueShape","FIELD_OPERATOR_CATALOG","DATE_OPERATOR_CATALOG","ARRAY_OPERATOR_CATALOG","CATALOGS","catalogEntry","operator","family","leafCatalogEntry","node","comparatorOf","getValueShape","unknownOperator","isOperatorSupportedForTarget","getOperatorsForKind","kind","field","op","date","getArrayOperators","OPERATOR_ENTRIES","withShape","shapes","NO_VALUE_OPERATORS","ORDERED_OPERATORS","WINDOW_OPERATORS","RANGE_OPERATORS","OPERAND_OPERATORS","CONTAINS_OPERATORS","AGGREGATE_OPERATORS","AGGREGATE_MODES","getAggregateOperators","EQUALITY_OPERATORS","SET_OPERATORS","EXACT_OPERATORS","DAY_LIST_OPERATORS","DATE_RANGE_OPERATORS","OFFSET_OPERATORS","arrayWithShape","ARRAY_COUNT_OPERATORS","ARRAY_CONDITION_OPERATORS","ARRAY_MONOTONE_OPERATORS","NEGATED_OPERATORS","NEGATED_STRING_OPERATORS","NEGATED_RANGE_OPERATORS","bounding","comparators","UPPER_BOUND_OPERATORS","LOWER_BOUND_OPERATORS","INTEGER_KINDS","COERCIBLE_KINDS","COMPILE_COERCED_KINDS","SINGLE_VALUE_SHAPES","RELATIVE_UNITS","INTERVAL_FIELDS","isRelativeUnit","unit","isCalendarUnit","PERIOD_UNITS","DAY_NAMES","isDayName","complements","catalog","extra","a","b","COMPLEMENT_OPERATORS","COMPLEMENT_DATE_OPERATORS","OPPOSITE_OPERATORS","fieldlessArrayError","countRequired","rangeExprRequired","conditionRequired","relationNotValue","relationsNotValue","fuzzyNotCompiled","rule","unorderedOperand","end","unknownAggregateMode","mode","ambiguousCondition","noCompiledForm","what","why","windowUnsupported","toManyHopError","hop","pastScalarError","column","dayjs","utc","timezone","quarterOfYear","isoWeek","isDateExpr","DEFAULT_ZONE","requireNow","config","base","intervalTotal","units","total","amount","WALL","shiftByUnits","direction","zone","months","days","seconds","wall","isRollingExpr","rollingExpr","rollingShift","expr","isPeriodExpr","isEdgeExpr","namedPeriod","periodUnit","effectivePeriodUnit","resolvePeriodRange","now","stepUnit","eff","resolveDateExpr","rolling","period","resolvePointForOperator","positive","resolveDateExprRange","moved","SOURCE_FORMS","rowRef","matchSource","read","isValueSource","readBinding","optional","bindings","bound","compileBinding","readValueSource","isObjCondition","c","isIfNode","isRelationNode","childSlots","child","isLogicalNode","visitCondition","enter","scope","below","inner","someCondition","test","found","mapCondition","opts","clone","slots","slot","mapped","sameNode","original","item","mapUnits","mapExpr","mapLeafSources","isDate","out","leafSources","role","valueRefRoles","valueRefs","r","elementRefs","o","conditionShape","allOf","conditions","anyOf","bindTokens","listBindings","required","names","token","bindRule","resolve","bind","_optional","rest","MAX_SAFE","bigIntToNumber","toNumber","raw","readNumber","orderPair","readPair","readOrderedPair","pair","isOrderedValue","readSet","splitNull","operand","list","unitAmountProblem","resolveMagnitude","magnitude","problem","resolveUnits","resolveExpr","addOffset","ends","offsetAmount","offsetShift","isSameOrBefore","isSameOrAfter","checkDate","fieldValue","exprConfig","resolveDateConfig","tz","fieldDate","parseDateValue","getError","dayNumbers","listed","day","dates","parseCompareDates","compareDate","endDate","move","shift","point","toPoint","label","first","second","date1","date2","shiftedStart","shiftedEnd","pointOf","shifted","read_","ZONED_TIME","hasExplicitZone","coerceDateLiteral","maxFuzzyDistance","resolveMaxDistance","maxDistance","maxRatio","caps","tokenize","isNumeric","withinDistance","max","distance","fuzzyContains","haystack","query","needle","hay","queryTokens","hayTokens","hayToken","readPattern","flags","caseInsensitive","RE2JS","error","CLASSES","POSIX","PG_SPECIAL","MAX_REPEAT","codePoint","code","literal","char","postgresSource","refuse","i","refuseQuantifiedAnchor","translateEscape","inClass","upper","braced","hex","oct","w","quoted","ch","named","repeat","literalDash","rangeEnd","members","posix","expands","dash","closedRange","patternProblem","isEmptyValue","hasNoOperand","missing","isExistenceTest","listMembership","lists","member","each","lowerStrings","fromBigInt","coerceScalar","num","applyCoercion","checkField","computed","needsValue","ci","lower","lhs","rhs","fuzzy","containsMatch","containsValue","compareOrderedValues","hasMatch","isPattern","range","orderedRange","inRangeOrder","comparableFieldValue","toOrderedPrimitive","min","left","right","sameOrder","container","search","orderKind","hasWindow","conditionOpAndField","shape","extremalRewrite","orderField","dir","cof","isUpper","isLower","orderBy","take","skip","present","applyWindow","items","filterFn","order","compareNullsLast","aNull","bNull","x","y","windowRewrite","ordered","filter","validateRootArrayShape","check","options","evaluate","all","any","checkIfThenElse","checkArray","checkAggregate","errors","readArray","rawArray","windowFilter","arrayValue","itemField","nestedCondition","numbers","loc","sum","labelled","defaultMsg","itemCondition","elementwise","matches","failures","results","own","record","ownEntry","make","modelOf","model","fieldOf","endpointKey","fieldMap","parseEndpointKey","currentMap","keyByUnique","rows","on","endpointLabel","side","row","k","hint","groupByKey","indexBridges","rawData","bridge","aKey","bKey","aSide","endpoint","aRows","bRows","stitchFieldMaps","aOwner","bOwner","isOneToMany","validationResult","throwIfInvalid","e","validateRule","validateCondition","assertValidRule","pushIssue","validateLogicalArray","validateFieldRule","validateAggregateRule","validateArrayRule","validateDateRule","validateField","validateRef","issuePath","validateSource","forms","form","validateOffset","scoped","validateRelativeUnits","rejectSqlRowRange","targetSlug","forbidValueAndPath","validateValueShape","validateWindow","agg","isNumericRange","hasCondition","refuseCount","validateDateExpr","isDateRangeOrExprPair","validatePeriodUnit","isRange","ob","message","FORBIDDEN_FIELD_CHARS","validateFieldMaps","mapName","modelName","fieldName","assertValidFieldMaps","isLens","collectChain","visited","cursor","getRoot","isJsonEntry","isRelationEntry","declaredEnumValues","enums","relationTargetOf","walkMaps","maps","from","parts","next","walkFieldPath","rootModel","hops","last","walkWith","fieldEntry","walk","optionalToOneHops","relationTarget","hitsBridge","conditionTouchesBridge","wrapWithWheres","wheres","holdsWhenAbsent","underHopGrants","deeper","prefixConditionFields","cond","prefix","refs","hopGrants","policy","effect","resolveVisit","where","collectHopWheres","hopsAt","relationHops","refHops","anchorOf","narrowAt","anchor","valueWheres","grants","filterFirst","narrowRule","lensOrNarrowing","resolvePolicy","rootEffect","rewritten","normalizeGroupBy","g","isSourceSpec","normalizeSource","OFF_PATH","lens","chain","intersectStringSet","cur","augmentPicksWithRelations","rel","accumulatePicksOmitsInto","state","augmented","f","intersectIntoMap","vals","unionIntoMap","s","accumulateEnumFields","picksMap","omitsMap","declaredKey","accumulateInto","narrow","layer","spec","clauses","axes","relPath","fieldEnumPicks","fieldEnumOmits","typeEnumPicks","typeEnumOmits","current","applyNode","narrowing","parent","visitMapDefaults","dflt","enumName","enumN","sub","seg","isEnum","baseValues","typePicks","typeOmits","fp","fo","isFieldVisible","allowedEnumValues","resolvePolicyPath","effects","sourceReadsVisible","others","_","lensPathEnd","fieldPath","resolution","terminal","jsonSubPath","lensRootScope","stepIntoField","walked","open","relation","PARENT_PREFIX","isParentRef","baseName","mapNodeConditions","relations","mapLayerConditions","nrw","mapDefaults","defaults","models","layerConditions","declaredNames","listLensBindings","bindLens","effective","validateBindNames","occupied","anc","coerceRule","createLens","bridges","fieldShape","kindShape","acceptsEmptyString","refuseRelationsValue","readsText","comparesText","holdsString","ruleShape","entryKind","instantMs","ms","toInstant","compileFieldLiteral","declared","instant","flatten","ruleLiterals","NUMERIC_STRING","LITERAL_FIT","show","leafFitViolations","coerceType","expected","fits","coercedFits","fitsAsCompiled","arrayFitViolation","arrayOperator","visit","issues","scopeFor","fieldOk","terminalEntry","terminalFieldName","terminalIsEnum","terminalEnumType","terminalAllowedValues","misfit","literals","allowed","checkConditionAtVisit","validateRuleInLens","acc","describeRule","ENUMERABLE_SHAPES","VALUELESS_SHAPES","contribution","dedupeKey","describeRuleSources","seenKeys","terminalEffect","literalKey","prefixes","findReverseRelation","targetModel","currentModel","relationName","targetEntry","fieldDef","relationKeys","reverse","inverseRelation","candidates","projectFields","fetched","fields","groupBy","projectPaths","fetchedByPathField","sv","dottedPath","sourceLabels","sourceGroupBys","relField","foldPathGuards","baseRelPath","dotted","strict","crossed","hopKey","collectFieldPaths","traversalGuards","whereClauses","axis","clause","groupAtPath","groupsAtPaths","paths","optionKey","groups","accumulateOption","byKey","existing","accumulateRow","rowLabel","sortOptions","tier","ga","gb","cmp","ancestorGrants","visits","carried","level","inverse","here","sourcePlans","sourceClauses","guards","above","materializeSourceQuery","rowShape","flat","rowsAtPath","segment","materializeSources","eligibility","validateWhere","parentPolicy","position","validateSourceTargetVisibility","reported","toOnePathError","toMany","hiddenBy","ancestors","picks","validateModelNode","ancestorChain","sameLayerDefaults","modelFields","enumRegistry","whereVisits","isDefault","hidden","validateEnumOp","registry","dottedLabel","err","reserved","axesKey","ancEntry","ancAxes","validateDefaultsEnums","defaultsEnums","ancestorEnumNarrowings","registryVals","inheritedPicks","inheritedOmits","isInheritedVisible","validateEnumInheritance","validatePathNarrowing","sameLayerDefaultsForModel","synthAncestors","d","childAncestorChain","validateNarrowing","parentVisits","ancestorDefaultsEnums","ancestorDefaultsForModel","lensMapName","lensModel","ancestorChainForRoot","assertValidNarrowing","modelKey","unionFieldInto","merged","projectModels","fetchedByModelField","surface","visitedDeclared","visitedOffPath","queue","dkey","nextEntry","surfaceMap","fieldRecord","enumValuesByType","enumType","bb","aExposesB","bExposesA","projectLens","by","isBase","composeLens","id","records","ids","_id","parents","part","storeLens","_parent","resolveFieldMap","absent","negateLeaf","settle","leaf","flip","negate","holds","settleLiteral","enumMatches","hasNull","norm","wanted","hit","escapeIdentifier","identifier","escapeLikePattern","quoteField","alias","jsonb","jsonPath","columnExpr","jsonKey","RUNTIMES","installed","installedAnyNull","load","loaders","runtime","createRequire","__require","prismaAnyNull","anyNull","dispatch","setConditionBuilder","buildCondition","readPathValue","readSource","prismaRead","dateConfigOf","settleLeaf","comparison","sourced","_path","_bind","matchAll","overFetch","matchNothing","isMatchAll","isMatchNothing","andWhere","arms","arm","orWhere","notLeaf","buildAll","buildAny","buildIfThenElse","notIf","thenClause","implication","ifClause","elseClause","offsetNumber","offsetDate","buildNestedFilter","shapeOf","isJson","nullOf","hopArms","absentArms","buildMapAwareFilter","equalityFilter","queryMode","emptyValues","emptyString","notEmpty","empty","emptinessWhere","buildRelationRule","asksMissing","buildFieldRule","resolveRuleValue","enumEntry","matched","comparisonFilter","jsonMember","complemented","val","JSON_MATCH","unordered","comparator","walkResult","jsonFilter","fieldUpToJson","groupPath","implicitM2M","groupMembership","having","complement","membership","selected","buildAggregateRule","buildAggregateStep","holdsEmpty","aggregate","buildCountStep","holdsForEmpty","countHaving","buildArrayRule","compileArrayRule","isValueArray","childOptionsFor","buildValueArrayRule","buildArrayLeafFilter","childOptions","buildDateRule","buildDateLeafFilter","instantOf","window","one","two","executePrismaPlan","plan","prismaDelegate","groupBySteps","whereStep","stepResults","delegate","resolveStepRefs","obj","idx","normalizeOptions","toPrisma","bindable","nextParam","resolveField","asWritten","joined","joinAlias","sql","resolveFieldSql","fromAlias","buildJoinClause","currentAlias","targetAlias","targetDbName","onCondition","there","NO_VALUE","isMissing","resolveRef","resolveSource","compileTimeRead","SQL_COMPARATOR","orderedSql","operandSql","orNull","noOperandSql","negated","nullable","compareSql","rangeSql","perRow","symmetric","outside","guarded","holdsObject","buildJsonComparison","j","text","json","lc","not","lowered","equal","like","element","contains","low","high","within","isRowRef","asInstant","readsRow","magnitudeSql","whole","cast","intervalSql","terms","term","factor","shiftDate","z","knownOperand","NOT_KNOWN","refuseJsonOperand","resolveRange","resolveComparison","arithmetic","has","listLower","withShapeString","same","rhsVal","rhsCol","noneOf","sqlMatch","emptinessSql","coerce","subquery","buildAggregateSubquery","isNative","extract","arrayShape","asOperand","readsDate","notADate","sides","resolvePoint","resolveWindow","dow","nowOperand","expressionPoint","withOffset","points","el","builderState","hasMap","rootAlias","toSql","mergeSelect","into","head","nestedSelects","compileOne","prismaWhere","labelPath","nestedPaths","select","prisma","sqlQuery","labelCol","groupCols","joins","joinSql","whereSql","col","toSourceQueries","composedWhere","walkLensPath"],"mappings":"omCACA,IAAIA,EAAAA,CAAa,OAAO,MAAA,EAAU,QAAA,EAAY,MAAA,EAAU,MAAA,CAAO,MAAA,GAAW,MAAA,EAAU,MAAA,CAE7EC,EAAAA,CAAQD,EAAAA,CCAf,IAAIE,EAAAA,CAAW,OAAO,IAAA,EAAQ,QAAA,EAAY,IAAA,EAAQ,IAAA,CAAK,MAAA,GAAW,MAAA,EAAU,IAAA,CAGxEC,EAAAA,CAAOF,EAAAA,EAAcC,EAAAA,EAAY,QAAA,CAAS,aAAa,CAAA,EAAE,CAEtDE,EAAQD,EAAAA,CCLf,IAAIE,EAAAA,CAASD,CAAAA,CAAK,MAAA,CAEXE,CAAAA,CAAQD,EAAAA,CCFf,IAAIE,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAO7BE,EAAAA,CAAuBF,EAAAA,CAAY,QAAA,CAGnCG,EAAAA,CAAiBJ,CAAAA,CAASA,CAAAA,CAAO,WAAA,CAAc,MAAA,CASnD,SAASK,EAAAA,CAAUC,CAAAA,CAAO,CACxB,IAAIC,CAAAA,CAAQL,EAAAA,CAAe,IAAA,CAAKI,EAAOF,EAAc,CAAA,CACjDI,CAAAA,CAAMF,CAAAA,CAAMF,EAAc,CAAA,CAE9B,GAAI,CACFE,CAAAA,CAAMF,EAAc,CAAA,CAAI,KAAA,CAAA,CACxB,IAAIK,CAAAA,CAAW,CAAA,EACjB,CAAA,KAAY,CAAC,CAEb,IAAIC,CAAAA,CAASP,EAAAA,CAAqB,IAAA,CAAKG,CAAK,CAAA,CAC5C,OAAIG,CAAAA,GACEF,CAAAA,CACFD,CAAAA,CAAMF,EAAc,CAAA,CAAII,EAExB,OAAOF,CAAAA,CAAMF,EAAc,CAAA,CAAA,CAGxBM,CACT,CAEA,IAAOC,EAAAA,CAAQN,EAAAA,CC5Cf,IAAIJ,EAAAA,CAAc,MAAA,CAAO,SAAA,CAOrBE,EAAAA,CAAuBF,EAAAA,CAAY,QAAA,CASvC,SAASW,EAAAA,CAAeN,CAAAA,CAAO,CAC7B,OAAOH,EAAAA,CAAqB,IAAA,CAAKG,CAAK,CACxC,CAEA,IAAOO,EAAAA,CAAQD,EAAAA,CChBf,IAAIE,GAAU,eAAA,CACVC,EAAAA,CAAe,oBAAA,CAGfX,EAAAA,CAAiBJ,CAAAA,CAASA,CAAAA,CAAO,WAAA,CAAc,MAAA,CASnD,SAASgB,EAAAA,CAAWV,CAAAA,CAAO,CACzB,OAAIA,CAAAA,EAAS,IAAA,CACJA,CAAAA,GAAU,MAAA,CAAYS,EAAAA,CAAeD,EAAAA,CAEtCV,EAAAA,EAAkBA,EAAAA,IAAkB,MAAA,CAAOE,CAAK,CAAA,CACpDK,EAAAA,CAAUL,CAAK,CAAA,CACfO,EAAAA,CAAeP,CAAK,CAC1B,CAEA,IAAOW,EAAAA,CAAQD,EAAAA,CCHf,SAASE,EAAAA,CAAaZ,CAAAA,CAAO,CAC3B,OAAOA,CAAAA,EAAS,IAAA,EAAQ,OAAOA,CAAAA,EAAS,QAC1C,CAEA,IAAOa,CAAAA,CAAQD,EAAAA,CCxBf,IAAIE,EAAAA,CAAY,iBAAA,CAmBhB,SAASC,EAAAA,CAASf,CAAAA,CAAO,CACvB,OAAO,OAAOA,CAAAA,EAAS,QAAA,EACpBa,CAAAA,CAAab,CAAK,GAAKW,EAAAA,CAAWX,CAAK,CAAA,EAAKc,EACjD,CAEA,IAAOE,EAAAA,CAAQD,EAAAA,CCnBf,SAASE,EAAAA,CAASC,CAAAA,CAAOC,CAAAA,CAAU,CAKjC,IAAA,IAJIC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASH,CAAAA,EAAS,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAM,MAAA,CACnCd,CAAAA,CAAS,KAAA,CAAMiB,CAAM,CAAA,CAElB,EAAED,CAAAA,CAAQC,CAAAA,EACfjB,CAAAA,CAAOgB,CAAK,CAAA,CAAID,CAAAA,CAASD,CAAAA,CAAME,CAAK,CAAA,CAAGA,CAAAA,CAAOF,CAAK,CAAA,CAErD,OAAOd,CACT,CAEA,IAAOkB,EAAAA,CAAQL,EAAAA,CCGf,IAAIM,EAAAA,CAAU,KAAA,CAAM,OAAA,CAEbC,CAAAA,CAAQD,EAAAA,CCnBf,IAGIE,EAAAA,CAAc/B,CAAAA,CAASA,CAAAA,CAAO,SAAA,CAAY,MAAA,CAC1CgC,EAAAA,CAAiBD,EAAAA,CAAcA,GAAY,QAAA,CAAW,OAU1D,SAASE,EAAAA,CAAa3B,CAAAA,CAAO,CAE3B,GAAI,OAAOA,CAAAA,EAAS,QAAA,CAClB,OAAOA,CAAAA,CAET,GAAIwB,CAAAA,CAAQxB,CAAK,CAAA,CAEf,OAAOsB,EAAAA,CAAStB,CAAAA,CAAO2B,EAAY,CAAA,CAAI,EAAA,CAEzC,GAAIX,EAAAA,CAAShB,CAAK,CAAA,CAChB,OAAO0B,EAAAA,CAAiBA,EAAAA,CAAe,IAAA,CAAK1B,CAAK,CAAA,CAAI,EAAA,CAEvD,IAAII,CAAAA,CAAUJ,CAAAA,CAAQ,EAAA,CACtB,OAAQI,CAAAA,EAAU,GAAA,EAAQ,CAAA,CAAIJ,CAAAA,EAAU,SAAC4B,CAAY,IAAA,CAAOxB,CAC9D,CAEA,IAAOyB,EAAAA,CAAQF,EAAAA,CCXf,SAASG,EAAAA,CAAS9B,CAAAA,CAAO,CACvB,IAAI+B,CAAAA,CAAO,OAAO/B,CAAAA,CAClB,OAAOA,CAAAA,EAAS,IAAA,GAAS+B,GAAQ,QAAA,EAAYA,CAAAA,EAAQ,UAAA,CACvD,CAEA,IAAOC,CAAAA,CAAQF,EAAAA,CCdf,SAASG,EAAAA,CAASjC,CAAAA,CAAO,CACvB,OAAOA,CACT,CAEA,IAAOkC,EAAAA,CAAQD,EAAAA,CChBf,IAAIE,EAAAA,CAAW,wBAAA,CACXC,EAAAA,CAAU,mBAAA,CACVC,EAAAA,CAAS,4BAAA,CACTC,EAAAA,CAAW,gBAAA,CAmBf,SAASC,EAAAA,CAAWvC,CAAAA,CAAO,CACzB,GAAI,CAACgC,CAAAA,CAAShC,CAAK,CAAA,CACjB,OAAO,MAAA,CAIT,IAAIE,CAAAA,CAAMS,EAAAA,CAAWX,CAAK,CAAA,CAC1B,OAAOE,CAAAA,EAAOkC,EAAAA,EAAWlC,CAAAA,EAAOmC,EAAAA,EAAUnC,CAAAA,EAAOiC,EAAAA,EAAYjC,CAAAA,EAAOoC,EACtE,CAEA,IAAOE,EAAAA,CAAQD,EAAAA,CCjCf,IAAIE,EAAAA,CAAajD,CAAAA,CAAK,oBAAoB,CAAA,CAEnCkD,EAAAA,CAAQD,GCFf,IAAIE,EAAAA,CAAAA,CAAc,UAAW,CAC3B,IAAIC,CAAAA,CAAM,QAAA,CAAS,IAAA,CAAKF,EAAAA,EAAcA,EAAAA,CAAW,IAAA,EAAQA,EAAAA,CAAW,IAAA,CAAK,QAAA,EAAY,EAAE,CAAA,CACvF,OAAOE,CAAAA,CAAO,gBAAA,CAAmBA,CAAAA,CAAO,EAC1C,CAAA,GAAE,CASF,SAASC,EAAAA,CAASC,CAAAA,CAAM,CACtB,OAAO,CAAC,CAACH,IAAeA,EAAAA,IAAcG,CACxC,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CClBf,IAAIG,EAAAA,CAAY,QAAA,CAAS,SAAA,CAGrBC,EAAAA,CAAeD,EAAAA,CAAU,QAAA,CAS7B,SAASE,EAAAA,CAASJ,CAAAA,CAAM,CACtB,GAAIA,CAAAA,EAAQ,IAAA,CAAM,CAChB,GAAI,CACF,OAAOG,EAAAA,CAAa,IAAA,CAAKH,CAAI,CAC/B,CAAA,KAAY,CAAC,CACb,GAAI,CACF,OAAQA,CAAAA,CAAO,EACjB,CAAA,KAAY,CAAC,CACf,CACA,OAAO,EACT,CAEA,IAAOK,EAAAA,CAAQD,EAAAA,CChBf,IAAIE,EAAAA,CAAe,qBAAA,CAGfC,EAAAA,CAAe,6BAAA,CAGfL,EAAAA,CAAY,QAAA,CAAS,SAAA,CACrBrD,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBsD,EAAAA,CAAeD,EAAAA,CAAU,QAAA,CAGzBpD,EAAAA,CAAiBD,GAAY,cAAA,CAG7B2D,EAAAA,CAAa,MAAA,CAAO,GAAA,CACtBL,EAAAA,CAAa,IAAA,CAAKrD,EAAc,CAAA,CAAE,OAAA,CAAQwD,EAAAA,CAAc,MAAM,CAAA,CAC7D,OAAA,CAAQ,wDAAA,CAA0D,OAAO,CAAA,CAAI,GAChF,CAAA,CAUA,SAASG,EAAAA,CAAavD,CAAAA,CAAO,CAC3B,GAAI,CAACgC,CAAAA,CAAShC,CAAK,CAAA,EAAK+C,EAAAA,CAAS/C,CAAK,CAAA,CACpC,OAAO,MAAA,CAET,IAAIwD,CAAAA,CAAUhB,EAAAA,CAAWxC,CAAK,CAAA,CAAIsD,EAAAA,CAAaD,EAAAA,CAC/C,OAAOG,CAAAA,CAAQ,IAAA,CAAKL,EAAAA,CAASnD,CAAK,CAAC,CACrC,CAEA,IAAOyD,EAAAA,CAAQF,EAAAA,CCtCf,SAASG,EAAAA,CAASC,CAAAA,CAAQC,CAAAA,CAAK,CAC7B,OAAoCD,CAAAA,GAAOC,CAAG,CAChD,CAEA,IAAOC,GAAQH,EAAAA,CCDf,SAASI,EAAAA,CAAUH,CAAAA,CAAQC,CAAAA,CAAK,CAC9B,IAAI5D,CAAAA,CAAQ6D,EAAAA,CAASF,CAAAA,CAAQC,CAAG,CAAA,CAChC,OAAOH,EAAAA,CAAazD,CAAK,CAAA,CAAIA,CAAAA,CAAQ,MACvC,CAEA,IAAO+D,EAAAA,CAAQD,EAAAA,CCZf,IAAIE,EAAAA,CAAUD,EAAAA,CAAUvE,CAAAA,CAAM,SAAS,CAAA,CAEhCyE,EAAAA,CAAQD,EAAAA,CCHf,IAAIE,EAAAA,CAAe,MAAA,CAAO,MAAA,CAUtBC,EAAAA,CAAAA,CAAc,UAAW,CAC3B,SAASR,CAAAA,EAAS,CAAC,CACnB,OAAO,SAASS,CAAAA,CAAO,CACrB,GAAI,CAACpC,CAAAA,CAASoC,CAAK,CAAA,CACjB,OAAO,EAAC,CAEV,GAAIF,EAAAA,CACF,OAAOA,EAAAA,CAAaE,CAAK,CAAA,CAE3BT,CAAAA,CAAO,SAAA,CAAYS,EACnB,IAAIhE,CAAAA,CAAS,IAAIuD,CAAAA,CACjB,OAAAA,CAAAA,CAAO,SAAA,CAAY,MAAA,CACZvD,CACT,CACF,CAAA,GAAE,CAEKiE,EAAAA,CAAQF,EAAAA,CCnBf,SAASG,EAAAA,CAAMxB,CAAAA,CAAMyB,CAAAA,CAASC,CAAAA,CAAM,CAClC,OAAQA,CAAAA,CAAK,MAAA,EACX,KAAK,CAAA,CAAG,OAAO1B,CAAAA,CAAK,IAAA,CAAKyB,CAAO,EAChC,KAAK,CAAA,CAAG,OAAOzB,CAAAA,CAAK,IAAA,CAAKyB,CAAAA,CAASC,CAAAA,CAAK,CAAC,CAAC,CAAA,CACzC,KAAK,CAAA,CAAG,OAAO1B,CAAAA,CAAK,IAAA,CAAKyB,CAAAA,CAASC,CAAAA,CAAK,CAAC,CAAA,CAAGA,CAAAA,CAAK,CAAC,CAAC,CAAA,CAClD,KAAK,CAAA,CAAG,OAAO1B,CAAAA,CAAK,IAAA,CAAKyB,CAAAA,CAASC,CAAAA,CAAK,CAAC,CAAA,CAAGA,CAAAA,CAAK,CAAC,CAAA,CAAGA,CAAAA,CAAK,CAAC,CAAC,CAC7D,CACA,OAAO1B,CAAAA,CAAK,KAAA,CAAMyB,CAAAA,CAASC,CAAI,CACjC,CAEA,IAAOC,EAAAA,CAAQH,EAAAA,CCZf,SAASI,EAAAA,CAAUC,CAAAA,CAAQzD,CAAAA,CAAO,CAChC,IAAIE,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASsD,CAAAA,CAAO,MAAA,CAGpB,IADAzD,CAAAA,GAAUA,CAAAA,CAAQ,KAAA,CAAMG,CAAM,CAAA,CAAA,CACvB,EAAED,CAAAA,CAAQC,CAAAA,EACfH,CAAAA,CAAME,CAAK,CAAA,CAAIuD,CAAAA,CAAOvD,CAAK,CAAA,CAE7B,OAAOF,CACT,CAEA,IAAO0D,EAAAA,CAAQF,EAAAA,CClBf,IAAIG,EAAAA,CAAY,GAAA,CACZC,EAAAA,CAAW,EAAA,CAGXC,EAAAA,CAAY,IAAA,CAAK,GAAA,CAWrB,SAASC,EAAAA,CAASlC,EAAM,CACtB,IAAImC,CAAAA,CAAQ,CAAA,CACRC,CAAAA,CAAa,CAAA,CAEjB,OAAO,UAAW,CAChB,IAAIC,CAAAA,CAAQJ,EAAAA,EAAU,CAClBK,CAAAA,CAAYN,EAAAA,EAAYK,CAAAA,CAAQD,CAAAA,CAAAA,CAGpC,GADAA,CAAAA,CAAaC,CAAAA,CACTC,CAAAA,CAAY,CAAA,CAAA,CACd,GAAI,EAAEH,CAAAA,EAASJ,EAAAA,CACb,OAAO,SAAA,CAAU,CAAC,CAAA,CAAA,KAGpBI,EAAQ,CAAA,CAEV,OAAOnC,CAAAA,CAAK,KAAA,CAAM,MAAA,CAAW,SAAS,CACxC,CACF,CAEA,IAAOuC,EAAAA,CAAQL,EAAAA,CCjBf,SAASM,EAAAA,CAAStF,CAAAA,CAAO,CACvB,OAAO,UAAW,CAChB,OAAOA,CACT,CACF,CAEA,IAAOuF,EAAAA,CAAQD,EAAAA,CCvBf,IAAIE,EAAAA,CAAAA,CAAkB,UAAW,CAC/B,GAAI,CACF,IAAI1C,CAAAA,CAAOiB,EAAAA,CAAU,MAAA,CAAQ,gBAAgB,CAAA,CAC7C,OAAAjB,CAAAA,CAAK,EAAC,CAAG,EAAA,CAAI,EAAE,CAAA,CACRA,CACT,CAAA,KAAY,CAAC,CACf,CAAA,GAAE,CAEK2C,EAAAA,CAAQD,EAAAA,CCEf,IAAIE,EAAAA,CAAmBD,EAAAA,CAA4B,SAAS3C,CAAAA,CAAM6C,CAAAA,CAAQ,CACxE,OAAOF,EAAAA,CAAe3C,CAAAA,CAAM,UAAA,CAAY,CACtC,YAAA,CAAgB,IAAA,CAChB,UAAA,CAAc,KAAA,CACd,KAAA,CAASyC,EAAAA,CAASI,CAAM,CAAA,CACxB,QAAA,CAAY,IACd,CAAC,CACH,CAAA,CAPwCzD,EAAAA,CASjC0D,EAAAA,CAAQF,EAAAA,CCVf,IAAIG,EAAAA,CAAcR,EAAAA,CAASO,EAAe,CAAA,CAEnCE,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAU7E,CAAAA,CAAOC,EAAU,CAIlC,IAAA,IAHIC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASH,CAAAA,EAAS,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAM,MAAA,CAEhC,EAAEE,CAAAA,CAAQC,CAAAA,EACXF,CAAAA,CAASD,CAAAA,CAAME,CAAK,CAAA,CAAGA,CAAAA,CAAOF,CAAK,CAAA,GAAM,KAAA,EAA7C,CAIF,OAAOA,CACT,CAEA,IAAO8E,EAAAA,CAAQD,EAAAA,CCpBf,IAAIE,EAAAA,CAAmB,iBAGnBC,EAAAA,CAAW,kBAAA,CAUf,SAASC,EAAAA,CAAQnG,CAAAA,CAAOqB,CAAAA,CAAQ,CAC9B,IAAIU,CAAAA,CAAO,OAAO/B,CAAAA,CAClB,OAAAqB,CAAAA,CAASA,CAAAA,EAAiB4E,EAAAA,CAEnB,CAAC,CAAC5E,CAAAA,GACNU,CAAAA,EAAQ,QAAA,EACNA,CAAAA,EAAQ,QAAA,EAAYmE,EAAAA,CAAS,IAAA,CAAKlG,CAAK,CAAA,CAAA,EACrCA,CAAAA,CAAQ,EAAA,EAAMA,CAAAA,CAAQ,CAAA,EAAK,GAAKA,CAAAA,CAAQqB,CACjD,CAEA,IAAO+E,EAAAA,CAAQD,EAAAA,CCbf,SAASE,EAAAA,CAAgB1C,CAAAA,CAAQC,CAAAA,CAAK5D,CAAAA,CAAO,CACvC4D,CAAAA,EAAO,WAAA,EAAe6B,EAAAA,CACxBA,EAAAA,CAAe9B,CAAAA,CAAQC,CAAAA,CAAK,CAC1B,YAAA,CAAgB,IAAA,CAChB,UAAA,CAAc,IAAA,CACd,KAAA,CAAS5D,CAAAA,CACT,QAAA,CAAY,IACd,CAAC,CAAA,CAED2D,CAAAA,CAAOC,CAAG,CAAA,CAAI5D,EAElB,CAEA,IAAOsG,EAAAA,CAAQD,EAAAA,CCQf,SAASE,EAAAA,CAAGvG,CAAAA,CAAOwG,CAAAA,CAAO,CACxB,OAAOxG,CAAAA,GAAUwG,CAAAA,EAAUxG,CAAAA,GAAUA,CAAAA,EAASwG,CAAAA,GAAUA,CAC1D,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CChCf,IAAI5G,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAYjC,SAAS+G,GAAY/C,CAAAA,CAAQC,CAAAA,CAAK5D,CAAAA,CAAO,CACvC,IAAI2G,CAAAA,CAAWhD,CAAAA,CAAOC,CAAG,CAAA,CAAA,CACrB,EAAEhE,EAAAA,CAAe,IAAA,CAAK+D,CAAAA,CAAQC,CAAG,CAAA,EAAK6C,EAAAA,CAAGE,CAAAA,CAAU3G,CAAK,CAAA,CAAA,EACvDA,CAAAA,GAAU,MAAA,EAAa,EAAE4D,CAAAA,IAAOD,CAAAA,CAAAA,GACnC2C,EAAAA,CAAgB3C,CAAAA,CAAQC,CAAAA,CAAK5D,CAAK,EAEtC,CAEA,IAAO4G,EAAAA,CAAQF,EAAAA,CCdf,SAASG,EAAAA,CAAWlC,CAAAA,CAAQmC,CAAAA,CAAOnD,CAAAA,CAAQoD,CAAAA,CAAY,CACrD,IAAIC,CAAAA,CAAQ,CAACrD,CAAAA,CACbA,CAAAA,GAAWA,EAAS,EAAC,CAAA,CAKrB,IAAA,IAHIvC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASyF,CAAAA,CAAM,MAAA,CAEZ,EAAE1F,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIuC,CAAAA,CAAMkD,EAAM1F,CAAK,CAAA,CAEjB6F,CAAAA,CAAWF,CAAAA,CACXA,CAAAA,CAAWpD,CAAAA,CAAOC,CAAG,CAAA,CAAGe,CAAAA,CAAOf,CAAG,CAAA,CAAGA,CAAAA,CAAKD,CAAAA,CAAQgB,CAAM,CAAA,CACxD,MAAA,CAEAsC,CAAAA,GAAa,MAAA,GACfA,CAAAA,CAAWtC,CAAAA,CAAOf,CAAG,CAAA,CAAA,CAEnBoD,CAAAA,CACFV,EAAAA,CAAgB3C,CAAAA,CAAQC,CAAAA,CAAKqD,CAAQ,CAAA,CAErCL,EAAAA,CAAYjD,CAAAA,CAAQC,EAAKqD,CAAQ,EAErC,CACA,OAAOtD,CACT,CAEA,IAAOuD,EAAAA,CAAQL,EAAAA,CCpCf,IAAIM,EAAAA,CAAY,IAAA,CAAK,GAAA,CAWrB,SAASC,EAAAA,CAAStE,CAAAA,CAAMuE,CAAAA,CAAOC,CAAAA,CAAW,CACxC,OAAAD,CAAAA,CAAQF,EAAAA,CAAUE,CAAAA,GAAU,MAAA,CAAavE,CAAAA,CAAK,MAAA,CAAS,CAAA,CAAKuE,CAAAA,CAAO,CAAC,CAAA,CAC7D,UAAW,CAMhB,IAAA,IALI7C,CAAAA,CAAO,SAAA,CACPpD,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAAS8F,EAAAA,CAAU3C,CAAAA,CAAK,MAAA,CAAS6C,CAAAA,CAAO,CAAC,CAAA,CACzCnG,CAAAA,CAAQ,KAAA,CAAMG,CAAM,CAAA,CAEjB,EAAED,CAAAA,CAAQC,CAAAA,EACfH,CAAAA,CAAME,CAAK,CAAA,CAAIoD,CAAAA,CAAK6C,CAAAA,CAAQjG,CAAK,CAAA,CAEnCA,CAAAA,CAAQ,EAAA,CAER,IAAA,IADImG,EAAY,KAAA,CAAMF,CAAAA,CAAQ,CAAC,CAAA,CACxB,EAAEjG,CAAAA,CAAQiG,CAAAA,EACfE,CAAAA,CAAUnG,CAAK,CAAA,CAAIoD,CAAAA,CAAKpD,CAAK,CAAA,CAE/B,OAAAmG,CAAAA,CAAUF,CAAK,CAAA,CAAIC,CAAAA,CAAUpG,CAAK,CAAA,CAC3BuD,EAAAA,CAAM3B,CAAAA,CAAM,IAAA,CAAMyE,CAAS,CACpC,CACF,CAEA,IAAOC,EAAAA,CAAQJ,EAAAA,CCvBf,SAASK,EAAAA,CAAS3E,CAAAA,CAAMuE,CAAAA,CAAO,CAC7B,OAAOvB,EAAAA,CAAY0B,EAAAA,CAAS1E,CAAAA,CAAMuE,CAAAA,CAAOnF,EAAQ,CAAA,CAAGY,CAAAA,CAAO,EAAE,CAC/D,CAEA,IAAO4E,EAAAA,CAAQD,EAAAA,CCff,IAAIxB,EAAAA,CAAmB,gBAAA,CA4BvB,SAAS0B,EAAAA,CAAS3H,CAAAA,CAAO,CACvB,OAAO,OAAOA,CAAAA,EAAS,QAAA,EACrBA,CAAAA,CAAQ,IAAMA,CAAAA,CAAQ,CAAA,EAAK,CAAA,EAAKA,CAAAA,EAASiG,EAC7C,CAEA,IAAO2B,EAAAA,CAAQD,EAAAA,CCNf,SAASE,EAAAA,CAAY7H,CAAAA,CAAO,CAC1B,OAAOA,CAAAA,EAAS,IAAA,EAAQ4H,EAAAA,CAAS5H,CAAAA,CAAM,MAAM,CAAA,EAAK,CAACwC,EAAAA,CAAWxC,CAAK,CACrE,CAEA,IAAO8H,EAAAA,CAAQD,EAAAA,CCjBf,SAASE,EAAAA,CAAe/H,EAAOoB,CAAAA,CAAOuC,CAAAA,CAAQ,CAC5C,GAAI,CAAC3B,CAAAA,CAAS2B,CAAM,CAAA,CAClB,OAAO,MAAA,CAET,IAAI5B,CAAAA,CAAO,OAAOX,CAAAA,CAClB,OAAA,CAAIW,CAAAA,EAAQ,QAAA,CACH+F,EAAAA,CAAYnE,CAAM,CAAA,EAAKyC,EAAAA,CAAQhF,CAAAA,CAAOuC,CAAAA,CAAO,MAAM,CAAA,CACnD5B,CAAAA,EAAQ,QAAA,EAAYX,CAAAA,IAASuC,CAAAA,EAE7B8C,EAAAA,CAAG9C,EAAOvC,CAAK,CAAA,CAAGpB,CAAK,CAAA,CAEzB,KACT,CAEA,IAAOgI,EAAAA,CAAQD,EAAAA,CCnBf,SAASE,EAAAA,CAAeC,CAAAA,CAAU,CAChC,OAAOR,EAAAA,CAAS,SAAS/D,CAAAA,CAAQwE,CAAAA,CAAS,CACxC,IAAI/G,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAAS8G,CAAAA,CAAQ,MAAA,CACjBpB,CAAAA,CAAa1F,CAAAA,CAAS,CAAA,CAAI8G,CAAAA,CAAQ9G,CAAAA,CAAS,CAAC,CAAA,CAAI,MAAA,CAChD+G,CAAAA,CAAQ/G,CAAAA,CAAS,CAAA,CAAI8G,CAAAA,CAAQ,CAAC,CAAA,CAAI,MAAA,CAWtC,IATApB,CAAAA,CAAcmB,CAAAA,CAAS,MAAA,CAAS,CAAA,EAAK,OAAOnB,CAAAA,EAAc,UAAA,EACrD1F,CAAAA,EAAAA,CAAU0F,CAAAA,EACX,MAAA,CAEAqB,CAAAA,EAASJ,EAAAA,CAAeG,CAAAA,CAAQ,CAAC,CAAA,CAAGA,CAAAA,CAAQ,CAAC,CAAA,CAAGC,CAAK,CAAA,GACvDrB,EAAa1F,CAAAA,CAAS,CAAA,CAAI,MAAA,CAAY0F,CAAAA,CACtC1F,CAAAA,CAAS,CAAA,CAAA,CAEXsC,CAAAA,CAAS,MAAA,CAAOA,CAAM,CAAA,CACf,EAAEvC,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIsD,CAAAA,CAASwD,CAAAA,CAAQ/G,CAAK,CAAA,CACtBuD,CAAAA,EACFuD,CAAAA,CAASvE,CAAAA,CAAQgB,CAAAA,CAAQvD,CAAAA,CAAO2F,CAAU,EAE9C,CACA,OAAOpD,CACT,CAAC,CACH,CAEA,IAAO0E,EAAAA,CAAQJ,EAAAA,CCnCf,IAAItI,EAAAA,CAAc,MAAA,CAAO,SAAA,CASzB,SAAS2I,EAAAA,CAAYtI,CAAAA,CAAO,CAC1B,IAAIuI,CAAAA,CAAOvI,CAAAA,EAASA,CAAAA,CAAM,WAAA,CACtBoE,CAAAA,CAAS,OAAOmE,CAAAA,EAAQ,UAAA,EAAcA,CAAAA,CAAK,SAAA,EAAc5I,EAAAA,CAE7D,OAAOK,CAAAA,GAAUoE,CACnB,CAEA,IAAOoE,EAAAA,CAAQF,GCRf,SAASG,EAAAA,CAAUC,CAAAA,CAAGvH,CAAAA,CAAU,CAI9B,IAAA,IAHIC,CAAAA,CAAQ,EAAA,CACRhB,CAAAA,CAAS,KAAA,CAAMsI,CAAC,CAAA,CAEb,EAAEtH,CAAAA,CAAQsH,CAAAA,EACftI,CAAAA,CAAOgB,CAAK,CAAA,CAAID,CAAAA,CAASC,CAAK,CAAA,CAEhC,OAAOhB,CACT,CAEA,IAAOuI,EAAAA,CAAQF,EAAAA,CCff,IAAIG,EAAAA,CAAU,oBAAA,CASd,SAASC,EAAAA,CAAgB7I,CAAAA,CAAO,CAC9B,OAAOa,CAAAA,CAAab,CAAK,CAAA,EAAKW,EAAAA,CAAWX,CAAK,CAAA,EAAK4I,EACrD,CAEA,IAAOE,EAAAA,CAAQD,EAAAA,CCbf,IAAIlJ,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAG7BoJ,EAAAA,CAAuBpJ,EAAAA,CAAY,oBAAA,CAoBnCqJ,EAAAA,CAAcF,EAAAA,CAAAA,CAAgB,UAAW,CAAE,OAAO,SAAW,CAAA,GAAG,CAAA,CAAIA,EAAAA,CAAkB,SAAS9I,CAAAA,CAAO,CACxG,OAAOa,CAAAA,CAAab,CAAK,CAAA,EAAKJ,EAAAA,CAAe,IAAA,CAAKI,CAAAA,CAAO,QAAQ,CAAA,EAC/D,CAAC+I,EAAAA,CAAqB,IAAA,CAAK/I,CAAAA,CAAO,QAAQ,CAC9C,CAAA,CAEOiJ,EAAAA,CAAQD,EAAAA,CCtBf,SAASE,EAAAA,EAAY,CACnB,OAAO,MACT,CAEA,IAAOC,EAAAA,CAAQD,EAAAA,CCbf,IAAIE,EAAAA,CAAc,OAAO,OAAA,EAAW,QAAA,EAAY,OAAA,EAAW,CAAC,OAAA,CAAQ,QAAA,EAAY,OAAA,CAG5EC,EAAAA,CAAaD,EAAAA,EAAe,OAAO,MAAA,EAAU,QAAA,EAAY,MAAA,EAAU,CAAC,MAAA,CAAO,QAAA,EAAY,MAAA,CAGvFE,EAAAA,CAAgBD,EAAAA,EAAcA,EAAAA,CAAW,OAAA,GAAYD,EAAAA,CAGrDG,EAAAA,CAASD,EAAAA,CAAgB9J,EAAK,MAAA,CAAS,MAAA,CAGvCgK,EAAAA,CAAiBD,EAAAA,CAASA,EAAAA,CAAO,QAAA,CAAW,MAAA,CAmB5CE,EAAAA,CAAWD,EAAAA,EAAkBL,EAAAA,CAE1BO,EAAAA,CAAQD,EAAAA,CChCf,IAAIb,EAAAA,CAAU,oBAAA,CACVe,EAAAA,CAAW,gBAAA,CACXC,EAAAA,CAAU,kBAAA,CACVC,EAAAA,CAAU,eAAA,CACVC,EAAAA,CAAW,gBAAA,CACX1H,EAAAA,CAAU,mBAAA,CACV2H,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAY,kBACZC,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAa,kBAAA,CAEbC,EAAAA,CAAiB,sBAAA,CACjBC,EAAAA,CAAc,mBAAA,CACdC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAU,oBAAA,CACVC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAkB,4BAAA,CAClBC,EAAAA,CAAY,sBAAA,CACZC,EAAAA,CAAY,sBAAA,CAGZC,EAAiB,EAAC,CACtBA,CAAAA,CAAeT,EAAU,CAAA,CAAIS,CAAAA,CAAeR,EAAU,CAAA,CACtDQ,CAAAA,CAAeP,EAAO,CAAA,CAAIO,CAAAA,CAAeN,EAAQ,CAAA,CACjDM,CAAAA,CAAeL,EAAQ,CAAA,CAAIK,CAAAA,CAAeJ,EAAQ,CAAA,CAClDI,CAAAA,CAAeH,EAAe,CAAA,CAAIG,CAAAA,CAAeF,EAAS,CAAA,CAC1DE,CAAAA,CAAeD,EAAS,CAAA,CAAI,IAAA,CAC5BC,EAAerC,EAAO,CAAA,CAAIqC,CAAAA,CAAetB,EAAQ,CAAA,CACjDsB,CAAAA,CAAeX,EAAc,CAAA,CAAIW,CAAAA,CAAerB,EAAO,CAAA,CACvDqB,CAAAA,CAAeV,EAAW,CAAA,CAAIU,CAAAA,CAAepB,EAAO,CAAA,CACpDoB,CAAAA,CAAenB,EAAQ,CAAA,CAAImB,CAAAA,CAAe7I,EAAO,CAAA,CACjD6I,CAAAA,CAAelB,EAAM,CAAA,CAAIkB,CAAAA,CAAejB,EAAS,CAAA,CACjDiB,CAAAA,CAAehB,EAAS,CAAA,CAAIgB,CAAAA,CAAef,EAAS,CAAA,CACpDe,CAAAA,CAAed,EAAM,CAAA,CAAIc,CAAAA,CAAeb,EAAS,CAAA,CACjDa,CAAAA,CAAeZ,EAAU,CAAA,CAAI,KAAA,CAS7B,SAASa,EAAAA,CAAiBlL,CAAAA,CAAO,CAC/B,OAAOa,CAAAA,CAAab,CAAK,CAAA,EACvB4H,EAAAA,CAAS5H,CAAAA,CAAM,MAAM,CAAA,EAAK,CAAC,CAACiL,CAAAA,CAAetK,EAAAA,CAAWX,CAAK,CAAC,CAChE,CAEA,IAAOmL,EAAAA,CAAQD,EAAAA,CCpDf,SAASE,EAAAA,CAAUtI,CAAAA,CAAM,CACvB,OAAO,SAAS9C,CAAAA,CAAO,CACrB,OAAO8C,CAAAA,CAAK9C,CAAK,CACnB,CACF,CAEA,IAAOqL,EAAAA,CAAQD,EAAAA,CCVf,IAAIhC,EAAAA,CAAc,OAAO,OAAA,EAAW,QAAA,EAAY,OAAA,EAAW,CAAC,QAAQ,QAAA,EAAY,OAAA,CAG5EC,EAAAA,CAAaD,EAAAA,EAAe,OAAO,MAAA,EAAU,QAAA,EAAY,MAAA,EAAU,CAAC,MAAA,CAAO,QAAA,EAAY,MAAA,CAGvFE,EAAAA,CAAgBD,EAAAA,EAAcA,EAAAA,CAAW,OAAA,GAAYD,EAAAA,CAGrDkC,EAAAA,CAAchC,EAAAA,EAAiBjK,EAAAA,CAAW,OAAA,CAG1CkM,EAAAA,CAAAA,CAAY,UAAW,CACzB,GAAI,CAEF,IAAIC,CAAAA,CAAQnC,EAAAA,EAAcA,EAAAA,CAAW,SAAWA,EAAAA,CAAW,OAAA,CAAQ,MAAM,CAAA,CAAE,KAAA,CAE3E,OAAImC,CAAAA,EAKGF,EAAAA,EAAeA,EAAAA,CAAY,OAAA,EAAWA,EAAAA,CAAY,OAAA,CAAQ,MAAM,CACzE,CAAA,KAAY,CAAC,CACf,CAAA,GAAE,CAEKG,EAAAA,CAAQF,EAAAA,CCxBf,IAAIG,EAAAA,CAAmBD,EAAAA,EAAYA,EAAAA,CAAS,YAAA,CAmBxCE,EAAAA,CAAeD,EAAAA,CAAmBL,EAAAA,CAAUK,EAAgB,EAAIP,EAAAA,CAE7DS,EAAAA,CAAQD,EAAAA,CClBf,IAAIhM,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAUjC,SAASkM,EAAAA,CAAc7L,CAAAA,CAAO8L,CAAAA,CAAW,CACvC,IAAIC,CAAAA,CAAQvK,CAAAA,CAAQxB,CAAK,CAAA,CACrBgM,CAAAA,CAAQ,CAACD,CAAAA,EAAS9C,EAAAA,CAAYjJ,CAAK,CAAA,CACnCiM,CAAAA,CAAS,CAACF,CAAAA,EAAS,CAACC,GAAStC,EAAAA,CAAS1J,CAAK,CAAA,CAC3CkM,CAAAA,CAAS,CAACH,CAAAA,EAAS,CAACC,CAAAA,EAAS,CAACC,CAAAA,EAAUL,EAAAA,CAAa5L,CAAK,CAAA,CAC1DmM,CAAAA,CAAcJ,CAAAA,EAASC,CAAAA,EAASC,CAAAA,EAAUC,CAAAA,CAC1C9L,CAAAA,CAAS+L,CAAAA,CAAcxD,EAAAA,CAAU3I,CAAAA,CAAM,MAAA,CAAQ,MAAM,CAAA,CAAI,EAAC,CAC1DqB,CAAAA,CAASjB,CAAAA,CAAO,MAAA,CAEpB,QAASwD,CAAAA,IAAO5D,CAAAA,CAAAA,CACT8L,CAAAA,EAAalM,EAAAA,CAAe,IAAA,CAAKI,CAAAA,CAAO4D,CAAG,CAAA,GAC5C,EAAEuI,CAAAA,GAECvI,CAAAA,EAAO,QAAA,EAENqI,CAAAA,GAAWrI,CAAAA,EAAO,QAAA,EAAYA,CAAAA,EAAO,QAAA,CAAA,EAErCsI,CAAAA,GAAWtI,CAAAA,EAAO,QAAA,EAAYA,CAAAA,EAAO,YAAA,EAAgBA,CAAAA,EAAO,YAAA,CAAA,EAE7DwC,EAAAA,CAAQxC,CAAAA,CAAKvC,CAAM,CAAA,CAAA,CAAA,EAExBjB,CAAAA,CAAO,IAAA,CAAKwD,CAAG,CAAA,CAGnB,OAAOxD,CACT,CAEA,IAAOgM,EAAAA,CAAQP,EAAAA,CCxCf,SAASQ,EAAAA,CAAQvJ,CAAAA,CAAMwE,CAAAA,CAAW,CAChC,OAAO,SAASgF,CAAAA,CAAK,CACnB,OAAOxJ,CAAAA,CAAKwE,CAAAA,CAAUgF,CAAG,CAAC,CAC5B,CACF,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CCXf,IAAIG,EAAAA,CAAaD,EAAAA,CAAQ,OAAO,IAAA,CAAM,MAAM,CAAA,CAErCE,EAAAA,CAAQD,EAAAA,CCDf,IAAI7M,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CASjC,SAAS+M,EAAAA,CAAS/I,CAAAA,CAAQ,CACxB,GAAI,CAAC6E,EAAAA,CAAY7E,CAAM,CAAA,CACrB,OAAO8I,EAAAA,CAAW9I,CAAM,CAAA,CAE1B,IAAIvD,CAAAA,CAAS,EAAC,CACd,IAAA,IAASwD,KAAO,MAAA,CAAOD,CAAM,CAAA,CACvB/D,EAAAA,CAAe,IAAA,CAAK+D,CAAAA,CAAQC,CAAG,CAAA,EAAKA,CAAAA,EAAO,aAAA,EAC7CxD,CAAAA,CAAO,IAAA,CAAKwD,CAAG,CAAA,CAGnB,OAAOxD,CACT,CAEA,IAAOuM,EAAAA,CAAQD,EAAAA,CCGf,SAASE,EAAAA,CAAKjJ,CAAAA,CAAQ,CACpB,OAAOmE,EAAAA,CAAYnE,CAAM,CAAA,CAAIyI,EAAAA,CAAczI,CAAM,EAAIgJ,EAAAA,CAAShJ,CAAM,CACtE,CAEA,IAAOkJ,EAAAA,CAAQD,EAAAA,CC3Bf,SAASE,EAAAA,CAAanJ,CAAAA,CAAQ,CAC5B,IAAIvD,CAAAA,CAAS,EAAC,CACd,GAAIuD,CAAAA,EAAU,IAAA,CACZ,IAAA,IAASC,CAAAA,IAAO,MAAA,CAAOD,CAAM,CAAA,CAC3BvD,CAAAA,CAAO,IAAA,CAAKwD,CAAG,CAAA,CAGnB,OAAOxD,CACT,CAEA,IAAO2M,EAAAA,CAAQD,EAAAA,CCdf,IAAInN,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CASjC,SAASqN,EAAAA,CAAWrJ,CAAAA,CAAQ,CAC1B,GAAI,CAAC3B,CAAAA,CAAS2B,CAAM,CAAA,CAClB,OAAOoJ,EAAAA,CAAapJ,CAAM,CAAA,CAE5B,IAAIsJ,CAAAA,CAAUzE,EAAAA,CAAY7E,CAAM,CAAA,CAC5BvD,CAAAA,CAAS,EAAC,CAEd,QAASwD,CAAAA,IAAOD,CAAAA,CACRC,CAAAA,EAAO,aAAA,GAAkBqJ,CAAAA,EAAW,CAACrN,EAAAA,CAAe,IAAA,CAAK+D,CAAAA,CAAQC,CAAG,CAAA,CAAA,EACxExD,CAAAA,CAAO,IAAA,CAAKwD,CAAG,EAGnB,OAAOxD,CACT,CAEA,IAAO8M,EAAAA,CAAQF,EAAAA,CCLf,SAASG,EAAAA,CAAOxJ,CAAAA,CAAQ,CACtB,OAAOmE,EAAAA,CAAYnE,CAAM,CAAA,CAAIyI,GAAczI,CAAAA,CAAQ,IAAI,CAAA,CAAIuJ,EAAAA,CAAWvJ,CAAM,CAC9E,CAEA,IAAOyJ,EAAAA,CAAQD,EAAAA,CC3Bf,IAAIE,EAAAA,CAAe,kDAAA,CACfC,EAAAA,CAAgB,OAAA,CAUpB,SAASC,EAAAA,CAAMvN,CAAAA,CAAO2D,CAAAA,CAAQ,CAC5B,GAAInC,CAAAA,CAAQxB,CAAK,CAAA,CACf,OAAO,MAAA,CAET,IAAI+B,CAAAA,CAAO,OAAO/B,CAAAA,CAClB,OAAI+B,CAAAA,EAAQ,QAAA,EAAYA,CAAAA,EAAQ,QAAA,EAAYA,CAAAA,EAAQ,SAAA,EAChD/B,CAAAA,EAAS,IAAA,EAAQgB,EAAAA,CAAShB,CAAK,CAAA,CAC1B,IAAA,CAEFsN,EAAAA,CAAc,IAAA,CAAKtN,CAAK,CAAA,EAAK,CAACqN,EAAAA,CAAa,IAAA,CAAKrN,CAAK,CAAA,EACzD2D,CAAAA,EAAU,IAAA,EAAQ3D,CAAAA,IAAS,MAAA,CAAO2D,CAAM,CAC7C,CAEA,IAAO6J,EAAAA,CAAQD,GCzBf,IAAIE,EAAAA,CAAe1J,EAAAA,CAAU,MAAA,CAAQ,QAAQ,CAAA,CAEtC2J,EAAAA,CAAQD,EAAAA,CCIf,SAASE,EAAAA,EAAY,CACnB,IAAA,CAAK,QAAA,CAAWD,EAAAA,CAAeA,EAAAA,CAAa,IAAI,CAAA,CAAI,EAAC,CACrD,IAAA,CAAK,IAAA,CAAO,EACd,CAEA,IAAOE,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAWjK,CAAAA,CAAK,CACvB,IAAIxD,CAAAA,CAAS,IAAA,CAAK,GAAA,CAAIwD,CAAG,CAAA,EAAK,OAAO,IAAA,CAAK,QAAA,CAASA,CAAG,CAAA,CACtD,OAAA,IAAA,CAAK,IAAA,EAAQxD,CAAAA,CAAS,CAAA,CAAI,CAAA,CACnBA,CACT,CAEA,IAAO0N,EAAAA,CAAQD,EAAAA,CCbf,IAAIE,EAAAA,CAAiB,2BAAA,CAGjBpO,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAWjC,SAASqO,GAAQpK,CAAAA,CAAK,CACpB,IAAIqK,CAAAA,CAAO,IAAA,CAAK,QAAA,CAChB,GAAIP,EAAAA,CAAc,CAChB,IAAItN,CAAAA,CAAS6N,CAAAA,CAAKrK,CAAG,CAAA,CACrB,OAAOxD,CAAAA,GAAW2N,EAAAA,CAAiB,MAAA,CAAY3N,CACjD,CACA,OAAOR,EAAAA,CAAe,IAAA,CAAKqO,CAAAA,CAAMrK,CAAG,CAAA,CAAIqK,CAAAA,CAAKrK,CAAG,CAAA,CAAI,MACtD,CAEA,IAAOsK,EAAAA,CAAQF,EAAAA,CC1Bf,IAAIrO,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAWjC,SAASwO,EAAAA,CAAQvK,CAAAA,CAAK,CACpB,IAAIqK,CAAAA,CAAO,IAAA,CAAK,QAAA,CAChB,OAAOP,EAAAA,CAAgBO,CAAAA,CAAKrK,CAAG,CAAA,GAAM,MAAA,CAAahE,EAAAA,CAAe,IAAA,CAAKqO,CAAAA,CAAMrK,CAAG,CACjF,CAEA,IAAOwK,EAAAA,CAAQD,EAAAA,CCnBf,IAAIJ,EAAAA,CAAiB,2BAAA,CAYrB,SAASM,EAAAA,CAAQzK,CAAAA,CAAK5D,CAAAA,CAAO,CAC3B,IAAIiO,CAAAA,CAAO,IAAA,CAAK,QAAA,CAChB,OAAA,IAAA,CAAK,IAAA,EAAQ,IAAA,CAAK,GAAA,CAAIrK,CAAG,CAAA,CAAI,CAAA,CAAI,CAAA,CACjCqK,CAAAA,CAAKrK,CAAG,CAAA,CAAK8J,EAAAA,EAAgB1N,CAAAA,GAAU,MAAA,CAAa+N,EAAAA,CAAiB/N,CAAAA,CAC9D,IACT,CAEA,IAAOsO,EAAAA,CAAQD,EAAAA,CCTf,SAASE,EAAAA,CAAKC,CAAAA,CAAS,CACrB,IAAIpN,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASmN,CAAAA,EAAW,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAQ,MAAA,CAG3C,IADA,IAAA,CAAK,KAAA,EAAM,CACJ,EAAEpN,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIoN,CAAAA,CAAQD,CAAAA,CAAQpN,CAAK,CAAA,CACzB,KAAK,GAAA,CAAIqN,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,EAC7B,CACF,CAGAF,EAAAA,CAAK,SAAA,CAAU,KAAA,CAAQX,EAAAA,CACvBW,EAAAA,CAAK,SAAA,CAAU,MAAA,CAAYT,EAAAA,CAC3BS,EAAAA,CAAK,SAAA,CAAU,GAAA,CAAML,EAAAA,CACrBK,EAAAA,CAAK,SAAA,CAAU,GAAA,CAAMH,EAAAA,CACrBG,EAAAA,CAAK,SAAA,CAAU,GAAA,CAAMD,EAAAA,CAErB,IAAOI,EAAAA,CAAQH,EAAAA,CCxBf,SAASI,EAAAA,EAAiB,CACxB,IAAA,CAAK,QAAA,CAAW,EAAC,CACjB,IAAA,CAAK,IAAA,CAAO,EACd,CAEA,IAAOC,EAAAA,CAAQD,EAAAA,CCFf,SAASE,EAAAA,CAAa3N,CAAAA,CAAO0C,CAAAA,CAAK,CAEhC,IAAA,IADIvC,CAAAA,CAASH,CAAAA,CAAM,MAAA,CACZG,CAAAA,EAAAA,EACL,GAAIoF,EAAAA,CAAGvF,CAAAA,CAAMG,CAAM,EAAE,CAAC,CAAA,CAAGuC,CAAG,CAAA,CAC1B,OAAOvC,CAAAA,CAGX,OAAO,GACT,CAEA,IAAOyN,EAAAA,CAAQD,EAAAA,CCjBf,IAAIE,EAAAA,CAAa,KAAA,CAAM,SAAA,CAGnBC,EAAAA,CAASD,EAAAA,CAAW,MAAA,CAWxB,SAASE,EAAAA,CAAgBrL,CAAAA,CAAK,CAC5B,IAAIqK,CAAAA,CAAO,IAAA,CAAK,QAAA,CACZ7M,CAAAA,CAAQ0N,EAAAA,CAAab,CAAAA,CAAMrK,CAAG,CAAA,CAElC,GAAIxC,CAAAA,CAAQ,CAAA,CACV,OAAO,MAAA,CAET,IAAI8N,CAAAA,CAAYjB,CAAAA,CAAK,MAAA,CAAS,CAAA,CAC9B,OAAI7M,CAAAA,EAAS8N,CAAAA,CACXjB,CAAAA,CAAK,GAAA,EAAI,CAETe,EAAAA,CAAO,IAAA,CAAKf,CAAAA,CAAM7M,CAAAA,CAAO,CAAC,CAAA,CAE5B,EAAE,IAAA,CAAK,IAAA,CACA,IACT,CAEA,IAAO+N,EAAAA,CAAQF,GCvBf,SAASG,EAAAA,CAAaxL,CAAAA,CAAK,CACzB,IAAIqK,CAAAA,CAAO,IAAA,CAAK,QAAA,CACZ7M,CAAAA,CAAQ0N,EAAAA,CAAab,CAAAA,CAAMrK,CAAG,CAAA,CAElC,OAAOxC,CAAAA,CAAQ,CAAA,CAAI,MAAA,CAAY6M,CAAAA,CAAK7M,CAAK,CAAA,CAAE,CAAC,CAC9C,CAEA,IAAOiO,EAAAA,CAAQD,EAAAA,CCPf,SAASE,EAAAA,CAAa1L,CAAAA,CAAK,CACzB,OAAOkL,EAAAA,CAAa,IAAA,CAAK,QAAA,CAAUlL,CAAG,CAAA,CAAI,EAC5C,CAEA,IAAO2L,EAAAA,CAAQD,EAAAA,CCHf,SAASE,EAAAA,CAAa5L,CAAAA,CAAK5D,CAAAA,CAAO,CAChC,IAAIiO,CAAAA,CAAO,IAAA,CAAK,QAAA,CACZ7M,CAAAA,CAAQ0N,EAAAA,CAAab,CAAAA,CAAMrK,CAAG,CAAA,CAElC,OAAIxC,CAAAA,CAAQ,CAAA,EACV,EAAE,IAAA,CAAK,IAAA,CACP6M,EAAK,IAAA,CAAK,CAACrK,CAAAA,CAAK5D,CAAK,CAAC,CAAA,EAEtBiO,CAAAA,CAAK7M,CAAK,CAAA,CAAE,CAAC,CAAA,CAAIpB,CAAAA,CAEZ,IACT,CAEA,IAAOyP,EAAAA,CAAQD,EAAAA,CCZf,SAASE,EAAAA,CAAUlB,CAAAA,CAAS,CAC1B,IAAIpN,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASmN,CAAAA,EAAW,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAQ,MAAA,CAG3C,IADA,IAAA,CAAK,KAAA,EAAM,CACJ,EAAEpN,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIoN,CAAAA,CAAQD,CAAAA,CAAQpN,CAAK,CAAA,CACzB,IAAA,CAAK,GAAA,CAAIqN,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,EAC7B,CACF,CAGAiB,EAAAA,CAAU,SAAA,CAAU,KAAA,CAAQd,EAAAA,CAC5Bc,EAAAA,CAAU,SAAA,CAAU,MAAA,CAAYP,GAChCO,EAAAA,CAAU,SAAA,CAAU,GAAA,CAAML,EAAAA,CAC1BK,EAAAA,CAAU,SAAA,CAAU,GAAA,CAAMH,EAAAA,CAC1BG,EAAAA,CAAU,SAAA,CAAU,GAAA,CAAMD,EAAAA,CAE1B,IAAOE,EAAAA,CAAQD,EAAAA,CC3Bf,IAAIE,EAAAA,CAAM7L,EAAAA,CAAUvE,CAAAA,CAAM,KAAK,CAAA,CAExBqQ,EAAAA,CAAQD,EAAAA,CCKf,SAASE,EAAAA,EAAgB,CACvB,IAAA,CAAK,IAAA,CAAO,CAAA,CACZ,IAAA,CAAK,SAAW,CACd,IAAA,CAAQ,IAAIpB,EAAAA,CACZ,GAAA,CAAO,IAAKmB,EAAAA,EAAOF,EAAAA,CAAAA,CACnB,MAAA,CAAU,IAAIjB,EAChB,EACF,CAEA,IAAOqB,EAAAA,CAAQD,EAAAA,CCbf,SAASE,EAAAA,CAAUhQ,CAAAA,CAAO,CACxB,IAAI+B,CAAAA,CAAO,OAAO/B,CAAAA,CAClB,OAAQ+B,CAAAA,EAAQ,QAAA,EAAYA,CAAAA,EAAQ,QAAA,EAAYA,CAAAA,EAAQ,UAAYA,CAAAA,EAAQ,SAAA,CACvE/B,CAAAA,GAAU,WAAA,CACVA,CAAAA,GAAU,IACjB,CAEA,IAAOiQ,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAWC,CAAAA,CAAKvM,CAAAA,CAAK,CAC5B,IAAIqK,CAAAA,CAAOkC,CAAAA,CAAI,QAAA,CACf,OAAOF,EAAAA,CAAUrM,CAAG,CAAA,CAChBqK,CAAAA,CAAK,OAAOrK,CAAAA,EAAO,QAAA,CAAW,QAAA,CAAW,MAAM,CAAA,CAC/CqK,EAAK,GACX,CAEA,IAAOmC,EAAAA,CAAQF,EAAAA,CCNf,SAASG,EAAAA,CAAezM,CAAAA,CAAK,CAC3B,IAAIxD,CAAAA,CAASgQ,EAAAA,CAAW,IAAA,CAAMxM,CAAG,CAAA,CAAE,MAAA,CAAUA,CAAG,CAAA,CAChD,OAAA,IAAA,CAAK,IAAA,EAAQxD,CAAAA,CAAS,CAAA,CAAI,CAAA,CACnBA,CACT,CAEA,IAAOkQ,EAAAA,CAAQD,EAAAA,CCNf,SAASE,EAAAA,CAAY3M,EAAK,CACxB,OAAOwM,EAAAA,CAAW,IAAA,CAAMxM,CAAG,CAAA,CAAE,GAAA,CAAIA,CAAG,CACtC,CAEA,IAAO4M,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAY7M,CAAAA,CAAK,CACxB,OAAOwM,EAAAA,CAAW,IAAA,CAAMxM,CAAG,CAAA,CAAE,GAAA,CAAIA,CAAG,CACtC,CAEA,IAAO8M,EAAAA,CAAQD,EAAAA,CCHf,SAASE,GAAY/M,CAAAA,CAAK5D,CAAAA,CAAO,CAC/B,IAAIiO,CAAAA,CAAOmC,EAAAA,CAAW,IAAA,CAAMxM,CAAG,CAAA,CAC3BgN,CAAAA,CAAO3C,CAAAA,CAAK,IAAA,CAEhB,OAAAA,CAAAA,CAAK,GAAA,CAAIrK,CAAAA,CAAK5D,CAAK,CAAA,CACnB,IAAA,CAAK,IAAA,EAAQiO,CAAAA,CAAK,IAAA,EAAQ2C,CAAAA,CAAO,CAAA,CAAI,CAAA,CAC9B,IACT,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CCRf,SAASG,EAAAA,CAAStC,CAAAA,CAAS,CACzB,IAAIpN,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASmN,CAAAA,EAAW,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAQ,MAAA,CAG3C,IADA,IAAA,CAAK,KAAA,EAAM,CACJ,EAAEpN,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIoN,CAAAA,CAAQD,CAAAA,CAAQpN,CAAK,CAAA,CACzB,IAAA,CAAK,GAAA,CAAIqN,CAAAA,CAAM,CAAC,CAAA,CAAGA,EAAM,CAAC,CAAC,EAC7B,CACF,CAGAqC,EAAAA,CAAS,SAAA,CAAU,KAAA,CAAQf,EAAAA,CAC3Be,EAAAA,CAAS,SAAA,CAAU,MAAA,CAAYR,EAAAA,CAC/BQ,EAAAA,CAAS,SAAA,CAAU,GAAA,CAAMN,EAAAA,CACzBM,EAAAA,CAAS,SAAA,CAAU,GAAA,CAAMJ,EAAAA,CACzBI,EAAAA,CAAS,SAAA,CAAU,GAAA,CAAMD,EAAAA,CAEzB,IAAOE,EAAAA,CAAQD,EAAAA,CC5Bf,IAAIE,EAAAA,CAAkB,sBA8CtB,SAASC,EAAAA,CAAQnO,CAAAA,CAAMoO,CAAAA,CAAU,CAC/B,GAAI,OAAOpO,CAAAA,EAAQ,UAAA,EAAeoO,CAAAA,EAAY,IAAA,EAAQ,OAAOA,CAAAA,EAAY,UAAA,CACvE,MAAM,IAAI,SAAA,CAAUF,EAAe,CAAA,CAErC,IAAIG,CAAAA,CAAW,UAAW,CACxB,IAAI3M,CAAAA,CAAO,SAAA,CACPZ,CAAAA,CAAMsN,CAAAA,CAAWA,CAAAA,CAAS,KAAA,CAAM,KAAM1M,CAAI,CAAA,CAAIA,CAAAA,CAAK,CAAC,CAAA,CACpD4M,CAAAA,CAAQD,CAAAA,CAAS,KAAA,CAErB,GAAIC,CAAAA,CAAM,GAAA,CAAIxN,CAAG,CAAA,CACf,OAAOwN,CAAAA,CAAM,GAAA,CAAIxN,CAAG,CAAA,CAEtB,IAAIxD,CAAAA,CAAS0C,CAAAA,CAAK,KAAA,CAAM,IAAA,CAAM0B,CAAI,CAAA,CAClC,OAAA2M,CAAAA,CAAS,KAAA,CAAQC,CAAAA,CAAM,GAAA,CAAIxN,EAAKxD,CAAM,CAAA,EAAKgR,CAAAA,CACpChR,CACT,CAAA,CACA,OAAA+Q,CAAAA,CAAS,KAAA,CAAQ,IAAKF,EAAAA,CAAQ,KAAA,EAASF,EAAAA,CAAAA,CAChCI,CACT,CAGAF,EAAAA,CAAQ,KAAA,CAAQF,EAAAA,CAEhB,IAAOM,EAAAA,CAAQJ,EAAAA,CCrEf,IAAIK,EAAAA,CAAmB,GAAA,CAUvB,SAASC,EAAAA,CAAczO,CAAAA,CAAM,CAC3B,IAAI1C,CAAAA,CAASiR,EAAAA,CAAQvO,EAAM,SAASc,CAAAA,CAAK,CACvC,OAAIwN,CAAAA,CAAM,IAAA,GAASE,EAAAA,EACjBF,CAAAA,CAAM,KAAA,EAAM,CAEPxN,CACT,CAAC,CAAA,CAEGwN,CAAAA,CAAQhR,CAAAA,CAAO,KAAA,CACnB,OAAOA,CACT,CAEA,IAAOoR,EAAAA,CAAQD,EAAAA,CCtBf,IAAIE,EAAAA,CAAa,kGAAA,CAGbC,EAAAA,CAAe,UAAA,CASfC,EAAAA,CAAeH,EAAAA,CAAc,SAAS7L,EAAQ,CAChD,IAAIvF,CAAAA,CAAS,EAAC,CACd,OAAIuF,CAAAA,CAAO,UAAA,CAAW,CAAC,CAAA,GAAM,EAAA,EAC3BvF,CAAAA,CAAO,IAAA,CAAK,EAAE,CAAA,CAEhBuF,CAAAA,CAAO,OAAA,CAAQ8L,EAAAA,CAAY,SAASG,CAAAA,CAAOC,CAAAA,CAAQC,CAAAA,CAAOC,CAAAA,CAAW,CACnE3R,CAAAA,CAAO,IAAA,CAAK0R,CAAAA,CAAQC,CAAAA,CAAU,OAAA,CAAQL,EAAAA,CAAc,IAAI,CAAA,CAAKG,CAAAA,EAAUD,CAAM,EAC/E,CAAC,CAAA,CACMxR,CACT,CAAC,CAAA,CAEM4R,EAAAA,CAAQL,EAAAA,CCHf,SAASM,EAAAA,CAASjS,CAAAA,CAAO,CACvB,OAAOA,CAAAA,EAAS,IAAA,CAAO,EAAA,CAAK6B,EAAAA,CAAa7B,CAAK,CAChD,CAEA,IAAOkS,EAAAA,CAAQD,EAAAA,CCdf,SAASE,EAAAA,CAASnS,CAAAA,CAAO2D,CAAAA,CAAQ,CAC/B,OAAInC,CAAAA,CAAQxB,CAAK,CAAA,CACRA,CAAAA,CAEFwN,EAAAA,CAAMxN,CAAAA,CAAO2D,CAAM,CAAA,CAAI,CAAC3D,CAAK,CAAA,CAAIgS,EAAAA,CAAaE,EAAAA,CAASlS,CAAK,CAAC,CACtE,CAEA,IAAOoS,EAAAA,CAAQD,EAAAA,CCRf,SAASE,EAAAA,CAAMrS,CAAAA,CAAO,CACpB,GAAI,OAAOA,GAAS,QAAA,EAAYgB,EAAAA,CAAShB,CAAK,CAAA,CAC5C,OAAOA,CAAAA,CAET,IAAII,CAAAA,CAAUJ,CAAAA,CAAQ,EAAA,CACtB,OAAQI,CAAAA,EAAU,GAAA,EAAQ,CAAA,CAAIJ,GAAU,SAAC4B,CAAY,IAAA,CAAOxB,CAC9D,CAEA,IAAOkS,EAAAA,CAAQD,EAAAA,CCTf,SAASE,EAAAA,CAAQ5O,CAAAA,CAAQ6O,CAAAA,CAAM,CAC7BA,CAAAA,CAAOJ,GAASI,CAAAA,CAAM7O,CAAM,CAAA,CAK5B,IAAA,IAHIvC,CAAAA,CAAQ,CAAA,CACRC,CAAAA,CAASmR,CAAAA,CAAK,MAAA,CAEX7O,CAAAA,EAAU,IAAA,EAAQvC,CAAAA,CAAQC,CAAAA,EAC/BsC,CAAAA,CAASA,CAAAA,CAAO2O,EAAAA,CAAME,CAAAA,CAAKpR,CAAAA,EAAO,CAAC,CAAC,CAAA,CAEtC,OAAQA,CAAAA,EAASA,CAAAA,EAASC,CAAAA,CAAUsC,CAAAA,CAAS,MAC/C,CAEA,IAAO8O,EAAAA,CAAQF,GCIf,SAASG,EAAAA,CAAI/O,CAAAA,CAAQ6O,CAAAA,CAAMG,CAAAA,CAAc,CACvC,IAAIvS,CAAAA,CAASuD,CAAAA,EAAU,IAAA,CAAO,MAAA,CAAY8O,EAAAA,CAAQ9O,CAAAA,CAAQ6O,CAAI,CAAA,CAC9D,OAAOpS,CAAAA,GAAW,MAAA,CAAYuS,CAAAA,CAAevS,CAC/C,CAEA,IAAOwS,EAAAA,CAAQF,EAAAA,CCxBf,SAASG,EAAAA,CAAU3R,CAAAA,CAAO4R,CAAAA,CAAQ,CAKhC,IAAA,IAJI1R,EAAQ,EAAA,CACRC,CAAAA,CAASyR,CAAAA,CAAO,MAAA,CAChBC,CAAAA,CAAS7R,CAAAA,CAAM,MAAA,CAEZ,EAAEE,CAAAA,CAAQC,CAAAA,EACfH,CAAAA,CAAM6R,CAAAA,CAAS3R,CAAK,CAAA,CAAI0R,CAAAA,CAAO1R,CAAK,CAAA,CAEtC,OAAOF,CACT,CAEA,IAAO8R,EAAAA,CAAQH,EAAAA,CChBf,IAAII,EAAAA,CAAe1G,EAAAA,CAAQ,MAAA,CAAO,cAAA,CAAgB,MAAM,CAAA,CAEjD2G,GAAQD,EAAAA,CCAf,IAAIhJ,EAAAA,CAAY,iBAAA,CAGZjH,EAAAA,CAAY,QAAA,CAAS,SAAA,CACrBrD,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBsD,EAAAA,CAAeD,EAAAA,CAAU,QAAA,CAGzBpD,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAG7BwT,EAAAA,CAAmBlQ,EAAAA,CAAa,IAAA,CAAK,MAAM,CAAA,CA8B/C,SAASmQ,EAAAA,CAAcpT,CAAAA,CAAO,CAC5B,GAAI,CAACa,CAAAA,CAAab,CAAK,CAAA,EAAKW,GAAWX,CAAK,CAAA,EAAKiK,EAAAA,CAC/C,OAAO,MAAA,CAET,IAAI7F,CAAAA,CAAQ8O,EAAAA,CAAalT,CAAK,CAAA,CAC9B,GAAIoE,CAAAA,GAAU,IAAA,CACZ,OAAO,KAAA,CAET,IAAImE,CAAAA,CAAO3I,EAAAA,CAAe,IAAA,CAAKwE,CAAAA,CAAO,aAAa,CAAA,EAAKA,CAAAA,CAAM,WAAA,CAC9D,OAAO,OAAOmE,CAAAA,EAAQ,UAAA,EAAcA,CAAAA,YAAgBA,CAAAA,EAClDtF,GAAa,IAAA,CAAKsF,CAAI,CAAA,EAAK4K,EAC/B,CAEA,IAAOE,EAAAA,CAAQD,EAAAA,CCpDf,SAASE,EAAAA,EAAa,CACpB,IAAA,CAAK,QAAA,CAAW,IAAI3D,EAAAA,CACpB,IAAA,CAAK,IAAA,CAAO,EACd,CAEA,IAAO4D,EAAAA,CAAQD,EAAAA,CCLf,SAASE,EAAAA,CAAY5P,CAAAA,CAAK,CACxB,IAAIqK,CAAAA,CAAO,IAAA,CAAK,QAAA,CACZ7N,EAAS6N,CAAAA,CAAK,MAAA,CAAUrK,CAAG,CAAA,CAE/B,OAAA,IAAA,CAAK,IAAA,CAAOqK,CAAAA,CAAK,IAAA,CACV7N,CACT,CAEA,IAAOqT,EAAAA,CAAQD,EAAAA,CCRf,SAASE,EAAAA,CAAS9P,CAAAA,CAAK,CACrB,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,CAAG,CAC9B,CAEA,IAAO+P,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAShQ,CAAAA,CAAK,CACrB,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,CAAG,CAC9B,CAEA,IAAOiQ,EAAAA,CAAQD,EAAAA,CCRf,IAAIE,EAAAA,CAAmB,GAAA,CAYvB,SAASC,EAAAA,CAASnQ,CAAAA,CAAK5D,CAAAA,CAAO,CAC5B,IAAIiO,CAAAA,CAAO,IAAA,CAAK,QAAA,CAChB,GAAIA,CAAAA,YAAgB0B,EAAAA,CAAW,CAC7B,IAAIqE,CAAAA,CAAQ/F,CAAAA,CAAK,QAAA,CACjB,GAAI,CAAC4B,EAAAA,EAAQmE,CAAAA,CAAM,MAAA,CAASF,EAAAA,CAAmB,CAAA,CAC7C,OAAAE,CAAAA,CAAM,IAAA,CAAK,CAACpQ,CAAAA,CAAK5D,CAAK,CAAC,CAAA,CACvB,IAAA,CAAK,IAAA,CAAO,EAAEiO,CAAAA,CAAK,IAAA,CACZ,IAAA,CAETA,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAW,IAAI8C,EAAAA,CAASiD,CAAK,EAC3C,CACA,OAAA/F,CAAAA,CAAK,IAAIrK,CAAAA,CAAK5D,CAAK,CAAA,CACnB,IAAA,CAAK,IAAA,CAAOiO,CAAAA,CAAK,IAAA,CACV,IACT,CAEA,IAAOgG,EAAAA,CAAQF,EAAAA,CCnBf,SAASG,EAAAA,CAAM1F,CAAAA,CAAS,CACtB,IAAIP,CAAAA,CAAO,IAAA,CAAK,QAAA,CAAW,IAAI0B,EAAAA,CAAUnB,CAAO,CAAA,CAChD,IAAA,CAAK,IAAA,CAAOP,CAAAA,CAAK,KACnB,CAGAiG,EAAAA,CAAM,UAAU,KAAA,CAAQX,EAAAA,CACxBW,EAAAA,CAAM,SAAA,CAAU,MAAA,CAAYT,EAAAA,CAC5BS,EAAAA,CAAM,SAAA,CAAU,GAAA,CAAMP,EAAAA,CACtBO,EAAAA,CAAM,SAAA,CAAU,GAAA,CAAML,EAAAA,CACtBK,EAAAA,CAAM,SAAA,CAAU,GAAA,CAAMD,EAAAA,CAEtB,IAAOE,EAAAA,CAAQD,EAAAA,CCdf,SAASE,EAAAA,CAAWzQ,CAAAA,CAAQgB,CAAAA,CAAQ,CAClC,OAAOhB,CAAAA,EAAUuD,EAAAA,CAAWvC,CAAAA,CAAQkI,GAAKlI,CAAM,CAAA,CAAGhB,CAAM,CAC1D,CAEA,IAAO0Q,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAa3Q,CAAAA,CAAQgB,CAAAA,CAAQ,CACpC,OAAOhB,CAAAA,EAAUuD,EAAAA,CAAWvC,CAAAA,CAAQyI,EAAAA,CAAOzI,CAAM,CAAA,CAAGhB,CAAM,CAC5D,CAEA,IAAO4Q,EAAAA,CAAQD,EAAAA,CCbf,IAAIlL,EAAAA,CAAc,OAAO,OAAA,EAAW,UAAY,OAAA,EAAW,CAAC,OAAA,CAAQ,QAAA,EAAY,OAAA,CAG5EC,EAAAA,CAAaD,EAAAA,EAAe,OAAO,MAAA,EAAU,QAAA,EAAY,MAAA,EAAU,CAAC,MAAA,CAAO,QAAA,EAAY,MAAA,CAGvFE,EAAAA,CAAgBD,EAAAA,EAAcA,EAAAA,CAAW,OAAA,GAAYD,EAAAA,CAGrDG,EAAAA,CAASD,EAAAA,CAAgB9J,CAAAA,CAAK,MAAA,CAAS,MAAA,CACvCgV,EAAAA,CAAcjL,EAAAA,CAASA,EAAAA,CAAO,WAAA,CAAc,MAAA,CAUhD,SAASkL,EAAAA,CAAYC,CAAAA,CAAQC,CAAAA,CAAQ,CACnC,GAAIA,CAAAA,CACF,OAAOD,CAAAA,CAAO,KAAA,EAAM,CAEtB,IAAIrT,CAAAA,CAASqT,CAAAA,CAAO,MAAA,CAChBtU,CAAAA,CAASoU,EAAAA,CAAcA,EAAAA,CAAYnT,CAAM,CAAA,CAAI,IAAIqT,CAAAA,CAAO,WAAA,CAAYrT,CAAM,CAAA,CAE9E,OAAAqT,CAAAA,CAAO,IAAA,CAAKtU,CAAM,CAAA,CACXA,CACT,CAEA,IAAOwU,EAAAA,CAAQH,EAAAA,CCzBf,SAASI,EAAAA,CAAY3T,CAAAA,CAAO4T,CAAAA,CAAW,CAMrC,IAAA,IALI1T,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASH,CAAAA,EAAS,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAM,MAAA,CACnC6T,CAAAA,CAAW,CAAA,CACX3U,CAAAA,CAAS,EAAC,CAEP,EAAEgB,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIrB,CAAAA,CAAQkB,CAAAA,CAAME,CAAK,EACnB0T,CAAAA,CAAU9U,CAAAA,CAAOoB,CAAAA,CAAOF,CAAK,CAAA,GAC/Bd,CAAAA,CAAO2U,CAAAA,EAAU,CAAA,CAAI/U,CAAAA,EAEzB,CACA,OAAOI,CACT,CAEA,IAAO4U,EAAAA,CAAQH,EAAAA,CCNf,SAASI,EAAAA,EAAY,CACnB,OAAO,EACT,CAEA,IAAOC,EAAAA,CAAQD,EAAAA,CClBf,IAAItV,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBoJ,GAAuBpJ,EAAAA,CAAY,oBAAA,CAGnCwV,EAAAA,CAAmB,MAAA,CAAO,qBAAA,CAS1BC,EAAAA,CAAcD,EAAAA,CAA+B,SAASxR,CAAAA,CAAQ,CAChE,OAAIA,CAAAA,EAAU,IAAA,CACL,EAAC,EAEVA,CAAAA,CAAS,MAAA,CAAOA,CAAM,CAAA,CACfqR,EAAAA,CAAYG,EAAAA,CAAiBxR,CAAM,CAAA,CAAG,SAAS0R,CAAAA,CAAQ,CAC5D,OAAOtM,EAAAA,CAAqB,IAAA,CAAKpF,CAAAA,CAAQ0R,CAAM,CACjD,CAAC,CAAA,CACH,CAAA,CARqCH,EAAAA,CAU9BI,EAAAA,CAAQF,EAAAA,CClBf,SAASG,EAAAA,CAAY5Q,CAAAA,CAAQhB,CAAAA,CAAQ,CACnC,OAAOuD,EAAAA,CAAWvC,CAAAA,CAAQ2Q,EAAAA,CAAW3Q,CAAM,CAAA,CAAGhB,CAAM,CACtD,CAEA,IAAO6R,EAAAA,CAAQD,EAAAA,CCTf,IAAIJ,EAAAA,CAAmB,MAAA,CAAO,qBAAA,CAS1BM,EAAAA,CAAgBN,EAAAA,CAA+B,SAASxR,CAAAA,CAAQ,CAElE,IAAA,IADIvD,CAAAA,CAAS,EAAC,CACPuD,CAAAA,EACLqP,EAAAA,CAAU5S,CAAAA,CAAQkV,EAAAA,CAAW3R,CAAM,CAAC,CAAA,CACpCA,CAAAA,CAASuP,EAAAA,CAAavP,CAAM,CAAA,CAE9B,OAAOvD,CACT,CAAA,CAPuC8U,EAAAA,CAShCQ,EAAAA,CAAQD,EAAAA,CCbf,SAASE,EAAAA,CAAchR,CAAAA,CAAQhB,CAAAA,CAAQ,CACrC,OAAOuD,EAAAA,CAAWvC,EAAQ+Q,EAAAA,CAAa/Q,CAAM,CAAA,CAAGhB,CAAM,CACxD,CAEA,IAAOiS,EAAAA,CAAQD,EAAAA,CCDf,SAASE,EAAAA,CAAelS,CAAAA,CAAQmS,CAAAA,CAAUC,CAAAA,CAAa,CACrD,IAAI3V,CAAAA,CAAS0V,CAAAA,CAASnS,CAAM,CAAA,CAC5B,OAAOnC,CAAAA,CAAQmC,CAAM,CAAA,CAAIvD,CAAAA,CAAS4S,EAAAA,CAAU5S,CAAAA,CAAQ2V,CAAAA,CAAYpS,CAAM,CAAC,CACzE,CAEA,IAAOqS,EAAAA,CAAQH,EAAAA,CCRf,SAASI,EAAAA,CAAWtS,CAAAA,CAAQ,CAC1B,OAAOqS,EAAAA,CAAerS,CAAAA,CAAQkJ,EAAAA,CAAMyI,EAAU,CAChD,CAEA,IAAOY,EAAAA,CAAQD,EAAAA,CCHf,SAASE,EAAAA,CAAaxS,CAAAA,CAAQ,CAC5B,OAAOqS,EAAAA,CAAerS,CAAAA,CAAQyJ,EAAAA,CAAQsI,EAAY,CACpD,CAEA,IAAOU,GAAQD,EAAAA,CCZf,IAAIE,EAAAA,CAAWtS,EAAAA,CAAUvE,CAAAA,CAAM,UAAU,CAAA,CAElC8W,EAAAA,CAAQD,EAAAA,CCFf,IAAIE,EAAAA,CAAUxS,EAAAA,CAAUvE,CAAAA,CAAM,SAAS,CAAA,CAEhCgX,EAAAA,CAAQD,EAAAA,CCFf,IAAIE,EAAAA,CAAM1S,EAAAA,CAAUvE,CAAAA,CAAM,KAAK,CAAA,CAExBkX,EAAAA,CAAQD,EAAAA,CCGf,IAAI1M,EAAAA,CAAS,cAAA,CACTE,EAAAA,CAAY,iBAAA,CACZ0M,GAAa,kBAAA,CACbxM,EAAAA,CAAS,cAAA,CACTE,EAAAA,CAAa,kBAAA,CAEbE,EAAAA,CAAc,mBAAA,CAGdqM,EAAAA,CAAqBzT,EAAAA,CAASmT,EAAQ,CAAA,CACtCO,EAAAA,CAAgB1T,EAAAA,CAAS0M,EAAG,CAAA,CAC5BiH,EAAAA,CAAoB3T,EAAAA,CAASqT,EAAO,CAAA,CACpCO,EAAAA,CAAgB5T,EAAAA,CAASuT,EAAG,CAAA,CAC5BM,EAAAA,CAAoB7T,EAAAA,CAASc,EAAO,CAAA,CASpCgT,EAAAA,CAAStW,EAAAA,CAAAA,CAGR2V,EAAAA,EAAYW,GAAO,IAAIX,EAAAA,CAAS,IAAI,WAAA,CAAY,CAAC,CAAC,CAAC,CAAA,EAAK/L,EAAAA,EACxDsF,EAAAA,EAAOoH,EAAAA,CAAO,IAAIpH,EAAG,CAAA,EAAK9F,EAAAA,EAC1ByM,EAAAA,EAAWS,EAAAA,CAAOT,EAAAA,CAAQ,OAAA,EAAS,CAAA,EAAKG,EAAAA,EACxCD,EAAAA,EAAOO,EAAAA,CAAO,IAAIP,EAAG,CAAA,EAAKvM,EAAAA,EAC1BlG,EAAAA,EAAWgT,EAAAA,CAAO,IAAIhT,EAAO,CAAA,EAAKoG,EAAAA,IACrC4M,EAAAA,CAAS,SAASjX,CAAAA,CAAO,CACvB,IAAII,CAAAA,CAASO,EAAAA,CAAWX,CAAK,CAAA,CACzBuI,CAAAA,CAAOnI,CAAAA,EAAU6J,EAAAA,CAAYjK,CAAAA,CAAM,WAAA,CAAc,MAAA,CACjDkX,CAAAA,CAAa3O,CAAAA,CAAOpF,EAAAA,CAASoF,CAAI,CAAA,CAAI,EAAA,CAEzC,GAAI2O,CAAAA,CACF,OAAQA,CAAAA,EACN,KAAKN,GAAoB,OAAOrM,EAAAA,CAChC,KAAKsM,EAAAA,CAAe,OAAO9M,EAAAA,CAC3B,KAAK+M,EAAAA,CAAmB,OAAOH,EAAAA,CAC/B,KAAKI,EAAAA,CAAe,OAAO5M,EAAAA,CAC3B,KAAK6M,EAAAA,CAAmB,OAAO3M,EACjC,CAEF,OAAOjK,CACT,CAAA,CAAA,CAGF,IAAO+W,EAAAA,CAAQF,EAAAA,CCxDf,IAAItX,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,GAAY,cAAA,CASjC,SAASyX,EAAAA,CAAelW,CAAAA,CAAO,CAC7B,IAAIG,CAAAA,CAASH,CAAAA,CAAM,MAAA,CACfd,CAAAA,CAAS,IAAIc,CAAAA,CAAM,WAAA,CAAYG,CAAM,CAAA,CAGzC,OAAIA,CAAAA,EAAU,OAAOH,CAAAA,CAAM,CAAC,CAAA,EAAK,QAAA,EAAYtB,EAAAA,CAAe,IAAA,CAAKsB,CAAAA,CAAO,OAAO,CAAA,GAC7Ed,CAAAA,CAAO,KAAA,CAAQc,CAAAA,CAAM,MACrBd,CAAAA,CAAO,KAAA,CAAQc,CAAAA,CAAM,KAAA,CAAA,CAEhBd,CACT,CAEA,IAAOiX,EAAAA,CAAQD,EAAAA,CCtBf,IAAIE,EAAAA,CAAa9X,CAAAA,CAAK,UAAA,CAEf+X,EAAAA,CAAQD,EAAAA,CCIf,SAASE,EAAAA,CAAiBC,CAAAA,CAAa,CACrC,IAAIrX,CAAAA,CAAS,IAAIqX,CAAAA,CAAY,WAAA,CAAYA,CAAAA,CAAY,UAAU,CAAA,CAC/D,OAAA,IAAIF,EAAAA,CAAWnX,CAAM,EAAE,GAAA,CAAI,IAAImX,EAAAA,CAAWE,CAAW,CAAC,CAAA,CAC/CrX,CACT,CAEA,IAAOsX,EAAAA,CAAQF,EAAAA,CCLf,SAASG,EAAAA,CAAcC,CAAAA,CAAUjD,CAAAA,CAAQ,CACvC,IAAID,CAAAA,CAASC,CAAAA,CAAS+C,EAAAA,CAAiBE,CAAAA,CAAS,MAAM,CAAA,CAAIA,CAAAA,CAAS,MAAA,CACnE,OAAO,IAAIA,CAAAA,CAAS,WAAA,CAAYlD,CAAAA,CAAQkD,EAAS,UAAA,CAAYA,CAAAA,CAAS,UAAU,CAClF,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CCdf,IAAIG,EAAAA,CAAU,MAAA,CASd,SAASC,EAAAA,CAAYC,CAAAA,CAAQ,CAC3B,IAAI5X,CAAAA,CAAS,IAAI4X,CAAAA,CAAO,WAAA,CAAYA,CAAAA,CAAO,MAAA,CAAQF,EAAAA,CAAQ,IAAA,CAAKE,CAAM,CAAC,CAAA,CACvE,OAAA5X,CAAAA,CAAO,SAAA,CAAY4X,EAAO,SAAA,CACnB5X,CACT,CAEA,IAAO6X,EAAAA,CAAQF,EAAAA,CCbf,IAAItW,EAAAA,CAAc/B,CAAAA,CAASA,CAAAA,CAAO,SAAA,CAAY,MAAA,CAC1CwY,EAAAA,CAAgBzW,EAAAA,CAAcA,EAAAA,CAAY,OAAA,CAAU,MAAA,CASxD,SAAS0W,EAAAA,CAAY9C,CAAAA,CAAQ,CAC3B,OAAO6C,EAAAA,CAAgB,MAAA,CAAOA,EAAAA,CAAc,IAAA,CAAK7C,CAAM,CAAC,CAAA,CAAI,EAC9D,CAEA,IAAO+C,EAAAA,CAAQD,EAAAA,CCPf,SAASE,EAAAA,CAAgBC,CAAAA,CAAY3D,CAAAA,CAAQ,CAC3C,IAAID,CAAAA,CAASC,CAAAA,CAAS+C,EAAAA,CAAiBY,CAAAA,CAAW,MAAM,CAAA,CAAIA,CAAAA,CAAW,MAAA,CACvE,OAAO,IAAIA,CAAAA,CAAW,WAAA,CAAY5D,CAAAA,CAAQ4D,CAAAA,CAAW,UAAA,CAAYA,CAAAA,CAAW,MAAM,CACpF,CAEA,IAAOC,EAAAA,CAAQF,EAAAA,CCRf,IAAIzO,EAAAA,CAAU,kBAAA,CACVC,EAAAA,CAAU,eAAA,CACVE,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZE,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZtJ,EAAAA,CAAY,iBAAA,CAEZwJ,EAAAA,CAAiB,sBAAA,CACjBC,EAAAA,CAAc,mBAAA,CACdC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAU,oBAAA,CACVC,EAAAA,CAAW,sBACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAkB,4BAAA,CAClBC,EAAAA,CAAY,sBAAA,CACZC,EAAAA,CAAY,sBAAA,CAchB,SAASwN,EAAAA,CAAe7U,CAAAA,CAAQzD,CAAAA,CAAKyU,CAAAA,CAAQ,CAC3C,IAAIpM,CAAAA,CAAO5E,CAAAA,CAAO,WAAA,CAClB,OAAQzD,CAAAA,EACN,KAAKoK,EAAAA,CACH,OAAOoN,EAAAA,CAAiB/T,CAAM,CAAA,CAEhC,KAAKiG,GACL,KAAKC,EAAAA,CACH,OAAO,IAAItB,CAAAA,CAAK,CAAC5E,CAAM,CAAA,CAEzB,KAAK4G,EAAAA,CACH,OAAOsN,EAAAA,CAAclU,CAAAA,CAAQgR,CAAM,CAAA,CAErC,KAAKnK,EAAAA,CAAY,KAAKC,EAAAA,CACtB,KAAKC,EAAAA,CAAS,KAAKC,EAAAA,CAAU,KAAKC,EAAAA,CAClC,KAAKC,EAAAA,CAAU,KAAKC,EAAAA,CAAiB,KAAKC,GAAW,KAAKC,EAAAA,CACxD,OAAOuN,EAAAA,CAAgB5U,CAAAA,CAAQgR,CAAM,CAAA,CAEvC,KAAK5K,EAAAA,CACH,OAAO,IAAIxB,CAAAA,CAEb,KAAKyB,EAAAA,CACL,KAAKI,EAAAA,CACH,OAAO,IAAI7B,CAAAA,CAAK5E,CAAM,CAAA,CAExB,KAAKuG,EAAAA,CACH,OAAO+N,EAAAA,CAAYtU,CAAM,CAAA,CAE3B,KAAKwG,EAAAA,CACH,OAAO,IAAI5B,CAAAA,CAEb,KAAKzH,EAAAA,CACH,OAAOsX,EAAAA,CAAYzU,CAAM,CAC7B,CACF,CAEA,IAAO8U,EAAAA,CAAQD,EAAAA,CCjEf,SAASE,EAAAA,CAAgB/U,CAAAA,CAAQ,CAC/B,OAAQ,OAAOA,CAAAA,CAAO,WAAA,EAAe,UAAA,EAAc,CAAC6E,EAAAA,CAAY7E,CAAM,CAAA,CAClEU,EAAAA,CAAW6O,EAAAA,CAAavP,CAAM,CAAC,CAAA,CAC/B,EACN,CAEA,IAAOgV,EAAAA,CAAQD,EAAAA,CCbf,IAAI3O,EAAAA,CAAS,cAAA,CASb,SAAS6O,EAAAA,CAAU5Y,CAAAA,CAAO,CACxB,OAAOa,CAAAA,CAAab,CAAK,CAAA,EAAKmX,EAAAA,CAAOnX,CAAK,CAAA,EAAK+J,EACjD,CAEA,IAAO8O,EAAAA,CAAQD,EAAAA,CCZf,IAAIE,EAAAA,CAAYrN,EAAAA,EAAYA,EAAAA,CAAS,KAAA,CAmBjCsN,EAAAA,CAAQD,GAAYzN,EAAAA,CAAUyN,EAAS,CAAA,CAAID,EAAAA,CAExCG,EAAAA,CAAQD,EAAAA,CCtBf,IAAI5O,EAAAA,CAAS,cAAA,CASb,SAAS8O,EAAAA,CAAUjZ,CAAAA,CAAO,CACxB,OAAOa,CAAAA,CAAab,CAAK,CAAA,EAAKmX,EAAAA,CAAOnX,CAAK,CAAA,EAAKmK,EACjD,CAEA,IAAO+O,EAAAA,CAAQD,EAAAA,CCZf,IAAIE,EAAAA,CAAY1N,EAAAA,EAAYA,EAAAA,CAAS,KAAA,CAmBjC2N,GAAQD,EAAAA,CAAY9N,EAAAA,CAAU8N,EAAS,CAAA,CAAID,EAAAA,CAExCG,EAAAA,CAAQD,EAAAA,CCFf,IAAIE,EAAAA,CAAkB,CAAA,CAClBC,EAAAA,CAAkB,CAAA,CAClBC,EAAAA,CAAqB,CAAA,CAGrB5Q,EAAAA,CAAU,oBAAA,CACVe,EAAAA,CAAW,gBAAA,CACXC,EAAAA,CAAU,kBAAA,CACVC,EAAAA,CAAU,eAAA,CACVC,EAAAA,CAAW,gBAAA,CACX1H,EAAAA,CAAU,mBAAA,CACVC,EAAAA,CAAS,4BAAA,CACT0H,EAAAA,CAAS,cAAA,CACTC,GAAY,iBAAA,CACZC,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZtJ,EAAAA,CAAY,iBAAA,CACZuJ,EAAAA,CAAa,kBAAA,CAEbC,EAAAA,CAAiB,sBAAA,CACjBC,EAAAA,CAAc,mBAAA,CACdC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAa,uBAAA,CACbC,EAAAA,CAAU,oBAAA,CACVC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAW,qBAAA,CACXC,EAAAA,CAAkB,6BAClBC,EAAAA,CAAY,sBAAA,CACZC,EAAAA,CAAY,sBAAA,CAGZyO,CAAAA,CAAgB,EAAC,CACrBA,CAAAA,CAAc7Q,EAAO,CAAA,CAAI6Q,CAAAA,CAAc9P,EAAQ,CAAA,CAC/C8P,CAAAA,CAAcnP,EAAc,CAAA,CAAImP,CAAAA,CAAclP,EAAW,CAAA,CACzDkP,CAAAA,CAAc7P,EAAO,CAAA,CAAI6P,CAAAA,CAAc5P,EAAO,CAAA,CAC9C4P,CAAAA,CAAcjP,EAAU,CAAA,CAAIiP,CAAAA,CAAchP,EAAU,EACpDgP,CAAAA,CAAc/O,EAAO,CAAA,CAAI+O,CAAAA,CAAc9O,EAAQ,CAAA,CAC/C8O,CAAAA,CAAc7O,EAAQ,CAAA,CAAI6O,CAAAA,CAAc1P,EAAM,CAAA,CAC9C0P,CAAAA,CAAczP,EAAS,CAAA,CAAIyP,CAAAA,CAAcxP,EAAS,CAAA,CAClDwP,CAAAA,CAAcvP,EAAS,CAAA,CAAIuP,CAAAA,CAActP,EAAM,CAAA,CAC/CsP,CAAAA,CAAcrP,EAAS,CAAA,CAAIqP,CAAAA,CAAc3Y,EAAS,CAAA,CAClD2Y,EAAc5O,EAAQ,CAAA,CAAI4O,CAAAA,CAAc3O,EAAe,CAAA,CACvD2O,CAAAA,CAAc1O,EAAS,CAAA,CAAI0O,CAAAA,CAAczO,EAAS,CAAA,CAAI,IAAA,CACtDyO,CAAAA,CAAc3P,EAAQ,CAAA,CAAI2P,CAAAA,CAAcrX,EAAO,CAAA,CAC/CqX,CAAAA,CAAcpP,EAAU,CAAA,CAAI,KAAA,CAkB5B,SAASqP,EAAAA,CAAU1Z,CAAAA,CAAO2Z,CAAAA,CAAS5S,CAAAA,CAAYnD,CAAAA,CAAKD,CAAAA,CAAQiW,CAAAA,CAAO,CACjE,IAAIxZ,CAAAA,CACAuU,CAAAA,CAASgF,CAAAA,CAAUL,EAAAA,CACnBO,CAAAA,CAASF,CAAAA,CAAUJ,EAAAA,CACnBO,CAAAA,CAASH,CAAAA,CAAUH,EAAAA,CAKvB,GAHIzS,CAAAA,GACF3G,CAAAA,CAASuD,CAAAA,CAASoD,CAAAA,CAAW/G,CAAAA,CAAO4D,CAAAA,CAAKD,CAAAA,CAAQiW,CAAK,CAAA,CAAI7S,CAAAA,CAAW/G,CAAK,CAAA,CAAA,CAExEI,CAAAA,GAAW,MAAA,CACb,OAAOA,CAAAA,CAET,GAAI,CAAC4B,EAAShC,CAAK,CAAA,CACjB,OAAOA,CAAAA,CAET,IAAI+L,CAAAA,CAAQvK,CAAAA,CAAQxB,CAAK,CAAA,CACzB,GAAI+L,CAAAA,CAAAA,CAEF,GADA3L,CAAAA,CAASiX,EAAAA,CAAerX,CAAK,CAAA,CACzB,CAAC2U,CAAAA,CACH,OAAO/P,EAAAA,CAAU5E,CAAAA,CAAOI,CAAM,CAAA,CAAA,KAE3B,CACL,IAAIF,CAAAA,CAAMiX,EAAAA,CAAOnX,CAAK,CAAA,CAClB+Z,CAAAA,CAAS7Z,GAAOkC,EAAAA,EAAWlC,CAAAA,EAAOmC,EAAAA,CAEtC,GAAIqH,EAAAA,CAAS1J,CAAK,CAAA,CAChB,OAAO4U,EAAAA,CAAY5U,CAAAA,CAAO2U,CAAM,CAAA,CAElC,GAAIzU,CAAAA,EAAO+J,EAAAA,EAAa/J,CAAAA,EAAO0I,EAAAA,EAAYmR,CAAAA,EAAU,CAACpW,CAAAA,CAAAA,CAEpD,GADAvD,CAAAA,CAAUyZ,CAAAA,EAAUE,CAAAA,CAAU,EAAC,CAAIpB,EAAAA,CAAgB3Y,CAAK,CAAA,CACpD,CAAC2U,EACH,OAAOkF,CAAAA,CACHjE,EAAAA,CAAc5V,CAAAA,CAAOuU,EAAAA,CAAanU,CAAAA,CAAQJ,CAAK,CAAC,CAAA,CAChDwV,EAAAA,CAAYxV,CAAAA,CAAOqU,EAAAA,CAAWjU,CAAAA,CAAQJ,CAAK,CAAC,CAAA,CAAA,KAE7C,CACL,GAAI,CAACyZ,CAAAA,CAAcvZ,CAAG,CAAA,CACpB,OAAOyD,CAAAA,CAAS3D,CAAAA,CAAQ,EAAC,CAE3BI,CAAAA,CAASqY,EAAAA,CAAezY,CAAAA,CAAOE,EAAKyU,CAAM,EAC5C,CACF,CAEAiF,CAAAA,GAAUA,CAAAA,CAAQ,IAAIzF,EAAAA,CAAAA,CACtB,IAAI6F,CAAAA,CAAUJ,CAAAA,CAAM,GAAA,CAAI5Z,CAAK,CAAA,CAC7B,GAAIga,CAAAA,CACF,OAAOA,CAAAA,CAETJ,CAAAA,CAAM,GAAA,CAAI5Z,CAAAA,CAAOI,CAAM,CAAA,CAEnBiZ,EAAAA,CAAMrZ,CAAK,CAAA,CACbA,CAAAA,CAAM,OAAA,CAAQ,SAASia,CAAAA,CAAU,CAC/B7Z,CAAAA,CAAO,GAAA,CAAIsZ,EAAAA,CAAUO,CAAAA,CAAUN,CAAAA,CAAS5S,CAAAA,CAAYkT,CAAAA,CAAUja,CAAAA,CAAO4Z,CAAK,CAAC,EAC7E,CAAC,CAAA,CACQZ,EAAAA,CAAMhZ,CAAK,CAAA,EACpBA,CAAAA,CAAM,OAAA,CAAQ,SAASia,CAAAA,CAAUrW,CAAAA,CAAK,CACpCxD,CAAAA,CAAO,GAAA,CAAIwD,CAAAA,CAAK8V,EAAAA,CAAUO,CAAAA,CAAUN,CAAAA,CAAS5S,CAAAA,CAAYnD,CAAAA,CAAK5D,EAAO4Z,CAAK,CAAC,EAC7E,CAAC,CAAA,CAGH,IAAI9D,CAAAA,CAAWgE,CAAAA,CACVD,CAAAA,CAASzD,EAAAA,CAAeF,EAAAA,CACxB2D,CAAAA,CAASzM,EAAAA,CAASP,EAAAA,CAEnB/F,CAAAA,CAAQiF,CAAAA,CAAQ,MAAA,CAAY+J,CAAAA,CAAS9V,CAAK,CAAA,CAC9C,OAAAgG,EAAAA,CAAUc,CAAAA,EAAS9G,CAAAA,CAAO,SAASia,CAAAA,CAAUrW,CAAAA,CAAK,CAC5CkD,CAAAA,GACFlD,CAAAA,CAAMqW,EACNA,CAAAA,CAAWja,CAAAA,CAAM4D,CAAG,CAAA,CAAA,CAGtBgD,EAAAA,CAAYxG,CAAAA,CAAQwD,CAAAA,CAAK8V,EAAAA,CAAUO,CAAAA,CAAUN,CAAAA,CAAS5S,CAAAA,CAAYnD,CAAAA,CAAK5D,CAAAA,CAAO4Z,CAAK,CAAC,EACtF,CAAC,CAAA,CACMxZ,CACT,CAEA,IAAO8Z,EAAAA,CAAQR,EAAAA,CClKf,IAAIJ,EAAAA,CAAkB,CAAA,CAClBE,EAAAA,CAAqB,CAAA,CAoBzB,SAASW,EAAAA,CAAUna,EAAO,CACxB,OAAOka,EAAAA,CAAUla,CAAAA,CAAOsZ,EAAAA,CAAkBE,EAAkB,CAC9D,CAEA,IAAOY,EAAAA,CAAQD,EAAAA,CCzBf,IAAIb,EAAAA,CAAkB,CAAA,CAClBE,EAAAA,CAAqB,CAAA,CA8BzB,SAASa,EAAAA,CAAcra,CAAAA,CAAO+G,CAAAA,CAAY,CACxC,OAAAA,CAAAA,CAAa,OAAOA,CAAAA,EAAc,UAAA,CAAaA,CAAAA,CAAa,MAAA,CACrDmT,EAAAA,CAAUla,CAAAA,CAAOsZ,GAAkBE,EAAAA,CAAoBzS,CAAU,CAC1E,CAEA,IAAOuT,EAAAA,CAAQD,EAAAA,CCtCf,IAAItM,EAAAA,CAAiB,2BAAA,CAYrB,SAASwM,EAAAA,CAAYva,CAAAA,CAAO,CAC1B,OAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAIA,CAAAA,CAAO+N,EAAc,CAAA,CAChC,IACT,CAEA,IAAOyM,EAAAA,CAAQD,EAAAA,CCTf,SAASE,EAAAA,CAAYza,CAAAA,CAAO,CAC1B,OAAO,KAAK,QAAA,CAAS,GAAA,CAAIA,CAAK,CAChC,CAEA,IAAO0a,EAAAA,CAAQD,EAAAA,CCDf,SAASE,EAAAA,CAAS7H,CAAAA,CAAQ,CACxB,IAAI1R,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASyR,CAAAA,EAAU,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAO,MAAA,CAGzC,IADA,IAAA,CAAK,QAAA,CAAW,IAAI/B,EAAAA,CACb,EAAE3P,CAAAA,CAAQC,CAAAA,EACf,IAAA,CAAK,IAAIyR,CAAAA,CAAO1R,CAAK,CAAC,EAE1B,CAGAuZ,EAAAA,CAAS,SAAA,CAAU,GAAA,CAAMA,EAAAA,CAAS,SAAA,CAAU,IAAA,CAAOH,EAAAA,CACnDG,EAAAA,CAAS,SAAA,CAAU,GAAA,CAAMD,EAAAA,CAEzB,IAAOE,EAAAA,CAAQD,EAAAA,CChBf,SAASE,EAAAA,CAAU3Z,CAAAA,CAAO4T,CAAAA,CAAW,CAInC,IAAA,IAHI1T,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASH,CAAAA,EAAS,IAAA,CAAO,EAAIA,CAAAA,CAAM,MAAA,CAEhC,EAAEE,CAAAA,CAAQC,CAAAA,EACf,GAAIyT,CAAAA,CAAU5T,CAAAA,CAAME,CAAK,CAAA,CAAGA,CAAAA,CAAOF,CAAK,CAAA,CACtC,OAAO,KAAA,CAGX,OAAO,MACT,CAEA,IAAO4Z,EAAAA,CAAQD,EAAAA,CCdf,SAASE,EAAAA,CAAS3J,CAAAA,CAAOxN,CAAAA,CAAK,CAC5B,OAAOwN,CAAAA,CAAM,GAAA,CAAIxN,CAAG,CACtB,CAEA,IAAOoX,EAAAA,CAAQD,EAAAA,CCPf,IAAIE,EAAAA,CAAuB,CAAA,CACvBC,EAAAA,CAAyB,CAAA,CAe7B,SAASC,EAAAA,CAAYja,CAAAA,CAAOsF,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAAA,CAAO,CACxE,IAAIyB,CAAAA,CAAY1B,CAAAA,CAAUsB,EAAAA,CACtBK,CAAAA,CAAYpa,CAAAA,CAAM,MAAA,CAClBqa,CAAAA,CAAY/U,CAAAA,CAAM,MAAA,CAEtB,GAAI8U,CAAAA,EAAaC,GAAa,EAAEF,CAAAA,EAAaE,CAAAA,CAAYD,CAAAA,CAAAA,CACvD,OAAO,MAAA,CAGT,IAAIE,CAAAA,CAAa5B,CAAAA,CAAM,GAAA,CAAI1Y,CAAK,CAAA,CAC5Bua,CAAAA,CAAa7B,CAAAA,CAAM,GAAA,CAAIpT,CAAK,CAAA,CAChC,GAAIgV,CAAAA,EAAcC,CAAAA,CAChB,OAAOD,CAAAA,EAAchV,CAAAA,EAASiV,CAAAA,EAAcva,CAAAA,CAE9C,IAAIE,CAAAA,CAAQ,EAAA,CACRhB,CAAAA,CAAS,IAAA,CACTsb,EAAQ/B,CAAAA,CAAUuB,EAAAA,CAA0B,IAAIN,EAAAA,CAAW,MAAA,CAM/D,IAJAhB,CAAAA,CAAM,GAAA,CAAI1Y,CAAAA,CAAOsF,CAAK,CAAA,CACtBoT,CAAAA,CAAM,GAAA,CAAIpT,CAAAA,CAAOtF,CAAK,CAAA,CAGf,EAAEE,CAAAA,CAAQka,CAAAA,EAAW,CAC1B,IAAIK,CAAAA,CAAWza,CAAAA,CAAME,CAAK,CAAA,CACtBwa,CAAAA,CAAWpV,CAAAA,CAAMpF,CAAK,CAAA,CAE1B,GAAI2F,EACF,IAAI8U,CAAAA,CAAWR,CAAAA,CACXtU,CAAAA,CAAW6U,CAAAA,CAAUD,CAAAA,CAAUva,CAAAA,CAAOoF,CAAAA,CAAOtF,CAAAA,CAAO0Y,CAAK,CAAA,CACzD7S,CAAAA,CAAW4U,CAAAA,CAAUC,CAAAA,CAAUxa,CAAAA,CAAOF,CAAAA,CAAOsF,CAAAA,CAAOoT,CAAK,CAAA,CAE/D,GAAIiC,CAAAA,GAAa,MAAA,CAAW,CAC1B,GAAIA,CAAAA,CACF,SAEFzb,CAAAA,CAAS,KAAA,CACT,KACF,CAEA,GAAIsb,CAAAA,CAAAA,CACF,GAAI,CAACZ,EAAAA,CAAUtU,CAAAA,CAAO,SAASoV,CAAAA,CAAUE,CAAAA,CAAU,CAC7C,GAAI,CAACd,EAAAA,CAASU,CAAAA,CAAMI,CAAQ,CAAA,GACvBH,CAAAA,GAAaC,CAAAA,EAAYR,CAAAA,CAAUO,CAAAA,CAAUC,CAAAA,CAAUjC,CAAAA,CAAS5S,CAAAA,CAAY6S,CAAK,CAAA,CAAA,CACpF,OAAO8B,CAAAA,CAAK,IAAA,CAAKI,CAAQ,CAE7B,CAAC,EAAG,CACN1b,CAAAA,CAAS,KAAA,CACT,KACF,CAAA,CAAA,KAAA,GACS,EACLub,CAAAA,GAAaC,CAAAA,EACXR,CAAAA,CAAUO,CAAAA,CAAUC,CAAAA,CAAUjC,CAAAA,CAAS5S,CAAAA,CAAY6S,CAAK,CAAA,CAAA,CACzD,CACLxZ,CAAAA,CAAS,KAAA,CACT,KACF,CACF,CACA,OAAAwZ,CAAAA,CAAM,MAAA,CAAU1Y,CAAK,CAAA,CACrB0Y,CAAAA,CAAM,MAAA,CAAUpT,CAAK,CAAA,CACdpG,CACT,CAEA,IAAO2b,EAAAA,CAAQZ,EAAAA,CC5Ef,SAASa,EAAAA,CAAW7L,CAAAA,CAAK,CACvB,IAAI/O,CAAAA,CAAQ,EAAA,CACRhB,CAAAA,CAAS,KAAA,CAAM+P,CAAAA,CAAI,IAAI,CAAA,CAE3B,OAAAA,CAAAA,CAAI,OAAA,CAAQ,SAASnQ,CAAAA,CAAO4D,CAAAA,CAAK,CAC/BxD,CAAAA,CAAO,EAAEgB,CAAK,CAAA,CAAI,CAACwC,CAAAA,CAAK5D,CAAK,EAC/B,CAAC,CAAA,CACMI,CACT,CAEA,IAAO6b,EAAAA,CAAQD,EAAAA,CCVf,SAASE,EAAAA,CAAWC,CAAAA,CAAK,CACvB,IAAI/a,CAAAA,CAAQ,EAAA,CACRhB,CAAAA,CAAS,KAAA,CAAM+b,CAAAA,CAAI,IAAI,CAAA,CAE3B,OAAAA,CAAAA,CAAI,OAAA,CAAQ,SAASnc,CAAAA,CAAO,CAC1BI,CAAAA,CAAO,EAAEgB,CAAK,CAAA,CAAIpB,EACpB,CAAC,CAAA,CACMI,CACT,CAEA,IAAOgc,EAAAA,CAAQF,EAAAA,CCTf,IAAIjB,EAAAA,CAAuB,CAAA,CACvBC,EAAAA,CAAyB,CAAA,CAGzBtR,EAAAA,CAAU,kBAAA,CACVC,EAAAA,CAAU,eAAA,CACVC,EAAAA,CAAW,gBAAA,CACXC,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZE,EAAAA,CAAY,iBAAA,CACZC,EAAAA,CAAS,cAAA,CACTC,EAAAA,CAAY,iBAAA,CACZtJ,EAAAA,CAAY,iBAAA,CAEZwJ,GAAiB,sBAAA,CACjBC,EAAAA,CAAc,mBAAA,CAGd9I,EAAAA,CAAc/B,CAAAA,CAASA,CAAAA,CAAO,SAAA,CAAY,MAAA,CAC1CwY,EAAAA,CAAgBzW,EAAAA,CAAcA,EAAAA,CAAY,OAAA,CAAU,MAAA,CAmBxD,SAAS4a,EAAAA,CAAW1Y,CAAAA,CAAQ6C,CAAAA,CAAOtG,CAAAA,CAAKyZ,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAAA,CAAO,CAC7E,OAAQ1Z,CAAAA,EACN,KAAKqK,EAAAA,CACH,GAAK5G,CAAAA,CAAO,YAAc6C,CAAAA,CAAM,UAAA,EAC3B7C,CAAAA,CAAO,UAAA,EAAc6C,CAAAA,CAAM,UAAA,CAC9B,OAAO,MAAA,CAET7C,CAAAA,CAASA,CAAAA,CAAO,MAAA,CAChB6C,CAAAA,CAAQA,CAAAA,CAAM,MAAA,CAEhB,KAAK8D,EAAAA,CACH,OAAK,EAAA3G,CAAAA,CAAO,UAAA,EAAc6C,CAAAA,CAAM,UAAA,EAC5B,CAAC4U,CAAAA,CAAU,IAAI7D,EAAAA,CAAW5T,CAAM,CAAA,CAAG,IAAI4T,EAAAA,CAAW/Q,CAAK,CAAC,CAAA,CAAA,CAK9D,KAAKoD,EAAAA,CACL,KAAKC,EAAAA,CACL,KAAKG,EAAAA,CAGH,OAAOvD,EAAAA,CAAG,CAAC9C,CAAAA,CAAQ,CAAC6C,CAAK,CAAA,CAE3B,KAAKsD,EAAAA,CACH,OAAOnG,CAAAA,CAAO,IAAA,EAAQ6C,CAAAA,CAAM,IAAA,EAAQ7C,CAAAA,CAAO,OAAA,EAAW6C,CAAAA,CAAM,OAAA,CAE9D,KAAK0D,EAAAA,CACL,KAAKE,EAAAA,CAIH,OAAOzG,CAAAA,EAAW6C,CAAAA,CAAQ,EAAA,CAE5B,KAAKuD,EAAAA,CACH,IAAIuS,CAAAA,CAAUL,EAAAA,CAEhB,KAAK9R,EAAAA,CACH,IAAIkR,CAAAA,CAAY1B,CAAAA,CAAUsB,EAAAA,CAG1B,GAFAqB,CAAAA,GAAYA,CAAAA,CAAUF,EAAAA,CAAAA,CAElBzY,CAAAA,CAAO,IAAA,EAAQ6C,CAAAA,CAAM,IAAA,EAAQ,CAAC6U,CAAAA,CAChC,OAAO,MAAA,CAGT,IAAIrB,CAAAA,CAAUJ,CAAAA,CAAM,GAAA,CAAIjW,CAAM,CAAA,CAC9B,GAAIqW,CAAAA,CACF,OAAOA,CAAAA,EAAWxT,CAAAA,CAEpBmT,CAAAA,EAAWuB,EAAAA,CAGXtB,CAAAA,CAAM,GAAA,CAAIjW,CAAAA,CAAQ6C,CAAK,CAAA,CACvB,IAAIpG,CAAAA,CAAS2b,EAAAA,CAAYO,CAAAA,CAAQ3Y,CAAM,CAAA,CAAG2Y,CAAAA,CAAQ9V,CAAK,CAAA,CAAGmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAK,CAAA,CAC/F,OAAAA,CAAAA,CAAM,MAAA,CAAUjW,CAAM,CAAA,CACfvD,CAAAA,CAET,KAAKU,EAAAA,CACH,GAAIoX,EAAAA,CACF,OAAOA,EAAAA,CAAc,IAAA,CAAKvU,CAAM,CAAA,EAAKuU,EAAAA,CAAc,IAAA,CAAK1R,CAAK,CAEnE,CACA,OAAO,MACT,CAEA,IAAO+V,EAAAA,CAAQF,EAAAA,CC5Gf,IAAIpB,EAAAA,CAAuB,CAAA,CAGvBtb,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,eAejC,SAAS6c,EAAAA,CAAa7Y,CAAAA,CAAQ6C,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAAA,CAAO,CAC1E,IAAIyB,CAAAA,CAAY1B,CAAAA,CAAUsB,EAAAA,CACtBwB,CAAAA,CAAWvG,EAAAA,CAAWvS,CAAM,CAAA,CAC5B+Y,CAAAA,CAAYD,CAAAA,CAAS,MAAA,CACrBE,CAAAA,CAAWzG,EAAAA,CAAW1P,CAAK,CAAA,CAC3B+U,CAAAA,CAAYoB,CAAAA,CAAS,MAAA,CAEzB,GAAID,CAAAA,EAAanB,CAAAA,EAAa,CAACF,CAAAA,CAC7B,OAAO,MAAA,CAGT,IAAA,IADIja,CAAAA,CAAQsb,CAAAA,CACLtb,CAAAA,EAAAA,EAAS,CACd,IAAIwC,CAAAA,CAAM6Y,CAAAA,CAASrb,CAAK,CAAA,CACxB,GAAI,EAAEia,CAAAA,CAAYzX,CAAAA,IAAO4C,CAAAA,CAAQ5G,EAAAA,CAAe,IAAA,CAAK4G,CAAAA,CAAO5C,CAAG,CAAA,CAAA,CAC7D,OAAO,MAEX,CAEA,IAAIgZ,CAAAA,CAAahD,CAAAA,CAAM,GAAA,CAAIjW,CAAM,CAAA,CAC7B8X,CAAAA,CAAa7B,CAAAA,CAAM,GAAA,CAAIpT,CAAK,CAAA,CAChC,GAAIoW,CAAAA,EAAcnB,CAAAA,CAChB,OAAOmB,CAAAA,EAAcpW,CAAAA,EAASiV,CAAAA,EAAc9X,CAAAA,CAE9C,IAAIvD,CAAAA,CAAS,IAAA,CACbwZ,CAAAA,CAAM,GAAA,CAAIjW,CAAAA,CAAQ6C,CAAK,CAAA,CACvBoT,CAAAA,CAAM,GAAA,CAAIpT,CAAAA,CAAO7C,CAAM,CAAA,CAGvB,IAAA,IADIkZ,CAAAA,CAAWxB,CAAAA,CACR,EAAEja,CAAAA,CAAQsb,CAAAA,EAAW,CAC1B9Y,CAAAA,CAAM6Y,CAAAA,CAASrb,CAAK,CAAA,CACpB,IAAIuF,CAAAA,CAAWhD,CAAAA,CAAOC,CAAG,CAAA,CACrBgY,CAAAA,CAAWpV,CAAAA,CAAM5C,CAAG,CAAA,CAExB,GAAImD,CAAAA,CACF,IAAI8U,CAAAA,CAAWR,CAAAA,CACXtU,CAAAA,CAAW6U,CAAAA,CAAUjV,CAAAA,CAAU/C,CAAAA,CAAK4C,CAAAA,CAAO7C,CAAAA,CAAQiW,CAAK,CAAA,CACxD7S,CAAAA,CAAWJ,EAAUiV,CAAAA,CAAUhY,CAAAA,CAAKD,CAAAA,CAAQ6C,CAAAA,CAAOoT,CAAK,CAAA,CAG9D,GAAI,EAAEiC,CAAAA,GAAa,MAAA,CACVlV,CAAAA,GAAaiV,CAAAA,EAAYR,CAAAA,CAAUzU,CAAAA,CAAUiV,CAAAA,CAAUjC,CAAAA,CAAS5S,CAAAA,CAAY6S,CAAK,CAAA,CAClFiC,CAAAA,CAAAA,CACD,CACLzb,CAAAA,CAAS,KAAA,CACT,KACF,CACAyc,CAAAA,GAAaA,CAAAA,CAAWjZ,CAAAA,EAAO,aAAA,EACjC,CACA,GAAIxD,CAAAA,EAAU,CAACyc,CAAAA,CAAU,CACvB,IAAIC,CAAAA,CAAUnZ,CAAAA,CAAO,WAAA,CACjBoZ,CAAAA,CAAUvW,CAAAA,CAAM,WAAA,CAGhBsW,CAAAA,EAAWC,CAAAA,EACV,aAAA,GAAiBpZ,CAAAA,EAAU,aAAA,GAAiB6C,CAAAA,EAC7C,EAAE,OAAOsW,CAAAA,EAAW,UAAA,EAAcA,CAAAA,YAAmBA,CAAAA,EACnD,OAAOC,CAAAA,EAAW,UAAA,EAAcA,CAAAA,YAAmBA,CAAAA,CAAAA,GACvD3c,CAAAA,CAAS,KAAA,EAEb,CACA,OAAAwZ,CAAAA,CAAM,MAAA,CAAUjW,CAAM,CAAA,CACtBiW,CAAAA,CAAM,MAAA,CAAUpT,CAAK,CAAA,CACdpG,CACT,CAEA,IAAO4c,EAAAA,CAAQR,EAAAA,CC/Ef,IAAIvB,EAAAA,CAAuB,CAAA,CAGvBrS,EAAAA,CAAU,oBAAA,CACVe,EAAAA,CAAW,gBAAA,CACXM,EAAAA,CAAY,iBAAA,CAGZtK,EAAAA,CAAc,MAAA,CAAO,SAAA,CAGrBC,EAAAA,CAAiBD,EAAAA,CAAY,cAAA,CAgBjC,SAASsd,GAAgBtZ,CAAAA,CAAQ6C,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAAA,CAAO,CAC7E,IAAIsD,CAAAA,CAAW1b,CAAAA,CAAQmC,CAAM,CAAA,CACzBwZ,CAAAA,CAAW3b,CAAAA,CAAQgF,CAAK,CAAA,CACxB4W,CAAAA,CAASF,CAAAA,CAAWvT,EAAAA,CAAWwN,EAAAA,CAAOxT,CAAM,CAAA,CAC5C0Z,CAAAA,CAASF,CAAAA,CAAWxT,EAAAA,CAAWwN,EAAAA,CAAO3Q,CAAK,CAAA,CAE/C4W,CAAAA,CAASA,CAAAA,EAAUxU,GAAUqB,EAAAA,CAAYmT,CAAAA,CACzCC,CAAAA,CAASA,CAAAA,EAAUzU,EAAAA,CAAUqB,EAAAA,CAAYoT,CAAAA,CAEzC,IAAIC,CAAAA,CAAWF,CAAAA,EAAUnT,EAAAA,CACrBsT,CAAAA,CAAWF,CAAAA,EAAUpT,EAAAA,CACrBuT,CAAAA,CAAYJ,CAAAA,EAAUC,CAAAA,CAE1B,GAAIG,CAAAA,EAAa9T,EAAAA,CAAS/F,CAAM,CAAA,CAAG,CACjC,GAAI,CAAC+F,EAAAA,CAASlD,CAAK,CAAA,CACjB,OAAO,MAAA,CAET0W,EAAW,IAAA,CACXI,CAAAA,CAAW,MACb,CACA,GAAIE,CAAAA,EAAa,CAACF,CAAAA,CAChB,OAAA1D,CAAAA,GAAUA,CAAAA,CAAQ,IAAIzF,EAAAA,CAAAA,CACd+I,CAAAA,EAAYtR,EAAAA,CAAajI,CAAM,CAAA,CACnCoY,EAAAA,CAAYpY,CAAAA,CAAQ6C,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAK,CAAA,CAChE2C,EAAAA,CAAW5Y,CAAAA,CAAQ6C,CAAAA,CAAO4W,CAAAA,CAAQzD,CAAAA,CAAS5S,EAAYqU,CAAAA,CAAWxB,CAAK,CAAA,CAE7E,GAAI,EAAED,CAAAA,CAAUsB,EAAAA,CAAAA,CAAuB,CACrC,IAAIwC,CAAAA,CAAeH,CAAAA,EAAY1d,EAAAA,CAAe,IAAA,CAAK+D,CAAAA,CAAQ,aAAa,CAAA,CACpE+Z,CAAAA,CAAeH,CAAAA,EAAY3d,EAAAA,CAAe,IAAA,CAAK4G,CAAAA,CAAO,aAAa,CAAA,CAEvE,GAAIiX,CAAAA,EAAgBC,CAAAA,CAAc,CAChC,IAAIC,CAAAA,CAAeF,CAAAA,CAAe9Z,EAAO,KAAA,EAAM,CAAIA,CAAAA,CAC/Cia,CAAAA,CAAeF,CAAAA,CAAelX,CAAAA,CAAM,KAAA,EAAM,CAAIA,CAAAA,CAElD,OAAAoT,CAAAA,GAAUA,CAAAA,CAAQ,IAAIzF,EAAAA,CAAAA,CACfiH,CAAAA,CAAUuC,CAAAA,CAAcC,CAAAA,CAAcjE,CAAAA,CAAS5S,CAAAA,CAAY6S,CAAK,CACzE,CACF,CACA,OAAK4D,CAAAA,EAGL5D,CAAAA,GAAUA,CAAAA,CAAQ,IAAIzF,EAAAA,CAAAA,CACf6I,EAAAA,CAAarZ,EAAQ6C,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAYqU,CAAAA,CAAWxB,CAAK,CAAA,EAH/D,KAIX,CAEA,IAAOiE,EAAAA,CAAQZ,EAAAA,CCjEf,SAASa,EAAAA,CAAY9d,CAAAA,CAAOwG,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAY6S,CAAAA,CAAO,CAC7D,OAAI5Z,CAAAA,GAAUwG,CAAAA,CACL,IAAA,CAELxG,CAAAA,EAAS,IAAA,EAAQwG,CAAAA,EAAS,IAAA,EAAS,CAAC3F,CAAAA,CAAab,CAAK,GAAK,CAACa,CAAAA,CAAa2F,CAAK,CAAA,CACzExG,CAAAA,GAAUA,CAAAA,EAASwG,CAAAA,GAAUA,CAAAA,CAE/BqX,EAAAA,CAAgB7d,CAAAA,CAAOwG,CAAAA,CAAOmT,CAAAA,CAAS5S,CAAAA,CAAY+W,EAAAA,CAAalE,CAAK,CAC9E,CAEA,IAAOmE,EAAAA,CAAQD,EAAAA,CCvBf,IAAI7C,EAAAA,CAAuB,CAAA,CACvBC,EAAAA,CAAyB,CAAA,CAY7B,SAAS8C,EAAAA,CAAYra,CAAAA,CAAQgB,CAAAA,CAAQsZ,CAAAA,CAAWlX,EAAY,CAC1D,IAAI3F,CAAAA,CAAQ6c,CAAAA,CAAU,MAAA,CAClB5c,CAAAA,CAASD,CAAAA,CACT8c,CAAAA,CAAe,CAACnX,CAAAA,CAEpB,GAAIpD,CAAAA,EAAU,IAAA,CACZ,OAAO,CAACtC,CAAAA,CAGV,IADAsC,CAAAA,CAAS,MAAA,CAAOA,CAAM,CAAA,CACfvC,CAAAA,EAAAA,EAAS,CACd,IAAI6M,CAAAA,CAAOgQ,CAAAA,CAAU7c,CAAK,CAAA,CAC1B,GAAK8c,CAAAA,EAAgBjQ,EAAK,CAAC,CAAA,CACnBA,CAAAA,CAAK,CAAC,CAAA,GAAMtK,CAAAA,CAAOsK,CAAAA,CAAK,CAAC,CAAC,CAAA,CAC1B,EAAEA,CAAAA,CAAK,CAAC,CAAA,GAAKtK,CAAAA,CAAAA,CAEnB,OAAO,MAEX,CACA,KAAO,EAAEvC,CAAAA,CAAQC,CAAAA,EAAQ,CACvB4M,CAAAA,CAAOgQ,CAAAA,CAAU7c,CAAK,CAAA,CACtB,IAAIwC,CAAAA,CAAMqK,CAAAA,CAAK,CAAC,CAAA,CACZtH,CAAAA,CAAWhD,CAAAA,CAAOC,CAAG,CAAA,CACrBua,CAAAA,CAAWlQ,CAAAA,CAAK,CAAC,CAAA,CAErB,GAAIiQ,CAAAA,EAAgBjQ,CAAAA,CAAK,CAAC,CAAA,CAAA,CACxB,GAAItH,CAAAA,GAAa,MAAA,EAAa,EAAE/C,CAAAA,IAAOD,CAAAA,CAAAA,CACrC,OAAO,MAAA,CAAA,KAEJ,CACL,IAAIiW,CAAAA,CAAQ,IAAIzF,EAAAA,CAChB,GAAIpN,CAAAA,CACF,IAAI3G,EAAS2G,CAAAA,CAAWJ,CAAAA,CAAUwX,CAAAA,CAAUva,CAAAA,CAAKD,CAAAA,CAAQgB,CAAAA,CAAQiV,CAAK,CAAA,CAExE,GAAI,EAAExZ,CAAAA,GAAW,MAAA,CACT2d,EAAAA,CAAYI,CAAAA,CAAUxX,CAAAA,CAAUsU,EAAAA,CAAuBC,EAAAA,CAAwBnU,CAAAA,CAAY6S,CAAK,CAAA,CAChGxZ,CAAAA,CAAAA,CAEN,OAAO,MAEX,CACF,CACA,OAAO,KACT,CAEA,IAAOge,EAAAA,CAAQJ,GCnDf,SAASK,EAAAA,CAAmBre,CAAAA,CAAO,CACjC,OAAOA,CAAAA,GAAUA,CAAAA,EAAS,CAACgC,CAAAA,CAAShC,CAAK,CAC3C,CAEA,IAAOse,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAa5a,CAAAA,CAAQ,CAI5B,IAAA,IAHIvD,CAAAA,CAASyM,EAAAA,CAAKlJ,CAAM,CAAA,CACpBtC,CAAAA,CAASjB,CAAAA,CAAO,MAAA,CAEbiB,CAAAA,EAAAA,EAAU,CACf,IAAIuC,EAAMxD,CAAAA,CAAOiB,CAAM,CAAA,CACnBrB,CAAAA,CAAQ2D,CAAAA,CAAOC,CAAG,CAAA,CAEtBxD,CAAAA,CAAOiB,CAAM,CAAA,CAAI,CAACuC,CAAAA,CAAK5D,CAAAA,CAAOse,EAAAA,CAAmBte,CAAK,CAAC,EACzD,CACA,OAAOI,CACT,CAEA,IAAOoe,EAAAA,CAAQD,EAAAA,CCdf,SAASE,EAAAA,CAAwB7a,CAAAA,CAAKua,CAAAA,CAAU,CAC9C,OAAO,SAASxa,CAAAA,CAAQ,CACtB,OAAIA,CAAAA,EAAU,IAAA,CACL,KAAA,CAEFA,CAAAA,CAAOC,CAAG,CAAA,GAAMua,CAAAA,GACpBA,CAAAA,GAAa,MAAA,EAAcva,CAAAA,IAAO,MAAA,CAAOD,CAAM,CAAA,CACpD,CACF,CAEA,IAAO+a,EAAAA,CAAQD,EAAAA,CCRf,SAASE,EAAAA,CAAYha,CAAAA,CAAQ,CAC3B,IAAIsZ,CAAAA,CAAYO,EAAAA,CAAa7Z,CAAM,CAAA,CACnC,OAAIsZ,CAAAA,CAAU,MAAA,EAAU,CAAA,EAAKA,CAAAA,CAAU,CAAC,CAAA,CAAE,CAAC,CAAA,CAClCS,EAAAA,CAAwBT,CAAAA,CAAU,CAAC,CAAA,CAAE,CAAC,CAAA,CAAGA,CAAAA,CAAU,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,CAE1D,SAASta,CAAAA,CAAQ,CACtB,OAAOA,CAAAA,GAAWgB,CAAAA,EAAUyZ,EAAAA,CAAYza,CAAAA,CAAQgB,CAAAA,CAAQsZ,CAAS,CACnE,CACF,CAEA,IAAOW,EAAAA,CAAQD,EAAAA,CCbf,SAASE,EAAAA,CAAUlb,CAAAA,CAAQC,CAAAA,CAAK,CAC9B,OAAOD,CAAAA,EAAU,IAAA,EAAQC,CAAAA,IAAO,MAAA,CAAOD,CAAM,CAC/C,CAEA,IAAOmb,EAAAA,CAAQD,EAAAA,CCIf,SAASE,EAAAA,CAAQpb,CAAAA,CAAQ6O,CAAAA,CAAMwM,CAAAA,CAAS,CACtCxM,CAAAA,CAAOJ,EAAAA,CAASI,CAAAA,CAAM7O,CAAM,CAAA,CAM5B,IAAA,IAJIvC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASmR,CAAAA,CAAK,MAAA,CACdpS,CAAAA,CAAS,KAAA,CAEN,EAAEgB,CAAAA,CAAQC,CAAAA,EAAQ,CACvB,IAAIuC,EAAM0O,EAAAA,CAAME,CAAAA,CAAKpR,CAAK,CAAC,CAAA,CAC3B,GAAI,EAAEhB,CAAAA,CAASuD,CAAAA,EAAU,IAAA,EAAQqb,CAAAA,CAAQrb,CAAAA,CAAQC,CAAG,CAAA,CAAA,CAClD,MAEFD,CAAAA,CAASA,CAAAA,CAAOC,CAAG,EACrB,CACA,OAAIxD,CAAAA,EAAU,EAAEgB,CAAAA,EAASC,CAAAA,CAChBjB,CAAAA,EAETiB,CAAAA,CAASsC,CAAAA,EAAU,IAAA,CAAO,CAAA,CAAIA,CAAAA,CAAO,MAAA,CAC9B,CAAC,CAACtC,CAAAA,EAAUuG,EAAAA,CAASvG,CAAM,CAAA,EAAK+E,EAAAA,CAAQxC,CAAAA,CAAKvC,CAAM,CAAA,GACvDG,CAAAA,CAAQmC,CAAM,CAAA,EAAKsF,GAAYtF,CAAM,CAAA,CAAA,CAC1C,CAEA,IAAOsb,EAAAA,CAAQF,EAAAA,CCTf,SAASG,EAAAA,CAAMvb,CAAAA,CAAQ6O,CAAAA,CAAM,CAC3B,OAAO7O,CAAAA,EAAU,IAAA,EAAQsb,EAAAA,CAAQtb,CAAAA,CAAQ6O,CAAAA,CAAMsM,EAAS,CAC1D,CAEA,IAAOK,EAAAA,CAAQD,EAAAA,CCxBf,IAAIjE,EAAAA,CAAuB,CAAA,CACvBC,EAAAA,CAAyB,CAAA,CAU7B,SAASkE,EAAAA,CAAoB5M,EAAM2L,CAAAA,CAAU,CAC3C,OAAI3Q,EAAAA,CAAMgF,CAAI,CAAA,EAAK8L,EAAAA,CAAmBH,CAAQ,CAAA,CACrCO,EAAAA,CAAwBpM,EAAAA,CAAME,CAAI,CAAA,CAAG2L,CAAQ,CAAA,CAE/C,SAASxa,CAAAA,CAAQ,CACtB,IAAIgD,CAAAA,CAAWiM,EAAAA,CAAIjP,CAAAA,CAAQ6O,CAAI,CAAA,CAC/B,OAAQ7L,CAAAA,GAAa,MAAA,EAAaA,CAAAA,GAAawX,CAAAA,CAC3CgB,EAAAA,CAAMxb,EAAQ6O,CAAI,CAAA,CAClBuL,EAAAA,CAAYI,CAAAA,CAAUxX,CAAAA,CAAUsU,EAAAA,CAAuBC,EAAsB,CACnF,CACF,CAEA,IAAOmE,EAAAA,CAAQD,EAAAA,CCzBf,SAASE,EAAAA,CAAa1b,CAAAA,CAAK,CACzB,OAAO,SAASD,CAAAA,CAAQ,CACtB,OAAoCA,CAAAA,GAAOC,CAAG,CAChD,CACF,CAEA,IAAO2b,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAiBhN,CAAAA,CAAM,CAC9B,OAAO,SAAS7O,CAAAA,CAAQ,CACtB,OAAO8O,EAAAA,CAAQ9O,CAAAA,CAAQ6O,CAAI,CAC7B,CACF,CAEA,IAAOiN,EAAAA,CAAQD,EAAAA,CCYf,SAASE,EAAAA,CAASlN,CAAAA,CAAM,CACtB,OAAOhF,EAAAA,CAAMgF,CAAI,CAAA,CAAI+M,EAAAA,CAAajN,EAAAA,CAAME,CAAI,CAAC,CAAA,CAAIiN,GAAiBjN,CAAI,CACxE,CAEA,IAAOmN,EAAAA,CAAQD,EAAAA,CClBf,SAASE,EAAAA,CAAa5f,CAAAA,CAAO,CAG3B,OAAI,OAAOA,CAAAA,EAAS,UAAA,CACXA,CAAAA,CAELA,CAAAA,EAAS,IAAA,CACJkC,EAAAA,CAEL,OAAOlC,CAAAA,EAAS,QAAA,CACXwB,CAAAA,CAAQxB,CAAK,CAAA,CAChBqf,EAAAA,CAAoBrf,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA,CACtC4e,EAAAA,CAAY5e,CAAK,CAAA,CAEhB2f,EAAAA,CAAS3f,CAAK,CACvB,CAEA,IAAO6f,EAAAA,CAAQD,EAAAA,CCvBf,SAASE,EAAAA,CAAcC,CAAAA,CAAW,CAChC,OAAO,SAASpc,CAAAA,CAAQxC,CAAAA,CAAU2U,CAAAA,CAAU,CAM1C,IAAA,IALI1U,CAAAA,CAAQ,EAAA,CACR4e,CAAAA,CAAW,MAAA,CAAOrc,CAAM,CAAA,CACxBmD,CAAAA,CAAQgP,CAAAA,CAASnS,CAAM,CAAA,CACvBtC,CAAAA,CAASyF,CAAAA,CAAM,MAAA,CAEZzF,CAAAA,EAAAA,EAAU,CACf,IAAIuC,CAAAA,CAAMkD,CAAAA,CAAMiZ,CAAAA,CAAY1e,CAAAA,CAAS,EAAED,CAAK,CAAA,CAC5C,GAAID,CAAAA,CAAS6e,CAAAA,CAASpc,CAAG,CAAA,CAAGA,CAAAA,CAAKoc,CAAQ,CAAA,GAAM,KAAA,CAC7C,KAEJ,CACA,OAAOrc,CACT,CACF,CAEA,IAAOsc,GAAQH,EAAAA,CCXf,IAAII,EAAAA,CAAUD,EAAAA,EAAc,CAErBE,EAAAA,CAAQD,EAAAA,CCJf,SAASE,EAAAA,CAAWzc,CAAAA,CAAQxC,CAAAA,CAAU,CACpC,OAAOwC,CAAAA,EAAUwc,EAAAA,CAAQxc,CAAAA,CAAQxC,CAAAA,CAAU0L,EAAI,CACjD,CAEA,IAAOwT,EAAAA,CAAQD,EAAAA,CCLf,SAASE,EAAAA,CAAeC,CAAAA,CAAUR,CAAAA,CAAW,CAC3C,OAAO,SAASS,EAAYrf,CAAAA,CAAU,CACpC,GAAIqf,CAAAA,EAAc,IAAA,CAChB,OAAOA,CAAAA,CAET,GAAI,CAAC1Y,EAAAA,CAAY0Y,CAAU,CAAA,CACzB,OAAOD,CAAAA,CAASC,CAAAA,CAAYrf,CAAQ,CAAA,CAMtC,IAAA,IAJIE,CAAAA,CAASmf,CAAAA,CAAW,MAAA,CACpBpf,CAAAA,CAAQ2e,CAAAA,CAAY1e,CAAAA,CAAS,EAAA,CAC7B2e,CAAAA,CAAW,MAAA,CAAOQ,CAAU,CAAA,CAAA,CAExBT,CAAAA,CAAY3e,IAAU,EAAEA,CAAAA,CAAQC,CAAAA,GAClCF,CAAAA,CAAS6e,CAAAA,CAAS5e,CAAK,CAAA,CAAGA,CAAAA,CAAO4e,CAAQ,CAAA,GAAM,KAAA,EAAnD,CAIF,OAAOQ,CACT,CACF,CAEA,IAAOC,EAAAA,CAAQH,EAAAA,CCpBf,IAAII,EAAAA,CAAWD,EAAAA,CAAeJ,EAAU,CAAA,CAEjCM,EAAAA,CAAQD,EAAAA,CCDf,SAASE,EAAAA,CAAiBjd,CAAAA,CAAQC,CAAAA,CAAK5D,EAAO,CAAA,CACvCA,CAAAA,GAAU,MAAA,EAAa,CAACyG,EAAAA,CAAG9C,CAAAA,CAAOC,CAAG,CAAA,CAAG5D,CAAK,CAAA,EAC7CA,CAAAA,GAAU,MAAA,EAAa,EAAE4D,CAAAA,IAAOD,CAAAA,CAAAA,GACnC2C,EAAAA,CAAgB3C,CAAAA,CAAQC,CAAAA,CAAK5D,CAAK,EAEtC,CAEA,IAAO6gB,EAAAA,CAAQD,EAAAA,CCSf,SAASE,EAAAA,CAAkB9gB,CAAAA,CAAO,CAChC,OAAOa,CAAAA,CAAab,CAAK,CAAA,EAAK8H,EAAAA,CAAY9H,CAAK,CACjD,CAEA,IAAO+gB,EAAAA,CAAQD,EAAAA,CCxBf,SAASE,EAAAA,CAAQrd,CAAAA,CAAQC,CAAAA,CAAK,CAC5B,GAAI,EAAAA,CAAAA,GAAQ,aAAA,EAAiB,OAAOD,CAAAA,CAAOC,CAAG,CAAA,EAAM,UAAA,CAAA,EAIhDA,CAAAA,EAAO,WAAA,CAIX,OAAOD,CAAAA,CAAOC,CAAG,CACnB,CAEA,IAAOqd,GAAQD,EAAAA,CCOf,SAASE,EAAAA,CAAclhB,CAAAA,CAAO,CAC5B,OAAOkH,EAAAA,CAAWlH,CAAAA,CAAOoN,EAAAA,CAAOpN,CAAK,CAAC,CACxC,CAEA,IAAOmhB,EAAAA,CAAQD,EAAAA,CCAf,SAASE,EAAAA,CAAczd,CAAAA,CAAQgB,CAAAA,CAAQf,CAAAA,CAAKyd,CAAAA,CAAUC,CAAAA,CAAWva,CAAAA,CAAY6S,CAAAA,CAAO,CAClF,IAAIjT,CAAAA,CAAWsa,EAAAA,CAAQtd,CAAAA,CAAQC,CAAG,CAAA,CAC9Bua,CAAAA,CAAW8C,EAAAA,CAAQtc,CAAAA,CAAQf,CAAG,CAAA,CAC9BoW,CAAAA,CAAUJ,CAAAA,CAAM,GAAA,CAAIuE,CAAQ,CAAA,CAEhC,GAAInE,CAAAA,CAAS,CACX6G,EAAAA,CAAiBld,CAAAA,CAAQC,CAAAA,CAAKoW,CAAO,CAAA,CACrC,MACF,CACA,IAAI/S,CAAAA,CAAWF,CAAAA,CACXA,CAAAA,CAAWJ,CAAAA,CAAUwX,CAAAA,CAAWva,CAAAA,CAAM,EAAA,CAAKD,CAAAA,CAAQgB,EAAQiV,CAAK,CAAA,CAChE,MAAA,CAEA2H,CAAAA,CAAWta,CAAAA,GAAa,MAAA,CAE5B,GAAIsa,CAAAA,CAAU,CACZ,IAAIxV,CAAAA,CAAQvK,CAAAA,CAAQ2c,CAAQ,CAAA,CACxBlS,CAAAA,CAAS,CAACF,CAAAA,EAASrC,EAAAA,CAASyU,CAAQ,CAAA,CACpCqD,CAAAA,CAAU,CAACzV,CAAAA,EAAS,CAACE,CAAAA,EAAUL,EAAAA,CAAauS,CAAQ,CAAA,CAExDlX,CAAAA,CAAWkX,CAAAA,CACPpS,GAASE,CAAAA,EAAUuV,CAAAA,CACjBhgB,CAAAA,CAAQmF,CAAQ,CAAA,CAClBM,CAAAA,CAAWN,CAAAA,CAEJoa,EAAAA,CAAkBpa,CAAQ,CAAA,CACjCM,CAAAA,CAAWrC,EAAAA,CAAU+B,CAAQ,CAAA,CAEtBsF,CAAAA,EACPsV,CAAAA,CAAW,KAAA,CACXta,CAAAA,CAAW2N,EAAAA,CAAYuJ,CAAAA,CAAU,IAAI,CAAA,EAE9BqD,CAAAA,EACPD,CAAAA,CAAW,KAAA,CACXta,CAAAA,CAAWsR,EAAAA,CAAgB4F,CAAAA,CAAU,IAAI,CAAA,EAGzClX,EAAW,EAAC,CAGPoM,EAAAA,CAAc8K,CAAQ,CAAA,EAAKlV,EAAAA,CAAYkV,CAAQ,CAAA,EACtDlX,CAAAA,CAAWN,CAAAA,CACPsC,EAAAA,CAAYtC,CAAQ,CAAA,CACtBM,CAAAA,CAAWka,EAAAA,CAAcxa,CAAQ,CAAA,CAAA,CAE1B,CAAC3E,CAAAA,CAAS2E,CAAQ,CAAA,EAAKnE,EAAAA,CAAWmE,CAAQ,CAAA,IACjDM,CAAAA,CAAW0R,EAAAA,CAAgBwF,CAAQ,CAAA,CAAA,EAIrCoD,CAAAA,CAAW,MAEf,CACIA,CAAAA,GAEF3H,CAAAA,CAAM,GAAA,CAAIuE,CAAAA,CAAUlX,CAAQ,CAAA,CAC5Bqa,CAAAA,CAAUra,CAAAA,CAAUkX,CAAAA,CAAUkD,CAAAA,CAAUta,CAAAA,CAAY6S,CAAK,CAAA,CACzDA,CAAAA,CAAM,MAAA,CAAUuE,CAAQ,CAAA,CAAA,CAE1B0C,EAAAA,CAAiBld,CAAAA,CAAQC,CAAAA,CAAKqD,CAAQ,EACxC,CAEA,IAAOwa,EAAAA,CAAQL,EAAAA,CC1Ef,SAASM,EAAAA,CAAU/d,CAAAA,CAAQgB,CAAAA,CAAQ0c,EAAUta,CAAAA,CAAY6S,CAAAA,CAAO,CAC1DjW,CAAAA,GAAWgB,CAAAA,EAGfwb,EAAAA,CAAQxb,CAAAA,CAAQ,SAASwZ,CAAAA,CAAUva,CAAAA,CAAK,CAEtC,GADAgW,CAAAA,GAAUA,CAAAA,CAAQ,IAAIzF,EAAAA,CAAAA,CAClBnS,CAAAA,CAASmc,CAAQ,CAAA,CACnBsD,EAAAA,CAAc9d,CAAAA,CAAQgB,CAAAA,CAAQf,CAAAA,CAAKyd,CAAAA,CAAUK,EAAAA,CAAW3a,CAAAA,CAAY6S,CAAK,CAAA,CAAA,KAEtE,CACH,IAAI3S,EAAWF,CAAAA,CACXA,CAAAA,CAAWka,EAAAA,CAAQtd,CAAAA,CAAQC,CAAG,CAAA,CAAGua,CAAAA,CAAWva,CAAAA,CAAM,EAAA,CAAKD,CAAAA,CAAQgB,CAAAA,CAAQiV,CAAK,CAAA,CAC5E,MAAA,CAEA3S,CAAAA,GAAa,MAAA,GACfA,CAAAA,CAAWkX,CAAAA,CAAAA,CAEb0C,EAAAA,CAAiBld,CAAAA,CAAQC,CAAAA,CAAKqD,CAAQ,EACxC,CACF,CAAA,CAAGmG,EAAM,EACX,CAEA,IAAOuU,EAAAA,CAAQD,GCXf,SAASE,EAAAA,CAAQ5hB,CAAAA,CAAOwG,CAAAA,CAAO,CAC7B,OAAOuX,EAAAA,CAAY/d,CAAAA,CAAOwG,CAAK,CACjC,CAEA,IAAOqb,EAAAA,CAAQD,EAAAA,CCAf,IAAIE,EAAAA,CAAQzZ,EAAAA,CAAe,SAAS1E,CAAAA,CAAQgB,CAAAA,CAAQ0c,CAAAA,CAAU,CAC5DM,EAAAA,CAAUhe,CAAAA,CAAQgB,CAAAA,CAAQ0c,CAAQ,EACpC,CAAC,CAAA,CAEMU,EAAAA,CAAQD,GCtBf,SAASE,EAAAA,CAAQre,CAAAA,CAAQ6O,CAAAA,CAAMxS,CAAAA,CAAO+G,CAAAA,CAAY,CAChD,GAAI,CAAC/E,CAAAA,CAAS2B,CAAM,CAAA,CAClB,OAAOA,CAAAA,CAET6O,CAAAA,CAAOJ,EAAAA,CAASI,CAAAA,CAAM7O,CAAM,CAAA,CAO5B,IAAA,IALIvC,CAAAA,CAAQ,EAAA,CACRC,CAAAA,CAASmR,CAAAA,CAAK,MAAA,CACdtD,CAAAA,CAAY7N,CAAAA,CAAS,CAAA,CACrB4gB,CAAAA,CAASte,CAAAA,CAENse,GAAU,IAAA,EAAQ,EAAE7gB,CAAAA,CAAQC,CAAAA,EAAQ,CACzC,IAAIuC,CAAAA,CAAM0O,EAAAA,CAAME,CAAAA,CAAKpR,CAAK,CAAC,CAAA,CACvB6F,CAAAA,CAAWjH,CAAAA,CAEf,GAAI4D,CAAAA,GAAQ,WAAA,EAAeA,CAAAA,GAAQ,aAAA,EAAiBA,CAAAA,GAAQ,WAAA,CAC1D,OAAOD,CAAAA,CAGT,GAAIvC,CAAAA,EAAS8N,CAAAA,CAAW,CACtB,IAAIvI,CAAAA,CAAWsb,CAAAA,CAAOre,CAAG,CAAA,CACzBqD,CAAAA,CAAWF,CAAAA,CAAaA,CAAAA,CAAWJ,CAAAA,CAAU/C,CAAAA,CAAKqe,CAAM,CAAA,CAAI,MAAA,CACxDhb,CAAAA,GAAa,MAAA,GACfA,CAAAA,CAAWjF,CAAAA,CAAS2E,CAAQ,CAAA,CACxBA,CAAAA,CACCP,EAAAA,CAAQoM,CAAAA,CAAKpR,CAAAA,CAAQ,CAAC,CAAC,CAAA,CAAI,EAAC,CAAI,EAAC,EAE1C,CACAwF,EAAAA,CAAYqb,CAAAA,CAAQre,CAAAA,CAAKqD,CAAQ,CAAA,CACjCgb,CAAAA,CAASA,CAAAA,CAAOre,CAAG,EACrB,CACA,OAAOD,CACT,CAEA,IAAOue,EAAAA,CAAQF,EAAAA,CCpBf,SAAS7F,EAAAA,CAAIxY,CAAAA,CAAQ6O,CAAAA,CAAMxS,CAAAA,CAAO,CAChC,OAAO2D,CAAAA,EAAU,IAAA,CAAOA,CAAAA,CAASue,EAAAA,CAAQve,CAAAA,CAAQ6O,CAAAA,CAAMxS,CAAK,CAC9D,CAEA,IAAOmiB,EAAAA,CAAQhG,GCvBf,SAASiG,EAAAA,CAAS5B,CAAAA,CAAY1L,CAAAA,CAAW,CACvC,IAAI1U,CAAAA,CAEJ,OAAAugB,EAAAA,CAASH,CAAAA,CAAY,SAASxgB,CAAAA,CAAOoB,CAAAA,CAAOof,CAAAA,CAAY,CACtD,OAAApgB,CAAAA,CAAS0U,CAAAA,CAAU9U,CAAAA,CAAOoB,CAAAA,CAAOof,CAAU,CAAA,CACpC,CAACpgB,CACV,CAAC,CAAA,CACM,CAAC,CAACA,CACX,CAEA,IAAOiiB,EAAAA,CAAQD,EAAAA,CCqBf,SAASE,EAAAA,CAAK9B,CAAAA,CAAY1L,CAAAA,CAAW1M,CAAAA,CAAO,CAC1C,IAAItF,CAAAA,CAAOtB,CAAAA,CAAQgf,CAAU,CAAA,CAAI1F,EAAAA,CAAYuH,EAAAA,CAC7C,OAAIja,CAAAA,EAASJ,EAAAA,CAAewY,CAAAA,CAAY1L,CAAAA,CAAW1M,CAAK,CAAA,GACtD0M,CAAAA,CAAY,MAAA,CAAA,CAEPhS,CAAAA,CAAK0d,CAAAA,CAAYX,EAAAA,CAAa/K,CAAY,CAAC,CACpD,CAEA,IAAOyN,EAAAA,CAAQD,EAAAA,CC9Cf,IAAME,EAAAA,CAAY,eAAA,CAELC,CAAAA,CAAiBC,CAAAA,EAAiC,CAC7D,IAAM9Q,CAAAA,CAAQ4Q,EAAAA,CAAU,IAAA,CAAKE,CAAG,EAChC,OAAO9Q,CAAAA,CAAQ,CAAE,KAAA,CAAOA,CAAAA,CAAM,CAAC,CAAA,CAAE,MAAA,CAAQ,IAAA,CAAMA,CAAAA,CAAM,CAAC,CAAE,CAAA,CAAI,IAC9D,CAAA,CAEa+Q,EAAAA,CAAmB,CAACD,CAAAA,CAAaE,CAAAA,CAAeC,CAAAA,GAC3D,CAAA,WAAA,EAAcH,CAAG,CAAA,cAAA,EAAiBE,CAAK,CAAA,UAAA,EAAaC,CAAS,CAAA,CAAA,EAAIA,CAAAA,GAAc,CAAA,CAAI,UAAA,CAAa,YAAY,CAAA,SAAA,CAAA,CAQjGC,EAAAA,CAAe,CAC1BJ,CAAAA,CACAK,CAAAA,GACoC,CACpC,IAAMC,CAAAA,CAASP,CAAAA,CAAcC,CAAG,CAAA,CAChC,OAAKM,CAAAA,CACDA,CAAAA,CAAO,KAAA,CAAQD,CAAAA,CAAO,MAAA,CACjB,CAAE,WAAA,CAAaJ,EAAAA,CAAiBD,CAAAA,CAAKM,CAAAA,CAAO,KAAA,CAAOD,CAAAA,CAAO,MAAM,CAAE,CAAA,CACpE,CAAE,KAAA,CAAOA,CAAAA,CAAOA,EAAO,MAAA,CAASC,CAAAA,CAAO,KAAK,CAAA,CAAG,IAAA,CAAMA,CAAAA,CAAO,IAAK,CAAA,CAHpD,CAAE,KAAA,CAAOD,CAAAA,CAAOA,CAAAA,CAAO,MAAA,CAAS,CAAC,EAAG,IAAA,CAAML,CAAI,CAIpE,CAAA,CAGMO,EAAAA,CAAU,yCAAA,CACVC,EAAAA,CAAY1Q,CAAAA,EAChBA,CAAAA,GAAS,EAAA,CAAK,CAAC,EAAE,CAAA,CAAI,CAAC,GAAGA,CAAAA,CAAK,QAAA,CAASyQ,EAAO,CAAC,CAAA,CAAE,GAAA,CAAKE,CAAAA,EAAMA,CAAAA,CAAE,CAAC,CAAA,EAAKA,CAAAA,CAAE,CAAC,CAAA,EAAKA,CAAAA,CAAE,CAAC,CAAC,CAAA,CAK5EC,EAAAA,CAAO,CAACC,CAAAA,CAAazf,CAAAA,GAAyB,CAClD,GAAIyf,CAAAA,EAAO,IAAA,CAA0B,OACrC,IAAMC,CAAAA,CAAQ,MAAA,CAAOD,CAAE,EACvB,GAAI,MAAA,CAAO,MAAA,CAAOC,CAAAA,CAAO1f,CAAG,CAAA,CAAG,OAAO0f,CAAAA,CAAM1f,CAAG,CAAA,CAC/C,GAAIA,CAAAA,IAAO,MAAA,CAAO,SAAA,EAAa,EAAEA,CAAAA,IAAO0f,CAAAA,CAAAA,CAAQ,OAChD,IAAMtjB,CAAAA,CAAQsjB,CAAAA,CAAM1f,CAAG,CAAA,CACvB,OAAO,OAAO5D,CAAAA,EAAU,UAAA,CAAa,MAAA,CAAYA,CACnD,CAAA,CAIaujB,EAAc,CAAChkB,CAAAA,CAAeiT,CAAAA,GACzC0Q,EAAAA,CAAS1Q,CAAI,CAAA,CAAE,MAAA,CAAgB4Q,EAAAA,CAAM7jB,CAAI,CAAA,CAE9BikB,EAAAA,CAAY,CAACd,CAAAA,CAAaK,CAAAA,GAA4B,CACjE,IAAMU,CAAAA,CAASX,EAAAA,CAAaJ,CAAAA,CAAKK,CAAM,CAAA,CACvC,GAAI,aAAA,GAAiBU,CAAAA,CAAQ,MAAM,IAAI,KAAA,CAAMA,CAAAA,CAAO,WAAW,CAAA,CAC/D,OAAOF,CAAAA,CAAYE,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,IAAI,CAC9C,CAAA,CAEaC,EAAAA,CAAW,CAAChB,CAAAA,CAAaK,CAAAA,CAAgBY,CAAAA,GACpDlB,CAAAA,CAAcC,CAAG,CAAA,CAAIc,EAAAA,CAAUd,CAAAA,CAAKK,CAAM,CAAA,CAAIQ,CAAAA,CAAYI,CAAAA,CAASjB,CAAG,CAAA,CAE3DkB,EAAAA,CAAoB,CAAClB,CAAAA,CAAamB,CAAAA,GAC7C,CAAA,WAAA,EAAcnB,CAAG,CAAA,sBAAA,EAAyBmB,CAAI,CAAA,yBAAA,CAAA,CAEnCC,EAAAA,CAAoB,CAACC,CAAAA,CAAmBF,CAAAA,GAAqC,CACxF,GAAI,EAAA,EAAE,OAAA,GAAWE,CAAAA,CAAAA,EAAc,OAAOA,CAAAA,CAAU,KAAA,EAAU,QAAA,CAAA,EACtDtB,CAAAA,CAAcsB,CAAAA,CAAU,KAAK,CAAA,CAAG,MAAM,IAAI,KAAA,CAAMH,EAAAA,CAAkBG,CAAAA,CAAU,KAAA,CAAOF,CAAI,CAAC,CAC9F,CAAA,CAIaG,EAAAA,CAAiB,CAC5BtB,EACAiB,CAAAA,CACAE,CAAAA,GACY,CACZ,GAAI,CAACF,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,CAAA,qCAAA,EAAwCjB,CAAG,CAAA,6BAAA,EAAgCmB,CAAI,CAAA,GAAA,CACjF,CAAA,CACF,OAAON,CAAAA,CAAYI,CAAAA,CAASjB,CAAG,CAAA,EAAK,IACtC,EClDA,IAAMuB,EAAAA,CAA+B,CACnC,MAAA,CAAQ,CACN,eAAA,CAAiB,KAAA,CACjB,KAAA,CAAO,KACT,CAAA,CACA,aAAA,CAAe,CACb,UAAA,CAAY,CACV,QAAA,CAAU,YACZ,CACF,CACF,CAAA,CAEIC,EAAAA,CAA4B9J,EAAAA,CAAU6J,EAAQ,CAAA,CAI5CE,EAAAA,CAAWnkB,CAAAA,EACfsa,EAAAA,CAActa,CAAAA,CAAQokB,CAAAA,EACpB,OAAOA,CAAAA,EAAM,QAAA,EAAYA,CAAAA,GAAM,IAAA,EAAQ,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAC,CAAA,EAAK,CAAC/Q,GAAc+Q,CAAC,CAAA,CAAIA,CAAAA,CAAI,MACtF,CAAA,CAEIC,EAAAA,CAAcD,CAAAA,EAClBA,CAAAA,EAAK,IAAA,EAAQ,OAAQA,CAAAA,CAAyB,IAAA,EAAS,UAAA,CAE5CE,EAAAA,CAAgB,CAC3B,GAAA,CAAK,CAAC9R,CAAAA,CAAcxS,CAAAA,GAAyB,CAC3CmiB,EAAAA,CAAI+B,EAAAA,CAAO1R,CAAAA,CAAM2R,EAAAA,CAAKnkB,CAAK,CAAC,EAC9B,CAAA,CACA,GAAA,CAAMwS,CAAAA,EAA0B+Q,EAAYW,EAAAA,CAAO1R,CAAI,CAAA,CACvD,KAAA,CAAO,IAAY,CACjB0R,EAAAA,CAAQ9J,EAAAA,CAAU6J,EAAQ,EAC5B,CAAA,CAIA,IAAA,CAAM,CAAIM,CAAAA,CAA0CC,CAAAA,GAAmB,CACrE,IAAMC,CAAAA,CAAOP,EAAAA,CACbA,EAAAA,CAAQnC,EAAAA,CAAMoC,EAAAA,CAAKM,CAAI,CAAA,CAAGN,EAAAA,CAAKI,CAAO,CAAC,CAAA,CACvC,GAAI,CACF,IAAMnkB,CAAAA,CAASokB,CAAAA,EAAG,CAClB,GAAIH,EAAAA,CAAWjkB,CAAM,CAAA,CACnB,MAAM,IAAI,KAAA,CACR,4EACF,CAAA,CACF,OAAOA,CACT,CAAA,OAAE,CACA8jB,EAAAA,CAAQO,EACV,CACF,CACF,CAAA,CAIMC,EAAAA,CAAoD,IAAI,GAAA,CAAI,CAChE,YAAA,CACA,aAAA,CACA,SACF,CAAC,CAAA,CAEYC,GAAqBC,CAAAA,EAChCF,EAAAA,CAAqB,GAAA,CAAIE,CAAQ,CAAA,CAGtBC,EAAAA,CAA0BC,CAAAA,EACrCA,CAAAA,EAAaR,EAAAA,CAAc,GAAA,CAAI,wBAAwB,CAAA,EAA6B,KAAA,CAGzES,EAAAA,CAAgBD,CAAAA,EAA0D,CACrF,IAAME,CAAAA,CACJF,CAAAA,EAAaR,EAAAA,CAAc,GAAA,CAAI,cAAc,CAAA,EAA2C,KAAA,CAC1F,OAAKU,CAAAA,CACEA,CAAAA,GAAa,IAAA,CAAO,EAAC,CAAIA,EADV,KAExB,ECxGO,IAAMC,CAAAA,CAAW,CACtB,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,WAAA,CACX,QAAA,CAAU,UAAA,CACV,cAAA,CAAgB,gBAAA,CAChB,WAAA,CAAa,aAAA,CACb,iBAAA,CAAmB,mBAAA,CACnB,QAAA,CAAU,UAAA,CACV,WAAA,CAAa,aAAA,CACb,EAAA,CAAI,IAAA,CACJ,KAAA,CAAO,OAAA,CACP,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,YAAA,CACZ,OAAA,CAAS,UACT,UAAA,CAAY,YAAA,CACZ,OAAA,CAAS,SAAA,CACT,QAAA,CAAU,UAAA,CACV,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,WAAA,CACX,UAAA,CAAY,YAAA,CACZ,aAAA,CAAe,eAAA,CACf,QAAA,CAAU,UAAA,CACV,WAAA,CAAa,aACf,CAAA,CAIaC,CAAAA,CAAgB,CAC3B,GAAA,CAAK,KAAA,CACL,GAAA,CAAK,KAAA,CACL,IAAA,CAAM,MAAA,CACN,OAAA,CAAS,SAAA,CACT,MAAA,CAAQ,SACR,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,OAAA,CACP,QAAA,CAAU,UACZ,CAAA,CAIaC,CAAAA,CAAe,CAC1B,MAAA,CAAQ,QAAA,CACR,KAAA,CAAO,OAAA,CACP,UAAA,CAAY,YAAA,CACZ,SAAA,CAAW,WAAA,CACX,SAAA,CAAW,WAAA,CACX,QAAA,CAAU,UAAA,CACV,MAAA,CAAQ,QAAA,CACR,SAAA,CAAW,WAAA,CACX,OAAA,CAAS,SAAA,CACT,UAAA,CAAY,YAAA,CACZ,KAAA,CAAO,QACP,QAAA,CAAU,UACZ,ECjDO,IAAMC,CAAAA,CAAY,CACvB,MAAA,CAAQ,QAAA,CACR,OAAA,CAAS,SAAA,CACT,GAAA,CAAK,KAAA,CACL,MAAA,CAAQ,QAAA,CACR,KAAA,CAAO,OAAA,CACP,OAAA,CAAS,SAAA,CACT,QAAA,CAAU,UAAA,CACV,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,OAAA,CACP,IAAA,CAAM,MACR,CAAA,CAIaC,EAAAA,CAAsC,CAAC,KAAA,CAAO,QAAS,SAAA,CAAW,QAAQ,CAAA,CACjFC,EAAAA,CAAwC,CAAC,QAAA,CAAU,GAAGD,EAAAA,CAAe,UAAU,CAAA,CAC/EE,EAAAA,CAAsC,CAAC,QAAQ,CAAA,CAC/CC,EAAAA,CAAwC,CAC5C,QAAA,CACA,SAAA,CACA,KAAA,CACA,QAAA,CACA,OAAA,CACA,SAAA,CACA,UAAA,CACA,MACF,CAAA,CACaC,EAAAA,CAAkC,MAAA,CAAO,MAAA,CAAOL,CAAS,CAAA,CAIhEM,GAAuCD,EAAAA,CAEhCE,EAAAA,CAAa,CACxB,KAAA,CAAO,OAAA,CACP,QAAA,CAAU,UAAA,CACV,KAAA,CAAO,OACT,CAAA,CAKaC,EAAAA,CAAeC,CAAAA,EAC1B,OAAOA,CAAAA,EAAS,QAAA,EAAY,MAAA,CAAO,MAAA,CAAOT,CAAAA,CAAWS,CAAI,CAAA,CAE9CC,CAAAA,CAAqC,CAAC,OAAA,CAAS,UAAA,CAAY,OAAO,CAAA,CACzEC,EAAAA,CAAyC,CAAC,OAAA,CAAS,UAAU,EAC7DC,EAAAA,CAA4C,CAAC,OAAA,CAAS,OAAO,CAAA,CAEtDC,EAAAA,CAAa,CACxB,IAAA,CAAM,MAAA,CACN,MAAA,CAAQ,QAAA,CACR,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,OAAA,CACP,MAAA,CAAQ,QAAA,CACR,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,OAAA,CACP,SAAA,CAAW,WAAA,CACX,SAAA,CAAW,WAAA,CACX,UAAA,CAAY,YAAA,CACZ,OAAA,CAAS,SAAA,CACT,KAAA,CAAO,QACP,SAAA,CAAW,WACb,CAAA,CAiBaC,EAAAA,CAAyD,CACpE,CAACjB,CAAAA,CAAS,MAAM,EAAG,CAAE,KAAA,CAAOO,EAAAA,CAAiB,OAAA,CAASM,CAAAA,CAAa,UAAA,CAAY,QAAS,CAAA,CACxF,CAACb,CAAAA,CAAS,SAAS,EAAG,CACpB,OAAA,CAASA,CAAAA,CAAS,MAAA,CAClB,KAAA,CAAOO,EAAAA,CACP,OAAA,CAASM,CAAAA,CACT,UAAA,CAAY,QACd,CAAA,CACA,CAACb,CAAAA,CAAS,QAAQ,EAAG,CACnB,KAAA,CAAOK,EAAAA,CACP,OAAA,CAASQ,CAAAA,CACT,UAAA,CAAY,SAAA,CACZ,UAAA,CAAY,IACd,CAAA,CACA,CAACb,CAAAA,CAAS,cAAc,EAAG,CACzB,KAAA,CAAOK,EAAAA,CACP,OAAA,CAASQ,CAAAA,CACT,UAAA,CAAY,SAAA,CACZ,UAAA,CAAY,KACd,CAAA,CACA,CAACb,EAAS,WAAW,EAAG,CACtB,KAAA,CAAOK,EAAAA,CACP,OAAA,CAASQ,CAAAA,CACT,UAAA,CAAY,SAAA,CACZ,UAAA,CAAY,IACd,CAAA,CACA,CAACb,CAAAA,CAAS,iBAAiB,EAAG,CAC5B,KAAA,CAAOK,EAAAA,CACP,OAAA,CAASQ,CAAAA,CACT,UAAA,CAAY,SAAA,CACZ,UAAA,CAAY,KACd,CAAA,CACA,CAACb,CAAAA,CAAS,EAAE,EAAG,CAAE,KAAA,CAAOO,EAAAA,CAAiB,OAAA,CAASM,CAAAA,CAAa,UAAA,CAAY,OAAQ,CAAA,CACnF,CAACb,CAAAA,CAAS,KAAK,EAAG,CAChB,OAAA,CAASA,CAAAA,CAAS,EAAA,CAClB,KAAA,CAAOO,EAAAA,CACP,OAAA,CAASM,CAAAA,CACT,UAAA,CAAY,OACd,CAAA,CACA,CAACb,CAAAA,CAAS,QAAQ,EAAG,CAAE,KAAA,CAAOM,EAAAA,CAAe,OAAA,CAASO,EAAa,UAAA,CAAY,QAAS,CAAA,CACxF,CAACb,CAAAA,CAAS,WAAW,EAAG,CACtB,OAAA,CAASA,CAAAA,CAAS,QAAA,CAClB,KAAA,CAAOM,EAAAA,CACP,OAAA,CAASO,CAAAA,CACT,UAAA,CAAY,QACd,CAAA,CACA,CAACb,CAAAA,CAAS,UAAU,EAAG,CAAE,KAAA,CAAOM,EAAAA,CAAe,OAAA,CAASO,CAAAA,CAAa,UAAA,CAAY,QAAS,CAAA,CAC1F,CAACb,CAAAA,CAAS,aAAa,EAAG,CACxB,OAAA,CAASA,CAAAA,CAAS,UAAA,CAClB,KAAA,CAAOM,EAAAA,CACP,OAAA,CAASO,CAAAA,CACT,UAAA,CAAY,QACd,CAAA,CACA,CAACb,CAAAA,CAAS,QAAQ,EAAG,CAAE,KAAA,CAAOM,EAAAA,CAAe,OAAA,CAASO,CAAAA,CAAa,UAAA,CAAY,QAAS,CAAA,CACxF,CAACb,CAAAA,CAAS,WAAW,EAAG,CACtB,OAAA,CAASA,CAAAA,CAAS,QAAA,CAClB,KAAA,CAAOM,EAAAA,CACP,OAAA,CAASO,CAAAA,CACT,UAAA,CAAY,QACd,CAAA,CACA,CAACb,CAAAA,CAAS,OAAO,EAAG,CAAE,KAAA,CAAOM,EAAAA,CAAe,OAAA,CAASS,EAAAA,CAAoB,UAAA,CAAY,SAAU,CAAA,CAC/F,CAACf,CAAAA,CAAS,UAAU,EAAG,CACrB,OAAA,CAASA,CAAAA,CAAS,OAAA,CAClB,MAAOM,EAAAA,CACP,OAAA,CAASS,EAAAA,CACT,UAAA,CAAY,SACd,CAAA,CACA,CAACf,CAAAA,CAAS,OAAO,EAAG,CAAE,KAAA,CAAOK,EAAAA,CAAiB,OAAA,CAASQ,CAAAA,CAAa,UAAA,CAAY,OAAQ,CAAA,CACxF,CAACb,CAAAA,CAAS,UAAU,EAAG,CACrB,OAAA,CAASA,CAAAA,CAAS,OAAA,CAClB,KAAA,CAAOK,EAAAA,CACP,OAAA,CAASQ,CAAAA,CACT,WAAY,OACd,CAAA,CACA,CAACb,CAAAA,CAAS,OAAO,EAAG,CAAE,KAAA,CAAOS,EAAAA,CAAgB,OAAA,CAASI,CAAAA,CAAa,UAAA,CAAY,MAAO,CAAA,CACtF,CAACb,CAAAA,CAAS,QAAQ,EAAG,CAAE,KAAA,CAAOS,EAAAA,CAAgB,OAAA,CAASI,CAAAA,CAAa,UAAA,CAAY,MAAO,CAAA,CACvF,CAACb,CAAAA,CAAS,MAAM,EAAG,CAAE,KAAA,CAAOQ,EAAAA,CAAW,OAAA,CAASK,CAAAA,CAAa,UAAA,CAAY,MAAO,CAAA,CAChF,CAACb,CAAAA,CAAS,SAAS,EAAG,CAAE,KAAA,CAAOQ,EAAAA,CAAW,OAAA,CAASK,CAAAA,CAAa,UAAA,CAAY,MAAO,CACrF,CAAA,CAEaK,EAAAA,CAA4D,CACvE,CAAChB,CAAAA,CAAa,MAAM,EAAG,CACrB,KAAA,CAAO,CAAC,UAAU,EAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,IACd,CAAA,CACA,CAACX,CAAAA,CAAa,KAAK,EAAG,CACpB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,IACd,CAAA,CACA,CAACX,CAAAA,CAAa,UAAU,EAAG,CACzB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,KACd,CAAA,CACA,CAACX,CAAAA,CAAa,SAAS,EAAG,CACxB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,KACd,CAAA,CACA,CAACX,CAAAA,CAAa,SAAS,EAAG,CACxB,OAAA,CAASA,CAAAA,CAAa,MAAA,CACtB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,KACd,CAAA,CACA,CAACX,CAAAA,CAAa,QAAQ,EAAG,CACvB,OAAA,CAASA,CAAAA,CAAa,KAAA,CACtB,MAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IAAA,CACb,UAAA,CAAY,KACd,CAAA,CACA,CAACX,CAAAA,CAAa,MAAM,EAAG,CACrB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,YAAA,CACZ,WAAA,CAAa,IACf,CAAA,CACA,CAACX,EAAa,SAAS,EAAG,CACxB,OAAA,CAASA,CAAAA,CAAa,MAAA,CACtB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,YAAA,CACZ,WAAA,CAAa,IACf,CAAA,CACA,CAACX,CAAAA,CAAa,OAAO,EAAG,CACtB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,YAAa,IACf,CAAA,CACA,CAACX,CAAAA,CAAa,UAAU,EAAG,CACzB,OAAA,CAASA,CAAAA,CAAa,OAAA,CACtB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASW,CAAAA,CACT,UAAA,CAAY,WAAA,CACZ,WAAA,CAAa,IACf,CAAA,CACA,CAACX,CAAAA,CAAa,KAAK,EAAG,CACpB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,QAASa,EAAAA,CACT,UAAA,CAAY,SAAA,CACZ,WAAA,CAAa,KACf,CAAA,CACA,CAACb,CAAAA,CAAa,QAAQ,EAAG,CACvB,OAAA,CAASA,CAAAA,CAAa,KAAA,CACtB,KAAA,CAAO,CAAC,UAAU,CAAA,CAClB,OAAA,CAASa,EAAAA,CACT,UAAA,CAAY,SAAA,CACZ,WAAA,CAAa,KACf,CACF,CAAA,CAQaI,EAAAA,CAAmE,CAC9E,CAAClB,CAAAA,CAAc,GAAG,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,WAAY,CAAA,CACzE,CAACb,CAAAA,CAAc,GAAG,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,WAAY,CAAA,CACzE,CAACb,CAAAA,CAAc,IAAI,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,WAAY,CAAA,CAC1E,CAACb,CAAAA,CAAc,OAAO,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,OAAA,CAAS,UAAA,CAAY,KAAM,CAAA,CAC5F,CAACb,CAAAA,CAAc,MAAM,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,OAAA,CAAS,UAAA,CAAY,KAAM,CAAA,CAC3F,CAACb,CAAAA,CAAc,OAAO,EAAG,CAAE,OAAA,CAASa,EAAAA,CAAiB,UAAA,CAAY,OAAA,CAAS,UAAA,CAAY,QAAS,CAAA,CAC/F,CAACb,CAAAA,CAAc,KAAK,EAAG,CAAE,OAAA,CAASY,CAAAA,CAAa,UAAA,CAAY,MAAO,CAAA,CAClE,CAACZ,CAAAA,CAAc,QAAQ,EAAG,CAAE,OAAA,CAASY,CAAAA,CAAa,UAAA,CAAY,MAAO,CACvE,CAAA,CAKMO,EAAAA,CAAqF,CACzF,KAAA,CAAOH,EAAAA,CACP,IAAA,CAAMC,EAAAA,CACN,KAAA,CAAOC,EACT,EAGaE,EAAAA,CAAe,CAC1BC,CAAAA,CACAC,CAAAA,GAEA,MAAA,CAAO,MAAA,CAAOH,EAAAA,CAASG,CAAM,CAAA,CAAGD,CAAQ,CAAA,CAAIF,EAAAA,CAASG,CAAM,CAAA,CAAED,CAAQ,CAAA,CAAI,MAAA,CAG9DE,EAAAA,CAAoBC,CAAAA,EAI9B,OAAOA,CAAAA,CAAK,QAAA,EAAa,QAAA,CACtBJ,EAAAA,CAAaI,CAAAA,CAAK,QAAA,CAAU,OAAO,CAAA,CACnC,OAAOA,CAAAA,CAAK,cAAiB,QAAA,CAC3BJ,EAAAA,CAAaI,CAAAA,CAAK,YAAA,CAAc,MAAM,CAAA,CACtC,MAAA,CAGKC,EAAAA,CAAe,CAACJ,CAAAA,CAAkBC,CAAAA,GAC7CF,EAAAA,CAAaC,CAAAA,CAAUC,CAAM,CAAA,EAAG,UAAA,CAErBI,EAAAA,CAAgB,CAACL,CAAAA,CAAkBC,CAAAA,GAAuC,CACrF,IAAM/X,CAAAA,CAAQ6X,EAAAA,CAAaC,CAAAA,CAAUC,CAAM,CAAA,CAC3C,GAAI,CAAC/X,CAAAA,CAAO,MAAMoY,CAAAA,CAAgBN,CAAAA,CAAUC,CAAM,CAAA,CAClD,OAAO/X,CAAAA,CAAM,UACf,CAAA,CAEaqY,EAAAA,CAA+B,CAC1CP,CAAAA,CACAC,CAAAA,CACA/C,CAAAA,GACY6C,EAAAA,CAAaC,CAAAA,CAAUC,CAAM,CAAA,EAAG,OAAA,CAAQ,QAAA,CAAS/C,CAAM,CAAA,EAAK,KAAA,CAE7DsD,EAAAA,CAAsB,CACjCC,CAAAA,CACAvD,CAAAA,GACgD,CAChD,IAAMwD,CAAAA,CAAS,MAAA,CAAO,KAAKf,EAAsB,CAAA,CAAiB,MAAA,CAAQgB,CAAAA,EAAO,CAC/E,IAAMzY,CAAAA,CAAQyX,EAAAA,CAAuBgB,CAAc,CAAA,CAEnD,OADI,EAAA,CAACzY,CAAAA,CAAM,KAAA,CAAM,QAAA,CAASuY,CAAI,CAAA,EAC1BvD,CAAAA,EAAU,CAAChV,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAASgV,CAAM,CAAA,CAE9C,CAAC,CAAA,CACK0D,CAAAA,CAAQ,MAAA,CAAO,IAAA,CAAKhB,EAAqB,EAAqB,MAAA,CAAQe,CAAAA,EAAO,CACjF,IAAMzY,CAAAA,CAAQ0X,EAAAA,CAAsBe,CAAE,CAAA,CAEtC,OADI,EAAA,CAACzY,CAAAA,CAAM,KAAA,CAAM,QAAA,CAASuY,CAAI,CAAA,EAC1BvD,CAAAA,EAAU,CAAChV,CAAAA,CAAM,OAAA,CAAQ,QAAA,CAASgV,CAAM,CAAA,CAE9C,CAAC,CAAA,CACD,OAAO,CAAE,KAAA,CAAAwD,CAAAA,CAAO,IAAA,CAAAE,CAAK,CACvB,CAAA,CAEaC,EAAAA,CAAqB3D,CAAAA,EACxB,MAAA,CAAO,IAAA,CAAK2C,EAAsB,CAAA,CAAsB,MAAA,CAAQc,CAAAA,EACjEzD,CAAAA,CACE2C,EAAAA,CAAuBc,CAAE,CAAA,CAAE,OAAA,CAAQ,QAAA,CAASzD,CAAM,CAAA,CADrC,IAErB,CAAA,CAOG4D,EAAAA,CAAsD,CAC1D,GAAG,MAAA,CAAO,OAAA,CAAQnB,EAAsB,CAAA,CACxC,GAAG,MAAA,CAAO,OAAA,CAAQC,EAAqB,CACzC,CAAA,CACMmB,EAAAA,CAAY,CAAA,GAAIC,CAAAA,GACpBF,EAAAA,CAAiB,OAAA,CAAQ,CAAC,CAACd,CAAAA,CAAU9X,CAAK,CAAA,GACxC8Y,CAAAA,CAAO,QAAA,CAAS9Y,CAAAA,CAAM,UAAU,CAAA,CAAI,CAAC8X,CAAQ,CAAA,CAAI,EACnD,CAAA,CAGWiB,EAAAA,CAAqBF,EAAAA,CAAU,MAAM,CAAA,CAErCG,EAAAA,CAAoBH,EAAAA,CAAU,SAAS,CAAA,CAEvCI,GAAmBJ,EAAAA,CAAU,YAAY,CAAA,CAEzCK,EAAAA,CAAkBL,EAAAA,CAAU,OAAA,CAAS,WAAA,CAAa,YAAY,CAAA,CAG9DM,EAAAA,CAAoBN,EAAAA,CAAU,SAAA,CAAW,QAAA,CAAU,SAAA,CAAW,OAAO,CAAA,CAErEO,EAAAA,CAAwC,CAAC5C,CAAAA,CAAS,QAAA,CAAUA,CAAAA,CAAS,WAAW,CAAA,CAGhF6C,EAAAA,CAAsBR,EAAAA,CAAU,QAAA,CAAU,SAAA,CAAW,OAAO,CAAA,CAG5DS,EAAAA,CAA4C,CAAC,KAAA,CAAO,KAAK,CAAA,CAEzDC,EAAAA,CAAwB,IAA2BF,EAAAA,CAGnDG,EAAAA,CAAqBX,EAAAA,CAAU,QAAQ,CAAA,CAEvCY,EAAAA,CAAgBZ,EAAAA,CAAU,OAAO,CAAA,CAEjCa,EAAAA,CAAkBb,EAAAA,CAAU,QAAA,CAAU,OAAO,CAAA,CAE7Cc,EAAAA,CAAqBd,EAAAA,CAAU,SAAS,CAAA,CAExCe,EAAAA,CAAuBf,EAAAA,CAAU,WAAW,CAAA,CAE5CgB,EAAAA,CAAmBhB,EAAAA,CAAU,QAAA,CAAU,UAAW,OAAA,CAAS,WAAA,CAAa,WAAW,CAAA,CAE1FiB,EAAAA,CAAiB,CAAA,GAAIhB,CAAAA,GACzB,MAAA,CAAO,OAAA,CAAQnB,EAAsB,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACG,CAAAA,CAAU9X,CAAK,CAAA,GAC9D8Y,CAAAA,CAAO,QAAA,CAAS9Y,CAAAA,CAAM,UAAU,CAAA,CAAI,CAAC8X,CAAQ,CAAA,CAAI,EACnD,CAAA,CAEWiC,EAAAA,CAAwBD,EAAAA,CAAe,OAAO,CAAA,CAE9CE,EAAAA,CAA4BF,EAAAA,CAAe,WAAA,CAAa,OAAO,CAAA,CAE/DG,EAAAA,CAA8C,CACzDxD,CAAAA,CAAc,GAAA,CACdA,CAAAA,CAAc,OAChB,CAAA,CAIayD,CAAAA,CAAuC,CAClD,GAAG,MAAA,CAAO,OAAA,CAAQzC,EAAsB,CAAA,CACxC,GAAG,MAAA,CAAO,OAAA,CAAQC,EAAqB,CACzC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACI,CAAAA,CAAU9X,CAAK,CAAA,GAAOA,CAAAA,CAAM,OAAA,CAAU,CAAC8X,CAAQ,CAAA,CAAI,EAAG,CAAA,CAErDqC,EAAAA,CAA2BD,CAAAA,CAAkB,MAAA,CAAQzB,CAAAA,EAChEI,EAAAA,CAAU,QAAQ,CAAA,CAAE,QAAA,CAASJ,CAAE,CACjC,CAAA,CAEa2B,EAAAA,CAA0BF,CAAAA,CAAkB,MAAA,CAAQzB,CAAAA,EAC/DS,EAAAA,CAAgB,QAAA,CAAST,CAAE,CAC7B,CAAA,CAGM4B,EAAAA,CAAW,IAAIC,CAAAA,GACnB1B,EAAAA,CAAiB,OAAA,CAAQ,CAAC,CAACd,CAAAA,CAAU9X,CAAK,CAAA,GACxCA,CAAAA,CAAM,UAAA,EACNsa,CAAAA,CAAY,QAAA,CAASta,CAAAA,CAAM,UAAU,CAAA,EACrC,CAACka,CAAAA,CAAkB,QAAA,CAASpC,CAAQ,CAAA,CAChC,CAACA,CAAQ,CAAA,CACT,EACN,CAAA,CACWyC,EAAAA,CAAwBF,EAAAA,CAAS,IAAA,CAAM,KAAK,EAC5CG,EAAAA,CAAwBH,EAAAA,CAAS,IAAA,CAAM,KAAK,CAAA,CAK5CI,EAAAA,CAAsC,CAAC,KAAA,CAAO,QAAQ,CAAA,CAEtDC,EAAAA,CAAwC,CACnD,GAAG9D,EAAAA,CACH,UAAA,CACA,SAAA,CACA,QACF,CAAA,CAIa+D,EAAAA,CAA8C,CACzD,KAAA,CACA,QAAA,CACA,OAAA,CACA,SAAA,CACA,QACF,CAAA,CAGaC,EAAAA,CAA6C,CAAC,QAAA,CAAU,SAAA,CAAW,QAAQ,CAAA,CAM3EC,EAAAA,CAAiB,CAC5B,KAAA,CAAO,CAAE,QAAA,CAAU,QAAA,CAAU,MAAA,CAAQ,EAAA,CAAI,QAAA,CAAU,IAAK,CAAA,CACxD,QAAA,CAAU,CAAE,QAAA,CAAU,QAAA,CAAU,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC1D,MAAA,CAAQ,CAAE,QAAA,CAAU,QAAA,CAAU,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CACxD,MAAO,CAAE,QAAA,CAAU,MAAA,CAAQ,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CACrD,IAAA,CAAM,CAAE,QAAA,CAAU,MAAA,CAAQ,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CACpD,KAAA,CAAO,CAAE,QAAA,CAAU,MAAA,CAAQ,MAAA,CAAQ,IAAA,CAAM,QAAA,CAAU,KAAM,CAAA,CACzD,OAAA,CAAS,CAAE,QAAA,CAAU,MAAA,CAAQ,OAAQ,EAAA,CAAI,QAAA,CAAU,KAAM,CAAA,CACzD,OAAA,CAAS,CAAE,QAAA,CAAU,MAAA,CAAQ,MAAA,CAAQ,CAAA,CAAG,QAAA,CAAU,KAAM,CAC1D,CAAA,CAEaC,EAAAA,CAAkB,CAAC,QAAA,CAAU,MAAA,CAAQ,MAAM,CAAA,CAC3CC,EAAAA,CAAkBC,CAAAA,EAC7B,MAAA,CAAO,MAAA,CAAOH,EAAAA,CAAgBG,CAAI,CAAA,CACvBC,EAAAA,CAAkBD,CAAAA,EAC7BD,EAAAA,CAAeC,CAAI,CAAA,EAAKH,EAAAA,CAAeG,CAAI,CAAA,CAAE,QAAA,CAElCE,EAAAA,CAAkC,CAC7C,MAAA,CACA,SAAA,CACA,OAAA,CACA,MAAA,CACA,SAAA,CACA,KAAA,CACA,MAAA,CACA,QAAA,CACA,QACF,CAAA,CAKaC,EAAAA,CAAY,CACvB,QAAA,CACA,QAAA,CACA,SAAA,CACA,WAAA,CACA,UAAA,CACA,QAAA,CACA,UACF,CAAA,CACaC,EAAAA,CAAahE,CAAAA,EACvB+D,EAAAA,CAAgC,SAAS/D,CAAAA,CAAK,WAAA,EAAa,CAAA,CASxDiE,EAAAA,CAAc,CAClBC,CAAAA,CACAC,CAAAA,CAAqC,EAAC,GAEtC,MAAA,CAAO,WAAA,CACL,CACE,GAAG,MAAA,CAAO,OAAA,CAAQD,CAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC7C,CAAAA,CAAIzY,CAAK,CAAA,GAC5CA,CAAAA,CAAM,OAAA,CAAU,CAAC,CAACA,CAAAA,CAAM,OAAA,CAASyY,CAAE,CAAqB,CAAA,CAAI,EAC9D,CAAA,CACA,GAAG8C,CACL,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACC,CAAAA,CAAGC,CAAC,CAAA,GAAM,CACpB,CAACD,CAAAA,CAAGC,CAAC,CAAA,CACL,CAACA,CAAAA,CAAGD,CAAC,CACP,CAAC,CACH,CAAA,CAEWE,EAAAA,CAAuBL,EAAAA,CAAY5D,EAAAA,CAAwB,CACtE,CAACjB,CAAAA,CAAS,OAAA,CAASA,CAAAA,CAAS,QAAQ,CAAA,CACpC,CAACA,CAAAA,CAAS,MAAA,CAAQA,CAAAA,CAAS,SAAS,CACtC,CAAC,CAAA,CAEYmF,EAAAA,CAA4BN,EAAAA,CAAY3D,EAAqB,CAAA,CAG7DkE,EAAAA,CAAuD,CAClE,CAACpF,CAAAA,CAAS,QAAQ,EAAGA,CAAAA,CAAS,iBAAA,CAC9B,CAACA,CAAAA,CAAS,cAAc,EAAGA,CAAAA,CAAS,YACpC,CAACA,CAAAA,CAAS,WAAW,EAAGA,CAAAA,CAAS,cAAA,CACjC,CAACA,CAAAA,CAAS,iBAAiB,EAAGA,CAAAA,CAAS,QAAA,CACvC,CAACE,CAAAA,CAAa,UAAU,EAAGA,CAAAA,CAAa,KAAA,CACxC,CAACA,CAAAA,CAAa,SAAS,EAAGA,CAAAA,CAAa,MACzC,EC7gBO,IAAMmF,EAAAA,CAAuB7G,CAAAA,EAClC,IAAI,KAAA,CAAM,GAAGA,CAAM,CAAA,iEAAA,CAAmE,CAAA,CAG3EoD,CAAAA,CAAkB,CAACN,CAAAA,CAAmBC,CAAAA,GACjD,IAAI,KAAA,CAAM,CAAA,QAAA,EAAWA,CAAM,CAAA,WAAA,EAAc,MAAA,CAAOD,CAAQ,CAAC,CAAA,CAAE,CAAA,CAGhDgE,EAAAA,CAAiBhE,CAAAA,EAA4B,IAAI,KAAA,CAAM,CAAA,EAAGA,CAAQ,CAAA,iBAAA,CAAmB,CAAA,CAGrFiE,EAAAA,CAAqBjE,CAAAA,EAChC,IAAI,KAAA,CACF,CAAA,EAAGA,CAAQ,CAAA,kFAAA,CACb,CAAA,CAGWkE,EAAAA,CAAqBlE,CAAAA,EAChC,IAAI,KAAA,CAAM,CAAA,EAAGA,CAAQ,CAAA,qDAAA,CAAuD,CAAA,CAGjEmE,EAAAA,CAAoBzD,CAAAA,EAC/B,IAAI,KAAA,CACF,CAAA,CAAA,EAAIA,CAAK,CAAA,4DAAA,EAA+DA,CAAK,CAAA,UAAA,CAC/E,CAAA,CAGW0D,EAAAA,CAAqB1D,CAAAA,EAChC,IAAI,KAAA,CACF,CAAA,CAAA,EAAIA,CAAK,CAAA,kGAAA,CACX,CAAA,CAIW2D,EAAAA,CAAoBC,CAAAA,EAC/BhD,GAAmB,QAAA,CAASgD,CAAAA,CAAK,QAAQ,CAAA,EACzC9F,EAAAA,CAAa8F,CAAAA,CAAK,KAA0C,CAAA,CACxD,IAAI,KAAA,CAAM,gFAA2E,CAAA,CACrF,IAAA,CAIOC,EAAAA,CAAmB,CAACvE,CAAAA,CAAkBvmB,CAAAA,GAC7C,CAACynB,EAAAA,CAAkB,QAAA,CAASlB,CAAQ,CAAA,EAAK,CAACoB,EAAAA,CAAgB,QAAA,CAASpB,CAAQ,CAAA,CAAU,IAAA,CAAA,CAC5EoB,EAAAA,CAAgB,QAAA,CAASpB,CAAQ,CAAA,EAAK,KAAA,CAAM,OAAA,CAAQvmB,CAAK,CAAA,CAAIA,CAAAA,CAAQ,CAACA,CAAK,CAAA,EAC5E,IAAA,CACT+qB,CAAAA,EACC,OAAOA,CAAAA,EAAQ,SAAA,EACd,OAAOA,CAAAA,EAAQ,QAAA,EAAYA,CAAAA,GAAQ,IAAA,EAAQ,EAAEA,CAAAA,YAAe,IAAA,CACjE,CAAA,CACI,IAAI,KAAA,CACF,CAAA,CAAA,EAAIxE,CAAQ,CAAA,sDAAA,EAAyD,IAAA,CAAK,UAAUvmB,CAAK,CAAC,CAAA,CAC5F,CAAA,CACA,IAAA,CAIOgrB,EAAAA,CAAwBC,CAAAA,EACnC,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiClD,EAAAA,CAAgB,IAAA,CAAK,KAAK,CAAC,CAAA,OAAA,EAAU,MAAA,CAAOkD,CAAI,CAAC,CAAA,CAAA,CAAG,CAAA,CAGpFC,EAAAA,CAAqB,IAChC,IAAI,KAAA,CACF,oGACF,CAAA,CAIWC,CAAAA,CAAiB,CAAC1H,CAAAA,CAA8B2H,CAAAA,CAAcC,IACzE,IAAI,KAAA,CACF,CAAA,EAAGD,CAAI,CAAA,QAAA,EAAW3H,CAAAA,GAAW,OAAA,CAAU,KAAA,CAAQ,QAAQ,CAAA,KAAA,EAAQ4H,CAAAA,CAAM,CAAA,EAAA,EAAKA,CAAG,CAAA,CAAA,CAAA,CAAM,EAAE,CAAA,MAAA,EAAS5H,CAAAA,GAAW,OAAA,CAAU,SAAA,CAAY,oBAAoB,CAAA,CAAA,CACrJ,CAAA,CAGW6H,EAAAA,CAAqB7H,CAAAA,EAChC,IAAI,KAAA,CACF,CAAA,yDAAA,EAA4DA,CAAM,CAAA,uCAAA,EAA0CA,CAAAA,GAAW,WAAa,kEAAA,CAAgE,EAAE,CAAA,CAAA,CACxM,CAAA,CAGW8H,EAAAA,CAAiB,CAACtE,CAAAA,CAAeuE,CAAAA,GAC5C,IAAI,KAAA,CACF,CAAA,CAAA,EAAIvE,CAAK,CAAA,sCAAA,EAAyCuE,CAAAA,CAAI,MAAM,CAAA,mDAAA,EAAsDA,CAAAA,CAAI,MAAM,CAAA,EAAA,CAC9H,CAAA,CAGWC,EAAAA,CAAkB,CAACxE,CAAAA,CAAeyE,CAAAA,GAC7C,IAAI,KAAA,CAAM,CAAA,CAAA,EAAIzE,CAAK,CAAA,kBAAA,EAAqByE,CAAM,+BAA+B,CAAA,CC1E/EC,mBAAAA,CAAM,MAAA,CAAOC,mBAAG,CAAA,CAChBD,mBAAAA,CAAM,MAAA,CAAOE,mBAAQ,CAAA,CACrBF,mBAAAA,CAAM,MAAA,CAAOG,mBAAa,CAAA,CAC1BH,mBAAAA,CAAM,MAAA,CAAOI,mBAAO,CAAA,CAGb,IAAMC,CAAAA,CAAchsB,CAAAA,EAAsC,CAC/D,GAAI,CAACqT,EAAAA,CAAcrT,CAAK,CAAA,CAAG,OAAO,MAAA,CAClC,IAAMokB,CAAAA,CAAIpkB,EACV,OACE,KAAA,GAASokB,CAAAA,EACT,OAAA,GAAWA,CAAAA,EACX,MAAA,GAAUA,CAAAA,EACV,MAAA,GAAUA,CAAAA,EACV,MAAA,GAAUA,CAAAA,EACV,OAAA,GAAWA,CAAAA,EACX,KAAA,GAASA,CAEb,CAAA,CAGa6H,EAAAA,CAAe,KAAA,CAKfC,EAAAA,CAAcC,CAAAA,EAA4C,CACrE,GAAIA,CAAAA,CAAO,GAAA,GAAQ,MAAA,CACjB,MAAM,IAAI,KAAA,CAAM,gEAAgE,CAAA,CAClF,IAAMC,CAAAA,CAAOT,mBAAAA,CAAMQ,CAAAA,CAAO,GAAG,CAAA,CAAE,EAAA,CAAGA,CAAAA,CAAO,QAAQ,CAAA,CACjD,GAAI,CAACC,CAAAA,CAAK,OAAA,EAAQ,CAAG,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,MAAA,CAAOD,CAAAA,CAAO,GAAG,CAAC,CAAA,CAAE,CAAA,CAC7E,OAAOC,CACT,CAAA,CAOMC,EAAAA,CAAgB,CACpBC,CAAAA,CACArF,IAEC,MAAA,CAAO,OAAA,CAAQqF,CAAK,CAAA,CAA+B,MAAA,CAClD,CAACC,CAAAA,CAAO,CAAC9C,CAAAA,CAAM+C,CAAM,CAAA,GACnBlD,EAAAA,CAAeG,CAAI,CAAA,CAAE,QAAA,GAAaxC,CAAAA,CAC9BsF,CAAAA,CAAQC,CAAAA,CAASlD,EAAAA,CAAeG,CAAI,CAAA,CAAE,MAAA,CACtC8C,CAAAA,CACN,CACF,CAAA,CAEIE,EAAAA,CAAO,yBAAA,CAGAC,EAAAA,CAAe,CAC1BN,CAAAA,CACAE,EACAK,CAAAA,CACAC,CAAAA,GACgB,CAChB,IAAMC,CAAAA,CAASR,EAAAA,CAAcC,CAAAA,CAAO,QAAQ,CAAA,CACtCQ,CAAAA,CAAOT,EAAAA,CAAcC,CAAAA,CAAO,MAAM,CAAA,CAClCS,CAAAA,CAAUV,EAAAA,CAAcC,CAAAA,CAAO,MAAM,CAAA,CACvCU,CAAAA,CAAOrB,mBAAAA,CAAM,GAAA,CAAIS,CAAAA,CAAK,EAAA,CAAGQ,CAAI,CAAA,CAAE,MAAA,CAAOH,EAAI,CAAC,CAAA,CAC/C,OAAII,CAAAA,GAAQG,CAAAA,CAAOA,CAAAA,CAAK,GAAA,CAAIL,CAAAA,CAAYE,CAAAA,CAAQ,OAAO,CAAA,CAAA,CACnDC,CAAAA,GAAME,CAAAA,CAAOA,CAAAA,CAAK,GAAA,CAAIL,CAAAA,CAAYG,CAAAA,CAAM,KAAK,CAAA,CAAA,CAC7CC,CAAAA,GAASC,CAAAA,CAAOA,CAAAA,CAAK,GAAA,CAAIL,CAAAA,CAAYI,CAAAA,CAAU,GAAA,CAAM,aAAa,CAAA,CAAA,CAC/DpB,mBAAAA,CAAM,EAAA,CAAGqB,CAAAA,CAAK,MAAA,CAAOP,EAAI,EAAGG,CAAI,CACzC,CAAA,CAEMK,EAAAA,CAAoB,CAAA,EAAwC,KAAA,GAAS,CAAA,EAAK,OAAA,GAAW,CAAA,CAE9EC,EAAAA,CAAc,CAAIZ,CAAAA,CAAyBK,CAAAA,GACtDA,CAAAA,GAAc,EAAA,CAAK,CAAE,GAAA,CAAKL,CAAM,CAAA,CAAI,CAAE,KAAA,CAAOA,CAAM,CAAA,CAGxCa,EAAAA,CAAmBC,CAAAA,EAC9BH,EAAAA,CAAcG,CAAI,CAAA,CAAK,KAAA,GAASA,CAAAA,CAAO,CAACA,CAAAA,CAAK,GAAA,CAAK,EAAE,CAAA,CAAI,CAACA,CAAAA,CAAK,KAAA,CAAO,CAAC,CAAA,CAAK,IAAA,CAEhEC,EAAAA,CAAmB,CAAA,EAC9B,MAAA,GAAU,CAAA,EAAK,MAAA,GAAU,CAAA,EAAK,MAAA,GAAU,CAAA,CAC7BC,EAAAA,CAAiB,CAAA,EAAkC,OAAA,GAAW,CAAA,EAAK,KAAA,GAAS,CAAA,CAG5EC,EAAAA,CAAeH,CAAAA,EAC1B,MAAA,GAAUA,CAAAA,CAAOA,CAAAA,CAAK,IAAA,CAAO,SAAUA,CAAAA,CAAOA,CAAAA,CAAK,IAAA,CAAOA,CAAAA,CAAK,IAAA,CAG3DI,EAAAA,CAAcJ,CAAAA,EAAiC,CACnD,IAAM3D,CAAAA,CAAO8D,EAAAA,CAAYH,CAAI,CAAA,CAC7B,GAAI,OAAO3D,CAAAA,EAAS,QAAA,EAAY,CAACE,EAAAA,CAAa,QAAA,CAASF,CAAI,CAAA,CACzD,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,MAAA,CAAOA,CAAI,CAAC,CAAA,CAAA,CAAG,EACzD,OAAOA,CACT,CAAA,CAGMgE,EAAAA,CAAsB,CAAChE,CAAAA,CAAkB0C,CAAAA,GACzC1C,CAAAA,GAAS,MAAA,CACH0C,CAAAA,CAAO,SAAA,GAAc,QAAA,CAAW,MAAA,CAAS,SAAA,CAC5C1C,CAAAA,CAIHiE,EAAAA,CAAqB,CACzBN,CAAAA,CACAjB,CAAAA,GAC+B,CAC/B,IAAMwB,CAAAA,CAAMzB,EAAAA,CAAWC,CAAM,CAAA,CACvB1C,CAAAA,CAAO+D,EAAAA,CAAWJ,CAAI,CAAA,CAEtBQ,CAAAA,CAAYnE,IAAS,SAAA,CAAY,MAAA,CAASA,CAAAA,CAC5C2C,CAAAA,CAAOuB,CAAAA,CACP,MAAA,GAAUP,CAAAA,CAAMhB,CAAAA,CAAOuB,CAAAA,CAAI,QAAA,CAAS,CAAA,CAAGC,CAAQ,CAAA,CAC1C,MAAA,GAAUR,CAAAA,GAAMhB,CAAAA,CAAOuB,CAAAA,CAAI,GAAA,CAAI,CAAA,CAAGC,CAAQ,CAAA,CAAA,CACnD,IAAMC,CAAAA,CAAMJ,EAAAA,CAAoBhE,CAAAA,CAAM0C,CAAM,CAAA,CAC5C,OAAO,CAACC,CAAAA,CAAK,QAAQyB,CAAG,CAAA,CAAGzB,CAAAA,CAAK,KAAA,CAAMyB,CAAG,CAAC,CAC5C,CAAA,CAMaC,EAAAA,CAAkB,CAC7BV,CAAAA,CACAjB,CAAAA,GACgB,CAChB,IAAM4B,CAAAA,CAAUZ,EAAAA,CAAaC,CAAI,CAAA,CACjC,GAAIW,CAAAA,CAAS,OAAOrB,EAAAA,CAAaR,EAAAA,CAAWC,CAAM,CAAA,CAAG,GAAG4B,CAAAA,CAAS5B,CAAAA,CAAO,QAAQ,CAAA,CAChF,GAAImB,EAAAA,CAAWF,CAAI,CAAA,CAAG,CACpB,IAAMY,CAAAA,CAAS,OAAA,GAAWZ,CAAAA,CAAOA,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,GAAA,CAC7C,CAAC/lB,CAAAA,CAAO0jB,CAAG,CAAA,CAAI2C,EAAAA,CAAmBM,CAAAA,CAAQ7B,CAAM,CAAA,CACtD,OAAO,OAAA,GAAWiB,CAAAA,CAAO/lB,CAAAA,CAAQ0jB,CACnC,CACA,MAAM,IAAI,KAAA,CACR,qFACF,CACF,CAAA,CAOakD,EAAAA,CAA0B,CACrCb,CAAAA,CACA7G,CAAAA,CACA4F,CAAAA,GACgB,CAChB,GAAIkB,EAAAA,CAAaD,CAAI,CAAA,CAAG,CACtB,GAAM,CAAC/lB,CAAAA,CAAO0jB,CAAG,CAAA,CAAI2C,EAAAA,CAAmBN,CAAAA,CAAMjB,CAAM,CAAA,CAE9C+B,CAAAA,CAAWzH,EAAAA,CAAiB,CAAE,YAAA,CAAcF,CAAS,CAAC,CAAA,EAAG,OAAA,EAAWA,CAAAA,CAC1E,OAAOyC,EAAAA,CAAsB,QAAA,CAASkF,CAAQ,CAAA,CAAI7mB,CAAAA,CAAQ0jB,CAC5D,CACA,OAAO+C,EAAAA,CAAgBV,CAAAA,CAAMjB,CAAM,CACrC,CAAA,CAMagC,EAAAA,CAAuB,CAClCf,CAAAA,CACAjB,CAAAA,GAC+B,CAC/B,GAAIkB,EAAAA,CAAaD,CAAI,CAAA,CAAG,OAAOM,EAAAA,CAAmBN,CAAAA,CAAMjB,CAAM,CAAA,CAC9D,IAAM4B,CAAAA,CAAUZ,EAAAA,CAAaC,CAAI,CAAA,CACjC,GAAIW,CAAAA,CAAS,CACX,IAAMJ,CAAAA,CAAMzB,EAAAA,CAAWC,CAAM,CAAA,CACvBiC,CAAAA,CAAQ1B,EAAAA,CAAaiB,CAAAA,CAAK,GAAGI,CAAAA,CAAS5B,CAAAA,CAAO,QAAQ,CAAA,CAC3D,OAAO4B,CAAAA,CAAQ,CAAC,CAAA,GAAM,EAAA,CAAK,CAACK,CAAAA,CAAOT,CAAG,CAAA,CAAI,CAACA,CAAAA,CAAKS,CAAK,CACvD,CACA,MAAM5D,EAAAA,CAAkB,QAAQ,CAClC,CAAA,CC3LO,IAAM6D,EAAAA,CAAe,CAAC,OAAA,CAAS,MAAA,CAAQ,MAAM,CAAA,CAGvCtP,EAAAA,CAAWpa,CAAAA,EACtB,OAAOA,CAAAA,CAAO,IAAA,EAAS,QAAA,EAAYA,CAAAA,CAAO,IAAA,GAAS,EAAA,CAGxC2pB,EAAAA,CAAU3pB,CAAAA,EACrBoa,EAAAA,CAAQpa,CAAM,CAAA,CAAI8d,CAAAA,CAAc9d,CAAAA,CAAO,IAAI,CAAA,CAAI,KASpC4pB,EAAAA,CAAc,CAAI5pB,CAAAA,CAAgB6pB,CAAAA,GAA8B,CAC3E,GAAI7pB,CAAAA,CAAO,KAAA,GAAU,MAAA,CAAW,OAAO6pB,CAAAA,CAAK,KAAA,CAAM7pB,CAAAA,CAAO,KAAK,CAAA,CAC9D,GAAIA,CAAAA,CAAO,IAAA,GAAS,MAAA,CAAW,OAAO6pB,CAAAA,CAAK,IAAA,CAAK7pB,CAAAA,CAAO,IAAA,CAAMA,CAAAA,CAAO,YAAY,CAAA,CAChF,GAAIoa,EAAAA,CAAQpa,CAAM,EAAG,OAAO6pB,CAAAA,CAAK,IAAA,CAAK7pB,CAAAA,CAAO,IAAI,CAAA,CACjD,MAAM,IAAI,KAAA,CAAM,kCAAkC,CACpD,CAAA,CAEa8pB,EAAAA,CAAiBrK,CAAAA,EAC5B/Q,EAAAA,CAAc+Q,CAAC,CAAA,GACbA,CAAAA,CAAa,KAAA,GAAU,MAAA,EACvBrF,EAAAA,CAAQqF,CAAW,CAAA,EACnB,OAAQA,CAAAA,CAAa,IAAA,EAAS,QAAA,CAAA,CAOrBsK,EAAAA,CAAc,CACzB7I,CAAAA,CACA8I,EACAC,CAAAA,GACc,CACd,GAAI,CAACA,CAAAA,EAAY,CAAC,MAAA,CAAO,MAAA,CAAOA,CAAAA,CAAU/I,CAAI,CAAA,CAAG,CAC/C,GAAI8I,CAAAA,GAAa,IAAA,CAAM,OAAO,IAAA,CAC9B,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB9I,CAAI,CAAA,CAAA,CAAG,CACjD,CACA,IAAMgJ,CAAAA,CAAQD,CAAAA,CAAS/I,CAAI,CAAA,CAC3B,OAAOgJ,CAAAA,GAAU,MAAA,CAAY,IAAA,CAAOA,CACtC,CAAA,CAGaC,EAAAA,CAAiB,CAC5BjJ,CAAAA,CACA8I,CAAAA,CACA9K,CAAAA,GACS,CACT,GAAI8K,CAAAA,GAAa,IAAA,CAAM,OAAO,IAAA,CAC9B,MAAM,IAAI,KAAA,CACR,CAAA,oBAAA,EAAuB9I,CAAI,CAAA,sEAAA,EAAoEhC,CAAI,CAAA,GAAA,CACrG,CACF,CAAA,CAGakL,EAAAA,CAAkB,CAC7BpqB,CAAAA,CACAoe,CAAAA,CACAY,EACAiL,CAAAA,GAEAL,EAAAA,CAAqB5pB,CAAAA,CAAQ,CAC3B,KAAA,CAAQ3E,CAAAA,EAAUA,CAAAA,CAClB,IAAA,CAAM,CAAC6lB,CAAAA,CAAM8I,CAAAA,GAAaD,EAAAA,CAAY7I,CAAAA,CAAM8I,CAAAA,CAAUC,CAAQ,CAAA,CAC9D,IAAA,CAAOlM,CAAAA,EAAQgB,EAAAA,CAAShB,CAAAA,CAAKK,CAAAA,CAAQY,CAAO,CAAA,EAAK,IACnD,CAAC,CAAA,CC1EH,IAAMqL,EAAAA,CAAkBC,CAAAA,EACtB,OAAOA,GAAM,QAAA,EAAYA,CAAAA,GAAM,IAAA,CAG3BC,EAAAA,CAAYxI,CAAAA,EAAiC,IAAA,GAAQA,CAAAA,EAAQ,MAAA,GAAUA,CAAAA,EAAQ,MAAA,GAAUA,CAAAA,CAElFyI,EAAAA,CAAkBzI,CAAAA,EAC7B,eAAA,GAAmBA,CAAAA,EAAQ,WAAA,GAAeA,CAAAA,CAWtC0I,EAAAA,CAAc1I,CAAAA,EAAgC,CAClD,GAAI,CAAC,KAAA,CAAO,KAAK,CAAA,CAAY,OAAA,CAAS9iB,CAAAA,EACpC,KAAA,CAAM,OAAA,CAAQ8iB,CAAAA,CAAK9iB,CAAG,CAAC,CAAA,CAClB8iB,CAAAA,CAAK9iB,CAAG,CAAA,CAAkB,GAAA,CAAI,CAACyrB,CAAAA,CAAOjuB,CAAAA,IAAW,CAAE,GAAA,CAAAwC,CAAAA,CAAK,KAAA,CAAAxC,CAAAA,CAAO,KAAA,CAAAiuB,CAAAA,CAAO,MAAA,CAAQ,KAAM,CAAA,CAAE,CAAA,CACvF,EACN,CAAA,CACA,GAAIH,EAAAA,CAASxI,CAAI,CAAA,CACZ,CAAC,IAAA,CAAM,MAAA,CAAQ,MAAM,CAAA,CAAY,OAAA,CAAS9iB,CAAAA,EACzC8iB,CAAAA,CAAK9iB,CAAG,CAAA,GAAM,MAAA,CAAY,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,KAAA,CAAO8iB,CAAAA,CAAK9iB,CAAG,CAAA,CAAgB,MAAA,CAAQ,KAAM,CAAC,CAAA,CAAI,EACtF,CAAA,CACA,EAAC,CACL,GAAI,CAAC,WAAA,CAAa,QAAQ,CAAA,CAAY,OAAA,CAASA,GAC7C8iB,CAAAA,CAAK9iB,CAAG,CAAA,GAAM,MAAA,CAAY,CAAC,CAAE,GAAA,CAAAA,CAAAA,CAAK,KAAA,CAAO8iB,CAAAA,CAAK9iB,CAAG,CAAA,CAAgB,MAAA,CAAQ,IAAK,CAAC,CAAA,CAAI,EACrF,CACF,CAAA,CAEa0rB,EAAAA,CAAiB5I,CAAAA,EAC5B,KAAA,GAASA,CAAAA,EAAQ,KAAA,GAASA,CAAAA,EAAQwI,EAAAA,CAASxI,CAAI,CAAA,CAIpC6I,CAAAA,CAAiB,CAC5BxL,CAAAA,CACAyL,CAAAA,CACAC,CAAAA,GACS,CACT,GAAI,CAACT,EAAAA,CAAejL,CAAS,CAAA,CAAG,OAChC,IAAM2C,CAAAA,CAAO3C,CAAAA,CACP2L,CAAAA,CAAQF,CAAAA,CAAM9I,CAAAA,CAAM+I,CAAU,CAAA,CAC9BE,CAAAA,CAAQD,CAAAA,GAAU,MAAA,CAAYD,CAAAA,CAAQC,CAAAA,CAC5C,IAAA,GAAW,CAAE,KAAA,CAAAL,CAAAA,CAAO,MAAA,CAAApN,CAAO,CAAA,GAAKmN,GAAW1I,CAAI,CAAA,CACxCzE,CAAAA,CACI0N,CAAAA,GAAU,KAAA,EAAOJ,CAAAA,CAAeF,CAAAA,CAAOG,CAAAA,CAAOG,CAAK,CAAA,CAD/CJ,CAAAA,CAAeF,CAAAA,CAAOG,CAAAA,CAAOC,CAAK,EAGnD,CAAA,CAGaG,EAAAA,CAAgB,CAC3B7L,CAAAA,CACA8L,CAAAA,CACAH,CAAAA,CACAD,CAAAA,GACY,CACZ,IAAIK,CAAAA,CAAQ,KAAA,CACZ,OAAAP,CAAAA,CACExL,CAAAA,CACA,CAAC2C,EAAMrD,CAAAA,IACD,CAACyM,CAAAA,EAASD,CAAAA,CAAKnJ,CAAAA,CAAMrD,CAAE,CAAA,GAAGyM,CAAAA,CAAQ,IAAA,CAAA,CAC/BA,CAAAA,CAAQ,KAAA,CAAQJ,CAAAA,GAAQhJ,CAAAA,CAAMrD,CAAE,GAEzCoM,CACF,CAAA,CACOK,CACT,CAAA,CAKaC,EAAAA,CAAe,CAC1BhM,CAAAA,CACAiM,CAAAA,CAKAP,CAAAA,GACc,CACd,GAAI,CAACT,EAAAA,CAAejL,CAAS,EAAG,OAAOA,CAAAA,CACvC,IAAMV,CAAAA,CAAKoM,CAAAA,CACLQ,CAAAA,CAAQ,CAAE,GAAIlM,CAA4B,CAAA,CAC1C2C,CAAAA,CAAOsJ,CAAAA,CAAK,OAAA,CAAUA,CAAAA,CAAK,OAAA,CAAQC,CAAAA,CAAO5M,CAAE,CAAA,CAAI4M,CAAAA,CAChDC,CAAAA,CAAQd,EAAAA,CAAW1I,CAAI,CAAA,CACvBiJ,CAAAA,CAAQO,CAAAA,CAAM,IAAA,CAAMC,CAAAA,EAASA,CAAAA,CAAK,MAAM,CAAA,EAAKH,EAAK,KAAA,CAAQA,CAAAA,CAAK,KAAA,CAAMtJ,CAAAA,CAAMrD,CAAE,CAAA,CAAIA,CAAAA,CACvF,IAAA,IAAWzf,CAAAA,IAAO,CAAC,KAAA,CAAO,KAAK,CAAA,CACzB,KAAA,CAAM,OAAA,CAAQ8iB,CAAAA,CAAK9iB,CAAG,CAAC,CAAA,GAAG8iB,CAAAA,CAAK9iB,CAAG,CAAA,CAAI,CAAC,GAAI8iB,CAAAA,CAAK9iB,CAAG,CAAQ,CAAA,CAAA,CACjE,IAAA,GAAW,CAAE,IAAAA,CAAAA,CAAK,KAAA,CAAAxC,CAAAA,CAAO,KAAA,CAAAiuB,CAAAA,CAAO,MAAA,CAAApN,CAAO,CAAA,GAAKiO,CAAAA,CAAO,CACjD,GAAIjO,CAAAA,EAAU0N,CAAAA,GAAU,KAAA,CAAO,SAC/B,IAAMS,CAAAA,CAASL,EAAAA,CAAaV,CAAAA,CAAOW,CAAAA,CAAM/N,CAAAA,CAAU0N,CAAAA,CAActM,CAAE,CAAA,CAC/DjiB,CAAAA,GAAU,MAAA,CAAWslB,CAAAA,CAAK9iB,CAAG,CAAA,CAAIwsB,CAAAA,CAC/B1J,EAAK9iB,CAAG,CAAA,CAAkBxC,CAAK,CAAA,CAAIgvB,EAC3C,CACA,IAAMhwB,CAAAA,CAAS4vB,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,KAAA,CAAMtJ,CAAAA,CAAMrD,CAAE,CAAA,CAAKqD,CAAAA,CACpD,OAAOtmB,CAAAA,GAAWsmB,CAAAA,EAAQ2J,EAAAA,CAAS3J,CAAAA,CAAM3C,CAA0B,CAAA,CAAIA,CAAAA,CAAY3jB,CACrF,CAAA,CAIMiwB,EAAAA,CAAW,CAAC3J,CAAAA,CAAqB4J,CAAAA,GAAqC,CAC1E,IAAM1jB,CAAAA,CAAO,MAAA,CAAO,IAAA,CAAK8Z,CAAI,CAAA,CAC7B,OAAI9Z,CAAAA,CAAK,MAAA,GAAW,MAAA,CAAO,IAAA,CAAK0jB,CAAQ,CAAA,CAAE,MAAA,CAAe,KAAA,CAClD1jB,CAAAA,CAAK,KAAA,CAAOhJ,CAAAA,EAAQ,CACzB,GAAM,CAACqmB,CAAAA,CAAGC,CAAC,CAAA,CAAI,CAACxD,CAAAA,CAAK9iB,CAAG,CAAA,CAAG0sB,CAAAA,CAAS1sB,CAAG,CAAC,CAAA,CACxC,OAAIqmB,CAAAA,GAAMC,CAAAA,CAAU,IAAA,CAElB,KAAA,CAAM,OAAA,CAAQD,CAAC,CAAA,EACf,KAAA,CAAM,OAAA,CAAQC,CAAC,CAAA,EACfD,CAAAA,CAAE,MAAA,GAAWC,CAAAA,CAAE,MAAA,EACfD,CAAAA,CAAE,KAAA,CAAM,CAACsG,CAAAA,CAAMnvB,CAAAA,GAAUmvB,CAAAA,GAASrG,CAAAA,CAAE9oB,CAAK,CAAC,CAE9C,CAAC,CACH,CAAA,CAOMovB,GAAW,CAAClE,CAAAA,CAAgB9H,CAAAA,GAChCnR,EAAAA,CAAciZ,CAAK,CAAA,CACf,MAAA,CAAO,WAAA,CACL,MAAA,CAAO,OAAA,CAAQA,CAAgC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC7C,CAAAA,CAAM+C,CAAM,CAAA,GAAM,CACvE/C,CAAAA,CACAgF,EAAAA,CAAcjC,CAAM,CAAA,CAAIhI,CAAAA,CAAGgI,CAAAA,CAAQ9C,EAAAA,CAAeD,CAAI,CAAA,CAAI,OAAA,CAAU,QAAQ,EAAI+C,CAClF,CAAC,CACH,CAAA,CACAF,CAAAA,CAEAmE,EAAAA,CAAU,CAACrD,CAAAA,CAAe5I,CAAAA,GAA2B,CACzD,IAAMuJ,CAAAA,CAAU/B,CAAAA,CAAWoB,CAAI,CAAA,CAAID,EAAAA,CAAaC,CAAI,CAAA,CAAI,IAAA,CACxD,OAAOW,CAAAA,CAAUb,EAAAA,CAAYsD,EAAAA,CAASzC,CAAAA,CAAQ,CAAC,CAAA,CAAGvJ,CAAE,CAAA,CAAoBuJ,CAAAA,CAAQ,CAAC,CAAC,CAAA,CAAIX,CACxF,CAAA,CAOasD,EAAAA,CAAiB,CAAoChK,CAAAA,CAASlC,CAAAA,GAAqB,CAC9F,IAAMmM,CAAAA,CAAS,cAAA,GAAkBjK,CAAAA,CACjC,GAAI,CAACiK,CAAAA,EAAU,EAAE,UAAA,GAAcjK,CAAAA,CAAAA,CAAO,OAAOA,CAAAA,CAC7C,IAAIkK,CAAAA,CAA+BlK,CAAAA,CACnC,GAAIiK,CAAAA,EAAUjK,CAAAA,CAAK,KAAA,GAAU,MAAA,CAAW,CACtC,IAAM1mB,EAAQ,KAAA,CAAM,OAAA,CAAQ0mB,CAAAA,CAAK,KAAK,CAAA,CAClCA,CAAAA,CAAK,KAAA,CAAM,GAAA,CAAKtC,CAAAA,EAAMqM,EAAAA,CAAQrM,CAAAA,CAAGI,CAAE,CAAC,CAAA,CACpCiM,EAAAA,CAAQ/J,CAAAA,CAAK,KAAA,CAAOlC,CAAE,CAAA,CAC1BoM,CAAAA,CAAM,CAAE,GAAGA,CAAAA,CAAK,KAAA,CAAA5wB,CAAM,EACxB,CACA,GAAIyuB,EAAAA,CAAc/H,CAAAA,CAAK,MAAM,CAAA,CAAG,CAC9B,IAAM3T,CAAAA,CAAS4d,CAAAA,CACX,CACE,GAAGjK,CAAAA,CAAK,MAAA,CACR,GAAIA,CAAAA,CAAK,MAAA,CAAO,KAAA,GAAU,MAAA,EAAa,CAAE,KAAA,CAAO+J,EAAAA,CAAQ/J,CAAAA,CAAK,MAAA,CAAO,KAAA,CAAOlC,CAAE,CAAE,CACjF,CAAA,CACAkC,CAAAA,CAAK,MAAA,CACTkK,CAAAA,CAAM,CAAE,GAAGA,CAAAA,CAAK,OAAQpM,CAAAA,CAAGzR,CAAAA,CAAkC4d,CAAAA,CAAS,OAAA,CAAU,QAAQ,CAAE,EAC5F,CACA,OAAIlC,EAAAA,CAAcmC,CAAG,CAAA,GAAGA,CAAAA,CAAMpM,CAAAA,CAAGoM,CAAAA,CAAK,OAAO,CAAA,CAAA,CACtCA,CACT,CAAA,CAKaC,EAAAA,CAAenK,CAAAA,EAAgD,CAC1E,IAAMoJ,CAAAA,CAAsB,EAAC,CAC7B,OAAAY,EAAAA,CAAehK,CAAAA,CAAM,CAAC/hB,EAAQmsB,CAAAA,IAC5BhB,CAAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAAnrB,CAAAA,CAAQ,IAAA,CAAAmsB,CAAK,CAAC,CAAA,CACpBnsB,CAAAA,CACR,CAAA,CACMmrB,CACT,CAAA,CAKaiB,EAAAA,CAAiBrK,CAAAA,EAC5BmK,EAAAA,CAAYnK,CAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA/hB,CAAAA,CAAQ,IAAA,CAAAmsB,CAAK,CAAA,GACxC/R,EAAAA,CAAQpa,CAAM,CAAA,CAAI,CAAC,CAAE,GAAA,CAAKA,CAAAA,CAAO,IAAA,CAAM,IAAA,CAAAmsB,CAAK,CAAC,CAAA,CAAI,EACnD,CAAA,CAGWE,EAAAA,CAAatK,CAAAA,EACxBqK,EAAAA,CAAcrK,CAAI,CAAA,CAAE,GAAA,CAAKuK,CAAAA,EAAMA,CAAAA,CAAE,GAAG,CAAA,CAIzBC,EAAAA,CAAexK,CAAAA,EAA4C,CACtE,GAAI,KAAA,CAAM,OAAA,CAAQA,CAAAA,CAAK,OAAO,CAAA,CACzBA,EAAK,OAAA,CAAkC,OAAA,CAASyK,CAAAA,EAC/C,OAAOA,CAAAA,EAAG,KAAA,EAAU,QAAA,CAAW,CAACA,CAAAA,CAAE,KAAK,CAAA,CAAI,EAC7C,CAAA,CACA,EAAC,CACL,GAAI,OAAQzK,CAAAA,CAAK,SAAA,EAAmC,KAAA,EAAU,QAAA,CAC1D,CAAEA,CAAAA,CAAK,SAAA,CAAgC,KAAK,CAAA,CAC5C,EACN,CAAA,CAMa0K,EAAkB1K,CAAAA,EAAyD,CACtF,IAAMa,CAAAA,CAAS,IAAI,GAAA,CACnB,OAAI,KAAA,GAASb,CAAAA,EAAMa,CAAAA,CAAO,GAAA,CAAI,KAAK,CAAA,CAC/B,KAAA,GAASb,CAAAA,EAAMa,CAAAA,CAAO,GAAA,CAAI,KAAK,CAAA,CAC/B2H,EAAAA,CAASxI,CAAI,CAAA,EAAGa,CAAAA,CAAO,GAAA,CAAI,IAAI,CAAA,CAC/B,eAAA,GAAmBb,CAAAA,EAAMa,CAAAA,CAAO,GAAA,CAAI,OAAO,CAAA,CAC3C,cAAA,GAAkBb,CAAAA,EAAMa,CAAAA,CAAO,GAAA,CAAI,MAAM,CAAA,CACzC,WAAA,GAAeb,CAAAA,CAAMa,CAAAA,CAAO,GAAA,CAAI,WAAW,CAAA,CACtC,UAAA,GAAcb,CAAAA,EAAMa,CAAAA,CAAO,GAAA,CAAI,OAAO,CAAA,CACxCA,CAAAA,CAAO,IAAA,GAAS,CAAA,CAAI,CAAC,GAAGA,CAAM,CAAA,CAAE,CAAC,CAAA,CAAI,IAC9C,CAAA,CAGa8J,EAASC,CAAAA,EACpBA,CAAAA,CAAW,MAAA,GAAW,CAAA,CAClB,IAAA,CACAA,CAAAA,CAAW,MAAA,GAAW,CAAA,CACpBA,CAAAA,CAAW,CAAC,CAAA,CACZ,CAAE,GAAA,CAAK,CAAC,GAAGA,CAAU,CAAE,CAAA,CAGlBC,EAAAA,CAASD,CAAAA,EACpBA,CAAAA,CAAW,MAAA,GAAW,CAAA,CAClB,KAAA,CACAA,CAAAA,CAAW,MAAA,GAAW,CAAA,CACpBA,CAAAA,CAAW,CAAC,CAAA,CACZ,CAAE,GAAA,CAAK,CAAC,GAAGA,CAAU,CAAE,CAAA,CCtO/B,IAAME,EAAAA,CAAc9K,CAAAA,EAClBmK,EAAAA,CAAYnK,CAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAE,MAAA,CAAA/hB,CAAO,CAAA,GAClC,OAAOA,CAAAA,CAAO,IAAA,EAAS,QAAA,CAAW,CAACA,CAAoB,CAAA,CAAI,EAC7D,CAAA,CAUW8sB,EAAAA,CAAe,CAC1B1N,EACA,CAAE,QAAA,CAAA2N,CAAAA,CAAW,KAAM,CAAA,CAAyB,EAAC,GAChC,CACb,IAAMC,CAAAA,CAAQ,IAAI,GAAA,CAClB,OAAApC,CAAAA,CAAexL,CAAAA,CAAY2C,CAAAA,EAAS,CAClC,IAAA,IAAWkL,CAAAA,IAASJ,EAAAA,CAAW9K,CAAI,CAAA,CAAA,CAC7B,CAACgL,CAAAA,EAAYE,CAAAA,CAAM,YAAA,GAAiB,IAAA,GAAMD,CAAAA,CAAM,GAAA,CAAIC,CAAAA,CAAM,IAAI,EACtE,CAAC,CAAA,CACM,CAAC,GAAGD,CAAK,CAAA,CAAE,IAAA,EACpB,CAAA,CAOaE,EAAAA,CAAW,CAAC9N,CAAAA,CAAsB6K,CAAAA,GAAmD,CAEhG,IAAMkD,CAAAA,CAAWntB,CAAAA,EAA2D,CAC1E,GAAI,OAAOA,CAAAA,CAAO,IAAA,EAAS,QAAA,EAAY,CAAC,MAAA,CAAO,MAAA,CAAOiqB,CAAAA,CAAUjqB,CAAAA,CAAO,IAAI,EAAG,OAAOA,CAAAA,CACrF,GAAM,CAAE,IAAA,CAAAotB,CAAAA,CAAM,YAAA,CAAcC,CAAAA,CAAW,GAAGC,CAAK,CAAA,CAAIttB,CAAAA,CACnD,OAAO,CAAE,GAAGstB,CAAAA,CAAM,KAAA,CAAOvD,EAAAA,CAAYqD,CAAAA,CAAM,IAAA,CAAMnD,CAAQ,CAAE,CAC7D,CAAA,CAGA,OAAOmB,EAAAA,CAAahM,CAAAA,CAAW,CAC7B,OAAA,CAAU2C,CAAAA,EAASgK,GAAeA,EAAAA,CAAehK,CAAAA,CAAMoL,CAAO,CAAA,CAAGA,CAAO,CAC1E,CAAC,CACH,EClDA,IAAMI,EAAAA,CAAW,MAAA,CAAO,MAAA,CAAO,gBAAgB,CAAA,CAElCC,GAAkBnyB,CAAAA,EAA0B,CACvD,GAAIA,CAAAA,CAAQkyB,EAAAA,EAAYlyB,CAAAA,CAAQ,CAACkyB,EAAAA,CAC/B,MAAM,IAAI,UAAA,CACR,CAAA,OAAA,EAAUlyB,CAAK,CAAA,iFAAA,CACjB,CAAA,CACF,OAAO,MAAA,CAAOA,CAAK,CACrB,CAAA,CAEaoyB,EAAAA,CAAYC,CAAAA,EACnB,OAAOA,CAAAA,EAAQ,QAAA,CAAiBF,EAAAA,CAAeE,CAAG,CAAA,CAClD,OAAOA,CAAAA,EAAQ,UAAYA,CAAAA,CAAI,IAAA,EAAK,GAAM,EAAA,EAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAOA,CAAG,CAAC,CAAA,CACtE,MAAA,CAAOA,CAAG,CAAA,CACZA,CAAAA,CAIIC,EAAAA,CAAa,CAACD,CAAAA,CAAcjH,CAAAA,GAAgC,CACvE,GAAIiH,CAAAA,EAAQ,IAAA,CAA2B,OAAO,IAAA,CAC9C,IAAMryB,CAAAA,CAAQoyB,EAAAA,CAASC,CAAG,CAAA,CAC1B,GAAI,OAAOryB,CAAAA,EAAU,QAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASA,CAAK,CAAA,CACrD,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGorB,CAAI,CAAA,qBAAA,EAAwB,MAAA,CAAOiH,CAAG,CAAC,CAAA,CAAA,CAAG,CAAA,CAC/D,OAAOryB,CACT,CAAA,CAGauyB,EAAAA,CAAY,CAAI,CAACtI,CAAAA,CAAGC,CAAC,CAAA,GAC/BA,CAAAA,CAAeD,CAAAA,CAAc,CAACC,EAAGD,CAAC,CAAA,CAAI,CAACA,CAAAA,CAAGC,CAAC,CAAA,CAGjCsI,EAAAA,CAAW,CAACxyB,CAAAA,CAAgBumB,CAAAA,GAAyC,CAChF,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQvmB,CAAK,CAAA,EAAKA,CAAAA,CAAM,MAAA,GAAW,CAAA,CAC5C,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGumB,CAAQ,CAAA,yCAAA,CAA2C,CAAA,CACxE,OAAO,CAACvmB,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAC5B,CAAA,CAGayyB,EAAAA,CAAkB,CAACzyB,CAAAA,CAAgBumB,CAAAA,GAAyC,CACvF,IAAMmM,CAAAA,CAAOF,EAAAA,CAASxyB,CAAAA,CAAOumB,CAAQ,CAAA,CACrC,GAAI,CAACmM,CAAAA,CAAK,KAAA,CAAMC,CAAc,CAAA,CAC5B,MAAM,IAAI,KAAA,CACR,CAAA,EAAGpM,CAAQ,CAAA,oEAAA,EAAkE,IAAA,CAAK,UAAUvmB,CAAK,CAAC,CAAA,CAAA,CACpG,CAAA,CACF,OAAO0yB,CACT,CAAA,CAGaE,EAAAA,CAAW5yB,CAAAA,EAA8B,CACpD,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACtB,MAAM,IAAI,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,SAAA,CAAUA,CAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CAC7E,OAAOA,CACT,CAAA,CAGa6yB,EAAAA,CAAaC,GAA8D,CACtF,IAAMC,CAAAA,CAAOH,EAAAA,CAAQE,CAAO,CAAA,CACtBhgB,CAAAA,CAASigB,CAAAA,CAAK,MAAA,CAAQ3O,CAAAA,EAAMA,CAAAA,GAAM,IAAI,CAAA,CAC5C,OAAO,CAAE,MAAA,CAAAtR,CAAAA,CAAQ,OAAA,CAASA,CAAAA,CAAO,MAAA,GAAWigB,CAAAA,CAAK,MAAO,CAC1D,CAAA,CAGaJ,CAAAA,CAAkB3yB,CAAAA,EAC7B,OAAOA,CAAAA,EAAU,QAAA,EAAY,OAAOA,GAAU,QAAA,EAAYA,CAAAA,YAAiB,IAAA,CC1DtE,IAAMgzB,EAAAA,CAAoB,CAACxG,CAAAA,CAAiB/C,CAAAA,GACjD,OAAO+C,CAAAA,EAAW,QAAA,EAClB,MAAA,CAAO,QAAA,CAASA,CAAM,CAAA,EACtBA,CAAAA,EAAU,CAAA,GACT,CAAC9C,EAAAA,CAAeD,CAAI,CAAA,EAAK,MAAA,CAAO,SAAA,CAAU+C,CAAM,CAAA,CAAA,CAC7C,IAAA,CACA,CAAA,EAAG/C,CAAI,CAAA,uBAAA,EAA0BC,EAAAA,CAAeD,CAAI,CAAA,CAAI,QAAA,CAAW,EAAE,CAAA,aAAA,EAAgB,MAAA,CAAO+C,CAAM,CAAC,CAAA,CAAA,CAAA,CAQ5FyG,EAAAA,CAAmB,CAC9BC,CAAAA,CACA1E,CAAAA,CACA/E,CAAAA,GACkB,CAClB,IAAM+C,CAAAA,CACJ,OAAO0G,CAAAA,EAAc,QAAA,CACjBA,CAAAA,CACAZ,EAAAA,CAAW9D,CAAAA,CAAK0E,CAAS,CAAA,CAAGA,CAAAA,CAAU,IAAA,CAAO,CAAA,CAAA,EAAIA,CAAAA,CAAU,IAAI,MAAMzJ,CAAI,CAAA,CAAA,CAAA,CAAMA,CAAI,CAAA,CACnF0J,CAAAA,CAAU3G,CAAAA,GAAW,IAAA,CAAO,IAAA,CAAOwG,EAAAA,CAAkBxG,CAAAA,CAAQ/C,CAAI,CAAA,CACvE,GAAI0J,CAAAA,GAAY,IAAA,CAAM,OAAO3G,CAAAA,CAC7B,GAAI,OAAO0G,CAAAA,EAAc,QAAA,EAAYnU,EAAAA,CAAQmU,CAAS,CAAA,CAAG,OAAO,IAAA,CAChE,MAAM,IAAI,KAAA,CAAMC,CAAO,CACzB,CAAA,CAGaC,EAAAA,CAAe,CAC1B9G,CAAAA,CACAkC,CAAAA,GACiC,CACjC,IAAMxJ,CAAAA,CAAkC,EAAC,CACzC,IAAA,GAAW,CAACyE,CAAAA,CAAMyJ,CAAS,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQ5G,CAAK,CAAA,CAAyC,CAC3F,GAAI4G,CAAAA,GAAc,MAAA,CAAW,SAC7B,IAAM1G,CAAAA,CAASyG,EAAAA,CAAiBC,CAAAA,CAAW1E,CAAAA,CAAM/E,CAAI,EACrD,GAAI+C,CAAAA,GAAW,IAAA,CAAM,OAAO,IAAA,CAC5BxH,CAAAA,CAASyE,CAAI,CAAA,CAAI+C,EACnB,CACA,OAAOxH,CACT,CAAA,CAGaqO,EAAAA,CAAc,CAACjG,CAAAA,CAAgBoB,CAAAA,GAA8C,CACxF,IAAMT,CAAAA,CAAUZ,EAAAA,CAAaC,CAAI,CAAA,CACjC,GAAI,CAACW,CAAAA,CAAS,OAAOX,CAAAA,CACrB,IAAMd,CAAAA,CAAQ8G,GAAarF,CAAAA,CAAQ,CAAC,CAAA,CAAGS,CAAI,CAAA,CAC3C,OAAKlC,CAAAA,CACEY,EAAAA,CAAYZ,CAAAA,CAAOyB,CAAAA,CAAQ,CAAC,CAAC,CAAA,CADjB,IAErB,CAAA,CClDO,IAAMuF,EAAAA,CAAY,CAACtzB,CAAAA,CAAgB+S,CAAAA,GAA4B,CACpE,GAAI/S,CAAAA,EAAU,IAAA,CAA6B,OAAO,IAAA,CAClD,GAAI,KAAA,CAAM,OAAA,CAAQA,CAAK,EAAG,CACxB,IAAMuzB,CAAAA,CAAOvzB,CAAAA,CAAM,GAAA,CAAKuwB,CAAAA,EAAS+C,EAAAA,CAAU/C,CAAAA,CAAMxd,CAAM,CAAC,CAAA,CACxD,OAAOwgB,CAAAA,CAAK,IAAA,CAAMxI,CAAAA,EAAQA,CAAAA,GAAQ,IAAI,CAAA,CAAI,IAAA,CAAOwI,CACnD,CACA,IAAM1hB,CAAAA,CAASugB,EAAAA,CAASpyB,CAAK,CAAA,CAC7B,GAAI,OAAO6R,CAAAA,EAAW,QAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASA,CAAM,CAAA,CACvD,MAAM,IAAI,KAAA,CAAM,CAAA,6CAAA,EAAgD,MAAA,CAAO7R,CAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CAClF,OAAO6R,CAAAA,CAASkB,CAClB,CAAA,CAGaygB,EAAAA,CAAgBnB,CAAAA,EAAgCC,EAAAA,CAAWD,CAAAA,CAAK,WAAW,CAAA,CAG3EoB,EAAAA,CAAepB,CAAAA,EAAiD,CAC3E,GAAIA,CAAAA,EAAQ,IAAA,CAA2B,OAAO,KAC9C,IAAMtE,CAAAA,CAAU/B,CAAAA,CAAWqG,CAAG,CAAA,CAAIlF,EAAAA,CAAakF,CAAG,CAAA,CAAI,IAAA,CACtD,GAAI,CAACtE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,CAAA,8CAAA,EAAiD,IAAA,CAAK,SAAA,CAAUsE,CAAG,CAAC,CAAA,CAAA,CAAG,CAAA,CACzF,OAAOtE,CACT,CAAA,CCHApC,mBAAAA,CAAM,MAAA,CAAOC,mBAAG,CAAA,CAChBD,mBAAAA,CAAM,OAAOE,mBAAQ,CAAA,CACrBF,mBAAAA,CAAM,MAAA,CAAO+H,mBAAc,CAAA,CAC3B/H,mBAAAA,CAAM,MAAA,CAAOgI,mBAAa,CAAA,CAEnB,IAAMC,EAAAA,CAAY,CACvB7P,CAAAA,CACAhB,CAAAA,CACAY,CAAAA,CACAwI,CAAAA,CAAqB,EAAC,CACtByC,CAAAA,GACqB,CACrB,IAAMiF,CAAAA,CAAarQ,EAAAA,CAAUO,CAAAA,CAAU,KAAA,CAAOhB,CAAM,CAAA,CAI9C+Q,CAAAA,CAAaC,EAAAA,CAAkB5H,EAASxnB,CAAAA,EAC5CoqB,EAAAA,CAAgBpqB,CAAAA,CAAQoe,CAAAA,CAAQY,CAAAA,CAASiL,CAAQ,CACnD,CAAA,CACMoF,CAAAA,CAAKF,CAAAA,CAAW,QAAA,CAKtB,GAAID,CAAAA,EAAc,IAAA,CAChB,OAAIlL,CAAAA,CAAkB,QAAA,CAAS5E,CAAAA,CAAU,YAAY,CAAA,CAAU,IAAA,CACxDA,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,aAAA,CAAA,CAK9C,IAAMkQ,CAAAA,CAAYtB,CAAAA,CAAekB,CAAU,CAAA,CAAIK,EAAAA,CAAeL,CAAAA,CAAYG,CAAE,CAAA,CAAI,IAAA,CAChF,GAAI,CAACC,CAAAA,EAAW,OAAA,EAAQ,CACtB,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGlQ,CAAAA,CAAU,KAAK,CAAA,sBAAA,EAAyB,MAAA,CAAO8P,CAAU,CAAC,CAAA,CAAE,CAAA,CAEjF,IAAMM,CAAAA,CAAYjN,CAAAA,EAAenD,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,CAAA,EAAImD,CAAE,CAAA,CAAA,CAG5E,GAAIkB,EAAAA,CAAmB,QAAA,CAASrE,CAAAA,CAAU,YAAY,CAAA,CAAG,CACvD,IAAM+I,CAAAA,CAAOsH,EAAAA,CAAWrF,EAAAA,CAAgBhL,CAAAA,CAAWhB,CAAAA,CAAQY,CAAAA,CAASiL,CAAQ,CAAC,CAAA,CAC7E,GAAI9B,CAAAA,GAAS,IAAA,CAAM,OAAO/I,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,wBAAA,CAAA,CAC/D,IAAMsQ,CAAAA,CAASvH,CAAAA,CAAK,QAAA,CAASmH,CAAAA,CAAU,EAAA,CAAGD,CAAE,CAAA,CAAE,GAAA,EAAK,CAAA,CAC7CrC,CAAAA,CAAQ7E,CAAAA,CAAK,GAAA,CAAKwH,CAAAA,EAAQ1K,EAAAA,CAAU0K,CAAG,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA,CAC3D,OAAOvQ,CAAAA,CAAU,YAAA,GAAiBoB,CAAAA,CAAa,KAAA,CAC3CkP,CAAAA,EAAUF,CAAAA,CAAS,CAAA,WAAA,EAAcxC,CAAK,EAAE,CAAA,CACxC,CAAC0C,CAAAA,EAAUF,CAAAA,CAAS,CAAA,eAAA,EAAkBxC,CAAK,CAAA,CAAE,CACnD,CAEA,IAAM4C,CAAAA,CAAQC,EAAAA,CAAkBzQ,CAAAA,CAAWhB,CAAAA,CAAQY,CAAAA,CAASmQ,CAAAA,CAAYE,CAAAA,CAAIpF,CAAQ,CAAA,CAGpF,GAAI2F,CAAAA,GAAU,IAAA,CAAM,OAAOxQ,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,wBAAA,CAAA,CAEhE,GAAM,CAAC0Q,CAAAA,CAAaC,CAAAA,CAAUD,CAAW,CAAA,CAAIF,CAAAA,CAE7C,OAAQxQ,CAAAA,CAAU,YAAA,EAChB,KAAKoB,CAAAA,CAAa,MAAA,CAChB,OAAO8O,CAAAA,CAAU,QAAA,CAASQ,CAAW,CAAA,EAAKN,CAAAA,CAAS,CAAA,eAAA,EAAkBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAE7F,KAAKtP,CAAAA,CAAa,KAAA,CAChB,OAAO8O,CAAAA,CAAU,OAAA,CAAQQ,CAAW,CAAA,EAAKN,CAAAA,CAAS,CAAA,cAAA,EAAiBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAE3F,KAAKtP,CAAAA,CAAa,UAAA,CAChB,OACE8O,CAAAA,CAAU,cAAA,CAAeQ,CAAW,CAAA,EACpCN,CAAAA,CAAS,CAAA,qBAAA,EAAwBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAG3D,KAAKtP,CAAAA,CAAa,SAAA,CAChB,OACE8O,CAAAA,CAAU,aAAA,CAAcQ,CAAW,GACnCN,CAAAA,CAAS,CAAA,oBAAA,EAAuBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAG1D,KAAKtP,CAAAA,CAAa,MAAA,CAChB,OACG8O,CAAAA,CAAU,aAAA,CAAcQ,CAAW,CAAA,EAAKR,CAAAA,CAAU,cAAA,CAAeS,CAAO,CAAA,EACzEP,CAAAA,CAAS,CAAA,eAAA,EAAkBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,KAAA,EAAQC,CAAAA,CAAQ,MAAA,EAAQ,CAAA,CAAE,CAAA,CAI7E,KAAKvP,CAAAA,CAAa,SAAA,CAChB,OACE8O,CAAAA,CAAU,aAAA,CAAcQ,CAAW,CAAA,EACnCN,CAAAA,CAAS,CAAA,mBAAA,EAAsBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAGzD,KAAKtP,CAAAA,CAAa,QAAA,CAChB,OACE8O,CAAAA,CAAU,cAAA,CAAeQ,CAAW,CAAA,EACpCN,CAAAA,CAAS,CAAA,kBAAA,EAAqBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,CAAE,CAAA,CAGxD,KAAKtP,EAAa,SAAA,CAChB,OACE8O,CAAAA,CAAU,QAAA,CAASQ,CAAW,CAAA,EAC9BR,CAAAA,CAAU,OAAA,CAAQS,CAAO,CAAA,EACzBP,CAAAA,CAAS,CAAA,mBAAA,EAAsBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,KAAA,EAAQC,CAAAA,CAAQ,MAAA,EAAQ,CAAA,CAAE,CAAA,CAIjF,KAAKvP,CAAAA,CAAa,OAAA,CAChB,OACG8O,CAAAA,CAAU,aAAA,CAAcQ,CAAW,CAAA,EAAKR,CAAAA,CAAU,eAAeS,CAAO,CAAA,EACzEP,CAAAA,CAAS,CAAA,gBAAA,EAAmBM,CAAAA,CAAY,MAAA,EAAQ,CAAA,KAAA,EAAQC,CAAAA,CAAQ,MAAA,EAAQ,CAAA,CAAE,CAAA,CAI9E,KAAKvP,CAAAA,CAAa,UAAA,CAChB,OACE8O,CAAAA,CAAU,QAAA,CAASQ,CAAW,CAAA,EAC9BR,CAAAA,CAAU,OAAA,CAAQS,CAAO,CAAA,EACzBP,CAAAA,CAAS,CAAA,oBAAA,EAAuBM,CAAAA,CAAY,MAAA,EAAQ,QAAQC,CAAAA,CAAQ,MAAA,EAAQ,CAAA,CAAE,CAAA,CAIlF,QACE,MAAM7N,CAAAA,CAAiB9C,CAAAA,CAAyC,YAAA,CAAc,MAAM,CACxF,CACF,CAAA,CAEMyQ,EAAAA,CAAoB,CACxBzQ,CAAAA,CACAhB,CAAAA,CACAY,CAAAA,CACAwI,CAAAA,CACA6H,CAAAA,CACApF,CAAAA,GACsD,CACtD,IAAMrI,CAAAA,CAAWxC,CAAAA,CAAU,YAAA,CAErByK,CAAAA,CAAoB7pB,CAAAA,EAAWoqB,EAAAA,CAAgBpqB,EAAQoe,CAAAA,CAAQY,CAAAA,CAASiL,CAAQ,CAAA,CAChFyD,CAAAA,CAAMtD,EAAAA,CAAgBhL,CAAAA,CAAWhB,CAAAA,CAAQY,CAAAA,CAASiL,CAAQ,CAAA,CAChE,GAAIyD,CAAAA,EAAQ,IAAA,CAA2B,OAAO,IAAA,CAC9C,IAAMsC,CAAAA,CAAO5Q,CAAAA,CAAU,MAAA,GAAW,MAAA,CAAY,MAAA,CAAY0P,EAAAA,CAAYjF,CAAAA,CAAKzK,CAAAA,CAAU,MAAM,CAAC,CAAA,CAC5F,GAAI4Q,CAAAA,GAAS,KAAM,OAAO,IAAA,CAC1B,IAAMC,CAAAA,CAASC,CAAAA,EAA2C,CACxD,GAAIF,CAAAA,GAAS,MAAA,CAAW,OAAOE,CAAAA,CAC/B,IAAMvI,CAAAA,CAAQ8G,EAAAA,CAAauB,CAAAA,CAAK,CAAC,CAAA,CAAGnG,CAAI,CAAA,CACxC,OAAOlC,CAAAA,EAASI,EAAAA,CAAamI,CAAAA,CAAOvI,CAAAA,CAAOqI,CAAAA,CAAK,CAAC,CAAA,CAAGX,CAAE,CACxD,CAAA,CAEA,GAAItM,EAAAA,CAAiB,QAAA,CAASnB,CAAQ,CAAA,CAAG,CACvC,GAAI,CAACyF,CAAAA,CAAWqG,CAAG,CAAA,CAAG,MAAM7H,EAAAA,CAAkBjE,CAAQ,CAAA,CACtD,IAAM6G,CAAAA,CAAOiG,EAAAA,CAAYhB,CAAAA,CAAK7D,CAAI,CAAA,CAClC,OAAOpB,CAAAA,EAAQe,EAAAA,CAAqBf,CAAAA,CAAMjB,CAAM,CAClD,CAEA,IAAM2I,CAAAA,CAAU,CAAC90B,EAAgB+0B,CAAAA,GAAsC,CACrE,GAAI/0B,CAAAA,EAAU,IAAA,CAA6B,OAAO,IAAA,CAClD,GAAIgsB,CAAAA,CAAWhsB,CAAK,CAAA,CAAG,CACrB,IAAMotB,CAAAA,CAAOiG,EAAAA,CAAYrzB,CAAAA,CAAOwuB,CAAI,CAAA,CACpC,OAAOpB,CAAAA,EAAQU,EAAAA,CAAgBV,CAAAA,CAAMjB,CAAM,CAC7C,CACA,IAAMhF,CAAAA,CAAO+M,EAAAA,CAAel0B,CAAAA,CAAyBg0B,CAAE,EACvD,GAAI,CAAC7M,CAAAA,CAAK,OAAA,EAAQ,CAAG,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW4N,CAAK,CAAA,EAAA,EAAK,MAAA,CAAO/0B,CAAK,CAAC,CAAA,CAAE,CAAA,CACzE,OAAOmnB,CACT,CAAA,CAEA,GAAIkB,EAAAA,CAAqB,QAAA,CAAS9B,CAAQ,CAAA,CAAG,CAC3C,GAAM,CAACyO,CAAAA,CAAOC,CAAM,CAAA,CAAIzC,GAASH,CAAAA,CAAK9L,CAAQ,CAAA,CACxC2O,CAAAA,CAAQJ,CAAAA,CAAQE,CAAAA,CAAO,YAAY,CAAA,CACnCG,CAAAA,CAAQL,CAAAA,CAAQG,CAAAA,CAAQ,UAAU,CAAA,CACxC,GAAI,CAACC,CAAAA,EAAS,CAACC,CAAAA,CAAO,OAAO,IAAA,CAC7B,GAAM,CAAC9tB,CAAAA,CAAO0jB,CAAG,CAAA,CAAIwH,EAAAA,CAAU,CAAC2C,CAAAA,CAAOC,CAAK,CAAC,EACvCC,CAAAA,CAAeR,CAAAA,CAAMvtB,CAAK,CAAA,CAC1BguB,CAAAA,CAAaT,CAAAA,CAAM7J,CAAG,CAAA,CAC5B,OAAOqK,CAAAA,EAAgBC,CAAAA,CAAa,CAACD,CAAAA,CAAcC,CAAU,CAAA,CAAI,IACnE,CAEA,GAAI,KAAA,CAAM,OAAA,CAAQhD,CAAG,CAAA,CAAG,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG9L,CAAQ,CAAA,sCAAA,CAAwC,CAAA,CAG3F,IAAM+O,EAAWlI,CAAAA,EAAuC,CACtD,IAAMpI,CAAAA,CAAWqO,EAAAA,CAAYjG,CAAAA,CAAMoB,CAAI,CAAA,CACvC,OAAOxJ,CAAAA,EAAYiJ,EAAAA,CAAwBjJ,CAAAA,CAAUuB,CAAAA,CAAU4F,CAAM,CACvE,CAAA,CACM0I,CAAAA,CAAQ7I,CAAAA,CAAWqG,CAAG,CAAA,CAAIiD,CAAAA,CAAQjD,CAAG,CAAA,CAAIyC,CAAAA,CAAQzC,CAAAA,CAAK,iBAAiB,CAAA,CAC7E,GAAI,CAACwC,CAAAA,CAAO,OAAO,IAAA,CACnB,IAAMU,CAAAA,CAAUX,CAAAA,CAAMC,CAAK,CAAA,CAC3B,OAAOU,CAAAA,EAAW,CAACA,CAAO,CAC5B,CAAA,CASaxB,EAAAA,CAAoB,CAAC5H,CAAAA,CAAoBqC,CAAAA,GAAyC,CAC7F,IAAM5B,CAAAA,CAAOT,CAAAA,CAAO,QAAA,CACpB,GAAIS,CAAAA,GAAS,MAAA,EAAa,OAAOA,CAAAA,EAAS,QAAA,CACxC,OAAO,CAAE,GAAGT,EAAQ,QAAA,CAAUS,CAAAA,EAAQX,EAAa,CAAA,CACrD,GAAIqC,EAAAA,CAAO1B,CAAI,CAAA,CACb,MAAM,IAAI,KAAA,CAAM,CAAA,2DAAA,EAA8DA,CAAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA,CAC5F,IAAM4I,CAAAA,CAAQhH,CAAAA,CAAK5B,CAAI,CAAA,CACvB,GAAI4I,CAAAA,EAAU,IAAA,EAA+B,OAAOA,CAAAA,EAAU,QAAA,CAC5D,MAAM,IAAI,KAAA,CAAM,mCAAmC,MAAA,CAAOA,CAAK,CAAC,CAAA,CAAA,CAAG,CAAA,CACrE,OAAO,CAAE,GAAGrJ,CAAAA,CAAQ,QAAA,CAAUqJ,CAAAA,EAASvJ,EAAa,CACtD,CAAA,CAMMwJ,EAAAA,CAAa,oEAAA,CACbC,EAAAA,CAAmB11B,CAAAA,EACvBy1B,EAAAA,CAAW,IAAA,CAAKz1B,CAAAA,CAAM,IAAA,EAAM,CAAA,EAAK,iBAAA,CAAkB,IAAA,CAAKA,CAAK,CAAA,CASlDk0B,EAAAA,CAAiB,CAACl0B,EAAmCg0B,CAAAA,GAA4B,CAE5F,GAAI,OAAOh0B,CAAAA,EAAU,QAAA,EAAY,SAAA,CAAU,IAAA,CAAKA,CAAAA,CAAM,IAAA,EAAM,CAAA,CAAG,OAAO2rB,mBAAAA,CAAM,OAAO3rB,CAAK,CAAC,CAAA,CACzF,GAAI,OAAOA,CAAAA,EAAU,QAAA,EAAY,CAAC01B,EAAAA,CAAgB11B,CAAK,CAAA,CAAG,CAGxD,IAAMosB,CAAAA,CAAOT,oBAAM3rB,CAAK,CAAA,CACxB,OAAKosB,CAAAA,CAAK,OAAA,EAAQ,CACXT,mBAAAA,CAAM,EAAA,CAAG3rB,CAAAA,CAAOg0B,CAAE,CAAA,CADG5H,CAE9B,CAEA,OAAO,OAAOpsB,CAAAA,EAAU,QAAA,CAAW2rB,mBAAAA,CAAM,IAAI,IAAA,CAAK3rB,CAAAA,CAAM,IAAA,EAAM,CAAC,CAAA,CAAI2rB,mBAAAA,CAAM3rB,CAAK,CAChF,CAAA,CAKa21B,EAAAA,CAAoB,CAAC31B,CAAAA,CAAgB4sB,CAAAA,GAAuB,CACvE,IAAM5J,CAAAA,CAAS2P,CAAAA,CAAe3yB,CAAK,CAAA,CAAIk0B,EAAAA,CAAel0B,CAAAA,CAAO4sB,CAAI,CAAA,CAAIjB,mBAAAA,CAAM,MAAA,CAAO,GAAG,CAAA,CACrF,GAAI,CAAC3I,CAAAA,CAAO,OAAA,EAAQ,CAAG,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,MAAA,CAAOhjB,CAAK,CAAC,CAAA,CAAE,CAAA,CAC7E,OAAOgjB,CAAAA,CAAO,MAAA,EAChB,CAAA,CAGaoR,EAAAA,CAActH,CAAAA,EAAmC,CAC5D,GAAIA,CAAAA,EAAS,IAAA,CAA4B,OAAO,IAAA,CAChD,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAI,CAAA,CAAG,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAC7F,OAAOA,CAAAA,CAAK,GAAA,CAAKwH,CAAAA,EAAQ,CACvB,IAAMlzB,CAAAA,CAASwoB,GAAgC,OAAA,CAAQ,MAAA,CAAO0K,CAAG,CAAA,CAAE,WAAA,EAAa,CAAA,CAChF,GAAIlzB,CAAAA,GAAU,EAAA,CAAI,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,MAAA,CAAOkzB,CAAG,CAAC,CAAA,CAAE,CAAA,CACpE,OAAOlzB,CACT,CAAC,CACH,CAAA,CC7QA,IAAMw0B,EAAAA,CAAoBv0B,GACpBA,CAAAA,EAAU,CAAA,CAAU,CAAA,CACpBA,CAAAA,EAAU,CAAA,CAAU,CAAA,CACjB,CAAA,CAMHw0B,EAAAA,CAAqB,CAAC1J,CAAAA,CAAqB9qB,CAAAA,GAA2B,CAC1E,GAAM,CAAE,WAAA,CAAAy0B,CAAAA,CAAa,QAAA,CAAAC,CAAS,CAAA,CAAI5J,CAAAA,CAC5B6J,CAAAA,CAAiB,EAAC,CACxB,OAAI,OAAOF,CAAAA,EAAgB,QAAA,EAAUE,CAAAA,CAAK,IAAA,CAAKF,CAAW,EACtD,OAAOC,CAAAA,EAAa,QAAA,EAAUC,CAAAA,CAAK,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM30B,CAAAA,CAAS00B,CAAQ,CAAC,CAAA,CAClEC,CAAAA,CAAK,MAAA,CAAS,CAAA,CAAI,IAAA,CAAK,GAAA,CAAI,GAAGA,CAAI,CAAA,CAAIJ,EAAAA,CAAiBv0B,CAAM,CACtE,CAAA,CAEM40B,EAAAA,CAAYj2B,CAAAA,EAA4BA,CAAAA,CAAM,KAAA,CAAM,kBAAkB,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAEtFk2B,EAAAA,CAAatE,CAAAA,EAA2B,OAAA,CAAQ,IAAA,CAAKA,CAAK,CAAA,CAE1DuE,EAAAA,CAAiB,CAAClM,CAAAA,CAAWC,CAAAA,CAAWkM,CAAAA,GACxCnM,CAAAA,GAAMC,CAAAA,CAAU,IAAA,CAChB,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAE,MAAA,CAASC,CAAAA,CAAE,MAAM,CAAA,CAAIkM,CAAAA,CAAY,KAAA,CACzCC,2BAAAA,CAASpM,CAAAA,CAAGC,CAAC,CAAA,EAAKkM,CAAAA,CAMdE,EAAAA,CAAgB,CAC3BC,CAAAA,CACAC,CAAAA,CACArK,CAAAA,CAAsB,EAAC,GACX,CACZ,IAAMsK,CAAAA,CAASD,CAAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY,CACxC,GAAI,CAACC,CAAAA,CAAQ,OAAO,KAAA,CAEpB,IAAMC,CAAAA,CAAMH,CAAAA,CAAS,WAAA,EAAY,CACjC,GAAIG,CAAAA,CAAI,QAAA,CAASD,CAAM,CAAA,CAAG,OAAO,KAAA,CAEjC,IAAME,CAAAA,CAAcV,EAAAA,CAASQ,CAAM,CAAA,CACnC,GAAIE,CAAAA,CAAY,MAAA,GAAW,CAAA,CAAG,OAAO,MAAA,CAErC,IAAMC,CAAAA,CAAYX,EAAAA,CAASS,CAAG,CAAA,CAC9B,OAAIE,CAAAA,CAAU,MAAA,GAAW,CAAA,CAAU,KAAA,CAE5BD,CAAAA,CAAY,KAAA,CAAO/E,CAAAA,EAAU,CAClC,IAAMwE,CAAAA,CAAMP,EAAAA,CAAmB1J,CAAAA,CAAQyF,CAAAA,CAAM,MAAM,EACnD,OAAIwE,CAAAA,GAAQ,CAAA,EAAKF,EAAAA,CAAUtE,CAAK,CAAA,CAAUgF,CAAAA,CAAU,QAAA,CAAShF,CAAK,CAAA,CAC3DgF,CAAAA,CAAU,IAAA,CAAMC,CAAAA,EAAaV,EAAAA,CAAevE,CAAAA,CAAOiF,CAAAA,CAAUT,CAAG,CAAC,CAC1E,CAAC,CACH,CAAA,CCrDO,IAAMU,EAAAA,CAAe92B,CAAAA,EAAoC,CAC9D,IAAM2E,CAAAA,CAAS3E,CAAAA,YAAiB,MAAA,CAASA,CAAAA,CAAM,MAAA,CAASA,CAAAA,CAClD+2B,CAAAA,CAAQ/2B,CAAAA,YAAiB,MAAA,CAASA,CAAAA,CAAM,KAAA,CAAQ,EAAA,CACtD,GAAI,MAAA,CAAO,IAAA,CAAK+2B,CAAK,CAAA,CACnB,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoBpyB,CAAM,CAAA,CAAA,EAAIoyB,CAAK,CAAA,gCAAA,CAAkC,CAAA,CACvF,IAAMC,CAAAA,CAAkBD,CAAAA,GAAU,GAAA,CAClC,GAAI,CACF,OAAO,CACL,MAAA,CAAApyB,CAAAA,CACA,eAAA,CAAAqyB,CAAAA,CACA,EAAA,CAAIC,WAAAA,CAAM,OAAA,CAAQtyB,CAAAA,CAAQqyB,CAAAA,CAAkBC,WAAAA,CAAM,gBAAA,CAAmB,CAAC,CACxE,CACF,CAAA,MAASC,CAAAA,CAAO,CACd,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoBvyB,CAAM,CAAA,GAAA,EAAOuyB,CAAAA,CAAgB,OAAO,CAAA,CAAE,CAC5E,CACF,CAAA,CAGMC,EAAAA,CAAkC,CACtC,CAAA,CAAG,KAAA,CACH,CAAA,CAAG,YAAA,CACH,CAAA,CAAG,eACL,CAAA,CACMC,EAAAA,CAAgC,CACpC,KAAA,CAAO,WAAA,CACP,KAAA,CAAO,QAAA,CACP,KAAA,CAAO,iBAAA,CACP,KAAA,CAAO,MAAA,CACP,KAAA,CAAO,wBAAA,CACP,KAAA,CAAO,KAAA,CACP,KAAA,CAAO,KAAA,CACP,KAAA,CAAO,KAAA,CACP,KAAA,CAAO,KAAA,CACP,MAAO,gBAAA,CACP,KAAA,CAAO,kBAAA,CACP,KAAA,CAAO,KAAA,CACP,IAAA,CAAM,YAAA,CACN,MAAA,CAAQ,WACV,CAAA,CACMC,EAAAA,CAAa,oBAAA,CACbC,EAAAA,CAAa,GAAA,CAEbC,EAAAA,CAAaC,CAAAA,EACjBA,CAAAA,EAAQ,KAAA,CACJ,CAAA,GAAA,EAAMA,CAAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,CAAA,CACxC,CAAA,GAAA,EAAMA,CAAAA,CAAK,SAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAC,CAAA,CAAA,CAExCC,EAAAA,CAAWC,CAAAA,EAA0BL,EAAAA,CAAW,IAAA,CAAKK,CAAI,CAAA,CAAI,CAAA,EAAA,EAAKA,CAAI,CAAA,CAAA,CAAKA,CAAAA,CAOpEC,EAAAA,CAAkBhzB,CAAAA,EAA2B,CACxD,IAAMizB,CAAAA,CAAUxM,CAAAA,EAAwB,CACtC,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoBzmB,CAAM,CAAA,GAAA,EAAMymB,CAAI,CAAA,qBAAA,CAAuB,CAC7E,CAAA,CACIwF,CAAAA,CAAM,EAAA,CACNiH,CAAAA,CAAI,CAAA,CAEFC,CAAAA,CAAyB,IAAY,CACrC,eAAA,CAAgB,IAAA,CAAKnzB,CAAAA,CAAO,KAAA,CAAMkzB,CAAC,CAAC,CAAA,EAAGD,CAAAA,CAAO,qBAAqB,EACzE,CAAA,CAEMG,CAAAA,CAAmBC,CAAAA,EAA6B,CACpD,IAAM/I,CAAAA,CAAItqB,CAAAA,CAAOkzB,CAAAA,CAAI,CAAC,CAAA,CAEtB,GADAA,CAAAA,EAAK,CAAA,CACD,MAAA,CAAO,MAAA,CAAOV,EAAAA,CAASlI,CAAC,CAAA,CAAG,OAAO+I,CAAAA,CAAUb,EAAAA,CAAQlI,CAAC,CAAA,CAAI,CAAA,CAAA,EAAIkI,EAAAA,CAAQlI,CAAC,CAAC,CAAA,CAAA,CAAA,CAC3E,IAAMgJ,CAAAA,CAAQhJ,CAAAA,CAAE,WAAA,EAAY,CAC5B,GAAIA,CAAAA,GAAMgJ,CAAAA,EAAS,MAAA,CAAO,MAAA,CAAOd,EAAAA,CAASc,CAAK,CAAA,CAC7C,OAAID,CAAAA,EAASJ,CAAAA,CAAO,CAAA,kBAAA,EAAqB3I,CAAC,CAAA,gBAAA,CAAkB,CAAA,CACrD,CAAA,EAAA,EAAKkI,EAAAA,CAAQc,CAAK,CAAC,CAAA,CAAA,CAAA,CAE5B,GAAIhJ,CAAAA,GAAM,GAAA,EAAOA,CAAAA,GAAM,GAAA,CAAK,OAAO2I,CAAAA,CAAO,iBAAiB,CAAA,CAC3D,GAAI3I,CAAAA,GAAM,GAAA,CAAK,OAAO2I,CAAAA,CAAO,KAAK,CAAA,CAClC,GAAI3I,CAAAA,GAAM,GAAA,CAAK,CACb,IAAMiJ,CAAAA,CAASvzB,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,CACvB9M,CAAAA,CAAMmN,CAAAA,CAASvzB,CAAAA,CAAO,OAAA,CAAQ,GAAA,CAAKkzB,CAAC,CAAA,CAAIA,CAAAA,CAAI,CAAA,CAC5CM,CAAAA,CAAMxzB,CAAAA,CAAO,KAAA,CAAMuzB,CAAAA,CAASL,CAAAA,CAAI,CAAA,CAAIA,CAAAA,CAAG9M,CAAG,CAAA,CAChD,OAAA8M,CAAAA,CAAIK,CAAAA,CAASnN,CAAAA,CAAM,CAAA,CAAIA,CAAAA,CAChBwM,GAAU,MAAA,CAAO,QAAA,CAASY,CAAAA,CAAK,EAAE,CAAC,CAC3C,CACA,GAAIlJ,CAAAA,EAAK,GAAA,EAAOA,CAAAA,EAAK,GAAA,CAAK,CACxB,IAAImJ,CAAAA,CAAMnJ,CAAAA,CACV,KAAOmJ,CAAAA,CAAI,MAAA,CAAS,CAAA,EAAKzzB,CAAAA,CAAOkzB,CAAC,CAAA,EAAK,GAAA,EAAOlzB,CAAAA,CAAOkzB,CAAC,CAAA,EAAK,GAAA,EAAKO,CAAAA,EAAOzzB,CAAAA,CAAOkzB,GAAG,CAAA,CAChF,OAAON,EAAAA,CAAU,MAAA,CAAO,QAAA,CAASa,CAAAA,CAAK,CAAC,CAAC,CAC1C,CAEA,GAAI,CAACJ,CAAAA,GAAY/I,CAAAA,GAAM,GAAA,EAAOA,CAAAA,GAAM,GAAA,CAAA,CAAM,CACxC,IAAMoJ,CAAAA,CAAI,CAAA,CAAA,EAAIlB,EAAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CACvB,OAAOlI,CAAAA,GAAM,GAAA,CACT,CAAA,OAAA,EAAUoJ,CAAC,CAAA,IAAA,EAAOA,CAAC,CAAA,MAAA,EAASA,CAAC,CAAA,IAAA,EAAOA,CAAC,CAAA,EAAA,CAAA,CACrC,CAAA,OAAA,EAAUA,CAAC,CAAA,IAAA,EAAOA,CAAC,CAAA,MAAA,EAASA,CAAC,CAAA,IAAA,EAAOA,CAAC,CAAA,EAAA,CAC3C,CACA,GAAI,CAACL,CAAAA,GAAY/I,CAAAA,GAAM,GAAA,EAAOA,CAAAA,GAAM,GAAA,CAAA,CAClC,OAAA6I,CAAAA,EAAuB,CAChB7I,CAAAA,GAAM,GAAA,CAAM,KAAA,CAAQ,KAAA,CAE7B,GAAIA,IAAM,GAAA,CAAK,CACb,IAAMlE,CAAAA,CAAMpmB,CAAAA,CAAO,OAAA,CAAQ,KAAA,CAAOkzB,CAAC,CAAA,CAC7BS,CAAAA,CAAS3zB,CAAAA,CAAO,KAAA,CAAMkzB,CAAAA,CAAG9M,CAAAA,GAAQ,EAAA,CAAK,MAAA,CAAYA,CAAG,CAAA,CAC3D,OAAA8M,CAAAA,CAAI9M,CAAAA,GAAQ,EAAA,CAAKpmB,CAAAA,CAAO,MAAA,CAASomB,CAAAA,CAAM,CAAA,CAChC,CAAC,GAAGuN,CAAM,CAAA,CACd,IAAIN,CAAAA,CAAWO,CAAAA,EAAQ,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,CAAI,CAAA,EAAA,EAAKA,CAAE,CAAA,CAAA,CAAKA,CAAAA,CAAMd,EAAO,CAAA,CACtE,IAAA,CAAK,EAAE,CACZ,CACA,OAAO,CAAA,EAAA,EAAKxI,CAAC,CAAA,CACf,CAAA,CACA,KAAO4I,CAAAA,CAAIlzB,CAAAA,CAAO,MAAA,EAAQ,CACxB,IAAMsqB,CAAAA,CAAItqB,CAAAA,CAAOkzB,CAAC,EAClB,GAAI5I,CAAAA,GAAM,IAAA,CACR2B,CAAAA,EAAOmH,CAAAA,CAAgB,KAAK,CAAA,CAAA,KAAA,GACnB9I,CAAAA,GAAM,GAAA,CACf2B,CAAAA,EAAO,QAAA,CACPiH,CAAAA,EAAAA,CAAAA,KAAAA,GACS5I,CAAAA,GAAM,GAAA,EAAOtqB,CAAAA,CAAOkzB,CAAAA,CAAI,CAAC,CAAA,GAAM,GAAA,CAAK,CAC7C,IAAMW,CAAAA,CAAQ,gBAAA,CAAiB,IAAA,CAAK7zB,CAAAA,CAAO,KAAA,CAAMkzB,CAAC,CAAC,CAAA,CAC/CW,CAAAA,EACF5H,GAAO,GAAA,CACPiH,CAAAA,EAAKW,CAAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EACL7zB,CAAAA,CAAOkzB,CAAAA,CAAI,CAAC,CAAA,GAAM,GAAA,EAC3BjH,CAAAA,EAAO,KAAA,CACPiH,CAAAA,EAAK,CAAA,EACAD,CAAAA,CAAO,cAAc,EAC9B,CAAA,KAAA,GAAW3I,CAAAA,GAAM,GAAA,CAAK,CAEpB,IAAMwJ,CAAAA,CAAS,sCAAA,CAAuC,IAAA,CAAK9zB,CAAAA,CAAO,KAAA,CAAMkzB,CAAC,CAAC,EAC1E,GAAI,CAACY,CAAAA,CAAQ,CACX7H,CAAAA,EAAO,KAAA,CACPiH,CAAAA,EAAAA,CACA,QACF,CAAA,CACI,MAAA,CAAOY,CAAAA,CAAO,CAAC,CAAC,CAAA,CAAInB,EAAAA,EAAc,MAAA,CAAOmB,CAAAA,CAAO,CAAC,CAAA,EAAK,CAAC,CAAA,CAAInB,EAAAA,GAC7DM,CAAAA,CAAO,CAAA,oBAAA,EAAuBN,EAAU,CAAA,CAAE,CAAA,CAC5C1G,CAAAA,EAAO6H,CAAAA,CAAO,CAAC,EACfZ,CAAAA,EAAKY,CAAAA,CAAO,CAAC,CAAA,CAAE,OACjB,CAAA,KAAA,GAAWxJ,CAAAA,GAAM,GAAA,CAAK,CACpB2B,CAAAA,EAAO,GAAA,CACPiH,CAAAA,EAAAA,CACIlzB,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,GAChBjH,CAAAA,EAAO,GAAA,CACPiH,CAAAA,EAAAA,CAAAA,CAGElzB,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,GAChBjH,CAAAA,EAAO,KAAA,CACPiH,CAAAA,EAAAA,CAAAA,CAIF,IAAIa,CAAAA,CAAc,KAAA,CACdC,CAAAA,CAAW,MACXC,CAAAA,CAAU,CAAA,CACd,KAAOf,CAAAA,CAAIlzB,CAAAA,CAAO,MAAA,EAAUA,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,EAAK,CAC7C,IAAMgB,CAAAA,CAAgCF,CAAAA,CAClC,IAAA,CACA,sBAAA,CAAuB,IAAA,CAAKh0B,CAAAA,CAAO,KAAA,CAAMkzB,CAAC,CAAC,CAAA,CACzCiB,CAAAA,CAAmB,CAAC,CAACD,CAAAA,EAAS,aAAA,CAAc,IAAA,CAAKl0B,CAAAA,CAAO,KAAA,CAAMkzB,CAAC,CAAC,CAAA,CAChEkB,CAAAA,CACJp0B,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,EAAOe,CAAAA,CAAU,CAAA,EAAKj0B,CAAAA,CAAOkzB,CAAAA,CAAI,CAAC,CAAA,GAAM,GAAA,EAAO,CAACc,CAAAA,CAC5DE,CAAAA,EACEA,CAAAA,CAAM,CAAC,CAAA,EAAGjB,CAAAA,CAAO,CAAA,mBAAA,EAAsBiB,CAAAA,CAAM,CAAC,CAAC,CAAA,EAAA,CAAI,CAAA,CAClD,MAAA,CAAO,MAAA,CAAOzB,EAAAA,CAAOyB,EAAM,CAAC,CAAC,CAAA,EAAGjB,CAAAA,CAAO,CAAA,YAAA,EAAeiB,CAAAA,CAAM,CAAC,CAAC,CAAA,EAAA,CAAI,CAAA,CACvEjI,CAAAA,EAAOwG,EAAAA,CAAMyB,CAAAA,CAAM,CAAC,CAAC,CAAA,CACrBhB,CAAAA,EAAKgB,CAAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EACLl0B,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,IAAA,CACvBjH,CAAAA,EAAOmH,CAAAA,CAAgB,IAAI,CAAA,CAClBgB,CAAAA,EAAQL,GACjB9H,CAAAA,EAAO,KAAA,CACPiH,CAAAA,EAAAA,GAEAjH,CAAAA,EAAOjsB,CAAAA,CAAOkzB,CAAC,CAAA,GAAM,GAAA,CAAM,KAAA,CAAQlzB,CAAAA,CAAOkzB,CAAC,CAAA,CAC3CA,CAAAA,EAAAA,CAAAA,CAEF,IAAMmB,EAAuBL,CAAAA,CAC7BA,CAAAA,CAAWI,CAAAA,EAAQ,CAACL,CAAAA,CACpBA,CAAAA,CAAcI,CAAAA,EAAWE,CAAAA,CACzBJ,CAAAA,GACF,CACAhI,CAAAA,EAAO,GAAA,CACPiH,CAAAA,GACF,CAAA,KACEjH,GAAO3B,CAAAA,CACP4I,CAAAA,EAAAA,CAAAA,CACI5I,CAAAA,GAAM,GAAA,EAAOA,CAAAA,GAAM,GAAA,GAAK6I,CAAAA,GAEhC,CACA,OAAOlH,CACT,CAAA,CAGaqI,EAAAA,CAAiB,CAACj5B,CAAAA,CAAwByjB,CAAAA,GAAmC,CACxF,GAAI,CACF,GAAM,CAAE,MAAA,CAAA9e,CAAO,CAAA,CAAImyB,EAAAA,CAAY92B,CAAK,CAAA,CACpC,OAAIyjB,CAAAA,GAAW,OAAA,EAASkU,GAAehzB,CAAM,CAAA,CACtC,IACT,CAAA,MAASuyB,CAAAA,CAAO,CACd,OAAQA,CAAAA,CAAgB,OAC1B,CACF,CAAA,CCvLA,IAAMgC,EAAAA,CAAgBl5B,CAAAA,EACpBA,CAAAA,EAAU,IAAA,EAEVA,CAAAA,GAAU,EAAA,EACT,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,EAAKA,CAAAA,CAAM,MAAA,GAAW,CAAA,CAQ/Bm5B,EAAAA,CAAe,CAACtO,CAAAA,CAAyC7qB,CAAAA,GAA4B,CAChG,IAAMo5B,CAAAA,CAAUp5B,CAAAA,EAAU,IAAA,CAC1B,OAAIo5B,CAAAA,GAAYvO,CAAAA,CAAK,MAAA,GAAW,MAAA,EAAajD,EAAAA,CAAkB,QAAA,CAASiD,CAAAA,CAAK,QAAQ,CAAA,CAAA,CAC5E,IAAA,CACJlD,EAAAA,CAAgB,QAAA,CAASkD,CAAAA,CAAK,QAAQ,CAAA,CAEzCuO,CAAAA,EAAY,KAAA,CAAM,OAAA,CAAQp5B,CAAK,CAAA,EAAKA,CAAAA,CAAM,IAAA,CAAM+qB,CAAAA,EAAQA,CAAAA,EAAQ,IAAyB,CAAA,CAFtC,KAIvD,CAAA,CAIasO,EAAAA,CACXxO,CAAAA,EAEArD,EAAAA,CAAmB,QAAA,CAASqD,CAAAA,CAAK,QAAQ,CAAA,EACxC5C,EAAAA,CAAmB,QAAA,CAAS4C,CAAAA,CAAK,QAAQ,CAAA,EACxCA,CAAAA,CAAK,KAAA,GAAU,IAAA,EACfA,CAAAA,CAAK,IAAA,GAAS,MAAA,EACdA,CAAAA,CAAK,IAAA,GAAS,MAAA,CAILyO,EAAAA,CAAiB,CAACzO,CAAAA,CAAY+N,CAAAA,GAA2C,CACpF,IAAMW,CAAAA,CAAQX,CAAAA,CAAQ,OAAQY,CAAAA,EAAW,KAAA,CAAM,OAAA,CAAQA,CAAM,CAAA,EAAKA,CAAAA,GAAW,IAAI,CAAA,CAC3EC,CAAAA,CAAQlT,CAAAA,EACZgT,CAAAA,CAAM,GAAA,CAAKv5B,CAAAA,GAAW,CAAE,GAAG6qB,CAAAA,CAAM,QAAA,CAAAtE,CAAAA,CAAU,KAAA,CAAAvmB,CAAM,CAAA,CAAe,CAAA,CAClE,OAAO6qB,CAAAA,CAAK,QAAA,GAAa5F,CAAAA,CAAS,EAAA,CAC9BsM,EAAAA,CAAMkI,CAAAA,CAAKxU,CAAAA,CAAS,MAAM,CAAC,CAAA,CAC3BoM,CAAAA,CAAMoI,CAAAA,CAAKxU,CAAAA,CAAS,SAAS,CAAC,CACpC,CAAA,CAIayU,EAAAA,CAAgBtV,CAAAA,EAC3B,OAAOA,CAAAA,EAAM,QAAA,CAAWA,CAAAA,CAAE,WAAA,EAAY,CAAI,KAAA,CAAM,OAAA,CAAQA,CAAC,CAAA,CAAIA,CAAAA,CAAE,GAAA,CAAIsV,EAAY,CAAA,CAAItV,CAAAA,CAG/EuV,EAAAA,CAAc35B,CAAAA,EACd,OAAOA,CAAAA,EAAU,SAAiBmyB,EAAAA,CAAenyB,CAAK,CAAA,CACnD,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,EAAKA,CAAAA,CAAM,IAAA,CAAMokB,CAAAA,EAAM,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CAClEpkB,CAAAA,CAAM,GAAA,CAAKokB,CAAAA,EAAO,OAAOA,CAAAA,EAAM,QAAA,CAAW+N,EAAAA,CAAe/N,CAAC,CAAA,CAAIA,CAAE,CAAA,CAChEpkB,CAAAA,CAOA45B,EAAAA,CAAe,CAAC55B,CAAAA,CAAgBgnB,CAAAA,CAAiB4F,IAA0B,CAC/E,GAAI5sB,CAAAA,EAAU,IAAA,CAA6B,OAAOA,CAAAA,CAElD,GAAIqlB,EAAAA,CAAc,QAAA,CAAS2B,CAAI,CAAA,CAAG,CAChC,GAAI,OAAOhnB,CAAAA,EAAU,QAAA,EAAYA,CAAAA,CAAM,IAAA,EAAK,GAAM,EAAA,CAAI,OAAOA,CAAAA,CAE7D,GAAIgnB,CAAAA,GAAS,QAAA,EAAY,SAAA,CAAU,IAAA,CAAKhnB,CAAAA,CAAM,IAAA,EAAM,EAClD,OAAOmyB,EAAAA,CAAe,MAAA,CAAOnyB,CAAAA,CAAM,IAAA,EAAM,CAAC,CAAA,CAC5C,IAAM65B,CAAAA,CAAM,MAAA,CAAO75B,CAAK,CAAA,CACxB,OAAO,MAAA,CAAO,QAAA,CAAS65B,CAAG,CAAA,CAAIA,CAAAA,CAAM75B,CACtC,CAEA,OAAQgnB,CAAAA,EACN,KAAK,UAAA,CAAY,CAIf,GAAIhnB,CAAAA,YAAiB,IAAA,CAAM,OAAOA,CAAAA,CAAM,OAAA,EAAQ,CAEhD,GADI,OAAOA,CAAAA,EAAU,QAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,CAAU,OAAOA,CAAAA,CACtC,IAAMgjB,CAAAA,CAASkR,EAAAA,CAAel0B,CAAAA,CAAO4sB,CAAI,CAAA,CACzC,OAAO5J,CAAAA,CAAO,OAAA,EAAQ,CAAIA,CAAAA,CAAO,OAAA,EAAQ,CAAIhjB,CAC/C,CACA,KAAK,SAAA,CACH,OAAIA,IAAU,MAAA,CAAe,IAAA,CACzBA,CAAAA,GAAU,OAAA,CAAgB,KAAA,CACvBA,CAAAA,CACT,KAAK,QAAA,CACH,OAAO,OAAOA,CAAAA,EAAU,QAAA,EAAY,OAAOA,CAAAA,EAAU,SAAA,EAAa,OAAOA,CAAAA,EAAU,QAAA,CAC/E,MAAA,CAAOA,CAAK,CAAA,CACZA,CAAAA,CACN,QACE,OAAOA,CACX,CACF,CAAA,CAGa85B,EAAAA,CAAgB,CAC3B95B,CAAAA,CACAgnB,EACA4F,CAAAA,CAAeX,EAAAA,GAEXjF,CAAAA,GAAS,MAAA,CAAkBhnB,CAAAA,CAC3B,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAAUA,CAAAA,CAAM,GAAA,CAAKuwB,CAAAA,EAASqJ,EAAAA,CAAarJ,CAAAA,CAAMvJ,CAAAA,CAAM4F,CAAI,CAAC,CAAA,CAC5EgN,EAAAA,CAAa55B,CAAAA,CAAOgnB,CAAAA,CAAM4F,CAAI,CAAA,CAG1BmN,EAAAA,CAAa,CACxBhW,CAAAA,CACAhB,CAAAA,CACAY,CAAAA,CACAiL,CAAAA,CACAzC,CAAAA,CAAqB,EAAC,CAEtB6N,CAAAA,GACqB,CACrB,IAAM3H,CAAAA,CAAM2H,CAAAA,CAAWA,CAAAA,CAAS,KAAA,CAASxW,EAAAA,CAAUO,CAAAA,CAAU,KAAA,CAAOhB,CAAM,CAAA,EAAK,IAAA,CAEzEiE,CAAAA,CAAOjD,CAAAA,CAAU,UAAA,GAAesO,CAAAA,YAAe,IAAA,CAAO,UAAA,CAAa,MAAA,CAAA,CAEnEzF,CAAAA,CACJ5F,CAAAA,GAAS,UAAA,CACL+M,EAAAA,CAAkB5H,CAAAA,CAASxnB,CAAAA,EAAWoqB,EAAAA,CAAgBpqB,CAAAA,CAAQoe,CAAAA,CAAQY,EAASiL,CAAQ,CAAC,CAAA,CACrF,QAAA,CACH3C,EAAAA,CAEA4H,CAAAA,CAAaiG,EAAAA,CAAcH,EAAAA,CAAWtH,CAAG,CAAA,CAAGrL,CAAAA,CAAM4F,CAAI,CAAA,CAGtDqN,CAAAA,CAAa,CAACzS,EAAAA,CAAmB,QAAA,CAASzD,CAAAA,CAAU,QAAQ,CAAA,CAC5D/jB,CAAAA,CAAQi6B,CAAAA,CACVrF,EAAAA,CACEkF,EAAAA,CACEH,EAAAA,CAAW5K,EAAAA,CAAgBhL,CAAAA,CAAWhB,CAAAA,CAAQY,CAAAA,CAASiL,CAAQ,GAAK,IAAI,CAAA,CACxE5H,CAAAA,CACA4F,CACF,CAAA,CACA7I,CAAAA,CACAhB,CAAAA,CACAY,CAAAA,CACAiL,CACF,CAAA,CACA,MAAA,CAEJ,GAAIqL,CAAAA,EAAcd,EAAAA,CAAapV,CAAAA,CAAW/jB,CAAK,CAAA,CAC7C,OAAI2oB,CAAAA,CAAkB,QAAA,CAAS5E,CAAAA,CAAU,QAAQ,CAAA,EAAK8P,CAAAA,EAAc,IAAA,CAAa,IAAA,CAC1E9P,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,wBAAA,CAAA,CAG9C,IAAMoQ,CAAAA,CAAYjN,CAAAA,EAChBnD,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,CAAA,EAAImD,CAAE,CAAA,EAAG+S,CAAAA,CAAa,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAUj6B,CAAK,CAAC,CAAA,CAAA,CAAK,EAAE,CAAA,CAAA,CAEvFk6B,CAAAA,CAAKrV,EAAAA,CAAuBd,CAAAA,CAAU,eAAe,CAAA,CACrDoW,CAAAA,CAAS/V,CAAAA,EAAyB8V,CAAAA,CAAKR,EAAAA,CAAatV,CAAC,CAAA,CAAIA,CAAAA,CACzDgW,CAAAA,CAAMD,CAAAA,CAAMtG,CAAU,CAAA,CACtBwG,CAAAA,CAAMF,CAAAA,CAAMn6B,CAAK,CAAA,CAKjBs6B,CAAAA,CAAQvV,EAAAA,CAAahB,CAAAA,CAAU,KAAK,CAAA,CACpCwW,CAAAA,CAAgB,IACpBD,CAAAA,EAAS,OAAOzG,CAAAA,EAAe,QAAA,EAAY,OAAO7zB,CAAAA,EAAU,QAAA,CACxDs2B,EAAAA,CAAczC,CAAAA,CAAY7zB,CAAAA,CAAOs6B,CAAK,CAAA,CACtC,KAAA,CAAM,QAAQzG,CAAU,CAAA,CACrBuG,CAAAA,CAAkB,IAAA,CAAM7J,CAAAA,EAAS1O,EAAAA,CAAQ0O,CAAAA,CAAM8J,CAAG,CAAC,CAAA,CACpDG,EAAAA,CAAcJ,CAAAA,CAAKC,CAAG,CAAA,CAE9B,OAAQtW,CAAAA,CAAU,QAAA,EAEhB,KAAKkB,CAAAA,CAAS,MAAA,CACZ,OAAOpD,EAAAA,CAAQuY,CAAAA,CAAKC,CAAG,CAAA,EAAKlG,CAAAA,CAAS,YAAY,CAAA,CACnD,KAAKlP,EAAS,SAAA,CACZ,OAAO,CAACpD,EAAAA,CAAQuY,CAAAA,CAAKC,CAAG,CAAA,EAAKlG,CAAAA,CAAS,gBAAgB,CAAA,CACxD,KAAKlP,CAAAA,CAAS,QAAA,CACZ,OAAOwV,EAAAA,CAAqB5G,CAAAA,CAAY7zB,CAAAA,CAAO,IAAI,CAAA,EAAKm0B,CAAAA,CAAS,mBAAmB,CAAA,CACtF,KAAKlP,CAAAA,CAAS,cAAA,CACZ,OACEwV,EAAAA,CAAqB5G,CAAAA,CAAY7zB,CAAAA,CAAO,KAAK,GAAKm0B,CAAAA,CAAS,+BAA+B,CAAA,CAE9F,KAAKlP,CAAAA,CAAS,WAAA,CACZ,OAAOwV,EAAAA,CAAqB5G,CAAAA,CAAY7zB,CAAAA,CAAO,IAAI,CAAA,EAAKm0B,CAAAA,CAAS,sBAAsB,CAAA,CACzF,KAAKlP,CAAAA,CAAS,iBAAA,CACZ,OACEwV,EAAAA,CAAqB5G,CAAAA,CAAY7zB,CAAAA,CAAO,KAAK,CAAA,EAC7Cm0B,CAAAA,CAAS,kCAAkC,CAAA,CAE/C,KAAKlP,CAAAA,CAAS,EAAA,CACZ,OAAO2N,EAAAA,CAAQyH,CAAG,CAAA,CAAE,IAAA,CAAM9J,CAAAA,EAAS1O,EAAAA,CAAQ0O,CAAAA,CAAM6J,CAAG,CAAC,CAAA,EAAKjG,CAAAA,CAAS,gBAAgB,CAAA,CACrF,KAAKlP,CAAAA,CAAS,KAAA,CACZ,OAAO,CAAC2N,EAAAA,CAAQyH,CAAG,CAAA,CAAE,IAAA,CAAM9J,CAAAA,EAAS1O,EAAAA,CAAQ0O,CAAAA,CAAM6J,CAAG,CAAC,CAAA,EAAKjG,CAAAA,CAAS,oBAAoB,EAC1F,KAAKlP,CAAAA,CAAS,QAAA,CACZ,OAAOsV,CAAAA,EAAc,EAAKpG,CAAAA,CAAS,cAAc,CAAA,CACnD,KAAKlP,CAAAA,CAAS,WAAA,CACZ,OAAO,CAACsV,CAAAA,EAAc,EAAKpG,CAAAA,CAAS,kBAAkB,CAAA,CACxD,KAAKlP,CAAAA,CAAS,OAAA,CACZ,OACGyV,EAAAA,CAAS7G,CAAU,CAAA,EAAK8G,EAAAA,CAAU36B,CAAK,CAAA,EAAK82B,EAAAA,CAAY92B,CAAK,CAAA,CAAE,EAAA,CAAG,IAAA,CAAK6zB,CAAU,CAAA,EAClFM,CAAAA,CAAS,oBAAoB,CAAA,CAEjC,KAAKlP,CAAAA,CAAS,UAAA,CACZ,OACE,CAACyV,EAAAA,CAAS7G,CAAU,CAAA,EACpB,CAAC8G,EAAAA,CAAU36B,CAAK,CAAA,EAChB,CAAC82B,EAAAA,CAAY92B,CAAK,CAAA,CAAE,EAAA,CAAG,IAAA,CAAK6zB,CAAU,CAAA,EACtCM,CAAAA,CAAS,wBAAwB,EAErC,KAAKlP,CAAAA,CAAS,OAAA,CAAS,CACrB,IAAM2V,CAAAA,CAAQC,EAAAA,CAAa76B,CAAAA,CAAO+jB,CAAAA,CAAU,QAAQ,CAAA,CACpD,GAAI,CAAC+W,EAAAA,CAAajH,CAAAA,CAAY+G,CAAK,CAAA,CAAG,OAAOzG,CAAAA,CAAS,iBAAiB,CAAA,CACvE,IAAM4G,CAAAA,CAAuBC,EAAAA,CAAmBnH,CAAU,CAAA,CACpD,CAACoH,CAAAA,CAAK7E,CAAG,CAAA,CAAIwE,EACnB,OACGG,CAAAA,EAAwBE,CAAAA,EAAOF,CAAAA,EAAwB3E,CAAAA,EAAQjC,CAAAA,CAAS,iBAAiB,CAE9F,CACA,KAAKlP,CAAAA,CAAS,UAAA,CAAY,CACxB,IAAM2V,CAAAA,CAAQC,EAAAA,CAAa76B,CAAAA,CAAO+jB,CAAAA,CAAU,QAAQ,CAAA,CACpD,GAAI,CAAC+W,EAAAA,CAAajH,CAAAA,CAAY+G,CAAK,CAAA,CAAG,OAAO,KAAA,CAC7C,IAAMG,CAAAA,CAAuBC,GAAmBnH,CAAU,CAAA,CACpD,CAACoH,CAAAA,CAAK7E,CAAG,CAAA,CAAIwE,CAAAA,CACnB,OACEG,CAAAA,CAAuBE,CAAAA,EAAOF,CAAAA,CAAuB3E,CAAAA,EAAOjC,CAAAA,CAAS,qBAAqB,CAE9F,CACA,KAAKlP,CAAAA,CAAS,OAAA,CACZ,OAAOiU,EAAAA,CAAarF,CAAU,CAAA,EAAKM,CAAAA,CAAS,eAAe,CAAA,CAC7D,KAAKlP,CAAAA,CAAS,QAAA,CACZ,OAAO,CAACiU,EAAAA,CAAarF,CAAU,CAAA,EAAKM,CAAAA,CAAS,mBAAmB,CAAA,CAClE,KAAKlP,CAAAA,CAAS,MAAA,CACZ,OAAO4O,CAAAA,EAAc,IAAA,EAAQM,CAAAA,CAAS,YAAY,CAAA,CACpD,KAAKlP,CAAAA,CAAS,SAAA,CACZ,OAAO4O,CAAAA,EAAc,IAAA,EAAQM,CAAAA,CAAS,gBAAgB,CAAA,CACxD,KAAKlP,CAAAA,CAAS,UAAA,CACZ,OACG,OAAOmV,CAAAA,EAAQ,UAAY,OAAOC,CAAAA,EAAQ,QAAA,EAAYD,CAAAA,CAAI,UAAA,CAAWC,CAAG,CAAA,EACzElG,CAAAA,CAAS,iBAAiB,CAAA,CAE9B,KAAKlP,CAAAA,CAAS,QAAA,CACZ,OACG,OAAOmV,CAAAA,EAAQ,QAAA,EAAY,OAAOC,CAAAA,EAAQ,QAAA,EAAYD,CAAAA,CAAI,QAAA,CAASC,CAAG,CAAA,EACvElG,CAAAA,CAAS,eAAe,CAAA,CAE5B,KAAKlP,CAAAA,CAAS,aAAA,CACZ,OACE,EAAE,OAAOmV,CAAAA,EAAQ,QAAA,EAAY,OAAOC,CAAAA,EAAQ,QAAA,EAAYD,CAAAA,CAAI,UAAA,CAAWC,CAAG,CAAA,CAAA,EAC1ElG,CAAAA,CAAS,qBAAqB,CAAA,CAElC,KAAKlP,CAAAA,CAAS,WAAA,CACZ,OACE,EAAE,OAAOmV,CAAAA,EAAQ,QAAA,EAAY,OAAOC,CAAAA,EAAQ,QAAA,EAAYD,CAAAA,CAAI,QAAA,CAASC,CAAG,CAAA,CAAA,EACxElG,CAAAA,CAAS,mBAAmB,CAAA,CAEhC,QACE,MAAM,IAAI,KAAA,CAAM,kBAAkB,CACtC,CACF,CAAA,CAEMS,EAAAA,CAAQ,CACZ50B,CAAAA,CACA+jB,CAAAA,CACAhB,CAAAA,CACAY,CAAAA,CACAiL,CAAAA,GACY,CACZ,GAAI7K,CAAAA,CAAU,MAAA,GAAW,MAAA,CAAW,OAAO/jB,CAAAA,CAC3C,IAAMwsB,CAAAA,CAASgH,EAAAA,CAAazE,EAAAA,CAAgBhL,CAAAA,CAAU,MAAA,CAAQhB,CAAAA,CAAQY,EAASiL,CAAQ,CAAC,CAAA,CACxF,OAAOpC,CAAAA,GAAW,IAAA,CAAO,IAAA,CAAO8G,EAAAA,CAAUtzB,CAAAA,CAAOwsB,CAAM,CACzD,CAAA,CAEMwO,EAAAA,CAAsBh7B,CAAAA,EAC1BA,CAAAA,YAAiB,IAAA,CAAOA,CAAAA,CAAM,OAAA,EAAQ,CAAIA,CAAAA,CAEtCy6B,EAAAA,CAAuB,CAC3BS,CAAAA,CACAC,CAAAA,CACA5U,CAAAA,GACY,CACZ,GAAI,CAAC6U,EAAAA,CAAUF,CAAAA,CAAMC,CAAK,CAAA,EAAK,CAACxI,CAAAA,CAAewI,CAAK,CAAA,CAAG,OAAO,MAAA,CAE9D,IAAMf,CAAAA,CAAMY,EAAAA,CAAmBE,CAAI,CAAA,CAC7Bb,CAAAA,CAAMW,EAAAA,CAAmBG,CAAK,CAAA,CAEpC,OAAQ5U,CAAAA,EACN,KAAK,IAAA,CACH,OAAO6T,CAAAA,CAAMC,CAAAA,CACf,KAAK,KAAA,CACH,OAAOD,CAAAA,EAAOC,CAAAA,CAChB,KAAK,IAAA,CACH,OAAOD,CAAAA,CAAMC,CAAAA,CACf,KAAK,KAAA,CACH,OAAOD,CAAAA,EAAOC,CAClB,CACF,CAAA,CAEMK,EAAAA,CAAY16B,CAAAA,EAAoC,OAAOA,CAAAA,EAAU,QAAA,CAEjE26B,EAAAA,CAAa36B,CAAAA,EACjB,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,YAAiB,MAAA,CAG1C66B,EAAAA,CAAe,CAAC76B,CAAAA,CAAgBumB,CAAAA,GACpCgM,EAAAA,CACEE,EAAAA,CAAgBzyB,CAAAA,CAAOumB,CAAQ,CAAA,CAAE,GAAA,CAAKwE,CAAAA,EAAQiQ,EAAAA,CAAmBjQ,CAAuB,CAAC,CAC3F,CAAA,CAEIyP,EAAAA,CAAgB,CAACa,CAAAA,CAAoBC,CAAAA,GACzC,OAAOD,CAAAA,EAAc,QAAA,EAAY,OAAOC,CAAAA,EAAW,QAAA,EAAYD,CAAAA,CAAU,QAAA,CAASC,CAAM,CAAA,CAGpFF,EAAAA,CAAY,CAACnR,CAAAA,CAAYC,CAAAA,GAC7ByI,CAAAA,CAAe1I,CAAC,CAAA,EAAK0I,CAAAA,CAAezI,CAAC,CAAA,EAAKqR,EAAAA,CAAUtR,CAAC,CAAA,GAAMsR,EAAAA,CAAUrR,CAAC,CAAA,CAElEqR,EAAAA,CAAav7B,CAAAA,EACjBA,CAAAA,YAAiB,IAAA,CAAO,MAAA,CAAS,OAAOA,CAAAA,CAGpC86B,EAAAA,CAAe,CACnB96B,CAAAA,CACA46B,CAAAA,GAEAjI,CAAAA,CAAe3yB,CAAK,CAAA,EAAK,OAAOg7B,EAAAA,CAAmBh7B,CAAK,CAAA,EAAM,OAAO46B,CAAAA,CAAM,CAAC,CAAA,CCrVvE,IAAMY,GAAa3Q,CAAAA,EACxBA,CAAAA,CAAK,MAAA,GAAW,MAAA,EAChB,CAAC,CAACA,CAAAA,CAAK,OAAA,EAAS,MAAA,EAChBA,CAAAA,CAAK,IAAA,GAAS,MAAA,EACdA,CAAAA,CAAK,IAAA,GAAS,MAAA,CAEV4Q,EAAAA,CAAuB1X,CAAAA,EAA6D,CACxF,GAAI,OAAOA,CAAAA,EAAc,QAAA,EAAYA,CAAAA,GAAc,IAAA,CAAM,OAAO,IAAA,CAChE,IAAMkL,CAAAA,CAAIlL,CAAAA,CACJ2X,CAAAA,CAAQtK,EAAenC,CAAC,CAAA,CAC9B,OAAKyM,CAAAA,GAAU,OAAA,EAAWA,CAAAA,GAAU,MAAA,EAAW,OAAOzM,CAAAA,CAAE,KAAA,EAAU,QAAA,CAAiB,IAAA,CAC5E,CAAE,EAAA,CAAI,MAAA,CAAOyM,CAAAA,GAAU,MAAA,CAASzM,CAAAA,CAAE,YAAA,CAAeA,CAAAA,CAAE,QAAQ,CAAA,CAAG,KAAA,CAAOA,CAAAA,CAAE,KAAM,CACtF,CAAA,CAeM0M,EAAAA,CAAmB9Q,CAAAA,EAAsC,CAI7D,GAHIA,CAAAA,CAAK,MAAA,GAAW,MAAA,EAChBA,CAAAA,CAAK,IAAA,GAAS,MAAA,EAAaA,CAAAA,CAAK,IAAA,GAAS,CAAA,EACzCA,CAAAA,CAAK,IAAA,GAAS,CAAA,EACdA,CAAAA,CAAK,OAAA,EAAS,MAAA,GAAW,CAAA,CAAG,OAAO,IAAA,CACvC,GAAM,CAAE,KAAA,CAAO+Q,CAAAA,CAAY,GAAA,CAAAC,CAAI,CAAA,CAAIhR,CAAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CACjD,GAAIgR,IAAQ,KAAA,EAASA,CAAAA,GAAQ,MAAA,CAAQ,OAAO,IAAA,CAE5C,IAAI7U,CAAAA,CAA6B,IAAA,CAIjC,GAHI6D,CAAAA,CAAK,aAAA,GAAkB3F,CAAAA,CAAc,GAAA,CAAK8B,CAAAA,CAAO,KAAA,CAAA,CAC5C6D,CAAAA,CAAK,aAAA,GAAkB3F,CAAAA,CAAc,GAAA,EACrC2F,CAAAA,CAAK,aAAA,GAAkB3F,CAAAA,CAAc,OAAA,EAAW2F,CAAAA,CAAK,KAAA,GAAU,CAAA,IAAG7D,CAAAA,CAAO,KAAA,CAAA,CAC9E,CAACA,CAAAA,CAAM,OAAO,IAAA,CAElB,IAAM8U,CAAAA,CAAML,EAAAA,CAAoB5Q,CAAAA,CAAK,SAAS,CAAA,CAC9C,GAAI,CAACiR,CAAAA,EAAOA,CAAAA,CAAI,KAAA,GAAUF,CAAAA,CAAY,OAAO,IAAA,CAC7C,IAAMG,CAAAA,CAAU/S,EAAAA,CAAsB,QAAA,CAAS8S,CAAAA,CAAI,EAAE,CAAA,CAC/CE,CAAAA,CAAU/S,EAAAA,CAAsB,QAAA,CAAS6S,CAAAA,CAAI,EAAE,CAAA,CACrD,GAAI,CAACC,GAAW,CAACC,CAAAA,CAAS,OAAO,IAAA,CAEjC,IAAM5F,CAAAA,CAAMyF,CAAAA,GAAQ,MAAA,CAGpB,GAAI,EADF7U,CAAAA,GAAS,KAAA,CAASoP,CAAAA,EAAO2F,CAAAA,EAAa,CAAC3F,CAAAA,EAAO4F,CAAAA,CAAY5F,CAAAA,EAAO4F,CAAAA,EAAa,CAAC5F,CAAAA,EAAO2F,CAAAA,CAAAA,CAC1E,OAAO,IAAA,CAErB,GAAM,CAAE,OAAA,CAAAE,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,KAAAC,CAAAA,CAAM,KAAA,CAAAl3B,CAAAA,CAAO,GAAGgtB,CAAK,CAAA,CAAIpH,CAAAA,CAChD,GAAI7D,CAAAA,GAAS,KAAA,CAAO,OAAO,CAAE,GAAGiL,CAAAA,CAAM,aAAA,CAAe/M,CAAAA,CAAc,GAAI,CAAA,CACvE,IAAMkX,CAAAA,CAAU,CAAE,KAAA,CAAOR,CAAAA,CAAY,QAAA,CAAU3W,CAAAA,CAAS,MAAO,CAAA,CAC/D,OAAO,CACL,GAAA,CAAK,CACH,CAAE,KAAA,CAAO4F,CAAAA,CAAK,KAAA,CAAO,aAAA,CAAe3F,CAAAA,CAAc,KAAM,CAAA,CACxD,CACE,GAAA,CAAK,CACH,CAAE,KAAA,CAAO2F,CAAAA,CAAK,KAAA,CAAO,aAAA,CAAe3F,CAAAA,CAAc,GAAA,CAAK,SAAA,CAAWkX,CAAQ,CAAA,CAC1E,CACE,GAAGnK,CAAAA,CACH,aAAA,CAAe/M,CAAAA,CAAc,GAAA,CAC7B,SAAA,CAAW,CAAE,EAAA,CAAIkX,EAAS,IAAA,CAAMvR,CAAAA,CAAK,SAAU,CACjD,CACF,CACF,CACF,CACF,CACF,CAAA,CAQawR,EAAAA,CAAc,CACzBC,CAAAA,CACAzR,CAAAA,CACA0R,CAAAA,GACQ,CACR,IAAI3L,CAAAA,CAAM0L,CAAAA,CAEV,GADIzR,CAAAA,CAAK,MAAA,GAAW,MAAA,EAAa0R,CAAAA,GAAU3L,CAAAA,CAAMA,CAAAA,CAAI,MAAA,CAAO2L,CAAQ,CAAA,CAAA,CAChE1R,CAAAA,CAAK,SAAS,MAAA,CAAQ,CACxB,IAAMje,CAAAA,CAAOie,CAAAA,CAAK,OAAA,CAClB+F,CAAAA,CAAM,CAAC,GAAGA,CAAG,CAAA,CAAE,IAAA,CAAK,CAAC3G,CAAAA,CAAGC,CAAAA,GAAM,CAC5B,IAAA,GAAW,CAAE,KAAA,CAAAjD,CAAAA,CAAO,GAAA,CAAA4U,CAAI,CAAA,GAAKjvB,CAAAA,CAAM,CACjC,IAAM4vB,CAAAA,CAAQC,EAAAA,CAAiBlZ,CAAAA,CAAY0G,CAAAA,CAAGhD,CAAK,CAAA,CAAG1D,CAAAA,CAAY2G,CAAAA,CAAGjD,CAAK,CAAA,CAAG4U,CAAG,CAAA,CAChF,GAAIW,CAAAA,GAAU,CAAA,CAAG,OAAOA,CAC1B,CACA,OAAO,CACT,CAAC,EACH,CACA,OAAI3R,CAAAA,CAAK,IAAA,GAAS,MAAA,GAAW+F,CAAAA,CAAMA,CAAAA,CAAI,KAAA,CAAM/F,CAAAA,CAAK,IAAI,CAAA,CAAA,CAClDA,CAAAA,CAAK,IAAA,GAAS,SAAW+F,CAAAA,CAAMA,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG/F,CAAAA,CAAK,IAAI,CAAA,CAAA,CAClD+F,CACT,CAAA,CAIM6L,EAAAA,CAAmB,CAACxS,CAAAA,CAAYC,CAAAA,CAAY2R,CAAAA,GAAgC,CAChF,IAAMa,CAAAA,CAAQzS,CAAAA,EAAM,IAAA,CACd0S,CAAAA,CAAQzS,CAAAA,EAAM,IAAA,CACpB,GAAIwS,CAAAA,EAASC,CAAAA,CAAO,OAAOD,CAAAA,GAAUC,CAAAA,CAAQ,CAAA,CAAID,CAAAA,CAAQ,EAAI,EAAA,CAC7D,IAAME,CAAAA,CAAI3S,CAAAA,YAAa,IAAA,CAAOA,CAAAA,CAAE,OAAA,EAAQ,CAAKA,CAAAA,CACvC4S,CAAAA,CAAI3S,CAAAA,YAAa,IAAA,CAAOA,CAAAA,CAAE,OAAA,EAAQ,CAAKA,CAAAA,CACvCsS,CAAAA,CAAQI,CAAAA,CAAIC,CAAAA,CAAI,EAAA,CAAKD,CAAAA,CAAIC,CAAAA,CAAI,CAAA,CAAI,CAAA,CACvC,OAAOhB,CAAAA,GAAQ,KAAA,CAAQW,CAAAA,CAAQ,CAACA,CAClC,EAQaM,EAAAA,CAAiBjS,CAAAA,EAAsD,CAClF,GAAI,CAAC2Q,EAAAA,CAAU3Q,CAAI,CAAA,CAAG,OAAOA,CAAAA,CAC7B,IAAMkS,CAAAA,CAAU,CAAC,CAAClS,CAAAA,CAAK,OAAA,EAAS,MAAA,EAAUA,CAAAA,CAAK,IAAA,GAAS,MAAA,EAAaA,CAAAA,CAAK,IAAA,GAAS,MAAA,CACnF,GAAIA,CAAAA,CAAK,MAAA,GAAW,MAAA,EAAa,CAACkS,CAAAA,CAAS,CACzC,GAAM,CAAE,MAAA,CAAAC,CAAAA,CAAQ,GAAG/K,CAAK,CAAA,CAAIpH,CAAAA,CAC5B,GAAI,WAAA,GAAeA,CAAAA,CACjB,OAAO,CACL,GAAGoH,CAAAA,CACH,SAAA,CAAWpH,CAAAA,CAAK,SAAA,GAAc,MAAA,CAAYmS,CAAAA,CAAS3L,CAAAA,CAAM,CAAC2L,CAAAA,CAAQnS,CAAAA,CAAK,SAAS,CAAC,CACnF,CAAA,CACF,OAAQA,CAAAA,CAAK,aAAA,EACX,KAAK,KAAA,CACH,OAAO,CAAE,GAAGoH,CAAAA,CAAM,SAAA,CAAW,CAAE,EAAA,CAAI+K,CAAAA,CAAQ,IAAA,CAAMnS,CAAAA,CAAK,SAAA,EAAa,IAAK,CAAE,CAAA,CAC5E,KAAK,OAAA,CACH,OAAO,CAAE,GAAGoH,CAAAA,CAAM,aAAA,CAAe,MAAA,CAAQ,SAAA,CAAW+K,CAAO,CAAA,CAC7D,KAAK,UAAA,CACH,OAAO,CAAE,GAAG/K,CAAAA,CAAM,aAAA,CAAe,KAAA,CAAO,SAAA,CAAW+K,CAAO,CAAA,CAC5D,QACE,OAAO,CACL,GAAG/K,CAAAA,CACH,SAAA,CAAWpH,CAAAA,CAAK,SAAA,GAAc,MAAA,CAAYmS,CAAAA,CAAS3L,CAAAA,CAAM,CAAC2L,CAAAA,CAAQnS,CAAAA,CAAK,SAAS,CAAC,CACnF,CACJ,CACF,CACA,OAAO,WAAA,GAAeA,CAAAA,EAAQA,EAAK,MAAA,GAAW,MAAA,CAAY,IAAA,CAAO8Q,EAAAA,CAAgB9Q,CAAI,CACvF,CAAA,CC9GA,IAAMoS,EAAAA,CAA0BpS,CAAAA,EAC9B0E,CAAAA,CAAe1E,CAAAA,CAAOnE,CAAAA,EAAS,CAC7B,IAAMgV,CAAAA,CAAQtK,CAAAA,CAAe1K,CAA+B,CAAA,CAC5D,GAAI,EAAAgV,CAAAA,GAAU,KAAA,EAASA,CAAAA,GAAU,KAAA,CAAA,CACjC,CAAA,GAAIA,CAAAA,GAAU,OAAA,EAAW,EAAE,OAAA,GAAWhV,GAAO,OAAO,MAAA,CACpD,MAAM,IAAI,KAAA,CACR,sGACF,CAAA,CACF,CAAC,CAAA,CAEUwW,EAAAA,CAAQ,CACnB5L,CAAAA,CACArjB,CAAAA,CACAkvB,CAAAA,IAEI,KAAA,CAAM,OAAA,CAAQlvB,CAAI,CAAA,EAAGgvB,EAAAA,CAAuB3L,CAAU,CAAA,CACnD8L,EAAAA,CAAS9L,CAAAA,CAAYrjB,CAAAA,CAAM,CAChC,GAAGkvB,CAAAA,CACH,OAAA,CAASA,CAAAA,EAAS,OAAA,EAAWlvB,EAC7B,MAAA,CAAQ,CAACA,CAAI,CACf,CAAC,CAAA,CAAA,CAGGmvB,EAAAA,CAAW,CACf9L,CAAAA,CACArjB,CAAAA,CACA+hB,CAAAA,GACqB,CACrB,GAAI,OAAOsB,CAAAA,EAAe,SAAA,CAAW,OAAOA,CAAAA,CAE5C,IAAM5K,CAAAA,CAAO4K,CAAAA,CACb,OAAQF,CAAAA,CAAeE,CAAqC,CAAA,EAC1D,KAAK,KAAA,CACH,OAAO+L,EAAAA,CAAK3W,EAAa,GAAA,CAAKzY,CAAAA,CAAM+hB,CAAAA,CAAOtJ,CAAAA,CAAa,KAAK,CAAA,CAC/D,KAAK,KAAA,CACH,OAAO4W,EAAAA,CAAK5W,CAAAA,CAAa,GAAA,CAAKzY,CAAAA,CAAM+hB,CAAAA,CAAOtJ,CAAAA,CAAa,KAAK,CAAA,CAC/D,KAAK,IAAA,CACH,OAAO6W,EAAAA,CAAgB7W,CAAAA,CAAMzY,CAAAA,CAAM+hB,CAAI,CAAA,CACzC,KAAK,OAAA,CACH,OAAOwN,EAAAA,CAAW9W,CAAAA,CAAMsJ,CAAI,CAAA,CAC9B,KAAK,WAAA,CACH,OAAOyN,EAAAA,CAAe/W,CAAAA,CAAMsJ,CAAI,CAAA,CAClC,KAAK,MAAA,CACH,OAAO4D,EAAAA,CAAUlN,CAAAA,CAAMsJ,CAAAA,CAAK,MAAA,CAAQA,CAAAA,CAAK,OAAA,CAAgBA,CAAAA,CAAMA,CAAAA,CAAK,QAAQ,CAAA,CAC9E,KAAK,OAAA,CACH,OAAO+J,EAAAA,CAAWrT,CAAAA,CAAMsJ,CAAAA,CAAK,MAAA,CAAQA,CAAAA,CAAK,OAAA,CAAgBA,EAAK,QAAA,CAAUA,CAAI,CAAA,CAC/E,QACE,MAAM9E,EAAAA,EACV,CACF,CAAA,CAEMsE,EAAAA,CAAQ,CAACQ,CAAAA,CAAmBO,CAAAA,IAAgC,CAChE,GAAGP,CAAAA,CACH,MAAA,CAAQ,CAAC,GAAGA,CAAAA,CAAK,MAAA,CAAQO,CAAI,CAC/B,CAAA,CAAA,CAEM8M,EAAAA,CAAM,CACV/L,CAAAA,CACArjB,CAAAA,CACA+hB,CAAAA,CACAkH,CAAAA,GACqB,CACrB,IAAMwG,CAAAA,CAAmB,EAAC,CAE1B,IAAA,IAAW3Z,CAAAA,IAAauN,CAAAA,CAAY,CAClC,IAAMlxB,CAAAA,CAASg9B,EAAAA,CAASrZ,CAAAA,CAAW9V,CAAAA,CAAM+hB,CAAI,CAAA,CACzC5vB,CAAAA,GAAW,IAAA,GACT,OAAOA,CAAAA,EAAW,QAAA,CACpBs9B,CAAAA,CAAO,IAAA,CAAKt9B,CAAM,CAAA,CAElBs9B,CAAAA,CAAO,IAAA,CAAK,OAAO,CAAA,EAGzB,CAEA,OAAKA,EAAO,MAAA,CACRxG,CAAAA,GACAwG,CAAAA,CAAO,MAAA,GAAW,CAAA,CAAUA,CAAAA,CAAO,CAAC,CAAA,CACjC,CAAA,0BAAA,EAA6BA,CAAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA,CAAA,CAAA,CAH7B,IAI7B,CAAA,CAEMJ,EAAAA,CAAM,CACVhM,CAAAA,CACArjB,CAAAA,CACA+hB,CAAAA,CACAkH,CAAAA,GACqB,CACrB,IAAMwG,CAAAA,CAAmB,EAAC,CAE1B,IAAA,IAAW3Z,CAAAA,IAAauN,CAAAA,CAAY,CAClC,IAAMlxB,CAAAA,CAASg9B,EAAAA,CAASrZ,CAAAA,CAAW9V,CAAAA,CAAM+hB,CAAI,CAAA,CAC7C,GAAI5vB,CAAAA,GAAW,IAAA,CAAM,OAAO,KAAA,CACxB,OAAOA,CAAAA,EAAW,QAAA,EAAUs9B,CAAAA,CAAO,IAAA,CAAKt9B,CAAM,EACpD,CAEA,OAAI82B,CAAAA,GACAwG,CAAAA,CAAO,MAAA,GAAW,CAAA,CAAUA,CAAAA,CAAO,CAAC,CAAA,CACjC,CAAA,kCAAA,EAAqCA,CAAAA,CAAO,KAAK,MAAM,CAAC,CAAA,CAAA,CACjE,CAAA,CAEMH,EAAAA,CAAkB,CACtBxZ,CAAAA,CACA9V,CAAAA,CACA+hB,CAAAA,GAEiBoN,EAAAA,CAASrZ,CAAAA,CAAU,EAAA,CAAI9V,CAAAA,CAAM+hB,CAAI,CAAA,GACjC,IAAA,CAAaoN,EAAAA,CAASrZ,CAAAA,CAAU,IAAA,CAAM9V,CAAAA,CAAM+hB,CAAI,CAAA,CAG1DjM,CAAAA,CAAU,IAAA,GAAS,MAAA,CAAYqZ,EAAAA,CAASrZ,CAAAA,CAAU,IAAA,CAAM9V,CAAAA,CAAM+hB,CAAI,EAAI,IAAA,CAIzE2N,EAAAA,CAAY,CAAC39B,CAAAA,CAAgBinB,CAAAA,GAA6B,CAC9D,GAAIjnB,CAAAA,EAAU,IAAA,CAA6B,OAAO,EAAC,CACnD,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CAAG,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGinB,CAAK,CAAA,iBAAA,CAAmB,CAAA,CACtE,OAAOjnB,CACT,CAAA,CAEMy9B,EAAAA,CAAiB,CAAC1Z,EAA0BiM,CAAAA,GAAwC,CACxF,IAAM4N,CAAAA,CAAWD,EAAAA,CAAUna,EAAAA,CAAUO,CAAAA,CAAU,KAAA,CAAOiM,CAAAA,CAAK,MAAM,CAAA,CAAGjM,CAAAA,CAAU,KAAK,CAAA,CAC7E8Z,EAAe9Z,CAAAA,CAAU,MAAA,CACzB+Z,CAAAA,CAAazB,EAAAA,CACjBuB,CAAAA,CACA7Z,CAAAA,CACA8Z,CAAAA,CACKtN,CAAAA,EAAS6M,EAAAA,CAASS,CAAAA,CAActN,CAAAA,CAAaf,EAAAA,CAAMQ,CAAAA,CAAMO,CAAI,CAAC,CAAA,GAAM,IAAA,CACrE,MACN,CAAA,CAEM,CAAE,IAAA,CAAAtF,CAAAA,CAAM,KAAA,CAAO8S,CAAU,CAAA,CAAIha,CAAAA,CAAU,SAAA,CAE7C,GAAI,CAACgE,EAAAA,CAAgB,QAAA,CAASkD,CAAI,CAAA,CAAG,MAAMD,EAAAA,CAAqBC,CAAI,CAAA,CAEpE,IAAM+S,CAAAA,CAAkBja,CAAAA,CAAU,SAAA,CAQ5Bka,CAAAA,CAAAA,CAPWD,CAAAA,CACbF,CAAAA,CAAW,MAAA,CACRvN,GAAS6M,EAAAA,CAASY,CAAAA,CAAiBzN,CAAAA,CAAaf,EAAAA,CAAMQ,CAAAA,CAAMO,CAAI,CAAC,CAAA,GAAM,IAC1E,CAAA,CACAuN,CAAAA,EAG+B,OAAA,CAAQ,CAACvN,CAAAA,CAAMnvB,CAAAA,GAAU,CAC1D,IAAMixB,CAAAA,CAAM0L,CAAAA,CAAYxa,CAAAA,CAAYgN,CAAAA,CAAMwN,CAAS,CAAA,CAAIxN,CAAAA,CACvD,GAAI8B,CAAAA,EAAQ,IAAA,CAA2B,OAAO,EAAC,CAC/C,GAAI,OAAOA,CAAAA,EAAQ,QAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASA,CAAG,CAAA,CAAG,CACpD,IAAM6L,CAAAA,CAAM,CAAA,EAAGna,CAAAA,CAAU,KAAK,CAAA,CAAA,EAAI3iB,CAAK,CAAA,CAAA,EAAI28B,CAAAA,CAAY,CAAA,CAAA,EAAIA,CAAS,CAAA,CAAA,CAAK,EAAE,CAAA,CAAA,CAC3E,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGG,CAAG,CAAA,wBAAA,CAA0B,CAClD,CACA,OAAO,CAAC7L,CAAG,CACb,CAAC,CAAA,CAIK8L,CAAAA,CAAMF,CAAAA,CAAQ,MAAA,CAAO,CAAC1R,CAAAA,CAAO7jB,CAAAA,GAAM6jB,CAAAA,CAAQ7jB,CAAAA,CAAG,CAAC,CAAA,CAC/CtI,CAAAA,CAAS6qB,CAAAA,GAAS,KAAA,EAASgT,CAAAA,CAAQ,MAAA,GAAW,CAAA,CAAIE,CAAAA,CAAMA,CAAAA,CAAMF,CAAAA,CAAQ,MAAA,CACtEG,CAAAA,CAAW,CAAE,GAAGra,CAAAA,CAAW,MAAO,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,CAAA,EAAIkH,CAAI,CAAA,CAAG,CAAA,CACrE,OAAO8O,EAAAA,CAAWqE,CAAAA,CAAUpO,CAAAA,CAAK,MAAA,CAAQA,CAAAA,CAAK,OAAA,CAASA,CAAAA,CAAK,QAAA,CAAUA,CAAAA,CAAM,CAAE,KAAA,CAAO5vB,CAAO,CAAC,CAC/F,CAAA,CAEMo9B,EAAAA,CAAa,CAACzZ,CAAAA,CAAsBiM,CAAAA,GAAwC,CAChF,IAAM4N,CAAAA,CAAWD,GACf5Z,CAAAA,CAAU,KAAA,CAAQP,EAAAA,CAAUO,CAAAA,CAAU,KAAA,CAAOiM,CAAAA,CAAK,MAAM,CAAA,CAAIA,CAAAA,CAAK,MAAA,CAAOA,CAAAA,CAAK,MAAA,CAAO,MAAA,CAAS,CAAC,CAAA,CAC9FjM,CAAAA,CAAU,KAAA,EAAS,QACrB,CAAA,CACM8Z,CAAAA,CAAe9Z,CAAAA,CAAU,MAAA,CACzB+Z,CAAAA,CAAazB,EAAAA,CACjBuB,CAAAA,CACA7Z,CAAAA,CACA8Z,CAAAA,CACKtN,CAAAA,EAAS6M,EAAAA,CAASS,CAAAA,CAActN,EAAaf,EAAAA,CAAMQ,CAAAA,CAAMO,CAAI,CAAC,CAAA,GAAM,IAAA,CACrE,MACN,CAAA,CAEM4D,CAAAA,CAAYkK,CAAAA,EAAuBta,CAAAA,CAAU,KAAA,EAAS,CAAA,EAAGA,CAAAA,CAAU,KAAK,CAAA,CAAA,EAAIsa,CAAU,CAAA,CAAA,CAEtFC,CAAAA,CAAgBva,CAAAA,CAAU,SAAA,CAC1Bwa,CAAAA,CAAc9V,EAAAA,CAA0B,QAAA,CAAS1E,CAAAA,CAAU,aAAa,CAAA,CAC9E,GAAIwa,CAAAA,EAAeD,CAAAA,GAAkB,OAAW,MAAM7T,EAAAA,CAAkB1G,CAAAA,CAAU,aAAa,CAAA,CAE/F,IAAM9e,CAAAA,CAAQ8e,CAAAA,CAAU,KAAA,EAAS,CAAA,CACjC,GAAIyE,EAAAA,CAAsB,QAAA,CAASzE,CAAAA,CAAU,aAAa,CAAA,EAAKA,CAAAA,CAAU,KAAA,GAAU,MAAA,CACjF,MAAMwG,EAAAA,CAAcxG,CAAAA,CAAU,aAAa,CAAA,CAE7C,IAAIya,CAAAA,CAAU,CAAA,CACVC,CAAAA,CAAW,CAAA,CAEf,GAAIF,GAAeD,CAAAA,GAAkB,MAAA,CAAW,CAC9C,GAAIR,CAAAA,CAAW,MAAA,CAAS,CAAA,EAAK,CAACvb,EAAAA,CAAKub,CAAAA,CAAY97B,CAAQ,CAAA,CACrD,OAAOmyB,CAAAA,CACL,uGACF,CAAA,CAEF,IAAMuK,CAAAA,CAAUZ,CAAAA,CAAW,GAAA,CAAKvN,CAAAA,EAC9B6M,EAAAA,CAASkB,CAAAA,CAAe/N,CAAAA,CAAaf,EAAAA,CAAMQ,CAAAA,CAAMO,CAAI,CAAC,CACxD,CAAA,CACAiO,EAAUE,CAAAA,CAAQ,MAAA,CAAQzN,CAAAA,EAAMA,CAAAA,GAAM,IAAI,CAAA,CAAE,MAAA,CAC5CwN,CAAAA,CAAWC,CAAAA,CAAQ,MAAA,CAAQzN,CAAAA,EAAM,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CAAE,OAC1D,CAEA,OAAQlN,CAAAA,CAAU,aAAA,EAChB,KAAKmB,CAAAA,CAAc,KAAA,CACjB,OAAO,CAAC4Y,CAAAA,CAAW,MAAA,EAAU3J,CAAAA,CAAS,eAAe,EAEvD,KAAKjP,CAAAA,CAAc,QAAA,CACjB,OAAO,CAAC,CAAC4Y,CAAAA,CAAW,MAAA,EAAU3J,CAAAA,CAAS,mBAAmB,CAAA,CAE5D,KAAKjP,CAAAA,CAAc,GAAA,CACjB,OACEsZ,CAAAA,GAAYV,CAAAA,CAAW,MAAA,EAAU3J,CAAAA,CAAS,CAAA,yBAAA,EAA4BsK,CAAQ,CAAA,QAAA,CAAU,CAAA,CAG5F,KAAKvZ,CAAAA,CAAc,GAAA,CACjB,OAAO,CAAC,CAACsZ,CAAAA,EAAWrK,EAAS,iCAAiC,CAAA,CAEhE,KAAKjP,CAAAA,CAAc,IAAA,CACjB,OAAO,CAACsZ,CAAAA,EAAWrK,CAAAA,CAAS,CAAA,0BAAA,EAA6BqK,CAAO,CAAA,SAAA,CAAW,CAAA,CAE7E,KAAKtZ,CAAAA,CAAc,OAAA,CACjB,OACEsZ,CAAAA,EAAWv5B,CAAAA,EAASkvB,CAAAA,CAAS,CAAA,SAAA,EAAYlvB,CAAK,CAAA,sBAAA,EAAyBu5B,CAAO,CAAA,SAAA,CAAW,CAAA,CAG7F,KAAKtZ,CAAAA,CAAc,MAAA,CACjB,OACEsZ,GAAWv5B,CAAAA,EAASkvB,CAAAA,CAAS,CAAA,QAAA,EAAWlvB,CAAK,CAAA,sBAAA,EAAyBu5B,CAAO,CAAA,SAAA,CAAW,CAAA,CAG5F,KAAKtZ,CAAAA,CAAc,OAAA,CACjB,OACEsZ,CAAAA,GAAYv5B,CAAAA,EAASkvB,CAAAA,CAAS,CAAA,QAAA,EAAWlvB,CAAK,CAAA,sBAAA,EAAyBu5B,CAAO,CAAA,SAAA,CAAW,CAAA,CAG7F,QACE,MAAM3X,CAAAA,CAAiB9C,CAAAA,CAAwB,aAAA,CAAe,OAAO,CACzE,CACF,ECjRO,IAAM4a,CAAAA,CAAM,CAAIC,CAAAA,CAAuCh7B,CAAAA,GAC5Dg7B,CAAAA,GAAW,MAAA,EAAa,MAAA,CAAO,MAAA,CAAOA,CAAAA,CAAQh7B,CAAG,CAAA,CAAIg7B,CAAAA,CAAOh7B,CAAG,CAAA,CAAI,MAAA,CAGxDi7B,EAAAA,CAAW,CAAID,CAAAA,CAA2Bh7B,CAAAA,CAAak7B,CAAAA,IAC7D,MAAA,CAAO,MAAA,CAAOF,CAAAA,CAAQh7B,CAAG,CAAA,GAAGg7B,CAAAA,CAAOh7B,CAAG,CAAA,CAAIk7B,CAAAA,EAAK,CAAA,CAC7CF,EAAOh7B,CAAG,CAAA,CAAA,CAINm7B,CAAAA,CAAU,CAAC5uB,CAAAA,CAA2B6uB,CAAAA,GACjDL,CAAAA,CAAIxuB,CAAAA,EAAK,MAAA,CAAQ6uB,CAAK,CAAA,CAGXC,EAAAA,CAAU,CACrB9uB,CAAAA,CACA6uB,CAAAA,CACA/X,CAAAA,GAC8B0X,CAAAA,CAAII,CAAAA,CAAQ5uB,CAAAA,CAAK6uB,CAAK,CAAA,EAAG,MAAA,CAAQ/X,CAAK,CAAA,CCjB/D,IAAMiY,EAAAA,CAAc,CAAC,CAC1B,QAAA,CAAAC,CAAAA,CACA,MAAAH,CACF,CAAA,GAA0D,CAAA,EAAGG,CAAQ,CAAA,CAAA,EAAIH,CAAK,CAAA,CAAA,CAGjEI,EAAAA,CAAmB,CAC9Bx7B,CAAAA,CACAy7B,CAAAA,GAC2C,CAC3C,IAAMhc,CAAAA,CAAKzf,CAAAA,CAAI,OAAA,CAAQ,GAAG,CAAA,CAC1B,OAAOyf,CAAAA,GAAO,EAAA,CACV,CAAE,OAAA,CAASgc,CAAAA,CAAY,SAAA,CAAWz7B,CAAI,CAAA,CACtC,CAAE,OAAA,CAASA,CAAAA,CAAI,MAAM,CAAA,CAAGyf,CAAE,CAAA,CAAG,SAAA,CAAWzf,CAAAA,CAAI,KAAA,CAAMyf,CAAAA,CAAK,CAAC,CAAE,CAChE,CAAA,CCLA,IAAMic,EAAAA,CAAc,CAClBC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,GACwB,CACxB,IAAM9O,CAAAA,CAA2B,EAAC,CAClC,IAAA,IAAW+O,CAAAA,IAAOJ,CAAAA,CAAM,CACtB,IAAMK,CAAAA,CAAIjB,CAAAA,CAAIgB,EAAKH,CAAE,CAAA,CACrB,GAAuBI,CAAAA,EAAM,IAAA,CAAM,SACnC,IAAMh8B,CAAAA,CAAM,MAAA,CAAOg8B,CAAC,CAAA,CACpB,GAAI,MAAA,CAAO,MAAA,CAAOhP,CAAAA,CAAKhtB,CAAG,CAAA,CAAG,CAC3B,IAAMi8B,CAAAA,CACJH,CAAAA,GAAS,KAAA,CACL,CAAA,mFAAA,EAAiFD,CAAa,CAAA,oBAAA,CAAA,CAC9F,CAAA,iCAAA,EAAoCD,CAAE,CAAA,mBAAA,CAAA,CAC5C,MAAM,IAAI,MACR,CAAA,yBAAA,EAA4BA,CAAE,CAAA,SAAA,EAAY57B,CAAG,CAAA,MAAA,EAAS67B,CAAa,CAAA,SAAA,EAAOI,CAAI,CAAA,CAAA,CAChF,CACF,CACAjP,CAAAA,CAAIhtB,CAAG,CAAA,CAAI+7B,EACb,CACA,OAAO/O,CACT,CAAA,CAGMkP,EAAAA,CAAa,CAACP,CAAAA,CAAaC,CAAAA,GAAsC,CACrE,IAAM5O,CAAAA,CAA6B,EAAC,CACpC,IAAA,IAAW+O,CAAAA,IAAOJ,EAAM,CACtB,IAAMK,CAAAA,CAAIjB,CAAAA,CAAIgB,CAAAA,CAAKH,CAAE,CAAA,CACjBI,CAAAA,EAAM,IAAA,EACVf,EAAAA,CAASjO,CAAAA,CAAK,MAAA,CAAOgP,CAAC,CAAA,CAAG,IAAM,EAAE,CAAA,CAAE,IAAA,CAAKD,CAAG,EAC7C,CACA,OAAO/O,CACT,CAAA,CAEamP,EAAAA,CAAe,CAC1B5jB,CAAAA,CACA6jB,CAAAA,GACqB,CACrB,IAAMpP,CAAAA,CAAwB,EAAC,CAC/B,IAAA,IAAWqP,CAAAA,IAAU9jB,CAAAA,CAAI,OAAA,EAAW,EAAC,CAAG,CACtC,GAAM,CAAC8N,CAAAA,CAAGC,CAAC,CAAA,CAAI+V,CAAAA,CAAO,SAAA,CAChBC,CAAAA,CAAOhB,EAAAA,CAAYjV,CAAC,CAAA,CACpBkW,CAAAA,CAAOjB,EAAAA,CAAYhV,CAAC,CAAA,CACpBkW,CAAAA,CAAQH,CAAAA,CAAO,WAAA,GAAgB,WAAA,CAAc,KAAA,CAAQ,WACrDI,CAAAA,CAAW,CACflB,CAAAA,CACAH,CAAAA,GAEAH,EAAAA,CACEA,EAAAA,CAASjO,CAAAA,CAAKuO,CAAAA,CAAU,KAAO,EAAC,CAAE,CAAA,CAClCH,CAAAA,CACA,KAAO,EAAC,CACV,CAAA,CACIsB,CAAAA,CAAQ3B,CAAAA,CAAIqB,CAAAA,CAASE,CAAI,CAAA,CAC3BI,CAAAA,GAAOD,CAAAA,CAASpW,CAAAA,CAAE,QAAA,CAAUA,CAAAA,CAAE,KAAK,CAAA,CAAEA,CAAAA,CAAE,EAAE,CAAA,CAAIqV,EAAAA,CAAYgB,CAAAA,CAAOrW,CAAAA,CAAE,EAAA,CAAIiW,CAAAA,CAAME,CAAK,CAAA,CAAA,CACrF,IAAMG,CAAAA,CAAQ5B,CAAAA,CAAIqB,CAAAA,CAASG,CAAI,CAAA,CAC3BI,CAAAA,GACEN,CAAAA,CAAO,WAAA,GAAgB,WAAA,CACzBI,CAAAA,CAASnW,CAAAA,CAAE,QAAA,CAAUA,CAAAA,CAAE,KAAK,CAAA,CAAEA,CAAAA,CAAE,EAAE,CAAA,CAAI4V,EAAAA,CAAWS,CAAAA,CAAOrW,CAAAA,CAAE,EAAE,CAAA,CAE5DmW,CAAAA,CAASnW,CAAAA,CAAE,QAAA,CAAUA,CAAAA,CAAE,KAAK,CAAA,CAAEA,CAAAA,CAAE,EAAE,CAAA,CAAIoV,EAAAA,CAAYiB,CAAAA,CAAOrW,CAAAA,CAAE,EAAA,CAAIiW,CAAAA,CAAM,UAAU,CAAA,EAGrF,CACA,OAAOvP,CACT,EC5EO,IAAM4P,EAAAA,CAAmBrkB,CAAAA,EAAkC,CAChE,IAAMyU,CAAAA,CAAmB,CACvB,IAAA,CAAM,eAAA,CAAgBzU,EAAI,IAAI,CAAA,CAC9B,OAAA,CAASA,CAAAA,CAAI,OAAA,CAAU,eAAA,CAAgBA,CAAAA,CAAI,OAAO,CAAA,CAAI,MACxD,CAAA,CAEA,IAAA,IAAW8jB,CAAAA,IAAU9jB,CAAAA,CAAI,OAAA,EAAW,EAAC,CAAG,CACtC,GAAM,CAAC8N,CAAAA,CAAGC,CAAC,CAAA,CAAI+V,CAAAA,CAAO,SAAA,CAChBC,CAAAA,CAAOhB,EAAAA,CAAYjV,CAAC,CAAA,CACpBkW,CAAAA,CAAOjB,GAAYhV,CAAC,CAAA,CACpBuW,CAAAA,CAAS1B,CAAAA,CAAQJ,CAAAA,CAAI/N,CAAAA,CAAI,IAAA,CAAM3G,CAAAA,CAAE,QAAQ,CAAA,CAAGA,CAAAA,CAAE,KAAK,CAAA,CACnDyW,CAAAA,CAAS3B,CAAAA,CAAQJ,CAAAA,CAAI/N,CAAAA,CAAI,IAAA,CAAM1G,CAAAA,CAAE,QAAQ,CAAA,CAAGA,CAAAA,CAAE,KAAK,CAAA,CACzD,GAAI,CAACuW,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,8BAA8BP,CAAI,CAAA,WAAA,CAAa,CAAA,CAEjE,GAAI,CAACQ,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8BP,CAAI,CAAA,WAAA,CAAa,CAAA,CAEjE,GAAIlW,CAAAA,CAAE,QAAA,GAAaC,CAAAA,CAAE,QAAA,EAAYD,CAAAA,CAAE,KAAA,GAAUC,CAAAA,CAAE,KAAA,CAC7C,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiCgW,CAAI,CAAA,4BAAA,CAA8B,CAAA,CAErF,GAAI,CAACvB,CAAAA,CAAI8B,CAAAA,CAAO,MAAA,CAAQxW,CAAAA,CAAE,EAAE,CAAA,CAC1B,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8BiW,CAAI,CAAA,gBAAA,EAAmBjW,CAAAA,CAAE,EAAE,CAAA,UAAA,CAAY,CAAA,CAEvF,GAAI,CAAC0U,CAAAA,CAAI+B,CAAAA,CAAO,MAAA,CAAQxW,CAAAA,CAAE,EAAE,CAAA,CAC1B,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8BiW,CAAI,CAAA,gBAAA,EAAmBjW,EAAE,EAAE,CAAA,UAAA,CAAY,CAAA,CAGvF,GAAIyU,CAAAA,CAAI8B,CAAAA,CAAO,MAAA,CAAQN,CAAI,CAAA,CACzB,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4BA,CAAI,CAAA,uBAAA,EAA0BD,CAAI,CAAA,CAAA,CAAG,CAAA,CAEnF,GAAIvB,CAAAA,CAAI+B,CAAAA,CAAO,MAAA,CAAQR,CAAI,CAAA,CACzB,MAAM,IAAI,KAAA,CAAM,CAAA,yBAAA,EAA4BA,CAAI,CAAA,uBAAA,EAA0BC,CAAI,CAAA,CAAA,CAAG,CAAA,CAGnF,IAAMQ,CAAAA,CAAcV,CAAAA,CAAO,WAAA,GAAgB,WAAA,CAC3CQ,CAAAA,CAAO,MAAA,CAAON,CAAI,CAAA,CAAI,CAAE,IAAA,CAAM,QAAA,CAAU,IAAA,CAAMA,CAAAA,CAAM,MAAA,CAAQQ,CAAY,CAAA,CACxED,CAAAA,CAAO,MAAA,CAAOR,CAAI,CAAA,CAAI,CAAE,IAAA,CAAM,QAAA,CAAU,IAAA,CAAMA,CAAAA,CAAM,MAAA,CAAQ,KAAM,EACpE,CAEA,OAAOtP,CACT,ECcO,IAAMgQ,EAAAA,CAAoBlD,CAAAA,GAAiD,CAChF,EAAA,CAAIA,CAAAA,CAAO,MAAA,GAAW,CAAA,CACtB,MAAA,CAAAA,CACF,CAAA,CAAA,CAGamD,EAAAA,CAAiB,CAACzgC,CAAAA,CAA0B20B,CAAAA,GAAwB,CAC/E,GAAI,CAAA30B,CAAAA,CAAO,EAAA,CACX,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG20B,CAAK,CAAA;AAAA,EAAM30B,CAAAA,CAAO,MAAA,CAAO,GAAA,CAAK0gC,CAAAA,EAAM,CAAA,EAAGA,CAAAA,CAAE,IAAI,CAAA,EAAA,EAAKA,CAAAA,CAAE,OAAO,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK;AAAA,CAAI,CAAC,CAAA,CAAE,CAChG,CAAA,CAUaC,EAAAA,CAAe,CAC1Bhd,CAAAA,CACAoZ,CAAAA,CAA+B,EAAC,GACX,CACrB,IAAMxZ,CAAAA,CAA6B,CACjC,MAAA,CAAQwZ,CAAAA,CAAQ,QAAU,OAAA,CAC1B,MAAA,CAAQ,EACV,EAEA,OAAA6D,EAAAA,CAAkBjd,CAAAA,CAAW,GAAA,CAAKJ,EAAS,CAAC,CAAA,CACrCid,EAAAA,CAAiBjd,CAAAA,CAAQ,MAAM,CACxC,CAAA,CAEasd,GAAkB,CAC7Bld,CAAAA,CACAoZ,EAA+B,EAAC,GACG,CACnC0D,EAAAA,CAAeE,GAAahd,CAAAA,CAAWoZ,CAAO,CAAA,CAAG,cAAc,EACjE,CAAA,CAEM6D,EAAAA,CAAoB,CACxBjd,CAAAA,CACAvR,EACAmR,CAAAA,CACAf,CAAAA,GACS,CACT,GAAI,OAAOmB,GAAc,SAAA,CAAW,OAEpC,GAAI,CAAC3Q,GAAc2Q,CAAS,CAAA,CAAG,CAC7Bmd,CAAAA,CAAUvd,EAASnR,CAAAA,CAAM,mBAAA,CAAqB,uCAAuC,CAAA,CACrF,MACF,CAEA,IAAMkpB,EAAQtK,CAAAA,CAAerN,CAAS,EACtC,GAAI,CAAC2X,CAAAA,CAAO,CACVwF,EAAUvd,CAAAA,CAASnR,CAAAA,CAAM,qBAAA,CAAuB0Y,EAAAA,GAAqB,OAAO,CAAA,CAC5E,MACF,CAEA,OAAQwQ,CAAAA,EACN,KAAK,KAAA,CACHyF,EAAAA,CAAqBpd,EAAU,GAAA,CAAK,CAAA,EAAGvR,CAAI,CAAA,IAAA,CAAA,CAAQmR,EAASf,CAAK,CAAA,CACjE,MACF,KAAK,MACHue,EAAAA,CAAqBpd,CAAAA,CAAU,GAAA,CAAK,CAAA,EAAGvR,CAAI,CAAA,IAAA,CAAA,CAAQmR,CAAAA,CAASf,CAAK,CAAA,CACjE,MACF,KAAK,IAAA,CACHoe,EAAAA,CAAkBjd,CAAAA,CAAU,EAAA,CAAI,GAAGvR,CAAI,CAAA,GAAA,CAAA,CAAOmR,CAAAA,CAASf,CAAK,EAC5Doe,EAAAA,CAAkBjd,CAAAA,CAAU,IAAA,CAAM,CAAA,EAAGvR,CAAI,CAAA,KAAA,CAAA,CAASmR,CAAAA,CAASf,CAAK,CAAA,CAC5D,MAAA,GAAUmB,GAAaA,CAAAA,CAAU,IAAA,GAAS,MAAA,EAC5Cid,EAAAA,CAAkBjd,EAAU,IAAA,CAAM,CAAA,EAAGvR,CAAI,CAAA,KAAA,CAAA,CAASmR,EAASf,CAAK,CAAA,CAElE,MACF,KAAK,QACHwe,EAAAA,CAAkBrd,CAAAA,CAAWvR,EAAMmR,CAAAA,CAASf,CAAK,EACjD,MACF,KAAK,WAAA,CACHye,EAAAA,CAAsBtd,EAAWvR,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CACrD,MACF,KAAK,OAAA,CACH0e,EAAAA,CAAkBvd,CAAAA,CAAWvR,EAAMmR,CAAAA,CAASf,CAAK,EACjD,MACF,KAAK,OACH2e,EAAAA,CAAiBxd,CAAAA,CAAWvR,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CAChD,KACJ,CACF,CAAA,CAEMue,GAAuB,CAC3BnhC,CAAAA,CACAwS,CAAAA,CACAmR,CAAAA,CACAf,IACS,CACT,GAAI,CAAC,KAAA,CAAM,OAAA,CAAQ5iB,CAAK,CAAA,CAAG,CACzBkhC,CAAAA,CACEvd,CAAAA,CACAnR,EACA,wBAAA,CACA,kDACF,CAAA,CACA,MACF,CAEAxS,CAAAA,CAAM,OAAA,CAAQ,CAACuwB,CAAAA,CAAMnvB,IAAU,CAC7B4/B,EAAAA,CAAkBzQ,EAAM,CAAA,EAAG/d,CAAI,IAAIpR,CAAK,CAAA,CAAA,CAAA,CAAKuiB,CAAAA,CAASf,CAAK,EAC7D,CAAC,EACH,CAAA,CAEM4e,EAAAA,CAAgB,CACpB3W,CAAAA,CACArY,CAAAA,CACAmR,CAAAA,CACAf,CAAAA,GACS,CACL,OAAOiI,CAAAA,CAAK,OAAU,QAAA,EACxB4W,EAAAA,CAAY5W,EAAK,KAAA,CAAO,OAAA,CAAS,CAAA,EAAGrY,CAAI,SAAUmR,CAAAA,CAASf,CAAK,EACpE,CAAA,CAEM6e,GAAc,CAClB/e,CAAAA,CACA9e,CAAAA,CACA89B,CAAAA,CACA/d,EACAf,CAAAA,GACS,CACT,IAAMI,CAAAA,CAASP,CAAAA,CAAcC,CAAG,CAAA,CAChC,GAAI,CAACM,CAAAA,CAAQ,OACb,IAAM+R,CAAAA,CAAQnxB,CAAAA,GAAQ,OAAA,CAAU,QAAU,MAAA,CACtCof,CAAAA,CAAO,KAAA,CAAQJ,CAAAA,EACjBse,EACEvd,CAAAA,CACA+d,CAAAA,CACA,sBACA/e,EAAAA,CAAiBD,CAAAA,CAAKM,EAAO,KAAA,CAAOJ,CAAK,CAC3C,CAAA,CAEEe,EAAQ,MAAA,GAAW,UAAA,CACrBud,CAAAA,CACEvd,CAAAA,CACA+d,EACA,CAAA,mBAAA,EAAsB99B,CAAG,CAAA,CAAA,CACzB,CAAA,EAAGmxB,CAAK,CAAA,EAAA,EAAKrS,CAAG,kCAClB,CAAA,CACSiB,CAAAA,CAAQ,SAAW,OAAA,GAAY/f,CAAAA,GAAQ,OAAA,EAAWof,CAAAA,CAAO,MAAQ,CAAA,CAAA,EAC1Eke,CAAAA,CACEvd,EACA+d,CAAAA,CACA,CAAA,gBAAA,EAAmB99B,CAAG,CAAA,CAAA,CACtB,CAAA,EAAGmxB,CAAK,CAAA,EAAA,EAAKrS,CAAG,CAAA,6BAAA,CAClB,EAEJ,EAOMif,EAAAA,CAAiB,CACrBh9B,EACA0e,CAAAA,CACAM,CAAAA,CACAf,CAAAA,GACsB,CACtB,IAAMgf,CAAAA,CAAQvT,EAAAA,CAAa,MAAA,CAAQwT,CAAAA,EAASl9B,EAAOk9B,CAAI,CAAA,GAAM,MAAS,CAAA,CACtE,GAAID,CAAAA,CAAM,MAAA,CAAS,EACjB,OAAAV,CAAAA,CAAUvd,EAASN,CAAAA,CAAI,wBAAA,CAA0B,kCAAkC,CAAA,CAC5E,KAET,GAAIue,CAAAA,CAAM,MAAA,GAAW,CAAA,CACnB,OAAAV,CAAAA,CAAUvd,CAAAA,CAASN,CAAAA,CAAI,sBAAA,CAAwB,8BAA8B,CAAA,CACtE,IAAA,CAET,GAAM,CAACwe,CAAI,EAAID,CAAAA,CACf,OAAIC,CAAAA,GAAS,OAAA,GAAY,OAAOl9B,CAAAA,CAAOk9B,CAAI,CAAA,EAAM,QAAA,EAAYl9B,EAAOk9B,CAAI,CAAA,GAAM,EAAA,CAAA,EAC5EX,CAAAA,CAAUvd,EAAS,CAAA,EAAGN,CAAE,IAAIwe,CAAI,CAAA,CAAA,CAAI,uBAAwB,CAAA,EAAGA,CAAI,CAAA,sBAAA,CAAwB,CAAA,CACpF,OAGPl9B,CAAAA,CAAO,YAAA,GAAiB,MAAA,GACvBk9B,CAAAA,GAAS,QAAU,OAAOl9B,CAAAA,CAAO,YAAA,EAAiB,SAAA,CAAA,EAEnDu8B,EACEvd,CAAAA,CACA,CAAA,EAAGN,CAAE,CAAA,aAAA,CAAA,CACL,sBAAA,CACA,uCACF,CAAA,CACEwe,CAAAA,GAAS,MAAA,EAAQJ,EAAAA,CAAY98B,EAAO,IAAA,CAAgB,MAAA,CAAQ,CAAA,EAAG0e,CAAE,QAASM,CAAAA,CAASf,CAAK,CAAA,CACrFif,CAAAA,CACT,EAIMC,EAAAA,CAAiB,CACrBjX,EACA7D,CAAAA,CACAT,CAAAA,CACA/T,EACAmR,CAAAA,CACAf,CAAAA,GACS,CACT,GAAM,CAAE,MAAA,CAAA7P,CAAO,CAAA,CAAI8X,CAAAA,CACnB,GAAI9X,CAAAA,GAAW,MAAA,CAAW,OAC1B,IAAMsQ,EAAK,CAAA,EAAG7Q,CAAI,UAClB,GAAI,CAAC8V,GAAiB,QAAA,CAAS/B,CAAQ,CAAA,CAAG,CACxC2a,EACEvd,CAAAA,CACAN,CAAAA,CACA,6BAAA,CACA,CAAA,UAAA,EAAakD,CAAQ,CAAA,mCAAA,CACvB,CAAA,CACA,MACF,CACA,GAAI,CAACnT,EAAAA,CAAcL,CAAM,CAAA,CAAG,CAC1BmuB,EAAUvd,CAAAA,CAASN,CAAAA,CAAI,gBAAA,CAAkB,qDAAqD,EAC9F,MACF,CACA,IAAMwe,CAAAA,CAAOF,EAAAA,CAAe5uB,EAAQsQ,CAAAA,CAAIM,CAAAA,CAASf,CAAK,CAAA,CACtD,GAAIif,CAAAA,GAAS,MAAA,CAAQ,CACnB,IAAMnf,CAAAA,CAAM3P,EAAO,IAAA,CACbgvB,CAAAA,CAASzT,EAAAA,CAAOvb,CAAM,EACxBiU,CAAAA,GAAS,MAAA,EAAU+a,CAAAA,EAAUA,CAAAA,CAAO,OAAS,CAAA,EAAKpe,CAAAA,CAAQ,MAAA,GAAW,OAAA,EACvEud,EACEvd,CAAAA,CACA,CAAA,EAAGN,CAAE,CAAA,KAAA,CAAA,CACL,sBAAA,CACA,iCAAiCX,CAAG,CAAA,8BAAA,CACtC,CAAA,CACF,MACF,CACA,GAAImf,CAAAA,GAAS,OAAA,CAAS,OACtB,IAAM7hC,CAAAA,CAAQ+S,CAAAA,CAAO,KAAA,CACrB,GAAIiU,IAAS,OAAA,CAAS,CAAA,CAChB,OAAOhnB,CAAAA,EAAU,QAAA,EAAY,CAAC,MAAA,CAAO,QAAA,CAASA,CAAK,CAAA,GACrDkhC,EAAUvd,CAAAA,CAAS,CAAA,EAAGN,CAAE,CAAA,MAAA,CAAA,CAAU,iBAAkB,kCAAkC,CAAA,CACxF,MACF,CACA,IAAM0K,CAAAA,CACJ3a,EAAAA,CAAcpT,CAAK,CAAA,EAAK,MAAA,CAAO,KAAKA,CAAK,CAAA,CAAE,MAAA,GAAW,CAAA,EAAKgsB,EAAWhsB,CAAK,CAAA,CACvEmtB,EAAAA,CAAantB,CAAK,EAClB,IAAA,CACN,GAAI,CAAC+tB,CAAAA,CAAS,CACZmT,CAAAA,CACEvd,CAAAA,CACA,GAAGN,CAAE,CAAA,MAAA,CAAA,CACL,iBACA,6CACF,CAAA,CACA,MACF,CACA2e,GACEjU,CAAAA,CAAQ,CAAC,CAAA,CACT,CAAA,EAAG1K,CAAE,CAAA,OAAA,EAAU,MAAA,CAAO,IAAA,CAAKrjB,CAAe,EAAE,CAAC,CAAC,GAC9C2jB,CAAAA,CACAf,CACF,EACF,CAAA,CAGMqf,EAAAA,CAAoB,CACxBpX,CAAAA,CACAtE,EACA/T,CAAAA,CACAmR,CAAAA,GACS,CACLA,CAAAA,CAAQ,SAAW,OAAA,EAAW,CAACgE,EAAAA,CAAgB,QAAA,CAASpB,CAAQ,CAAA,EAC/D+H,EAAAA,CAAOzD,CAAI,CAAA,EAChBqW,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,CAAA,KAAA,CAAA,CACP,sBAAA,CACA,+BAA+BqY,CAAAA,CAAK,IAAI,CAAA,8BAAA,CAC1C,EACF,EAEMuW,EAAAA,CAAoB,CACxBvW,CAAAA,CACArY,CAAAA,CACAmR,EACAf,CAAAA,GACS,CAMT,GALI,OAAOiI,CAAAA,CAAK,OAAU,QAAA,EACxBqW,CAAAA,CAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,CAAA,MAAA,CAAA,CAAU,gBAAA,CAAkB,oCAAoC,CAAA,CAE5FgvB,EAAAA,CAAc3W,EAAMrY,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CAEpC,OAAOiI,CAAAA,CAAK,QAAA,EAAa,UAAY,CAACvE,EAAAA,CAAauE,EAAK,QAAA,CAAU,OAAO,CAAA,CAAG,CAC9EqW,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,SAAA,CAAA,CACP,mBACAqU,CAAAA,CAAgBgE,CAAAA,CAAK,QAAA,CAAU,OAAO,EAAE,OAC1C,CAAA,CACA,MACF,CAEA,IAAMtE,EAAWsE,CAAAA,CAAK,QAAA,CACtBiX,EAAAA,CAAejX,CAAAA,CAAM,QAAStE,CAAAA,CAAU/T,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,EAEvDkE,EAAAA,CAA6BP,CAAAA,CAAU,OAAA,CAAS5C,CAAAA,CAAQ,MAAM,CAAA,EACjEud,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,YACP,CAAA,YAAA,EAAe0vB,EAAAA,CAAWve,CAAAA,CAAQ,MAAM,CAAC,CAAA,SAAA,CAAA,CACzC,CAAA,UAAA,EAAa4C,CAAQ,CAAA,sBAAA,EAAyB5C,EAAQ,MAAM,CAAA,EAAA,CAC9D,CAAA,CAGEkH,CAAAA,CAAK,aAAe,MAAA,EAAa,CAACjF,GAAYiF,CAAAA,CAAK,UAAU,GAC/DqW,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,cACP,qBAAA,CACA,CAAA,2BAAA,EAA8B,MAAA,CAAO,IAAA,CAAK4S,CAAS,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,EACjE,CAAA,CAGF,IAAMsW,EAAQ9U,EAAAA,CAAcL,CAAAA,CAAU,OAAO,CAAA,CAE7C,GAAImV,CAAAA,GAAU,MAAA,CAAQ,CACpByG,EAAAA,CAAmBtX,CAAAA,CAAMrY,CAAAA,CAAMmR,CAAO,EACtC,MACF,CAEIge,EAAAA,CAAe9W,CAAAA,CAAMrY,EAAMmR,CAAAA,CAASf,CAAK,IAAM,IAAA,GACnDqf,EAAAA,CAAkBpX,EAAMtE,CAAAA,CAAU/T,CAAAA,CAAMmR,CAAO,CAAA,CAC3C,SAAOkH,CAAAA,CAAK,IAAA,EAAS,QAAA,EAAY,OAAOA,EAAK,IAAA,EAAS,QAAA,CAAA,EAE1DuX,EAAAA,CAAmB1G,CAAAA,CAAO7Q,EAAK,KAAA,CAAOtE,CAAAA,CAAU,GAAG/T,CAAI,CAAA,MAAA,CAAA,CAAUmR,CAAO,CAAA,EAC1E,CAAA,CAEMye,EAAAA,CAAqB,CACzB1G,EACA17B,CAAAA,CACAumB,CAAAA,CACA/T,CAAAA,CACAmR,CAAAA,GACS,CACT,OAAQ+X,CAAAA,EACN,KAAK,SACL,KAAK,QAAA,CACCA,IAAU,QAAA,EAAY,OAAO17B,GAAU,QAAA,EACzCkhC,CAAAA,CACEvd,CAAAA,CACAnR,CAAAA,CACA,uBACA,CAAA,UAAA,EAAa+T,CAAQ,2BACvB,CAAA,CAEF,OACF,KAAK,SAAA,CACEoM,CAAAA,CAAe3yB,CAAK,CAAA,EACvBkhC,EACEvd,CAAAA,CACAnR,CAAAA,CACA,wBACA,CAAA,UAAA,EAAa+T,CAAQ,4CACvB,CAAA,CAEF,OACF,KAAK,OAAA,CACE,MAAM,OAAA,CAAQvmB,CAAK,CAAA,EACtBkhC,CAAAA,CACEvd,EACAnR,CAAAA,CACA,0BAAA,CACA,CAAA,UAAA,EAAa+T,CAAQ,2BACvB,CAAA,CAEF,OACF,KAAK,SAAA,CAAW,CACd,GAAI,EAAE,OAAOvmB,CAAAA,EAAU,QAAA,EAAYA,aAAiB,MAAA,CAAA,CAAS,CAC3DkhC,CAAAA,CACEvd,CAAAA,CACAnR,EACA,uBAAA,CACA,CAAA,UAAA,EAAa+T,CAAQ,CAAA,mCAAA,CACvB,EACA,MACF,CACA,IAAM4M,CAAAA,CAAU8F,EAAAA,CAAej5B,EAAO2jB,CAAAA,CAAQ,MAAM,CAAA,CAChDwP,CAAAA,EAAS+N,EAAUvd,CAAAA,CAASnR,CAAAA,CAAM,qBAAA,CAAuB2gB,CAAO,EACpE,MACF,CACA,KAAK,OAAA,CACH,GAAI,CACFV,EAAAA,CAAgBzyB,EAAOumB,CAAQ,EACjC,OAAS2Q,CAAAA,CAAO,CACdgK,CAAAA,CAAUvd,CAAAA,CAASnR,EAAM,qBAAA,CAAwB0kB,CAAAA,CAAgB,OAAO,EAC1E,CACA,MACJ,CACF,CAAA,CAEMmK,EAAAA,CAAwB,CAC5BxW,CAAAA,CACArY,CAAAA,CACAmR,EACAf,CAAAA,GACS,CAUT,GATIiI,CAAAA,CAAK,MAAA,GAAW,MAAA,EAClBqW,CAAAA,CAAUvd,EAAS,CAAA,EAAGnR,CAAI,CAAA,OAAA,CAAA,CAAW,mBAAA,CAAqB,gCAAgC,CAAA,CAC5F6vB,EAAAA,CAAexX,CAAAA,CAAMrY,CAAAA,CAAMmR,EAASf,CAAK,CAAA,CAErC,OAAOiI,CAAAA,CAAK,KAAA,EAAU,UACxBqW,CAAAA,CAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,SAAU,gBAAA,CAAkB,wCAAwC,CAAA,CAEhGgvB,EAAAA,CAAc3W,EAAMrY,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CAEpC,CAACxP,EAAAA,CAAcyX,CAAAA,CAAK,SAAS,CAAA,CAAG,CAClCqW,EAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,CAAA,UAAA,CAAA,CAAc,oBAAqB,6BAA6B,CAAA,CAC1F,MACF,CAEA,IAAM8vB,CAAAA,CAAMzX,CAAAA,CAAK,SAAA,CAkBjB,GAjBK9C,GAAgB,QAAA,CAASua,CAAAA,CAAI,IAAqB,CAAA,EACrDpB,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,CAAA,eAAA,CAAA,CACP,wBAAA,CACAwY,GAAqBsX,CAAAA,CAAI,IAAI,EAAE,OACjC,CAAA,CAEE,UAAWA,CAAAA,EAAOA,CAAAA,CAAI,KAAA,GAAU,MAAA,EAAa,OAAOA,CAAAA,CAAI,KAAA,EAAU,UACpEpB,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,gBAAA,CAAA,CACP,yBAAA,CACA,kCACF,EAGE,CAACsV,EAAAA,CAAoB,QAAA,CAAS+C,CAAAA,CAAK,QAAoB,CAAA,CAAG,CAC5DqW,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,SAAA,CAAA,CACP,6BACA,CAAA,8BAAA,EAAiCsV,EAAAA,CAAoB,KAAK,IAAI,CAAC,CAAA,CACjE,CAAA,CACA,MACF,CAwBA,GAtBInE,CAAAA,CAAQ,MAAA,GAAW,YAAc,OAAOkH,CAAAA,CAAK,IAAA,EAAS,QAAA,EACxDqW,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,KAAA,CAAA,CACP,mCAAA,CACA,4EACF,CAAA,CAGE,WAAA,GAAeqY,CAAAA,EAAQA,CAAAA,CAAK,YAAc,MAAA,GACxClH,CAAAA,CAAQ,MAAA,GAAW,OAAA,EACrBud,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,UAAA,CAAA,CACP,sCACA,sFACF,CAAA,CAEFwuB,GAAkBnW,CAAAA,CAAK,SAAA,CAAW,GAAGrY,CAAI,CAAA,UAAA,CAAA,CAAcmR,CAAAA,CAASf,CAAAA,CAAQ,CAAC,CAAA,CAAA,CAGvE+e,EAAAA,CAAe9W,CAAAA,CAAMrY,CAAAA,CAAMmR,EAASf,CAAK,CAAA,GAAM,IAAA,EAC/C,OAAOiI,EAAK,IAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,CAAK,IAAA,EAAS,SAAU,OAEpE,IAAM7qB,CAAAA,CAAQ6qB,CAAAA,CAAK,MACflD,EAAAA,CAAgB,QAAA,CAASkD,CAAAA,CAAK,QAAkB,EAC7C0X,EAAAA,CAAeviC,CAAK,CAAA,EACvBkhC,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,SACP,qBAAA,CACA,CAAA,UAAA,EAAaqY,EAAK,QAAQ,CAAA,mCAAA,CAC5B,CAAA,CAGE,OAAO7qB,GAAU,QAAA,EACnBkhC,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,yBAAA,CACA,uCACF,EAGN,EAEM8uB,EAAAA,CAAoB,CACxBzW,EACArY,CAAAA,CACAmR,CAAAA,CACAf,IACS,CAeT,GAdI,OAAOiI,CAAAA,CAAK,OAAU,QAAA,EACpBlH,CAAAA,CAAQ,MAAA,GAAW,OAAA,EACrBud,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,iBACA,oDACF,CAAA,CAGJgvB,GAAc3W,CAAAA,CAAMrY,CAAAA,CAAMmR,EAASf,CAAK,CAAA,CAExCyf,EAAAA,CAAexX,CAAAA,CAAMrY,EAAMmR,CAAAA,CAASf,CAAK,EAErC,OAAOiI,CAAAA,CAAK,eAAkB,QAAA,EAAY,CAACvE,EAAAA,CAAauE,CAAAA,CAAK,cAAe,OAAO,CAAA,CAAG,CACxFqW,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,cAAA,CAAA,CACP,wBAAA,CACAqU,CAAAA,CAAgBgE,EAAK,aAAA,CAAe,OAAO,CAAA,CAAE,OAC/C,EACA,MACF,CAEA,IAAMtE,CAAAA,CAAWsE,EAAK,aAAA,CAEjB/D,EAAAA,CAA6BP,EAAU,OAAA,CAAS5C,CAAAA,CAAQ,MAAM,CAAA,EACjEud,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,cAAA,CAAA,CACP,CAAA,YAAA,EAAe0vB,EAAAA,CAAWve,CAAAA,CAAQ,MAAM,CAAC,CAAA,eAAA,CAAA,CACzC,CAAA,gBAAA,EAAmB4C,CAAQ,yBAAyB5C,CAAAA,CAAQ,MAAM,IACpE,CAAA,CAKF,IAAM+X,EAAQ9U,EAAAA,CAAcL,CAAAA,CAA2B,OAAO,CAAA,CACxDic,EAAe3X,CAAAA,CAAK,SAAA,GAAc,MAAA,CAClC4X,CAAAA,CAAc,IAAY,CAC1B5X,CAAAA,CAAK,KAAA,GAAU,MAAA,EACjBqW,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,kBAAA,CACA,mBAAmB+T,CAAQ,CAAA,uBAAA,CAC7B,EACJ,CAAA,CACImV,IAAU,MAAA,EACR8G,CAAAA,EACFtB,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,UAAA,CAAA,CACP,sBAAA,CACA,CAAA,gBAAA,EAAmB+T,CAAQ,CAAA,2BAAA,CAC7B,CAAA,CACFkc,GAAY,EACH/G,CAAAA,GAAU,aACf8G,CAAAA,CAAcxB,EAAAA,CAAkBnW,CAAAA,CAAK,SAAA,CAAW,GAAGrY,CAAI,CAAA,UAAA,CAAA,CAAcmR,CAAAA,CAASf,CAAAA,CAAQ,CAAC,CAAA,CAEzFse,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,UAAA,CAAA,CACP,mBAAA,CACAiY,GAAkBlE,CAAQ,CAAA,CAAE,OAC9B,CAAA,CACFkc,CAAAA,EAAY,EACH/G,CAAAA,GAAU,UACf/X,CAAAA,CAAQ,MAAA,GAAW,UAAA,EAAc,OAAOkH,EAAK,KAAA,EAAU,QAAA,CACzDqW,CAAAA,CAAUvd,CAAAA,CAAS,GAAGnR,CAAI,CAAA,MAAA,CAAA,CAAU,gBAAiB+X,EAAAA,CAAchE,CAAQ,EAAE,OAAO,CAAA,CAEpFsE,CAAAA,CAAK,KAAA,GAAU,QACf,EAAE,OAAOA,CAAAA,CAAK,KAAA,EAAU,UAAY,MAAA,CAAO,SAAA,CAAUA,CAAAA,CAAK,KAAK,GAAKA,CAAAA,CAAK,KAAA,EAAS,IAElFqW,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,eAAA,CACA,2CACF,EACEgwB,CAAAA,CAAcxB,EAAAA,CAAkBnW,EAAK,SAAA,CAAW,CAAA,EAAGrY,CAAI,CAAA,UAAA,CAAA,CAAcmR,CAAAA,CAASf,CAAAA,CAAQ,CAAC,EAClFe,CAAAA,CAAQ,MAAA,GAAW,SAC1Bud,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,UAAA,CAAA,CACP,mBAAA,CACAiY,EAAAA,CAAkBlE,CAAQ,CAAA,CAAE,OAC9B,CAAA,EAEN,CAAA,CAEMgb,GAAmB,CACvB1W,CAAAA,CACArY,CAAAA,CACAmR,CAAAA,CACAf,IACS,CAMT,GALI,OAAOiI,CAAAA,CAAK,KAAA,EAAU,UACxBqW,CAAAA,CAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,SAAU,gBAAA,CAAkB,mCAAmC,CAAA,CAE3FgvB,EAAAA,CAAc3W,EAAMrY,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CAEpC,OAAOiI,CAAAA,CAAK,YAAA,EAAiB,UAAY,CAACvE,EAAAA,CAAauE,EAAK,YAAA,CAAc,MAAM,CAAA,CAAG,CACrFqW,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,aAAA,CAAA,CACP,wBACAqU,CAAAA,CAAgBgE,CAAAA,CAAK,YAAA,CAAc,MAAM,EAAE,OAC7C,CAAA,CACA,MACF,CAEA,IAAMtE,EAAWsE,CAAAA,CAAK,YAAA,CACtBiX,EAAAA,CAAejX,CAAAA,CAAM,OAAQtE,CAAAA,CAAU/T,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,EAEtDkE,EAAAA,CAA6BP,CAAAA,CAAU,MAAA,CAAQ5C,CAAAA,CAAQ,MAAM,CAAA,EAChEud,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,gBACP,CAAA,YAAA,EAAe0vB,EAAAA,CAAWve,CAAAA,CAAQ,MAAM,CAAC,CAAA,cAAA,CAAA,CACzC,CAAA,eAAA,EAAkB4C,CAAQ,CAAA,sBAAA,EAAyB5C,EAAQ,MAAM,CAAA,EAAA,CACnE,CAAA,CAGF,IAAM+X,EAAQ9U,EAAAA,CAAcL,CAAAA,CAAU,MAAM,CAAA,CAE5C,GAAImV,IAAU,SAAA,CAAW,CACvB,GAAIiG,EAAAA,CAAe9W,EAAMrY,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,GAAM,QAAS,OAC5D,IAAMkK,CAAAA,CAAOjC,CAAAA,CAAK,OACd,CAAC,KAAA,CAAM,QAAQiC,CAAI,CAAA,EAAK,CAACA,CAAAA,CAAK,KAAA,CAAOwH,CAAAA,EAAQ,OAAOA,GAAQ,QAAA,EAAYzK,EAAAA,CAAUyK,CAAG,CAAC,IACxF4M,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,SACP,kBAAA,CACA,CAAA,eAAA,EAAkB+T,CAAQ,CAAA,kCAAA,EAAqCqD,EAAAA,CAAU,KAAK,IAAI,CAAC,CAAA,CAAA,CACrF,CAAA,CACF,MACF,CAEA,GAAI+X,EAAAA,CAAe9W,CAAAA,CAAMrY,EAAMmR,CAAAA,CAASf,CAAK,CAAA,GAAM,IAAA,GACnDqf,GAAkBpX,CAAAA,CAAMtE,CAAAA,CAAU/T,EAAMmR,CAAO,CAAA,CAC3C,SAAOkH,CAAAA,CAAK,IAAA,EAAS,QAAA,EAAY,OAAOA,EAAK,IAAA,EAAS,QAAA,CAAA,CAAA,CAG1D,CAAA,GAAImB,CAAAA,CAAWnB,EAAK,KAAK,CAAA,CAAG,CAC1B6X,EAAAA,CAAiB7X,EAAK,KAAA,CAAOtE,CAAAA,CAAU,GAAG/T,CAAI,CAAA,MAAA,CAAA,CAAUmR,EAASf,CAAK,CAAA,CACtE,MACF,CAEA,GAAI8E,EAAAA,CAAiB,QAAA,CAASnB,CAAQ,CAAA,CAAG,CAEvC2a,CAAAA,CAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,SAAU,oBAAA,CAAsBgY,EAAAA,CAAkBjE,CAAQ,CAAA,CAAE,OAAO,EAC7F,MACF,CAEA,GAAImV,CAAAA,GAAU,YAAa,CACzB,GAAI,CAACiH,EAAAA,CAAsB9X,EAAK,KAAK,CAAA,CAAG,CACtCqW,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,SACP,oBAAA,CACA,CAAA,eAAA,EAAkB+T,CAAQ,CAAA,gCAAA,CAC5B,CAAA,CACA,MACF,CACCsE,EAAK,KAAA,CAAoB,OAAA,CAAQ,CAAC0F,CAAAA,CAAMsH,IAAM,CACzC7L,CAAAA,CAAWuE,CAAI,CAAA,CACjBmS,GAAiBnS,CAAAA,CAAMhK,CAAAA,CAAU,GAAG/T,CAAI,CAAA,OAAA,EAAUqlB,CAAC,CAAA,CAAA,CAAA,CAAKlU,CAAAA,CAASf,CAAK,CAAA,CAC7D+P,EAAepC,CAAI,CAAA,EAAK,CAAC2D,EAAAA,CAAe3D,EAAMtE,EAAY,CAAA,CAAE,OAAA,EAAQ,EAC7EiV,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,OAAA,EAAUqlB,CAAC,IAClB,oBAAA,CACA,CAAA,eAAA,EAAkBtR,CAAQ,CAAA,SAAA,EAAY,OAAOgK,CAAI,CAAC,CAAA,0BAAA,CACpD,EAEJ,CAAC,CAAA,CACD,MACF,CAEA,GAAI,CAACoC,CAAAA,CAAe9H,CAAAA,CAAK,KAAK,CAAA,CAAG,CAC/BqW,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,qBACA,CAAA,eAAA,EAAkB+T,CAAQ,CAAA,4BAAA,CAC5B,CAAA,CACA,MACF,CAIK2N,EAAAA,CAAerJ,CAAAA,CAAK,KAAA,CAAOoB,EAAY,CAAA,CAAE,OAAA,IAC5CiV,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,MAAA,CAAA,CACP,oBAAA,CACA,CAAA,eAAA,EAAkB+T,CAAQ,CAAA,SAAA,EAAY,MAAA,CAAOsE,EAAK,KAAK,CAAC,4BAC1D,EAAA,CAEJ,CAAA,CAGMmX,EAAAA,CAAwB,CAC5B1V,EACA9Z,CAAAA,CACAmR,CAAAA,CACAf,IACS,CACT,GAAI,CAACxP,EAAAA,CAAckZ,CAAK,CAAA,EAAK,MAAA,CAAO,KAAKA,CAAK,CAAA,CAAE,MAAA,GAAW,CAAA,CAAG,CAC5D4U,CAAAA,CACEvd,CAAAA,CACAnR,CAAAA,CACA,wBAAA,CACA,4CACF,CAAA,CACA,MACF,CACA,IAAA,GAAW,CAAC5O,EAAKsvB,CAAS,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQ5G,CAAK,CAAA,CAAG,CACpD,GAAI,CAAC9C,GAAe5lB,CAAG,CAAA,CAAG,CACxBs9B,CAAAA,CACEvd,EACA,CAAA,EAAGnR,CAAI,IAAI5O,CAAG,CAAA,CAAA,CACd,wBACA,CAAA,uBAAA,EAA0BA,CAAG,CAAA,CAAA,CAC/B,CAAA,CACA,QACF,CAEA,IAAMi+B,CAAAA,CAAOzuB,EAAAA,CAAc8f,CAAS,CAAA,CAChCyO,EAAAA,CAAezO,CAAAA,CAAW,CAAA,EAAG1gB,CAAI,CAAA,CAAA,EAAI5O,CAAG,GAAI+f,CAAAA,CAASf,CAAK,EAC1D,SAAA,CACJ,GAAIif,CAAAA,GAAS,IAAA,EAAQA,IAAS,MAAA,EAAUA,CAAAA,GAAS,MAAA,CAAQ,SACzD,IAAMrV,CAAAA,CAASqV,CAAAA,GAAS,OAAA,CAAW3O,CAAAA,CAAsC,MAAQA,CAAAA,CAC3EC,CAAAA,CAAUH,GAAkBxG,CAAAA,CAAQ5oB,CAAG,EACzCuvB,CAAAA,EAAS+N,CAAAA,CAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,CAAA,CAAA,EAAI5O,CAAG,CAAA,CAAA,CAAI,4BAAA,CAA8BuvB,CAAO,EACzF,CACF,CAAA,CAEMyP,EAAAA,CAAqB,CAACnZ,CAAAA,CAAejX,CAAAA,CAAcmR,IAAqC,CAAA,CACxF,OAAO8F,GAAS,QAAA,EAAY,CAACE,EAAAA,CAAa,QAAA,CAASF,CAAI,CAAA,GACzDyX,CAAAA,CAAUvd,CAAAA,CAASnR,CAAAA,CAAM,sBAAuB,CAAA,qBAAA,EAAwB,MAAA,CAAOiX,CAAI,CAAC,GAAG,EAE3F,CAAA,CAEMiZ,GAAmB,CACvBtV,CAAAA,CACA7G,EACA/T,CAAAA,CACAmR,CAAAA,CACAf,CAAAA,GACS,CACT,IAAMigB,CAAAA,CAAUnb,EAAAA,CAAiB,QAAA,CAASnB,CAAQ,EAE5CwH,CAAAA,CAAUZ,EAAAA,CAAaC,CAAI,CAAA,CACjC,GAAIW,CAAAA,CAAS,CACXiU,GAAsBjU,CAAAA,CAAQ,CAAC,EAAGvb,CAAAA,CAAMmR,CAAAA,CAASf,CAAK,CAAA,CACtD,MACF,CAEA,GAAIyK,GAAaD,CAAI,CAAA,CAAG,CACtBwV,EAAAA,CAAmBrV,EAAAA,CAAYH,CAAI,CAAA,CAAG5a,EAAMmR,CAAO,CAAA,CACnD,MACF,CAEA,GAAI2J,GAAWF,CAAI,CAAA,CAAG,CACpB,GAAIyV,EAAS,CACX3B,CAAAA,CAAUvd,CAAAA,CAASnR,CAAAA,CAAM,qBAAsBgY,EAAAA,CAAkBjE,CAAQ,CAAA,CAAE,OAAO,EAClF,MACF,CACA,IAAMyH,CAAAA,CAAS,OAAA,GAAWZ,EAAOA,CAAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,GAAA,CACnD,GAAI,CAACha,EAAAA,CAAc4a,CAAM,CAAA,EAAK,CAACX,EAAAA,CAAaW,CAAM,CAAA,CAAG,CACnDkT,EAAUvd,CAAAA,CAASnR,CAAAA,CAAM,sBAAuB,4CAA4C,CAAA,CAC5F,MACF,CACAowB,EAAAA,CAAmBrV,EAAAA,CAAYS,CAAM,EAAGxb,CAAAA,CAAMmR,CAAO,CAAA,CACrD,MACF,CAEAud,CAAAA,CAAUvd,CAAAA,CAASnR,CAAAA,CAAM,yBAAA,CAA2B,8BAA8B,EACpF,CAAA,CAEM2vB,GAAqB,CACzBtX,CAAAA,CACArY,EACAmR,CAAAA,GACS,CACL,OAAA,GAAWkH,CAAAA,EAAQA,EAAK,KAAA,GAAU,MAAA,EACpCqW,CAAAA,CAAUvd,CAAAA,CAAS,GAAGnR,CAAI,CAAA,MAAA,CAAA,CAAU,kBAAA,CAAoB,4BAA4B,EAElF,MAAA,GAAUqY,CAAAA,EAAQA,EAAK,IAAA,GAAS,MAAA,EAClCqW,EAAUvd,CAAAA,CAAS,CAAA,EAAGnR,CAAI,CAAA,KAAA,CAAA,CAAS,kBAAmB,2BAA2B,CAAA,CAE/E,MAAA,GAAUqY,CAAAA,EAAQA,EAAK,IAAA,GAAS,MAAA,EAClCqW,CAAAA,CAAUvd,CAAAA,CAAS,GAAGnR,CAAI,CAAA,KAAA,CAAA,CAAS,kBAAmB,2BAA2B,EAErF,EAEM0vB,EAAAA,CAAcze,CAAAA,EAClBA,CAAAA,GAAW,UAAA,CAAa,SAAWA,CAAAA,GAAW,OAAA,CAAU,KAAA,CAAQ,OAAA,CAE5DrQ,GAAiBpT,CAAAA,EACrBqT,EAAAA,CAAoBrT,CAAK,CAAA,CAErBuiC,GAAkBviC,CAAAA,EACtB,KAAA,CAAM,QAAQA,CAAK,CAAA,EACnBA,EAAM,MAAA,GAAW,CAAA,EACjB,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,QAAA,EACpB,OAAOA,CAAAA,CAAM,CAAC,CAAA,EAAM,QAAA,CAEhB2iC,EAAAA,CAAyB3iC,CAAAA,EAC7B,MAAM,OAAA,CAAQA,CAAK,GACnBA,CAAAA,CAAM,MAAA,GAAW,IAChB2yB,CAAAA,CAAe3yB,CAAAA,CAAM,CAAC,CAAC,GAAKgsB,CAAAA,CAAWhsB,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAC/C2yB,EAAe3yB,CAAAA,CAAM,CAAC,CAAC,CAAA,EAAKgsB,EAAWhsB,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAE5CqiC,EAAAA,CAAiB,CACrBxX,CAAAA,CACArY,CAAAA,CACAmR,CAAAA,CACAf,CAAAA,GACS,CAqBT,GApBiB4Y,EAAAA,CAAU3Q,CAAoB,CAAA,EAE/BlH,EAAQ,MAAA,GAAW,OAAA,GAG/BA,CAAAA,CAAQ,MAAA,GAAW,YAAcmZ,EAAAA,CAAcjS,CAA4B,IAAM,IAAA,EAEjFqW,CAAAA,CACEvd,EACAnR,CAAAA,CACA,CAAA,YAAA,EAAe0vB,EAAAA,CAAWve,CAAAA,CAAQ,MAAM,CAAC,CAAA,OAAA,CAAA,CACzC2H,EAAAA,CAAkB3H,CAAAA,CAAQ,MAAM,CAAA,CAAE,OACpC,CAAA,CAAA,CAIA,QAAA,GAAYkH,GAAQA,CAAAA,CAAK,MAAA,GAAW,QACtCmW,EAAAA,CAAkBnW,CAAAA,CAAK,OAAQ,CAAA,EAAGrY,CAAI,CAAA,OAAA,CAAA,CAAWmR,CAAAA,CAASf,EAAQ,CAAC,CAAA,CAGjE,SAAA,GAAaiI,CAAAA,EAAQA,EAAK,OAAA,GAAY,MAAA,CAAW,CACnD,IAAMiY,EAAKjY,CAAAA,CAAK,OAAA,CAEX,MAAM,OAAA,CAAQiY,CAAE,EAQnBA,CAAAA,CAAG,OAAA,CAAQ,CAAC3R,CAAAA,CAAG0G,IAAM,CAAA,CAEjB,CAACzkB,EAAAA,CAAc+d,CAAC,GAChB,OAAOA,CAAAA,CAAE,KAAA,EAAU,QAAA,EAClBA,EAAE,GAAA,GAAQ,KAAA,EAASA,EAAE,GAAA,GAAQ,MAAA,GAE9B+P,EACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,SAAA,EAAYqlB,CAAC,CAAA,CAAA,CAAA,CACpB,kBAAA,CACA,gEACF,EAEJ,CAAC,CAAA,CApBDqJ,CAAAA,CACEvd,CAAAA,CACA,CAAA,EAAGnR,CAAI,CAAA,QAAA,CAAA,CACP,kBAAA,CACA,4CACF,EAiBJ,CAEA,QAAW5O,CAAAA,IAAO,CAAC,MAAA,CAAQ,MAAM,EAC/B,GAAIA,CAAAA,IAAOinB,CAAAA,EAAQA,CAAAA,CAAKjnB,CAAG,CAAA,GAAM,MAAA,CAAW,CAC1C,IAAMwgB,EAAIyG,CAAAA,CAAKjnB,CAAG,GACd,OAAOwgB,CAAAA,EAAM,UAAY,CAAC,MAAA,CAAO,SAAA,CAAUA,CAAC,GAAKA,CAAAA,CAAI,CAAA,GACvD8c,CAAAA,CACEvd,CAAAA,CACA,GAAGnR,CAAI,CAAA,CAAA,EAAI5O,CAAG,CAAA,CAAA,CACd,kBAAkBA,CAAG,CAAA,CAAA,CACrB,GAAGA,CAAG,CAAA,+BAAA,CACR,EAEJ,CAEJ,CAAA,CAEMs9B,CAAAA,CAAY,CAChBvd,EACAnR,CAAAA,CACAglB,CAAAA,CACAuL,IACS,CACTpf,CAAAA,CAAQ,OAAO,IAAA,CAAK,CAAE,IAAA,CAAAnR,CAAAA,CAAM,KAAAglB,CAAAA,CAAM,OAAA,CAAAuL,CAAQ,CAAC,EAC7C,EC96BA,IAAMC,EAAAA,CAAwB,MAAA,CAGjBC,EAAAA,CAAqB9mB,GAAuC,CACvE,IAAMuhB,CAAAA,CAAS,GACf,IAAA,GAAW,CAACwF,CAAAA,CAAS/D,CAAQ,IAAK,MAAA,CAAO,OAAA,CAAQhjB,EAAI,IAAI,CAAA,CACvD,OAAW,CAACgnB,CAAAA,CAAWnE,CAAK,CAAA,GAAK,OAAO,OAAA,CAAQG,CAAAA,CAAS,MAAM,CAAA,CAC7D,OAAW,CAACiE,CAAAA,CAAW30B,CAAK,CAAA,GAAK,OAAO,OAAA,CAAQuwB,CAAAA,CAAM,MAAM,CAAA,CACtDvwB,CAAAA,CAAM,OAAS,QAAA,EAAYu0B,EAAAA,CAAsB,IAAA,CAAKI,CAAS,GACjE1F,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,GAAGwB,EAAAA,CAAY,CAAE,QAAA,CAAUgE,CAAAA,CAAS,MAAOC,CAAU,CAAC,CAAC,CAAA,CAAA,EAAIC,CAAS,GAC1E,OAAA,CAAS,qCAAA,CACT,IAAA,CAAM,oBACR,CAAC,CAAA,CACT,OAAOxC,EAAAA,CAAiBlD,CAAM,CAChC,CAAA,CAEa2F,EAAAA,CAAwBlnB,CAAAA,EACnC0kB,EAAAA,CAAeoC,GAAkB9mB,CAAG,CAAA,CAAG,mBAAmB,ECpBrD,IAAMmnB,GAAU1G,CAAAA,EAAuC,OAAA,GAAWA,CAAAA,CAE5D2G,EAAAA,CAAgB3G,GAA6C,CACxE,IAAM7J,CAAAA,CAAwB,GACxByQ,CAAAA,CAAU,IAAI,GAAA,CAChBC,CAAAA,CAA+B7G,EACnC,KAAO,CAAC0G,GAAOG,CAAM,CAAA,EAAG,CACtB,GAAID,CAAAA,CAAQ,GAAA,CAAIC,CAAM,EAAG,MAAM,IAAI,KAAA,CAAM,0CAA0C,EACnFD,CAAAA,CAAQ,GAAA,CAAIC,CAAM,CAAA,CAClB1Q,EAAK,OAAA,CAAQ0Q,CAAM,EACnBA,CAAAA,CAASA,CAAAA,CAAO,OAClB,CACA,OAAO1Q,CACT,CAAA,CAGa2Q,GAAW9G,CAAAA,EACtB0G,EAAAA,CAAO1G,CAAC,CAAA,CAAIA,EAAK2G,EAAAA,CAAa3G,CAAC,CAAA,CAAE,CAAC,EAAE,MAAA,CCX/B,IAAM+G,GAAel1B,CAAAA,EAC1BA,CAAAA,CAAM,OAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,MAAA,CAG/Bm1B,GAAmBn1B,CAAAA,EAC9BA,CAAAA,CAAM,OAAS,QAAA,EAAYA,CAAAA,CAAM,OAAS,QAAA,CAG/Bo1B,EAAAA,CAAqB,CAChCp1B,CAAAA,CACAq1B,IACkCr1B,CAAAA,CAAM,MAAA,EAAUkwB,EAAImF,CAAAA,CAAOr1B,CAAAA,CAAM,IAAI,CAAA,CCElE,IAAMs1B,EAAAA,CAAmB,CAC9Bt1B,EACA4wB,CAAAA,GAEI5wB,CAAAA,CAAM,IAAA,GAAS,QAAA,CAAiB,CAAE,OAAA,CAAS4wB,CAAAA,CAAY,SAAA,CAAW5wB,CAAAA,CAAM,IAAK,CAAA,CAC7EA,CAAAA,CAAM,OAAS,QAAA,CAAiB2wB,EAAAA,CAAiB3wB,EAAM,IAAA,CAAM4wB,CAAU,CAAA,CACpE,IAAA,CAQF,SAAU2E,EAAAA,CACfC,CAAAA,CACAC,CAAAA,CACA1xB,CAAAA,CACoB,CACpB,IAAM2xB,CAAAA,CAAQ3xB,CAAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CACxB6Q,CAAAA,CAAe6gB,EACnB,IAAA,IAAS9iC,CAAAA,CAAQ,EAAGA,CAAAA,CAAQ+iC,CAAAA,CAAM,MAAA,CAAQ/iC,CAAAA,EAAAA,CAAS,CACjD,IAAM6lB,CAAAA,CAAQkd,CAAAA,CAAM/iC,CAAK,EACnBqN,CAAAA,CAAQwwB,EAAAA,CAAQN,CAAAA,CAAIsF,CAAAA,CAAM5gB,EAAG,OAAO,CAAA,CAAGA,EAAG,SAAA,CAAW4D,CAAK,EAC1Dmd,CAAAA,CAAO31B,CAAAA,CAAQs1B,EAAAA,CAAiBt1B,CAAAA,CAAO4U,EAAG,OAAO,CAAA,CAAI,IAAA,CAE3D,GADA,MAAM,CAAE,KAAA,CAAAjiB,CAAAA,CAAO,KAAA,CAAA6lB,EAAO,EAAA,CAAA5D,CAAAA,CAAI,MAAA5U,CAAAA,CAAO,IAAA,CAAA21B,CAAK,CAAA,CAClC,CAACA,CAAAA,CAAM,OACX/gB,EAAK,CAAE,GAAG+gB,CAAAA,CAAM,OAAA,CAAS,CAAC,GAAG/gB,CAAAA,CAAG,OAAA,CAAS4D,CAAK,CAAE,EAClD,CACF,CA6BO,IAAMod,EAAAA,CAAgB,CAACpd,CAAAA,CAAe9W,CAAAA,CAAem0B,CAAAA,GAAqC,CAC/F,IAAMH,CAAAA,CAAQld,CAAAA,CAAM,KAAA,CAAM,GAAG,EACvBsd,CAAAA,CAAiB,EAAC,CAClBL,CAAAA,CAAO,CAAE,OAAA,CAAS,EAAA,CAAI,UAAWI,CAAAA,CAAW,OAAA,CAAS,EAAG,CAAA,CAC9D,IAAA,GAAW,CAAE,MAAOzM,CAAAA,CAAG,KAAA,CAAOnM,CAAAA,CAAQ,EAAA,CAAArI,EAAI,KAAA,CAAA5U,CAAM,CAAA,GAAKu1B,EAAAA,CAAS,CAAE,EAAA,CAAI7zB,CAAI,EAAG+zB,CAAAA,CAAMjd,CAAK,EAAG,CACvF,IAAM+X,CAAAA,CAAQ3b,CAAAA,CAAG,UACjB,GAAI,CAAC5U,EAAO,OAAO,CAAE,KAAM,UAAA,CAAY,IAAA,CAAA81B,CAAK,CAAA,CAC5C,GAAI91B,CAAAA,CAAM,IAAA,GAAS,SAAU,OAAO,CAAE,KAAM,QAAA,CAAU,IAAA,CAAA81B,CAAK,CAAA,CAC3D,IAAMC,CAAAA,CAAO3M,CAAAA,GAAMsM,CAAAA,CAAM,MAAA,CAAS,EAClC,GAAI11B,CAAAA,CAAM,IAAA,GAAS,QAAA,CAAU,CAC3B,GAAI,CAACswB,EAAQ5uB,CAAAA,CAAK1B,CAAAA,CAAM,IAAI,CAAA,CAAG,OAAO,CAAE,IAAA,CAAM,WAAY,IAAA,CAAA81B,CAAK,CAAA,CAC/D,GAAIC,EAAM,OAAO,CAAE,IAAA,CAAM,QAAA,CAAU,KAAAD,CAAAA,CAAM,KAAA,CAAA91B,EAAO,KAAA,CAAAuwB,CAAAA,CAAO,OAAAtT,CAAO,CAAA,CAC9D6Y,CAAAA,CAAK,IAAA,CAAK,CAAE,KAAA,CAAO7Y,CAAAA,CAAQ,MAAA,CAAQyY,CAAAA,CAAM,MAAM,CAAA,CAAGtM,CAAAA,CAAI,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA,CAAG,MAAAppB,CAAAA,CAAO,IAAA,CAAMuwB,CAAM,CAAC,CAAA,CACxF,QACF,CACA,OAAIwF,CAAAA,CAAa,CAAE,IAAA,CAAM,QAAA,CAAU,KAAAD,CAAAA,CAAM,KAAA,CAAA91B,CAAAA,CAAO,KAAA,CAAAuwB,EAAO,MAAA,CAAAtT,CAAO,EAC1DiY,EAAAA,CAAYl1B,CAAK,EACZ,CACL,IAAA,CAAM,WAAA,CACN,IAAA,CAAA81B,EACA,KAAA,CAAA91B,CAAAA,CACA,KAAA,CAAAuwB,CAAAA,CACA,OAAAtT,CAAAA,CACA,SAAA,CAAWmM,CAAAA,CAAI,CAAA,CACf,SAAUsM,CAAAA,CAAM,KAAA,CAAMtM,EAAI,CAAC,CAC7B,EACK,CAAE,IAAA,CAAM,aAAA,CAAe,IAAA,CAAA0M,EAAM,MAAA,CAAA7Y,CAAO,CAC7C,CACA,OAAO,CAAE,IAAA,CAAM,UAAA,CAAY,IAAA,CAAA6Y,CAAK,CAClC,CAAA,CAGaE,GAAW,CACtBxd,CAAAA,CACA9W,EACA6uB,CAAAA,GAC+B7uB,CAAAA,EAAO6uB,CAAAA,CAAQqF,EAAAA,CAAcpd,EAAO9W,CAAAA,CAAK6uB,CAAK,CAAA,CAAI,MAAA,CAGtE0F,GAAa,CACxBzd,CAAAA,CACA9W,CAAAA,CACA6uB,CAAAA,GAC8B,CAC9B,IAAM2F,CAAAA,CAAOF,GAASxd,CAAAA,CAAO9W,CAAAA,CAAK6uB,CAAK,CAAA,CACvC,OAAO2F,CAAAA,EAAM,IAAA,GAAS,SAAWA,CAAAA,CAAK,KAAA,CAAQ,MAChD,CAAA,CAOaC,EAAAA,CAAoB,CAAC3d,CAAAA,CAAe9W,CAAAA,CAAem0B,CAAAA,GAC9DD,EAAAA,CAAcpd,EAAO9W,CAAAA,CAAKm0B,CAAS,EAChC,IAAA,CAAK,MAAA,CAAQ9Y,GAAQ,CAACA,CAAAA,CAAI,KAAA,CAAM,MAAA,EAAUA,EAAI,KAAA,CAAM,UAAA,GAAe,KAAK,CAAA,CACxE,IAAKA,CAAAA,EAAQA,CAAAA,CAAI,MAAM,CAAA,CAGfqZ,GAAiB,CAAC5d,CAAAA,CAAe9W,EAAe6uB,CAAAA,GAAiC,CAC5F,IAAM2F,CAAAA,CAAON,EAAAA,CAAcpd,CAAAA,CAAO9W,CAAAA,CAAK6uB,CAAK,CAAA,CAC5C,OAAO2F,CAAAA,CAAK,IAAA,GAAS,UAAYA,CAAAA,CAAK,KAAA,CAAM,IAAA,GAAS,QAAA,CAAWA,EAAK,KAAA,CAAM,IAAA,CAAO,IACpF,CAAA,CAGaG,EAAAA,CAAa,CAAC7d,CAAAA,CAAe9W,CAAAA,CAAe6uB,CAAAA,GACvDqF,EAAAA,CAAcpd,EAAO9W,CAAAA,CAAK6uB,CAAK,CAAA,CAAE,IAAA,GAAS,SAQ/B+F,EAAAA,CAAyB,CACpChhB,CAAAA,CACA5T,CAAAA,CACA6uB,IAEA,CAAC,CAAC7uB,GACF,CAAC,CAAC6uB,GACFpP,EAAAA,CACE7L,CAAAA,CACA,CAAC2C,CAAAA,CAAMrD,IACL,OAAOqD,CAAAA,CAAK,KAAA,EAAU,QAAA,EAAYA,EAAK,KAAA,GAAU,EAAA,EAAMoe,EAAAA,CAAWpe,CAAAA,CAAK,MAAOvW,CAAAA,CAAKkT,CAAE,EACvF,CAACqD,CAAAA,CAAMrD,KACJ,OAAOqD,CAAAA,CAAK,KAAA,EAAU,QAAA,CAAWme,GAAene,CAAAA,CAAK,KAAA,CAAOvW,CAAAA,CAAKkT,CAAE,EAAIA,CAAAA,GAAO,KAAA,CACjF2b,CACF,CAAA,KCxIIgG,EAAAA,CAAiB,CAACna,EAAiBoa,CAAAA,GACvCA,CAAAA,CAAO,OAAS5T,CAAAA,CAAM,CAAC,GAAG4T,CAAAA,CAAQpa,CAAI,CAAC,CAAA,CAAIA,CAAAA,CAIvCqa,EAAAA,CAAmBxe,GAA6B,CACpD,GAAIsK,EAAAA,CAAUtK,CAA+B,EAAE,MAAA,CAAQ,OAAO,OAE9D,IAAMO,CAAAA,CAASP,EAA6B,KAAA,CACtCqb,CAAAA,CAAS,OAAO9a,CAAAA,EAAU,SAAWxE,CAAAA,CAAcwE,CAAK,CAAA,CAAI,IAAA,CAClE,GAAI,CACF,OACEiW,EAAAA,CAAM6E,CAAAA,CAAU,CAAE,GAAIrb,CAAAA,CAAiB,MAAOqb,CAAAA,CAAO,IAAK,EAAkBrb,CAAAA,CAAM,EAAE,CAAA,GAAM,EAE9F,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAAA,CAKMye,EAAAA,CAAiB,CAACze,CAAAA,CAAiB6d,IAAgC,CACvE,GAAI,CAACA,CAAAA,CAAK,MAAA,CAAQ,OAAO7d,CAAAA,CACzB,GAAI,CAACwe,EAAAA,CAAgBxe,CAAI,CAAA,CAAG,OAAO2K,CAAAA,CAAM,CAAC,GAAGkT,CAAAA,CAAK,OAAA,CAAS/Y,CAAAA,EAAQA,CAAAA,CAAI,MAAM,CAAA,CAAG9E,CAAI,CAAC,CAAA,CACrF,GAAM,CAAC8E,CAAAA,CAAK,GAAG4Z,CAAM,CAAA,CAAIb,EACzB,OAAOhT,EAAAA,CAAM,CACXF,CAAAA,CAAM,CAAC,GAAG7F,CAAAA,CAAI,MAAA,CAAQ2Z,EAAAA,CAAeze,EAAM0e,CAAM,CAAC,CAAC,CAAA,CACnD/T,CAAAA,CAAM,CAAC,CAAE,KAAA,CAAO7F,CAAAA,CAAI,MAAA,CAAQ,SAAU,WAAY,CAAA,CAAgB9E,CAAI,CAAC,CACzE,CAAC,CACH,CAAA,CAQa2e,EAAAA,CAAwB,CAACC,CAAAA,CAAiBC,CAAAA,GACrDxV,GAAauV,CAAAA,CAAM,CACjB,QAAU5e,CAAAA,EAAS,CACjB,GAAI4I,EAAAA,CAAc5I,CAAI,CAAA,CAAG,OAAOA,CAAAA,CAChC,GAAI,OAAOA,CAAAA,CAAK,KAAA,EAAU,QAAA,EAAYA,CAAAA,CAAK,QAAU,EAAA,CACnD,MAAM,IAAI,KAAA,CACR,CAAA,oEAAA,EAAuE6e,CAAM,CAAA,CAAA,CAC/E,CAAA,CACF,IAAMC,CAAAA,CAAOxU,GAAUtK,CAAI,CAAA,CAC3B,GAAI8e,CAAAA,CAAK,OACP,MAAM,IAAI,KAAA,CACR,CAAA,oEAAA,EAAuEA,EAAK,CAAC,CAAC,aAClED,CAAM,CAAA,wEAAA,CACpB,EAEF,GAAI9iB,CAAAA,CAAciE,CAAAA,CAAK,KAAK,EAC1B,MAAM,IAAI,KAAA,CACR,CAAA,qEAAA,EAAwEA,EAAK,KAAK,CAAA,UAAA,EACtE6e,CAAM,CAAA,oDAAA,CACpB,EAEF,GAAI7e,CAAAA,CAAK,YAAc,MAAA,CACrB,MAAM,IAAI,KAAA,CACR,CAAA,wFAAA,EACMA,CAAAA,CAAK,KAAK,YAAY6e,CAAM,CAAA,kDAAA,CACpC,CAAA,CAEF,OAAO,CAAE,GAAG7e,CAAAA,CAAM,KAAA,CAAO,CAAA,EAAG6e,CAAM,CAAA,CAAA,EAAI7e,CAAAA,CAAK,KAAK,CAAA,CAAG,CACrD,EAEA,KAAA,CAAO,IAAM,KACf,CAAC,EAUG+e,EAAAA,CAAY,CAACC,EAAgBnB,CAAAA,GACjCA,CAAAA,CAAK,QAAS/Y,CAAAA,EAAQ,CACpB,IAAMma,CAAAA,CAASC,GAAaF,CAAAA,CAAQla,CAAAA,CAAI,IAAKA,CAAAA,CAAI,KAAA,CAAOA,EAAI,OAAO,CAAA,CACnE,GAAIma,CAAAA,CAAO,aAAa,MAAA,GAAW,CAAA,CAAG,OAAO,GAC7C,GAAIna,CAAAA,CAAI,MAAA,CACN,MAAM,IAAI,KAAA,CACR,CAAA,wDAAA,EAA2DA,EAAI,MAAM,CAAA,0EAAA,EACHA,EAAI,MAAM,CAAA,+EAAA,CAE9E,CAAA,CAEF,OAAO,CACL,CACE,MAAA,CAAQA,CAAAA,CAAI,MAAA,CACZ,OAAQma,CAAAA,CAAO,YAAA,CAAa,GAAA,CAAKE,CAAAA,EAAUR,GAAsBQ,CAAAA,CAAOra,CAAAA,CAAI,MAAM,CAAC,CACrF,CACF,CACF,CAAC,CAAA,CAEGsa,EAAAA,CAAmB,CAACJ,CAAAA,CAAgBnB,CAAAA,GACxCkB,EAAAA,CAAUC,CAAAA,CAAQnB,CAAI,CAAA,CAAE,OAAA,CAAS/Y,CAAAA,EAAQA,CAAAA,CAAI,MAAM,CAAA,CAO/Cua,EAAAA,CAAS,CACbrjB,CAAAA,CACAgjB,CAAAA,CACA3iB,IAC+C,CAC/C,IAAMU,CAAAA,CAASX,EAAAA,CAAaJ,EAAKK,CAAM,CAAA,CACvC,GAAI,aAAA,GAAiBU,EAAQ,MAAM,IAAI,KAAA,CAAM,CAAA,YAAA,EAAeA,EAAO,WAAW,CAAA,CAAE,EAChF,GAAI,CAACA,EAAO,KAAA,CAAO,OAAO,CAAE,IAAA,CAAM,EAAC,CAAG,GAAA,CAAK,IAAK,CAAA,CAChD,IAAM8hB,CAAAA,CAAS7iB,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAGA,EAAI,MAAA,CAASe,CAAAA,CAAO,KAAK,MAAM,CAAA,CAC3D,OAAOuiB,EAAAA,CAAaN,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAMjiB,EAAO,KAAA,CAAOA,CAAAA,CAAO,IAAA,CAAM8hB,CAAAA,GAAW,KAAO,EAAA,CAAKA,CAAM,CAChG,CAAA,CAKMU,GAAU,CAACvjB,CAAAA,CAAagjB,EAAgB3iB,CAAAA,GAA4C,CACxF,GAAIN,CAAAA,CAAcC,CAAG,CAAA,CAAG,OAAOqjB,GAAOrjB,CAAAA,CAAKgjB,CAAAA,CAAQ3iB,CAAM,CAAA,CAAE,KAC3D,IAAMwiB,CAAAA,CAASxiB,CAAAA,CAAO,MAAA,GAAW,EAAI,EAAA,CAAK,CAAA,EAAG,IAAI,MAAA,CAAOA,CAAAA,CAAO,MAAM,CAAC,CAAA,CAAA,CAAA,CACtE,OAAOA,CAAAA,CAAO,CAAC,CAAA,CAAIijB,EAAAA,CAAaN,EAAO,IAAA,CAAK,IAAA,CAAM3iB,EAAO,CAAC,CAAA,CAAGL,CAAAA,CAAK6iB,CAAM,EAAE,IAAA,CAAO,EACnF,CAAA,CAKMW,EAAAA,CAAW,CACfxf,CAAAA,CACAgf,CAAAA,CACA3iB,CAAAA,GACwD,CACxD,GAAIuM,EAAAA,CAAc5I,CAAI,CAAA,EAAK,OAAOA,EAAK,KAAA,EAAU,QAAA,EAAYA,CAAAA,CAAK,KAAA,GAAU,GAAI,OAAO,IAAA,CACvF,GAAM,CAAE,IAAA,CAAA6d,EAAM,GAAA,CAAAxZ,CAAI,CAAA,CAAIgb,EAAAA,CAAOrf,EAAK,KAAA,CAAOgf,CAAAA,CAAQ3iB,CAAM,CAAA,CACvD,OAAO,CAAE,IAAA,CAAAwhB,CAAAA,CAAM,KAAA,CAAOxZ,CAAI,CAC5B,CAAA,CAUaob,GAAW,CAACtb,CAAAA,CAAiB6a,EAAgBnmC,CAAAA,GACxDwwB,EAAAA,CACElF,CAAAA,CACA,CACE,MAAO,CAACnE,CAAAA,CAAM3D,CAAAA,GAAW,CACvB,IAAMqjB,CAAAA,CAASF,EAAAA,CAASxf,CAAAA,CAAMgf,CAAAA,CAAQ3iB,CAAM,CAAA,CAC5C,OAAKqjB,EACDA,CAAAA,CAAO,KAAA,CAAc,CAAC,GAAGrjB,CAAAA,CAAQqjB,CAAAA,CAAO,KAAK,EAC1CjX,EAAAA,CAAezI,CAAI,CAAA,CAAI,CAAC,GAAG3D,CAAAA,CAAQ,IAAI,CAAA,CAAI,KAAA,CAF9B,KAGtB,CAAA,CACA,KAAA,CAAO,CAAC2D,CAAAA,CAAM3D,CAAAA,GAAW,CACvB,IAAMqjB,CAAAA,CAASF,EAAAA,CAASxf,CAAAA,CAAMgf,EAAQ3iB,CAAM,CAAA,CAC5C,GAAI,CAACqjB,EAAQ,OAAO1f,CAAAA,CACpB,IAAM2f,CAAAA,CAAcP,GAClBJ,CAAAA,CACA1U,EAAAA,CAAUtK,CAAI,CAAA,CAAE,OAAA,CAAShE,GAAQujB,EAAAA,CAAQvjB,CAAAA,CAAKgjB,CAAAA,CAAQ3iB,CAAM,CAAC,CAC/D,CAAA,CACM2M,CAAAA,CAAQ0W,CAAAA,CAAO,MACrB,GAAI,CAAC1W,CAAAA,EAAS,CAACP,GAAezI,CAAI,CAAA,CAChC,OAAOse,EAAAA,CACLG,EAAAA,CAAeze,EAAmB+e,EAAAA,CAAUC,CAAAA,CAAQU,CAAAA,CAAO,IAAI,CAAC,CAAA,CAChEC,CACF,CAAA,CACF,IAAMC,EAAS,CACb,GAAGV,EAAAA,CAAaF,CAAAA,CAAQhW,EAAM,OAAA,CAASA,CAAAA,CAAM,UAAWA,CAAAA,CAAM,OAAO,EAAE,YAAA,CACvE,GAAGoW,EAAAA,CACDJ,CAAAA,CACAxU,GAAYxK,CAAI,CAAA,CAAE,QAAShE,CAAAA,EAAQsjB,EAAAA,CAAaN,EAAO,IAAA,CAAK,IAAA,CAAMhW,CAAAA,CAAOhN,CAAG,EAAE,IAAI,CACpF,CACF,CAAA,CACM6jB,CAAAA,CACJ7f,EAAK,SAAA,GAAc,MAAA,EACnBA,CAAAA,CAAK,aAAA,GAAkBxB,EAAc,GAAA,EACrCsW,EAAAA,CAAU9U,CAAoB,CAAA,CAC1BkK,EAA+B,CAAE,GAAGlK,CAAK,CAAA,CAC/C,OAAI4f,CAAAA,CAAO,MAAA,EAAUC,EACnB3V,CAAAA,CAAI,MAAA,CAASS,EAAM,CACjB,GAAI3K,CAAAA,CAAK,MAAA,GAAW,OAAY,CAACA,CAAAA,CAAK,MAAmB,CAAA,CAAI,EAAC,CAC9D,GAAG4f,CACL,CAAC,EACMA,CAAAA,CAAO,MAAA,GAAQ1V,EAAI,SAAA,CAAYS,CAAAA,CAAM,CAAC,GAAGiV,CAAAA,CAAQ5f,CAAAA,CAAK,SAAsB,CAAC,CAAA,CAAA,CAC/Ese,EAAAA,CACLG,EAAAA,CAAevU,CAAAA,CAAkB6U,GAAUC,CAAAA,CAAQU,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAM,EAAG,EAAE,CAAC,CAAC,CAAA,CAC5EC,CACF,CACF,CACF,CAAA,CACA,CAAC9mC,CAAI,CACP,CAAA,CAEWinC,EAAAA,CAAa,CAAC3b,CAAAA,CAAiB4b,IAAqD,CAC/F,IAAMf,CAAAA,CAASgB,CAAAA,CAAcD,CAAe,CAAA,CACtCE,CAAAA,CAAaf,GAAaF,CAAAA,CAAQA,CAAAA,CAAO,KAAK,OAAA,CAASA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAO,EAAE,CAAA,CAG5EkB,CAAAA,CAAYT,EAAAA,CAAStb,EAAM6a,CAAAA,CAAQ,CACvC,OAAA,CAASA,CAAAA,CAAO,KAAK,OAAA,CACrB,SAAA,CAAWA,EAAO,IAAA,CAAK,KAAA,CACvB,QAAS,EACX,CAAC,CAAA,CAID,OAAOV,EAAAA,CAAe4B,CAAAA,CAAWD,CAAAA,CAAW,YAAY,CAC1D,EChNO,IAAME,EAAAA,CAAoBC,CAAAA,EAC/BA,IAAM,MAAA,CAAY,MAAA,CAAY,MAAM,OAAA,CAAQA,CAAC,EAAIA,CAAAA,CAAI,CAACA,CAAC,CAAA,CAG5CC,GAAgB3iB,CAAAA,EAC3B,OAAOA,CAAAA,EAAM,QAAA,EACbA,IAAM,IAAA,EACN,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAC,CAAA,GACf,OAAA,GAAWA,GAAK,OAAA,GAAWA,CAAAA,EAAK,YAAaA,CAAAA,CAAAA,CAGnC4iB,EAAAA,CAAmB5iB,CAAAA,EAA+B,CAC7D,GAAI2iB,EAAAA,CAAa3iB,CAAC,EAAG,OAAOA,CAAAA,CAC5B,GAAI,OAAOA,CAAAA,EAAM,QAAA,EAAYA,CAAAA,GAAM,MAAQ,CAAC,KAAA,CAAM,QAAQA,CAAC,CAAA,EAAK,OAAO,IAAA,CAAKA,CAAC,CAAA,CAAE,MAAA,GAAW,EACxF,MAAM,IAAI,KAAA,CAAM,8EAAyE,EAC3F,OAAO,CAAE,KAAA,CAAOA,CAAE,CACpB,CAAA,CASa6iB,EAAAA,CAA8B,CAAC,aAAa,CAAA,CAE5CP,EAAiBD,CAAAA,EAAkD,CAC9E,IAAMS,CAAAA,CAAOxD,GAAQ+C,CAAe,CAAA,CAC9BU,CAAAA,CACHV,CAAAA,CAAyB,OAASS,CAAAA,CAAK,IAAA,CACpC,EAAC,CACD3D,GAAakD,CAAgC,CAAA,CACnD,OAAO,CAAE,IAAA,CAAAS,EAAM,KAAA,CAAAC,CAAM,CACvB,CAAA,CAEaC,GAAqB,CAChCC,CAAAA,CACAjD,CAAAA,GAEIiD,CAAAA,GAAQ,KAAa,IAAI,GAAA,CAAIjD,CAAI,CAAA,CAC9B,IAAI,GAAA,CAAIA,CAAAA,CAAK,OAAQxH,CAAAA,EAAMyK,CAAAA,CAAI,IAAIzK,CAAC,CAAC,CAAC,CAAA,CAGlC0K,GACX5+B,CAAAA,EACkC,CAClC,GAAI,CAACA,EAAE,KAAA,CAAO,OACd,GAAI,EAAE,cAAeA,CAAAA,CAAAA,EAAM,CAACA,EAAE,SAAA,CAAW,OAAOA,EAAE,KAAA,CAClD,IAAMkoB,CAAAA,CAAM,CAAC,GAAGloB,CAAAA,CAAE,KAAK,CAAA,CACvB,IAAA,IAAW6+B,KAAO,MAAA,CAAO,IAAA,CAAK7+B,CAAAA,CAAE,SAAS,EAClCkoB,CAAAA,CAAI,QAAA,CAAS2W,CAAG,CAAA,EAAG3W,CAAAA,CAAI,KAAK2W,CAAG,CAAA,CAEtC,OAAO3W,CACT,EAEM4W,EAAAA,CAA2B,CAC/BC,CAAAA,CACA/+B,CAAAA,GACS,CACT,IAAMg/B,CAAAA,CAAYJ,EAAAA,CAA0B5+B,CAAC,EAE7C,GADIg/B,CAAAA,GAAWD,EAAM,KAAA,CAAQL,EAAAA,CAAmBK,EAAM,KAAA,CAAOC,CAAS,CAAA,CAAA,CAClEh/B,CAAAA,CAAE,MAAO,IAAA,IAAWi/B,CAAAA,IAAKj/B,CAAAA,CAAE,KAAA,CAAO++B,EAAM,KAAA,CAAM,GAAA,CAAIE,CAAC,EACzD,EAEMC,EAAAA,CAAmB,CACvBz3B,EACAvM,CAAAA,CACAikC,CAAAA,GACS,CACT13B,CAAAA,CAAI,GAAA,CAAIvM,CAAAA,CAAKwjC,EAAAA,CAAmBj3B,EAAI,GAAA,CAAIvM,CAAG,GAAK,IAAA,CAAMikC,CAAI,CAAC,EAC7D,CAAA,CAEMC,EAAAA,CAAe,CACnB33B,EACAvM,CAAAA,CACAikC,CAAAA,GACS,CACT,IAAME,CAAAA,CAAI53B,EAAI,GAAA,CAAIvM,CAAG,CAAA,EAAK,IAAI,IAC9B,IAAA,IAAWwgB,CAAAA,IAAKyjB,CAAAA,CAAME,CAAAA,CAAE,IAAI3jB,CAAC,CAAA,CAC7BjU,CAAAA,CAAI,GAAA,CAAIvM,EAAKmkC,CAAC,EAChB,EAEMC,EAAAA,CAAuB,CAC3BC,EACAC,CAAAA,CACAx/B,CAAAA,GACS,CACT,GAAIA,EAAE,SAAA,CACJ,IAAA,GAAW,CAACi/B,CAAAA,CAAGE,CAAI,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQn/B,CAAAA,CAAE,SAAS,CAAA,CAAGk/B,EAAAA,CAAiBK,EAAUN,CAAAA,CAAGE,CAAI,EAEzF,GAAIn/B,CAAAA,CAAE,SAAA,CACJ,IAAA,GAAW,CAACi/B,CAAAA,CAAGE,CAAI,CAAA,GAAK,MAAA,CAAO,QAAQn/B,CAAAA,CAAE,SAAS,CAAA,CAAGo/B,EAAAA,CAAaI,EAAUP,CAAAA,CAAGE,CAAI,EAEvF,CAAA,CAEMM,EAAAA,CAAc,CAAClhB,CAAAA,CAAeD,CAAAA,CAA2BhnB,CAAAA,GAC7D,IAAA,CAAK,UAAU,CAACinB,CAAAA,CAAOD,CAAAA,CAAMhnB,CAAK,CAAC,CAAA,CAE/BooC,EAAAA,CAAiB,CACrBxX,CAAAA,CACAloB,EACA2/B,CAAAA,CACAC,CAAAA,GACS,CAGT,GAFAd,EAAAA,CAAyB5W,EAAKloB,CAAC,CAAA,CAC3BA,CAAAA,CAAE,KAAA,GAAU,QAAWkoB,CAAAA,CAAI,YAAA,CAAa,IAAA,CAAKyX,CAAAA,CAAO3/B,EAAE,KAAK,CAAC,CAAA,CAC5DA,CAAAA,CAAE,QACJ,IAAA,GAAW,CAACue,EAAOxY,CAAK,CAAA,GAAK,OAAO,OAAA,CAAQ/F,CAAAA,CAAE,OAAO,CAAA,CAAG,CACtD,IAAM6/B,CAAAA,CAAOvB,EAAAA,CAAgBv4B,CAAK,EAC5B+5B,CAAAA,CAAU5X,CAAAA,CAAI,OAAA,CAAQ,GAAA,CAAI3J,CAAK,CAAA,EAAK,GACtCshB,CAAAA,CAAK,KAAA,GAAU,QAAWC,CAAAA,CAAQ,IAAA,CAAKH,CAAAA,CAAOE,CAAAA,CAAK,KAAK,CAAC,CAAA,CAC7D3X,CAAAA,CAAI,OAAA,CAAQ,IAAI3J,CAAAA,CAAOuhB,CAAO,CAAA,CAC9B,IAAMC,EAAO5B,EAAAA,CAAiB0B,CAAAA,CAAK,OAAO,CAAA,CAC1C,IAAA,GAAW,CAACvhB,CAAAA,CAAMhnB,CAAK,CAAA,GAAK,CAC1B,CAAC,OAAA,CAASuoC,CAAAA,CAAK,KAAK,CAAA,CACpB,CAAC,UAAWE,CAAI,CAClB,CAAA,CAAY,CACV,GAAIzoC,CAAAA,GAAU,MAAA,CAAW,SACzB,IAAM4D,CAAAA,CAAMukC,GAAYlhB,CAAAA,CAAOD,CAAAA,CAAMhnB,CAAK,CAAA,CACrC4wB,EAAI,gBAAA,CAAiB,GAAA,CAAIhtB,CAAG,CAAA,EAAGgtB,EAAI,gBAAA,CAAiB,GAAA,CAAIhtB,CAAAA,CAAK0kC,CAAK,EACzE,CACIC,CAAAA,CAAK,QAAU,MAAA,EAAW3X,CAAAA,CAAI,aAAa,GAAA,CAAI3J,CAAAA,CAAOshB,CAAAA,CAAK,KAAK,EAChEE,CAAAA,GAAS,MAAA,EAAW7X,CAAAA,CAAI,cAAA,CAAe,IAAI3J,CAAAA,CAAOwhB,CAAI,EAC5D,CAEJ,EAEa7C,EAAAA,CAAe,CAC1BF,EACAxC,CAAAA,CACAC,CAAAA,CACAuF,IACgB,CAChB,IAAM9X,CAAAA,CAAmB,CACvB,MAAO,IAAA,CACP,KAAA,CAAO,IAAI,GAAA,CACX,kBAAmB,IAAI,GAAA,CACvB,YAAA,CAAc,GACd,OAAA,CAAS,IAAI,IACb,YAAA,CAAc,IAAI,IAClB,cAAA,CAAgB,IAAI,GAAA,CACpB,gBAAA,CAAkB,IAAI,GAAA,CACtB,SAAA,CAAW,IAAI,GACjB,EAEMuO,CAAAA,CAAiCR,CAAAA,CAAI+G,CAAAA,CAAO,IAAA,CAAK,KAAMxC,CAAO,CAAA,CAC9DlE,EAAQD,CAAAA,CAAQI,CAAAA,CAAUgE,CAAS,CAAA,CACzC,GAAI,CAACnE,CAAAA,CAAO,OAAOpO,CAAAA,CAEnB,IAAM+X,CAAAA,CAAiB,IAAI,IACrBC,CAAAA,CAAiB,IAAI,GAAA,CACrBC,CAAAA,CAAgB,IAAI,GAAA,CACpBC,CAAAA,CAAgB,IAAI,GAAA,CAItBT,CAAAA,CAAUtkB,GAAoCA,CAAAA,CAC9CglB,CAAAA,CAAU,CAAA,CACRC,CAAAA,CAAatgC,GAAoD,CACrE0/B,EAAAA,CAAexX,CAAAA,CAAKloB,CAAAA,CAAG2/B,EAAQU,CAAO,CAAA,CACtCf,EAAAA,CAAqBW,CAAAA,CAAgBC,EAAgBlgC,CAAC,EACxD,EAEA,IAAA,GAAW,CAAC4/B,EAAOW,CAAS,CAAA,GAAKvD,CAAAA,CAAO,KAAA,CAAM,SAAQ,CAAG,CACvDqD,CAAAA,CAAUT,CAAAA,CACV,IAAMY,CAAAA,CAAiB,CAAE,IAAA,CAAMxD,CAAAA,CAAO,KAAM,KAAA,CAAOA,CAAAA,CAAO,MAAM,KAAA,CAAM,CAAA,CAAG4C,CAAK,CAAE,CAAA,CAChFD,CAAAA,CAAUtkB,CAAAA,EACRukB,IAAU,CAAA,CAAIvkB,CAAAA,CAAYoiB,GAASpiB,CAAAA,CAAWmlB,CAAAA,CAAQ,CAAE,OAAA,CAAAhG,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,QAAAuF,CAAQ,CAAC,EACvF,IAAMS,CAAAA,CAAmBxK,EAAIsK,CAAAA,CAAU,WAAA,CAAa/F,CAAO,CAAA,CAC3D,GAAIiG,CAAAA,CAAkB,CACpB,IAAMC,CAAAA,CAAOzK,EAAIwK,CAAAA,CAAiB,MAAA,CAAQhG,CAAS,CAAA,CAC/CiG,GAAMJ,CAAAA,CAAUI,CAAI,EACxB,IAAA,GAAW,CAACC,EAAUC,CAAK,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQH,EAAiB,KAAA,EAAS,EAAE,CAAA,CACrEG,EAAM,KAAA,EAAO1B,EAAAA,CAAiBiB,CAAAA,CAAeQ,CAAAA,CAAUC,EAAM,KAAK,CAAA,CAClEA,EAAM,KAAA,EAAOxB,EAAAA,CAAagB,EAAeO,CAAAA,CAAUC,CAAAA,CAAM,KAAK,EAEtE,CAEA,IAAI5iB,CAAAA,CAAmCuiB,CAAAA,CAAU,IAAA,CACjD,GAAIP,CAAAA,CAAQ,MAAA,GAAW,CAAA,CAAA,CACrB,GAAIxF,IAAYwC,CAAAA,CAAO,IAAA,CAAK,SAAWvC,CAAAA,GAAcuC,CAAAA,CAAO,KAAK,KAAA,EAAShf,CAAAA,CAAM,CAC9EsiB,CAAAA,CAAUtiB,CAAI,CAAA,CACd,IAAA,GAAW,CAAC6gB,CAAAA,CAAKgC,CAAG,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQ7iB,CAAAA,CAAK,WAAa,EAAE,EAAGkK,CAAAA,CAAI,SAAA,CAAU,IAAI2W,CAAAA,CAAKgC,CAAG,EAC3F,CAAA,CAAA,KACK,CACL,IAAA,IAAWC,CAAAA,IAAOd,CAAAA,CAEhB,GADAhiB,EAAOiY,CAAAA,CAAIjY,CAAAA,EAAM,SAAA,CAAW8iB,CAAG,EAC3B,CAAC9iB,CAAAA,CAAM,MAEb,GAAIA,CAAAA,CAAM,CACRsiB,CAAAA,CAAUtiB,CAAI,CAAA,CACd,IAAA,GAAW,CAAC6gB,CAAAA,CAAKgC,CAAG,CAAA,GAAK,MAAA,CAAO,QAAQ7iB,CAAAA,CAAK,SAAA,EAAa,EAAE,EAAGkK,CAAAA,CAAI,SAAA,CAAU,IAAI2W,CAAAA,CAAKgC,CAAG,EAC3F,CACF,CACF,CAEA,IAAA,GAAW,CAACnG,CAAAA,CAAW30B,CAAK,CAAA,GAAK,MAAA,CAAO,QAAQuwB,CAAAA,CAAM,MAAM,CAAA,CAAG,CAC7D,IAAMyK,CAAAA,CAASh7B,CAAAA,CAAM,OAAS,MAAA,CAMxBi7B,CAAAA,CADej7B,EAAM,OAAA,EAAS,GAAA,CAAK0iB,CAAAA,EAAMA,CAAAA,CAAE,KAAK,CAAA,GAEnCsY,CAAAA,CAAS5F,GAAmBp1B,CAAAA,CAAO0wB,CAAAA,EAAU,KAAK,CAAA,CAAI1wB,CAAAA,CAAM,MAAA,CAAA,CAC/E,GAAI,CAACi7B,CAAAA,CAAY,SACjB,IAAI7B,CAAAA,CAA0B6B,CAAAA,CAC9B,GAAID,CAAAA,CAAQ,CACV,IAAME,CAAAA,CAAYd,EAAc,GAAA,CAAIp6B,CAAAA,CAAM,IAAI,CAAA,CACxCm7B,GAAYd,CAAAA,CAAc,GAAA,CAAIr6B,CAAAA,CAAM,IAAI,EAC1Ck7B,CAAAA,GAAW9B,CAAAA,CAAOA,EAAK,MAAA,CAAQzjB,EAAAA,EAAMulB,EAAU,GAAA,CAAIvlB,EAAC,CAAC,CAAA,CAAA,CACrDwlB,KAAW/B,CAAAA,CAAOA,CAAAA,CAAK,MAAA,CAAQzjB,EAAAA,EAAM,CAACwlB,EAAAA,CAAU,GAAA,CAAIxlB,EAAC,CAAC,GAC5D,CACA,IAAMylB,EAAKlB,CAAAA,CAAe,GAAA,CAAIvF,CAAS,CAAA,CACjC0G,CAAAA,CAAKlB,CAAAA,CAAe,GAAA,CAAIxF,CAAS,CAAA,CACnCyG,CAAAA,GAAIhC,CAAAA,CAAOA,CAAAA,CAAK,OAAQzjB,CAAAA,EAAMylB,CAAAA,CAAG,GAAA,CAAIzlB,CAAC,CAAC,CAAA,CAAA,CACvC0lB,CAAAA,GAAIjC,EAAOA,CAAAA,CAAK,MAAA,CAAQzjB,GAAM,CAAC0lB,CAAAA,CAAG,GAAA,CAAI1lB,CAAC,CAAC,CAAA,CAAA,CAC5CwM,CAAAA,CAAI,iBAAA,CAAkB,GAAA,CAAIwS,EAAWyE,CAAI,EAC3C,CAEA,OAAOjX,CACT,CAAA,CAEamZ,EAAAA,CAAiB,CAACpE,CAAAA,CAAqBvC,CAAAA,GAC9C,EAAAuC,CAAAA,CAAO,KAAA,CAAM,GAAA,CAAIvC,CAAS,GAC1BuC,CAAAA,CAAO,KAAA,GAAU,IAAA,EAAQ,CAACA,EAAO,KAAA,CAAM,GAAA,CAAIvC,CAAS,CAAA,CAAA,CAI7C4G,GAAoB,CAC/BrE,CAAAA,CACAvC,IAC6BuC,CAAAA,CAAO,iBAAA,CAAkB,IAAIvC,CAAS,CAAA,EAAK,IAAA,CAqB7D6G,EAAAA,CAAoB,CAC/BvE,CAAAA,CACAxB,CAAAA,CACA1xB,CAAAA,GAC+D,CAC/D,IAAM2xB,CAAAA,CAAQ3xB,CAAAA,CAAK,KAAA,CAAM,GAAG,EACtB+xB,CAAAA,CAAsB,GACtB2F,CAAAA,CAAyB,GAC/B,IAAA,GAAW,CAAE,KAAA,CAAOrS,CAAAA,CAAG,MAAOuL,CAAAA,CAAW,EAAA,CAAA/f,CAAAA,CAAI,KAAA,CAAA5U,EAAO,IAAA,CAAA21B,CAAK,CAAA,GAAKJ,EAAAA,CAC5D0B,EAAO,IAAA,CAAK,IAAA,CACZxB,EACA1xB,CACF,CAAA,CAAG,CACD,GAAI,CAAC/D,CAAAA,CAAO,OAAO,CAAE,UAAA,CAAY,CAAE,QAAS,SAAA,CAAW,KAAA,CAAOopB,EAAG,IAAA,CAAA0M,CAAK,CAAA,CAAG,OAAA,CAAA2F,CAAQ,CAAA,CACjF,IAAMvE,EAASC,EAAAA,CAAaF,CAAAA,CAAQriB,EAAG,OAAA,CAASA,CAAAA,CAAG,SAAA,CAAWA,CAAAA,CAAG,OAAO,CAAA,CACxE,GAAI,CAAC0mB,EAAAA,CAAepE,EAAQvC,CAAS,CAAA,CACnC,OAAO,CAAE,WAAY,CAAE,OAAA,CAAS,SAAU,KAAA,CAAOvL,CAAAA,CAAG,KAAA0M,CAAK,CAAA,CAAG,OAAA,CAAA2F,CAAQ,EACtE,IAAM1e,CAAAA,CAAmB,CACvB,KAAA,CAAO4X,EACP,KAAA,CAAA30B,CAAAA,CACA,OAAA,CAAS4U,CAAAA,CAAG,QACZ,KAAA,CAAOA,CAAAA,CAAG,UACV,OAAA,CAAS,CAAC,GAAGA,CAAAA,CAAG,OAAO,CACzB,CAAA,CACAkhB,EAAK,IAAA,CAAK/Y,CAAG,CAAA,CACb0e,CAAAA,CAAQ,KAAKvE,CAAM,CAAA,CACnB,IAAMnB,CAAAA,CAAO3M,IAAMsM,CAAAA,CAAM,MAAA,CAAS,EAGlC,GAAIK,CAAAA,EAAQb,GAAYl1B,CAAK,CAAA,CAC3B,OAAO,CACL,WAAY,CACV,OAAA,CAAS,UAAA,CACT,IAAA,CAAA81B,EACA,QAAA,CAAU/Y,CAAAA,CACV,WAAA,CAAagZ,CAAAA,CAAO,EAAC,CAAIL,CAAAA,CAAM,MAAMtM,CAAAA,CAAI,CAAC,CAC5C,CAAA,CACA,OAAA,CAAAqS,CACF,CAAA,CAEF,GAAI,CAAC9F,CAAAA,CAAM,OAAO,CAAE,WAAY,CAAE,OAAA,CAAS,YAAA,CAAc,KAAA,CAAOvM,EAAG,IAAA,CAAA0M,CAAK,EAAG,OAAA,CAAA2F,CAAQ,CACrF,CACA,OAAO,CAAE,UAAA,CAAY,CAAE,OAAA,CAAS,SAAA,CAAW,KAAA,CAAO/F,CAAAA,CAAM,OAAQ,IAAA,CAAAI,CAAK,CAAA,CAAG,OAAA,CAAA2F,CAAQ,CAClF,CAAA,CASaC,GAAqB,CAChCzE,CAAAA,CACAC,EACAtiB,CAAAA,CACA4D,CAAAA,CACAD,CAAAA,GACY,CACZ,IAAMhnB,CAAAA,CACJgnB,CAAAA,GAAS,OAAA,CAAU2e,CAAAA,CAAO,aAAa,GAAA,CAAI1e,CAAK,CAAA,CAAI0e,CAAAA,CAAO,eAAe,GAAA,CAAI1e,CAAK,EACrF,GAAIjnB,CAAAA,GAAU,OAAW,OAAO,KAAA,CAChC,IAAMkkC,CAAAA,CAAOyB,EAAO,gBAAA,CAAiB,GAAA,CAAIwC,GAAYlhB,CAAAA,CAAOD,CAAAA,CAAMhnB,CAAK,CAAC,CAAA,EAAK,EAAA,CACvEoqC,CAAAA,CAAS,CAAE,IAAA,CAAM1E,CAAAA,CAAO,KAAM,KAAA,CAAOA,CAAAA,CAAO,MAAM,MAAA,CAAO,CAAC2E,CAAAA,CAAGxS,CAAAA,GAAMA,IAAMqM,CAAI,CAAE,CAAA,CACrF,OAAA,CAAQ,OAAOlkC,CAAAA,EAAU,QAAA,CAAW,CAACA,CAAK,EAAIA,CAAAA,EAAO,KAAA,CAClDwS,GAASy3B,EAAAA,CAAkBG,CAAAA,CAAQ/mB,EAAI7Q,CAAI,CAAA,CAAE,UAAA,CAAW,OAAA,GAAY,QACvE,CACF,CAAA,CAEa83B,EAAAA,CAAc,CACzB5E,EACAxB,CAAAA,CACAqG,CAAAA,GAUU,CACV,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,QAAAN,CAAQ,CAAA,CAAID,GAAkBvE,CAAAA,CAAQxB,CAAAA,CAAMqG,CAAS,CAAA,CACzE,GAAIC,CAAAA,CAAW,OAAA,GAAY,UAAA,CAAY,OAAO,KAC9C,GAAM,CAAE,QAAA,CAAAC,CAAAA,CAAU,YAAAC,CAAY,CAAA,CAAIF,EAClC,OAAO,CACL,QAASC,CAAAA,CAAS,OAAA,CAClB,SAAA,CAAWA,CAAAA,CAAS,MACpB,OAAA,CAASA,CAAAA,CAAS,OAAA,CAClB,KAAA,CAAOA,EAAS,KAAA,CAChB,cAAA,CAAgBP,CAAAA,CAAQA,CAAAA,CAAQ,OAAS,CAAC,CAAA,CAC1C,kBAAmBO,CAAAA,CAAS,KAAA,CAC5B,YAAAC,CACF,CACF,CAAA,CAKaC,EAAAA,CAAiBjF,IAAgC,CAC5D,OAAA,CAASA,CAAAA,CAAO,IAAA,CAAK,QACrB,SAAA,CAAWA,CAAAA,CAAO,IAAA,CAAK,KAAA,CACvB,QAAS,EAAC,CACV,KAAM,KACR,CAAA,CAAA,CASakF,GAAgB,CAC3BlF,CAAAA,CACA3iB,CAAAA,CACAkE,CAAAA,GAGiF,CACjF,IAAMxD,CAAAA,CAASX,EAAAA,CAAamE,CAAAA,CAAOlE,CAAM,CAAA,CACzC,GAAI,aAAA,GAAiBU,CAAAA,CACnB,OAAO,CAAE,KAAA,CAAO,CAAE,IAAA,CAAM,qBAAA,CAAuB,QAASA,CAAAA,CAAO,WAAY,CAAE,CAAA,CAC/E,GAAIA,CAAAA,CAAO,KAAA,CAAM,IAAA,CAAM,OAAO,CAAE,IAAA,CAAMA,CAAAA,CAAO,KAAA,CAAO,IAAA,CAAMA,EAAO,KAAA,CAAO,MAAA,CAAQ,IAAK,CAAA,CACrF,IAAMonB,EAASP,EAAAA,CAAY5E,CAAAA,CAAQjiB,CAAAA,CAAO,KAAA,CAAOA,EAAO,IAAI,CAAA,CAC5D,GAAI,CAAConB,CAAAA,CACH,OAAO,CACL,KAAA,CAAO,CAAE,IAAA,CAAM,cAAe,OAAA,CAAS,iDAAkD,CAC3F,CAAA,CACF,IAAMC,EAAOnH,EAAAA,CAAYkH,CAAAA,CAAO,KAAK,CAAA,CAC/BE,EAAWhH,EAAAA,CAAiB8G,CAAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,OAAO,CAAA,CACxDzG,CAAAA,CAAO2G,CAAAA,CACT,CAAE,GAAGA,CAAAA,CAAU,OAAA,CAAS,CAAC,GAAGF,CAAAA,CAAO,QAASA,CAAAA,CAAO,iBAAiB,CAAA,CAAG,IAAA,CAAAC,CAAK,CAAA,CAC5E,CAAE,GAAGrnB,CAAAA,CAAO,MAAO,IAAA,CAAAqnB,CAAK,CAAA,CAC5B,OAAO,CAAE,IAAA,CAAMrnB,CAAAA,CAAO,MAAO,IAAA,CAAA2gB,CAAAA,CAAM,OAAAyG,CAAO,CAC5C,CAAA,CAiBa7E,EAAAA,CAAe,CAC1B/B,CAAAA,CACAC,CAAAA,CACA1xB,CAAAA,CACA+yB,CAAAA,CAAS,KAIN,CACH,IAAMpB,CAAAA,CAAQ3xB,CAAAA,CAAK,MAAM,GAAG,CAAA,CACtB+xB,EAAsB,EAAC,CACzBxZ,EAAuB,IAAA,CAC3B,IAAA,GAAW,CAAE,KAAA,CAAO8M,EAAG,KAAA,CAAA5Q,CAAAA,CAAO,EAAA,CAAA5D,CAAAA,CAAI,MAAA5U,CAAAA,CAAO,IAAA,CAAA21B,CAAK,CAAA,GAAKJ,GAASC,CAAAA,CAAMC,CAAAA,CAAM1xB,CAAI,CAAA,CAAG,CAC7E,GAAI,CAAC/D,CAAAA,EAAS,CAAC21B,CAAAA,CAAM,MACrB,IAAMsE,CAAAA,CAAU,CAAC,GAAGrlB,EAAG,OAAA,CAAS4D,CAAK,CAAA,CACrCsd,CAAAA,CAAK,KAAK,CACR,GAAA,CAAKH,EAAK,OAAA,CACV,KAAA,CAAOA,EAAK,SAAA,CACZ,OAAA,CAAAsE,CAAAA,CACA,MAAA,CAAQ,GAAGnD,CAAM,CAAA,EAAGpB,CAAAA,CAAM,KAAA,CAAM,EAAGtM,CAAAA,CAAI,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CACnD,OAAQppB,CAAAA,CAAM,MAAA,GAAW,IAC3B,CAAC,CAAA,CACGopB,CAAAA,GAAMsM,CAAAA,CAAM,OAAS,CAAA,GAAGpZ,CAAAA,CAAM,CAAE,GAAGqZ,EAAM,OAAA,CAAS,CAAC,GAAGsE,CAAO,CAAE,CAAA,EACrE,CACA,OAAO,CAAE,IAAA,CAAAnE,EAAM,GAAA,CAAAxZ,CAAI,CACrB,CAAA,KCtcMigB,EAAAA,CAAgB,SAAA,CAChBC,GAAeplB,CAAAA,EAA0BA,CAAAA,CAAK,WAAWmlB,EAAa,CAAA,CACtEE,EAAAA,CAAYrlB,CAAAA,EAChBolB,GAAYplB,CAAI,CAAA,CAAIA,EAAK,KAAA,CAAMmlB,EAAAA,CAAc,MAAM,CAAA,CAAInlB,CAAAA,CAMnDslB,EAAAA,CAAoB,CACxBzkB,EACAlC,CAAAA,GACM,CACN,IAAMoM,CAAAA,CAAM,CAAE,GAAGlK,CAAK,CAAA,CAEtB,GADIA,EAAK,KAAA,GAAU,MAAA,GAAWkK,EAAI,KAAA,CAAQpM,CAAAA,CAAGkC,EAAK,KAAK,CAAA,CAAA,CACnDA,CAAAA,CAAK,OAAA,CAAS,CAChB,IAAMve,CAAAA,CAAuC,EAAC,CAC9C,OAAW,CAAC8e,CAAAA,CAAOxY,CAAK,CAAA,GAAK,OAAO,OAAA,CAAQiY,CAAAA,CAAK,OAAO,CAAA,CACtDve,CAAAA,CAAQ8e,CAAK,CAAA,CAAI8f,EAAAA,CAAat4B,CAAK,CAAA,CAC/BA,EAAM,KAAA,GAAU,MAAA,CACd,CAAE,GAAGA,EAAO,KAAA,CAAO+V,CAAAA,CAAG/V,CAAAA,CAAM,KAAK,CAAE,CAAA,CACnCA,CAAAA,CACF+V,EAAG/V,CAAK,CAAA,CACdmiB,EAAI,OAAA,CAAUzoB,EAChB,CACA,GAAI,cAAeue,CAAAA,EAAQA,CAAAA,CAAK,SAAA,CAAW,CACzC,IAAM0kB,CAAAA,CAA4C,EAAC,CACnD,IAAA,GAAW,CAAC7D,CAAAA,CAAKgC,CAAG,IAAK,MAAA,CAAO,OAAA,CAAQ7iB,EAAK,SAAS,CAAA,CACpD0kB,CAAAA,CAAU7D,CAAG,EAAI4D,EAAAA,CAAkB5B,CAAAA,CAAK/kB,CAAE,CAAA,CAC5CoM,EAAI,SAAA,CAAYwa,EAClB,CACA,OAAOxa,CACT,CAAA,CAGMya,EAAAA,CAAqB,CAACC,CAAAA,CAAoB9mB,CAAAA,GAA+B,CAC7E,IAAM+mB,CAAAA,CAAiD,EAAC,CACxD,OAAW,CAACrI,CAAAA,CAASsI,CAAQ,CAAA,GAAK,OAAO,OAAA,CAAQF,CAAAA,CAAI,WAAA,EAAe,EAAE,CAAA,CAAG,CACvE,IAAMG,CAAAA,CAAgD,GACtD,IAAA,GAAW,CAACzM,CAAAA,CAAOtY,CAAI,IAAK,MAAA,CAAO,OAAA,CAAQ8kB,CAAAA,CAAS,MAAA,EAAU,EAAE,CAAA,CAC9DC,CAAAA,CAAOzM,CAAK,EAAImM,EAAAA,CAAkBzkB,CAAAA,CAAMlC,CAAE,CAAA,CAC5C+mB,CAAAA,CAAYrI,CAAO,CAAA,CAAIsI,CAAAA,CAAS,MAAA,CAAS,CAAE,GAAGA,CAAAA,CAAU,MAAA,CAAAC,CAAO,CAAA,CAAID,EACrE,CACA,OAAO,CACL,GAAGF,CAAAA,CACH,KAAMA,CAAAA,CAAI,IAAA,CAAOH,GAAkBG,CAAAA,CAAI,IAAA,CAAM9mB,CAAE,CAAA,CAAI,MAAA,CACnD,WAAA,CAAa8mB,CAAAA,CAAI,YAAcC,CAAAA,CAAc,MAC/C,CACF,CAAA,CAEMG,GAAmBJ,CAAAA,EAAoC,CAC3D,IAAM1a,CAAAA,CAAmB,EAAC,CAC1B,OAAAya,GAAmBC,CAAAA,CAAMvnB,CAAAA,GACvB6M,EAAI,IAAA,CAAK7M,CAAS,CAAA,CACXA,CAAAA,CACR,EACM6M,CACT,CAAA,CAIM+a,EAAAA,CAAiBL,CAAAA,EAAoC,CACzD,IAAM3Z,CAAAA,CAAQ,IAAI,GAAA,CAClB,QAAW2T,CAAAA,IAAQoG,EAAAA,CAAgBJ,CAAG,CAAA,CACpC,IAAA,IAAWzlB,KAAQ4L,EAAAA,CAAa6T,CAAI,CAAA,CAAQ2F,EAAAA,CAAYplB,CAAI,CAAA,EAAG8L,CAAAA,CAAM,GAAA,CAAI9L,CAAI,EAC/E,OAAO8L,CACT,CAAA,CAUaia,EAAAA,CAAoBnF,GAAoD,CACnF,IAAM9U,EAAQ,IAAI,GAAA,CAClB,QAAW2Z,CAAAA,IAAO/H,EAAAA,CAAakD,CAAe,CAAA,CAC5C,QAAWnB,CAAAA,IAAQoG,EAAAA,CAAgBJ,CAAG,CAAA,CACpC,QAAWzlB,CAAAA,IAAQ4L,EAAAA,CAAa6T,CAAAA,CAAM,CAAE,SAAU,IAAK,CAAC,EAAG3T,CAAAA,CAAM,GAAA,CAAIuZ,GAASrlB,CAAI,CAAC,CAAA,CACvF,OAAO,CAAC,GAAG8L,CAAK,CAAA,CAAE,IAAA,EACpB,CAAA,CAUaka,EAAAA,CAAW,CACtBpF,CAAAA,CACA7X,IACyB,CACzB,GAAI0U,GAAOmD,CAAe,CAAA,CAAG,OAAOA,CAAAA,CACpC,IAAMqF,CAAAA,CAAuC,CAAE,GAAGld,CAAS,CAAA,CAC3D,IAAA,GAAW,CAACgR,EAAGxb,CAAC,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQwK,CAAQ,CAAA,CAAGkd,CAAAA,CAAU,GAAGd,EAAa,CAAA,EAAGpL,CAAC,CAAA,CAAE,CAAA,CAAIxb,CAAAA,CACnF,OAAO,CACL,GAAGinB,EAAAA,CAAmB5E,CAAAA,CAAkB1iB,CAAAA,EAAc8N,GAAS9N,CAAAA,CAAW+nB,CAAS,CAAC,CAAA,CACpF,OAAQD,EAAAA,CAASpF,CAAAA,CAAgB,OAAQ7X,CAAQ,CACnD,CACF,CAAA,CAQamd,EAAAA,CAAqB9C,CAAAA,EAAuC,CACvE,IAAMvL,CAAAA,CAAmB,GACnBsO,CAAAA,CAAW,IAAI,IACrB,IAAA,IAAWC,CAAAA,IAAO1I,EAAAA,CAAa0F,CAAAA,CAAU,MAAM,CAAA,CAC7C,IAAA,IAAWvgC,KAAKijC,EAAAA,CAAcM,CAAG,EAAGD,CAAAA,CAAS,GAAA,CAAItjC,CAAC,CAAA,CAEpD,QAAW,CAAA,IAAKijC,EAAAA,CAAc1C,CAAS,CAAA,CACjC+C,EAAS,GAAA,CAAI,CAAC,CAAA,EAChBtO,CAAAA,CAAO,KACL,CAAA,WAAA,EAAc,CAAC,2GAAsG,CAAC,CAAA,CAAA,CACxH,EAGJ,IAAM8H,CAAAA,CAAO,IAAI,GAAA,CACjB,QAAWF,CAAAA,IAAQoG,EAAAA,CAAgBzC,CAAS,CAAA,CAC1C,QAAWpjB,CAAAA,IAAQ4L,EAAAA,CAAa6T,CAAI,CAAA,CAAO2F,GAAYplB,CAAI,CAAA,EAAG2f,EAAK,GAAA,CAAI0F,EAAAA,CAASrlB,CAAI,CAAC,CAAA,CACvF,IAAA,IAAWoL,CAAAA,IAAKuU,EACTwG,CAAAA,CAAS,GAAA,CAAI/a,CAAC,CAAA,EACjByM,EAAO,IAAA,CAAK,CAAA,aAAA,EAAgBzM,CAAC,CAAA,sDAAA,CAAwD,EAEzF,OAAOyM,CACT,ECrIO,IAAMwO,EAAAA,CAAa,CACxBnoB,CAAAA,CACA0iB,CAAAA,GACc,CACd,IAAMf,EAASgB,CAAAA,CAAcD,CAAe,CAAA,CACtCrjB,CAAAA,CAAO,CAAC6D,CAAAA,CAAgBlE,CAAAA,GAC5B,OAAOkE,CAAAA,EAAU,UAAYA,CAAAA,GAAU,EAAA,CAAK2jB,GAAclF,CAAAA,CAAQ3iB,CAAAA,CAAQkE,CAAK,CAAA,CAAI,IAAA,CACrF,OAAO8I,EAAAA,CACLhM,EACA,CACE,OAAA,CAAS,CAAC2C,CAAAA,CAAM3D,IAAW,CACzB,GAAIqO,CAAAA,CAAe1K,CAAI,IAAM,OAAA,EAAWA,CAAAA,CAAK,WAAY,OAAOA,CAAAA,CAChE,IAAMrD,CAAAA,CAAKD,CAAAA,CAAKsD,CAAAA,CAAK,KAAA,CAAO3D,CAAM,CAAA,CAClC,GAAI,CAACM,CAAAA,EAAM,UAAWA,CAAAA,EAAM,CAACA,CAAAA,CAAG,MAAA,EAAUA,EAAG,MAAA,CAAO,WAAA,CAAY,OAAQ,OAAOqD,CAAAA,CAC/E,GAAM,CAAE,KAAA,CAAAjY,CAAM,CAAA,CAAI4U,EAAG,MAAA,CACrB,OAAO5U,CAAAA,CAAM,IAAA,GAAS,UAAY0a,EAAAA,CAAgB,QAAA,CAAS1a,CAAAA,CAAM,IAAiB,EAC9E,CAAE,GAAGiY,EAAM,UAAA,CAAYjY,CAAAA,CAAM,IAAK,CAAA,CAClCiY,CACN,CAAA,CACA,KAAA,CAAO,CAACA,CAAAA,CAAM3D,CAAAA,GAAW,CACvB,GAAI,CAACoM,GAAezI,CAAI,CAAA,CAAG,OAAO,MAAA,CAClC,IAAMrD,CAAAA,CAAKD,CAAAA,CAAKsD,EAAK,KAAA,CAAO3D,CAAM,EAC5BtU,CAAAA,CAAQ4U,CAAAA,EAAM,EAAE,OAAA,GAAWA,GAAMA,CAAAA,CAAG,MAAA,EAAQ,KAAA,CAAQ,MAAA,CAC1D,OAAOA,CAAAA,EAAM,EAAE,OAAA,GAAWA,CAAAA,CAAAA,EAAO5U,GAASm1B,EAAAA,CAAgBn1B,CAAK,EAC3D,CAAC,GAAGsU,EAAQM,CAAAA,CAAG,IAAI,CAAA,CACnB,KACN,CACF,CAAA,CACA,CAACsnB,EAAAA,CAAcjF,CAAM,CAAC,CACxB,CACF,ECtCO,IAAMyG,GAAa,CAAC,CAAE,KAAAlI,CAAAA,CAAM,OAAA,CAAAmI,EAAS,OAAA,CAAAlJ,CAAAA,CAAS,KAAA,CAAAlE,CAAM,KAAmB,CAC5E,GAAGwB,EAAAA,CAAgB,CAAE,KAAAyD,CAAAA,CAAM,OAAA,CAAAmI,CAAQ,CAAC,EACpC,OAAA,CAAAlJ,CAAAA,CACA,MAAAlE,CACF,CAAA,ECiBO,IAAMqN,EAAAA,CAAc1H,CAAAA,EACrBA,CAAAA,EAAM,IAAA,GAAS,YAAoB,WAAA,CACnCA,CAAAA,EAAM,IAAA,GAAS,QAAA,CAAiB,UAChCA,CAAAA,CAAK,KAAA,CAAM,IAAA,GAAS,QAAA,CAAiBA,EAAK,KAAA,CAAM,MAAA,CAAS,YAAc,UAAA,CACvEA,CAAAA,CAAK,MAAM,MAAA,CAAe,MAAA,CAC1BA,CAAAA,CAAK,KAAA,CAAM,OAAS,MAAA,CAAe,MAAA,CAChC2H,EAAAA,CAAU3H,CAAAA,CAAK,MAAM,IAAI,CAAA,CAG5B2H,EAAAA,CAAatlB,CAAAA,EACbA,IAAS5B,CAAAA,CAAU,IAAA,CAAa,OAChC4B,CAAAA,GAAS5B,CAAAA,CAAU,KAAa,MAAA,CAChC4B,CAAAA,GAAS5B,CAAAA,CAAU,QAAA,CAAiB,UACjC4B,CAAAA,GAAS5B,CAAAA,CAAU,MAAA,CAAS,MAAA,CAAS,SASjCmnB,EAAAA,CAAqB,CAChC1hB,CAAAA,CACA1a,CAAAA,CACA6uB,IACY,CACZ,IAAMvwB,EAAQi2B,EAAAA,CAAW7Z,CAAAA,CAAK,MAAO1a,CAAAA,CAAK6uB,CAAK,CAAA,CAC/C,OAAIvwB,EAAcA,CAAAA,CAAM,IAAA,GAAS,QAAA,GAAaA,CAAAA,CAAM,OAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS,MAAA,CAAA,CAEtFoc,EAAK,UAAA,GAAe,MAAA,EAAaA,EAAK,UAAA,GAAe,QAAA,EAAYA,EAAK,UAAA,GAAe,MAEzF,CAAA,CAGa2hB,EAAAA,CAAuB,CAClCvlB,CAAAA,CACA9W,CAAAA,CACA6uB,CAAAA,GACS,CACT,GAAIqN,EAAAA,CAAW5H,EAAAA,CAASxd,CAAAA,CAAO9W,CAAAA,CAAK6uB,CAAK,CAAC,CAAA,GAAM,YAAa,MAAMrU,EAAAA,CAAkB1D,CAAK,CAC5F,CAAA,CAGawlB,EAAAA,CAAa/Q,CAAAA,EACxBA,IAAU,QAAA,EACVA,CAAAA,GAAU,SAAA,EACVA,CAAAA,GAAU,QACVA,CAAAA,GAAU,MAAA,EACVA,CAAAA,GAAU,UAAA,EACVA,IAAU,WAAA,CAICgR,EAAAA,CAAe,CAAChR,CAAAA,CAA+B5I,CAAAA,GAC1D2Z,GAAU/Q,CAAK,CAAA,EAAKiR,EAAAA,CAAY7Z,CAAO,EAGnC6Z,EAAAA,CAAevoB,CAAAA,EACnB,OAAOA,CAAAA,EAAM,UAAa,KAAA,CAAM,OAAA,CAAQA,CAAC,CAAA,EAAKA,EAAE,IAAA,CAAKuoB,EAAW,EAGrDC,EAAAA,CAAY,CACvB/hB,EACA1a,CAAAA,CACA6uB,CAAAA,GACe,CACf,IAAMtD,EAAQ2Q,EAAAA,CAAW5H,EAAAA,CAAS5Z,CAAAA,CAAK,KAAA,CAAO1a,EAAK6uB,CAAK,CAAC,CAAA,CACzD,OAAOtD,IAAU,SAAA,EAAa7Q,CAAAA,CAAK,aAAe,MAAA,CAAYyhB,EAAAA,CAAUzhB,EAAK,UAAU,CAAA,CAAI6Q,CAC7F,CAAA,CAIamR,GAAap+B,CAAAA,EAAgD,CACxE,GAAI,CAAAA,EAAM,MAAA,CACV,CAAA,GAAIA,CAAAA,CAAM,IAAA,GAAS,OAAQ,OAAO2W,CAAAA,CAAU,KAC5C,GAAI,EAAA3W,EAAM,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAM,IAAA,GAAS2W,EAAU,IAAA,CAAA,CACxD,OAAOQ,EAAAA,CAAYnX,CAAAA,CAAM,IAAI,CAAA,CAAIA,CAAAA,CAAM,IAAA,CAAO,MAAA,CAChD,EC9FO,IAAMq+B,EAAAA,CAAY,CAAC9sC,CAAAA,CAAgB4sB,CAAAA,GAAsC,CAC9E,IAAMmgB,CAAAA,CAAKjT,EAAAA,CAAc95B,CAAAA,CAAOolB,EAAU,QAAA,CAAUwH,CAAI,CAAA,CACxD,OAAO,OAAOmgB,CAAAA,EAAO,QAAA,EAAY,CAAC,MAAA,CAAO,MAAM,IAAI,IAAA,CAAKA,CAAE,CAAA,CAAE,OAAA,EAAS,CAAA,CAAIA,CAAAA,CAAK,MAChF,CAAA,CAKMC,GACJ,CAAC/lB,CAAAA,CAAexD,CAAAA,CAAuBmJ,CAAAA,GACtC5sB,GAA4B,CAC3B,GAAIA,CAAAA,EAAU,IAAA,CAA6B,OAAOA,CAAAA,CAClD,IAAM+sC,EAAKD,EAAAA,CAAU9sC,CAAAA,CAAO4sB,CAAI,CAAA,CAChC,GAAImgB,CAAAA,GAAO,MAAA,CACT,MAAM,IAAI,KAAA,CAAM,0CAA0C9lB,CAAK,CAAA,GAAA,EAAM,OAAOjnB,CAAK,CAAC,CAAA,CAAE,CAAA,CACtF,OAAOyjB,CAAAA,GAAW,UAAA,CAAa,IAAI,IAAA,CAAKspB,CAAE,EAAI,IAAI,IAAA,CAAKA,CAAE,CAAA,CAAE,aAC7D,CAAA,CAWWE,EAAAA,CAAsB,CACjCpiB,EACA7qB,CAAAA,CACA2kC,CAAAA,CACAlhB,CAAAA,CACAmJ,CAAAA,GACY,CACZ,GAAI5sB,CAAAA,EAAU,MAA+B2kC,CAAAA,EAAM,IAAA,GAAS,YAAa,OAAO3kC,CAAAA,CAChF,IAAMyO,CAAAA,CAAQk2B,GAAM,IAAA,GAAS,QAAA,CAAWA,CAAAA,CAAK,KAAA,CAAQ,OACrD,GAAIl2B,CAAAA,EAAO,MAAA,CAAQ,OAAOzO,EAC1B,IAAMktC,CAAAA,CAAWz+B,EAAQo+B,EAAAA,CAAUp+B,CAAK,EAAI,MAAA,CAC5C,GAAIoc,CAAAA,CAAK,UAAA,GAAe,QAAaqiB,CAAAA,GAAa,MAAA,EAAariB,CAAAA,CAAK,UAAA,GAAeqiB,EACjF,MAAM,IAAI,KAAA,CACR,CAAA,YAAA,EAAeriB,EAAK,UAAU,CAAA,YAAA,EAAeqiB,CAAQ,CAAA,QAAA,EAAWriB,CAAAA,CAAK,KAAK,CAAA,OAAA,EAAUpH,CAAM,CAAA,+FAAA,CAC5F,CAAA,CAEF,IADaypB,CAAAA,EAAYriB,CAAAA,CAAK,UAAA,IACjBzF,CAAAA,CAAU,SAAU,CAC/B,IAAM+nB,CAAAA,CAAUH,EAAAA,CAAUniB,EAAK,KAAA,CAAOpH,CAAAA,CAAQmJ,GAAM,CAAA,CACpD,OAAO,KAAA,CAAM,OAAA,CAAQ5sB,CAAK,CAAA,CAAIA,EAAM,GAAA,CAAImtC,CAAO,CAAA,CAAIA,CAAAA,CAAQntC,CAAK,CAClE,CAIA,GACE6qB,CAAAA,CAAK,aAAe,MAAA,EACpBqiB,CAAAA,GAAa9nB,EAAU,MAAA,EAAA,CACtB,KAAA,CAAM,QAAQplB,CAAK,CAAA,CAAIA,CAAAA,CAAQ,CAACA,CAAK,CAAA,EAAG,IAAA,CACtCuwB,CAAAA,EAAS,OAAOA,GAAS,QAAA,EAAY,OAAOA,CAAAA,EAAS,SACxD,EAEA,MAAM,IAAI,MACR,CAAA,CAAA,EAAI1F,CAAAA,CAAK,KAAK,CAAA,0FAAA,CAChB,CAAA,CACF,GACEA,CAAAA,CAAK,aAAe,MAAA,EACpBqiB,CAAAA,GAAa,MAAA,GACZ7nB,EAAAA,CAAc,SAAS6nB,CAAQ,CAAA,EAAKA,CAAAA,GAAa9nB,CAAAA,CAAU,WAC3D,KAAA,CAAM,OAAA,CAAQplB,CAAK,CAAA,CAAIA,CAAAA,CAAQ,CAACA,CAAK,CAAA,EAAG,IAAA,CAAMuwB,CAAAA,EAAS,OAAOA,CAAAA,EAAS,QAAQ,EAEhF,MAAM,IAAI,MACR,CAAA,CAAA,EAAI1F,CAAAA,CAAK,KAAK,CAAA,KAAA,EAAQqiB,CAAQ,CAAA,qCAAA,EAAwCA,CAAAA,GAAa9nB,EAAU,OAAA,CAAU,SAAA,CAAY,QAAQ,CAAA,wBAAA,EAA2B8nB,CAAQ,CAAA,EAAA,CAChK,CAAA,CACF,OAAOriB,CAAAA,CAAK,UAAA,GAAe,MAAA,EAAazB,EAAAA,CAAsB,SAASyB,CAAAA,CAAK,UAAU,CAAA,CAClFiP,EAAAA,CACE95B,EACA6qB,CAAAA,CAAK,UAAA,CACLA,EAAK,UAAA,GAAezF,CAAAA,CAAU,SAAWwH,CAAAA,EAAK,CAAI,MACpD,CAAA,CACA5sB,CACN,CAAA,CCvEA,IAAMotC,EAAAA,CAAWptC,CAAAA,EACf,MAAM,OAAA,CAAQA,CAAK,CAAA,CAAIA,CAAAA,CAAM,QAAQotC,EAAO,CAAA,CAAI,CAACptC,CAAK,CAAA,CAI3CqtC,GAAgB/H,CAAAA,EAC3BA,CAAAA,CAAK,KAAA,GAAU,MAAA,CAAY,KAAO8H,EAAAA,CAAQ9H,CAAAA,CAAK,KAAK,CAAA,CAIhD3U,GAAUvM,CAAAA,EAAwB0oB,EAAAA,CAAU1oB,CAAC,CAAA,GAAM,OAEnDkpB,EAAAA,CAAiB,iBAAA,CAKjBC,GAAsF,CAC1F,MAAA,CAAQ,CAAE,QAAA,CAAU,UAAA,CAAY,IAAA,CAAOnpB,CAAAA,EAAM,OAAOA,CAAAA,EAAM,QAAS,CAAA,CACnE,IAAA,CAAM,CAAE,QAAA,CAAU,UAAA,CAAY,IAAA,CAAOA,CAAAA,EAAM,OAAOA,CAAAA,EAAM,QAAS,EACjE,GAAA,CAAK,CAAE,SAAU,YAAA,CAAc,IAAA,CAAM,MAAA,CAAO,aAAc,EAE1D,MAAA,CAAQ,CAAE,QAAA,CAAU,YAAA,CAAc,KAAM,MAAA,CAAO,aAAc,CAAA,CAC7D,KAAA,CAAO,CAAE,QAAA,CAAU,UAAA,CAAY,KAAM,MAAA,CAAO,QAAS,EAGrD,OAAA,CAAS,CACP,QAAA,CAAU,8BAAA,CACV,KAAOA,CAAAA,EAAM,MAAA,CAAO,QAAA,CAASA,CAAC,GAAM,OAAOA,CAAAA,EAAM,QAAA,EAAYkpB,EAAAA,CAAe,KAAKlpB,CAAC,CACpF,EACA,OAAA,CAAS,CAAE,SAAU,WAAA,CAAa,IAAA,CAAOA,CAAAA,EAAM,OAAOA,GAAM,SAAU,CAAA,CACtE,QAAA,CAAU,CAAE,SAAU,QAAA,CAAU,IAAA,CAAMuM,EAAO,CAAA,CAC7C,KAAM,CAAE,QAAA,CAAU,UAAW,IAAA,CAAM,IAAM,IAAK,CAAA,CAC9C,KAAA,CAAO,CAAE,QAAA,CAAU,UAAW,IAAA,CAAM,IAAM,IAAK,CACjD,CAAA,CAEM6c,GAAQppB,CAAAA,EACZ,OAAOA,CAAAA,EAAM,QAAA,CACT,IAAIA,CAAC,CAAA,CAAA,CAAA,CACL,OAAOA,CAAAA,EAAM,QAAA,EAAYA,IAAM,IAAA,CAC7B,IAAA,CAAK,SAAA,CAAUA,CAAC,EAChB,MAAA,CAAOA,CAAC,CAAA,CAQHqpB,EAAAA,CAAoB,CAC/BnI,CAAAA,CACA4H,CAAAA,GACsB,CACtB,IAAMQ,EAAa,YAAA,GAAgBpI,CAAAA,CAAOA,EAAK,UAAA,CAAa,MAAA,CACtDte,EAAO0mB,CAAAA,EAAcR,CAAAA,CAC3B,GAAIlmB,CAAAA,GAAS,QAAaA,CAAAA,GAAS5B,CAAAA,CAAU,IAAA,CAAM,OAAO,EAAC,CAE3D,IAAM8B,CAAAA,CAAK,UAAA,GAAcoe,EAAOA,CAAAA,CAAK,QAAA,CAAWA,EAAK,YAAA,CAC/C72B,CAAAA,CAAQgY,GAAiB6e,CAAI,CAAA,CACnC,GAAI,CAAC72B,EAAO,OAAO,EAAC,CAGpB,IAAMsmB,EADU2Y,CAAAA,GAAe,MAAA,EAAaA,CAAAA,GAAeR,CAAAA,CAEvD,UAAU5H,CAAAA,CAAK,KAAK,gBAAgBte,CAAI,CAAA,CAAA,CACxC,GAAGA,CAAI,CAAA,QAAA,EAAWse,CAAAA,CAAK,KAAK,IAEhC,GAAI,CAAC72B,CAAAA,CAAM,KAAA,CAAM,SAASuY,CAAI,CAAA,CAC5B,OAAO,CACL,CACE,IAAA,CAAMse,CAAAA,CAAK,MACX,IAAA,CAAM,wBAAA,CACN,QAAS,CAAA,UAAA,EAAape,CAAE,CAAA,oBAAA,EAAuB6N,CAAK,iBAAiBtmB,CAAAA,CAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAC7F,CACF,CAAA,CAKF,GAAI62B,EAAK,MAAA,GAAW,MAAA,EAGd,EADF,cAAA,GAAkBA,CAAAA,CAAOte,IAAS5B,CAAAA,CAAU,QAAA,CAAWC,EAAAA,CAAc,QAAA,CAAS2B,CAAI,CAAA,CAAA,CAElF,OAAO,CACL,CACE,KAAMse,CAAAA,CAAK,KAAA,CACX,IAAA,CAAM,gBAAA,CACN,QAAS,CAAA,4BAAA,EAA+BvQ,CAAK,EAC/C,CACF,CAAA,CAKJ,GAAI,cAAA,GAAkBuQ,CAAAA,EAAQ72B,CAAAA,CAAM,UAAA,GAAe,QAAUA,CAAAA,CAAM,UAAA,GAAe,SAAA,CAChF,OAAO,EAAC,CAEV,GAAI4a,EAAAA,CAAoB,QAAA,CAAS5a,EAAM,UAAU,CAAA,EAAK,MAAM,OAAA,CAAQ62B,CAAAA,CAAK,KAAK,CAAA,CAC5E,OAAO,CACL,CACE,KAAMA,CAAAA,CAAK,KAAA,CACX,KAAM,qBAAA,CACN,OAAA,CAAS,aAAape,CAAE,CAAA,0BAAA,EAA6B6N,CAAK,CAAA,iBAAA,CAC5D,CACF,CAAA,CAGF,GAAM,CAAE,QAAA,CAAA4Y,CAAAA,CAAU,KAAAC,CAAK,CAAA,CAAIL,EAAAA,CAAYvmB,CAAI,EAErC6mB,CAAAA,CAAezpB,CAAAA,EAAwB,CAC3C,GAAI,CACF,OAAOwpB,CAAAA,CAAK9T,EAAAA,CAAc1V,CAAAA,CAAG4C,CAAI,CAAC,CACpC,MAAQ,CACN,OAAO,MACT,CACF,CAAA,CACM8mB,CAAAA,CAAkB1pB,CAAAA,EACtBwpB,EAAKxpB,CAAC,CAAA,EAAMspB,CAAAA,GAAe,MAAA,EAAaG,EAAYzpB,CAAC,CAAA,CACvD,OAAA,CAAQipB,EAAAA,CAAa/H,CAAI,CAAA,EAAK,IAC3B,MAAA,CAAQlhB,CAAAA,EAAMA,IAAM,IAAA,EAAQ,CAAC0pB,CAAAA,CAAe1pB,CAAC,CAAC,CAAA,CAC9C,GAAA,CAAKA,CAAAA,GAAO,CACX,KAAMkhB,CAAAA,CAAK,KAAA,CACX,IAAA,CAAM,eAAA,CACN,QAAS,CAAA,MAAA,EAASkI,EAAAA,CAAKppB,CAAC,CAAC,CAAA,cAAA,EAAiB2Q,CAAK,CAAA,WAAA,EAAc4Y,CAAQ,CAAA,CAAA,CACvE,CAAA,CAAE,CACN,CAAA,CAIaI,EAAAA,CAAoB,CAC/B9mB,CAAAA,CACA+mB,EACAv/B,CAAAA,GAC2B,CAC3B,GAAIA,CAAAA,CAAM,SAAW,IAAA,EAAQk1B,EAAAA,CAAYl1B,CAAK,CAAA,CAAG,OAAO,KACxD,IAAMs0B,CAAAA,CAAUa,EAAAA,CAAgBn1B,CAAK,EACjC,CAAA,eAAA,EAAkBu/B,CAAa,CAAA,qBAAA,EAAwB/mB,CAAK,6FAAwFA,CAAK,CAAA,UAAA,CAAA,CACzJ,CAAA,eAAA,EAAkB+mB,CAAa,wBAAwB/mB,CAAK,CAAA,cAAA,EAAiB4lB,GAAUp+B,CAAK,CAAA,EAAKA,EAAM,IAAI,CAAA,MAAA,CAAA,CAC/G,OAAO,CAAE,KAAMwY,CAAAA,CAAO,IAAA,CAAM,wBAAA,CAA0B,OAAA,CAAA8b,CAAQ,CAChE,CAAA,CC3HA,IAAMkL,EAAAA,CAAQ,CACZpjB,CAAAA,CACA6a,CAAAA,CACAnmC,EACA2uC,CAAAA,GAEA3e,CAAAA,CACE1E,EACA,CAACnE,CAAAA,CAAM3D,CAAAA,GAAW,CAGhB,IAAMiE,CAAAA,CAAOoK,CAAAA,CAAe1K,CAA+B,CAAA,CAC3D,GAAIM,CAAAA,GAAS,IAAA,CACX,OAAAknB,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,OAAOxnB,CAAAA,CAAK,KAAA,EAAU,SAAWA,CAAAA,CAAK,KAAA,CAAQ,EAAA,CACpD,IAAA,CAAM,sBACN,OAAA,CAASwE,EAAAA,GAAqB,OAChC,CAAC,EACM,KAAA,CAET,GAAIoE,EAAAA,CAAc5I,CAAI,EAAG,OACzB,IAAM4e,EAAO5e,CAAAA,CAGPynB,CAAAA,CAAYzrB,GAA6D,CAC7E,IAAMe,CAAAA,CAASX,EAAAA,CAAaJ,EAAKK,CAAM,CAAA,CACvC,OAAI,aAAA,GAAiBU,GACnByqB,CAAAA,CAAO,IAAA,CAAK,CAAE,IAAA,CAAMxrB,EAAK,IAAA,CAAM,qBAAA,CAAuB,QAASe,CAAAA,CAAO,WAAY,CAAC,CAAA,CAC5E,IAAA,EAEF,CAAE,KAAA,CAAOA,EAAO,KAAA,CAAO,KAAA,CAAOA,CAAAA,CAAO,IAAK,CACnD,CAAA,CAEI2gB,CAAAA,CAAmBrhB,CAAAA,CAAOA,CAAAA,CAAO,OAAS,CAAC,CAAA,CAC3CqrB,EAAU,IAAA,CACVvD,CAAAA,CAA0B,KAC9B,GAAI,OAAA,GAAWvF,CAAAA,EAAQ,OAAOA,EAAK,KAAA,EAAU,QAAA,EAAYA,CAAAA,CAAK,KAAA,GAAU,GAAI,CAC1E,IAAMliB,CAAAA,CAAOwnB,EAAAA,CAAclF,EAAQ3iB,CAAAA,CAAQuiB,CAAAA,CAAK,KAAK,CAAA,CACjD,OAAA,GAAWliB,GACb8qB,CAAAA,CAAO,IAAA,CAAK,CAAE,IAAA,CAAM5I,EAAK,KAAA,CAAO,GAAGliB,CAAAA,CAAK,KAAM,CAAC,CAAA,CAC/CgrB,CAAAA,CAAU,KAAA,EAET,CAAE,KAAAhK,CAAAA,CAAM,MAAA,CAAAyG,CAAO,CAAA,CAAIznB,EAExB,CACA,IAAMirB,CAAAA,CAAsCxD,CAAAA,EAAQ,KAAA,EAAS,KACvDyD,CAAAA,CAAoBzD,CAAAA,EAAQ,iBAAA,EAAqB,IAAA,CACjD0D,EAAiB1D,CAAAA,EAAQ,KAAA,CAAM,IAAA,GAAS,MAAA,CACxC2D,EAAmB3D,CAAAA,EAAQ,KAAA,CAAM,MAAQ,IAAA,CAGzC4D,CAAAA,CACJ5D,GAAUA,CAAAA,CAAO,WAAA,CAAY,MAAA,GAAW,CAAA,CACpCb,GAAkBa,CAAAA,CAAO,cAAA,CAAgBA,CAAAA,CAAO,iBAAiB,EACjE,IAAA,CAQN,IAAA,GAAW,CAAE,GAAA,CAAAnoB,EAAK,IAAA,CAAAoO,CAAK,IAAKC,EAAAA,CAAcuU,CAA+B,EAAG,CAC1E,IAAM7hB,CAAAA,CAAShB,CAAAA,CAAcC,CAAG,CAAA,CAC5ByrB,CAAAA,CAASzrB,CAAG,CAAA,CACZ,CAAE,KAAA,CAAOioB,EAAAA,CAAcjF,CAAM,CAAA,CAAG,MAAOhjB,CAAI,CAAA,CAC/C,GAAI,CAACe,CAAAA,EAAUA,EAAO,KAAA,CAAM,IAAA,CAAM,SAClC,IAAMonB,EAASP,EAAAA,CAAY5E,CAAAA,CAAQjiB,EAAO,KAAA,CAAOA,CAAAA,CAAO,KAAK,CAAA,CAC7D,GAAI,CAAConB,CAAAA,CAAQ,CACXqD,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAMxrB,CAAAA,CACN,KAAM,aAAA,CACN,OAAA,CACEoO,CAAAA,GAAS,OAAA,CACL,mEACA,oEACR,CAAC,CAAA,CACD,QACF,CAGA,GAAI8S,EAAAA,CAAgBiH,CAAAA,CAAO,KAAK,EAAG,CACjCqD,CAAAA,CAAO,KAAK,CACV,IAAA,CAAMxrB,EACN,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,4CACX,CAAC,CAAA,CACD,QACF,CACA,IAAMsE,EAAO6lB,EAAAA,CAAUhC,CAAAA,CAAO,KAAK,CAAA,CACnC,GAAI/Z,CAAAA,GAAS,OAAA,EAAWA,IAAS,OAAA,EAAW9J,CAAAA,GAAS,OAAW,SAAA,CACnD8J,CAAAA,GAAS,OAAA,CAAU5H,EAAAA,CAAc,SAASlC,CAAI,CAAA,CAAI3B,EAAAA,CAAc,QAAA,CAAS2B,CAAI,CAAA,GAExFknB,CAAAA,CAAO,IAAA,CAAK,CACV,KAAMxrB,CAAAA,CACN,IAAA,CAAM,cACN,OAAA,CAAS,CAAA,EAAGoO,IAAS,OAAA,CAAU,sCAAA,CAAyC,uCAAuC,CAAA,MAAA,EAAS9J,CAAI,CAAA,CAC9H,CAAC,EACL,CAEA,GAAI,CAAConB,CAAAA,CAAS,OAAO,MAAA,CAIrB,GAAI,eAAA,GAAmB9I,CAAAA,EAAQ,OAAOA,CAAAA,CAAK,KAAA,EAAU,UAAY+I,CAAAA,CAAe,CAC9E,IAAMK,CAAAA,CAASX,GAAkBzI,CAAAA,CAAK,KAAA,CAAOA,CAAAA,CAAK,aAAA,CAAe+I,CAAa,CAAA,CAC9E,GAAIK,CAAAA,CACF,OAAAR,EAAO,IAAA,CAAKQ,CAAM,EACX,KAEX,CAIA,GACEL,CAAAA,EACAzK,EAAAA,CAAgByK,CAAa,CAAA,GAC5BrnB,IAAS,OAAA,EAAWA,CAAAA,GAAS,MAAA,CAAA,GAC7BqnB,CAAAA,CAAc,QAAU,CAAChV,EAAAA,CAAgBiM,CAAY,CAAA,CAAA,CACtD,CACA,IAAMre,CAAAA,CAASqe,EAAc,KAAA,CAC7B,OAAA4I,EAAO,IAAA,CAAK,CACV,IAAA,CAAMjnB,CAAAA,CACN,KAAM,wBAAA,CACN,OAAA,CAAA,CAAUonB,CAAAA,CAAc,MAAA,CAAS1jB,GAAkB1D,CAAK,CAAA,CAAIyD,EAAAA,CAAiBzD,CAAK,GAC/E,OACL,CAAC,EACM,KACT,CAeA,GAVI,CAAConB,CAAAA,EAAe,MAAA,GAAWrnB,CAAAA,GAAS,SAAWA,CAAAA,GAAS,MAAA,CAAA,EAC1DknB,EAAO,IAAA,CACL,GAAGT,GACDnI,CAAAA,CACA+I,CAAAA,CAAgBxB,EAAAA,CAAUwB,CAAa,EAAI,MAC7C,CACF,EAIE,CAACjK,CAAAA,CAAK,KACR,IAAA,IAAW1hB,CAAAA,IAAOwO,EAAAA,CAAYoU,CAA+B,EACvD5iB,CAAAA,GAAQ,EAAA,EAAM,CAAC4nB,EAAAA,CAAY5E,EAAQtB,CAAAA,CAAM1hB,CAAG,CAAA,EAC9CwrB,CAAAA,CAAO,KAAK,CACV,IAAA,CAAMxrB,EACN,IAAA,CAAM,aAAA,CACN,QAAS,0EACX,CAAC,CAAA,CAMP,GAAI+rB,GAAyB,UAAA,GAAcnJ,CAAAA,EAAQgJ,CAAAA,CAAmB,CACpE,IAAMK,CAAAA,CAAWtB,EAAAA,CAAa/H,CAA2C,CAAA,CACzE,GAAIqJ,CAAAA,CAAU,CACZ,IAAMC,CAAAA,CAAU,IAAI,IAAIH,CAAqB,CAAA,CACvChf,CAAAA,CAAQ8e,CAAAA,CACV,SAASC,CAAgB,CAAA,CAAA,CAAA,CACzB,CAAA,OAAA,EAAUF,CAAiB,IAC/B,IAAA,IAAWlqB,CAAAA,IAAKuqB,CAAAA,CACV,OAAOvqB,GAAM,QAAA,EAAY,CAACwqB,EAAQ,GAAA,CAAIxqB,CAAC,GACzC8pB,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAMI,EACN,IAAA,CAAM,mBAAA,CACN,OAAA,CAAS,CAAA,OAAA,EAAUlqB,CAAC,CAAA,gCAAA,EAAmCqL,CAAK,CAAA,WAAA,EAAc,CAAC,GAAGmf,CAAO,CAAA,CAAE,KAAK,IAAI,CAAC,GACnG,CAAC,EAGP,CACF,CAEA,OAAO,CAAC,GAAG7rB,CAAAA,CAAQqhB,CAAI,CACzB,CAAA,CACA,CAAC7kC,CAAI,CACP,EAQWsvC,EAAAA,CAAwB,CACnCvJ,EACAI,CAAAA,CACAxC,CAAAA,CACAC,EACAuF,CAAAA,GACsB,CACtB,IAAMwF,CAAAA,CAA4B,EAAC,CACnC,OAAAD,EAAAA,CAAM3I,CAAAA,CAAMI,EAAQ,CAAE,OAAA,CAAAxC,CAAAA,CAAS,SAAA,CAAAC,EAAW,OAAA,CAAAuF,CAAAA,CAAS,KAAM,KAAM,CAAA,CAAGwF,CAAM,CAAA,CACjEA,CACT,CAAA,CAIaY,EAAAA,CAAqB,CAChCjkB,CAAAA,CACA4b,CAAAA,GACqB,CACrB,IAAMf,EAASgB,CAAAA,CAAcD,CAAe,CAAA,CAC5C,OAAO7F,GACLiO,EAAAA,CAAsBhkB,CAAAA,CAAM6a,EAAQA,CAAAA,CAAO,IAAA,CAAK,QAASA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAO,EAAE,CAChF,CACF,ECtNA,IAAMuI,EAAAA,CAAQ,CAACpjB,CAAAA,CAAiBkkB,CAAAA,GAC9Bxf,CAAAA,CACE1E,CAAAA,CACA,CAACnE,CAAAA,CAAM3D,CAAAA,GAAW,CAGhB,GAFAgsB,CAAAA,CAAI,QAAQ,GAAA,CAAIhsB,CAAAA,CAAOA,CAAAA,CAAO,MAAA,CAAS,CAAC,CAAA,CAAE,OAAO,CAAA,CAC7CuM,EAAAA,CAAc5I,CAAI,CAAA,EAClB,OAAOA,CAAAA,CAAK,KAAA,EAAU,UAAYA,CAAAA,CAAK,KAAA,GAAU,GAAI,OACzD,IAAMtD,EAAOwnB,EAAAA,CAAcmE,CAAAA,CAAI,MAAA,CAAQhsB,CAAAA,CAAQ2D,EAAK,KAAK,CAAA,CACzD,OAAI,OAAA,GAAWtD,EAAa,KAAA,EACxBA,CAAAA,CAAK,MAAA,GACP2rB,CAAAA,CAAI,QAAQ,GAAA,CAAI3rB,CAAAA,CAAK,OAAO,OAAO,CAAA,CAAA,CAC/BA,EAAK,MAAA,CAAO,KAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,EAAK,MAAA,CAAO,OAAA,GAAYA,CAAAA,CAAK,IAAA,CAAK,WAC3E2rB,CAAAA,CAAI,cAAA,CAAiB,IAAA,CAAA,CAAA,CAGlB,CAAC,GAAGhsB,CAAAA,CAAQK,CAAAA,CAAK,IAAI,CAAA,CAC9B,CAAA,CACA,CAACunB,EAAAA,CAAcoE,CAAAA,CAAI,MAAM,CAAC,CAC5B,CAAA,CAEWC,EAAAA,CAAe,CAC1BnkB,CAAAA,CACA4b,IACoB,CAEpB,IAAMsI,CAAAA,CAAW,CAAE,OADJrI,CAAAA,CAAcD,CAAe,EACjB,OAAA,CAAS,IAAI,IAAO,cAAA,CAAgB,KAAM,CAAA,CACrE,OAAAwH,GAAMpjB,CAAAA,CAAMkkB,CAAG,CAAA,CAER,CACL,QAAS,CAAC,GAAGA,CAAAA,CAAI,OAAO,EAAE,IAAA,EAAK,CAC/B,eAAgBA,CAAAA,CAAI,cAAA,CACpB,iBAAkBjpB,CAAAA,CAAY,MAAA,CAC3BrC,CAAAA,EAAAA,CAAYA,CAAAA,GAAW,SAAW,CAACsrB,CAAAA,CAAI,cAAA,GAAmBhO,EAAAA,CAAalW,EAAM,CAAE,MAAA,CAAApH,CAAO,CAAC,EAAE,EAC5F,CAAA,CACA,OAAQqrB,EAAAA,CAAmBjkB,CAAAA,CAAM4b,CAAe,CAAA,CAAE,MACpD,CACF,MCnBMwI,EAAAA,CAAoB,IAAI,GAAA,CAAY,CACxChpB,GAAW,MAAA,CACXA,EAAAA,CAAW,OAAA,CACXA,EAAAA,CAAW,MACXA,EAAAA,CAAW,OAAA,CACXA,GAAW,SACb,CAAC,EAGKipB,EAAAA,CAAmB,IAAI,GAAA,CAAY,CAACjpB,GAAW,IAAA,CAAMA,EAAAA,CAAW,KAAK,CAAC,CAAA,CAItEkpB,GAAgBzoB,CAAAA,EAAsC,CAG1D,GACEA,CAAAA,CAAK,SAAW,MAAA,EAChBmK,EAAAA,CAAYnK,CAAI,CAAA,CAAE,IAAA,CAAK,CAAC,CAAE,MAAA,CAAA/hB,CAAO,CAAA,GAAMA,EAAO,KAAA,GAAU,MAAS,CAAA,CAEjE,OAAO,CAAE,MAAA,CAAQ,EAAC,CAAG,OAAA,CAAS,IAAK,CAAA,CACrC,IAAM8J,EAAQgY,EAAAA,CAAiBC,CAAI,EACnC,OAAKjY,CAAAA,CACDygC,EAAAA,CAAiB,GAAA,CAAIzgC,EAAM,UAAU,CAAA,CAAU,CAAE,MAAA,CAAQ,EAAC,CAAG,OAAA,CAAS,KAAM,CAAA,CAC3EwgC,GAAkB,GAAA,CAAIxgC,CAAAA,CAAM,UAAU,CAAA,CACrC,OAAA,GAAWiY,EACV,CAAE,MAAA,CAAS2mB,EAAAA,CAAa3mB,CAAI,GAAK,EAAC,CAAmB,OAAA,CAAS,KAAM,EAD5C,CAAE,MAAA,CAAQ,EAAC,CAAG,QAAS,KAAM,CAAA,CADP,CAAE,MAAA,CAAQ,GAAI,OAAA,CAAS,IAAK,CAAA,CAF9D,CAAE,OAAQ,EAAC,CAAG,OAAA,CAAS,IAAK,CAKjD,CAAA,CAEM0oB,EAAAA,CAAapvC,CAAAA,EACbA,CAAAA,YAAiB,KAAa,CAAA,EAAA,EAAK,CAACA,CAAK,CAAA,CAAA,CACzCA,CAAAA,YAAiB,OAAe,CAAA,EAAA,EAAKA,CAAK,CAAA,CAAA,CAC1C,OAAOA,GAAU,QAAA,EAAYA,CAAAA,GAAU,IAAA,CAAa,CAAA,EAAA,EAAK,KAAK,SAAA,CAAUA,CAAK,CAAC,CAAA,CAAA,CAC3E,KAAK,OAAOA,CAAK,IAAI,MAAA,CAAOA,CAAK,CAAC,CAAA,CAAA,CAiB9BqvC,EAAAA,CAAsB,CACjCxkB,CAAAA,CACA4b,IAC4B,CAC5B,IAAMf,CAAAA,CAASgB,CAAAA,CAAcD,CAAe,CAAA,CACtClnC,CAAAA,CAAOmmC,CAAAA,CAAO,IAAA,CAAK,MACnB9U,CAAAA,CAAM,IAAI,IAEV0e,CAAAA,CAAW,IAAI,IAEf1Q,CAAAA,CAAS,CAAC1b,CAAAA,CAAoBwD,CAAAA,GAA8B,CAChE,GAAIxD,CAAAA,CAAS,MAAA,GAAW,CAAA,CAAG,OAC3B,IAAM8B,CAAAA,CAAWslB,EAAAA,CACf5E,CAAAA,CACA,CAAE,OAAA,CAASA,CAAAA,CAAO,KAAK,OAAA,CAAS,SAAA,CAAWnmC,EAAM,OAAA,CAAS,EAAG,CAAA,CAC7D2jB,EAAS,IAAA,CAAK,GAAG,CACnB,CAAA,CACA,GAAI,CAAC8B,CAAAA,EAAYA,CAAAA,CAAS,WAAA,CAAY,MAAA,CAAS,EAAG,OAClD,GAAM,CAAE,OAAA,CAAAke,CAAAA,CAAS,UAAAC,CAAAA,CAAW,OAAA,CAAAuF,CAAAA,CAAS,cAAA,CAAA6G,EAAgB,iBAAA,CAAAjB,CAAkB,CAAA,CAAItpB,CAAAA,CAC3E,GAAI,CAACuqB,CAAAA,CAAe,OAAA,CAAQ,GAAA,CAAIjB,CAAiB,CAAA,CAAG,OAEpD,IAAM97B,CAAAA,CAAO,CAACjT,EAAM,GAAGmpC,CAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAClC9kC,CAAAA,CAAM,CAAA,EAAG4O,CAAI,IAAI87B,CAAiB,CAAA,CAAA,CACpC7/B,CAAAA,CAAQmiB,CAAAA,CAAI,IAAIhtB,CAAG,CAAA,CAClB6K,IACHA,CAAAA,CAAQ,CACN,KAAA+D,CAAAA,CACA,OAAA,CAAA0wB,CAAAA,CACA,KAAA,CAAOC,EACP,KAAA,CAAOmL,CAAAA,CACP,MAAA,CAAQ,GACR,OAAA,CAAS,KACX,CAAA,CACA1d,CAAAA,CAAI,IAAIhtB,CAAAA,CAAK6K,CAAK,GAEpB,IAAMqhB,CAAAA,CAAQqf,GAAazoB,CAAI,CAAA,CAC3BoJ,CAAAA,CAAM,OAAA,GAASrhB,EAAM,OAAA,CAAU,IAAA,CAAA,CACnC,IAAMiN,CAAAA,CAAO4zB,EAAS,GAAA,CAAI1rC,CAAG,CAAA,EAAK,IAAI,IACtC0rC,CAAAA,CAAS,GAAA,CAAI1rC,EAAK8X,CAAI,CAAA,CACtB,QAAW+b,CAAAA,IAAW3H,CAAAA,CAAM,MAAA,CAAQ,CAClC,IAAM0f,CAAAA,CAAaJ,EAAAA,CAAU3X,CAAO,CAAA,CAChC/b,EAAK,GAAA,CAAI8zB,CAAU,CAAA,GACvB9zB,CAAAA,CAAK,IAAI8zB,CAAU,CAAA,CACnB/gC,EAAM,MAAA,CAAO,IAAA,CAAKgpB,CAAO,CAAA,EAC3B,CACF,CAAA,CAIMyO,CAAAA,CAAW,CAACjf,CAAAA,CAAewoB,CAAAA,GAAwD,CACvF,IAAMhsB,EAASX,EAAAA,CAAamE,CAAAA,CAAOwoB,CAAQ,CAAA,CAC3C,GAAI,EAAA,aAAA,GAAiBhsB,CAAAA,CAAAA,CACrB,OAAO,CAAC,GAAGA,EAAO,KAAA,CAAO,GAAGA,CAAAA,CAAO,IAAA,CAAK,MAAM,GAAG,CAAC,CACpD,CAAA,CACA,OAAA8L,CAAAA,CACE1E,CAAAA,CACA,CAACnE,CAAAA,CAAM+oB,IAAa,CAClB,GAAIngB,GAAc5I,CAAI,CAAA,CAAG,OACzB,IAAM0f,CAAAA,CACJ,OAAO1f,CAAAA,CAAK,OAAU,QAAA,CAAWwf,CAAAA,CAASxf,EAAK,KAAA,CAAO+oB,CAAQ,EAAIA,CAAAA,CAAS,EAAA,CAAG,EAAE,CAAA,CAClF,OAAKrJ,CAAAA,EACD,CAACjX,GAAezI,CAAI,CAAA,EAAK,OAAOA,CAAAA,CAAK,KAAA,EAAU,QAAA,EAAUkY,CAAAA,CAAOwH,EAAQ1f,CAAI,CAAA,CACzE,CAAC,GAAG+oB,EAAUrJ,CAAM,CAAA,EAFP,KAGtB,CAAA,CACA,CAAC,EAAE,CACL,CAAA,CACO,CAAC,GAAGxV,CAAAA,CAAI,MAAA,EAAQ,CACzB,EC1JA,IAAM8e,EAAAA,CAAsB,CAC1Bv/B,CAAAA,CACAw/B,EACAC,CAAAA,CACAC,CAAAA,GACyB,CACzB,IAAMC,EAAc/Q,CAAAA,CAAQ5uB,CAAAA,CAAKw/B,CAAW,CAAA,CAC5C,GAAI,CAACG,CAAAA,CAAa,OAAO,IAAA,CAEzB,IAAA,IAAWC,KAAY,MAAA,CAAO,MAAA,CAAOD,CAAAA,CAAY,MAAM,EACrD,GACEC,CAAAA,CAAS,IAAA,GAAS,QAAA,EAClBA,EAAS,IAAA,GAASH,CAAAA,EAAAA,CACjBG,EAAS,UAAA,EAAY,MAAA,EAAU,GAAK,CAAA,EAAA,CACpCA,CAAAA,CAAS,QAAA,EAAU,MAAA,EAAU,GAAK,CAAA,GAClCF,CAAAA,GAAiB,MAAA,EAAaE,CAAAA,CAAS,eAAiBF,CAAAA,CAAAA,CAEzD,OAAOE,CAAAA,CAGX,OAAO,IACT,CAAA,CAOaC,EAAAA,CAAe,CAC1B7/B,CAAAA,CACA6uB,CAAAA,CACAvwB,IAC6C,CAC7C,GAAIA,CAAAA,CAAM,UAAA,EAAY,OACpB,OAAOA,CAAAA,CAAM,UAAA,CAAW,GAAA,CAAI,CAACy1B,CAAAA,CAAM,CAAA,IAAO,CAAE,IAAA,CAAMA,EAAM,KAAA,CAAOz1B,CAAAA,CAAM,WAAW,CAAC,CAAA,EAAK,IAAK,CAAA,CAAE,CAAA,CAC/F,IAAMwhC,CAAAA,CAAUP,GAAoBv/B,CAAAA,CAAK1B,CAAAA,CAAM,IAAA,CAAMuwB,CAAAA,CAAOvwB,EAAM,YAAY,CAAA,CAC9E,OAAKwhC,CAAAA,EAAS,YAAY,MAAA,CACnBA,CAAAA,CAAQ,WAAW,GAAA,CAAI,CAAC/L,EAAM,CAAA,IAAO,CAC1C,IAAA,CAAM+L,CAAAA,CAAQ,WAAW,CAAC,CAAA,EAAK,IAAA,CAC/B,KAAA,CAAO/L,CACT,CAAA,CAAE,CAAA,CAJuC,IAK3C,CAAA,CAKagM,GAAkB,CAC7B//B,CAAAA,CACA6uB,EACA/X,CAAAA,CACAxY,CAAAA,GACmD,CAGnD,GAAIA,CAAAA,CAAM,YAAA,GAAiB,MAAA,CAAW,OAAO,IAAA,CAC7C,IAAM0hC,EAAa,MAAA,CAAO,OAAA,CAAQpR,EAAQ5uB,CAAAA,CAAK1B,CAAAA,CAAM,IAAI,CAAA,EAAG,QAAU,EAAE,EAAE,MAAA,CACxE,CAAC,CAACoX,CAAAA,CAAMrf,CAAK,CAAA,GACXA,CAAAA,CAAM,OAAS,QAAA,EACfA,CAAAA,CAAM,IAAA,GAASw4B,CAAAA,EACfx4B,EAAM,YAAA,GAAiBiI,CAAAA,CAAM,YAAA,EAC7B,EAAEA,EAAM,IAAA,GAASuwB,CAAAA,EAASnZ,IAASoB,CAAAA,CACvC,CAAA,CACA,OAAOkpB,CAAAA,CAAW,MAAA,GAAW,CAAA,CAAI,CAAE,MAAOA,CAAAA,CAAW,CAAC,CAAA,CAAE,CAAC,EAAG,KAAA,CAAOA,CAAAA,CAAW,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAI,IAC1F,CAAA,CCdO,IAAMC,GAAgB,CAC3B1K,CAAAA,CACAC,CAAAA,CACAtiB,CAAAA,CACA2b,EACAqR,CAAAA,GACkC,CAClC,IAAMC,CAAAA,CAAwC,EAAC,CAC/C,IAAA,GAAW,CAAClN,CAAAA,CAAW30B,CAAK,CAAA,GAAK,MAAA,CAAO,QAAQuwB,CAAAA,CAAM,MAAM,EAAG,CAC7D,GAAI,CAAC+K,EAAAA,CAAepE,EAAQvC,CAAS,CAAA,CAAG,SACxC,IAAMtwB,EAAS6yB,CAAAA,CAAO,iBAAA,CAAkB,GAAA,CAAIvC,CAAS,EAE/CjG,CAAAA,CAAUkT,CAAAA,CAAQjN,CAAS,CAAA,EAAG,MAAA,CACjCjS,GAAMre,CAAAA,GAAW,MAAA,EAAaA,CAAAA,CAAO,QAAA,CAASqe,EAAE,KAAK,CACxD,CAAA,CAEMof,CAAAA,CAAUpG,GAAmBzE,CAAAA,CAAQC,CAAAA,CAAQtiB,CAAAA,CAAI+f,CAAAA,CAAW,SAAS,CAAA,CACvEuC,CAAAA,CAAO,eAAe,GAAA,CAAIvC,CAAS,EACnC,MAAA,CACJkN,CAAAA,CAAOlN,CAAS,CAAA,CAAI,CAClB,GAAG30B,CAAAA,CACH,GAAIqE,CAAAA,GAAW,QAAa,CAAE,MAAA,CAAAA,CAAO,CAAA,CACrC,GAAIqqB,CAAAA,GAAY,MAAA,EAAa,CAAE,OAAA,CAAAA,CAAQ,EACvC,GAAIoT,CAAAA,GAAY,MAAA,EAAa,CAAE,QAAAA,CAAQ,CACzC,EACF,CACA,OAAOD,CACT,CAAA,CAEaE,EAAAA,CAAe,CAC1B/J,EACAzW,CAAAA,CAA2B,KACR,CACnB,IAAM0V,EAASgB,CAAAA,CAAcD,CAAe,CAAA,CACtC7V,CAAAA,CAAsB,EAAC,CAEvB6f,CAAAA,CAAqB,IAAI,GAAA,CAC/B,IAAA,IAAWC,KAAM1gB,CAAAA,CAAK,YAAA,EAAgB,EAAC,CACrCygB,EAAmB,GAAA,CAAI,CAAA,EAAGC,EAAG,IAAI,CAAA,CAAA,EAAIA,EAAG,KAAK,CAAA,CAAA,CAAIA,CAAAA,CAAG,OAAO,EAG7D,IAAMzC,CAAAA,CAAQ,CACZ/K,CAAAA,CACAC,EACAuF,CAAAA,CACAiI,CAAAA,GACS,CACT,GAAI,OAAO,MAAA,CAAO/f,CAAAA,CAAK+f,CAAU,CAAA,CAAG,OACpC,IAAM3R,CAAAA,CAAQL,CAAAA,CAAIA,CAAAA,CAAI+G,CAAAA,CAAO,KAAK,IAAA,CAAMxC,CAAO,CAAA,EAAG,MAAA,EAAU,EAAC,CAAGC,CAAS,CAAA,CACzE,GAAI,CAACnE,CAAAA,CAAO,OAEZ,IAAM2G,CAAAA,CAASC,EAAAA,CAAaF,EAAQxC,CAAAA,CAASC,CAAAA,CAAWuF,CAAO,CAAA,CAIzDrlB,EAAK,CAAE,OAAA,CAAA6f,CAAAA,CAAS,SAAA,CAAAC,EAAW,OAAA,CAAAuF,CAAQ,CAAA,CACnC4H,CAAAA,CAASF,GAAc1K,CAAAA,CAAQC,CAAAA,CAAQtiB,EAAI2b,CAAAA,CAAQ/X,CAAAA,EAAU,CACjE,IAAMopB,CAAAA,CAAUI,CAAAA,CAAmB,GAAA,CAAI,GAAGE,CAAU,CAAA,CAAA,EAAI1pB,CAAK,CAAA,CAAE,EACzDnU,CAAAA,CAAS6yB,CAAAA,CAAO,iBAAA,CAAkB,GAAA,CAAI1e,CAAK,CAAA,CACjD,OAAOopB,GAAWv9B,CAAAA,EAAQ,GAAA,CAAK9S,IAAW,CAAE,KAAA,CAAAA,CAAAA,CAAO,KAAA,CAAOA,CAAM,CAAA,CAAE,CACpE,CAAC,CAAA,CAEKmI,EAAuC,EAAC,CAC9C,IAAA,GAAW,CAACi7B,EAAWoF,CAAO,CAAA,GAAK7C,EAAO,OAAA,CACpCoE,EAAAA,CAAepE,EAAQvC,CAAS,CAAA,GAAGj7B,CAAAA,CAAQi7B,CAAS,EAAIoF,CAAAA,CAAAA,CAG9D,IAAMoI,CAAAA,CAAuC,GAC7C,IAAA,GAAW,CAACxN,CAAAA,CAAWrO,CAAK,IAAK4Q,CAAAA,CAAO,YAAA,CAEpCoE,GAAepE,CAAAA,CAAQvC,CAAS,GAChC+G,EAAAA,CAAmBzE,CAAAA,CAAQC,CAAAA,CAAQtiB,CAAAA,CAAI+f,EAAW,OAAO,CAAA,GAEzDwN,CAAAA,CAAaxN,CAAS,EAAIrO,CAAAA,CAAAA,CAG9B,IAAM8b,CAAAA,CAA2C,GACjD,IAAA,GAAW,CAACzN,EAAWmN,CAAO,CAAA,GAAK5K,EAAO,cAAA,CAEtCoE,EAAAA,CAAepE,CAAAA,CAAQvC,CAAS,GAChC+G,EAAAA,CAAmBzE,CAAAA,CAAQC,EAAQtiB,CAAAA,CAAI+f,CAAAA,CAAW,SAAS,CAAA,GAE3DyN,CAAAA,CAAezN,CAAS,CAAA,CAAImN,GAGhC3f,CAAAA,CAAI+f,CAAU,EAAI,CAChB,OAAA,CAAAzN,EACA,KAAA,CAAOC,CAAAA,CACP,MAAA,CAAAmN,CAAAA,CACA,aAAc3K,CAAAA,CAAO,YAAA,CACrB,OAAA,CAAAx9B,CAAAA,CACA,aAAAyoC,CAAAA,CACA,cAAA,CAAAC,CACF,CAAA,CAEA,QAAWC,CAAAA,IAAYnL,CAAAA,CAAO,UAAU,IAAA,EAAK,CAAG,CAE9C,GAAI,CAACoE,EAAAA,CAAepE,CAAAA,CAAQmL,CAAQ,CAAA,CAAG,SACvC,IAAMriC,CAAAA,CAAQkwB,EAAIK,CAAAA,CAAM,MAAA,CAAQ8R,CAAQ,CAAA,CACxC,GAAI,CAACriC,CAAAA,CAAO,SACZ,IAAMgV,CAAAA,CAASsgB,GAAiBt1B,CAAAA,CAAOy0B,CAAO,CAAA,CACzCzf,CAAAA,EACLwqB,EAAMxqB,CAAAA,CAAO,OAAA,CAASA,CAAAA,CAAO,SAAA,CAAW,CAAC,GAAGilB,CAAAA,CAASoI,CAAQ,CAAA,CAAG,GAAGH,CAAU,CAAA,CAAA,EAAIG,CAAQ,CAAA,CAAE,EAC7F,CACF,CAAA,CAEA,OAAA7C,CAAAA,CAAMvI,CAAAA,CAAO,KAAK,OAAA,CAASA,CAAAA,CAAO,IAAA,CAAK,KAAA,CAAO,EAAC,CAAGA,CAAAA,CAAO,IAAA,CAAK,KAAK,EAC5D9U,CACT,CAAA,CCtIA,IAAMmgB,EAAAA,CAAiB,CACrBrL,EACAxC,CAAAA,CACAC,CAAAA,CACA6N,CAAAA,CACAC,CAAAA,CACAC,EACAx1B,CAAAA,CACAkV,CAAAA,GACS,CACT,IAAM1N,EAAW+tB,CAAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAE3B,CAAE,IAAA,CAAA1M,CAAK,EAAIyB,EAAAA,CACfN,CAAAA,CAAO,KAAK,IAAA,CACZ,CAAE,OAAA,CAAAxC,CAAAA,CAAS,UAAAC,CAAAA,CAAW,OAAA,CAAS6N,CAAY,CAAA,CAC3CC,CACF,CAAA,CACME,CAAAA,CAAU5M,CAAAA,CAAK,MAAA,CAAO,CAAC8F,CAAAA,CAAGxS,CAAAA,GAAMA,EAAI3U,CAAAA,CAAS,MAAA,CAAS,CAAC,CAAA,CAC7D,GAAIguB,CAAAA,EAAUC,CAAAA,CAAQ,OAASjuB,CAAAA,CAAS,MAAA,CAAS,CAAA,CAAG,CAClD,IAAMsI,CAAAA,CAAMtI,CAAAA,CAASiuB,CAAAA,CAAQ,MAAM,EAC7B3R,CAAAA,CAAK2R,CAAAA,CAAQ,GAAG,EAAE,CAAA,EAAG,OAAShO,CAAAA,CACpC,MAAM,IAAI,KAAA,CACR,GAAG+N,CAAM,CAAA,EAAA,EAAKD,CAAM,CAAA,QAAA,EAAWzlB,CAAG,sCAAsCgU,CAAE,CAAA,8BAAA,CAC5E,CACF,CACA,QAAWhU,CAAAA,IAAO2lB,CAAAA,CAAS,CACzB,IAAMC,CAAAA,CAAS5lB,EAAI,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,CACnC,GAAI9P,CAAAA,CAAK,GAAA,CAAI01B,CAAM,CAAA,CAAG,SACtB11B,CAAAA,CAAK,GAAA,CAAI01B,CAAM,CAAA,CACf,IAAMzL,CAAAA,CAASC,EAAAA,CAAaF,EAAQla,CAAAA,CAAI,GAAA,CAAKA,EAAI,KAAA,CAAOA,CAAAA,CAAI,OAAO,CAAA,CAEnE,GAAIA,CAAAA,CAAI,MAAA,EAAUma,CAAAA,CAAO,YAAA,CAAa,OACpC,MAAM,IAAI,KAAA,CACR,CAAA,aAAA,EAAgBsL,CAAM,CAAA,iDAAA,EAAoDzlB,CAAAA,CAAI,MAAM,CAAA,kBAAA,CACtF,CAAA,CACF,QAAWqa,CAAAA,IAASF,CAAAA,CAAO,YAAA,CAAc/U,CAAAA,CAAI,KAAKyU,EAAAA,CAAsBQ,CAAAA,CAAOra,CAAAA,CAAI,MAAM,CAAC,EAC5F,CACF,CAAA,CAKM6lB,EAAAA,CAAqBttB,GAAmC,CAC5D,IAAM6M,EAAgB,EAAC,CACvB,OAAArB,CAAAA,CAAexL,CAAAA,CAAY2C,CAAAA,GACrB,OAAOA,EAAK,KAAA,EAAU,QAAA,EAAUkK,CAAAA,CAAI,IAAA,CAAKlK,EAAK,KAAK,CAAA,CAChD,KAAA,CACR,CAAA,CACMkK,CACT,CAAA,CASM0gB,EAAAA,CAAkB,CACtB5L,CAAAA,CACAxC,CAAAA,CACAC,EACA6N,CAAAA,CACAvI,CAAAA,CACA8I,CAAAA,CACAxc,CAAAA,GACgB,CAChB,IAAMnE,CAAAA,CAAmB,EAAC,CACpBlV,EAAO,IAAI,GAAA,CACjB,IAAA,IAAW81B,CAAAA,IAAQ/I,EACjBsI,EAAAA,CAAerL,CAAAA,CAAQxC,EAASC,CAAAA,CAAW6N,CAAAA,CAAaQ,EAAM,SAAA,CAAW91B,CAAAA,CAAMkV,CAAG,CAAA,CAChFmE,GAAO,QAAA,CAAS,GAAG,CAAA,EACrBgc,EAAAA,CAAerL,EAAQxC,CAAAA,CAASC,CAAAA,CAAW6N,CAAAA,CAAajc,CAAAA,CAAO,QAASrZ,CAAAA,CAAMkV,CAAG,EACnF,IAAA,IAAW6gB,CAAAA,IAAUF,EACnB,IAAA,IAAW/+B,CAAAA,IAAQ6+B,EAAAA,CAAkBI,CAAM,EACrCj/B,CAAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EACnBu+B,GAAerL,CAAAA,CAAQxC,CAAAA,CAASC,CAAAA,CAAW6N,CAAAA,CAAax+B,EAAM,IAAA,CAAMkJ,CAAAA,CAAMkV,CAAG,CAAA,CAGnF,OAAOA,CACT,CAAA,CAIa8gB,EAAAA,CAAc,CAAC/R,CAAAA,CAAUntB,IAAqC,CACzE,IAAMxS,CAAAA,CAAQujB,CAAAA,CAAYoc,EAAKntB,CAAI,CAAA,CACnC,OAAOxS,CAAAA,EAAS,MAAQ,OAAOA,CAAAA,EAAU,SAAW,MAAA,CAAY,MAAA,CAAOA,CAAK,CAC9E,CAAA,CAIa2xC,EAAAA,CAAgB,CAAChS,EAAUiS,CAAAA,GAAmD,CACzF,IAAMhhB,CAAAA,CAAgB,EAAC,CACvB,IAAA,IAAWpe,CAAAA,IAAQo/B,CAAAA,CAAO,CACxB,IAAM5xC,CAAAA,CAAQ0xC,GAAY/R,CAAAA,CAAKntB,CAAI,EACnC,GAAIxS,CAAAA,GAAU,MAAA,CAAW,OACzB4wB,EAAI,IAAA,CAAK5wB,CAAK,EAChB,CACA,OAAO4wB,CACT,CAAA,CAGaihB,EAAAA,CAAY,CAACC,EAAuC9xC,CAAAA,GAC/D,IAAA,CAAK,UAAU,CAAC8xC,CAAAA,EAAU,KAAM9xC,CAAK,CAAC,CAAA,CAGlC+xC,EAAAA,CAAmB,CACvBC,CAAAA,CACAhyC,CAAAA,CACA+0B,CAAAA,CACA+c,CAAAA,GACS,CACT,IAAMluC,CAAAA,CAAMiuC,EAAAA,CAAUC,CAAAA,CAAQ9xC,CAAK,CAAA,CAC7BiyC,CAAAA,CAAWD,EAAM,GAAA,CAAIpuC,CAAG,EAC1BquC,CAAAA,GAAa,MAAA,CACfD,CAAAA,CAAM,GAAA,CAAIpuC,EAAK,CACb,KAAA,CAAA5D,CAAAA,CACA,GAAI+0B,IAAU,MAAA,CAAY,CAAE,KAAA,CAAAA,CAAM,EAAI,EAAC,CACvC,GAAI+c,CAAAA,GAAW,MAAA,CAAY,CAAE,MAAA,CAAAA,CAAO,CAAA,CAAI,EAC1C,CAAC,CAAA,CACQG,CAAAA,CAAS,KAAA,GAAU,QAAald,CAAAA,GAAU,MAAA,EACnDid,CAAAA,CAAM,GAAA,CAAIpuC,EAAK,CAAE,GAAGquC,EAAU,KAAA,CAAAld,CAAM,CAAC,EAEzC,CAAA,CAIamd,EAAAA,CAAgB,CAC3BF,EACArS,CAAAA,CACA1Y,CAAAA,CACA8N,CAAAA,CACA+c,CAAAA,GACS,CACT,IAAMzf,CAAAA,CAAM9O,CAAAA,CAAYoc,CAAAA,CAAK1Y,CAAK,CAAA,CAC5BkrB,CAAAA,CAAWpd,GAAS,IAAA,CAAO,MAAA,CAAY,OAAOA,CAAK,CAAA,CACzD,IAAA,IAAW/0B,CAAAA,IAAS,MAAM,OAAA,CAAQqyB,CAAG,CAAA,CAAIA,CAAAA,CAAM,CAACA,CAAG,CAAA,CAC7CryB,CAAAA,EAAS,IAAA,EAAQ,OAAOA,CAAAA,EAAU,QAAA,EACtC+xC,GAAiBC,CAAAA,CAAO,MAAA,CAAOhyC,CAAK,CAAA,CAAGmyC,CAAAA,CAAUL,CAAM,EAE3D,EAMaM,EAAAA,CAAeJ,CAAAA,EAC1B,CAAC,GAAGA,CAAAA,CAAM,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC/nB,EAAGC,CAAAA,GAAM,CACjC,IAAMmoB,CAAAA,CAAAA,CAAQpoB,CAAAA,CAAE,SAAW,MAAA,CAAY,CAAA,CAAI,CAAA,GAAMC,CAAAA,CAAE,SAAW,MAAA,CAAY,CAAA,CAAI,CAAA,CAAA,CAC9E,GAAImoB,IAAS,CAAA,CAAG,OAAOA,CAAAA,CACvB,IAAMC,EAAKroB,CAAAA,CAAE,MAAA,EAAU,EAAC,CAClBsoB,CAAAA,CAAKroB,EAAE,MAAA,EAAU,EAAC,CACxB,IAAA,IAAS2N,EAAI,CAAA,CAAGA,CAAAA,CAAI,IAAA,CAAK,GAAA,CAAIya,EAAG,MAAA,CAAQC,CAAAA,CAAG,MAAM,CAAA,CAAG1a,IAAK,CACvD,IAAM2a,GAAOF,CAAAA,CAAGza,CAAC,GAAK,EAAA,EAAI,aAAA,CAAc0a,CAAAA,CAAG1a,CAAC,GAAK,EAAA,CAAI,IAAA,CAAM,CAAE,OAAA,CAAS,IAAK,CAAC,CAAA,CAC5E,GAAI2a,CAAAA,GAAQ,EAAG,OAAOA,CACxB,CACA,OAAA,CAAQvoB,CAAAA,CAAE,OAASA,CAAAA,CAAE,KAAA,EAAO,aAAA,CAAcC,CAAAA,CAAE,OAASA,CAAAA,CAAE,KAAA,CAAO,IAAA,CAAM,CAAE,QAAS,IAAK,CAAC,CACvF,CAAC,EAsBGuoB,EAAAA,CAAiB,CAAC/M,EAAgBgD,CAAAA,GAA4C,CAClF,GAAIA,CAAAA,CAAQ,MAAA,GAAW,CAAA,CAAG,OAAO,EAAC,CAClC,IAAMnpC,CAAAA,CAAO,CAAE,QAASmmC,CAAAA,CAAO,IAAA,CAAK,OAAA,CAAS,SAAA,CAAWA,EAAO,IAAA,CAAK,KAAA,CAAO,QAAS,EAAG,EACjF,CAAE,IAAA,CAAAnB,CAAAA,CAAM,GAAA,CAAAxZ,CAAI,CAAA,CAAIib,EAAAA,CAAaN,CAAAA,CAAO,IAAA,CAAK,KAAMnmC,CAAAA,CAAMmpC,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA,CAC5E,GAAI,CAAC3d,CAAAA,CAAK,OAAO,CAAC,KAAK,CAAA,CACvB,IAAM2nB,CAAAA,CAAS,CAACnzC,CAAAA,CAAM,GAAGglC,CAAAA,CAAK,GAAA,CAAK/Y,IAAS,CAAE,OAAA,CAASA,CAAAA,CAAI,GAAA,CAAK,UAAWA,CAAAA,CAAI,KAAM,EAAE,CAAC,CAAA,CACpFmnB,EAA4B,IAAA,CAChC,IAAA,IAASC,CAAAA,CAAQ,CAAA,CAAGA,EAAQlK,CAAAA,CAAQ,MAAA,CAAQkK,IAAS,CACnD,IAAMvvB,EAAKqvB,CAAAA,CAAOE,CAAK,CAAA,CACjB1F,CAAAA,CAAWtH,GACfF,CAAAA,CACAriB,CAAAA,CAAG,QACHA,CAAAA,CAAG,SAAA,CACHqlB,EAAQ,KAAA,CAAM,CAAA,CAAGkK,CAAK,CACxB,EAAE,YAAA,CACItM,CAAAA,CAASqM,CAAAA,GAAY,IAAA,CAAOzF,EAAW,CAAC,GAAGA,CAAAA,CAAUyF,CAAO,EAClE,GAAIrM,CAAAA,CAAO,SAAW,CAAA,CAAG,CACvBqM,EAAU,IAAA,CACV,QACF,CACA,IAAMxiC,EAAMwuB,CAAAA,CAAI+G,CAAAA,CAAO,IAAA,CAAK,IAAA,CAAMriB,EAAG,OAAO,CAAA,CACtC5U,CAAAA,CAAQ0B,CAAAA,EAAO8uB,GAAQ9uB,CAAAA,CAAKkT,CAAAA,CAAG,UAAWqlB,CAAAA,CAAQkK,CAAK,CAAC,CAAA,CACxDC,CAAAA,CACJ1iC,CAAAA,EAAO1B,CAAAA,EAASA,EAAM,IAAA,GAAS,QAAA,EAAYikC,CAAAA,CAAOE,CAAAA,CAAQ,CAAC,CAAA,CAAE,OAAA,GAAYvvB,CAAAA,CAAG,OAAA,CACxE6sB,GAAgB//B,CAAAA,CAAKkT,CAAAA,CAAG,UAAWqlB,CAAAA,CAAQkK,CAAK,EAAGnkC,CAAK,CAAA,CACxD,IAAA,CACN,GAAI,CAACokC,CAAAA,CAAS,OAAO,CAAC,KAAK,EAC3B,IAAMC,CAAAA,CAAOzhB,CAAAA,CAAMiV,CAAM,EACzB,GAAI,CACFqM,EAAUE,CAAAA,CAAQ,KAAA,CAAM,OACnB,CAAE,KAAA,CAAOA,CAAAA,CAAQ,KAAA,CAAO,cAAe,KAAA,CAAO,SAAA,CAAWC,CAAK,CAAA,CAC/DzhB,EAAM,CACJ,CAAE,KAAA,CAAOwhB,CAAAA,CAAQ,MAAO,QAAA,CAAU,QAAS,EAC3CxN,EAAAA,CAAsByN,CAAAA,CAAMD,EAAQ,KAAK,CAC3C,CAAC,EACP,MAAQ,CACN,OAAO,CAAC,KAAK,CACf,CACF,CACA,OAAOF,CAAAA,GAAY,KAAO,EAAC,CAAI,CAACA,CAAO,CACzC,EAEaI,EAAAA,CAAetM,CAAAA,EAAwD,CAClF,IAAMf,EAASgB,CAAAA,CAAcD,CAAe,CAAA,CAC5C,OAAO,OAAO,OAAA,CAAQ+J,EAAAA,CAAa/J,CAAe,CAAC,EAAE,OAAA,CAAQ,CAAC,CAACj0B,CAAAA,CAAMy7B,CAAK,IACxE,MAAA,CAAO,OAAA,CAAQA,CAAAA,CAAM,OAAO,EAAE,GAAA,CAAI,CAAC,CAAChnB,CAAAA,CAAO+rB,CAAa,IAAM,CAC5D,IAAMje,CAAAA,CAAQ4J,CAAAA,CAAIsP,EAAM,YAAA,CAAchnB,CAAK,EACrCspB,CAAAA,CAAU5R,CAAAA,CAAIsP,EAAM,cAAA,CAAgBhnB,CAAK,CAAA,CACzCyhB,CAAAA,CAAUl2B,EAAK,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CACjCygC,CAAAA,CAAS3B,EAAAA,CACb5L,CAAAA,CACAuI,EAAM,OAAA,CACNA,CAAAA,CAAM,MACNvF,CAAAA,CACA6H,CAAAA,EAAW,EAAC,CACZyC,CAAAA,CACAje,CACF,CAAA,CACM6Z,EAAUjQ,CAAAA,CAAIsP,CAAAA,CAAM,MAAA,CAAQhnB,CAAK,GAAG,MAAA,CACpCisB,CAAAA,CAAQT,EAAAA,CAAe/M,CAAAA,CAAQgD,CAAO,CAAA,CAC5C,OAAO,CACL,IAAA,CAAAl2B,CAAAA,CACA,MAAAy7B,CAAAA,CACA,KAAA,CAAAhnB,CAAAA,CACA,GAAI8N,IAAU,MAAA,EAAa,CAAE,KAAA,CAAAA,CAAM,EACnC,GAAIwb,CAAAA,GAAY,MAAA,EAAa,CAAE,QAAAA,CAAQ,CAAA,CACvC,YAAa,CACX,GAAG2C,EACH,GAAGF,CAAAA,CACH,GAAGC,CAAAA,CACH,GAAIrE,CAAAA,CAAU,CAAC,CAAE,KAAA,CAAA3nB,EAAO,QAAA,CAAU,IAAA,CAAM,KAAA,CAAO,CAAC,GAAG2nB,CAAO,CAAE,CAAc,CAAA,CAAI,EAChF,CACF,CACF,CAAC,CACH,CACF,CAAA,CCpQO,IAAMuE,EAAAA,CAAyB,CACpC3c,EACA+I,CAAAA,CACAvP,CAAAA,CAAsC,EAAC,GACtB,CACjB,IAAMojB,CAAAA,CAAWpjB,EAAK,QAAA,EAAY,QAAA,CAC5BgiB,EAAQ,IAAI,GAAA,CAClB,IAAA,IAAWrS,CAAAA,IAAOJ,EAAM,CAGtB,IAAM8T,CAAAA,CAAOD,CAAAA,GAAa,MAC1BlB,EAAAA,CACEF,CAAAA,CACArS,CAAAA,CACAnJ,CAAAA,CAAM,MACNA,CAAAA,CAAM,KAAA,GAAU,OACZ,MAAA,CACA6c,CAAAA,EAAQ7c,EAAM,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,CAC9BmJ,EAAI,OAAA,CACJ+R,EAAAA,CAAY/R,CAAAA,CAAKnJ,CAAAA,CAAM,KAAK,CAAA,CAClCA,CAAAA,CAAM,OAAA,GAAY,MAAA,CACd,OACAmb,EAAAA,CAAchS,CAAAA,CAAK0T,EAAO7c,CAAAA,CAAM,OAAA,CAAQ,IAAI,CAAC6T,CAAAA,CAAGxS,CAAAA,GAAM,CAAA,QAAA,EAAWA,CAAC,CAAA,CAAE,CAAA,CAAIrB,EAAM,OAAO,CAC3F,EACF,CACA,OAAO,CACL,IAAA,CAAMA,EAAM,IAAA,CACZ,OAAA,CAASA,EAAM,OAAA,CACf,KAAA,CAAOA,EAAM,KAAA,CACb,KAAA,CAAOA,CAAAA,CAAM,KAAA,CACb,QAAS4b,EAAAA,CAAYJ,CAAK,CAC5B,CACF,ECnCA,IAAMsB,EAAAA,CAAa,CAAC/T,CAAAA,CAAsB/sB,IAAwB,CAChE,IAAIu2B,EAAiB,CAAC,GAAGxJ,CAAI,CAAA,CAC7B,IAAA,IAAWgU,CAAAA,IAAW/gC,CAAAA,CAAK,MAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAC,EAAG,CAC9C,IAAM4xB,CAAAA,CAAc,GACpB,IAAA,IAAWzE,CAAAA,IAAOoJ,EAAS,CACzB,IAAM/oC,EAAQujB,CAAAA,CAAYoc,CAAAA,CAAK4T,CAAO,CAAA,CAClC,MAAM,OAAA,CAAQvzC,CAAK,CAAA,CAAGokC,CAAAA,CAAK,KAAK,GAAIpkC,CAAe,CAAA,CAC9CA,CAAAA,EAAS,MAAMokC,CAAAA,CAAK,IAAA,CAAKpkC,CAAY,EAChD,CACA+oC,EAAU3E,EACZ,CACA,OAAO2E,CACT,EAcayK,EAAAA,CAAqB,CAChC/M,CAAAA,CACAlH,CAAAA,CACApC,IAEA4V,EAAAA,CAAYtM,CAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,IAAA,CAAAj0B,EAAM,KAAA,CAAAy7B,CAAAA,CAAO,MAAAhnB,CAAAA,CAAO,KAAA,CAAA8N,CAAAA,CAAO,OAAA,CAAAwb,EAAS,WAAA,CAAAkD,CAAY,CAAA,GAAM,CACxF,IAAM5N,CAAAA,CAAQxU,CAAAA,CAAMoiB,CAAW,CAAA,CACzBzB,EAAQ,IAAI,GAAA,CAClB,QAAWrS,CAAAA,IAAO2T,EAAAA,CAAW/T,EAAM/sB,CAAI,CAAA,CACjC0qB,EAAAA,CAAM2I,CAAAA,CAAOlG,EAAKxC,CAAO,CAAA,GAAM,IAAA,EAGnC+U,EAAAA,CACEF,EACArS,CAAAA,CACA1Y,CAAAA,CACA8N,CAAAA,GAAU,MAAA,CAAY,OAAY2c,EAAAA,CAAY/R,CAAAA,CAAK5K,CAAK,CAAA,CACxDwb,CAAAA,GAAY,OAAY,MAAA,CAAYoB,EAAAA,CAAchS,CAAAA,CAAK4Q,CAAO,CAChE,CAAA,CAEF,OAAO,CACL,IAAA,CAAA/9B,EACA,OAAA,CAASy7B,CAAAA,CAAM,OAAA,CACf,KAAA,CAAOA,EAAM,KAAA,CACb,KAAA,CAAAhnB,EACA,OAAA,CAASmrB,EAAAA,CAAYJ,CAAK,CAC5B,CACF,CAAC,MC1BG0B,EAAAA,CAAgB,CACpB3vB,EACA4vB,CAAAA,CACAjB,CAAAA,CACAkB,EACAlW,CAAAA,GACS,CACT,GAAI3Z,CAAAA,GAAc,OAAW,OAC7B,IAAMrI,EAAO,IAAI,GAAA,CACjB,OAAW,CAAE,OAAA,CAAAwnB,CAAAA,CAAS,SAAA,CAAAC,EAAW,OAAA,CAAAuF,CAAQ,CAAA,GAAKgK,CAAAA,CAC5C,QAAWtuB,CAAAA,IAAKyqB,EAAAA,CAAsB9qB,CAAAA,CAAW4vB,CAAAA,CAAczQ,EAASC,CAAAA,CAAWuF,CAAO,EAAG,CAE3F,IAAM3F,EAAU,CAAA,CAAA,EAAI3e,CAAAA,CAAE,IAAI,CAAA,EAAA,EAAKA,EAAE,OAAO,CAAA,CAAA,CACpC1I,CAAAA,CAAK,GAAA,CAAIqnB,CAAO,CAAA,GACpBrnB,CAAAA,CAAK,GAAA,CAAIqnB,CAAO,EAChBrF,CAAAA,CAAO,IAAA,CAAK,CAAE,IAAA,CAAMkW,CAAAA,CAAU,KAAMxvB,CAAAA,CAAE,IAAA,CAAM,OAAA,CAAA2e,CAAQ,CAAC,CAAA,EACvD,CAEJ,CAAA,CAMM8Q,EAAAA,CAAiC,CACrC5K,CAAAA,CACAF,CAAAA,CACA4K,CAAAA,CACAjB,CAAAA,CACAkB,EACAlW,CAAAA,GACS,CACT,IAAMgI,CAAAA,CAAiB,CAAE,KAAMiO,CAAAA,CAAa,IAAA,CAAM,KAAA,CAAO,CAAC,GAAGA,CAAAA,CAAa,KAAA,CAAO5K,CAAO,CAAE,EACpF+K,CAAAA,CAAW,IAAI,GAAA,CACrB,IAAA,IAAWzwB,KAAMqvB,CAAAA,CAAQ,CACvB,IAAM/M,CAAAA,CAASC,EAAAA,CAAaF,EAAQriB,CAAAA,CAAG,OAAA,CAASA,CAAAA,CAAG,SAAA,CAAWA,EAAG,OAAO,CAAA,CACxE,IAAA,GAAW,CAAC4D,EAAOxY,CAAK,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQw6B,EAAU,OAAA,EAAW,EAAE,CAAA,CAAG,CACpE,IAAMV,CAAAA,CAAOvB,EAAAA,CAAgBv4B,CAAK,CAAA,CAClC,QAAWuY,CAAAA,IAAQ,CAAC,OAAA,CAAS,SAAS,EAChCuhB,CAAAA,CAAKvhB,CAAI,CAAA,GAAM,MAAA,EAAa8sB,EAAS,GAAA,CAAI,CAAA,EAAG7sB,CAAK,CAAA,CAAA,EAAID,CAAI,EAAE,CAAA,EAC3DmjB,EAAAA,CAAmBzE,CAAAA,CAAQC,CAAAA,CAAQtiB,EAAI4D,CAAAA,CAAOD,CAAI,CAAA,GACtD8sB,CAAAA,CAAS,IAAI,CAAA,EAAG7sB,CAAK,CAAA,CAAA,EAAID,CAAI,EAAE,CAAA,CAC/B0W,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,GAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,CAAA,CAAA,CAClC,KAAM,gBAAA,CACN,OAAA,CAAS,GAAGD,CAAI,CAAA,EAAA,EAAK,OAAOuhB,CAAAA,CAAKvhB,CAAI,CAAC,CAAC,0CACzC,CAAC,CAAA,EAEL,CACF,CACF,CAAA,CAIM+sB,GAAiB,CACrBvhC,CAAAA,CACAyxB,CAAAA,CACAf,CAAAA,CACAC,EACAnc,CAAAA,GACkB,CAClB,IAAM9D,CAAAA,CAAW1Q,EAAK,KAAA,CAAM,GAAG,CAAA,CACzB,CAAE,KAAA+xB,CAAK,CAAA,CAAIyB,GAAa/B,CAAAA,CAAM,CAAE,QAAAf,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAS,EAAG,CAAA,CAAG3wB,CAAI,CAAA,CACvEwhC,EAASzP,CAAAA,CAAK,IAAA,CAAK,CAAC/Y,CAAAA,CAAKqM,IAAMrM,CAAAA,CAAI,MAAA,EAAUqM,EAAI3U,CAAAA,CAAS,MAAA,CAAS,CAAC,CAAA,CAC1E,GAAI8wB,CAAAA,CAAQ,OAAO,GAAGhtB,CAAI,CAAA,mCAAA,EAAsC9D,CAAAA,CAASqhB,CAAAA,CAAK,QAAQyP,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,CAC9F,GAAIzP,CAAAA,CAAK,MAAA,GAAWrhB,EAAS,MAAA,CAC3B,OAAO,GAAG8D,CAAI,CAAA,+BAAA,EAAkC9D,CAAAA,CAAS,EAAA,CAAG,EAAE,CAAC,CAAA,eAAA,CAAA,CACjE,IAAMG,CAAAA,CAAKkhB,EAAK,EAAA,CAAG,EAAE,CAAA,EAAK,CAAE,IAAKrB,CAAAA,CAAS,KAAA,CAAOC,CAAU,CAAA,CACrDqG,CAAAA,CAAMtmB,EAASqhB,CAAAA,CAAK,MAAM,CAAA,CAC1B91B,CAAAA,CAAQwwB,GAAQN,CAAAA,CAAIsF,CAAAA,CAAM5gB,CAAAA,CAAG,GAAG,EAAGA,CAAAA,CAAG,KAAA,CAAOmmB,CAAG,CAAA,CACtD,OAAK/6B,CAAAA,CACDm1B,EAAAA,CAAgBn1B,CAAK,CAAA,CAAU,CAAA,EAAGuY,CAAI,CAAA,WAAA,EAAcwiB,CAAG,CAAA,0BAAA,CAAA,CACpDjF,CAAAA,CAAK,SAAWrhB,CAAAA,CAAS,MAAA,CAAS,CAAA,CAAI,IAAA,CAAO,GAAG8D,CAAI,CAAA,UAAA,EAAawiB,CAAG,CAAA,mBAAA,CAAA,CAFxD,GAAGxiB,CAAI,CAAA,UAAA,EAAawiB,CAAG,CAAA,gBAAA,EAAmBnmB,CAAAA,CAAG,KAAK,CAAA,CAAA,CAGvE,CAAA,CAIM4wB,EAAAA,CAAW,CACfhtB,EACAitB,CAAAA,CACA1I,CAAAA,GACkB,CAClB,IAAA,IAAWS,KAAOiI,CAAAA,CAAW,CAC3B,IAAMC,CAAAA,CAAQ7M,GAA0B2E,CAAG,CAAA,CAC3C,GAAIkI,CAAAA,EAAS,CAACA,EAAM,QAAA,CAASltB,CAAK,CAAA,CAAG,OAAO,0BAC5C,GAAIglB,CAAAA,CAAI,OAAO,QAAA,CAAShlB,CAAK,EAAG,OAAO,yBACzC,CACA,OAAIukB,GAAU,KAAA,EAAS,CAACA,EAAS,KAAA,CAAM,QAAA,CAASvkB,CAAK,CAAA,CAAU,iCAAA,CAC3DukB,CAAAA,EAAU,KAAA,EAAO,SAASvkB,CAAK,CAAA,CAAU,8BAAA,CACtC,IACT,EAEMmtB,EAAAA,CAAoB,CACxBnL,CAAAA,CACAoL,CAAAA,CACAC,EACArQ,CAAAA,CACAf,CAAAA,CACAqR,EACApR,CAAAA,CACAqR,CAAAA,CACAZ,EACAlW,CAAAA,CACAiW,CAAAA,CACAc,CAAAA,CACAC,CAAAA,CAAY,QACH,CACLzL,CAAAA,CAAU,KAAA,EAASA,CAAAA,CAAU,OAC/BvL,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,GAAGkW,CAAQ,CAAA,CAAA,CACjB,KAAM,uBAAA,CACN,OAAA,CAAS,qCACX,CAAC,CAAA,CAGCc,CAAAA,EAAa,WAAA,GAAezL,GAAcA,CAAAA,CAA6B,SAAA,EACzEvL,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,CACjB,KAAM,gBAAA,CACN,OAAA,CAAS,6EACX,CAAC,CAAA,CAGH,QAAW5sB,CAAAA,IAAQ,CAAC,OAAA,CAAS,OAAO,EAClC,IAAA,IAAW2gB,CAAAA,IAAKsB,CAAAA,CAAUjiB,CAAI,GAAK,EAAC,CAAG,CACrC,GAAI,CAAC2X,CAAAA,CAAI4V,CAAAA,CAAa5M,CAAC,CAAA,CAAG,CACxBjK,EAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,EAAI5sB,CAAI,CAAA,CAAA,CACzB,IAAA,CAAM,cACN,OAAA,CAAS,CAAA,OAAA,EAAU2gB,CAAC,CAAA,cAAA,CACtB,CAAC,CAAA,CACD,QACF,CACA,IAAMgN,CAAAA,CAASV,GAAStM,CAAAA,CAAG0M,CAAAA,CAAeK,CAAAA,CAAY,MAAA,CAAYJ,CAAiB,CAAA,CAC/EK,CAAAA,EACFjX,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,EAAI5sB,CAAI,CAAA,CAAA,CACzB,IAAA,CAAM,cACN,OAAA,CAAS,CAAA,CAAA,EAAI2gB,CAAC,CAAA,EAAA,EAAKgN,CAAM,CAAA,CAC3B,CAAC,EACL,CAEF,IAAMC,CAAAA,CAAiB,CACrB1tB,EACAkc,CAAAA,CACAtwB,CAAAA,GACS,CACT,IAAM4xB,EAAa/F,CAAAA,CAAI4V,CAAAA,CAAanR,CAAS,CAAA,CAC7C,GAAI,CAACsB,CAAAA,CAAY,CACfhH,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,EAAI1sB,CAAE,GACvB,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,CAAA,OAAA,EAAUkc,CAAS,CAAA,cAAA,CAC9B,CAAC,EACD,MACF,CACA,GAAIsB,CAAAA,CAAW,IAAA,GAAS,MAAA,CAAQ,CAC9BhH,EAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,EAAI1sB,CAAE,CAAA,CAAA,CACvB,IAAA,CAAM,aACN,OAAA,CAAS,CAAA,OAAA,EAAUkc,CAAS,CAAA,sBAAA,CAC9B,CAAC,EACD,MACF,CACA,IAAMyR,CAAAA,CAAWhR,GAAmBa,CAAAA,CAAY8P,CAAY,CAAA,CAC5D,IAAA,IAAWpwB,KAAKtR,CAAAA,CACV+hC,CAAAA,EAAY,CAACA,CAAAA,CAAS,SAASzwB,CAAC,CAAA,EAClCsZ,EAAO,IAAA,CAAK,CACV,KAAM,CAAA,EAAGkW,CAAQ,CAAA,CAAA,EAAI1sB,CAAE,IAAIkc,CAAS,CAAA,CAAA,CACpC,IAAA,CAAM,mBAAA,CACN,QAAS,CAAA,CAAA,EAAIhf,CAAC,CAAA,gCAAA,EAAmCsgB,CAAAA,CAAW,IAAI,CAAA,CAAA,CAClE,CAAC,EAGP,CAAA,CACA,IAAA,GAAW,CAACzd,CAAAA,CAAO4gB,CAAI,CAAA,GAAK,MAAA,CAAO,QAAQoB,CAAAA,CAAU,SAAA,EAAa,EAAE,EAClE2L,CAAAA,CAAe,WAAA,CAAa3tB,CAAAA,CAAO4gB,CAAI,EAEzC,IAAA,GAAW,CAAC5gB,EAAO4gB,CAAI,CAAA,GAAK,OAAO,OAAA,CAAQoB,CAAAA,CAAU,SAAA,EAAa,EAAE,CAAA,CAClE2L,CAAAA,CAAe,WAAA,CAAa3tB,CAAAA,CAAO4gB,CAAI,CAAA,CAGzC6L,EAAAA,CAAczK,CAAAA,CAAU,KAAA,CAAO0K,EAAcc,CAAAA,CAAa,CAAA,EAAGb,CAAQ,CAAA,MAAA,CAAA,CAAUlW,CAAM,EAErF,IAAA,GAAW,CAACzW,CAAAA,CAAOxY,CAAK,IAAK,MAAA,CAAO,OAAA,CAAQw6B,CAAAA,CAAU,OAAA,EAAW,EAAE,CAAA,CAAG,CACpE,GAAI,CAACtK,CAAAA,CAAI4V,CAAAA,CAAattB,CAAK,CAAA,CAAG,CAC5ByW,EAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,QAAA,CAAA,CACjB,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,UAAU3sB,CAAK,CAAA,cAAA,CAC1B,CAAC,CAAA,CACD,QACF,CACA,IAAMshB,EAAOvB,EAAAA,CAAgBv4B,CAAK,EAC5BqmC,CAAAA,CAAcvM,CAAAA,CAAK,KAAA,EAAO,QAAA,CAAS,GAAG,CAAA,CAAIA,CAAAA,CAAK,MAAQ,MAAA,CAC7D,GAAIA,EAAK,KAAA,GAAU,MAAA,CACjB,GAAIuM,CAAAA,CAAa,CACf,IAAMC,CAAAA,CAAMhB,GAAee,CAAAA,CAAa7Q,CAAAA,CAAMf,EAASC,CAAAA,CAAW,OAAO,CAAA,CACrE4R,CAAAA,EACFrX,EAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,CAAA,CAAA,CAClC,IAAA,CAAM,iBACN,OAAA,CAAS,CAAA,EAAG8tB,CAAG,CAAA,CACjB,CAAC,EACL,CAAA,KAAYpW,CAAAA,CAAI4V,CAAAA,CAAahM,CAAAA,CAAK,KAAK,CAAA,EACrC7K,CAAAA,CAAO,IAAA,CAAK,CACV,KAAM,CAAA,EAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,GAClC,IAAA,CAAM,aAAA,CACN,QAAS,CAAA,cAAA,EAAiBshB,CAAAA,CAAK,KAAK,CAAA,cAAA,CACtC,CAAC,CAAA,CAGL,IAAME,EAAO5B,EAAAA,CAAiB0B,CAAAA,CAAK,OAAO,CAAA,CAG1C,GAAIE,CAAAA,GAAS,MAAA,EAAaqM,CAAAA,GAAgB,MAAA,CAAW,CACnD,IAAME,CAAAA,CAAW,4BACbA,CAAAA,CAAS,IAAA,CAAK/tB,CAAK,CAAA,EAAMshB,CAAAA,CAAK,KAAA,GAAU,MAAA,EAAayM,EAAS,IAAA,CAAKzM,CAAAA,CAAK,KAAK,CAAA,GAC/E7K,EAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,GAClC,IAAA,CAAM,gBAAA,CACN,QAAS,mGACX,CAAC,EAEL,CACA,GAAIwhB,CAAAA,GAAS,MAAA,CAAW,CACtB,IAAA,IAAW+I,KAAQ/I,CAAAA,CAAM,CACvB,IAAMsM,CAAAA,CAAMhB,GAAevC,CAAAA,CAAMvN,CAAAA,CAAMf,EAASC,CAAAA,CAAW,SAAS,EAChE4R,CAAAA,EACFrX,CAAAA,CAAO,IAAA,CAAK,CACV,KAAM,CAAA,EAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,GAClC,IAAA,CAAM,gBAAA,CACN,OAAA,CAAS,CAAA,EAAG8tB,CAAG,CAAA,CACjB,CAAC,EACL,CAGA,IAAME,EAAU,IAAA,CAAK,SAAA,CAAUxM,CAAI,CAAA,CACnC,QAAWwD,CAAAA,IAAOoI,CAAAA,CAAe,CAC/B,IAAMa,EAAWvW,CAAAA,CAAIsN,CAAAA,CAAI,OAAA,CAAShlB,CAAK,EACvC,GAAIiuB,CAAAA,GAAa,OAAW,SAC5B,IAAMC,EAAUtO,EAAAA,CAAiBG,EAAAA,CAAgBkO,CAAQ,CAAA,CAAE,OAAO,CAAA,CAC9DC,CAAAA,GAAY,QAAa,IAAA,CAAK,SAAA,CAAUA,CAAO,CAAA,GAAMF,CAAAA,EACvDvX,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,GAClC,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,CAAA,SAAA,EAAYwhB,CAAI,CAAA,8CAAA,EAAiD0M,CAAO,CAAA,CAAA,CACnF,CAAC,EAEL,CACF,CACAzB,EAAAA,CAAcnL,CAAAA,CAAK,MAAOoL,CAAAA,CAAcc,CAAAA,CAAa,GAAGb,CAAQ,CAAA,SAAA,EAAY3sB,CAAK,CAAA,CAAA,CAAIyW,CAAM,EAC7F,CACF,EAEM0X,EAAAA,CAAwB,CAC5BlS,CAAAA,CACAmS,CAAAA,CACAb,EACAc,CAAAA,CACA5X,CAAAA,GACS,CACT,IAAA,GAAW,CAAC2L,CAAAA,CAAUC,CAAK,IAAK,MAAA,CAAO,OAAA,CAAQ+L,CAAa,CAAA,CAAG,CAC7D,IAAME,CAAAA,CAAe5W,EAAI6V,CAAAA,CAAcnL,CAAQ,CAAA,CAC/C,GAAI,CAACkM,CAAAA,CAAc,CACjB7X,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,YAAA,EAAewF,CAAO,CAAA,OAAA,EAAUmG,CAAQ,GAC9C,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,sBACX,CAAC,CAAA,CACD,QACF,CACA,IAAImM,EAAqC,IAAA,CACnCC,CAAAA,CAAiB,IAAI,GAAA,CAC3B,QAAWxJ,CAAAA,IAAOqJ,CAAAA,CAAwB,CACxC,IAAMrrB,CAAAA,CAAIgiB,EAAI5C,CAAQ,CAAA,CACtB,GAAKpf,CAAAA,GACDA,EAAE,KAAA,GAAOurB,CAAAA,CAAiBpO,EAAAA,CAAmBoO,CAAAA,CAAgBvrB,EAAE,KAAK,CAAA,CAAA,CACpEA,CAAAA,CAAE,KAAA,CAAA,CAAO,QAAW7F,CAAAA,IAAK6F,CAAAA,CAAE,MAAOwrB,CAAAA,CAAe,GAAA,CAAIrxB,CAAC,EAC5D,CACA,IAAMsxB,CAAAA,CAAsBtxB,GACtB,EAAAqxB,CAAAA,CAAe,GAAA,CAAIrxB,CAAC,GACpBoxB,CAAAA,EAAkB,CAACA,CAAAA,CAAe,GAAA,CAAIpxB,CAAC,CAAA,CAAA,CAG7C,IAAA,IAAWA,KAAKklB,CAAAA,CAAM,KAAA,EAAS,EAAC,CACzBiM,CAAAA,CAAa,QAAA,CAASnxB,CAAC,EAMhBsxB,CAAAA,CAAmBtxB,CAAC,CAAA,EAC9BsZ,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,CAAA,YAAA,EAAewF,CAAO,UAAUmG,CAAQ,CAAA,MAAA,CAAA,CAC9C,KAAM,aAAA,CACN,OAAA,CAAS,IAAIjlB,CAAC,CAAA,4BAAA,CAChB,CAAC,CAAA,CAVDsZ,EAAO,IAAA,CAAK,CACV,KAAM,CAAA,YAAA,EAAewF,CAAO,UAAUmG,CAAQ,CAAA,MAAA,CAAA,CAC9C,IAAA,CAAM,mBAAA,CACN,QAAS,CAAA,CAAA,EAAIjlB,CAAC,qBAChB,CAAC,CAAA,CASL,QAAWA,CAAAA,IAAKklB,CAAAA,CAAM,KAAA,EAAS,GACxBiM,CAAAA,CAAa,QAAA,CAASnxB,CAAC,CAAA,CAMhBsxB,EAAmBtxB,CAAC,CAAA,EAC9BsZ,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,YAAA,EAAewF,CAAO,CAAA,OAAA,EAAUmG,CAAQ,SAC9C,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,CAAA,CAAA,EAAIjlB,CAAC,CAAA,+BAAA,CAChB,CAAC,CAAA,CAVDsZ,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,CAAA,YAAA,EAAewF,CAAO,UAAUmG,CAAQ,CAAA,MAAA,CAAA,CAC9C,KAAM,mBAAA,CACN,OAAA,CAAS,IAAIjlB,CAAC,CAAA,mBAAA,CAChB,CAAC,EASP,CACF,CAAA,CAKMuxB,EAAAA,CAA0B,CAC9B1M,CAAAA,CACAn9B,EACAuX,CAAAA,CACAkxB,CAAAA,CACAC,CAAAA,CACAZ,CAAAA,CACAlW,IACS,CACT,IAAMiI,EAASC,EAAAA,CAAa95B,CAAAA,CAAWuX,EAAG,OAAA,CAASA,CAAAA,CAAG,SAAA,CAAWA,CAAAA,CAAG,OAAO,CAAA,CAC3E,IAAA,IAAW6D,CAAAA,IAAM,CAAC,YAAa,WAAW,CAAA,CACxC,IAAA,GAAW,CAACD,EAAOnU,CAAM,CAAA,GAAK,OAAO,OAAA,CAAQm2B,CAAAA,CAAU/hB,CAAE,CAAA,EAAK,EAAE,CAAA,CAAG,CACjE,IAAMzY,CAAAA,CAAQkwB,CAAAA,CAAI4V,CAAAA,CAAattB,CAAK,CAAA,CACpC,GAAIxY,CAAAA,EAAO,IAAA,GAAS,OAAQ,SAC5B,IAAMy+B,EAAWrJ,EAAAA,CAAmBp1B,CAAAA,CAAO+lC,CAAY,CAAA,EAAK,EAAC,CACvD5F,CAAAA,CAAU5E,GAAkBrE,CAAAA,CAAQ1e,CAAK,CAAA,EAAKimB,CAAAA,CACpD,QAAW9oB,CAAAA,IAAKtR,CAAAA,CACVo6B,CAAAA,CAAS,QAAA,CAAS9oB,CAAC,CAAA,EAAK,CAACwqB,EAAQ,QAAA,CAASxqB,CAAC,GAC7CsZ,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,GAAGkW,CAAQ,CAAA,CAAA,EAAI1sB,CAAE,CAAA,CAAA,EAAID,CAAK,CAAA,CAAA,CAChC,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,IAAI7C,CAAC,CAAA,8DAAA,CAChB,CAAC,EACP,CACJ,EAEMwxB,EAAAA,CAAwB,CAC5B3M,CAAAA,CACAoL,CAAAA,CACAtL,EACA5B,CAAAA,CACAlD,CAAAA,CACAf,EACAC,CAAAA,CACAyQ,CAAAA,CACAlW,EACAiW,CAAAA,CACAjL,CAAAA,GACS,CACT,IAAMvJ,EAAWR,CAAAA,CAAIsF,CAAAA,CAAMf,CAAO,CAAA,CAC5BlE,CAAAA,CAAQD,EAAQI,CAAAA,CAAUgE,CAAS,CAAA,CACzC,GAAI,CAACnE,CAAAA,CAAO,OAEZ,IAAM6W,CAAAA,CAA4BlX,EAAIA,CAAAA,CAAIoK,CAAAA,CAAQ,WAAA,CAAa7F,CAAO,GAAG,MAAA,CAAQC,CAAS,EAIpF2S,CAAAA,CAAiB,CACrB,GAJ+B3O,CAAAA,CAC9B,GAAA,CAAKld,CAAAA,EAAM0U,CAAAA,CAAIA,EAAI1U,CAAAA,CAAE,WAAA,CAAaiZ,CAAO,CAAA,EAAG,OAAQC,CAAS,CAAC,CAAA,CAC9D,MAAA,CAAQvG,GAAkCA,CAAAA,GAAM,MAAS,EAE9B,GAAA,CAAKmZ,CAAAA,EAAMA,CAAmB,CAAA,CAC1D,GAAG1B,CACL,CAAA,CAEAD,GACEnL,CAAAA,CACA6M,CAAAA,CACAD,CAAAA,CACA5R,CAAAA,CACAf,EACAlE,CAAAA,CAAM,MAAA,CACNmE,CAAAA,CACAhE,CAAAA,EAAU,MACVyU,CAAAA,CACAlW,CAAAA,CACAiW,EACA,CAAC,CAAE,QAAAzQ,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAAuF,CAAQ,CAAC,CAAA,CAChC,KACF,CAAA,CAEAiN,GACE1M,CAAAA,CACA,CACE,IAAA,CAAM0K,CAAAA,CAAa,KACnB,KAAA,CAAO,CAAC,GAAGA,CAAAA,CAAa,KAAA,CAAO,CAAE,MAAA,CAAQ5K,CAAAA,CAAQ,MAAA,CAAQ,WAAA,CAAaA,EAAQ,WAAY,CAAC,CAC7F,CAAA,CACA,CAAE,OAAA,CAAA7F,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,QAAAuF,CAAQ,CAAA,CAC9B1J,EAAM,MAAA,CACNG,CAAAA,EAAU,MACVyU,CAAAA,CACAlW,CACF,CAAA,CAEAmW,EAAAA,CACE5K,EACAF,CAAAA,CACA4K,CAAAA,CACA,CAAC,CAAE,QAAAzQ,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAAuF,CAAQ,CAAC,CAAA,CAChCkL,EACAlW,CACF,CAAA,CAEA,OAAW,CAACoT,CAAAA,CAAUvH,CAAG,CAAA,GAAK,OAAO,OAAA,CAAQN,CAAAA,CAAU,SAAA,EAAa,EAAE,CAAA,CAAG,CACvE,IAAMx6B,CAAAA,CAAQkwB,EAAIK,CAAAA,CAAM,MAAA,CAAQ8R,CAAQ,CAAA,CACxC,GAAI,CAACriC,CAAAA,CAAO,CACVivB,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,CAAA,UAAA,CAAA,CACjB,IAAA,CAAM,cACN,OAAA,CAAS,CAAA,CAAA,EAAI9C,CAAQ,CAAA,cAAA,CACvB,CAAC,CAAA,CACD,QACF,CACA,GAAI,CAAClN,GAAgBn1B,CAAK,CAAA,CAAG,CAC3BivB,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,aACjB,IAAA,CAAM,YAAA,CACN,OAAA,CAAS,CAAA,CAAA,EAAI9C,CAAQ,CAAA,0BAAA,EAA6BriC,CAAAA,CAAM,IAAI,CAAA,CAAA,CAC9D,CAAC,EACD,QACF,CACA,IAAMgV,CAAAA,CAASsgB,GAAiBt1B,CAAAA,CAAOy0B,CAAO,CAAA,CAC9C,GAAI,CAACzf,CAAAA,CAAQ,SACb,GAAI,CAACsb,EAAQJ,CAAAA,CAAIsF,CAAAA,CAAMxgB,EAAO,OAAO,CAAA,CAAGA,EAAO,SAAS,CAAA,CAAG,CACzDia,CAAAA,CAAO,KAAK,CACV,IAAA,CAAM,CAAA,EAAGkW,CAAQ,cAAc9C,CAAQ,CAAA,CAAA,CACvC,IAAA,CAAM,aAAA,CACN,QAAS,gCACX,CAAC,EACD,QACF,CACA,IAAMkF,CAAAA,CAAqB3B,CAAAA,CACxB,GAAA,CAAKpI,CAAAA,EAAQtN,EAAIsN,CAAAA,CAAI,SAAA,CAAW6E,CAAQ,CAAC,EACzC,MAAA,CAAQlU,CAAAA,EAA2BA,CAAAA,GAAM,MAAS,EACrDgZ,EAAAA,CACErM,CAAAA,CACAyM,EACAjN,CAAAA,CACA5B,CAAAA,CACAlD,EACAxgB,CAAAA,CAAO,OAAA,CACPA,CAAAA,CAAO,SAAA,CACP,GAAGmwB,CAAQ,CAAA,WAAA,EAAc9C,CAAQ,CAAA,CAAA,CACjCpT,EACAiW,CAAAA,CACA,CAAC,GAAGjL,CAAAA,CAASoI,CAAQ,CACvB,EACF,CACF,CAAA,CAEamF,EAAAA,CAAqBhN,GAA+C,CAC/E,IAAMvL,CAAAA,CAA4B,GAC5BvhB,CAAAA,CAAMunB,EAAAA,CAAQuF,CAAS,CAAA,CACvBiL,EAAY3Q,EAAAA,CAAa0F,CAAAA,CAAU,MAAM,CAAA,CACzC0K,EAAejN,CAAAA,CAAcuC,CAAAA,CAAU,MAAM,CAAA,CAC7CiN,CAAAA,CAAe1F,GAAavH,CAAAA,CAAU,MAAM,CAAA,CAElD,IAAA,GAAW,CAAC/F,CAAAA,CAASsI,CAAQ,CAAA,GAAK,MAAA,CAAO,QAAQvC,CAAAA,CAAU,WAAA,EAAe,EAAE,EAAG,CAC7E,IAAM9J,EAAWR,CAAAA,CAAIxiB,CAAAA,CAAI,KAAM+mB,CAAO,CAAA,CACtC,GAAI,CAAC/D,EAAU,CACbzB,CAAAA,CAAO,KAAK,CAAE,IAAA,CAAM,eAAewF,CAAO,CAAA,CAAA,CAAI,IAAA,CAAM,aAAA,CAAe,QAAS,aAAc,CAAC,EAC3F,QACF,CAEA,IAAMiT,CAAAA,CAAwBjC,CAAAA,CAC3B,GAAA,CAAKjI,CAAAA,EAAQtN,EAAIsN,CAAAA,CAAI,WAAA,CAAa/I,CAAO,CAAA,EAAG,KAAK,CAAA,CACjD,MAAA,CAAQtG,CAAAA,EAAkCA,CAAAA,GAAM,MAAS,CAAA,CAE5D,IAAA,GAAW,CAACuG,CAAAA,CAAWiG,CAAI,IAAK,MAAA,CAAO,OAAA,CAAQoC,CAAAA,CAAS,MAAA,EAAU,EAAE,CAAA,CAAG,CACrE,IAAMxM,EAAQD,CAAAA,CAAQI,CAAAA,CAAUgE,CAAS,CAAA,CACzC,GAAI,CAACnE,CAAAA,CAAO,CACVtB,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,CAAA,YAAA,EAAewF,CAAO,CAAA,QAAA,EAAWC,CAAS,CAAA,CAAA,CAChD,IAAA,CAAM,aAAA,CACN,OAAA,CAAS,iBACX,CAAC,CAAA,CACD,QACF,CACA,IAAMiT,CAAAA,CAA2BlC,CAAAA,CAC9B,IAAKjI,CAAAA,EAAQtN,CAAAA,CAAIA,EAAIsN,CAAAA,CAAI,WAAA,CAAa/I,CAAO,CAAA,EAAG,OAAQC,CAAS,CAAC,CAAA,CAClE,MAAA,CAAQvG,GAAkCA,CAAAA,GAAM,MAAS,CAAA,CAGtD6X,CAAAA,CAA4B,CAAC,CAAE,OAAA,CAAAvR,EAAS,SAAA,CAAAC,CAAAA,CAAW,QAAS8D,EAAS,CAAC,CAAA,CAC5E,IAAA,GAAW,CAACz0B,CAAAA,CAAMy7B,CAAK,CAAA,GAAK,MAAA,CAAO,QAAQiI,CAAY,CAAA,CACjDjI,CAAAA,CAAM,OAAA,GAAY/K,GAAW+K,CAAAA,CAAM,KAAA,GAAU9K,GAC/CsR,CAAAA,CAAY,IAAA,CAAK,CAAE,OAAA,CAAAvR,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,QAAS3wB,CAAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,MAAM,CAAC,CAAE,CAAC,CAAA,CAG9E4hC,GACEhL,CAAAA,CACAgN,CAAAA,CACA,OACAj6B,CAAAA,CAAI,IAAA,CACJ+mB,EACAlE,CAAAA,CAAM,MAAA,CACNmE,CAAAA,CACAhE,CAAAA,CAAS,MACT,CAAA,YAAA,EAAe+D,CAAO,CAAA,QAAA,EAAWC,CAAS,GAC1CzF,CAAAA,CACAiW,CAAAA,CACAc,CAAAA,CACA,IACF,EACAkB,EAAAA,CACEvM,CAAAA,CACAuK,EACA,CAAE,OAAA,CAAAzQ,EAAS,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAS8D,EAAS,EACxCjI,CAAAA,CAAM,MAAA,CACNG,EAAS,KAAA,CACT,CAAA,YAAA,EAAe+D,CAAO,CAAA,QAAA,EAAWC,CAAS,CAAA,CAAA,CAC1CzF,CACF,EACAmW,EAAAA,CACEzK,CAAAA,CACAH,EACA0K,CAAAA,CACAc,CAAAA,CACA,eAAevR,CAAO,CAAA,QAAA,EAAWC,CAAS,CAAA,CAAA,CAC1CzF,CACF,EACF,CAEI8N,CAAAA,CAAS,KAAA,EACX4J,GAAsBlS,CAAAA,CAASsI,CAAAA,CAAS,KAAA,CAAOrM,CAAAA,CAAS,MAAOgX,CAAAA,CAAuBzY,CAAM,EAEhG,CAEA,GAAIuL,EAAU,IAAA,CAAM,CAClB,IAAMoN,CAAAA,CAAcl6B,EAAI,OAAA,CAClBm6B,CAAAA,CAAYn6B,CAAAA,CAAI,KAAA,CAChBgjB,EAAWR,CAAAA,CAAIxiB,CAAAA,CAAI,IAAA,CAAMk6B,CAAW,EAC1C,GAAI,CAAClX,EACHzB,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,MAAA,CACN,IAAA,CAAM,aAAA,CACN,QAAS,CAAA,UAAA,EAAa2Y,CAAW,CAAA,aAAA,CACnC,CAAC,UACQ,CAACtX,CAAAA,CAAQI,CAAAA,CAAUmX,CAAS,EACrC5Y,CAAAA,CAAO,IAAA,CAAK,CACV,IAAA,CAAM,MAAA,CACN,KAAM,aAAA,CACN,OAAA,CAAS,CAAA,YAAA,EAAe4Y,CAAS,mBACnC,CAAC,CAAA,CAAA,KACI,CACL,IAAMC,EAAuBrC,CAAAA,CAC1B,GAAA,CAAKjI,CAAAA,EAAQA,CAAAA,CAAI,IAAI,CAAA,CACrB,MAAA,CAAQrP,GAA2BA,CAAAA,GAAM,MAAS,EACrDgZ,EAAAA,CACE3M,CAAAA,CAAU,IAAA,CACVsN,CAAAA,CACAtN,EACAiL,CAAAA,CACA/3B,CAAAA,CAAI,IAAA,CACJk6B,CAAAA,CACAC,EACA,MAAA,CACA5Y,CAAAA,CACAiW,CAAAA,CACA,EACF,EACF,CACF,CAEA,IAAA,IAAW5Q,CAAAA,IAAWgJ,GAAkB9C,CAAS,CAAA,CAC/CvL,CAAAA,CAAO,IAAA,CAAK,CAAE,IAAA,CAAM,UAAA,CAAY,IAAA,CAAM,iBAAA,CAAmB,QAAAqF,CAAQ,CAAC,CAAA,CAEpE,OAAOnC,GAAiBlD,CAAM,CAChC,EAEa8Y,EAAAA,CAAwBvN,CAAAA,EACnCpI,GAAeoV,EAAAA,CAAkBhN,CAAS,CAAA,CAAG,mBAAmB,ECrmBlE,IAAMwN,EAAAA,CAAW,CAACvT,CAAAA,CAAiBC,IAA8B,CAAA,EAAGD,CAAO,CAAA,EAAA,EAAKC,CAAS,GAInFuT,EAAAA,CAAiB,CACrBpG,EACAzqB,CAAAA,CACApX,CAAAA,GACS,CACT,IAAMwjC,CAAAA,CAAW3B,CAAAA,CAAO,GAAA,CAAIzqB,CAAI,CAAA,CAChC,GAAI,CAACosB,CAAAA,CAAU,CACb3B,CAAAA,CAAO,GAAA,CAAIzqB,CAAAA,CAAMpX,CAAAA,CAAM,OAAS,CAAE,GAAGA,EAAO,MAAA,CAAQ,CAAC,GAAGA,CAAAA,CAAM,MAAM,CAAE,CAAA,CAAIA,CAAK,CAAA,CAC/E,MACF,CACA,IAAI21B,EAAO6N,CAAAA,CACX,GAAIxjC,CAAAA,CAAM,MAAA,EAAUwjC,EAAS,MAAA,CAAQ,CACnC,IAAM0E,CAAAA,CAAS,IAAI,IAAI,CAAC,GAAG1E,CAAAA,CAAS,MAAA,CAAQ,GAAGxjC,CAAAA,CAAM,MAAM,CAAC,CAAA,CAC5D21B,EAAO,CAAE,GAAGA,CAAAA,CAAM,MAAA,CAAQ,CAAC,GAAGuS,CAAM,CAAE,EACxC,CAAA,KAAW,CAACloC,CAAAA,CAAM,MAAA,EAAUwjC,CAAAA,CAAS,MAAA,GACnC7N,EAAO,CAAE,GAAGA,CAAAA,CAAM,MAAA,CAAQ,MAAU,CAAA,CAAA,CAIlC31B,CAAAA,CAAM,OAAA,GAAY,MAAA,EAAa21B,EAAK,OAAA,GAAY,MAAA,GAClDA,EAAO,CAAE,GAAGA,EAAM,OAAA,CAAS31B,CAAAA,CAAM,OAAQ,CAAA,CAAA,CAEvC21B,IAAS6N,CAAAA,EAAU3B,CAAAA,CAAO,GAAA,CAAIzqB,CAAAA,CAAMue,CAAI,EAC9C,CAAA,CAGawS,EAAAA,CAAgB,CAC3BnQ,EACAzW,CAAAA,CAA2B,KAClB,CACT,IAAM0V,EAAiBgB,CAAAA,CAAcD,CAAe,CAAA,CAC9C,CAAE,KAAAS,CAAK,CAAA,CAAIxB,CAAAA,CAKXmR,CAAAA,CAAsB,IAAI,GAAA,CAChC,IAAA,IAAWnG,CAAAA,IAAM1gB,CAAAA,CAAK,cAAgB,EAAC,CAAG,CACxC,IAAM4P,CAAAA,CAAI,GAAG8Q,CAAAA,CAAG,OAAO,CAAA,EAAA,EAAKA,CAAAA,CAAG,KAAK,CAAA,EAAA,EAAKA,CAAAA,CAAG,KAAK,CAAA,CAAA,CAC3CsB,EAAQ6E,CAAAA,CAAoB,GAAA,CAAIjX,CAAC,CAAA,EAAK,IAAI,GAAA,CAChD,IAAA,IAAWzO,KAAKuf,CAAAA,CAAG,OAAA,CAASsB,EAAM,GAAA,CAAIH,EAAAA,CAAU1gB,CAAAA,CAAE,MAAA,CAAQA,EAAE,KAAK,CAAA,CAAGA,CAAC,CAAA,CACrE0lB,EAAoB,GAAA,CAAIjX,CAAAA,CAAGoS,CAAK,EAClC,CAEA,IAAM8E,CAAAA,CAAU,IAAI,GAAA,CACdC,CAAAA,CAAkB,IAAI,GAAA,CACtBC,CAAAA,CAAiB,IAAI,GAAA,CAQrBC,EAAiB,CACrB,CAAE,QAAS/P,CAAAA,CAAK,OAAA,CAAS,UAAWA,CAAAA,CAAK,KAAA,CAAO,OAAA,CAAS,GAAI,QAAA,CAAU,IAAK,CAC9E,CAAA,CAEA,KAAO+P,EAAM,MAAA,CAAS,CAAA,EAAG,CACvB,GAAM,CAAE,OAAA,CAAA/T,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,QAAAuF,CAAAA,CAAS,QAAA,CAAAwE,CAAS,CAAA,CAAI+J,EAAM,KAAA,EAAM,CACxDjY,EAAQD,CAAAA,CAAQJ,CAAAA,CAAIuI,EAAK,IAAA,CAAMhE,CAAO,CAAA,CAAGC,CAAS,EACxD,GAAI,CAACnE,CAAAA,CAAO,SAEZ,IAAMp7B,CAAAA,CAAM6yC,EAAAA,CAASvT,CAAAA,CAASC,CAAS,EACvC,GAAI+J,CAAAA,CAAU,CACZ,IAAMgK,CAAAA,CAAO,GAAGtzC,CAAG,CAAA,EAAA,EAAK8kC,CAAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,CACzC,GAAIqO,CAAAA,CAAgB,IAAIG,CAAI,CAAA,CAAG,SAC/BH,CAAAA,CAAgB,IAAIG,CAAI,EAC1B,MAAO,CACL,GAAIF,EAAe,GAAA,CAAIpzC,CAAG,CAAA,CAAG,SAC7BozC,EAAe,GAAA,CAAIpzC,CAAG,EACxB,CAEA,IAAM+hC,CAAAA,CAASC,EAAAA,CAAaF,CAAAA,CAAQxC,CAAAA,CAASC,EAAW+J,CAAAA,CAAWxE,CAAAA,CAAUzB,EAAQ,CAAA,CAEjF8H,CAAAA,CAAM+H,EAAQ,GAAA,CAAIlzC,CAAG,CAAA,CACpBmrC,CAAAA,GACHA,EAAM,CAAE,OAAA,CAAA7L,CAAAA,CAAS,SAAA,CAAAC,EAAW,MAAA,CAAQ,IAAI,GAAM,CAAA,CAC9C2T,EAAQ,GAAA,CAAIlzC,CAAAA,CAAKmrC,CAAG,CAAA,CAAA,CAItB,IAAMuB,EAASF,EAAAA,CAAc1K,CAAAA,CAAQC,CAAAA,CAD1B,CAAE,QAAAzC,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAS+J,EAAWxE,CAAAA,CAAUzB,EAAS,CAAA,CACvBjI,CAAAA,CAAQ/X,GAAU,CACjE,IAAMopB,GAAUwG,CAAAA,CAAoB,GAAA,CAAI,GAAG3T,CAAO,CAAA,EAAA,EAAKC,CAAS,CAAA,EAAA,EAAKlc,CAAK,CAAA,CAAE,CAAA,CAC5E,OAAOopB,EAAAA,EAAW,CAAC,GAAGA,EAAAA,CAAQ,MAAA,EAAQ,CACxC,CAAC,CAAA,CACD,OAAW,CAACjN,CAAAA,CAAW+T,EAAS,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQ7G,CAAM,EAAG,CAC3D,IAAM7hC,GAAQ0oC,EAAAA,CAGR1O,EAAAA,CAAO0O,GAAU,OAAA,CACjBlF,EAAAA,CAAWlD,CAAAA,CAAI,MAAA,CAAO,IAAI3L,CAAS,CAAA,EAAG,QAC5C,GACEqF,EAAAA,GAAS,QACTwJ,EAAAA,GAAa,MAAA,EACb,IAAA,CAAK,SAAA,CAAUA,EAAQ,CAAA,GAAM,IAAA,CAAK,SAAA,CAAUxJ,EAAI,EAEhD,MAAM,IAAI,KAAA,CACR,CAAA,cAAA,EAAiBtF,CAAS,CAAA,CAAA,EAAIC,CAAS,uDAAuD6O,EAAQ,CAAA,MAAA,EAASxJ,EAAI,CAAA,iEAAA,CACrH,CAAA,CAGF,GAFAiO,EAAAA,CAAe3H,EAAI,MAAA,CAAQ3L,CAAAA,CAAW+T,EAAS,CAAA,CAE3CvT,GAAgBn1B,EAAK,CAAA,CAAG,CAC1B,IAAMgV,GAASsgB,EAAAA,CAAiBt1B,EAAAA,CAAOy0B,CAAO,CAAA,CAC9C,GAAI,CAACzf,EAAAA,CAAQ,SACTypB,CAAAA,EAAYvH,CAAAA,CAAO,UAAU,GAAA,CAAIvC,CAAS,CAAA,CAC5C6T,CAAAA,CAAM,KAAK,CACT,OAAA,CAASxzB,EAAAA,CAAO,OAAA,CAChB,UAAWA,EAAAA,CAAO,SAAA,CAClB,QAAS,CAAC,GAAGilB,EAAStF,CAAS,CAAA,CAC/B,QAAA,CAAU,IACZ,CAAC,CAAA,CAED6T,CAAAA,CAAM,IAAA,CAAK,CACT,QAASxzB,EAAAA,CAAO,OAAA,CAChB,SAAA,CAAWA,EAAAA,CAAO,UAClB,OAAA,CAAS,GACT,QAAA,CAAU,KACZ,CAAC,EAEL,CACF,CACF,CAEA,IAAMwgB,CAAAA,CAAiC,EAAC,CACxC,IAAA,GAAW,CAAE,OAAA,CAAAf,CAAAA,CAAS,SAAA,CAAAC,CAAAA,CAAW,OAAAmN,CAAO,CAAA,GAAKwG,EAAQ,MAAA,EAAO,CAAG,CAC7D,IAAIM,CAAAA,CAAazY,CAAAA,CAAIsF,CAAAA,CAAMf,CAAO,CAAA,CAC7BkU,CAAAA,GACHA,CAAAA,CAAa,CAAE,OAAQ,EAAG,CAAA,CAC1BnT,CAAAA,CAAKf,CAAO,CAAA,CAAIkU,CAAAA,CAAAA,CAElB,IAAMC,CAAAA,CAA6C,GAC7CC,CAAAA,CAAmB,IAAI,GAAA,CAC7B,IAAA,GAAW,CAACzxB,CAAAA,CAAMpX,CAAK,CAAA,GAAK6hC,CAAAA,CAQ1B,GAJA+G,CAAAA,CAAYxxB,CAAI,CAAA,CACdpX,CAAAA,CAAM,UAAY,MAAA,EAAaA,CAAAA,CAAM,OACjC,CAAE,GAAGA,EAAO,OAAA,CAASA,CAAAA,CAAM,MAAA,CAAO,GAAA,CAAK2V,IAAO,CAAE,KAAA,CAAOA,EAAG,KAAA,CAAOA,CAAE,EAAE,CAAE,CAAA,CACvE3V,CAAAA,CACFA,CAAAA,CAAM,OAAS,MAAA,EAAUA,CAAAA,CAAM,OAAQ,CACzC,IAAM0N,EAAMm7B,CAAAA,CAAiB,GAAA,CAAI7oC,CAAAA,CAAM,IAAI,GAAK,IAAI,GAAA,CACpD,IAAA,IAAW2V,CAAAA,IAAK3V,EAAM,MAAA,CAAQ0N,CAAAA,CAAI,GAAA,CAAIiI,CAAC,EACvCkzB,CAAAA,CAAiB,GAAA,CAAI7oC,EAAM,IAAA,CAAM0N,CAAG,EACtC,CAEFi7B,CAAAA,CAAW,MAAA,CAAOjU,CAAS,EAAI,CAC7B,GAAGpE,CAAAA,CAAQJ,CAAAA,CAAIuI,EAAK,IAAA,CAAMhE,CAAO,CAAA,CAAGC,CAAS,EAC7C,MAAA,CAAQkU,CACV,EAEA,IAAA,GAAW,CAACE,EAAUzkC,CAAM,CAAA,GAAKwkC,CAAAA,CAC/BF,CAAAA,CAAW,QAAU,EAAC,CACtBA,CAAAA,CAAW,KAAA,CAAMG,CAAQ,CAAA,CAAI,CAAC,GAAGzkC,CAAM,EAE3C,CAIA,IAAMs5B,EAAgClF,CAAAA,CAAK,OAAA,EAAS,OAAQhd,CAAAA,EAAM,CAChE,GAAM,CAACD,EAAGutB,CAAE,CAAA,CAAIttB,CAAAA,CAAE,SAAA,CACZutB,EAAYxY,EAAAA,CAAQN,CAAAA,CAAIsF,CAAAA,CAAMha,CAAAA,CAAE,QAAQ,CAAA,CAAGA,CAAAA,CAAE,MAAOiV,EAAAA,CAAYsY,CAAE,CAAC,CAAA,CACnEE,CAAAA,CAAYzY,EAAAA,CAAQN,CAAAA,CAAIsF,EAAMuT,CAAAA,CAAG,QAAQ,CAAA,CAAGA,CAAAA,CAAG,MAAOtY,EAAAA,CAAYjV,CAAC,CAAC,CAAA,CAC1E,OAAOwtB,CAAAA,GAAc,MAAA,EAAaC,IAAc,MAClD,CAAC,EAEKt3C,CAAAA,CAAsB,CAAE,IAAA,CAAA6jC,CAAK,EACnC,OAAImI,CAAAA,EAAWA,CAAAA,CAAQ,MAAA,CAAS,IAAGhsC,CAAAA,CAAO,OAAA,CAAUgsC,CAAAA,CAAAA,CAE7C,CAAE,GAAGhsC,CAAAA,CAAQ,OAAA,CAAS8mC,EAAK,OAAA,CAAS,KAAA,CAAOA,EAAK,KAAM,CAC/D,CAAA,CCvKO,SAASyQ,GACdlR,CAAAA,CACA,CAAE,EAAA,CAAAmR,CAAAA,CAAK,OAAQ,GAAGza,CAAQ,CAAA,CAAoD,GACvD,CACvB,OAAOya,IAAO,OAAA,CACVhB,EAAAA,CAAcnQ,EAAiBtJ,CAAO,CAAA,CACtCqT,EAAAA,CAAa/J,CAAAA,CAAiBtJ,CAAO,CAC3C,KCbM0a,EAAAA,CAAUjZ,CAAAA,EAAoD,SAAUA,CAAAA,CAOjEkZ,EAAAA,CAAc,CACzBC,CAAAA,CACAC,IACyB,CACzB,IAAMxpB,EAAQnL,CAAAA,EAA2B,CACvC,IAAMub,CAAAA,CAASD,CAAAA,CAAIqZ,CAAAA,CAAS30B,CAAE,EAC9B,GAAI,CAACub,CAAAA,CAAQ,MAAM,IAAI,KAAA,CAAM,CAAA,6BAAA,EAAgCvb,CAAE,CAAA,CAAA,CAAG,EAClE,OAAOub,CACT,EACMqZ,CAAAA,CAAM,CAAC,GAAGzpB,CAAAA,CAAKupB,CAAE,CAAA,CAAE,OAAA,CAASA,CAAE,CAAA,CACpC,GAAI,IAAI,GAAA,CAAIE,CAAG,CAAA,CAAE,IAAA,GAASA,CAAAA,CAAI,MAAA,CAC5B,MAAM,IAAI,KAAA,CAAM,iBAAiBF,CAAE,CAAA,oCAAA,CAAsC,EAE3E,IAAI7Q,CAAAA,CAAoC,IAAA,CACxC,IAAA,GAAW,CAACtkB,CAAAA,CAAOS,CAAE,CAAA,GAAK40B,CAAAA,CAAI,SAAQ,CAAG,CACvC,IAAMrZ,CAAAA,CAASpQ,EAAKnL,CAAE,CAAA,CAChB,CAAE,EAAA,CAAI60B,CAAAA,CAAK,QAAAC,CAAAA,CAAS,GAAGC,CAAK,CAAA,CAAIxZ,EACtC,GAAIuZ,CAAAA,CAAQ,IAAA,CAAK,IAAQ,IAAMF,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAGr1B,CAAK,EAAE,IAAA,CAAK,IAAQ,EAC9D,MAAM,IAAI,MACR,CAAA,cAAA,EAAiBS,CAAE,CAAA,iBAAA,EAAoB80B,CAAAA,CAAQ,KAAK,IAAI,CAAC,CAAA,QAAA,EAAWF,CAAAA,CAAI,MAAM,CAAA,CAAGr1B,CAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,MAAA,EAASm1B,CAAE,CAAA,OAAA,CAC/G,CAAA,CAEF,GADaF,EAAAA,CAAOjZ,CAAM,CAAA,IACZhc,CAAAA,GAAU,GACtB,MAAM,IAAI,KAAA,CACRA,CAAAA,GAAU,EACN,CAAA,cAAA,EAAiBS,CAAE,CAAA,wCAAA,EAA2C00B,CAAE,cAChE,CAAA,cAAA,EAAiB10B,CAAE,+CACzB,CAAA,CACF,GAAI6jB,IAAS,IAAA,CAAM,CACjBA,CAAAA,CAAOkR,CAAAA,CACP,QACF,CACA,IAAM9P,CAAAA,CAAuB,CAAE,OAAQpB,CAAAA,CAAM,GAAIkR,CAAuC,CAAA,CACxF5B,GAAqBlO,CAAK,CAAA,CAC1BpB,EAAOoB,EACT,CACA,OAAOpB,CACT,CAAA,CAIamR,EAAAA,CAAY,CAACnR,EAA4B+Q,CAAAA,GAAyC,CAC7F,IAAM9Q,CAAAA,CAAQ7D,EAAAA,CAAO4D,CAAI,CAAA,CAAI,EAAC,CAAI3D,EAAAA,CAAa2D,CAAI,CAAA,CACnD,GAAI+Q,EAAI,MAAA,GAAW9Q,CAAAA,CAAM,OAAS,CAAA,CAChC,MAAM,IAAI,KAAA,CACR,2BAA2BA,CAAAA,CAAM,MAAA,CAAS,CAAC,CAAA,4BAAA,EAA+B8Q,EAAI,MAAM,CAAA,IAAA,CACtF,CAAA,CACF,OAAO,CACL,CAAE,GAAGvU,GAAQwD,CAAI,CAAA,CAAG,GAAI+Q,CAAAA,CAAI,CAAC,CAAA,CAAG,OAAA,CAAS,EAAG,CAAA,CAC5C,GAAG9Q,CAAAA,CAAM,IAAI,CAAC,CAAE,MAAA,CAAQmR,CAAAA,CAAS,GAAGF,CAAK,CAAA,CAAGx1B,KAAW,CACrD,GAAGw1B,EACH,EAAA,CAAIH,CAAAA,CAAIr1B,CAAAA,CAAQ,CAAC,EACjB,OAAA,CAASq1B,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAGr1B,EAAQ,CAAC,CACjC,CAAA,CAAE,CACJ,CACF,ECrEO,IAAM21B,GAAkB,CAC7BpoC,CAAAA,CACA+yB,EACAzf,CAAAA,GACyB,CACzB,GAAI,CAACtT,GAAO,EAAE,MAAA,GAAUA,CAAAA,CAAAA,CAAM,OAAOA,EACrC,GAAI,CAAC+yB,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,CAAA,EAAGzf,CAAM,CAAA,kFAAA,CACX,CAAA,CACF,IAAMuB,CAAAA,CAAW2Z,CAAAA,CAAIxuB,CAAAA,CAAI,IAAA,CAAM+yB,CAAO,CAAA,CACtC,GAAI,CAACle,CAAAA,CAAU,MAAM,IAAI,KAAA,CAAM,CAAA,EAAGvB,CAAM,oCAAoCyf,CAAO,CAAA,CAAA,CAAG,EACtF,OAAOle,CACT,ECDA,IAAMwzB,EAAAA,CAAUvxB,CAAAA,GAA+B,CAAE,MAAAA,CAAAA,CAAO,QAAA,CAAU,WAAY,CAAA,CAAA,CAExEwxB,GAAa,CAAC/xB,CAAAA,CAAYgyB,CAAAA,GAA8B,CAC5D,IAAMC,CAAAA,CAAOD,CAAAA,CAAOhyB,CAAI,CAAA,CAGxB,GAAIiyB,IAAS,IAAA,CAAM,CACjB,IAAMzxB,CAAAA,CAAMR,EAAK,QAAA,EAAYA,CAAAA,CAAK,YAAA,CAClC,OAAOiC,EAAkB,QAAA,CAASzB,CAAE,CAAA,CAC/B,CAAE,MAAOR,CAAAA,CAAK,KAAA,CAAO,SAAU,QAAS,CAAA,CACzC,IACN,CACA,GAAI,WAAA,GAAeiyB,CAAAA,CAAM,CACvB,IAAMC,CAAAA,CAAOja,EAAIxU,EAAAA,CAAsBwuB,CAAAA,CAAK,QAAkB,CAAA,CAC9D,OAAIC,CAAAA,CAAa,CAAE,GAAGD,CAAAA,CAAM,QAAA,CAAUC,CAAK,CAAA,CACpC,CAAE,GAAGD,CAAAA,CAAM,QAAA,CAAUha,CAAAA,CAAItU,EAAAA,CAAoBsuB,EAAK,QAAkB,CAAE,CAC/E,CACA,GAAI,OAAOA,CAAAA,CAAK,YAAA,EAAiB,QAAA,CAAU,CACzC,IAAMC,CAAAA,CAAOja,EAAIvU,EAAAA,CAA2BuuB,CAAAA,CAAK,YAAY,CAAA,CAC7D,OAAIC,CAAAA,CAAa,CAAE,GAAGD,CAAAA,CAAM,YAAA,CAAcC,CAAK,CAAA,CACxCrnB,GAAM,CACX,CAAE,GAAGonB,CAAAA,CAAM,aAAcha,CAAAA,CAAItU,EAAAA,CAAoBsuB,EAAK,YAAY,CAAE,EACpEH,EAAAA,CAAOG,CAAAA,CAAK,KAAK,CACnB,CAAC,CACH,CACA,GAAI,OAAOA,EAAK,aAAA,EAAkB,QAAA,CAAU,CAC1C,IAAM1zC,EAAQ0zC,CAAAA,CAAK,KAAA,CACnB,OAAQA,CAAAA,CAAK,aAAA,EACX,KAAKzzB,CAAAA,CAAc,GAAA,CACjB,OAAO,CAAE,GAAGyzB,CAAAA,CAAM,aAAA,CAAezzB,CAAAA,CAAc,IAAK,CAAA,CACtD,KAAKA,CAAAA,CAAc,IAAA,CACjB,OAAO,CAAE,GAAGyzB,EAAM,aAAA,CAAezzB,CAAAA,CAAc,GAAI,CAAA,CACrD,KAAKA,CAAAA,CAAc,GAAA,CACjB,OAAO,CACL,GAAGyzB,CAAAA,CACH,aAAA,CAAezzB,EAAc,GAAA,CAC7B,SAAA,CAAW2zB,EAAAA,CAAOF,CAAAA,CAAK,UAAwBD,CAAM,CACvD,EACF,KAAKxzB,CAAAA,CAAc,MACjB,OAAO,CAAE,GAAGyzB,CAAAA,CAAM,cAAezzB,CAAAA,CAAc,QAAS,CAAA,CAC1D,KAAKA,EAAc,QAAA,CACjB,OAAO,CAAE,GAAGyzB,EAAM,aAAA,CAAezzB,CAAAA,CAAc,KAAM,CAAA,CACvD,KAAKA,EAAc,OAAA,CACjB,OAAOjgB,CAAAA,EAAS,CAAA,CACZ,MACC,CAAE,GAAG0zC,CAAAA,CAAM,aAAA,CAAezzB,EAAc,MAAA,CAAQ,KAAA,CAAOjgB,CAAAA,CAAQ,CAAE,EACxE,KAAKigB,CAAAA,CAAc,OACjB,OAAO,CAAE,GAAGyzB,CAAAA,CAAM,aAAA,CAAezzB,CAAAA,CAAc,OAAA,CAAS,MAAOjgB,CAAAA,CAAQ,CAAE,EAC3E,KAAKigB,CAAAA,CAAc,QACjB,OAAOqM,EAAAA,CAAM,CACX,GAAItsB,EAAQ,CAAA,CACR,CAAC,CAAE,GAAG0zC,CAAAA,CAAM,cAAezzB,CAAAA,CAAc,MAAA,CAAQ,KAAA,CAAOjgB,CAAAA,CAAQ,CAAE,CAAc,CAAA,CAChF,EAAC,CACL,CAAE,GAAG0zC,CAAAA,CAAM,aAAA,CAAezzB,CAAAA,CAAc,QAAS,KAAA,CAAOjgB,CAAAA,CAAQ,CAAE,CACpE,CAAC,CACL,CACF,CACA,IAAM2zC,CAAAA,CAAOja,EAAIxU,EAAAA,CAAsBwuB,CAAAA,CAAK,QAAkB,CAAA,CAC9D,OAAIC,CAAAA,CAAa,CAAE,GAAGD,CAAAA,CAAM,SAAUC,CAAK,CAAA,CACpCrnB,GAAM,CACX,CAAE,GAAGonB,CAAAA,CAAM,QAAA,CAAUha,CAAAA,CAAItU,EAAAA,CAAoBsuB,EAAK,QAAkB,CAAE,CAAA,CACtEH,EAAAA,CAAOG,EAAK,KAAK,CACnB,CAAC,CACH,EAQaE,EAAAA,CAAS,CAAC90B,EAAsB20B,CAAAA,CAAkBC,CAAAA,EAASA,IAAoB,CAC1F,GAAI,OAAO50B,CAAAA,EAAc,UAAW,OAAO,CAACA,CAAAA,CAC5C,IAAM2C,EAAO3C,CAAAA,CACb,GAAI,KAAA,CAAM,OAAA,CAAQ2C,EAAK,GAAG,CAAA,CACxB,OAAO6K,EAAAA,CAAO7K,CAAAA,CAAK,IAAoB,GAAA,CAAKuI,CAAAA,EAAM4pB,EAAAA,CAAO5pB,CAAAA,CAAGypB,CAAM,CAAC,CAAC,CAAA,CACtE,GAAI,MAAM,OAAA,CAAQhyB,CAAAA,CAAK,GAAG,CAAA,CACxB,OAAO2K,CAAAA,CAAO3K,CAAAA,CAAK,IAAoB,GAAA,CAAKuI,CAAAA,EAAM4pB,GAAO5pB,CAAAA,CAAGypB,CAAM,CAAC,CAAC,EACtE,GAAI,IAAA,GAAQhyB,CAAAA,CAAM,CAChB,IAAMoyB,CAAAA,CAAQznB,CAAAA,CAAM,CAAC3K,CAAAA,CAAK,GAAiBmyB,EAAAA,CAAOnyB,CAAAA,CAAK,KAAmBgyB,CAAM,CAAC,CAAC,CAAA,CAClF,OAAIhyB,CAAAA,CAAK,IAAA,GAAS,OAAkBoyB,CAAAA,CAC7B,CACL,GAAA,CAAK,CACHA,EACAznB,CAAAA,CAAM,CAACwnB,EAAAA,CAAOnyB,CAAAA,CAAK,GAAiBgyB,CAAM,CAAA,CAAGG,GAAOnyB,CAAAA,CAAK,IAAA,CAAmBgyB,CAAM,CAAC,CAAC,CACtF,CACF,CACF,CACA,OAAOD,EAAAA,CAAW/xB,CAAAA,CAAMgyB,CAAM,CAChC,CAAA,CAIaK,EAAAA,CAAyBJ,CAAAA,EACpCvnB,EAAeunB,CAAI,CAAA,GAAM,SACzBA,CAAAA,CAAK,KAAA,GAAU,QACfxf,EAAAA,CAAawf,CAAAA,CAAcA,CAAAA,CAAK,KAAK,EACjC,IAAA,CACAA,CAAAA,CCnGC,IAAMK,EAAAA,CAAc,CACzBnuB,CAAAA,CACA7qB,CAAAA,CACAyO,CAAAA,CACA0B,CAAAA,GACsD,CACtD,GAAI,CAACgY,GAAgB,QAAA,CAAS0C,CAAAA,CAAK,QAAQ,CAAA,CACzC,MAAM,IAAI,KAAA,CACR,IAAIA,CAAAA,CAAK,QAAQ,CAAA,8BAAA,EAAiCA,CAAAA,CAAK,KAAK,CAAA,uCAAA,CAC9D,CAAA,CACF,IAAMqP,CAAAA,CAAKrV,GAAuBgG,CAAAA,CAAK,eAAe,EAChDqiB,CAAAA,CAAWrJ,EAAAA,CAAmBp1B,EAAO0B,CAAAA,EAAK,KAAK,CAAA,CAC/C,CAAE,OAAA2C,CAAAA,CAAQ,OAAA,CAAAmmC,CAAQ,CAAA,CAAIpmB,GAC1B5K,EAAAA,CAAmB,QAAA,CAAS4C,CAAAA,CAAK,QAAQ,EAAI,CAAC7qB,CAAK,EAAIA,CACzD,CAAA,CAGA,GAAI,CAACk6B,CAAAA,GAAO,CAACgT,CAAAA,EAAYp6B,EAAO,KAAA,CAAOsR,CAAAA,EAAM,OAAOA,CAAAA,EAAM,UAAY8oB,CAAAA,CAAS,QAAA,CAAS9oB,CAAC,CAAC,GACxF,OAAO,IAAA,CACT,GAAI,CAAC8oB,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,CAAA,CAAA,EAAIriB,CAAAA,CAAK,KAAK,CAAA,kGAAA,CAChB,CAAA,CACF,IAAMquB,CAAAA,CAAQ90B,GAAe8V,CAAAA,CAAK9V,CAAAA,CAAE,WAAA,EAAY,CAAIA,EAC9C+0B,CAAAA,CAAS,IAAI,IAAIrmC,CAAAA,CAAO,MAAA,CAAQsR,GAAM,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CAAE,IAAKA,CAAAA,EAAM80B,CAAAA,CAAK90B,CAAW,CAAC,CAAC,CAAA,CAC1Fg1B,CAAAA,CAAMlM,CAAAA,CAAS,MAAA,CAAQ9oB,GAAM+0B,CAAAA,CAAO,GAAA,CAAID,EAAK90B,CAAC,CAAC,CAAC,CAAA,CACtD,OAAOuE,CAAAA,CAAkB,QAAA,CAASkC,EAAK,QAAQ,CAAA,CAC3C,CAAE,MAAA,CAAQqiB,EAAS,MAAA,CAAQ9oB,CAAAA,EAAM,CAACg1B,CAAAA,CAAI,SAASh1B,CAAC,CAAC,EAAG,WAAA,CAAa,CAAC60B,CAAQ,CAAA,CAC1E,CAAE,MAAA,CAAQG,CAAAA,CAAK,YAAaH,CAAQ,CAC1C,EC7CO,IAAMI,CAAAA,CAAoBC,GAC/B,CAAA,CAAA,EAAIA,CAAAA,CAAW,OAAA,CAAQ,IAAA,CAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CCK7B,IAAMC,CAAAA,CAAqBv5C,CAAAA,EACzBA,EAAM,OAAA,CAAQ,KAAA,CAAO,MAAM,CAAA,CAAE,QAAQ,IAAA,CAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,KAAM,KAAK,CAAA,CAYjEw5C,EAAAA,CAAa,CAACvyB,EAAewyB,CAAAA,CAAgBC,CAAAA,CAAQ,QAAkB,CAClF,GAAM,CAAChuB,CAAAA,CAAQ,GAAGiuB,CAAQ,CAAA,CAAI1yB,EAAM,KAAA,CAAM,GAAG,CAAA,CACvC2yB,CAAAA,CAAaH,EACf,CAAA,EAAGJ,CAAAA,CAAiBI,CAAK,CAAC,IAAIJ,CAAAA,CAAiB3tB,CAAM,CAAC,CAAA,CAAA,CACtD2tB,CAAAA,CAAiB3tB,CAAM,CAAA,CAC3B,GAAIiuB,CAAAA,CAAS,MAAA,GAAW,EAAG,OAAOC,CAAAA,CAClC,IAAMhtC,CAAAA,CAAO+sC,EAAS,GAAA,CAAIE,EAAO,CAAA,CAC3BlB,CAAAA,CAAO/rC,EAAK,GAAA,EAAI,CACtB,OAAO,CAACgtC,CAAAA,CAAY,GAAGhtC,CAAI,CAAA,CAAE,IAAA,CAAK,IAAI,GAAK8sC,CAAAA,CAAQ,IAAA,CAAO,KAAA,CAAA,CAASf,CACrE,EAGakB,EAAAA,CAAWj2C,CAAAA,EAAwB,CAAA,CAAA,EAAIA,CAAAA,CAAI,QAAQ,IAAA,CAAM,IAAI,CAAC,CAAA,CAAA,CAAA,CCxB3E,IAAMk2C,EAAAA,CAAW,CAAC,+BAAA,CAAiC,gCAAgC,CAAA,CAE/EC,EAAAA,CAEEC,GAAmB,IAAe,CACtC,GAAID,EAAAA,GAAc,OAAW,OAAOA,EAAAA,CACpC,QAAWE,CAAAA,IAAQC,EAAAA,GACjB,IAAA,IAAWnC,CAAAA,IAAM+B,EAAAA,CACf,GAAI,CACF,IAAMK,CAAAA,CAAUF,CAAAA,CAAKlC,CAAE,EACvB,GAAIoC,CAAAA,CAAQ,OAAA,GAAY,KAAA,CAAA,CACtB,OAAAJ,EAAAA,CAAYI,CAAAA,CAAQ,QACbJ,EAEX,CAAA,KAAQ,CAER,CAIN,CAAA,CAGMG,EAAAA,CAAU,IAAmC,CACjD,IAAMtpB,CAAAA,CAAmC,EAAC,CAC1C,GAAI,CACFA,CAAAA,CAAI,IAAA,CAAKwpB,sBAAAA,CAAc,2PAAe,CAAC,EACzC,CAAA,KAAQ,CAER,CACA,OAAI,OAAOC,EAAAA,EAAY,UAAA,EAAYzpB,EAAI,IAAA,CAAKypB,EAAO,EAC5CzpB,CACT,CAAA,CAEa0pB,GAAgB,IAAe,CAC1C,IAAMC,CAAAA,CAAUj2B,GAAc,GAAA,CAAI,uBAAuB,GAAK01B,EAAAA,EAAiB,CAC/E,GAAIO,CAAAA,GAAY,MAAA,CACd,MAAM,IAAI,MACR,sJACF,CAAA,CACF,OAAOA,CACT,ECpCA,IAAIC,EAAAA,CAESC,EAAAA,CAAuBj2B,CAAAA,EAA+B,CACjEg2B,EAAAA,CAAWh2B,EACb,EAEak2B,CAAAA,CAAmC,CAAC32B,EAAWoZ,CAAAA,CAASsK,CAAAA,GACnE+S,EAAAA,CAASz2B,CAAAA,CAAWoZ,EAASsK,CAAK,CAAA,CCLpC,IAAMkT,EAAAA,CAAgB,CAACj4B,CAAAA,CAAaya,CAAAA,GAAuC,CACzE,IAAM4E,EAAStf,CAAAA,CAAcC,CAAG,EAChC,GAAIqf,CAAAA,CACF,MAAIA,CAAAA,CAAO,KAAA,CAAQ,CAAA,CAAS,IAAI,MAAMne,EAAAA,CAAkBlB,CAAAA,CAAK,UAAU,CAAC,EAClE,IAAI,KAAA,CACR,CAAA,MAAA,EAASA,CAAG,mIAEd,CAAA,CAEF,OAAOsB,GAAetB,CAAAA,CAAKya,CAAAA,EAAS,QAAS,UAAU,CACzD,CAAA,CAGayd,EAAAA,CAAa,CACxBj2C,CAAAA,CACAw4B,CAAAA,GAEA5O,EAAAA,CAAqB5pB,CAAAA,CAAQ,CAC3B,KAAA,CAAQ3E,CAAAA,EAAUA,CAAAA,CAClB,IAAA,CAAO0iB,GAAQi4B,EAAAA,CAAcj4B,CAAAA,CAAKya,CAAO,CAAA,CACzC,IAAA,CAAM,CAACtX,CAAAA,CAAM8I,CAAAA,GAAaG,EAAAA,CAAejJ,CAAAA,CAAM8I,EAAU,UAAU,CACrE,CAAC,CAAA,CAEUksB,GACV1d,CAAAA,EACAx4B,CAAAA,EACCi2C,EAAAA,CAAWj2C,CAAAA,CAAQw4B,CAAO,CAAA,CAEjB2d,EAAAA,CAAgB3d,GAC3BpJ,EAAAA,CACE,CAAE,IAAKoJ,CAAAA,EAAS,GAAA,CAAK,QAAA,CAAUA,CAAAA,EAAS,SAAU,SAAA,CAAWA,CAAAA,EAAS,SAAU,CAAA,CAChF0d,GAAW1d,CAAO,CACpB,CAAA,CAIW4d,EAAAA,CACV5d,GACAwb,CAAAA,EAAS,CACR,IAAMqC,CAAAA,CAAa,OAAOrC,EAAK,QAAA,EAAa,QAAA,EAAY,OAAOA,CAAAA,CAAK,cAAiB,QAAA,CAC/EsC,CAAAA,CACJtC,CAAAA,CAAK,KAAA,GAAU,QACd,OAAOA,CAAAA,CAAK,IAAA,EAAS,QAAA,EAAYA,EAAK,IAAA,GAAS,EAAA,EAChD,OAAOA,CAAAA,CAAK,IAAA,EAAS,SACvB,GAAI,CAACqC,CAAAA,EAAc,WAAA,GAAerC,GAAQ,CAACsC,CAAAA,CAAS,OAAOtC,CAAAA,CAG3D,IAAMjd,EAAQkR,EAAAA,CACZ,CAAE,KAAA,CAAO,MAAA,CAAO+L,EAAK,KAAK,CAAE,EAC5Bxb,CAAAA,EAAS,GAAA,CACTA,GAAS,KACX,CAAA,CACA,GAAA,CACGzB,CAAAA,GAAU,QAAUA,CAAAA,GAAU,WAAA,GAC/B,OAAOid,CAAAA,CAAK,UAAa,QAAA,EACzBlxB,EAAAA,CAAkB,QAAA,CAASkxB,CAAAA,CAAK,QAAQ,CAAA,CAExC,MAAMxtB,EACJ,UAAA,CACA,CAAA,mBAAA,EAAsBwtB,EAAK,QAAQ,CAAA,qBAAA,EAAwBA,CAAAA,CAAK,KAAK,IACrE,gCACF,CAAA,CACF,IAAM34C,CAAAA,CAAQ46C,GAAWjC,CAAAA,CAAMxb,CAAO,CAAA,CAChCpqB,CAAAA,CACJ4lC,EAAK,MAAA,GAAW,MAAA,CAAY,OAAYiC,EAAAA,CAAWjC,CAAAA,CAAK,OAAiBxb,CAAO,CAAA,CAClF,GAAIwb,CAAAA,CAAK,SAAW,MAAA,EAAc5lC,CAAAA,EAAW,IAAA,CAA+B,OAAO,KACnF,GAAM,CAAE,IAAA,CAAMmoC,CAAAA,CAAO,KAAMC,CAAAA,CAAO,YAAA,CAAcnpB,EAAW,GAAGC,CAAK,EAAI0mB,CAAAA,CACjElhB,CAAAA,CAAU,CACd,GAAGxF,EACH,KAAA,CAAAjyB,CAAAA,CACA,GAAI24C,CAAAA,CAAK,SAAW,MAAA,EAAa,CAAE,MAAA,CAAQ,CAAE,MAAO5lC,CAAO,CAAE,CAC/D,CAAA,CACA,OAAI,OAAO4lC,CAAAA,CAAK,YAAA,EAAiB,QAAA,CACxB34C,CAAAA,EAAU,KAA8B,IAAA,CAAOy3B,CAAAA,CACjDshB,EAAAA,CAActhB,CAAO,CAC9B,CAAA,CC7DK,IAAM2jB,EAAAA,CAAW,KAAoB,EAAC,CAAA,CAGhCC,EAAAA,CAAYD,GACZE,EAAAA,CAAe,KAAoB,CAAE,EAAA,CAAI,EAAG,CAAA,CAAA,CACnDC,GAAc1V,CAAAA,EAAgC,MAAA,CAAO,IAAA,CAAKA,CAAK,EAAE,MAAA,GAAW,CAAA,CAC5E2V,EAAAA,CAAkB3V,CAAAA,EAAgC,CACtD,IAAMj5B,CAAAA,CAAO,OAAO,IAAA,CAAKi5B,CAAK,EAC9B,OAAOj5B,CAAAA,CAAK,MAAA,GAAW,CAAA,EAAKA,EAAK,CAAC,CAAA,GAAM,IAAA,EAAQ,KAAA,CAAM,QAAQi5B,CAAAA,CAAM,EAAE,CAAA,EAAKA,CAAAA,CAAM,GAAG,MAAA,GAAW,CACjG,EAGa4V,EAAAA,CAAYC,CAAAA,EAAqC,CAC5D,GAAIA,CAAAA,CAAK,IAAA,CAAKF,EAAc,EAAG,OAAOF,EAAAA,GACtC,IAAMrpB,CAAAA,CAAOypB,EAAK,MAAA,CAAQC,CAAAA,EAAQ,CAACJ,EAAAA,CAAWI,CAAG,CAAC,CAAA,CAClD,OAAI1pB,CAAAA,CAAK,MAAA,GAAW,EAAUmpB,EAAAA,EAAS,CAChCnpB,CAAAA,CAAK,MAAA,GAAW,EAAIA,CAAAA,CAAK,CAAC,CAAA,CAAI,CAAE,IAAKA,CAAK,CACnD,CAAA,CAGa2pB,CAAAA,CAAWF,GAAqC,CAC3D,GAAIA,EAAK,IAAA,CAAKH,EAAU,EAAG,OAAOH,EAAAA,EAAS,CAC3C,IAAMnpB,EAAOypB,CAAAA,CAAK,MAAA,CAAQC,CAAAA,EAAQ,CAACH,GAAeG,CAAG,CAAC,CAAA,CACtD,OAAI1pB,EAAK,MAAA,GAAW,CAAA,CAAUqpB,IAAa,CACpCrpB,CAAAA,CAAK,SAAW,CAAA,CAAIA,CAAAA,CAAK,CAAC,CAAA,CAAI,CAAE,EAAA,CAAIA,CAAK,CAClD,CAAA,CAIa4pB,GAAWhW,CAAAA,EACtB0V,EAAAA,CAAW1V,CAAK,CAAA,CAAIA,EAAQ,CAAE,GAAA,CAAKA,CAAM,CAAA,CAE9BiW,EAAAA,CAAW,CACtBze,CAAAA,CACAF,CAAAA,CACAsK,CAAAA,GACgBgU,EAAAA,CAASpe,EAAI,GAAA,CAAI,GAAA,CAAKpO,CAAAA,EAAMyrB,CAAAA,CAAezrB,EAAGkO,CAAAA,CAASsK,CAAK,CAAC,CAAC,EAEnEsU,EAAAA,CAAW,CACtBze,EACAH,CAAAA,CACAsK,CAAAA,GACgBmU,EAAQte,CAAAA,CAAI,GAAA,CAAI,GAAA,CAAKrO,CAAAA,EAAMyrB,EAAezrB,CAAAA,CAAGkO,CAAAA,CAASsK,CAAK,CAAC,CAAC,CAAA,CAElEuU,EAAAA,CAAkB,CAC7B1W,CAAAA,CACAnI,EACAsK,CAAAA,GACgB,CAWhB,GACE1C,EAAAA,CAAuBO,CAAAA,CAAmBnI,GAAS,GAAA,CAA6BA,CAAAA,EAAS,KAAK,CAAA,CAE9F,OAAOke,EAAAA,EAAU,CASnB,IAAMY,CAAAA,CAAQvB,EAAe7B,EAAAA,CAAOvT,CAAAA,CAAK,EAAA,CAAIyV,EAAAA,CAAW5d,CAAO,CAAC,CAAA,CAAGA,EAASsK,CAAK,CAAA,CAC3EyU,EAAaxB,CAAAA,CAAepV,CAAAA,CAAK,IAAA,CAAMnI,CAAAA,CAASsK,CAAK,CAAA,CACrD0U,CAAAA,CAAcP,CAAAA,CAAQ,CAACK,EAAOC,CAAU,CAAC,CAAA,CAG/C,GAAI5W,EAAK,IAAA,GAAS,MAAA,CAAW,CAC3B,IAAM8W,CAAAA,CAAW1B,EAAepV,CAAAA,CAAK,EAAA,CAAInI,CAAAA,CAASsK,CAAK,EACjD4U,CAAAA,CAAa3B,CAAAA,CAAepV,EAAK,IAAA,CAAMnI,CAAAA,CAASsK,CAAK,CAAA,CAC3D,OAAOgU,EAAAA,CAAS,CAACU,EAAaP,CAAAA,CAAQ,CAACQ,EAAUC,CAAU,CAAC,CAAC,CAAC,CAChE,CAEA,OAAOF,CACT,CAAA,CCpGO,IAAMG,EAAAA,CAAe,CAACt8C,CAAAA,CAAgB+S,CAAAA,CAAsBoqB,IAA8B,CAC/F,IAAM3Q,EAASgH,EAAAA,CAAaonB,EAAAA,CAAW7nC,EAAQoqB,CAAO,CAAC,CAAA,CACvD,OAAO3Q,IAAW,IAAA,CAAO,IAAA,CAAO8G,EAAAA,CAAUtzB,CAAAA,CAAOwsB,CAAM,CACzD,CAAA,CAEa+vB,EAAAA,CAAa,CACxBpP,EACAp6B,CAAAA,CACAoqB,CAAAA,GACgB,CAChB,GAAIgQ,CAAAA,GAAY,KAAM,OAAO,IAAA,CAC7B,IAAMxY,CAAAA,CAAOlB,GAAYmnB,EAAAA,CAAW7nC,CAAAA,CAAQoqB,CAAO,CAAC,EAC9C7Q,CAAAA,CAAQqI,CAAAA,EAAQvB,EAAAA,CAAauB,CAAAA,CAAK,CAAC,CAAA,CAAGkmB,EAAAA,CAAW1d,CAAO,CAAC,CAAA,CAC/D,OAAI,CAACxI,CAAAA,EAAQ,CAACrI,CAAAA,CAAc,KACrBI,EAAAA,CAAaf,mBAAAA,CAAMwhB,CAAO,CAAA,CAAG7gB,EAAOqI,CAAAA,CAAK,CAAC,CAAA,CAAGmmB,EAAAA,CAAa3d,CAAO,CAAA,CAAE,QAAQ,EAAE,MAAA,EACtF,ECXO,IAAMqf,EAAAA,CAAoB,CAACv1B,CAAAA,CAAe+V,IAAiC,CAChF,IAAMmH,CAAAA,CAAQld,CAAAA,CAAM,MAAM,GAAG,CAAA,CACzB7mB,CAAAA,CAAkB48B,CAAAA,CACtB,QAASnF,CAAAA,CAAIsM,CAAAA,CAAM,OAAS,CAAA,CAAGtM,CAAAA,EAAK,EAAGA,CAAAA,EAAAA,CACrCz3B,CAAAA,CAAS,CAAE,CAAC+jC,EAAMtM,CAAC,CAAC,EAAGz3B,CAAO,EAEhC,OAAOA,CACT,CAAA,CCoBA,IAAMq8C,GAAU,CAAC5xB,CAAAA,CAA0CsS,IACzDyP,EAAAA,CAAU/hB,CAAAA,CAAMsS,GAAS,GAAA,CAA6BA,CAAAA,EAAS,KAAK,CAAA,CAEhEuf,GAAUhhB,CAAAA,EAA+BA,CAAAA,GAAU,MAAA,EAAUA,CAAAA,GAAU,YAIvEihB,EAAAA,CAAUjhB,CAAAA,EACTghB,EAAAA,CAAOhhB,CAAK,EACV4e,EAAAA,EAAc,CADM,KAMhBsC,EAAAA,CAAU,CAAC31B,EAAekW,CAAAA,GACrCA,CAAAA,EAAS,GAAA,EAAOA,CAAAA,EAAS,MACrByH,EAAAA,CAAkB3d,CAAAA,CAAOkW,EAAQ,GAAA,CAAiBA,CAAAA,CAAQ,KAAK,CAAA,CAAE,GAAA,CAAK3R,CAAAA,EACpEgxB,EAAAA,CAAkBhxB,EAAK,CAAE,EAAA,CAAI,IAAK,CAAC,CACrC,EACA,EAAC,CAQMqxB,EAAAA,CAAa,CACxBhyB,EACAsS,CAAAA,GACkB,CAClB,IAAMzB,CAAAA,CAAQ+gB,GAAQ5xB,CAAAA,CAAMsS,CAAO,CAAA,CAMnC,OAAO,CACL,GALAuf,EAAAA,CAAOhhB,CAAK,CAAA,EACZA,CAAAA,GAAU,QACVgJ,EAAAA,CAAW7Z,CAAAA,CAAK,KAAA,CAAOsS,CAAAA,EAAS,IAA6BA,CAAAA,EAAS,KAAK,CAAA,EAAG,UAAA,GAC5E,MAEa,CAAC2f,EAAAA,CAAoBjyB,CAAAA,CAAK,KAAA,CAAO,CAAE,MAAA,CAAQ8xB,EAAAA,CAAOjhB,CAAK,CAAE,CAAA,CAAGyB,CAAO,CAAC,CAAA,CAAI,EAAC,CACxF,GAAGyf,EAAAA,CAAQ/xB,CAAAA,CAAK,KAAA,CAAOsS,CAAO,CAChC,CACF,CAAA,CAMM4f,EAAAA,CAAiB,CACrBn5C,EACA5D,CAAAA,CACAirB,CAAAA,CACAyQ,IACgB,CAChB,GAAIzQ,EAAK,IAAA,EAAQyxB,EAAAA,CAAOhhB,CAAK,CAAA,EAAK,MAAM,OAAA,CAAQ17B,CAAK,CAAA,CACnD,MAAMmrB,EACJ,UAAA,CACA,CAAA,4DAAA,EAA+D,IAAA,CAAK,SAAA,CAAUnrB,CAAK,CAAC,CAAA,CACtF,EACF,GAAI,CAACirB,EAAK,IAAA,EAAQ,OAAOjrB,CAAAA,EAAU,QAAA,CAAU,OAAO,CAAE,CAAC4D,CAAG,EAAG5D,EAAO,GAAGirB,CAAK,CAAA,CAC5E,GAAI,CAACyxB,EAAAA,CAAOhhB,CAAK,EAAG,OAAO,CAAE,CAAC93B,CAAG,EAAG21C,CAAAA,CAAkBv5C,CAAK,EAAG,GAAGirB,CAAK,CAAA,CAEtE,GAAI,uBAAuB,IAAA,CAAKjrB,CAAK,CAAA,CACnC,MAAMmrB,EACJ,UAAA,CACA,CAAA,6CAAA,EAAgDnrB,CAAK,CAAA,CAAA,CAAA,CACrD,8GACF,EACF,OAAO,CAAE,CAAC4D,CAAG,EAAG5D,CAAAA,CAAO,GAAGirB,CAAK,CACjC,EAOM+xB,EAAAA,CAAY,CAChBnyB,CAAAA,CACAsS,CAAAA,CACAzB,EACA17B,CAAAA,GAC6B,CAC7B,IAAM4kB,CAAAA,CAAYuY,CAAAA,EAAS,YAAY,QAAA,EACrC7Y,EAAAA,CAAc,GAAA,CAAI,mCAAmC,EACvD,OAAOO,EAAAA,CAAuBgG,EAAK,eAAe,CAAA,EAChDlG,GAAkBC,CAAQ,CAAA,EAC1B8nB,EAAAA,CAAahR,CAAAA,CAAO17B,CAAK,CAAA,CACvB,CAAE,KAAM,aAAc,CAAA,CACtB,EACN,CAAA,CAGMi9C,EAAAA,CAAc,CAACvhB,EAAmBwhB,CAAAA,GAAoD,CAC1F,GAAIxhB,CAAAA,GAAU,OAAQ,OAAO,CAAC,CAAE,OAAA,CAAS,IAAK,CAAC,CAAA,CAC/C,IAAM5oB,CAAAA,CAAoCoqC,CAAAA,CAAc,CAAC,CAAE,MAAA,CAAQ,EAAG,CAAC,EAAI,EAAC,CAC5E,OAAOR,EAAAA,CAAOhhB,CAAK,CAAA,CAAI,CAAC,GAAG5oB,CAAAA,CAAQ,CAAE,MAAA,CAAQ,EAAG,CAAC,CAAA,CAAIA,CACvD,CAAA,CAEMqqC,EAAAA,CAAYC,CAAAA,EAChB,SAAA,GAAaA,EAAQ,CAAE,OAAA,CAAS,KAAM,CAAA,CAAI,CAAE,GAAA,CAAKA,CAAAA,CAAM,MAAO,CAAA,CAOnDC,GAAiB,CAC5Bp2B,CAAAA,CACAyU,EACA0hB,CAAAA,CACAF,CAAAA,CACA/f,IACgB,CAChB,IAAM9Z,CAAAA,CAAM2Z,CAAAA,EAAoB8f,GAAoB71B,CAAAA,CAAO+V,CAAAA,CAAQG,CAAO,CAAA,CACpErqB,EAASmqC,EAAAA,CAAYvhB,CAAAA,CAAOwhB,CAAW,CAAA,CAC7C,OAAIE,CAAAA,CACKxB,CAAAA,CAAQ,CACbv4B,CAAAA,CAAG,CAAE,OAAQs5B,EAAAA,CAAOjhB,CAAK,CAAE,CAAC,EAC5B,GAAGkhB,EAAAA,CAAQ31B,CAAAA,CAAOkW,CAAO,EACzB,GAAGrqB,CAAAA,CAAO,GAAA,CAAK9S,CAAAA,EAAUqjB,EAAGrjB,CAAK,CAAC,CACpC,CAAC,CAAA,CAEIy7C,GAAS,CACd,GAAI/f,CAAAA,GAAU,MAAA,CAAS,EAAC,CAAI,CAACrY,CAAAA,CAAG,CAAE,IAAKs5B,EAAAA,CAAOjhB,CAAK,CAAE,CAAC,CAAC,CAAA,CACvD,GAAG5oB,EAAO,GAAA,CAAK9S,CAAAA,EAAUqjB,EAAG85B,EAAAA,CAASn9C,CAAK,CAAC,CAAC,CAC9C,CAAC,CACH,CAAA,CAGMs9C,EAAAA,CAAoB,CAACzyB,CAAAA,CAAYsS,CAAAA,GAA2C,CAChF,GAAI,CAAC9D,EAAAA,CAAgBxO,CAAI,EAAG,MAAMH,EAAAA,CAAiBG,EAAK,KAAK,CAAA,CAC7D,IAAMxH,CAAAA,CAAM2Z,GAAoB8f,EAAAA,CAAoBjyB,CAAAA,CAAK,KAAA,CAAOmS,CAAAA,CAAQG,CAAO,CAAA,CAEzEogB,CAAAA,CACJrgB,EAAAA,CAAM,CAAE,GAAGrS,CAAAA,CAAM,KAAA,CAAO,UAAW,CAAA,CAAgB,CAAE,SAAU,IAAK,CAAC,CAAA,GAAM,IAAA,CACvE0Z,EAAOqY,EAAAA,CAAQ/xB,CAAAA,CAAK,KAAA,CAAOsS,CAAO,EAGxC,OAAIuH,EAAAA,CAAW7Z,CAAAA,CAAK,KAAA,CAAOsS,GAAS,GAAA,CAA6BA,CAAAA,EAAS,KAAK,CAAA,EAAG,UAAA,CAC5EogB,EAAoB3B,CAAAA,CAAQrX,CAAI,CAAA,CAC7BA,CAAAA,CAAK,OAASsX,EAAAA,CAAQD,CAAAA,CAAQrX,CAAI,CAAC,EAAI6W,EAAAA,EAAS,CAElDmC,CAAAA,CAAc3B,CAAAA,CAAQ,CAACv4B,CAAAA,CAAG,CAAE,GAAI,IAAK,CAAC,EAAG,GAAGkhB,CAAI,CAAC,CAAA,CAAIlhB,EAAG,CAAE,KAAA,CAAO,IAAK,CAAC,CAChF,CAAA,CAEam6B,EAAAA,CAAiB,CAAC3yB,CAAAA,CAAYsS,IAA2C,CACpF,IAAM9Z,EAAM2Z,CAAAA,EAAoB8f,EAAAA,CAAoBjyB,EAAK,KAAA,CAAOmS,CAAAA,CAAQG,CAAO,CAAA,CACzEzB,EAAQ+gB,EAAAA,CAAQ5xB,CAAAA,CAAMsS,CAAO,CAAA,CAC7Bue,EAAO,IAAMmB,EAAAA,CAAWhyB,CAAAA,CAAMsS,CAAO,EACrC+f,CAAAA,CAAc3Q,EAAAA,CAClB1hB,EACAsS,CAAAA,EAAS,GAAA,CACTA,GAAS,KACX,CAAA,CAEA,GAAIzB,CAAAA,GAAU,WAAY,OAAO4hB,EAAAA,CAAkBzyB,CAAAA,CAAMsS,CAAO,EAEhE,OAAQtS,CAAAA,CAAK,QAAA,EAEX,KAAK5F,CAAAA,CAAS,MAAA,CACZ,OAAOyW,CAAAA,GAAU,MAAA,CAASmgB,GAAQx4B,CAAAA,CAAG,CAAE,MAAA,CAAQ,IAAK,CAAC,CAAC,CAAA,CAAIA,CAAAA,CAAG,CAAE,IAAKs5B,EAAAA,CAAOjhB,CAAK,CAAE,CAAC,EACrF,KAAKzW,CAAAA,CAAS,UAAW,CACvB,IAAMuzB,EAASkD,CAAAA,EAAK,CACpB,OAAOlD,CAAAA,CAAO,OAASoD,CAAAA,CAAQpD,CAAM,CAAA,CAAIn1B,CAAAA,CAAG,CAAE,MAAA,CAAQs5B,EAAAA,CAAOjhB,CAAK,CAAE,CAAC,CACvE,CAIA,KAAKzW,CAAAA,CAAS,OAAA,CACd,KAAKA,CAAAA,CAAS,QAAA,CACZ,OAAOo4B,EAAAA,CACLxyB,EAAK,KAAA,CACL6Q,CAAAA,CACA7Q,EAAK,QAAA,GAAa5F,CAAAA,CAAS,QAC3Bi4B,CAAAA,CACA/f,CACF,CACJ,CAIA,IAAMn9B,CAAAA,CAAQy9C,EAAAA,CAAiB5yB,EAAMsS,CAAO,CAAA,CAC5C,GAAIhE,EAAAA,CAAatO,CAAAA,CAAM7qB,CAAK,CAAA,CAC1B,OAAO47C,CAAAA,CAAQjzB,CAAAA,CAAkB,QAAA,CAASkC,CAAAA,CAAK,QAAQ,CAAA,CAAI6wB,CAAAA,EAAK,CAAI,EAAE,CAAA,CAExE,GAAIhgB,IAAU,MAAA,EAAUxT,EAAAA,CAAc,SAAS2C,CAAAA,CAAK,QAAQ,CAAA,EAAK,KAAA,CAAM,QAAQ7qB,CAAK,CAAA,CAClF,OAAO06C,CAAAA,CAAephB,GAAezO,CAAAA,CAAM7qB,CAAK,CAAA,CAAGm9B,CAAO,EAE5D,GAAIzB,CAAAA,GAAU,QAAU,KAAA,CAAM,OAAA,CAAQ17B,CAAK,CAAA,EAAKA,CAAAA,CAAM,QAAA,CAAS,IAAI,EACjE,MAAMmrB,CAAAA,CAAe,UAAA,CAAY,CAAA,wBAAA,EAA2BN,EAAK,KAAK,CAAA,CAAA,CAAG,CAAA,CAG3E,GACE6Q,IAAU,MAAA,EACV7W,EAAAA,CAAuBgG,EAAK,eAAe,CAAA,EAC3C6hB,GAAa,MAAA,CAAQ1sC,CAAK,CAAA,CAE1B,MAAMmrB,EAAe,UAAA,CAAY,CAAA,2CAAA,EAA8CN,CAAAA,CAAK,KAAK,GAAG,CAAA,CAG9F,IAAM6yB,CAAAA,CACJhiB,CAAAA,GAAU,OACNgJ,EAAAA,CAAW7Z,CAAAA,CAAK,MAAOsS,CAAAA,EAAS,GAAA,CAA6BA,GAAS,KAAK,CAAA,CAC3E,MAAA,CACAwgB,CAAAA,CAAUD,EACZ1E,EAAAA,CAAYnuB,CAAAA,CAAM7qB,CAAAA,CAAO09C,CAAAA,CAAWvgB,GAAS,GAA2B,CAAA,CACxE,IAAA,CACJ,GAAIwgB,EAAS,CACX,IAAMtpB,EAAShR,CAAAA,CAAG,CAAE,GAAIs6B,CAAAA,CAAQ,MAAO,CAAC,CAAA,CACxC,OAAOA,CAAAA,CAAQ,WAAA,CAAc/B,CAAAA,CAAQ,CAACvnB,EAAQ,GAAGqnB,CAAAA,EAAM,CAAC,EAAIrnB,CAC9D,CAKA,GAAInM,EAAAA,CAAc,QAAA,CAAS2C,EAAK,QAAQ,CAAA,CAAG,CACzC,GAAM,CAAE,MAAA,CAAA/X,CAAAA,CAAQ,OAAA,CAAAmmC,CAAQ,EAAIpmB,EAAAA,CAAU7yB,CAAK,CAAA,CAErCk6B,CAAAA,CAAK8iB,GAAUnyB,CAAAA,CAAMsS,CAAAA,CAASzB,EAAO5oB,CAAM,CAAA,CAC3CuhB,EAASqoB,EAAAA,CAAOhhB,CAAK,CAAA,CACvB7Q,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,EAAA,CACzB22B,EAAQ9oC,CAAAA,CAAO,GAAA,CAAKsR,GAAMf,CAAAA,CAAG05B,EAAAA,CAAe,QAAA,CAAU34B,CAAAA,CAAG8V,EAAIwB,CAAK,CAAC,CAAC,CAAC,CAAA,CACrE+f,GAAS3oC,CAAAA,CAAO,GAAA,CAAKsR,CAAAA,EAAMf,CAAAA,CAAG05B,GAAe,KAAA,CAAO34B,CAAAA,CAAG8V,CAAAA,CAAIwB,CAAK,CAAC,CAAC,CAAC,CAAA,CACrErY,CAAAA,CAAG,CAAE,CAACwH,CAAAA,CAAK,QAAQ,EAAG/X,CAAAA,CAAQ,GAAGonB,CAAG,CAAC,CAAA,CACzC,OAAIrP,EAAK,QAAA,GAAa5F,CAAAA,CAAS,EAAA,CAAWg0B,CAAAA,CAAU2C,EAAQ,CAACvnB,CAAAA,CAAQ,GAAGqnB,CAAAA,EAAM,CAAC,CAAA,CAAIrnB,EAC5E4kB,CAAAA,CAAUwC,EAAAA,CAAS,CAACpnB,CAAAA,CAAQhR,CAAAA,CAAG,CAAE,GAAA,CAAKs5B,GAAOjhB,CAAK,CAAE,CAAC,CAAC,CAAC,CAAA,CAAIkgB,CAAAA,CAAQ,CAACvnB,CAAAA,CAAQ,GAAGqnB,CAAAA,EAAM,CAAC,CAC/F,CAIA,IAAMxtB,CAAAA,CAAY3H,CAAAA,EAAkC,CAClD,GAAI,CAACm2B,EAAAA,CAAOhhB,CAAK,CAAA,EAAKnV,CAAAA,GAAatB,EAAS,QAAA,CAC1C,OAAO5B,CAAAA,CAAGu6B,EAAAA,CAAiB,CAAE,GAAG/yB,CAAAA,CAAM,SAAUtE,CAAqB,CAAA,CAAG4W,CAAO,CAAC,CAAA,CAClF,IAAM3D,CAAAA,CAASnW,EAAG,CAAE,cAAA,CAAgB,CAACw6B,EAAAA,CAAWhzB,EAAM7qB,CAAAA,CAAOm9B,CAAAA,CAASzB,CAAK,CAAC,CAAE,CAAC,CAAA,CAC/E,OAAO,OAAO17B,CAAAA,EAAU,SACpB47C,CAAAA,CAAQ,CAACv4B,CAAAA,CAAGu6B,EAAAA,CAAiB,CAAE,GAAG/yB,CAAAA,CAAM,QAAA,CAAAtE,CAAS,EAAG4W,CAAO,CAAC,CAAA,CAAG3D,CAAM,CAAC,CAAA,CACtEA,CACN,EACA,GAAI3O,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,QAAA,CAAU,OAAOiJ,CAAAA,CAASjJ,EAAS,QAAQ,CAAA,CAM1E,IAAM64B,CAAAA,CAAel1B,GAAyB,QAAA,CAASiC,CAAAA,CAAK,QAAQ,CAAA,CAChEV,GAAqBU,CAAAA,CAAK,QAAQ,EAClChC,EAAAA,CAAwB,QAAA,CAASgC,EAAK,QAAQ,CAAA,CAC5C5F,CAAAA,CAAS,OAAA,CACT,OACN,GAAI64B,CAAAA,CAAc,CAChB,GAAIpB,EAAAA,CAAOhhB,CAAK,CAAA,CACd,MAAMvQ,CAAAA,CACJ,UAAA,CACA,IAAIN,CAAAA,CAAK,QAAQ,wBAAwBA,CAAAA,CAAK,KAAK,IACnD,gCACF,CAAA,CACF,OAAO+wB,CAAAA,CAAQ,CAACC,EAAAA,CAAQ3tB,CAAAA,CAAS4vB,CAAY,CAAC,EAAG,GAAGpC,CAAAA,EAAM,CAAC,CAC7D,CAEA,IAAM1e,EAAS3Z,CAAAA,CAAGu6B,EAAAA,CAAiB/yB,EAAMsS,CAAO,CAAC,CAAA,CAEjD,OAAItS,EAAK,QAAA,GAAa5F,CAAAA,CAAS,MAAA,EAAUjlB,CAAAA,GAAU,KAC1C47C,CAAAA,CAAQ,CAAC5e,CAAAA,CAAQ,GAAG4f,GAAQ/xB,CAAAA,CAAK,KAAA,CAAOsS,CAAO,CAAC,CAAC,EACtDtS,CAAAA,CAAK,QAAA,GAAa5F,CAAAA,CAAS,SAAA,EAAayW,IAAU,MAAA,CAC7C17B,CAAAA,GAAU,IAAA,CACb67C,EAAAA,CAAQx4B,EAAG,CAAE,MAAA,CAAQ,IAAK,CAAC,CAAC,CAAA,CAC5Bu4B,CAAAA,CAAQ,CAACC,EAAAA,CAAQx4B,CAAAA,CAAG,CAAE,MAAA,CAAQrjB,CAAM,CAAC,CAAC,EAAG,GAAG07C,CAAAA,EAAM,CAAC,EAClD7wB,CAAAA,CAAK,QAAA,GAAa5F,CAAAA,CAAS,SAAA,EAAajlB,IAAU,IAAA,CACrD47C,CAAAA,CAAQ,CAAC5e,CAAAA,CAAQ,GAAG0e,GAAM,CAAC,CAAA,CAC3B1e,CACN,EAGMygB,EAAAA,CAAmB,CAAC5yB,CAAAA,CAAYsS,CAAAA,GAAuC,CAC3E,IAAMn9B,CAAAA,CAAQitC,EAAAA,CACZpiB,CAAAA,CACA+vB,GAAW/vB,CAAAA,CAAMsS,CAAO,EACxBsH,EAAAA,CAAS5Z,CAAAA,CAAK,MAAOsS,CAAAA,EAAS,GAAA,CAA6BA,CAAAA,EAAS,KAAK,EACzE,UAAA,CACA,IAAM2d,EAAAA,CAAa3d,CAAO,EAAE,QAC9B,CAAA,CACA,OAAOtS,CAAAA,CAAK,SAAW,MAAA,CAAY7qB,CAAAA,CAAQs8C,GAAat8C,CAAAA,CAAO6qB,CAAAA,CAAK,OAAQsS,CAAO,CACrF,CAAA,CAIaygB,EAAAA,CAAmB,CAAC/yB,CAAAA,CAAYsS,CAAAA,GAAuC,CAClF,IAAM7C,EAAQ1P,EAAAA,CAAiBC,CAAI,CAAA,CACnC,GAAIyP,EAAO,MAAMA,CAAAA,CACjB,IAAMoB,CAAAA,CAAQ+gB,EAAAA,CAAQ5xB,EAAMsS,CAAO,CAAA,CAC7B4gB,CAAAA,CAAM,IAAMN,GAAiB5yB,CAAAA,CAAMsS,CAAO,EAC1CjD,CAAAA,CAAMl6B,CAAAA,EAAmBg9C,GAAUnyB,CAAAA,CAAMsS,CAAAA,CAASzB,CAAAA,CAAO17B,CAAK,EAE9D4R,CAAAA,CAASsV,CAAAA,EAA+C,CAC5D,IAAMlnB,CAAAA,CAAQ+9C,GAAI,CAClB,GAAIriB,CAAAA,GAAU,MAAA,CAAQ,CACpB,GAAIxU,CAAAA,GAAO,UAAA,CACT,MAAM,IAAI,KAAA,CAAM,CAAA,UAAA,EAAaA,CAAE,CAAA,8BAAA,EAAiC2D,EAAK,KAAK,CAAA,EAAA,CAAI,EAChF,OAAO,CAAE,IAAK7qB,CAAM,CACtB,CACA,IAAM4D,EAAM84C,EAAAA,CAAOhhB,CAAK,CAAA,CAAIsiB,EAAAA,CAAW92B,CAAE,CAAA,CAAIA,CAAAA,CAEvCuQ,CAAAA,CAAU,OAAOz3B,GAAU,QAAA,CAAWu5C,CAAAA,CAAkBv5C,CAAK,CAAA,CAAIA,CAAAA,CACvE,OAAO,CAAE,CAAC4D,CAAG,EAAG6zB,EAAS,GAAGyC,CAAAA,CAAGl6B,CAAK,CAAE,CACxC,CAAA,CAEMi+C,CAAAA,CAAYnzB,EAAAA,CAAiBD,CAAAA,CAAK,SAAUkzB,CAAAA,EAAK,EACvD,GAAIE,CAAAA,CAAW,MAAMA,CAAAA,CACrB,IAAMC,CAAAA,CAAav3B,EAAAA,CAAakE,EAAK,QAAA,CAAU,OAAO,CAAA,CACtD,GAAIqzB,GAAcz2B,EAAAA,CAAkB,QAAA,CAASoD,CAAAA,CAAK,QAAQ,EAAG,OAAO,CAAE,CAACqzB,CAAU,EAAGH,GAAM,CAAA,CAE1F,OAAQlzB,CAAAA,CAAK,UACX,KAAK5F,CAAAA,CAAS,MAAA,CAAQ,CACpB,IAAMjlB,CAAAA,CAAQ+9C,CAAAA,EAAI,EAAKpB,GAAOjhB,CAAK,CAAA,CACnC,OAAOqhB,EAAAA,CAAe,QAAA,CAAU/8C,EAAOk6B,CAAAA,CAAGl6B,CAAK,CAAA,CAAG07B,CAAK,CACzD,CACA,KAAKzW,CAAAA,CAAS,SAAA,CAAW,CACvB,IAAMjlB,CAAAA,CAAQ+9C,CAAAA,EAAI,EAAKpB,GAAOjhB,CAAK,CAAA,CACnC,OAAOqhB,EAAAA,CAAe,KAAA,CAAO/8C,EAAOk6B,CAAAA,CAAGl6B,CAAK,CAAA,CAAG07B,CAAK,CACtD,CAEA,KAAKzW,CAAAA,CAAS,EAAA,CACd,KAAKA,CAAAA,CAAS,KAAA,CACZ,OAAO,CAAE,CAAC4F,CAAAA,CAAK,QAAQ,EAAGkzB,CAAAA,EAAM,EAClC,KAAK94B,CAAAA,CAAS,QAAA,CACZ,OAAOrT,EAAM,UAAU,CAAA,CACzB,KAAKqT,CAAAA,CAAS,UAAA,CACZ,OAAOrT,CAAAA,CAAM,YAAY,CAAA,CAC3B,KAAKqT,EAAS,QAAA,CACZ,OAAOrT,EAAM,UAAU,CAAA,CACzB,KAAKqT,CAAAA,CAAS,OAAA,CACd,KAAKA,CAAAA,CAAS,WACZ,MAAMkG,CAAAA,CAAe,UAAA,CAAY,CAAA,CAAA,EAAIN,EAAK,QAAQ,CAAA,CAAA,CAAA,CAAK,8BAA8B,CAAA,CAGvF,KAAK5F,CAAAA,CAAS,OAAA,CACd,KAAKA,CAAAA,CAAS,UAAA,CAAY,CACxB,GAAM,CAACgW,CAAAA,CAAK7E,CAAG,EAAI7D,EAAAA,CAAUC,EAAAA,CAASurB,CAAAA,EAAI,CAAGlzB,EAAK,QAAQ,CAAC,CAAA,CAC3D,OAAO,CAAE,GAAA,CAAKoQ,CAAAA,CAAK,IAAK7E,CAAI,CAC9B,CACA,QAEE,MAAM,IAAI,KAAA,CAAM,aAAavL,CAAAA,CAAK,QAAQ,CAAA,4BAAA,CAA8B,CAC5E,CACF,CAAA,CAKMgzB,EAAAA,CAAa,CACjBhzB,CAAAA,CACA7qB,EACAm9B,CAAAA,CACAzB,CAAAA,GACY,CACZ,GAAI,OAAO17B,GAAU,QAAA,EAAYA,CAAAA,GAAU,IAAA,CACzC,MAAM,IAAI,KAAA,CACR,CAAA,qDAAA,EAAwD6qB,CAAAA,CAAK,KAAK,qDACpE,CAAA,CACF,GAAImyB,EAAAA,CAAUnyB,CAAAA,CAAMsS,EAASzB,CAAAA,CAAO17B,CAAK,EAAE,IAAA,CACzC,MAAMmrB,EAAe,UAAA,CAAY,CAAA,6CAAA,EAAgDN,CAAAA,CAAK,KAAK,GAAG,CAAA,CAChG,OAAO7qB,CACT,CAAA,CAEMg+C,GAAa,CACjB,QAAA,CAAU,iBAAA,CACV,UAAA,CAAY,qBACZ,QAAA,CAAU,kBACZ,EAQalB,EAAAA,CAAsB,CACjC71B,EACA+V,CAAAA,CACAG,CAAAA,GACgB,CAChB,GAAI,CAACA,CAAAA,EAAS,GAAA,EAAO,CAACA,CAAAA,EAAS,MAC7B,OAAOqf,EAAAA,CAAkBv1B,CAAAA,CAAO+V,CAAM,EAGxC,IAAMmhB,CAAAA,CAAa9Z,GAAcpd,CAAAA,CAAOkW,CAAAA,CAAQ,IAAiBA,CAAAA,CAAQ,KAAK,CAAA,CACxE6W,CAAAA,CAASmK,EAAW,IAAA,CAAK,IAAA,CAAM3yB,CAAAA,EAAQA,CAAAA,CAAI,MAAM,MAAM,CAAA,CAC7D,GAAIwoB,CAAAA,CAAQ,MAAMzoB,EAAAA,CAAetE,CAAAA,CAAO+sB,CAAM,CAAA,CAC9C,IAAM7P,EAAQld,CAAAA,CAAM,KAAA,CAAM,GAAG,CAAA,CAE7B,OAAQk3B,CAAAA,CAAW,IAAA,EACjB,KAAK,UAAA,CACL,KAAK,QAAA,CACH,OAAO3B,EAAAA,CAAkBv1B,CAAAA,CAAO+V,CAAM,CAAA,CAExC,KAAK,SACH,OAAOqe,EAAAA,GAET,KAAK,aAAA,CACH,MAAM5vB,EAAAA,CAAgBxE,EAAOk3B,CAAAA,CAAW,MAAM,CAAA,CAEhD,KAAK,YAAa,CAEhB,IAAMC,CAAAA,CAAa,CAAE,KAAMD,CAAAA,CAAW,QAAA,CAAU,GAAInhB,CAAkB,CAAA,CAChEqhB,EAAgBla,CAAAA,CAAM,KAAA,CAAM,CAAA,CAAGga,CAAAA,CAAW,SAAS,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CACnE,OAAO3B,EAAAA,CAAkB6B,CAAAA,CAAeD,CAAU,CACpD,CACF,CACF,CAAA,CC3aO,IAAME,EAAAA,CAAY,CACvBr3B,EACA9W,CAAAA,CACA6uB,CAAAA,CACAnU,CAAAA,GACc,CACd,IAAM3H,CAAAA,CAAW+D,CAAAA,CAAM,KAAA,CAAM,GAAG,EAC1B0d,CAAAA,CAAON,EAAAA,CAAcpd,CAAAA,CAAO9W,CAAAA,CAAK6uB,CAAK,CAAA,CAC5C,GAAI2F,EAAK,IAAA,GAAS,QAAA,EAAYA,EAAK,KAAA,CAAM,IAAA,GAAS,QAAA,CAAU,CAC1D,IAAMnF,CAAAA,CAAKmF,CAAAA,CAAK,IAAA,CAAK,EAAA,CAAG,EAAE,CAAA,EAAG,KAAA,CAAM,IAAA,EAAQ3F,CAAAA,CAC3C,MAAM,IAAI,KAAA,CACR,UAAU9b,CAAAA,CAASyhB,CAAAA,CAAK,KAAK,MAAM,CAAC,CAAA,8BAAA,EAAiCnF,CAAE,MAAM3U,CAAI,CAAA,0BAAA,CACnF,CACF,CACA,IAAMmpB,CAAAA,CAASrP,CAAAA,CAAK,IAAA,CAAK,IAAA,CAAMnZ,GAAQA,CAAAA,CAAI,KAAA,CAAM,MAAM,CAAA,CACvD,GAAIwoB,EACF,MAAM,IAAI,KAAA,CACR,CAAA,oBAAA,EAAuBA,EAAO,KAAK,CAAA,WAAA,EAAc/sB,CAAK,CAAA,wEAAA,EACC4D,EAAK,WAAA,EAAa,CAAA,CAAA,CAC3E,CAAA,CACF,GAAI,CAAC8Z,CAAAA,CAAK,MAAM,MAAA,CACd,MAAM,IAAI,KAAA,CACR,CAAA,OAAA,EAAUA,CAAAA,CAAK,MAAM,sCAAsCA,CAAAA,CAAK,KAAK,CAAA,GAAA,EAAM9Z,CAAI,uDACjF,CAAA,CACF,IAAMje,CAAAA,CAAOojC,EAAAA,CAAa7/B,EAAKw0B,CAAAA,CAAK,KAAA,CAAOA,EAAK,KAAK,CAAA,CACrD,GAAI,CAAC/3B,CAAAA,CAAM,CACT,IAAM2xC,EAAc,MAAA,CAAO,MAAA,CAAOxf,EAAQ5uB,CAAAA,CAAKw0B,CAAAA,CAAK,MAAM,IAAI,CAAA,EAAG,MAAA,EAAU,EAAE,CAAA,CAAE,IAAA,CAC5EgD,GAAMA,CAAAA,CAAE,IAAA,GAAS,UAAYA,CAAAA,CAAE,IAAA,GAAShD,CAAAA,CAAK,KAAA,EAASgD,EAAE,MAAA,EAAU,CAACA,CAAAA,CAAE,UAAA,EAAY,MACpF,CAAA,CACA,MAAM,IAAI,KAAA,CACR4W,EACI,CAAA,CAAA,EAAI5Z,CAAAA,CAAK,KAAK,CAAA,CAAA,EAAIA,CAAAA,CAAK,MAAM,CAAA,wCAAA,EAA2C9Z,CAAI,CAAA,0GAAA,CAAA,CAE5E,CAAA,0CAAA,EAA6C8Z,EAAK,KAAK,CAAA,OAAA,EAAUA,CAAAA,CAAK,KAAA,CAAM,IAAI,CAAA,2DAAA,CAEtF,CACF,CACA,GAAI/3B,EAAK,MAAA,CAAS,CAAA,CAChB,MAAM,IAAI,KAAA,CACR,GAAGie,CAAI,CAAA,yCAAA,EAA4C8Z,CAAAA,CAAK,KAAK,IAAIA,CAAAA,CAAK,MAAM,CAAA,yBAAA,CAC9E,CAAA,CACF,OAAO,CACL,OAAA,CAASA,CAAAA,CAAK,IAAA,CAAK,IAAKnZ,CAAAA,EAAQA,CAAAA,CAAI,KAAK,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CACnD,MAAA,CAAQmZ,CAAAA,CAAK,KAAA,CAAM,KACnB,SAAA,CAAW/3B,CAAAA,CAAK,CAAC,CAAA,CAAE,KACnB,SAAA,CAAWA,CAAAA,CAAK,CAAC,CAAA,CAAE,KACrB,CACF,CAAA,CAQa4xC,GAAkB,CAC7B/W,CAAAA,CACAj1B,EACAqzB,CAAAA,CACA4Y,CAAAA,CACAC,CAAAA,GACgB,CAChB,IAAMt7B,CAAAA,CAAoB,CACxB,SAAA,CAAW,SAAA,CACX,MAAO5Q,CAAAA,CAAK,MAAA,CACZ,IAAA,CAAM,CAAE,GAAI,CAACA,CAAAA,CAAK,SAAS,CAAA,CAAG,KAAA,CAAAqzB,EAAO,MAAA,CAAA4Y,CAAO,CAAA,CAC5C,OAAA,CAASjsC,EAAK,SAChB,CAAA,CACMkQ,CAAAA,CAAM,CAAE,OAAQ+kB,CAAAA,CAAM,KAAA,CAAM,MAAO,CAAA,CACzCA,EAAM,KAAA,CAAM,IAAA,CAAKrkB,CAAI,CAAA,CACrB,IAAMu7B,EAAa,CAAE,CAACnsC,CAAAA,CAAK,SAAS,EAAG,CAAE,EAAA,CAAIkQ,CAAI,CAAE,EAC7Ck8B,CAAAA,CAAWF,CAAAA,CAAa7C,EAAAA,CAAQ8C,CAAU,EAAIA,CAAAA,CACpD,OAAOnsC,EAAK,OAAA,CAAUgqC,EAAAA,CAAkBhqC,EAAK,OAAA,CAASosC,CAAQ,CAAA,CAAIA,CACpE,EC9EO,IAAMC,EAAAA,CAAqB,CAChCh0B,CAAAA,CACAsS,CAAAA,CACAsK,IACgB,CAChB,GAAIjM,EAAAA,CAAU3Q,CAAI,EAAG,CACnB,IAAM+b,EAAY9J,EAAAA,CAAcjS,CAAI,EACpC,GAAI,CAAC+b,CAAAA,CAAW,MAAMtb,GAAkB,UAAU,CAAA,CAClD,OAAOovB,CAAAA,CAAe9T,EAAWzJ,CAAAA,CAASsK,CAAK,CACjD,CAEA,GAAI,CAACtK,CAAAA,EAAS,KAAO,CAACA,CAAAA,EAAS,OAAS,CAACsK,CAAAA,CACvC,MAAM,IAAI,MACR,oHAEF,CAAA,CAGF,GAAI,CAAC1f,GAAgB,QAAA,CAAS8C,CAAAA,CAAK,SAAA,CAAU,IAAI,EAC/C,MAAMG,EAAAA,CAAqBH,EAAK,SAAA,CAAU,IAAI,EAChD,GAAI,CAACA,CAAAA,CAAK,SAAA,CAAU,MAClB,MAAM,IAAI,KAAA,CACR,mGACF,EAGF,OAAOi0B,EAAAA,CACLj0B,CAAAA,CACAsS,CAAAA,CACAsK,CACF,CACF,CAAA,CAEMqX,GAAqB,CACzBj0B,CAAAA,CACAsS,EACAsK,CAAAA,GACgB,CAChB,IAAMj1B,CAAAA,CAAO8rC,GAAUzzB,CAAAA,CAAK,KAAA,CAAOsS,CAAAA,CAAQ,GAAA,CAAKA,EAAQ,KAAA,CAAO,iBAAiB,CAAA,CAGhF,GAAItS,EAAK,SAAA,EAAaka,EAAAA,CAAuBla,EAAK,SAAA,CAAWsS,CAAAA,CAAQ,IAAK3qB,CAAAA,CAAK,MAAM,CAAA,CACnF,OAAO6oC,IAAU,CACnB,IAAMtd,CAAAA,CAAYlT,CAAAA,CAAK,UAAU,KAAA,EAAS,EAAA,CACpC0F,CAAAA,CAAO0O,EAAAA,CAAQ9B,EAAQ,GAAA,CAAK3qB,CAAAA,CAAK,OAAQurB,CAAS,CAAA,CACxD,GAAI,CAACxN,CAAAA,CACH,MAAM,IAAI,MAAM,CAAA,iBAAA,EAAoBwN,CAAS,CAAA,2BAAA,EAA8BvrB,CAAAA,CAAK,MAAM,CAAA,EAAA,CAAI,CAAA,CAC5F,GAAI+d,CAAAA,CAAK,OAAS,QAAA,EAAYoT,EAAAA,CAAYpT,CAAI,CAAA,CAC5C,MAAM,IAAI,KAAA,CACR,CAAA,iBAAA,EAAoBwN,CAAS,CAAA,YAAA,EAAevrB,EAAK,MAAM,CAAA,gCAAA,EAAmC+d,CAAAA,CAAK,IAAA,GAAS,SAAW,MAAA,CAAS,CAAA,CAAA,EAAIA,CAAAA,CAAK,IAAI,GAAG,CAAA,CAAA,CAC9I,CAAA,CAIF,IAAMooB,CAAAA,CAAOoC,EAAAA,CAAW5d,CAAO,CAAA,CAAEtS,CAA0C,CAAA,CAC3E,GAAI8tB,IAAS,IAAA,CAAM,OAAO2C,IAAa,CAGvC,IAAMyD,EACJhlB,EAAAA,CAAW4e,CAAAA,CAAyB,CAAC,EAAE,CAAA,CAAG,MAAA,CAAW,OAAW,EAAC,CAAG,CAAE,KAAA,CAAO,CAAE,CAAC,CAAA,GAAM,KAClFl1B,CAAAA,CAAUs7B,CAAAA,CAAalG,EAAAA,CAAOF,CAAiB,EAAIA,CAAAA,CACnD3b,CAAAA,CAAS4gB,EAAAA,CAAiBn6B,CAAAA,CAAQ0Z,CAAO,CAAA,CACzC6hB,CAAAA,CAAY,CAAE,CAACn0B,CAAAA,CAAK,UAAU,IAAA,GAAS,KAAA,CAAQ,MAAA,CAAS,MAAM,EAAGmS,CAAO,CAAA,CAExEyhB,CAAAA,CAAS51B,EAAAA,CAAwB,SAASpF,CAAAA,CAAO,QAAQ,CAAA,CAC3Do4B,EAAAA,CAAQ,CAAE,CAAC9d,CAAS,EAAGihB,CAAU,CAAC,EAClC,CAAE,CAACjhB,CAAS,EAAGihB,CAAU,CAAA,CAEvBnZ,CAAAA,CAAQhb,CAAAA,CAAK,SAAA,CACf6vB,EAAe7vB,CAAAA,CAAK,SAAA,CAAW,CAAE,GAAGsS,EAAS,KAAA,CAAO3qB,CAAAA,CAAK,MAAO,CAAA,CAAGi1B,CAAK,EACxE2T,EAAAA,EAAS,CACPuD,CAAAA,CAAaH,EAAAA,CAAgB/W,EAAOj1B,CAAAA,CAAMqzB,CAAAA,CAAO4Y,CAAAA,CAAQM,CAAU,EAEzE,OAAOA,CAAAA,CAAanD,CAAAA,CAAQ,CAAC+C,EAAY,GAAG/B,EAAAA,CAAQ/xB,EAAK,KAAA,CAAOsS,CAAO,CAAC,CAAC,CAAA,CAAIwhB,CAC/E,CAAA,CCvEO,IAAMM,EAAAA,CAAiB,CAC5Bp0B,CAAAA,CACAsS,CAAAA,CACAsK,IACgB,CAChB,GAAI,CAAC5c,CAAAA,CAAK,MAAO,MAAM,IAAI,MAAM,uDAAuD,CAAA,CACxF,IAAMrY,CAAAA,CAAO8rC,EAAAA,CAAUzzB,CAAAA,CAAK,KAAA,CAAOsS,EAAQ,GAAA,CAAKA,CAAAA,CAAQ,KAAA,CAAO,iBAAiB,EAIhF,GAAItS,CAAAA,CAAK,SAAA,GAAc,MAAA,CAAW,MAAMJ,EAAAA,CAAkBI,CAAAA,CAAK,aAAa,CAAA,CAC5E,GAAIA,EAAK,KAAA,GAAU,MAAA,CAAW,MAAMN,EAAAA,CAAcM,EAAK,aAAa,CAAA,CACpE,IAAM5lB,CAAAA,CAAQ4lB,EAAK,KAAA,CACnB,GAAIA,CAAAA,CAAK,aAAA,GAAkB3F,EAAc,OAAA,EAAWjgB,CAAAA,GAAU,EAAG,OAAOm2C,EAAAA,GAExE,IAAMvV,CAAAA,CAAQ6U,CAAAA,CAAe7vB,CAAAA,CAAK,UAAW,CAAE,GAAGsS,EAAS,KAAA,CAAO3qB,CAAAA,CAAK,MAAO,CAAA,CAAGi1B,CAAK,CAAA,CAGhFiX,CAAAA,CAAaQ,GAAcr0B,CAAI,CAAA,CAC/B4zB,EAASC,CAAAA,CACXS,EAAAA,CACEj6B,EAAc,OAAA,CACd2F,CAAAA,CAAK,aAAA,GAAkB3F,CAAAA,CAAc,OAASjgB,CAAAA,CAAQ,CAAA,CAAI,CAAA,CAC1DuN,CAAAA,CAAK,SACP,CAAA,CACA2sC,EAAAA,CAAYt0B,CAAAA,CAAK,aAAA,CAAe5lB,EAAOuN,CAAAA,CAAK,SAAS,EACzD,OAAOgsC,EAAAA,CAAgB/W,EAAOj1B,CAAAA,CAAMqzB,CAAAA,CAAO4Y,CAAAA,CAAQC,CAAU,CAC/D,CAAA,CAIMS,EAAAA,CAAc,CAACj4B,CAAAA,CAAmBjiB,EAAegiB,CAAAA,GAA2C,CAChG,IAAM4H,CAAAA,CAAQlI,GAAaO,CAAAA,CAAI,OAAO,EACtC,GAAI,CAAC2H,EAAO,MAAM,IAAI,KAAA,CAAM,CAAA,CAAA,EAAI3H,CAAE,CAAA,gBAAA,CAAkB,CAAA,CACpD,OAAO,CAAE,CAACD,CAAK,EAAG,CAAE,MAAA,CAAQ,CAAE,CAAC4H,CAAK,EAAG5pB,CAAM,CAAE,CAAE,CACnD,CAAA,CC9BO,IAAMm6C,EAAAA,CAAiB,CAC5Bv0B,CAAAA,CACAsS,CAAAA,CACAsK,CAAAA,GACgB,CAChB,IAAM5B,CAAAA,CAAQwZ,EAAAA,CAAiBx0B,CAAAA,CAAMsS,CAAAA,CAASsK,CAAK,CAAA,CAEnD,OAAO5c,EAAK,KAAA,EAASq0B,EAAAA,CAAcr0B,CAAI,CAAA,EAAK,CAACy0B,EAAAA,CAAaz0B,CAAAA,CAAK,MAAOsS,CAAO,CAAA,CACzEye,CAAAA,CAAQ,CAAC/V,EAAO,GAAG+W,EAAAA,CAAQ/xB,CAAAA,CAAK,KAAA,CAAOsS,CAAO,CAAC,CAAC,EAChD0I,CACN,CAAA,CAGaqZ,GAAiBr0B,CAAAA,EAC5BqS,EAAAA,CAAM,CAAE,GAAGrS,EAAM,KAAA,CAAO,OAAQ,CAAA,CAAgB,CAAE,MAAO,EAAG,CAAC,CAAA,GAAM,KAE/Dw0B,EAAAA,CAAmB,CACvBx0B,EACAsS,CAAAA,CACAsK,CAAAA,GACgB,CAChB,GAAIjM,EAAAA,CAAU3Q,CAAI,CAAA,CAAG,CACnB,IAAM+b,CAAAA,CAAY9J,EAAAA,CAAcjS,CAAI,EACpC,GAAI,CAAC+b,CAAAA,CAAW,MAAMtb,GAAkB,UAAU,CAAA,CAClD,OAAOovB,CAAAA,CAAe9T,CAAAA,CAAWzJ,EAASsK,CAAK,CACjD,CAIA,GACE5c,EAAK,SAAA,GAAc,MAAA,EACnB,CAACnC,EAAAA,CAAyB,QAAA,CAASmC,EAAK,aAAa,CAAA,EACrDka,EAAAA,CACEla,CAAAA,CAAK,UACLsS,CAAAA,EAAS,GAAA,CACToiB,GAAgB10B,CAAAA,CAAMsS,CAAO,GAAG,KAClC,CAAA,CAEA,OAAOke,EAAAA,GAGT,GAAI7yB,EAAAA,CAAsB,QAAA,CAASqC,CAAAA,CAAK,aAAa,CAAA,CAAG,CACtD,GAAIsS,CAAAA,EAAS,KAAOA,CAAAA,EAAS,KAAA,EAASsK,EACpC,OAAOwX,EAAAA,CACLp0B,EACAsS,CAAAA,CACAsK,CACF,CAAA,CAEF,MAAM,IAAI,KAAA,CACR,CAAA,eAAA,EAAkB5c,CAAAA,CAAK,aAAa,kLAEtC,CACF,CAEA,GAAI,CAACA,EAAK,KAAA,CACR,MAAMP,GAAoB,UAAU,CAAA,CAEtC,GAAM,CAAE,KAAA,CAAArD,CAAM,CAAA,CAAI4D,EAClB,GAAIy0B,EAAAA,CAAar4B,CAAAA,CAAOkW,CAAO,EAC7B,OAAOqiB,EAAAA,CACL30B,CAAAA,CACA5D,CAAAA,CACA2lB,GAAU,CAAE,KAAA,CAAA3lB,CAAM,CAAA,CAAGkW,CAAAA,EAAS,IAA6BA,CAAAA,EAAS,KAAK,CAAA,CACzEA,CACF,EACF,IAAMH,CAAAA,CAASyiB,EAAAA,CAAqB50B,CAAAA,CAAMsS,EAASsK,CAAK,CAAA,CACxD,OAAOqV,EAAAA,CAAoBjyB,EAAK,KAAA,CAAOmS,CAAAA,CAAQG,CAAO,CACxD,CAAA,CAEMmiB,GAAe,CAACr4B,CAAAA,CAAekW,CAAAA,GAAuC,CAC1E,IAAMzB,CAAAA,CAAQkR,EAAAA,CAAU,CAAE,KAAA,CAAA3lB,CAAM,CAAA,CAAGkW,CAAAA,EAAS,GAAA,CAA6BA,CAAAA,EAAS,KAAK,CAAA,CACvF,OAAOzB,IAAU,MAAA,EAAUA,CAAAA,GAAU,QAAUA,CAAAA,GAAU,WAC3D,CAAA,CAIM8jB,EAAAA,CAAsB,CAC1B30B,CAAAA,CACA5D,CAAAA,CACAyU,CAAAA,CACAyB,CAAAA,GACgB,CAChB,OAAQtS,CAAAA,CAAK,aAAA,EACX,KAAK3F,CAAAA,CAAc,KAAA,CACnB,KAAKA,CAAAA,CAAc,QAAA,CACjB,OAAOm4B,EAAAA,CACLp2B,CAAAA,CACAyU,CAAAA,CACA7Q,CAAAA,CAAK,gBAAkB3F,CAAAA,CAAc,KAAA,CACrC,KAAA,CACAiY,CACF,EACF,QACE,MAAMhS,CAAAA,CACJ,UAAA,CACA,IAAIN,CAAAA,CAAK,aAAa,cAAc6Q,CAAAA,GAAU,MAAA,CAAS,OAAS,YAAY,CAAA,EAAA,EAAKzU,CAAK,CAAA,CAAA,CAAA,CACtFyU,IAAU,MAAA,CAAS,0CAAA,CAA6C,MAClE,CACJ,CACF,EAEM6jB,EAAAA,CAAkB,CACtB10B,CAAAA,CACAsS,CAAAA,GACgC,CAChC,GAAI,CAACA,GAAS,GAAA,EAAO,CAACA,GAAS,KAAA,EAAS,CAACtS,CAAAA,CAAK,KAAA,CAAO,OAAOsS,CAAAA,CAC5D,IAAM1Z,CAAAA,CAASohB,EAAAA,CAAeha,EAAK,KAAA,CAAOsS,CAAAA,CAAQ,GAAA,CAAiBA,CAAAA,CAAQ,KAAK,CAAA,CAChF,OAAO1Z,EAAS,CAAE,GAAG0Z,EAAS,KAAA,CAAO1Z,CAAO,CAAA,CAAI0Z,CAClD,EAEMsiB,EAAAA,CAAuB,CAC3B50B,CAAAA,CACAsS,CAAAA,CACAsK,IACY,CAGZ,IAAMiY,CAAAA,CAAeH,EAAAA,CAAgB10B,EAAMsS,CAAO,CAAA,CAClD,OAAQtS,CAAAA,CAAK,aAAA,EAGX,KAAK3F,CAAAA,CAAc,GAAA,CACjB,GAAI,CAAC2F,CAAAA,CAAK,SAAA,CAAW,MAAMJ,EAAAA,CAAkBI,EAAK,aAAa,CAAA,CAC/D,OAAO,CACL,KAAM6vB,CAAAA,CAAe7B,EAAAA,CAAOhuB,EAAK,SAAA,CAAWkwB,EAAAA,CAAW2E,CAAY,CAAC,CAAA,CAAGA,CAAAA,CAAcjY,CAAK,CAC5F,CAAA,CAEF,KAAKviB,CAAAA,CAAc,GAAA,CACjB,GAAI,CAAC2F,CAAAA,CAAK,SAAA,CAAW,MAAMJ,GAAkBI,CAAAA,CAAK,aAAa,EAC/D,OAAO,CAAE,KAAM6vB,CAAAA,CAAe7vB,CAAAA,CAAK,SAAA,CAAW60B,CAAAA,CAAcjY,CAAK,CAAE,CAAA,CAErE,KAAKviB,CAAAA,CAAc,KACjB,GAAI,CAAC2F,CAAAA,CAAK,SAAA,CAAW,MAAMJ,EAAAA,CAAkBI,CAAAA,CAAK,aAAa,CAAA,CAC/D,OAAO,CAAE,IAAA,CAAM6vB,CAAAA,CAAe7vB,CAAAA,CAAK,SAAA,CAAW60B,EAAcjY,CAAK,CAAE,CAAA,CAErE,KAAKviB,EAAc,KAAA,CACjB,OAAO,CAAE,IAAA,CAAM,EAAG,CAAA,CAEpB,KAAKA,CAAAA,CAAc,QAAA,CACjB,OAAO,CAAE,IAAA,CAAM,EAAG,EAEpB,QACE,MAAM2B,CAAAA,CAAiBgE,CAAAA,CAAmB,cAAe,OAAO,CACpE,CACF,CAAA,CChJO,IAAM80B,EAAAA,CAAgB,CAAC90B,EAAgBsS,CAAAA,GAA2C,CAGvF,IAAMhtB,CAAAA,CAAMgtB,CAAAA,EAAS,GAAA,CACfzB,CAAAA,CAAQkR,GAAU,CAAE,KAAA,CAAO/hB,EAAK,KAAM,CAAA,CAAG1a,EAAKgtB,CAAAA,EAAS,KAAK,CAAA,CAClE,GAAIzB,IAAU,MAAA,EAAUA,CAAAA,GAAU,YAChC,MAAMvQ,CAAAA,CACJ,WACA,CAAA,+BAAA,EAAkCN,CAAAA,CAAK,KAAK,CAAA,CAAA,CAAA,CAC5C,2BACF,CAAA,CACF,IAAMpc,CAAAA,CAAQi2B,EAAAA,CAAW7Z,EAAK,KAAA,CAAO1a,CAAAA,CAAKgtB,CAAAA,EAAS,KAAK,EACxD,GAAI1uB,CAAAA,EAAS,CAACm1B,EAAAA,CAAgBn1B,CAAK,GAAKo+B,EAAAA,CAAUp+B,CAAK,CAAA,GAAM2W,CAAAA,CAAU,SACrE,MAAM+F,CAAAA,CACJ,UAAA,CACA,CAAA,mBAAA,EAAsB1c,EAAM,IAAI,CAAA,QAAA,EAAWoc,CAAAA,CAAK,KAAK,IACrD,CAAA,sBAAA,EAAyBpc,CAAAA,CAAM,IAAI,CAAA,mBAAA,CACrC,CAAA,CACF,IAAMitC,CAAAA,CAAO/yB,CAAAA,CAAkB,QAAA,CAASkC,CAAAA,CAAK,YAAY,CAAA,CAAIgyB,EAAAA,CAAWhyB,CAAAA,CAAMsS,CAAO,EAAI,EAAC,CACpFH,CAAAA,CAAS4iB,EAAAA,CAAoB/0B,EAAMsS,CAAO,CAAA,CAGhD,GAAIH,CAAAA,GAAW,IAAA,CAAM,OAAO4e,CAAAA,CAAQF,CAAI,CAAA,CACxC,IAAMxtB,EAAW4uB,EAAAA,CAAoBjyB,CAAAA,CAAK,KAAA,CAAOmS,CAAAA,CAAQG,CAAO,CAAA,CAC1Dlb,CAAAA,CAAS4G,EAAAA,CAAwB,QAAA,CAASgC,EAAK,YAAY,CAAA,CAAIgxB,GAAQ3tB,CAAQ,CAAA,CAAIA,EACzF,OAAO0tB,CAAAA,CAAQ,CAAC35B,CAAAA,CAAQ,GAAGy5B,CAAI,CAAC,CAClC,CAAA,CAEMkE,GAAsB,CAAC/0B,CAAAA,CAAgBsS,CAAAA,GAAuC,CAClF,IAAMhR,CAAAA,CAAS2uB,EAAAA,CAAa3d,CAAO,CAAA,CAC7B3O,CAAAA,CAAOqsB,GAAW1d,CAAO,CAAA,CACzBvI,CAAAA,CAASuY,CAAAA,EACbtiB,EAAK,MAAA,GAAW,MAAA,CAAYsiB,CAAAA,CAAUoP,EAAAA,CAAWpP,EAAStiB,CAAAA,CAAK,MAAA,CAAQsS,CAAO,CAAA,CAC1E0iB,EAAa7/C,CAAAA,EAAgC,CACjD,GAAIA,CAAAA,EAAU,IAAA,CAA6B,OAAO,IAAA,CAClD,GAAI,CAACgsB,CAAAA,CAAWhsB,CAAK,CAAA,CAAG,OAAO21B,EAAAA,CAAkB31B,CAAAA,CAAOmsB,EAAO,QAAQ,CAAA,CACvE,IAAMiB,CAAAA,CAAOiG,GAAYrzB,CAAAA,CAAOwuB,CAAI,EACpC,OAAOpB,CAAAA,EAAQa,GAAwBb,CAAAA,CAAMvC,CAAAA,CAAK,YAAA,CAAcsB,CAAM,EAAE,MAAA,EAC1E,EACMxnB,CAAAA,CAAS,IAAMi2C,GAAW/vB,CAAAA,CAAMsS,CAAO,CAAA,CACvCtI,CAAAA,CAAQ,IAAmBD,CAAAA,CAAMirB,CAAAA,CAAUl7C,GAAQ,CAAC,EACpDi2B,CAAAA,CAAQ,IAA2B,CACvC,IAAMxW,EAAIzf,CAAAA,EAAO,CACjB,GAAIyf,CAAAA,EAAM,KAAyB,OAAO,IAAA,CAC1C,IAAMmP,CAAAA,CAAOf,GAASpO,CAAAA,CAAGyG,CAAAA,CAAK,YAAY,CAAA,CAAE,GAAA,CAAIg1B,CAAS,CAAA,CACzD,GAAItsB,CAAAA,CAAK,CAAC,IAAM,IAAA,EAAQA,CAAAA,CAAK,CAAC,CAAA,GAAM,KAAM,OAAO,IAAA,CACjD,GAAM,CAAClsB,EAAO0jB,CAAG,CAAA,CAAIwH,GAAUgB,CAAc,CAAA,CAAE,IAAIqB,CAAK,CAAA,CACxD,OAAOvtB,CAAAA,EAAS0jB,EAAM,CAAC1jB,CAAAA,CAAO0jB,CAAG,CAAA,CAAI,IACvC,CAAA,CACM+0B,CAAAA,CAAS,IAA2B,CACxC,IAAM17B,CAAAA,CAAIzf,CAAAA,GACV,GAAIyf,CAAAA,EAAM,KAAyB,OAAO,IAAA,CAC1C,GAAI,CAAC4H,EAAW5H,CAAC,CAAA,CAAG,MAAMoG,EAAAA,CAAkBK,EAAK,YAAY,CAAA,CAC7D,IAAMuC,CAAAA,CAAOiG,GAAYjP,CAAAA,CAAGoK,CAAI,EAChC,GAAI,CAACpB,EAAM,OAAO,IAAA,CAClB,GAAM,CAAC/lB,EAAO0jB,CAAG,CAAA,CAAIoD,EAAAA,CAAqBf,CAAAA,CAAMjB,CAAM,CAAA,CACtD,OAAO,CAAC9kB,CAAAA,CAAM,QAAO,CAAG0jB,CAAAA,CAAI,QAAQ,CACtC,EACMg1B,CAAAA,CAAOn8C,CAAAA,EAAqC,CAChD,IAAMyf,EAAKwR,CAAAA,EAAM,CACjB,OAAOxR,CAAAA,GAAO,KAAO,IAAA,CAAO,CAAE,CAACzf,CAAG,EAAGyf,CAAG,CAC1C,EACM28B,CAAAA,CAAOzsB,CAAAA,EAA+BA,EAAO,CAAE,GAAA,CAAKA,CAAAA,CAAK,CAAC,EAAG,GAAA,CAAKA,CAAAA,CAAK,CAAC,CAAE,EAAI,IAAA,CAE9E2qB,CAAAA,CAAav3B,EAAAA,CAAakE,CAAAA,CAAK,aAAc,MAAM,CAAA,CACzD,GAAIqzB,CAAAA,CAAY,OAAO6B,EAAI7B,CAAyC,CAAA,CAEpE,OAAQrzB,CAAAA,CAAK,cACX,KAAK1F,EAAa,MAAA,CAClB,KAAKA,EAAa,SAAA,CAChB,OAAO66B,CAAAA,CAAIF,CAAAA,EAAQ,CAAA,CAErB,KAAK36B,EAAa,OAAA,CAClB,KAAKA,EAAa,UAAA,CAChB,OAAO66B,CAAAA,CAAIplB,CAAAA,EAAO,CAAA,CAEpB,KAAKzV,CAAAA,CAAa,KAAA,CAClB,KAAKA,CAAAA,CAAa,QAAA,CAChB,MAAMgG,CAAAA,CAAe,WAAY,CAAA,CAAA,EAAIN,CAAAA,CAAK,YAAY,CAAA,CAAA,CAAG,CAAA,CAE3D,QACE,MAAMhE,CAAAA,CAAiBgE,CAAAA,CAAkB,YAAA,CAAc,MAAM,CACjE,CACF,CAAA,CC/FO,IAAM6vB,GAAiB,CAC5B32B,CAAAA,CACAoZ,CAAAA,CACAsK,CAAAA,GACgB,CAIhB,GAAI,OAAO1jB,GAAc,SAAA,CACvB,OAAOA,EAAY,EAAC,CAAIu3B,EAAAA,EAAa,CAEvCx3B,GAAkBC,CAAAA,CAAW,UAAU,CAAA,CAEvC,IAAM2X,EAAQtK,CAAAA,CAAerN,CAAoC,CAAA,CAAA,CAC7D2X,CAAAA,GAAU,SAAWA,CAAAA,GAAU,MAAA,GACjC8Q,GACGzoB,CAAAA,CAAgC,KAAA,CACjCoZ,GAAS,GAAA,CACTA,CAAAA,EAAS,KACX,CAAA,CACF,IAAMzW,CAAAA,CAAO3C,CAAAA,CACb,OAAQ2X,CAAAA,EACN,KAAK,KAAA,CACH,OAAOogB,EAAAA,CAASp1B,EAAMyW,CAAAA,CAASsK,CAAK,EACtC,KAAK,KAAA,CACH,OAAOsU,EAAAA,CAASr1B,CAAAA,CAAMyW,CAAAA,CAASsK,CAAK,EACtC,KAAK,IAAA,CACH,OAAOuU,EAAAA,CAAgBt1B,EAAMyW,CAAAA,CAASsK,CAAK,CAAA,CAC7C,KAAK,QACH,OAAO2X,EAAAA,CAAe14B,EAAMyW,CAAAA,CAASsK,CAAK,EAC5C,KAAK,WAAA,CACH,OAAOoX,EAAAA,CAAmBn4B,EAAMyW,CAAAA,CAASsK,CAAK,CAAA,CAChD,KAAK,OACH,OAAOkY,EAAAA,CAAcj5B,CAAAA,CAAMyW,CAAO,EACpC,KAAK,OAAA,CACH,OAAOqgB,EAAAA,CAAe92B,CAAAA,CAAMyW,CAAO,CAAA,CACrC,QACE,MAAMjS,EAAAA,EACV,CACF,CAAA,CAEAuvB,EAAAA,CAAoBC,EAAc,ECpC3B,IAAMuF,EAAAA,CAAoB,MAC/BC,CAAAA,CACAC,IACqC,CACrC,IAAMC,EAAeF,CAAAA,CAAK,KAAA,CAAM,OAAQnY,CAAAA,EAAwBA,CAAAA,CAAE,SAAA,GAAc,SAAS,EACnFsY,CAAAA,CAAYH,CAAAA,CAAK,KAAA,CAAM,IAAA,CAAMnY,GAAsBA,CAAAA,CAAE,SAAA,GAAc,OAAO,CAAA,CAEhF,GAAI,CAACsY,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,6CAA6C,CAAA,CAG/D,IAAMC,CAAAA,CAA2B,GAEjC,IAAA,IAAWl9B,CAAAA,IAAQg9B,CAAAA,CAAc,CAC/B,IAAM3J,CAAAA,CAAWrzB,CAAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,GAAgBA,CAAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAA,CAClEm9B,CAAAA,CAAWJ,CAAAA,CAAe1J,CAAQ,CAAA,CACxC,GAAI,CAAC8J,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,CAAA,0CAAA,EAA6Cn9B,CAAAA,CAAK,KAAK,CAAA,oCAAA,EACjBqzB,CAAQ,IAChD,CAAA,CAEF,IAAMlX,EAAO,MAAMghB,CAAAA,CAASn9B,CAAAA,CAAK,SAAS,EAAEA,CAAAA,CAAK,IAAI,CAAA,CAMrDk9B,CAAAA,CAAY,KACT/gB,CAAAA,CACE,GAAA,CAAKtO,CAAAA,EAAMA,CAAAA,CAAE7N,EAAK,OAAO,CAAC,EAC1B,MAAA,CAAQgB,CAAAA,EAAMA,GAAM,IAAuB,CAChD,EACF,CAEA,OAAOo8B,EAAAA,CAAgBH,CAAAA,CAAU,KAAA,CAAOC,CAAW,CACrD,CAAA,CAKME,EAAAA,CAAkB,CAACC,CAAAA,CAAcH,IAAsC,CAC3E,GAAIG,GAAQ,IAAA,CAA2B,OAAOA,EAE9C,GAAI,KAAA,CAAM,OAAA,CAAQA,CAAG,EACnB,OAAOA,CAAAA,CAAI,GAAA,CAAKlwB,CAAAA,EAASiwB,GAAgBjwB,CAAAA,CAAM+vB,CAAW,CAAC,CAAA,CAG7D,GAAI,OAAOG,CAAAA,EAAQ,SAAU,CAI3B,IAAMr8C,EAAQ,MAAA,CAAO,cAAA,CAAeq8C,CAAG,CAAA,CACvC,GAAIr8C,CAAAA,GAAU,MAAA,CAAO,SAAA,EAAaA,CAAAA,GAAU,KAAM,OAAOq8C,CAAAA,CACzD,IAAM7hB,CAAAA,CAAS6hB,EAEf,GAAI,QAAA,GAAY7hB,GAAU,OAAOA,CAAAA,CAAO,QAAW,QAAA,CAAU,CAC3D,IAAM8hB,CAAAA,CAAM9hB,EAAO,MAAA,CACnB,GAAI8hB,CAAAA,EAAOJ,CAAAA,CAAY,OACrB,MAAM,IAAI,KAAA,CACR,CAAA,iBAAA,EAAoBI,CAAG,CAAA,eAAA,EAAkBJ,CAAAA,CAAY,MAAM,CAAA,gBAAA,CAC7D,CAAA,CAEF,OAAOA,CAAAA,CAAYI,CAAG,CACxB,CAEA,IAAM17B,CAAAA,CAAoC,GAC1C,IAAA,GAAW,CAACphB,EAAK5D,CAAK,CAAA,GAAK,MAAA,CAAO,OAAA,CAAQ4+B,CAAM,CAAA,CAC9C5Z,CAAAA,CAASphB,CAAG,CAAA,CAAI48C,EAAAA,CAAgBxgD,EAAOsgD,CAAW,CAAA,CAEpD,OAAOt7B,CACT,CAEA,OAAOy7B,CACT,ECxFA,IAAME,GAAoBxjB,CAAAA,EACxBA,CAAAA,EAAS,GAAA,CACL,CAAE,GAAGA,CAAAA,CAAS,GAAA,CAAKob,GAAgBpb,CAAAA,CAAQ,GAAA,CAAKA,EAAQ,OAAA,CAAS,UAAU,CAAE,CAAA,CAC7EA,EA6BOyjB,EAAAA,CAAW,CAAC78B,CAAAA,CAAsBoZ,CAAAA,GAA8C,CAC3F,IAAMsK,CAAAA,CAA0B,CAAE,KAAA,CAAO,EAAG,CAAA,CACtC5B,EAAQ6U,EAAAA,CAAe32B,CAAAA,CAAW48B,GAAiBxjB,CAAO,CAAA,CAAGsK,CAAK,CAAA,CACxE,OAAO,CACL,KAAA,CAAO,CAAC,GAAGA,EAAM,KAAA,CAAO,CAAE,SAAA,CAAW,OAAA,CAAS,MAAA5B,CAAM,CAAC,CACvD,CACF,ECtCA,IAAMgb,EAAAA,CAAY7gD,CAAAA,EACZA,CAAAA,YAAiB,IAAA,CAAaA,EAAM,WAAA,EAAY,CAC7C,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,EAAKA,CAAAA,CAAM,IAAA,CAAMuwB,CAAAA,EAASA,aAAgB,IAAI,CAAA,CACpEvwB,EAAM,GAAA,CAAI6gD,EAAQ,EAClB7gD,CAAAA,CAGO8gD,CAAAA,CAAY,CAACrZ,CAAAA,CAAqBznC,KAC7CynC,CAAAA,CAAM,MAAA,CAAO,IAAA,CAAKoZ,EAAAA,CAAS7gD,CAAK,CAAC,CAAA,CAC1B,CAAA,CAAA,EAAI,EAAEynC,EAAM,UAAU,CAAA,CAAA,CAAA,CCKxB,IAAMsZ,EAAAA,CAAe,CAC1B95B,EACAwgB,CAAAA,CACA,CAAE,KAAA,CAAAiS,CAAAA,CAAQ,KAAM,CAAA,CAAyB,EAAC,GAC7B,CAEb,IAAMsH,CAAAA,CAAY,KAAiB,CACjC,GAAA,CAAKxH,GAAWvyB,CAAAA,CAAO,MAAA,CAAWyyB,CAAK,CAAA,CACvC,KAAA,CAAOzyB,EAAM,QAAA,CAAS,GAAG,CAAA,CAAI,WAAA,CAAc,SAC7C,CAAA,CAAA,CACA,GAAI,CAACwgB,CAAAA,CAAM,KAAO,CAACA,CAAAA,CAAM,YAAA,EAAgB,CAACA,EAAM,YAAA,CAAc,OAAOuZ,GAAU,CAC/E,IAAMrc,EAAON,EAAAA,CAAcpd,CAAAA,CAAOwgB,CAAAA,CAAM,GAAA,CAAKA,EAAM,YAAY,CAAA,CAC/D,GAAI9C,CAAAA,CAAK,IAAA,GAAS,cAAe,MAAMlZ,EAAAA,CAAgBxE,CAAAA,CAAO0d,CAAAA,CAAK,MAAM,CAAA,CACzE,GAAIA,EAAK,IAAA,GAAS,QAAA,CAChB,MAAM,IAAI,KAAA,CAAM,CAAA,CAAA,EAAI1d,CAAK,oEAAoE,CAAA,CAC/F,GAAI0d,CAAAA,CAAK,IAAA,GAAS,YAAeA,CAAAA,CAAK,KAAA,CAAM,IAAA,GAAS,QAAA,EAAYA,EAAK,KAAA,CAAM,MAAA,CAC1E,OAAOqc,CAAAA,EAAU,CACnB,IAAMhN,CAAAA,CAASrP,CAAAA,CAAK,IAAA,CAAK,IAAA,CAAMnZ,GAAQA,CAAAA,CAAI,KAAA,CAAM,MAAM,CAAA,CACvD,GAAIwoB,CAAAA,CAAQ,MAAMzoB,EAAAA,CAAetE,CAAAA,CAAO+sB,CAAM,CAAA,CAC9C,IAAIyF,EAAQhS,CAAAA,CAAM,YAAA,CAClB,QAAWjc,CAAAA,IAAOmZ,CAAAA,CAAK,IAAA,CAAM,CAC3B,IAAMsc,CAAAA,CAASC,EAAAA,CAAUzZ,CAAAA,CAAOgS,CAAAA,CAAOjuB,CAAG,CAAA,CAC1C,GAAI,CAACy1B,CAAAA,CAAQ,OAAOD,CAAAA,EAAU,CAC9BvH,EAAQwH,EACV,CACA,IAAMvlB,CAAAA,CAAQ2Q,EAAAA,CAAW1H,CAAI,CAAA,CAE7B,GAAIA,CAAAA,CAAK,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAK,MAAM,IAAA,GAAS,QAAA,CAAU,CAC1D,IAAMnZ,EAAM,CAAE,KAAA,CAAOmZ,EAAK,MAAA,CAAuB,KAAA,CAAOA,CAAAA,CAAK,KAAA,CAAO,IAAA,CAAMA,EAAK,KAAM,CAAA,CAC/E/3B,CAAAA,CAAOojC,EAAAA,CAAavI,EAAM,GAAA,CAAK9C,CAAAA,CAAK,KAAA,CAAOA,CAAAA,CAAK,KAAK,CAAA,CACrDsc,CAAAA,CAASC,GAAUzZ,CAAAA,CAAOgS,CAAAA,CAAOjuB,CAAG,CAAA,CAC1C,OAAI,CAAC5e,CAAAA,EAAQ,CAACq0C,CAAAA,CAAeD,CAAAA,EAAU,CAChC,CAAE,IAAK,CAAA,EAAG3H,CAAAA,CAAiB4H,CAAM,CAAC,IAAI5H,CAAAA,CAAiBzsC,CAAAA,CAAK,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA,CAAI,KAAA,CAAA8uB,CAAM,CACxF,CACA,IAAMhQ,CAAAA,CAASiZ,CAAAA,CAAK,IAAA,GAAS,YAAc,CAACA,CAAAA,CAAK,MAAA,CAAQ,GAAGA,EAAK,QAAQ,CAAA,CAAI,CAACA,CAAAA,CAAK,MAAM,EACnFwc,CAAAA,CAAM3H,EAAAA,CAAW9tB,CAAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAG+tB,CAAAA,CAAOC,CAAK,CAAA,CAErD,OAAO,CAAE,GAAA,CAAKhe,CAAAA,GAAU,MAAA,EAAU,CAACge,EAAQ,CAAA,OAAA,EAAUyH,CAAG,mBAAqBA,CAAAA,CAAK,KAAA,CAAAzlB,CAAM,CAC1F,CAAA,CAEa0lB,EAAAA,CAAkB,CAC7Bn6B,EACAwgB,CAAAA,CACAtK,CAAAA,GACW4jB,EAAAA,CAAa95B,CAAAA,CAAOwgB,EAAOtK,CAAO,CAAA,CAAE,GAAA,CAG3C+jB,EAAAA,CAAY,CAACzZ,CAAAA,CAAqB4Z,CAAAA,CAAmB71B,IAA+B,CACxF,IAAM5nB,EAAM,CAAA,EAAGy9C,CAAS,CAAA,CAAA,EAAI71B,CAAAA,CAAI,KAAK,CAAA,CAAA,CAC/BymB,CAAAA,CAAWxK,CAAAA,CAAM,YAAA,EAAc,IAAI7jC,CAAG,CAAA,CAC5C,GAAIquC,CAAAA,CAAU,OAAOA,CAAAA,CACrB,GAAI,CAACxK,CAAAA,CAAM,WAAA,EAAe,CAACA,CAAAA,CAAM,GAAA,CAAK,OAAO,IAAA,CAC7C,IAAMgS,CAAAA,CAAQ,CAAA,CAAA,EAAIhS,CAAAA,CAAM,WAAA,CAAY,EAAI,CAAC,CAAA,CAAA,CACnCgK,CAAAA,CAAS6P,EAAAA,CAAgB7Z,EAAM,GAAA,CAAKjc,CAAAA,CAAI,KAAM61B,CAAAA,CAAW71B,CAAAA,CAAI,MAAOiuB,CAAK,CAAA,CAC/E,OAAKhI,CAAAA,EACLhK,EAAM,WAAA,CAAY,CAAA,EAAK,CAAA,CACvBA,CAAAA,CAAM,OAAO,IAAA,CAAKgK,CAAM,CAAA,CACxBhK,CAAAA,CAAM,cAAc,GAAA,CAAI7jC,CAAAA,CAAK61C,CAAK,CAAA,CAC3BA,CAAAA,EAJa,IAKtB,CAAA,CAMM6H,EAAAA,CAAkB,CACtBnxC,CAAAA,CACAy/B,EACA2R,CAAAA,CACA7c,CAAAA,CACA8c,CAAAA,GACkB,CAClB,IAAM7R,CAAAA,CAAcjL,CAAAA,CAAW,IAAA,CACzB+c,CAAAA,CAAe1iB,EAAQ5uB,CAAAA,CAAKw/B,CAAW,GAAG,MAAA,EAAUA,CAAAA,CAEpD/iC,EAAOojC,EAAAA,CAAa7/B,CAAAA,CAAKy/B,CAAAA,CAAclL,CAAU,EACvD,GAAI,CAAC93B,CAAAA,CAAM,OAAO,KAClB,IAAM80C,CAAAA,CAAc90C,CAAAA,CACjB,GAAA,CACC,CAAC,CAAE,IAAA,CAAAkmC,EAAM,KAAA,CAAA6O,CAAM,IACb,CAAA,EAAGtI,CAAAA,CAAiBmI,CAAW,CAAC,IAAInI,CAAAA,CAAiBsI,CAAK,CAAC,CAAA,GAAA,EACxDtI,EAAiBkI,CAAY,CAAC,CAAA,CAAA,EAAIlI,CAAAA,CAAiBvG,CAAI,CAAC,CAAA,CAC/D,EACC,IAAA,CAAK,OAAO,EAEf,OAAO,CAAA,UAAA,EAAauG,CAAAA,CAAiBoI,CAAsB,CAAC,CAAA,IAAA,EAAOpI,CAAAA,CAAiBmI,CAAW,CAAC,CAAA,IAAA,EAAOE,CAAW,CAAA,CACpH,CAAA,CCvFO,IAAME,EAAAA,CAAwB,CAAE,IAAA,CAAM,OAAA,CAAS,MAAO,IAAK,CAAA,CAErDC,GAAaxnB,CAAAA,EACxBA,CAAAA,CAAI,IAAA,GAAS,OAAA,GAAYA,EAAI,KAAA,GAAU,IAAA,EAAQA,CAAAA,CAAI,KAAA,GAAU,QAIzDynB,EAAAA,CAAa,CAACp/B,CAAAA,CAAa+kB,CAAAA,GAAqC,CACpE,IAAM1F,CAAAA,CAAStf,EAAcC,CAAG,CAAA,CAChC,GAAIqf,CAAAA,CAAQ,CACV,GAAIA,CAAAA,CAAO,MAAQ,CAAA,CAAG,MAAM,IAAI,KAAA,CAAMne,GAAkBlB,CAAAA,CAAK,OAAO,CAAC,CAAA,CACrE,IAAMgJ,CAAAA,CAASq1B,EAAAA,CAAahf,EAAO,IAAA,CAAM0F,CAAK,EAC9C,GAAI/b,CAAAA,CAAO,KAAA,GAAU,UAAA,CACnB,MAAM,IAAI,KAAA,CAAM,CAAA,CAAA,EAAIhJ,CAAG,6CAA6C,CAAA,CACtE,OAAO,CAAE,IAAA,CAAM,SAAU,GAAGgJ,CAAO,CACrC,CACA,OAAO,CAAE,IAAA,CAAM,OAAA,CAAS,KAAA,CAAO1H,EAAAA,CAAetB,EAAK+kB,CAAAA,CAAM,OAAA,CAAS,OAAO,CAAE,CAC7E,CAAA,CAGasa,EAAAA,CAAgB,CAC3Bp9C,CAAAA,CACA8iC,IAEAlZ,EAAAA,CAAyB5pB,CAAAA,CAAQ,CAC/B,KAAA,CAAQ3E,CAAAA,GAAW,CAAE,IAAA,CAAM,OAAA,CAAS,KAAA,CAAAA,CAAM,GAC1C,IAAA,CAAO0iB,CAAAA,EAAQo/B,EAAAA,CAAWp/B,CAAAA,CAAK+kB,CAAK,CAAA,CACpC,IAAA,CAAM,CAAC5hB,CAAAA,CAAM8I,KAAc,CAAE,IAAA,CAAM,QAAS,KAAA,CAAOG,EAAAA,CAAejJ,EAAM8I,CAAAA,CAAU,OAAO,CAAE,CAAA,CAC7F,CAAC,CAAA,CAGUqzB,EAAAA,CACVva,CAAAA,EACA9iC,CAAAA,EAAW,CACV,IAAMqgB,CAAAA,CAAW+8B,EAAAA,CAAcp9C,CAAAA,CAAQ8iC,CAAK,CAAA,CAC5C,GAAIziB,EAAS,IAAA,GAAS,QAAA,CAAU,MAAM,IAAI,KAAA,CAAM,CAAA,CAAA,EAAIrgB,CAAAA,CAAO,IAAI,CAAA,cAAA,CAAgB,CAAA,CAC/E,OAAOqgB,CAAAA,CAAS,KAClB,CAAA,CAEW81B,EAAAA,CAAgBrT,CAAAA,EAC3B1T,EAAAA,CAAkB0T,EAAM,UAAA,EAAc,GAAIua,EAAAA,CAAgBva,CAAK,CAAC,CAAA,CC/ClE,IAAMwa,EAAAA,CAA6C,CACjD,GAAI,GAAA,CACJ,GAAA,CAAK,KACL,EAAA,CAAI,GAAA,CACJ,IAAK,IAAA,CACL,MAAA,CAAQ,GACV,CAAA,CAIaC,GAAa,CACxB37B,CAAAA,CACAC,IACqD,CACrD,IAAM03B,EAAav3B,EAAAA,CAAaJ,CAAAA,CAAUC,CAAM,CAAA,CAChD,OAAO03B,CAAAA,CACH,CAAE,MAAA,CAAQ+D,EAAAA,CAAe/D,CAAU,CAAA,CAAG,OAAA,CAASv1B,CAAAA,CAAkB,QAAA,CAASpC,CAAQ,CAAE,CAAA,CACpF,MACN,CAAA,CAEM47B,EAAAA,CAAa,CAAC9nB,CAAAA,CAAkBoN,CAAAA,GACpCpN,CAAAA,CAAI,IAAA,GAAS,SAAWA,CAAAA,CAAI,GAAA,CAAMymB,CAAAA,CAAUrZ,CAAAA,CAAOpN,EAAI,KAAK,CAAA,CAEjD+nB,EAAAA,CAAS,CAACn7B,EAAemG,CAAAA,GAAyB,CAAA,CAAA,EAAIA,CAAI,CAAA,IAAA,EAAOnG,CAAK,YAGtEo7B,EAAAA,CAAe,CAACp7B,CAAAA,CAAeq7B,CAAAA,CAAkBC,EAAW,IAAA,GACvED,CAAAA,EAAWC,CAAAA,CAAW,CAAA,EAAGt7B,CAAK,CAAA,QAAA,CAAA,CAAa,OAAA,CAGhCu7B,EAAAA,CAAa,CACxBv7B,EACA5R,CAAAA,CACAglB,CAAAA,CACAioB,EACA7a,CAAAA,GACW,CACX,GAAIoa,EAAAA,CAAUxnB,CAAG,CAAA,CAAG,OAAOgoB,GAAap7B,CAAAA,CAAOq7B,CAAO,CAAA,CACtD,IAAMtH,EAAa,CAAA,EAAG/zB,CAAK,CAAA,CAAA,EAAI5R,CAAM,IAAI8sC,EAAAA,CAAW9nB,CAAAA,CAAKoN,CAAK,CAAC,CAAA,CAAA,CAC/D,OAAO6a,CAAAA,CAAUF,EAAAA,CAAOn7B,CAAAA,CAAO+zB,CAAU,EAAIA,CAC/C,CAAA,CAIayH,EAAAA,CAAW,CACtBx7B,EACAsM,CAAAA,CACA+uB,CAAAA,CACA7a,CAAAA,CACA8a,CAAAA,CAAW,OACA,CACX,GAAI,CAAChvB,CAAAA,EAAQA,CAAAA,CAAK,KAAKsuB,EAAS,CAAA,CAAG,OAAOQ,EAAAA,CAAap7B,EAAOq7B,CAAAA,CAASC,CAAQ,CAAA,CAC/E,GAAM,CAACt4B,CAAAA,CAAGC,CAAC,CAAA,CAAIqJ,CAAAA,CAAK,IAAKxI,CAAAA,EAAQo3B,EAAAA,CAAWp3B,EAAK0c,CAAK,CAAC,EACjDib,CAAAA,CAASnvB,CAAAA,CAAK,IAAA,CAAMxI,CAAAA,EAAQA,EAAI,IAAA,GAAS,QAAQ,CAAA,CACjD43B,CAAAA,CAAYD,EAAS,YAAA,CAAe,EAAA,CAC1C,GAAI,CAACJ,EAAS,OAAO,CAAA,EAAGr7B,CAAK,CAAA,SAAA,EAAY07B,CAAS,GAAG14B,CAAC,CAAA,KAAA,EAAQC,CAAC,CAAA,CAAA,CAC/D,IAAM04B,CAAAA,CAAU,CAAA,EAAG37B,CAAK,CAAA,aAAA,EAAgB07B,CAAS,GAAG14B,CAAC,CAAA,KAAA,EAAQC,CAAC,CAAA,CAAA,CACxD24B,EAAUH,CAAAA,CAAS,CAAA,CAAA,EAAIE,CAAO,CAAA,KAAA,EAAQ34B,CAAC,oBAAoBC,CAAC,CAAA,aAAA,CAAA,CAAkB04B,CAAAA,CACpF,OAAOL,EAAWH,EAAAA,CAAOn7B,CAAAA,CAAO47B,CAAO,CAAA,CAAIA,CAC7C,CAAA,CCrDA,IAAMC,EAAAA,CAAe1+B,CAAAA,EACnB,MAAM,OAAA,CAAQA,CAAC,EAAIA,CAAAA,CAAE,IAAA,CAAK0+B,EAAW,CAAA,CAAI,OAAO1+B,CAAAA,EAAM,QAAA,EAAYA,IAAM,IAAA,CAM7D2+B,EAAAA,CAAsB,CACjCl4B,CAAAA,CACA6uB,EACA15C,CAAAA,CACAynC,CAAAA,GACW,CACX,IAAMub,EAAI,CAAA,OAAA,EAAUtJ,CAAK,mBACnB33C,CAAAA,CAAO,CAAA,aAAA,EAAgBihD,CAAC,CAAA,CAAA,CAAA,CACxBC,CAAAA,CAAO,CAAA,CAAA,EAAID,CAAC,aACZE,CAAAA,CAAQ9+B,CAAAA,EAAuB,CAAA,EAAG08B,CAAAA,CAAUrZ,EAAO,IAAA,CAAK,SAAA,CAAUrjB,CAAC,CAAC,CAAC,CAAA,OAAA,CAAA,CACrE8V,CAAAA,CAAKrV,GAAuBgG,CAAAA,CAAK,eAAe,EAChDs4B,CAAAA,CAAM/1B,CAAAA,EAA0B8M,CAAAA,CAAK,CAAA,MAAA,EAAS9M,CAAI,CAAA,CAAA,CAAA,CAAMA,CAAAA,CACxDk1B,CAAAA,CAAU35B,CAAAA,CAAkB,SAASkC,CAAAA,CAAK,QAAQ,CAAA,CAClDu4B,CAAAA,CAAOh2B,GAAyBg1B,EAAAA,CAAOY,CAAAA,CAAG,QAAQ51B,CAAI,CAAA,CAAA,CAAG,EAE/D,GAAI+L,EAAAA,CAAatO,CAAAA,CAAM7qB,CAAK,EAAG,OAAOqiD,EAAAA,CAAaW,CAAAA,CAAGV,CAAO,EAC7D,IAAMrE,CAAAA,CAAYnzB,EAAAA,CAAiBD,CAAAA,CAAK,SAAU7qB,CAAK,CAAA,CACvD,GAAIi+C,CAAAA,CAAW,MAAMA,EAKrB,IAAMoF,CAAAA,CAAWj/B,CAAAA,EAAyB,CACxC,GAAI0+B,EAAAA,CAAY1+B,CAAC,CAAA,CACf,MAAM+G,EACJ,OAAA,CACA,CAAA,kCAAA,EAAqCN,CAAAA,CAAK,KAAK,+BACjD,CAAA,CACF,OAAOq4B,EAAKxpB,EAAAA,CAAatV,CAAC,CAAC,CAC7B,CAAA,CAGMk/B,CAAAA,CAASl/B,CAAAA,EACb8V,GAAM,OAAO9V,CAAAA,EAAM,QAAA,CACf,CAAA,CAAA,EAAIriB,CAAI,CAAA,sBAAA,EAAyBkhD,CAAI,CAAA,UAAA,EAAanC,CAAAA,CAAUrZ,EAAOrjB,CAAC,CAAC,KACrE8V,CAAAA,EAAM,KAAA,CAAM,QAAQ9V,CAAC,CAAA,CACnB,CAAA,CAAA,EAAIriB,CAAI,wBAAwBihD,CAAC,CAAA,iBAAA,EAAoBK,EAAQj/B,CAAC,CAAC,IAC/D,CAAA,EAAG4+B,CAAC,CAAA,GAAA,EAAME,CAAAA,CAAK9+B,CAAC,CAAC,CAAA,CAAA,CAEnBm/B,EAAQ//C,CAAAA,EACZ,CAAA,CAAA,EAAIzB,CAAI,CAAA,gBAAA,EAAmBohD,CAAAA,CAAGF,CAAI,CAAC,SAASE,CAAAA,CAAGrC,CAAAA,CAAUrZ,CAAAA,CAAOjkC,CAAO,CAAC,CAAC,CAAA,CAAA,CAAA,CAGrEg2B,CAAAA,CAAUpV,CAAAA,EAAuB,CACrC,IAAMo/B,CAAAA,CAAW5xC,GACf,CAAA,WAAA,EAAc7P,CAAI,8DAA8DihD,CAAC,CAAA,aAAA,EAAgBpxC,CAAK,CAAA,iBAAA,CAAA,CACxG,OAAIsoB,CAAAA,EAAM,OAAO9V,CAAAA,EAAM,QAAA,CACdo/B,EACL,CAAA,yDAAA,EAA4D1C,CAAAA,CAAUrZ,CAAAA,CAAOrjB,CAAC,CAAC,CAAA,CAAA,CACjF,CAAA,CACE8V,GAAM,KAAA,CAAM,OAAA,CAAQ9V,CAAC,CAAA,CAAUo/B,CAAAA,CAAQ,CAAA,wBAAA,EAA2BH,CAAAA,CAAQj/B,CAAC,CAAC,CAAA,CAAE,CAAA,CAC3E,OAAOA,GAAM,QAAA,EAAYA,CAAAA,GAAM,IAAA,CAClCo/B,CAAAA,CAAQ,OAAON,CAAAA,CAAK9+B,CAAC,CAAC,CAAA,CAAE,CAAA,CACxB,IAAIriB,CAAI,CAAA,eAAA,EAAkBihD,CAAC,CAAA,IAAA,EAAOE,EAAK,CAAC9+B,CAAC,CAAC,CAAC,GACjD,CAAA,CAEMq/B,CAAAA,CAAYr/B,CAAAA,EAChB,OAAOA,GAAM,QAAA,CAAW,CAAA,CAAA,EAAIm/B,EAAK,CAAA,CAAA,EAAIhK,CAAAA,CAAkBn1B,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,IAAA,EAAOoV,EAAOpV,CAAC,CAAC,CAAA,CAAA,CAAA,CAAMoV,CAAAA,CAAOpV,CAAC,CAAA,CAE7F,OAAQyG,CAAAA,CAAK,QAAA,EACX,KAAK5F,CAAAA,CAAS,OACZ,OAAOjlB,CAAAA,GAAU,KAAO,CAAA,EAAGgjD,CAAC,CAAA,QAAA,CAAA,CAAaM,CAAAA,CAAMtjD,CAAK,CAAA,CACtD,KAAKilB,CAAAA,CAAS,SAAA,CACZ,OAAOjlB,CAAAA,GAAU,IAAA,CAAO,CAAA,EAAGgjD,CAAC,eAAiBI,CAAAA,CAAIE,CAAAA,CAAMtjD,CAAK,CAAC,CAAA,CAC/D,KAAKilB,CAAAA,CAAS,EAAA,CACd,KAAKA,CAAAA,CAAS,MAAO,CACnB,GAAM,CAAE,MAAA,CAAAnS,EAAQ,OAAA,CAAAmmC,CAAQ,CAAA,CAAIpmB,EAAAA,CAAU7yB,CAAK,CAAA,CACrCuxB,CAAAA,CAAQze,EAAO,MAAA,CAAS,CAAA,CAAA,EAAIA,EAAO,GAAA,CAAIwwC,CAAK,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAA,CAAM,QACtE,OAAIz4B,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,EAAA,CAAWg0B,CAAAA,CAAU,CAAA,CAAA,EAAI1nB,CAAK,CAAA,IAAA,EAAOyxB,CAAC,YAAczxB,CAAAA,CAC5E0nB,CAAAA,CAAU,QAAQ1nB,CAAK,CAAA,KAAA,EAAQyxB,CAAC,CAAA,aAAA,CAAA,CAAkBI,EAAI7xB,CAAK,CACpE,CACA,KAAKtM,EAAS,OAAA,CACd,KAAKA,CAAAA,CAAS,UAAA,CAAY,CACxB,GAAM,CAACy+B,EAAKC,CAAI,CAAA,CAAI3jD,EACd4jD,CAAAA,CAAS,CAAA,CAAA,EAAI7hD,CAAI,CAAA,gBAAA,EAAmBmhD,EAAKQ,CAAG,CAAC,CAAA,MAAA,EAASV,CAAC,YAAYE,CAAAA,CAAKQ,CAAG,CAAC,CAAA,KAAA,EAAQR,EAAKS,CAAI,CAAC,IACpG,OAAO94B,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,OAAA,CAAU2+B,CAAAA,CAASR,CAAAA,CAAIQ,CAAM,CACjE,CACA,KAAK3+B,CAAAA,CAAS,SACZ,OAAOw+B,CAAAA,CAASzjD,CAAK,CAAA,CACvB,KAAKilB,CAAAA,CAAS,WAAA,CACZ,OAAOm+B,CAAAA,CAAIK,CAAAA,CAASzjD,CAAK,CAAC,CAAA,CAC5B,KAAKilB,CAAAA,CAAS,WACZ,OAAOs+B,CAAAA,CAAK,CAAA,EAAGhK,CAAAA,CAAkB,OAAOv5C,CAAK,CAAC,CAAC,CAAA,CAAA,CAAG,EACpD,KAAKilB,CAAAA,CAAS,SACZ,OAAOs+B,CAAAA,CAAK,IAAIhK,CAAAA,CAAkB,MAAA,CAAOv5C,CAAK,CAAC,CAAC,CAAA,CAAE,CAAA,CACpD,KAAKilB,CAAAA,CAAS,cACZ,OAAOm+B,CAAAA,CAAIG,CAAAA,CAAK,CAAA,EAAGhK,EAAkB,MAAA,CAAOv5C,CAAK,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CACzD,KAAKilB,CAAAA,CAAS,WAAA,CACZ,OAAOm+B,CAAAA,CAAIG,CAAAA,CAAK,CAAA,CAAA,EAAIhK,CAAAA,CAAkB,OAAOv5C,CAAK,CAAC,CAAC,CAAA,CAAE,CAAC,CAAA,CACzD,KAAKilB,EAAS,OAAA,CACd,KAAKA,EAAS,UAAA,CAAY,CACxB,GAAM,CAAE,OAAAtgB,CAAAA,CAAQ,eAAA,CAAAqyB,CAAgB,CAAA,CAAIF,GAAY92B,CAAwB,CAAA,CAClE4R,CAAAA,CAAQ,CAAA,CAAA,EAAI7P,CAAI,CAAA,gBAAA,EAAmBkhD,CAAI,KAAKjsB,CAAAA,CAAkB,GAAA,CAAM,EAAE,CAAA,CAAA,EAAI8pB,CAAAA,CAAUrZ,CAAAA,CAAO9P,EAAAA,CAAehzB,CAAM,CAAC,CAAC,IACxH,OAAOkmB,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,OAAA,CAAUrT,CAAAA,CAAQwxC,CAAAA,CAAIxxC,CAAK,CAC/D,CACF,CACA,IAAMyD,CAAAA,CAAS6sC,GAAWr3B,CAAAA,CAAK,QAAA,CAAU,OAAO,CAAA,EAAG,OACnD,GAAIxV,CAAAA,CAAQ,OAAO,CAAA,CAAA,EAAItT,CAAI,CAAA,gBAAA,EAAmBmhD,CAAAA,CAAKljD,CAAK,CAAC,SAASgjD,CAAC,CAAA,CAAA,EAAI3tC,CAAM,CAAA,CAAA,EAAI6tC,CAAAA,CAAKljD,CAAK,CAAC,CAAA,CAAA,CAAA,CAC5F,MAAM,IAAI,MAAM,CAAA,UAAA,EAAa6qB,CAAAA,CAAK,QAAQ,CAAA,yCAAA,CAA2C,CACvF,CAAA,CChGA,IAAMg5B,EAAAA,CAAY3wB,CAAAA,EAChB,OAAOA,CAAAA,EAAc,QAAA,EAAY5E,GAAO4E,CAAS,CAAA,GAAM,IAAA,CAS5C4wB,EAAAA,CAAY,CACvB,CAAE,GAAA,CAAA3C,CAAAA,CAAK,KAAA,CAAAzlB,CAAM,CAAA,CACb+L,CAAAA,GACW,CACX,GAAI/L,IAAU,WAAA,EAAeA,CAAAA,GAAU,OAAQ,OAAO,CAAA,gCAAA,EAAmCylB,CAAG,CAAA,EAAA,CAAA,CAC5F,IAAMv0B,CAAAA,CAAOk0B,CAAAA,CAAUrZ,EAAOqT,EAAAA,CAAarT,CAAK,CAAA,CAAE,QAAQ,EAC1D,OACE,CAAA,iBAAA,EAAoB0Z,CAAG,CAAA,qDAAA,EAAwDA,CAAG,CAAA,wBAAA,EACzEA,CAAG,4FACLA,CAAG,CAAA,4BAAA,EAA+BA,CAAG,CAAA,qBAAA,EAClCA,CAAG,CAAA,0BAAA,EAA6Bv0B,CAAI,OAElD,CAAA,CAGam3B,EAAAA,CAAYz3B,CAAAA,EAAkC,MAAA,CAAO,OAAOA,CAAK,CAAA,CAAE,IAAA,CAAKu3B,EAAQ,EAEvFG,EAAAA,CAAe,CACnB9wB,EACAuU,CAAAA,CACAhe,CAAAA,GACW,CACX,IAAMw6B,CAAAA,CAAQv6B,EAAAA,CAAeD,CAAI,EAC3By6B,CAAAA,CAAOD,CAAAA,CAAQ,KAAA,CAAQ,kBAAA,CAC7B,GAAI,OAAO/wB,CAAAA,EAAc,QAAA,EAAY,CAAC2wB,GAAS3wB,CAAS,CAAA,CAAG,CACzD,IAAM1G,CAAAA,CAASyG,GAAiBC,CAAAA,CAAW8uB,EAAAA,CAAgBva,CAAK,CAAA,CAAGhe,CAAI,CAAA,CACvE,OAAO,CAAA,EAAGq3B,CAAAA,CAAUrZ,EAAOjb,CAAM,CAAC,CAAA,EAAA,EAAK03B,CAAI,EAC7C,CACA,IAAMj1B,EAAK8yB,EAAAA,CAAc7uB,CAAAA,CAAWuU,CAAK,CAAA,CAAsB,GAAA,CAE/D,OAAO,CAAA,WAAA,EADQwc,EAAQ,CAAA,EAAGh1B,CAAC,aAAaA,CAAC,CAAA,SAAA,EAAYA,CAAC,CAAA,CAAA,CAAA,CAAM,CAAA,EAAGA,CAAC,CAAA,KAAA,CACrC,SAASA,CAAC,CAAA,OAAA,EAAUi1B,CAAI,CAAA,CACrD,CAAA,CAGMC,GAAc,CAAC73B,CAAAA,CAAsBmb,CAAAA,GAWlC,CAAA,cAAA,EAVMle,GAAgB,OAAA,CAAStC,CAAAA,EAAU,CAC9C,IAAMm9B,EAAS,MAAA,CAAO,IAAA,CAAK93B,CAAK,CAAA,CAC7B,OAAQ7C,CAAAA,EAAS6C,CAAAA,CAAM7C,CAAI,CAAA,GAAM,MAAA,EAAaH,GAAeG,CAAI,CAAA,CAAE,QAAA,GAAaxC,CAAK,EACrF,GAAA,CAAKwC,CAAAA,EAAS,CACb,IAAM46B,EAAOL,EAAAA,CAAa13B,CAAAA,CAAM7C,CAAI,CAAA,CAAgBge,EAAOhe,CAAI,CAAA,CACzD,CAAE,MAAA,CAAA66B,CAAO,EAAIh7B,EAAAA,CAAeG,CAAI,CAAA,CACtC,OAAO66B,IAAW,CAAA,CAAID,CAAAA,CAAO,CAAA,EAAGC,CAAM,MAAMD,CAAI,CAAA,CAClD,CAAC,CAAA,CACH,OAAOD,CAAAA,CAAM,MAAA,CAAS,CAAC,CAAA,EAAGn9B,CAAK,OAAOm9B,CAAAA,CAAM,IAAA,CAAK,KAAK,CAAC,EAAE,CAAA,CAAI,EAC/D,CAAC,EAC4B,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA,CAI5BG,GAAY,CACvBlqB,CAAAA,CACA/N,EACAK,CAAAA,CACA8a,CAAAA,GACgB,CAChB,IAAM7a,CAAAA,CAAOkuB,EAAAA,CAAarT,CAAK,EAAE,QAAA,CACjC,GAAIpN,CAAAA,CAAI,IAAA,GAAS,SAAW,CAAC0pB,EAAAA,CAASz3B,CAAK,CAAA,CAAG,CAC5C,IAAMtH,CAAAA,CAAWoO,GAAa9G,CAAAA,CAAO01B,EAAAA,CAAgBva,CAAK,CAAC,CAAA,CAC3D,OAAIpN,CAAAA,CAAI,QAAU,IAAA,EAAQA,CAAAA,CAAI,KAAA,GAAU,MAAA,EAAarV,IAAa,IAAA,CAAa48B,EAAAA,CACxE,CACL,IAAA,CAAM,QACN,KAAA,CAAOl1B,EAAAA,CAAaf,oBAAM0O,CAAAA,CAAI,KAAa,EAAGrV,CAAAA,CAAU2H,CAAAA,CAAWC,CAAI,CAAA,CAAE,QAC3E,CACF,CACA,IAAMR,EACJiO,CAAAA,CAAI,IAAA,GAAS,QAAA,CACTA,CAAAA,CAAI,SACFA,CAAAA,CAAI,GAAA,CACJypB,GAAUzpB,CAAAA,CAAKoN,CAAK,EACtB,CAAA,EAAGqZ,CAAAA,CAAUrZ,CAAAA,CAAOpN,CAAAA,CAAI,OAAS,IAAI,CAAC,gBACtCmqB,CAAAA,CAAI1D,CAAAA,CAAUrZ,EAAO7a,CAAI,CAAA,CAE/B,OAAO,CACL,KAAM,QAAA,CACN,QAAA,CAAU,KACV,GAAA,CAAK,CAAA,GAAA,EAAMR,CAAI,CAAA,cAAA,EAAiBo4B,CAAC,CAAA,EAAA,EAJtB73B,CAAAA,GAAc,EAAI,GAAA,CAAM,GAIO,CAAA,CAAA,EAAIw3B,EAAAA,CAAY73B,EAAOmb,CAAK,CAAC,CAAA,eAAA,EAAkB+c,CAAC,GAC5F,CACF,CAAA,CCtGO,IAAMlI,EAAAA,CAAe,CAC1BjiB,EACAtnB,CAAAA,CACA00B,CAAAA,GACgB,CAChB,IAAMmQ,EAAKmK,EAAAA,CAAchvC,CAAAA,CAAQ00B,CAAK,CAAA,CACtC,GAAIpN,CAAAA,CAAI,IAAA,GAAS,OAAA,EAAWud,CAAAA,CAAG,OAAS,OAAA,CAAS,CAC/C,IAAMprB,CAAAA,CAASgH,EAAAA,CAAaokB,EAAG,KAAK,CAAA,CACpC,OAAOprB,CAAAA,GAAW,KAAOo1B,EAAAA,CAAW,CAAE,IAAA,CAAM,OAAA,CAAS,MAAOtuB,EAAAA,CAAU+G,CAAAA,CAAI,KAAA,CAAO7N,CAAM,CAAE,CAC3F,CACA,IAAMsG,CAAAA,CAAU,CAAC4M,EAAmBlR,CAAAA,GAClCkR,CAAAA,CAAK,IAAA,GAAS,QAAA,CACV,IAAIA,CAAAA,CAAK,GAAG,CAAA,mBAAA,CAAA,CACZ,CAAA,EAAGohB,EAAUrZ,CAAAA,CAAOjZ,CAAAA,CAAKkR,CAAAA,CAAK,KAAK,GAAK,IAAI,CAAC,qBACnD,OAAO,CACL,KAAM,QAAA,CACN,QAAA,CAAU,IAAA,CACV,GAAA,CAAK,IAAI5M,CAAAA,CAAQuH,CAAAA,CAAMjW,CAAAA,EAAMA,CAAC,CAAC,CAAA,GAAA,EAAM0O,CAAAA,CAAQ8kB,CAAAA,CAAIpkB,EAAY,CAAC,CAAA,CAAA,CAChE,CACF,EAIa+oB,EAAAA,CAAa,CACxBliB,EACAtnB,CAAAA,CACA00B,CAAAA,GACgB,CAChB,GAAIoa,GAAUxnB,CAAG,CAAA,CAAG,OAAOunB,EAAAA,CAC3B,IAAMhK,CAAAA,CAAKmK,EAAAA,CAAchvC,CAAAA,CAAQ00B,CAAK,EACtC,GAAImQ,CAAAA,CAAG,OAAS,QAAA,CACd,MAAM,IAAI,KAAA,CACR,CAAA,8BAAA,EAAiC7kC,CAAAA,CAAO,IAAI,yCAC9C,CAAA,CACF,IAAM4hB,CAAAA,CAAOlB,EAAAA,CAAYmkB,EAAG,KAAK,CAAA,CACjC,OAAOjjB,CAAAA,GAAS,KAAOitB,EAAAA,CAAW2C,EAAAA,CAAUlqB,EAAK,GAAG1F,CAAAA,CAAM8S,CAAK,CACjE,CAAA,CCxCA,IAAI+S,EAAAA,CAESC,GAAuBj2B,CAAAA,EAA+B,CACjEg2B,GAAWh2B,EACb,CAAA,CAEak2B,GAAmC,CAAC32B,CAAAA,CAAW0jB,CAAAA,GAAU+S,EAAAA,CAASz2B,EAAW0jB,CAAK,CAAA,CCiBxF,IAAM+V,EAAAA,CAAiB,CAAC3yB,EAAY4c,CAAAA,CAAqBrN,CAAAA,GAAyB,CACvF,IAAME,EAAQ1P,EAAAA,CAAiBC,CAAI,CAAA,CACnC,GAAIyP,EAAO,MAAMA,CAAAA,CACjB,IAAMtV,CAAAA,CACJoV,IAAQ,MAAA,CAAY2mB,EAAAA,CAAal2B,EAAK,KAAA,CAAO4c,CAAK,EAAI,CAAE,GAAA,CAAKrN,CAAAA,CAAK,KAAA,CAAO,QAAS,CAAA,CAEpF,GAAIpV,CAAAA,CAAS,KAAA,GAAU,YAAc,CAACqU,EAAAA,CAAgBxO,CAAI,CAAA,CAAG,MAAMH,EAAAA,CAAiBG,CAAAA,CAAK,KAAK,CAAA,CAE9F,IAAM03B,EAAWnoB,CAAAA,GAAQ,MAAA,CAEzB,GAAIpV,CAAAA,CAAS,QAAU,MAAA,EAAU,CAACwC,EAAAA,CAAmB,QAAA,CAASqD,EAAK,QAAQ,CAAA,CAAG,CAC5E,IAAMiI,EAAU2xB,EAAAA,CAAa55B,CAAAA,CAAM4c,CAAK,CAAA,CAClCh5B,CAAAA,CAAQi2B,GAAW7Z,CAAAA,CAAK,KAAA,CAAO4c,CAAAA,CAAM,GAAA,CAAKA,EAAM,YAAY,CAAA,CAC5DkW,CAAAA,CACJ7qB,CAAAA,GAAY4xB,IAAaj2C,CAAAA,EAAS,CAAC0qB,EAAAA,CAAatO,CAAAA,CAAMiI,CAAO,CAAA,CACzDkmB,EAAAA,CAAYnuB,EAAMiI,CAAAA,CAASrkB,CAAAA,CAAOg5B,EAAM,GAAG,CAAA,CAC3C,IAAA,CACN,GAAIkW,EAAS,CACX,IAAMtpB,CAAAA,CAAS,CAAA,EAAGrP,EAAS,GAAG,CAAA,aAAA,EAAgB87B,CAAAA,CAAUrZ,CAAAA,CAAOkW,EAAQ,MAAM,CAAC,IAC9E,OAAOA,CAAAA,CAAQ,YAAcyE,EAAAA,CAAUp9B,CAAAA,CAAS,GAAA,CAAKqP,CAAM,EAAIA,CACjE,CACF,CAEA,IAAMxY,EACJmJ,CAAAA,CAAS,KAAA,GAAU,MAAA,EAAU,CAACwC,GAAmB,QAAA,CAASqD,CAAAA,CAAK,QAAQ,CAAA,CACnE,CAAE,GAAG7F,CAAAA,CAAU,GAAA,CAAK,CAAA,EAAGA,CAAAA,CAAS,GAAG,CAAA,MAAA,CAAS,CAAA,CAC5CA,CAAAA,CAGN,GAAA,CADeA,EAAS,KAAA,GAAU,MAAA,EAAUA,CAAAA,CAAS,KAAA,GAAU,cACjD,CAACwC,EAAAA,CAAmB,SAASqD,CAAAA,CAAK,QAAQ,EAAG,CACzD,IAAMiI,CAAAA,CAAU2xB,EAAAA,CAAa55B,EAAM4c,CAAK,CAAA,CAExC,GAAI3U,CAAAA,GAAY4xB,EAAAA,CACd,MAAM,IAAI,KAAA,CACR,CAAA,gBAAA,EAAmB75B,CAAAA,CAAK,KAAK,CAAA,yEAAA,CAC/B,CAAA,CACF,OAAOk4B,EAAAA,CACLl4B,CAAAA,CACAu2B,GAAgBv2B,CAAAA,CAAK,KAAA,CAAO4c,CAAAA,CAAO,CAAE,MAAO,IAAK,CAAC,CAAA,CAClD3U,CAAAA,CACA2U,CACF,CACF,CAEA,IAAMkd,CAAAA,CAAqB7xB,GAA+B,CACxD,GACEA,EAAQ,IAAA,GAAS,QAAA,EACjB,CAACA,CAAAA,CAAQ,QAAA,GACRA,CAAAA,CAAQ,KAAA,GAAU,QAAUA,CAAAA,CAAQ,KAAA,GAAU,WAAA,CAAA,CAE/C,MAAM3H,EACJ,OAAA,CACA,CAAA,CAAA,EAAIN,CAAAA,CAAK,KAAK,4CACd,4BACF,CACJ,EACA,GAAIlD,EAAAA,CAAgB,SAASkD,CAAAA,CAAK,QAAQ,CAAA,CAAG,CAC3C,IAAM0I,CAAAA,CAAOqxB,EAAAA,CAAa/5B,CAAAA,CAAM4c,CAAK,EACrC,OAAAlU,CAAAA,EAAM,OAAA,CAAQoxB,CAAiB,EACxBlC,EAAAA,CAAS5mC,CAAAA,CAAS,IAAK0X,CAAAA,CAAM5K,CAAAA,CAAkB,SAASkC,CAAAA,CAAK,QAAQ,CAAA,CAAG4c,CAAAA,CAAO8a,CAAQ,CAChG,CACA,IAAMloB,CAAAA,CAAMwqB,GAAkBh6B,CAAAA,CAAM4c,CAAK,CAAA,CAGzC,GAFAkd,EAAkBtqB,CAAG,CAAA,CAGnBA,EAAI,IAAA,GAAS,QAAA,EACbzT,GAAciE,CAAAA,CAAK,QAAA,CAAU,OAAO,CAAA,GAAM,UAC1C,CAAC4hB,EAAAA,CAAUznB,CAAAA,CAAS,KAAK,GACzBA,CAAAA,CAAS,KAAA,GAAU,MAAA,CAEnB,MAAMmG,EAAe,OAAA,CAAS,CAAA,CAAA,EAAIN,EAAK,QAAQ,CAAA,MAAA,EAASA,EAAK,KAAK,CAAA,CAAA,CAAA,CAAK,gBAAgB,CAAA,CACzF,GAAIwP,CAAAA,CAAI,IAAA,GAAS,QAAA,EAAYA,CAAAA,CAAI,UAAYrV,CAAAA,CAAS,KAAA,GAAU,MAAA,EAAUoV,CAAAA,GAAQ,OAChF,MAAMjP,CAAAA,CACJ,QACA,CAAA,CAAA,EAAIN,CAAAA,CAAK,KAAK,CAAA,oCAAA,CAAA,CACd,oCACF,CAAA,CACF,IAAM5D,EAAQpL,CAAAA,CAAS,GAAA,CACjBkhB,CAAAA,CAAUmlB,EAAAA,CAAWr3B,EAAK,QAAA,CAAU,OAAO,CAAA,CACjD,GAAIkS,EAAS,OAAOylB,EAAAA,CAAWv7B,EAAO8V,CAAAA,CAAQ,MAAA,CAAQ1C,EAAK,KAAA,CAAOoN,CAAK,CAAA,CAEvE,GAAIpN,EAAI,IAAA,GAAS,OAAA,EAAWlB,GAAatO,CAAAA,CAAMwP,CAAAA,CAAI,KAAK,CAAA,CACtD,OAAOgoB,EAAAA,CAAap7B,CAAAA,CAAO0B,EAAkB,QAAA,CAASkC,CAAAA,CAAK,QAAQ,CAAA,CAAG03B,CAAQ,EAChF,IAAMuC,CAAAA,CAAazqB,CAAAA,CAAI,IAAA,GAAS,UAAYA,CAAAA,CAAI,QAAA,GAAa,IAAA,CACvDF,CAAAA,CACJtV,GAAuBgG,CAAAA,CAAK,eAAe,CAAA,GAC1CwP,CAAAA,CAAI,OAAS,QAAA,CACV,CAACyqB,GAAcrY,EAAAA,CAAUznB,CAAAA,CAAS,KAAK,CAAA,EAAKynB,EAAAA,CAAUpS,CAAAA,CAAI,KAAK,EAC/DqS,EAAAA,CAAa1nB,CAAAA,CAAS,KAAA,CAAOqV,CAAAA,CAAI,KAAK,CAAA,CAAA,CACtC8oB,CAAAA,CAAM/1B,CAAAA,EAA0B+M,CAAAA,CAAQ,SAAS/M,CAAI,CAAA,CAAA,CAAA,CAAMA,EAC3Di2B,CAAAA,CAAWvwC,CAAAA,EAAgCqnB,EAAQT,EAAAA,CAAa5mB,CAAM,CAAA,CAAIA,CAAAA,CAIhF,GACEkS,CAAAA,CAAS,KAAA,GAAU,MAAA,EACnBqV,CAAAA,CAAI,OAAS,QAAA,EACbxS,EAAAA,CAAmB,QAAA,CAASgD,CAAAA,CAAK,QAAQ,CAAA,CACzC,CACA,GACE6Z,EAAAA,CAAW7Z,CAAAA,CAAK,MAAO4c,CAAAA,CAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,GAAG,IAAA,GAAS,QAAA,EAChE,CAACgF,EAAAA,CAAUpS,EAAI,KAAK,CAAA,CAEpB,MAAMlP,CAAAA,CACJ,QACA,CAAA,CAAA,EAAIN,CAAAA,CAAK,QAAQ,CAAA,eAAA,EAAkBA,CAAAA,CAAK,KAAK,CAAA,+BAAA,EAAkCA,CAAAA,CAAK,IAAI,CAAA,EAAA,CAAA,CACxF,uDACF,CAAA,CACF,IAAMk6B,CAAAA,CACJlgC,EAAAA,CAAuBgG,EAAK,eAAe,CAAA,EAAK4hB,EAAAA,CAAUpS,CAAAA,CAAI,KAAK,CAAA,CAC/D,CAAA,6BAAA,EAAgCpT,CAAK,CAAA,8BAAA,EAAiCoT,CAAAA,CAAI,GAAG,CAAA,EAAA,CAAA,CAC7E,CAAA,eAAA,EAAkBpT,CAAK,CAAA,EAAA,EAAKoT,EAAI,GAAG,CAAA,aAAA,CAAA,CACzC,OAAOxP,CAAAA,CAAK,WAAa5F,CAAAA,CAAS,QAAA,CAC9B,CAAA,CAAA,EAAIoV,CAAAA,CAAI,GAAG,CAAA,iBAAA,EAAoB0qB,CAAG,IAClC,CAAA,CAAA,EAAI99B,CAAK,gBAAgBoT,CAAAA,CAAI,GAAG,CAAA,qBAAA,EAAwB0qB,CAAG,IACjE,CAIA,GAAI//B,CAAAA,CAAS,KAAA,GAAU,QAAUqV,CAAAA,CAAI,IAAA,GAAS,OAAA,CAAS,CACrD,IAAM2qB,CAAAA,CACJngC,EAAAA,CAAuBgG,EAAK,eAAe,CAAA,EAAK6hB,GAAa,MAAA,CAAQrS,CAAAA,CAAI,KAAK,CAAA,CAChF,GAAIxS,EAAAA,CAAmB,QAAA,CAASgD,EAAK,QAAQ,CAAA,CAAG,CAC9C,IAAM2O,CAAAA,CAASsnB,CAAAA,CAAUrZ,CAAAA,CAAOpN,EAAI,KAAK,CAAA,CACnC0qB,EAAMC,CAAAA,CACR,CAAA,6BAAA,EAAgC/9B,CAAK,CAAA,8BAAA,EAAiCuS,CAAM,CAAA,EAAA,CAAA,CAC5E,CAAA,eAAA,EAAkBvS,CAAK,CAAA,EAAA,EAAKuS,CAAM,CAAA,aAAA,CAAA,CACtC,OAAO3O,EAAK,QAAA,GAAa5F,CAAAA,CAAS,QAAA,CAAW8/B,CAAAA,CAAM,OAAOA,CAAG,CAAA,CAC/D,CACA,GAAI78B,EAAAA,CAAc,SAAS2C,CAAAA,CAAK,QAAQ,CAAA,EAAK,KAAA,CAAM,QAAQwP,CAAAA,CAAI,KAAK,CAAA,CAClE,OAAOqgB,GAAephB,EAAAA,CAAezO,CAAAA,CAAMwP,CAAAA,CAAI,KAAK,EAAGoN,CAAK,CAAA,CAC9D,GAAIwd,EAAAA,CAAgBp6B,CAAAA,CAAK,QAAQ,CAAA,CAC/B,MAAM,IAAI,KAAA,CACR,IAAIA,CAAAA,CAAK,QAAQ,CAAA,8BAAA,EAAiCA,CAAAA,CAAK,KAAK,CAAA,kCAAA,CAC9D,CAAA,CACF,GAAIm6B,CAAAA,EAAa/8B,GAAmB,QAAA,CAAS4C,CAAAA,CAAK,QAAQ,CAAA,EAAK,KAAA,CAAM,QAAQwP,CAAAA,CAAI,KAAK,CAAA,CAAG,CACvF,IAAMgpB,CAAAA,CAAUvC,CAAAA,CAAUrZ,CAAAA,CAAO/N,EAAAA,CAAaW,EAAI,KAAK,CAAC,CAAA,CAClD6qB,CAAAA,CAAO,IAAIj+B,CAAK,CAAA,mDAAA,EAAsDA,CAAK,CAAA,UAAA,EAAao8B,CAAO,IACrG,OAAOx4B,CAAAA,CAAK,QAAA,GAAa5F,CAAAA,CAAS,OAASigC,CAAAA,CAAO9C,EAAAA,CAAUn7B,CAAAA,CAAO,CAAA,IAAA,EAAOi+B,CAAI,CAAA,CAAE,CAClF,CACF,CAGA,IAAMC,CAAAA,CAAS9qB,CAAAA,CAAI,OAAS,OAAA,CAAUA,CAAAA,CAAI,MAAQ,MAAA,CAC5C+qB,CAAAA,CAAS/qB,CAAAA,CAAI,IAAA,GAAS,SAAWA,CAAAA,CAAI,GAAA,CAAM,MAAA,CAGjD,GACE+qB,IAAW,MAAA,GACVl9B,EAAAA,CAAc,QAAA,CAAS2C,CAAAA,CAAK,QAAQ,CAAA,EAAKjE,EAAAA,CAAciE,EAAK,QAAA,CAAU,OAAO,IAAM,SAAA,CAAA,CAEpF,MAAMM,CAAAA,CACJ,OAAA,CACA,IAAIN,CAAAA,CAAK,QAAQ,CAAA,oCAAA,EAAuCA,CAAAA,CAAK,IAAI,CAAA,EAAA,CACnE,CAAA,CAGF,IAAMu3B,CAAAA,CAAUh1B,GAA0Bm1B,CAAAA,CAAWH,EAAAA,CAAUn7B,EAAOmG,CAAI,CAAA,CAAIA,EAE9E,OAAQvC,CAAAA,CAAK,QAAA,EACX,KAAK5F,CAAAA,CAAS,MAAA,CACZ,OAAI6/B,CAAAA,CAAmB,GAAG79B,CAAK,CAAA,GAAA,EAAMm+B,CAAM,CAAA,CAAA,CACvCA,IAAW,MAAA,CAAkB,CAAA,EAAGjC,EAAGl8B,CAAK,CAAC,yBAAyBk8B,CAAAA,CAAGiC,CAAM,CAAC,CAAA,CAAA,CAC5ED,IAAW,IAAA,CAAa,CAAA,EAAGl+B,CAAK,CAAA,QAAA,CAAA,CAC7B,GAAGk8B,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,GAAA,EAAMk8B,EAAGrC,CAAAA,CAAUrZ,CAAAA,CAAO0d,CAAM,CAAC,CAAC,GAEvD,KAAKlgC,CAAAA,CAAS,SAAA,CACZ,OAAI6/B,EAAmB1C,CAAAA,CAAO,CAAA,EAAGn7B,CAAK,CAAA,IAAA,EAAOm+B,CAAM,CAAA,CAAE,CAAA,CACjDA,CAAAA,GAAW,MAAA,CAAkB,GAAGjC,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,kBAAA,EAAqBk8B,CAAAA,CAAGiC,CAAM,CAAC,CAAA,CAAA,CACxED,CAAAA,GAAW,IAAA,CAAa,GAAGl+B,CAAK,CAAA,YAAA,CAAA,CAC7Bm7B,CAAAA,CAAO,CAAA,EAAGe,EAAGl8B,CAAK,CAAC,CAAA,IAAA,EAAOk8B,CAAAA,CAAGrC,EAAUrZ,CAAAA,CAAO0d,CAAM,CAAC,CAAC,CAAA,CAAE,EAEjE,KAAKlgC,CAAAA,CAAS,EAAA,CAAI,CAChB,GAAM,CAAE,MAAA,CAAAnS,CAAAA,CAAQ,OAAA,CAAAmmC,CAAQ,CAAA,CAAIpmB,EAAAA,CAAUsyB,CAAM,CAAA,CAC5C,GAAI,CAACryC,CAAAA,CAAO,OAAQ,OAAOmmC,CAAAA,CAAU,GAAGhyB,CAAK,CAAA,QAAA,CAAA,CAAa,OAAA,CAC1D,IAAMsK,EAAQ,CAAA,EAAG4xB,CAAAA,CAAGl8B,CAAK,CAAC,UAAU65B,CAAAA,CAAUrZ,CAAAA,CAAO4b,CAAAA,CAAQvwC,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,CACrE,OAAOmmC,CAAAA,CAAUmJ,CAAAA,CAAO7wB,CAAK,CAAA,CAAIA,CACnC,CAEA,KAAKtM,EAAS,KAAA,CAAO,CACnB,GAAM,CAAE,OAAAnS,CAAAA,CAAQ,OAAA,CAAAmmC,CAAQ,CAAA,CAAIpmB,GAAUsyB,CAAM,CAAA,CAC5C,GAAI,CAACryC,CAAAA,CAAO,OAAQ,OAAOmmC,CAAAA,CAAU,CAAA,EAAGhyB,CAAK,eAAiB,MAAA,CAC9D,IAAMo+B,CAAAA,CAAS,CAAA,EAAGlC,EAAGl8B,CAAK,CAAC,CAAA,QAAA,EAAW65B,CAAAA,CAAUrZ,EAAO4b,CAAAA,CAAQvwC,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,CACvE,OAAOmmC,CAAAA,CAAU,CAAA,CAAA,EAAIoM,CAAM,CAAA,KAAA,EAAQp+B,CAAK,CAAA,aAAA,CAAA,CAAkBm7B,CAAAA,CAAOiD,CAAM,CACzE,CAEA,KAAKpgC,CAAAA,CAAS,QAAA,CACZ,OAAO,CAAA,EAAGk+B,EAAGl8B,CAAK,CAAC,SAASk8B,CAAAA,CAAGrC,CAAAA,CAAUrZ,EAAO,CAAA,CAAA,EAAI8R,CAAAA,CAAkB,MAAA,CAAO4L,CAAM,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,GAE5F,KAAKlgC,CAAAA,CAAS,WAAA,CACZ,OAAOm9B,EACL,CAAA,EAAGe,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,UAAA,EAAak8B,EAAGrC,CAAAA,CAAUrZ,CAAAA,CAAO,CAAA,CAAA,EAAI8R,CAAAA,CAAkB,OAAO4L,CAAM,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CACzF,CAAA,CAEF,KAAKlgC,EAAS,UAAA,CACZ,OAAO,GAAGk+B,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,MAAA,EAASk8B,CAAAA,CAAGrC,CAAAA,CAAUrZ,CAAAA,CAAO,GAAG8R,CAAAA,CAAkB,MAAA,CAAO4L,CAAM,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,CAE3F,KAAKlgC,CAAAA,CAAS,QAAA,CACZ,OAAO,CAAA,EAAGk+B,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,MAAA,EAASk8B,CAAAA,CAAGrC,CAAAA,CAAUrZ,EAAO,CAAA,CAAA,EAAI8R,CAAAA,CAAkB,MAAA,CAAO4L,CAAM,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,GAE3F,KAAKlgC,CAAAA,CAAS,cACZ,OAAOm9B,CAAAA,CACL,GAAGe,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,UAAA,EAAak8B,EAAGrC,CAAAA,CAAUrZ,CAAAA,CAAO,CAAA,EAAG8R,CAAAA,CAAkB,OAAO4L,CAAM,CAAC,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CACxF,EAEF,KAAKlgC,CAAAA,CAAS,YACZ,OAAOm9B,CAAAA,CACL,CAAA,EAAGe,CAAAA,CAAGl8B,CAAK,CAAC,CAAA,UAAA,EAAak8B,CAAAA,CAAGrC,CAAAA,CAAUrZ,EAAO,CAAA,CAAA,EAAI8R,CAAAA,CAAkB,MAAA,CAAO4L,CAAM,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,CACxF,EAEF,KAAKlgC,CAAAA,CAAS,OAAA,CACZ,OAAOqgC,GAASr+B,CAAAA,CAAOk+B,CAAAA,CAAQ,KAAA,CAAO1d,CAAK,EAE7C,KAAKxiB,CAAAA,CAAS,UAAA,CACZ,OAAOm9B,EAAOkD,EAAAA,CAASr+B,CAAAA,CAAOk+B,EAAQ,IAAA,CAAM1d,CAAK,CAAC,CAAA,CAEpD,KAAKxiB,CAAAA,CAAS,OAAA,CACd,KAAKA,CAAAA,CAAS,QAAA,CACZ,OAAOsgC,EAAAA,CACL16B,CAAAA,CAAK,MACL7F,CAAAA,CACA6F,CAAAA,CAAK,QAAA,GAAa5F,CAAAA,CAAS,QAC3BwiB,CAAAA,CACA8E,EAAAA,CAAmB1hB,EAAM4c,CAAAA,CAAM,GAAA,CAAKA,EAAM,YAAY,CACxD,CAAA,CAEF,KAAKxiB,EAAS,MAAA,CACZ,OAAO,CAAA,EAAGgC,CAAK,eAEjB,KAAKhC,CAAAA,CAAS,SAAA,CACZ,OAAO,GAAGgC,CAAK,CAAA,QAAA,CAAA,CAEjB,QACE,MAAM,IAAI,MAAM,CAAA,kBAAA,EAAsB4D,CAAAA,CAAc,QAAQ,CAAA,CAAE,CAClE,CACF,CAAA,CAGMg6B,EAAAA,CAAoB,CAACh6B,EAAY4c,CAAAA,GAAqC,CAC1E,GAAIjgB,EAAAA,CAAmB,SAASqD,CAAAA,CAAK,QAAQ,EAAG,OAAO,CAAE,KAAM,OAAA,CAAS,KAAA,CAAO,MAAU,CAAA,CACzF,IAAMwP,CAAAA,CAAMmrB,EAAAA,CAAO36B,CAAAA,CAAMk3B,EAAAA,CAAcl3B,EAAM4c,CAAK,CAAA,CAAGA,CAAK,CAAA,CAC1D,OAAO5c,CAAAA,CAAK,MAAA,GAAW,OAAYwP,CAAAA,CAAMiiB,EAAAA,CAAajiB,EAAKxP,CAAAA,CAAK,MAAA,CAAQ4c,CAAK,CAC/E,EAEM+d,EAAAA,CAAS,CAAC36B,CAAAA,CAAYwP,CAAAA,CAAkBoN,IAC5CpN,CAAAA,CAAI,IAAA,GAAS,QAAA,CACTA,CAAAA,CACA,CACE,IAAA,CAAM,OAAA,CACN,MAAO4S,EAAAA,CACLpiB,CAAAA,CACAwP,EAAI,KAAA,CACJoK,EAAAA,CAAS5Z,CAAAA,CAAK,KAAA,CAAO4c,EAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,CAAA,CAClD,QACA,IAAMqT,EAAAA,CAAarT,CAAK,CAAA,CAAE,QAC5B,CACF,CAAA,CAGAmd,GAAe,CAAC/5B,CAAAA,CAAY4c,IAA2D,CAC3F,IAAMpN,CAAAA,CAAMmrB,EAAAA,CAAO36B,EAAMk3B,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CAAGA,CAAK,CAAA,CACpD7M,CAAAA,CAAQP,CAAAA,CAAI,IAAA,GAAS,QAAUA,CAAAA,CAAI,KAAA,CAAQ,OACjD,GAAIO,CAAAA,EAAU,KAA6B,OAAO,IAAA,CAElD,IAAMrH,CAAAA,CAAOf,GAASoI,CAAAA,CAAO/P,CAAAA,CAAK,QAAQ,CAAA,CAC1C,OAAI0I,CAAAA,CAAK,IAAA,CAAMxI,CAAAA,EAAQA,CAAAA,EAAO,MAAQ,CAAC4H,CAAAA,CAAe5H,CAAG,CAAC,CAAA,EACxD0H,GAAgBmI,CAAAA,CAAO/P,CAAAA,CAAK,QAAQ,CAAA,CAC/B0H,GAAUgB,CAAI,CAAA,CAAE,IAAKvzB,CAAAA,EAAU,CACpC,IAAM+qB,CAAAA,CAAmB,CAAE,IAAA,CAAM,OAAA,CAAS,MAAA/qB,CAAM,CAAA,CAChD,OAAO6qB,CAAAA,CAAK,MAAA,GAAW,OAAYE,CAAAA,CAAMuxB,EAAAA,CAAavxB,CAAAA,CAAKF,CAAAA,CAAK,OAAQ4c,CAAK,CAC/E,CAAC,CACH,EAGM6d,EAAAA,CAAW,CAACr+B,CAAAA,CAAejnB,CAAAA,CAAgBsiD,EAAkB7a,CAAAA,GAAgC,CACjG,GAAI,OAAOznC,CAAAA,EAAU,UAAY,EAAEA,CAAAA,YAAiB,MAAA,CAAA,CAClD,MAAM,IAAI,KAAA,CAAM,6CAA6C,CAAA,CAC/D,GAAM,CAAE,MAAA,CAAA2E,CAAAA,CAAQ,eAAA,CAAAqyB,CAAgB,EAAIF,EAAAA,CAAY92B,CAAK,EACrD,OAAO,CAAA,EAAGinB,CAAK,CAAA,CAAA,EAAIq7B,CAAAA,CAAU,GAAA,CAAM,EAAE,IAAItrB,CAAAA,CAAkB,GAAA,CAAM,EAAE,CAAA,CAAA,EAAI8pB,EAAUrZ,CAAAA,CAAO9P,EAAAA,CAAehzB,CAAM,CAAC,CAAC,CAAA,CACjH,CAAA,CAEM+/C,GAAY,MAAA,CAAO,WAAW,EAI9BD,EAAAA,CAAe,CAAC55B,CAAAA,CAAY4c,CAAAA,GAAiC,CACjE,GAAI9f,EAAAA,CAAgB,QAAA,CAASkD,CAAAA,CAAK,QAAQ,CAAA,CAAG,CAC3C,IAAM0I,CAAAA,CAAOqxB,GAAa/5B,CAAAA,CAAM4c,CAAK,EACrC,OAAKlU,CAAAA,CACEA,EAAK,KAAA,CAAOxI,CAAAA,EAAQA,CAAAA,CAAI,IAAA,GAAS,OAAO,CAAA,CAC3CwI,CAAAA,CAAK,GAAA,CAAKxI,CAAAA,EAASA,EAA2B,KAAK,CAAA,CACnD25B,EAAAA,CAHc,IAIpB,CACA,IAAMrqB,CAAAA,CAAMwqB,GAAkBh6B,CAAAA,CAAM4c,CAAK,EACzC,OAAOpN,CAAAA,CAAI,IAAA,GAAS,OAAA,CAAUA,EAAI,KAAA,CAAQqqB,EAC5C,CAAA,CAMaa,EAAAA,CAAe,CAC1B/yC,CAAAA,CACAyU,CAAAA,CACAm2B,CAAAA,CACA3V,CAAAA,CACAyV,IACW,CACX,GAAM,CAAE,GAAA,CAAAiE,CAAAA,CAAK,MAAAzlB,CAAM,CAAA,CAAIzU,CAAAA,CACvB,GAAIyU,IAAU,MAAA,CACZ,OAAO0hB,CAAAA,CAAQ,CAAA,CAAA,EAAI+D,CAAG,CAAA,wBAAA,EAA2BA,CAAG,CAAA,MAAA,CAAA,CAAW,CAAA,YAAA,EAAeA,CAAG,CAAA,KAAA,CAAA,CACnF,GAAIzlB,IAAU,MAAA,EAAUA,CAAAA,GAAU,YAAa,CAC7C,IAAMsnB,CAAAA,CAAI5B,EAAAA,CAAgB5uC,EAAMi1B,CAAAA,CAAO,CAAE,MAAO,IAAK,CAAC,EAChD30B,CAAAA,CAAS,CAAC,eAAA,CAAiB,GAAIoqC,EAAc,CAAC,CAAA,WAAA,CAAa,EAAI,EAAC,CAAI,aAAa,CAAA,CAAE,IAAA,CACvF,IACF,CAAA,CACA,OAAOE,CAAAA,CAAQ,CAAA,CAAA,EAAI4F,CAAC,CAAA,YAAA,EAAeA,CAAC,CAAA,KAAA,EAAQlwC,CAAM,CAAA,EAAA,CAAA,CAAO,CAAA,EAAGkwC,CAAC,CAAA,SAAA,EAAYlwC,CAAM,GACjF,CACA,OAAKoqC,EACEE,CAAAA,CAAQ,CAAA,CAAA,EAAI+D,CAAG,CAAA,YAAA,EAAeA,CAAG,CAAA,MAAA,CAAA,CAAW,CAAA,CAAA,EAAIA,CAAG,CAAA,iBAAA,EAAoBA,CAAG,CAAA,OAAA,CAAA,CADxD/D,CAAAA,CAAQ,CAAA,EAAG+D,CAAG,WAAa,CAAA,EAAGA,CAAG,cAE5D,CAAA,CAGM8D,EAAAA,CAAmB1+B,GACvBK,EAAAA,CAAcL,CAAAA,CAAU,OAAO,CAAA,GAAM,UAAY,CAACsB,EAAAA,CAAmB,QAAA,CAAStB,CAAQ,ECxVjF,IAAMs4B,EAAAA,CAAqB,CAACh0B,CAAAA,CAAqB4c,IAAgC,CACtF,GAAIjM,GAAU3Q,CAAI,CAAA,CAAG,MAAMS,EAAAA,CAAkB,OAAO,CAAA,CACpD,GAAIT,EAAK,SAAA,CACP,MAAM,IAAI,KAAA,CACR,yIAEF,CAAA,CAGF,IAAM46B,CAAAA,CAAWC,EAAAA,CAAuB76B,EAAM4c,CAAK,CAAA,CAEnD,OAAO+V,EAAAA,CAAe3yB,CAAAA,CAAyB4c,EAAOge,CAAQ,CAChE,CAAA,CAEMC,EAAAA,CAAyB,CAAC76B,CAAAA,CAAqB4c,CAAAA,GAAgC,CACnF,GAAM,CAAE,IAAA,CAAAxc,CAAAA,CAAM,KAAA,CAAO8S,CAAU,EAAIlT,CAAAA,CAAK,SAAA,CAExC,GAAI,CAAC9C,EAAAA,CAAgB,SAASkD,CAAI,CAAA,CAAG,MAAMD,EAAAA,CAAqBC,CAAI,CAAA,CACpE,IAAMzG,CAAAA,CAAKyG,CAAAA,GAAS,MAAQ,KAAA,CAAQ,KAAA,CAE9ByQ,CAAAA,CAAQkR,EAAAA,CAAU,CAAE,KAAA,CAAO/hB,CAAAA,CAAK,KAAM,CAAA,CAAG4c,CAAAA,CAAM,IAAKA,CAAAA,CAAM,YAAY,CAAA,CAE5E,GACE/L,IAAU,UAAA,EACVgJ,EAAAA,CAAW7Z,CAAAA,CAAK,KAAA,CAAO4c,EAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,CAAA,EAAG,OAAS,QAAA,CAEhE,MAAM,IAAI,KAAA,CACR,CAAA,OAAA,EAAU5c,EAAK,KAAK,CAAA,uFAAA,CACtB,CAAA,CAGF,GAAIkT,GAAW,QAAA,CAAS,GAAG,EACzB,MAAM,IAAI,MACR,CAAA,iBAAA,EAAoBA,CAAS,CAAA,qGAAA,CAC/B,CAAA,CAGF,IAAM4nB,CAAAA,CAAWjqB,CAAAA,GAAU,OAIrBlN,CAAAA,CAAO4yB,EAAAA,CAAgBv2B,EAAK,KAAA,CAAO4c,CAAAA,CAAO,CAAE,KAAA,CAAO,CAACke,CAAS,CAAC,CAAA,CAC9D1+B,CAAAA,CAAQ0+B,EAAWn3B,CAAAA,CAAO,CAAA,wBAAA,EAA2BA,CAAI,CAAA,iBAAA,EAAoBA,CAAI,CAAA,KAAA,CAAA,CAEvF,GAAIm3B,EAAU,CACZ,GAAI5nB,EACF,MAAM,IAAI,KAAA,CACR,gGACF,EAGF,OAAO,CAAA,QAAA,EADK,CAAA,SAAA,EAAYvZ,CAAE,YACL,CAAA,aAAA,EAAgByC,CAAK,CAAA,UAAA,CAC5C,CAEA,GAAI8W,CAAAA,CAAW,CAEb,IAAM6nB,CAAAA,CAAU,CAAA,QAAA,EAAW/L,GAAQ9b,CAAS,CAAC,CAAA,UAAA,CAAA,CAE7C,OAAO,WADK,CAAA,SAAA,EAAYvZ,CAAE,CAAA,CAAA,EAAIohC,CAAO,OAChB,CAAA,2BAAA,EAA8B3+B,CAAK,CAAA,UAAA,CAC1D,CAKA,OAAO,CAAA,QAAA,EADK,CAAA,SAAA,EAAYzC,CAAE,CAAA,mBAAA,CACL,CAAA,gCAAA,EAAmCyC,CAAK,CAAA,UAAA,CAC/D,CAAA,CClEO,IAAMm4B,EAAAA,CAAiB,CAACv0B,CAAAA,CAAiB4c,CAAAA,GAAgC,CAC9E,GAAIjM,GAAU3Q,CAAI,CAAA,CAAG,MAAMS,EAAAA,CAAkB,OAAO,CAAA,CACpD,GAAI,CAACT,CAAAA,CAAK,KAAA,CACR,MAAMP,EAAAA,CAAoB,OAAO,CAAA,CAGnC,GADcsiB,GAAU,CAAE,KAAA,CAAO/hB,CAAAA,CAAK,KAAM,EAAG4c,CAAAA,CAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,IAEhE,UAAA,EACV/C,EAAAA,CAAW7Z,EAAK,KAAA,CAAO4c,CAAAA,CAAM,IAAKA,CAAAA,CAAM,YAAY,CAAA,EAAG,IAAA,GAAS,SAEhE,MAAM,IAAI,KAAA,CACR,CAAA,OAAA,EAAU5c,EAAK,KAAK,CAAA,gFAAA,CACtB,CAAA,CAEF,OAAQA,EAAK,aAAA,EACX,KAAK3F,CAAAA,CAAc,KAAA,CACnB,KAAKA,CAAAA,CAAc,QAAA,CAAU,CAE3B,IAAM+B,EAAQ85B,EAAAA,CAAal2B,CAAAA,CAAK,KAAA,CAAO4c,CAAK,EACtCoe,CAAAA,CAAa5+B,CAAAA,CAAM,KAAA,GAAU,MAAA,CAASA,EAAQ,CAAE,GAAGA,EAAO,KAAA,CAAO,WAAqB,EAC5F,OAAOs+B,EAAAA,CACL16B,CAAAA,CAAK,KAAA,CACLg7B,EACAh7B,CAAAA,CAAK,aAAA,GAAkB3F,EAAc,KAAA,CACrCuiB,CAAAA,CACA,KACF,CACF,CAEA,KAAKviB,CAAAA,CAAc,IACnB,KAAKA,CAAAA,CAAc,IACnB,KAAKA,CAAAA,CAAc,KACnB,KAAKA,CAAAA,CAAc,OAAA,CACnB,KAAKA,EAAc,MAAA,CACnB,KAAKA,CAAAA,CAAc,OAAA,CACjB,MAAM,IAAI,KAAA,CACR,CAAA,gBAAA,EAAmB2F,CAAAA,CAAK,aAAa,CAAA,wGAAA,CAEvC,CAAA,CAEF,QACE,MAAMhE,CAAAA,CAAiBgE,EAAmB,aAAA,CAAe,OAAO,CACpE,CACF,ECpBA,IAAMi7B,EAAAA,CAAY,CAACzrB,CAAAA,CAAkBoN,IACnCpN,CAAAA,CAAI,IAAA,GAAS,QAAA,EAAY,CAACA,EAAI,QAAA,CAC1B,CAAE,KAAM,QAAA,CAAU,GAAA,CAAKypB,GAAUzpB,CAAAA,CAAKoN,CAAK,CAAA,CAAG,QAAA,CAAU,IAAK,CAAA,CAC7DpN,CAAAA,CAIA0rB,EAAAA,CAAarqB,CAAAA,EACjBA,IAAU,MAAA,EACVA,CAAAA,GAAU,SAAA,EACVA,CAAAA,GAAU,QACVA,CAAAA,GAAU,WAAA,EACVA,IAAU,SAAA,CACNsqB,EAAAA,CAAY/+B,GAChBkE,CAAAA,CAAe,OAAA,CAAS,CAAA,gBAAA,EAAmBlE,CAAK,IAAK,yBAAyB,CAAA,CAE1Eg/B,EAAAA,CAAQ,CACZh/B,EACAsM,CAAAA,CACAkU,CAAAA,GACyC,CACzC,IAAMib,EAASnvB,CAAAA,CAAK,IAAA,CAAMxI,GAAQA,CAAAA,CAAI,IAAA,GAAS,QAAQ,CAAA,CACjDk4B,CAAAA,CAAOh8B,CAAAA,CAAM,KAAA,GAAU,aAAeA,CAAAA,CAAM,KAAA,GAAU,MAAA,CAC5D,OAAOy7B,GAAUO,CAAAA,CACb,CAAE,GAAA,CAAKa,EAAAA,CAAU78B,EAAOwgB,CAAK,CAAA,CAAG,KAAMlU,CAAAA,CAAK,GAAA,CAAKxI,GAAQ+6B,EAAAA,CAAU/6B,CAAAA,CAAK0c,CAAK,CAAC,CAAE,CAAA,CAC/E,CAAE,GAAA,CAAKxgB,CAAAA,CAAM,IAAK,IAAA,CAAAsM,CAAK,CAC7B,CAAA,CAEaosB,GAAgB,CAAC90B,CAAAA,CAAgB4c,IAAgC,CAC5E,IAAMxgB,EAAQ85B,EAAAA,CAAal2B,CAAAA,CAAK,KAAA,CAAO4c,CAAK,EAC5C,GAAI,CAACse,EAAAA,CAAU9+B,CAAAA,CAAM,KAAK,CAAA,CAAG,MAAM++B,EAAAA,CAASn7B,CAAAA,CAAK,KAAK,CAAA,CACtD,IAAMiI,EAAUivB,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CACzC,GAAI3U,CAAAA,CAAQ,IAAA,GAAS,UAAY,CAACizB,EAAAA,CAAUjzB,EAAQ,KAAK,CAAA,CACvD,MAAMkzB,EAAAA,CAAS,MAAA,CAAOn7B,CAAAA,CAAK,IAAA,EAAQA,EAAK,KAAK,CAAC,EAChD,IAAMkS,CAAAA,CAAUmlB,GAAWr3B,CAAAA,CAAK,YAAA,CAAc,MAAM,CAAA,CACpD,GAAIkS,CAAAA,CAAS,CACX,GAAM,CAAE,IAAA3C,CAAAA,CAAK,IAAA,CAAA7G,CAAK,CAAA,CAAI0yB,GAAMh/B,CAAAA,CAAO,CAACi/B,GAAar7B,CAAAA,CAAM4c,CAAK,CAAC,CAAA,CAAGA,CAAK,CAAA,CACrE,OAAO+a,GAAWpoB,CAAAA,CAAK2C,CAAAA,CAAQ,MAAA,CAAQxJ,CAAAA,CAAK,CAAC,CAAA,CAAGwJ,CAAAA,CAAQ,OAAA,CAAS0K,CAAK,CACxE,CAEA,IAAM7M,EAAQ,CAAClI,CAAAA,CAAyC4vB,IAA6B,CACnF,GAAI,CAAC5vB,CAAAA,CAAM,OAAO+vB,EAAAA,CAASx7B,CAAAA,CAAM,GAAA,CAAK,IAAA,CAAMq7B,EAAS7a,CAAK,CAAA,CAC1D,GAAM,CAAE,IAAArN,CAAAA,CAAK,IAAA,CAAA7G,CAAK,CAAA,CAAI0yB,EAAAA,CAAMh/B,EAAOyL,CAAAA,CAAM+U,CAAK,CAAA,CAC9C,OAAOgb,GAASroB,CAAAA,CAAK7G,CAAAA,CAAoC+uB,CAAAA,CAAS7a,CAAK,CACzE,CAAA,CAEA,OAAQ5c,CAAAA,CAAK,YAAA,EACX,KAAK1F,CAAAA,CAAa,OAClB,KAAKA,CAAAA,CAAa,UAChB,OAAOyV,CAAAA,CAAMurB,EAAAA,CAAct7B,CAAAA,CAAM4c,CAAK,CAAA,CAAG9e,CAAAA,CAAkB,QAAA,CAASkC,CAAAA,CAAK,YAAY,CAAC,CAAA,CAExF,KAAK1F,CAAAA,CAAa,QAClB,KAAKA,CAAAA,CAAa,WAChB,OAAOyV,CAAAA,CAAMgqB,GAAa/5B,CAAAA,CAAM4c,CAAK,CAAA,CAAG9e,CAAAA,CAAkB,SAASkC,CAAAA,CAAK,YAAY,CAAC,CAAA,CAEvF,KAAK1F,CAAAA,CAAa,KAAA,CAClB,KAAKA,CAAAA,CAAa,SAAU,CAC1B,IAAMm9B,EAAUz3B,CAAAA,CAAK,YAAA,GAAiB1F,EAAa,QAAA,CAC7CxgB,CAAAA,CAASo9C,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CACxC,GAAI9iC,CAAAA,CAAO,IAAA,GAAS,SAClB,MAAMwmB,CAAAA,CAAe,OAAA,CAAS,CAAA,mCAAA,EAAsCN,EAAK,IAAI,CAAA,EAAA,CAAI,EACnF,IAAMoT,CAAAA,CAAU7J,GAAWzvB,CAAAA,CAAO,KAAK,CAAA,CACvC,GAAIs5B,IAAY,IAAA,CAAM,OAAOokB,GAAap7B,CAAAA,CAAM,GAAA,CAAKq7B,CAAO,CAAA,CAC5D,IAAM11B,CAAAA,CAAOk0B,CAAAA,CAAUrZ,EAAOqT,EAAAA,CAAarT,CAAK,EAAE,QAAQ,CAAA,CACpD3a,EAAOg0B,CAAAA,CAAUrZ,CAAAA,CAAOxJ,CAAO,CAAA,CAC/BmoB,EAAM,CAAA,kBAAA,EAAqBtC,EAAAA,CAAU78B,CAAAA,CAAOwgB,CAAK,CAAC,CAAA,cAAA,EAAiB7a,CAAI,CAAA,EAAA,CAAA,CAC7E,OAAO/B,EAAK,YAAA,GAAiB1F,CAAAA,CAAa,MACtC,CAAA,EAAGihC,CAAG,UAAUt5B,CAAI,CAAA,CAAA,CAAA,CACpBs1B,EAAAA,CAAOn7B,CAAAA,CAAM,IAAK,CAAA,EAAGm/B,CAAG,CAAA,QAAA,EAAWt5B,CAAI,GAAG,CAChD,CAEA,QACE,MAAMjG,EAAiBgE,CAAAA,CAAkB,YAAA,CAAc,MAAM,CACjE,CACF,EAEMw7B,EAAAA,CAAc5e,CAAAA,GAAsC,CACxD,IAAA,CAAM,QACN,KAAA,CAAOvb,EAAAA,CAAW4uB,EAAAA,CAAarT,CAAK,CAAC,CAAA,CAAE,MAAA,EACzC,CAAA,CAAA,CAEM6e,GAAkB,CAACl5B,CAAAA,CAAgB7G,EAAkBkhB,CAAAA,GAAqC,CAC9F,IAAM1Z,CAAAA,CAAUZ,EAAAA,CAAaC,CAAI,CAAA,CACjC,GAAIW,CAAAA,EAAWg2B,EAAAA,CAASh2B,CAAAA,CAAQ,CAAC,CAAC,CAAA,CAAG,OAAOw2B,EAAAA,CAAU8B,EAAAA,CAAW5e,CAAK,CAAA,CAAG,GAAG1Z,EAAS0Z,CAAK,CAAA,CAC1F,IAAMziB,CAAAA,CAAWqO,EAAAA,CAAYjG,CAAAA,CAAM40B,EAAAA,CAAgBva,CAAK,CAAC,CAAA,CACzD,OAAIziB,CAAAA,GAAa,KAAa48B,EAAAA,CACvB,CACL,IAAA,CAAM,OAAA,CACN,MAAO3zB,EAAAA,CAAwBjJ,CAAAA,CAAUuB,EAAUu0B,EAAAA,CAAarT,CAAK,CAAC,CAAA,CAAE,MAAA,EAC1E,CACF,EAEM3S,EAAAA,CAAU,CAAC90B,CAAAA,CAAgBumB,CAAAA,CAAkBkhB,IAC7CznC,CAAAA,EAAU,IAAA,CAAoC4hD,EAAAA,CAC9C51B,CAAAA,CAAWhsB,CAAK,CAAA,CAAUsmD,EAAAA,CAAgBtmD,EAAOumB,CAAAA,CAAUkhB,CAAK,EAC7D,CAAE,IAAA,CAAM,OAAA,CAAS,KAAA,CAAO9R,GAAkB31B,CAAAA,CAAO86C,EAAAA,CAAarT,CAAK,CAAA,CAAE,QAAQ,CAAE,CAAA,CAGlF8e,EAAAA,CAAa,CAAClsB,EAAkBxP,CAAAA,CAAgB4c,CAAAA,GACpD5c,EAAK,MAAA,GAAW,MAAA,CAAYwP,EAAMkiB,EAAAA,CAAWliB,CAAAA,CAAKxP,CAAAA,CAAK,MAAA,CAAQ4c,CAAK,CAAA,CAEhEye,EAAAA,CAAe,CAACr7B,CAAAA,CAAgB4c,CAAAA,GAAqC,CACzE,IAAM9iC,CAAAA,CAASo9C,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CAClC5S,CAAAA,CAAQlwB,EAAO,IAAA,GAAS,QAAA,CAAWA,EAASmwB,EAAAA,CAAQnwB,CAAAA,CAAO,KAAA,CAAOkmB,CAAAA,CAAK,aAAc4c,CAAK,CAAA,CAChG,OAAO8e,EAAAA,CAAW1xB,EAAOhK,CAAAA,CAAM4c,CAAK,CACtC,CAAA,CAEM0e,GAAgB,CAACt7B,CAAAA,CAAgB4c,IAA2D,CAChG,IAAM9iC,EAASo9C,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CACxC,GAAIoa,EAAAA,CAAUl9C,CAAM,CAAA,CAAG,OAAO,KAC9B,GAAIA,CAAAA,CAAO,IAAA,GAAS,QAAA,EAAY,CAACqnB,CAAAA,CAAWrnB,CAAAA,CAAO,KAAK,CAAA,CACtD,MAAM6lB,GAAkBK,CAAAA,CAAK,YAAY,CAAA,CAC3C,IAAMkD,EAAUZ,EAAAA,CAAaxoB,CAAAA,CAAO,KAAK,CAAA,CACzC,GAAIopB,CAAAA,EAAWg2B,EAAAA,CAASh2B,CAAAA,CAAQ,CAAC,CAAC,CAAA,CAAG,CACnC,IAAMJ,CAAAA,CAAM04B,EAAAA,CAAW5e,CAAK,CAAA,CACtBrZ,CAAAA,CAAQm2B,EAAAA,CAAU52B,CAAAA,CAAK,GAAGI,CAAAA,CAAS0Z,CAAK,CAAA,CAC9C,OAAO1Z,EAAQ,CAAC,CAAA,GAAM,EAAA,CAAK,CAACK,EAAOT,CAAG,CAAA,CAAI,CAACA,CAAAA,CAAKS,CAAK,CACvD,CACA,IAAMpJ,CAAAA,CAAWqO,EAAAA,CAAY1uB,EAAO,KAAA,CAAOq9C,EAAAA,CAAgBva,CAAK,CAAC,EACjE,GAAIziB,CAAAA,GAAa,IAAA,CAAM,OAAO,KAC9B,IAAMuO,CAAAA,CAAOpF,GAAqBnJ,CAAAA,CAAU81B,EAAAA,CAAarT,CAAK,CAAC,CAAA,CAC/D,OAAO,CACL,CAAE,IAAA,CAAM,OAAA,CAAS,KAAA,CAAOlU,CAAAA,CAAK,CAAC,CAAA,CAAE,MAAA,EAAS,CAAA,CACzC,CAAE,IAAA,CAAM,OAAA,CAAS,MAAOA,CAAAA,CAAK,CAAC,EAAE,MAAA,EAAS,CAC3C,CACF,EAEMqxB,EAAAA,CAAe,CAAC/5B,CAAAA,CAAgB4c,CAAAA,GAA2D,CAC/F,IAAM9iC,CAAAA,CAASo9C,EAAAA,CAAcl3B,CAAAA,CAAM4c,CAAK,CAAA,CACxC,GAAIoa,GAAUl9C,CAAM,CAAA,CAAG,OAAO,IAAA,CAC9B,IAAM0tB,CAAAA,CAAM1tB,CAAAA,CAAO,OAAS,OAAA,CAAUA,CAAAA,CAAO,MAAQ,MAAA,CAC/C6hD,CAAAA,CAASh0B,GAASH,CAAAA,CAAKxH,CAAAA,CAAK,YAAY,CAAA,CAAE,IAAK47B,CAAAA,EACnD3xB,EAAAA,CAAQ2xB,EAAI57B,CAAAA,CAAK,YAAA,CAAc4c,CAAK,CACtC,CAAA,CACA,GAAI+e,CAAAA,CAAO,KAAK3E,EAAS,CAAA,CAAG,OAAO,IAAA,CACnC,GAAM,CAAC7sB,CAAAA,CAAOC,CAAM,CAAA,CAAIuxB,EAQxB,OAAA,CANExxB,CAAAA,CAAM,OAAS,OAAA,EAAWC,CAAAA,CAAO,OAAS,OAAA,CACtC1C,EAAAA,CAAU,CAACyC,CAAAA,CAAM,MAAeC,CAAAA,CAAO,KAAa,CAAC,CAAA,CAAE,IAAKj1B,CAAAA,GAAW,CACrE,IAAA,CAAM,OAAA,CACN,MAAAA,CACF,CAAA,CAAE,EACFwmD,CAAAA,EACM,GAAA,CAAKz7B,GAAQw7B,EAAAA,CAAWx7B,CAAAA,CAAKF,CAAAA,CAAM4c,CAAK,CAAC,CACvD,CAAA,CC5KO,IAAMqU,EAAAA,CAAW,CAACze,CAAAA,CAAUoK,CAAAA,GAC7BpK,CAAAA,CAAI,GAAA,CAAI,SAAW,CAAA,CAAU,MAAA,CAE1B,IADSA,CAAAA,CAAI,GAAA,CAAI,IAAKpO,CAAAA,EAAMyrB,EAAAA,CAAezrB,CAAAA,CAAGwY,CAAK,CAAC,CAAA,CACxC,IAAA,CAAK,OAAO,CAAC,IAGrBsU,EAAAA,CAAW,CAACze,CAAAA,CAAUmK,CAAAA,GAC7BnK,EAAI,GAAA,CAAI,MAAA,GAAW,EAAU,OAAA,CAE1B,CAAA,CAAA,EADSA,EAAI,GAAA,CAAI,GAAA,CAAKrO,CAAAA,EAAMyrB,EAAAA,CAAezrB,EAAGwY,CAAK,CAAC,CAAA,CACxC,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAA,CAGpBuU,EAAAA,CAAkB,CAAC1W,EAAkBmC,CAAAA,GAAgC,CAKhF,GAAI1C,EAAAA,CAAuBO,CAAAA,CAAmBmC,EAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,CAAA,CACzE,OAAO,MAAA,CAGT,IAAM2U,CAAAA,CAAW1B,EAAAA,CAAepV,EAAK,EAAA,CAAImC,CAAK,CAAA,CACxCyU,CAAAA,CAAaxB,GAAepV,CAAAA,CAAK,IAAA,CAAMmC,CAAK,CAAA,CAIlD,GAAInC,EAAK,IAAA,GAAS,MAAA,CAAW,CAC3B,IAAM+W,EAAa3B,EAAAA,CAAepV,CAAAA,CAAK,IAAA,CAAMmC,CAAK,EAClD,OAAO,CAAA,GAAA,EAAM2U,CAAQ,CAAA,iBAAA,EAAoBF,CAAU,CAAA,QAAA,EAAWE,CAAQ,gBAAgBC,CAAU,CAAA,EAAA,CAClG,CACA,OAAO,CAAA,EAAA,EAAKD,CAAQ,CAAA,iBAAA,EAAoBF,CAAU,CAAA,CAAA,CACpD,CAAA,CCtBO,IAAMxB,EAAAA,CAAiB,CAAC32B,EAAsB0jB,CAAAA,GAAgC,CACnF,GAAI,OAAO1jB,GAAc,SAAA,CACvB,OAAOA,EAAY,MAAA,CAAS,OAAA,CAI9B,GAFAD,EAAAA,CAAkBC,CAAAA,CAAW,OAAO,CAAA,CAGlC,UAAWA,CAAAA,EACX,OAAOA,CAAAA,CAAU,KAAA,EAAU,UAC3B0jB,CAAAA,CAAM,GAAA,EACNA,CAAAA,CAAM,YAAA,EACN3C,GAAW/gB,CAAAA,CAAU,KAAA,CAAO0jB,EAAM,GAAA,CAAKA,CAAAA,CAAM,YAAY,CAAA,CAEzD,OAAO,MAAA,CAGT,IAAM/L,EAAQtK,CAAAA,CAAerN,CAAoC,CAAA,CAAA,CAC7D2X,CAAAA,GAAU,SAAWA,CAAAA,GAAU,MAAA,GACjC8Q,EAAAA,CAAsBzoB,CAAAA,CAAgC,MAAO0jB,CAAAA,CAAM,GAAA,CAAKA,EAAM,YAAY,CAAA,CAC5F,IAAM/gB,CAAAA,CAAO3C,CAAAA,CACb,OAAQ2X,CAAAA,EACN,KAAK,KAAA,CACH,OAAOogB,EAAAA,CAASp1B,EAAM+gB,CAAK,CAAA,CAC7B,KAAK,KAAA,CACH,OAAOsU,EAAAA,CAASr1B,CAAAA,CAAM+gB,CAAK,CAAA,CAC7B,KAAK,KACH,OAAOuU,EAAAA,CAAgBt1B,CAAAA,CAAM+gB,CAAK,EACpC,KAAK,OAAA,CACH,OAAO2X,EAAAA,CAAe14B,EAAM+gB,CAAK,CAAA,CACnC,KAAK,WAAA,CACH,OAAOoX,EAAAA,CAAmBn4B,CAAAA,CAAM+gB,CAAK,CAAA,CACvC,KAAK,OACH,OAAOkY,EAAAA,CAAcj5B,CAAAA,CAAM+gB,CAAK,EAClC,KAAK,OAAA,CACH,OAAO+V,EAAAA,CAAe92B,EAAM+gB,CAAK,CAAA,CACnC,QACE,MAAMvc,IACV,CACF,EAEAuvB,EAAAA,CAAoBC,EAAc,EC7C3B,IAAMgM,EAAAA,CAAgBvpB,CAAAA,EAAyC,CACpE,IAAMhtB,CAAAA,CAAMooC,EAAAA,CAAgBpb,CAAAA,EAAS,GAAA,CAAKA,GAAS,OAAA,CAAS,OAAO,CAAA,CAC7DwpB,CAAAA,CAAS,CAAC,EAAEx2C,CAAAA,EAAOgtB,GAAS,KAAA,CAAA,CAC5BypB,CAAAA,CAAYzpB,GAAS,KAAA,GAAUwpB,CAAAA,CAAS,IAAA,CAAO,MAAA,CAAA,CACrD,OAAO,CACL,MAAA,CAAQ,EAAC,CACT,WAAY,CAAA,CACZ,OAAA,CAASxpB,CAAAA,EAAS,OAAA,CAClB,WAAY,CAAE,GAAA,CAAKA,GAAS,GAAA,CAAK,QAAA,CAAUA,GAAS,QAAA,CAAU,SAAA,CAAWA,CAAAA,EAAS,SAAU,EAC5F,GAAA,CAAAhtB,CAAAA,CACA,aAAcgtB,CAAAA,EAAS,KAAA,CACvB,aAAcypB,CAAAA,CACd,WAAA,CAAaD,CAAAA,CAAS,CAAE,EAAG,CAAE,CAAA,CAAI,OACjC,KAAA,CAAOA,CAAAA,CAAS,EAAC,CAAI,MAAA,CACrB,YAAA,CAAcA,CAAAA,CAAS,IAAI,GAAA,CAAQ,MACrC,CACF,CAAA,CAEaE,GAAQ,CAAC9iC,CAAAA,CAAsBoZ,CAAAA,GAAwC,CAClF,IAAMsK,CAAAA,CAAQif,EAAAA,CAAavpB,CAAO,CAAA,CAElC,OAAO,CAAE,GAAA,CADGud,EAAAA,CAAe32B,CAAAA,CAAW0jB,CAAK,EAC7B,MAAA,CAAQA,CAAAA,CAAM,MAAA,CAAQ,KAAA,CAAOA,EAAM,KAAA,EAAS,EAAG,CAC/D,ECmBA,IAAMqf,EAAAA,CAAc,CAACC,CAAAA,CAAoBv0C,CAAAA,GAAyB,CAChE,GAAM,CAACw0C,CAAAA,CAAM,GAAG/0B,CAAI,CAAA,CAAIzf,CAAAA,CACxB,GAAIyf,CAAAA,CAAK,SAAW,CAAA,CAAG,CACrB80B,CAAAA,CAAKC,CAAI,EAAI,IAAA,CACb,MACF,CACA,IAAM/U,CAAAA,CAAW8U,EAAKC,CAAI,CAAA,CACpB/kC,CAAAA,CAASgwB,CAAAA,GAAa,QAAaA,CAAAA,GAAa,IAAA,CAAOA,CAAAA,CAAS,MAAA,CAAS,EAAC,CAChF6U,EAAAA,CAAY7kC,CAAAA,CAAQgQ,CAAI,EACxB80B,CAAAA,CAAKC,CAAI,EAAI,CAAE,MAAA,CAAQ/kC,CAAO,EAChC,CAAA,CACMglC,EAAAA,CAAiBrV,CAAAA,EAA2C,CAChE,IAAMhhB,CAAAA,CAAoB,EAAC,CAC3B,QAAWpe,CAAAA,IAAQo/B,CAAAA,CAAOkV,EAAAA,CAAYl2B,CAAAA,CAAKpe,EAAK,KAAA,CAAM,GAAG,CAAC,CAAA,CAC1D,OAAOoe,CACT,CAAA,CAEMs2B,EAAAA,CAAa,CACjBhgB,CAAAA,CACAhE,EACAlE,CAAAA,CACA/X,CAAAA,CACA8N,CAAAA,CACAwb,CAAAA,CACA1K,IACuD,CACvD,IAAMqa,CAAAA,CAAOU,EAAAA,CAAS/a,EAAO,CAAE,GAAA,CAAKqB,EAAM,OAAA,CAAAhE,CAAAA,CAAS,MAAAlE,CAAM,CAAC,CAAA,CAEpDmoB,CAAAA,CAAejH,EAAK,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA,CAAgB,MAC/CE,CAAAA,CAAeF,CAAAA,CAAK,KAAA,CAAM,MAAA,CAAQnY,GAAMA,CAAAA,CAAE,SAAA,GAAc,OAAO,CAAA,CAG/Dqf,CAAAA,CAAYryB,GAAO,QAAA,CAAS,GAAG,CAAA,CAAIA,CAAAA,CAAQ,OAC3CsyB,CAAAA,CAAc,CAAC,GAAI9W,CAAAA,EAAW,GAAK,GAAI6W,CAAAA,CAAY,CAACA,CAAS,EAAI,EAAG,EACpEE,CAAAA,CAAuB,CAC3B,CAACrgC,CAAK,EAAG,IAAA,CACT,GAAI8N,GAAS,CAACqyB,CAAAA,CAAY,CAAE,CAACryB,CAAK,EAAG,IAAK,CAAA,CAAI,GAC9C,GAAIsyB,CAAAA,CAAY,OAASJ,EAAAA,CAAcI,CAAW,EAAI,EACxD,CAAA,CACME,CAAAA,CAA4B,CAChC,KAAA,CAAAvoB,CAAAA,CACA,GAAIuR,CAAAA,CAAU,EAAC,CAAI,CAAE,QAAA,CAAU,CAACtpB,CAAK,CAAE,CAAA,CACvC,OAAAqgC,CAAAA,CACA,KAAA,CAAOH,EACP,GAAI/G,CAAAA,CAAa,MAAA,CAAS,CAAE,MAAOF,CAAAA,CAAK,KAAM,CAAA,CAAI,EACpD,CAAA,CAEIsH,CAAAA,CACJ,GAAI,CAGF,IAAM/f,CAAAA,CAAQif,EAAAA,CAAa,CAAE,GAAA,CAAKxf,CAAAA,CAAM,QAAAhE,CAAAA,CAAS,KAAA,CAAAlE,CAAAA,CAAO,KAAA,CAAO,IAAK,CAAC,CAAA,CAC/DmiB,CAAAA,CAAMzG,EAAAA,CAAe7U,EAAO4B,CAAK,CAAA,CACjCggB,CAAAA,CAAWL,CAAAA,CAAYhG,GAAgBgG,CAAAA,CAAW3f,CAAK,EAAI,KAAA,CAAA,CAC3DigB,CAAAA,CAAYnX,GAAS,GAAA,CAAKiB,EAAAA,EAAS4P,EAAAA,CAAgB5P,EAAAA,CAAM/J,CAAK,CAAC,CAAA,CAC/DkgB,CAAAA,CAAQlgB,CAAAA,CAAM,OAAS,EAAC,CACxBmgB,CAAAA,CAAUD,CAAAA,CAAM,OAAS,CAAA,CAAA,EAAIA,CAAAA,CAAM,KAAK,GAAG,CAAC,GAAK,EAAA,CACjDE,CAAAA,CAAW1G,CAAAA,EAAK,IAAA,GAAS,CAAA,OAAA,EAAUA,CAAG,CAAA,CAAA,CAAK,EAAA,CAC3C5hD,EAAO85C,CAAAA,CAAiB,IAAI,CAAA,CAalCmO,CAAAA,CAAW,CAAE,GAAA,CADK,CAAA,gBAAA,EAXL,CACX,CAAA,EAAGjoD,CAAI,IAAI85C,CAAAA,CAAiBpyB,CAAK,CAAC,CAAA,CAAA,CAClC,GAAIwgC,CAAAA,CACA,CAAC,CAAA,EAAGA,CAAQ,OAAOpO,CAAAA,CAAiB,SAAS,CAAC,CAAA,CAAE,EAChDtkB,CAAAA,CACE,CAAC,GAAGx1B,CAAI,CAAA,CAAA,EAAI85C,EAAiBtkB,CAAK,CAAC,CAAA,CAAE,CAAA,CACrC,EAAC,CACP,GAAI2yB,EACAA,CAAAA,CAAU,GAAA,CAAI,CAACI,EAAAA,CAAKjwB,EAAAA,GAAM,CAAA,EAAGiwB,EAAG,OAAOzO,CAAAA,CAAiB,CAAA,QAAA,EAAWxhB,EAAC,CAAA,CAAE,CAAC,EAAE,CAAA,CACzE,EACN,CAAA,CAAE,KAAK,IAAI,CAC8B,CAAA,MAAA,EAASwhB,CAAAA,CAAiBra,CAAK,CAAC,CAAA,IAAA,EAAOz/B,CAAI,CAAA,EAAGqoD,CAAO,CAAA,EAAGC,CAAQ,GAC5E,MAAA,CAAQpgB,CAAAA,CAAM,MAAO,EACpD,CAAA,MAASsN,CAAAA,CAAK,CACZyS,EAAW,CAAE,GAAA,CAAK,IAAA,CAAM,MAAA,CAAQ,EAAC,CAAG,KAAA,CAAOzS,CAAAA,YAAe,KAAA,CAAQA,EAAI,OAAA,CAAU,MAAA,CAAOA,CAAG,CAAE,EAC9F,CACA,OAAO,CAAE,MAAA,CAAAwS,CAAAA,CAAQ,IAAKC,CAAS,CACjC,CAAA,CASaO,EAAAA,CAAmBthB,GAAyD,CACvF,GAAM,CAAE,IAAA,CAAAS,CAAK,CAAA,CAAIR,CAAAA,CAAcD,CAAe,CAAA,CAC9C,OAAOsM,GAAYtM,CAAe,CAAA,CAAE,GAAA,CAAI,CAAC,CAAE,IAAA,CAAAj0B,CAAAA,CAAM,KAAA,CAAAy7B,CAAAA,CAAO,MAAAhnB,CAAAA,CAAO,KAAA,CAAA8N,CAAAA,CAAO,OAAA,CAAAwb,EAAS,WAAA,CAAAkD,CAAY,IAAM,CAC/F,IAAMuU,EAAgB32B,CAAAA,CAAM,CAAC,GAAG4c,CAAAA,CAAM,aAAc,GAAGwF,CAAW,CAAC,CAAA,CAC7D,CAAE,MAAA,CAAA8T,CAAAA,CAAQ,GAAA,CAAApG,CAAI,EAAI+F,EAAAA,CACtBhgB,CAAAA,CACA+G,EAAM,OAAA,CACNA,CAAAA,CAAM,MACNhnB,CAAAA,CACA8N,CAAAA,CACAwb,CAAAA,CACAyX,CACF,EACA,OAAO,CACL,IAAA,CAAAx1C,CAAAA,CACA,QAASy7B,CAAAA,CAAM,OAAA,CACf,KAAA,CAAOA,CAAAA,CAAM,MACb,KAAA,CAAAhnB,CAAAA,CACA,GAAI8N,CAAAA,GAAU,MAAA,CAAY,CAAE,KAAA,CAAAA,CAAM,CAAA,CAAI,GACtC,GAAIwb,CAAAA,GAAY,MAAA,CAAY,CAAE,QAAAA,CAAQ,CAAA,CAAI,EAAC,CAC3C,cAAAyX,CAAAA,CACA,MAAA,CAAAT,EACA,GAAA,CAAApG,CACF,CACF,CAAC,CACH,EC/IO,IAAM8G,GAAe,CAC1BxhB,CAAAA,CACAj0B,IACuB,CACvB,IAAMkzB,EAASgB,CAAAA,CAAcD,CAAe,CAAA,CAC5C,OAAOwD,GAAkBvE,CAAAA,CAAQiF,EAAAA,CAAcjF,CAAM,CAAA,CAAGlzB,CAAI,EAAE,UAChE","file":"index.cjs","sourcesContent":["/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nexport default isKey;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import isArray from './isArray.js';\nimport isKey from './_isKey.js';\nimport stringToPath from './_stringToPath.js';\nimport toString from './toString.js';\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nexport default castPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import castPath from './_castPath.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nexport default baseGet;\n","import baseGet from './_baseGet.js';\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nexport default get;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import Stack from './_Stack.js';\nimport baseIsEqual from './_baseIsEqual.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nexport default baseIsMatch;\n","import isObject from './isObject.js';\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nexport default isStrictComparable;\n","import isStrictComparable from './_isStrictComparable.js';\nimport keys from './keys.js';\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nexport default getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nexport default matchesStrictComparable;\n","import baseIsMatch from './_baseIsMatch.js';\nimport getMatchData from './_getMatchData.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nexport default baseMatches;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nexport default baseHasIn;\n","import castPath from './_castPath.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isIndex from './_isIndex.js';\nimport isLength from './isLength.js';\nimport toKey from './_toKey.js';\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nexport default hasPath;\n","import baseHasIn from './_baseHasIn.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nexport default hasIn;\n","import baseIsEqual from './_baseIsEqual.js';\nimport get from './get.js';\nimport hasIn from './hasIn.js';\nimport isKey from './_isKey.js';\nimport isStrictComparable from './_isStrictComparable.js';\nimport matchesStrictComparable from './_matchesStrictComparable.js';\nimport toKey from './_toKey.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nexport default baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nexport default baseProperty;\n","import baseGet from './_baseGet.js';\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nexport default basePropertyDeep;\n","import baseProperty from './_baseProperty.js';\nimport basePropertyDeep from './_basePropertyDeep.js';\nimport isKey from './_isKey.js';\nimport toKey from './_toKey.js';\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nexport default property;\n","import baseMatches from './_baseMatches.js';\nimport baseMatchesProperty from './_baseMatchesProperty.js';\nimport identity from './identity.js';\nimport isArray from './isArray.js';\nimport property from './property.js';\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nexport default baseIteratee;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import baseEach from './_baseEach.js';\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nexport default baseSome;\n","import arraySome from './_arraySome.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseSome from './_baseSome.js';\nimport isArray from './isArray.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nexport default some;\n","export type Scopes = readonly unknown[];\n\nexport type ScopeRef = { depth: number; path: string };\n\nconst SCOPE_REF = /^(\\$+)\\.(.*)$/;\n\nexport const parseScopeRef = (ref: string): ScopeRef | null => {\n const match = SCOPE_REF.exec(ref);\n return match ? { depth: match[1].length, path: match[2] } : null;\n};\n\nexport const scopeOutOfBounds = (ref: string, depth: number, available: number): string =>\n `Scope ref '${ref}' needs depth ${depth} but only ${available} ${available === 1 ? 'scope is' : 'scopes are'} in reach`;\n\nexport type ScopedRef<S> = { scope: S; path: string };\nexport type ScopeOutOfBounds = { outOfBounds: string };\n\n// Resolves a ref against a stack of scopes (innermost last): a bare ref is the innermost\n// scope, `$.` the innermost, `$$.` the one above it, … A ref deeper than the stack is\n// out of bounds and carries its message.\nexport const readScopeRef = <S>(\n ref: string,\n scopes: readonly S[],\n): ScopedRef<S> | ScopeOutOfBounds => {\n const parsed = parseScopeRef(ref);\n if (!parsed) return { scope: scopes[scopes.length - 1], path: ref };\n if (parsed.depth > scopes.length)\n return { outOfBounds: scopeOutOfBounds(ref, parsed.depth, scopes.length) };\n return { scope: scopes[scopes.length - parsed.depth], path: parsed.path };\n};\n\n// Segments of a path: dotted names, bracket indices and quoted keys (`ids[1]`, `meta[\"a.b\"]`).\nconst SEGMENT = /\\[(\\d+)\\]|\\[([\"'])(.*?)\\2\\]|([^.[\\]]+)/g;\nconst segments = (path: string): string[] =>\n path === '' ? [''] : [...path.matchAll(SEGMENT)].map((m) => m[1] ?? m[3] ?? m[4]);\n\n// One step of a path read: an own property, or an inherited one (a class getter, a string's\n// `length`) unless Object.prototype names it — `constructor`, `toString`, `__proto__` never\n// resolve — and never a method.\nconst step = (at: unknown, key: string): unknown => {\n if (at === null || at === undefined) return undefined;\n const boxed = Object(at) as Record<string, unknown>;\n if (Object.hasOwn(boxed, key)) return boxed[key];\n if (key in Object.prototype || !(key in boxed)) return undefined;\n const value = boxed[key];\n return typeof value === 'function' ? undefined : value;\n};\n\n/** A path read that never reaches Object.prototype: own properties, inherited getters and data,\n * bracket indices. */\nexport const readOwnPath = (root: unknown, path: string): unknown =>\n segments(path).reduce<unknown>(step, root);\n\nexport const readField = (ref: string, scopes: Scopes): unknown => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) throw new Error(target.outOfBounds);\n return readOwnPath(target.scope, target.path);\n};\n\nexport const readPath = (ref: string, scopes: Scopes, context: unknown): unknown =>\n parseScopeRef(ref) ? readField(ref, scopes) : readOwnPath(context, ref);\n\nexport const checkOnlyScopeRef = (ref: string, rail: 'toSql' | 'toPrisma'): string =>\n `Scope ref '${ref}' is not supported by ${rail}(); evaluate with check()`;\n\nexport const rejectScopedField = (condition: object, rail: 'toSql' | 'toPrisma'): void => {\n if (!('field' in condition) || typeof condition.field !== 'string') return;\n if (parseScopeRef(condition.field)) throw new Error(checkOnlyScopeRef(condition.field, rail));\n};\n\n/** A compiler's bare (context) ref: the context it was given, which must be there. A path that\n * reads nothing reads null. */\nexport const readContextRef = (\n ref: string,\n context: unknown,\n rail: 'toSql' | 'toPrisma',\n): unknown => {\n if (!context)\n throw new Error(\n `context is required to resolve path '${ref}'. Pass context when calling ${rail}().`,\n );\n return readOwnPath(context, ref) ?? null;\n};\n","import { cloneDeep, cloneDeepWith, isPlainObject, merge, set } from 'lodash-es';\nimport type { FuzzyConfig } from './fuzzy';\nimport { readOwnPath } from './scope';\n\nexport type PrismaProvider =\n | 'postgresql'\n | 'mysql'\n | 'sqlite'\n | 'sqlserver'\n | 'cockroachdb'\n | 'mongodb';\n\nexport type EngineGlobalsState = {\n // Defaults for string operators; a rule's own `caseInsensitive` / `fuzzy` overrides them.\n string: {\n caseInsensitive: boolean;\n fuzzy: boolean | FuzzyConfig;\n };\n prismaOptions: {\n datasource: {\n provider: PrismaProvider;\n };\n /** Prisma's `AnyNull` — matches a DB NULL, a JSON null and an absent Json path. Defaults to\n * your installed @prisma/client's; set it only to use another. */\n anyNull?: unknown;\n };\n};\n\ntype DeepPartial<T> = {\n [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];\n};\n\nconst DEFAULTS: EngineGlobalsState = {\n string: {\n caseInsensitive: false,\n fuzzy: false,\n },\n prismaOptions: {\n datasource: {\n provider: 'postgresql',\n },\n },\n};\n\nlet store: EngineGlobalsState = cloneDeep(DEFAULTS);\n\n// Plain data is copied; an instance (Prisma's AnyNull) is held as given — Prisma knows it by\n// identity.\nconst copy = <T>(value: T): T =>\n cloneDeepWith(value, (v) =>\n typeof v === 'object' && v !== null && !Array.isArray(v) && !isPlainObject(v) ? v : undefined,\n );\n\nconst isThenable = (v: unknown): boolean =>\n v != null && typeof (v as { then?: unknown }).then === 'function';\n\nexport const engineGlobals = {\n set: (path: string, value: unknown): void => {\n set(store, path, copy(value));\n },\n get: (path: string): unknown => readOwnPath(store, path),\n reset: (): void => {\n store = cloneDeep(DEFAULTS);\n },\n // Scoped override: merge `partial` over the current state, run `fn`, restore. SYNCHRONOUS\n // ONLY — JS run-to-completion makes a sync `fn` atomic, so overlapping evaluations never\n // observe the override. An async `fn` would yield mid-scope and leak/collide, so it throws.\n with: <T>(partial: DeepPartial<EngineGlobalsState>, fn: () => T): T => {\n const prev = store;\n store = merge(copy(prev), copy(partial));\n try {\n const result = fn();\n if (isThenable(result))\n throw new Error(\n 'engineGlobals.with() callback must be synchronous (it returned a Promise).',\n );\n return result;\n } finally {\n store = prev;\n }\n },\n};\n\n// Providers whose Prisma connector accepts `mode: 'insensitive'` (QueryMode). The\n// rest are case-insensitive by collation and reject the argument.\nconst QUERY_MODE_PROVIDERS: ReadonlySet<PrismaProvider> = new Set([\n 'postgresql',\n 'cockroachdb',\n 'mongodb',\n]);\n\nexport const supportsQueryMode = (provider: PrismaProvider): boolean =>\n QUERY_MODE_PROVIDERS.has(provider);\n\n// A rule's explicit flag wins; otherwise fall back to the engine-global default.\nexport const resolveCaseInsensitive = (ruleFlag?: boolean): boolean =>\n ruleFlag ?? (engineGlobals.get('string.caseInsensitive') as boolean | undefined) ?? false;\n\n// Resolve a rule's fuzzy flag against the global default, normalized to a config or false.\nexport const resolveFuzzy = (ruleFlag?: boolean | FuzzyConfig): FuzzyConfig | false => {\n const resolved =\n ruleFlag ?? (engineGlobals.get('string.fuzzy') as boolean | FuzzyConfig | undefined) ?? false;\n if (!resolved) return false;\n return resolved === true ? {} : resolved;\n};\n","export const Operator = {\n equals: 'equals',\n notEquals: 'notEquals',\n lessThan: 'lessThan',\n lessThanEquals: 'lessThanEquals',\n greaterThan: 'greaterThan',\n greaterThanEquals: 'greaterThanEquals',\n contains: 'contains',\n notContains: 'notContains',\n in: 'in',\n notIn: 'notIn',\n matches: 'matches',\n notMatches: 'notMatches',\n between: 'between',\n notBetween: 'notBetween',\n isEmpty: 'isEmpty',\n notEmpty: 'notEmpty',\n exists: 'exists',\n notExists: 'notExists',\n startsWith: 'startsWith',\n notStartsWith: 'notStartsWith',\n endsWith: 'endsWith',\n notEndsWith: 'notEndsWith',\n} as const;\n\nexport type Operator = (typeof Operator)[keyof typeof Operator];\n\nexport const ArrayOperator = {\n all: 'all',\n any: 'any',\n none: 'none',\n atLeast: 'atLeast',\n atMost: 'atMost',\n exactly: 'exactly',\n empty: 'empty',\n notEmpty: 'notEmpty',\n} as const;\n\nexport type ArrayOperator = (typeof ArrayOperator)[keyof typeof ArrayOperator];\n\nexport const DateOperator = {\n before: 'before',\n after: 'after',\n onOrBefore: 'onOrBefore',\n onOrAfter: 'onOrAfter',\n notBefore: 'notBefore',\n notAfter: 'notAfter',\n within: 'within',\n notWithin: 'notWithin',\n between: 'between',\n notBetween: 'notBetween',\n dayIn: 'dayIn',\n dayNotIn: 'dayNotIn',\n} as const;\n\nexport type DateOperator = (typeof DateOperator)[keyof typeof DateOperator];\n","import { unknownOperator } from './errors';\nimport { ArrayOperator, DateOperator, Operator } from './operator';\nimport type { AggregateMode } from './types';\n\nexport const FieldKind = {\n String: 'String',\n Boolean: 'Boolean',\n Int: 'Int',\n BigInt: 'BigInt',\n Float: 'Float',\n Decimal: 'Decimal',\n DateTime: 'DateTime',\n Json: 'Json',\n Bytes: 'Bytes',\n Enum: 'Enum',\n} as const;\n\nexport type FieldKind = (typeof FieldKind)[keyof typeof FieldKind];\n\nexport const NUMERIC_KINDS: readonly FieldKind[] = ['Int', 'Float', 'Decimal', 'BigInt'];\nconst ORDERABLE_KINDS: readonly FieldKind[] = ['String', ...NUMERIC_KINDS, 'DateTime'];\nconst STRINGY_KINDS: readonly FieldKind[] = ['String'];\nconst EQUATABLE_KINDS: readonly FieldKind[] = [\n 'String',\n 'Boolean',\n 'Int',\n 'BigInt',\n 'Float',\n 'Decimal',\n 'DateTime',\n 'Enum',\n];\nexport const ALL_KINDS: readonly FieldKind[] = Object.values(FieldKind);\n// Any column can be nullable — nullability is a per-field property, not a per-kind one.\n// isEmpty/notEmpty (\"null or empty string\") are therefore valid on every kind; the\n// SQL/Prisma compilers emit meaningful `IS NULL OR = ''` for any nullable column.\nconst NULLABLE_KINDS: readonly FieldKind[] = ALL_KINDS;\n\nexport const RuleTarget = {\n check: 'check',\n toPrisma: 'toPrisma',\n toSql: 'toSql',\n} as const;\n\nexport type RuleTarget = (typeof RuleTarget)[keyof typeof RuleTarget];\n\n/** Whether a name is a FieldKind (own-property: `toString` is not). */\nexport const isFieldKind = (name: unknown): name is FieldKind =>\n typeof name === 'string' && Object.hasOwn(FieldKind, name);\n\nexport const ALL_TARGETS: readonly RuleTarget[] = ['check', 'toPrisma', 'toSql'];\nconst NON_SQL_TARGETS: readonly RuleTarget[] = ['check', 'toPrisma'];\nconst NON_PRISMA_TARGETS: readonly RuleTarget[] = ['check', 'toSql'];\n\nexport const ValueShape = {\n none: 'none',\n scalar: 'scalar',\n ordered: 'ordered',\n array: 'array',\n string: 'string',\n pattern: 'pattern',\n range: 'range',\n dateValue: 'dateValue',\n dateRange: 'dateRange',\n dateWindow: 'dateWindow',\n dayList: 'dayList',\n count: 'count',\n predicate: 'predicate',\n} as const;\n\nexport type ValueShape = (typeof ValueShape)[keyof typeof ValueShape];\n\n/** How an ordered operator compares its field with its one operand (a count, its matches). */\nexport type Comparator = 'lt' | 'lte' | 'gt' | 'gte' | 'equals';\n\nexport type CatalogEntry = {\n kinds: readonly FieldKind[];\n targets: readonly RuleTarget[];\n valueShape: ValueShape;\n acceptsExpr?: boolean;\n comparator?: Comparator;\n /** The positive operator this one negates: its exact complement, keeping NULL fields. */\n negates?: string;\n};\n\nexport const FIELD_OPERATOR_CATALOG: Record<Operator, CatalogEntry> = {\n [Operator.equals]: { kinds: EQUATABLE_KINDS, targets: ALL_TARGETS, valueShape: 'scalar' },\n [Operator.notEquals]: {\n negates: Operator.equals,\n kinds: EQUATABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'scalar',\n },\n [Operator.lessThan]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'lt',\n },\n [Operator.lessThanEquals]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'lte',\n },\n [Operator.greaterThan]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'gt',\n },\n [Operator.greaterThanEquals]: {\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'ordered',\n comparator: 'gte',\n },\n [Operator.in]: { kinds: EQUATABLE_KINDS, targets: ALL_TARGETS, valueShape: 'array' },\n [Operator.notIn]: {\n negates: Operator.in,\n kinds: EQUATABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'array',\n },\n [Operator.contains]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notContains]: {\n negates: Operator.contains,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.startsWith]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notStartsWith]: {\n negates: Operator.startsWith,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.endsWith]: { kinds: STRINGY_KINDS, targets: ALL_TARGETS, valueShape: 'string' },\n [Operator.notEndsWith]: {\n negates: Operator.endsWith,\n kinds: STRINGY_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'string',\n },\n [Operator.matches]: { kinds: STRINGY_KINDS, targets: NON_PRISMA_TARGETS, valueShape: 'pattern' },\n [Operator.notMatches]: {\n negates: Operator.matches,\n kinds: STRINGY_KINDS,\n targets: NON_PRISMA_TARGETS,\n valueShape: 'pattern',\n },\n [Operator.between]: { kinds: ORDERABLE_KINDS, targets: ALL_TARGETS, valueShape: 'range' },\n [Operator.notBetween]: {\n negates: Operator.between,\n kinds: ORDERABLE_KINDS,\n targets: ALL_TARGETS,\n valueShape: 'range',\n },\n [Operator.isEmpty]: { kinds: NULLABLE_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.notEmpty]: { kinds: NULLABLE_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.exists]: { kinds: ALL_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n [Operator.notExists]: { kinds: ALL_KINDS, targets: ALL_TARGETS, valueShape: 'none' },\n};\n\nexport const DATE_OPERATOR_CATALOG: Record<DateOperator, CatalogEntry> = {\n [DateOperator.before]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lt',\n },\n [DateOperator.after]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gt',\n },\n [DateOperator.onOrBefore]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lte',\n },\n [DateOperator.onOrAfter]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gte',\n },\n [DateOperator.notBefore]: {\n negates: DateOperator.before,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'gte',\n },\n [DateOperator.notAfter]: {\n negates: DateOperator.after,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateValue',\n acceptsExpr: true,\n comparator: 'lte',\n },\n [DateOperator.within]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateWindow',\n acceptsExpr: true,\n },\n [DateOperator.notWithin]: {\n negates: DateOperator.within,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateWindow',\n acceptsExpr: true,\n },\n [DateOperator.between]: {\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateRange',\n acceptsExpr: true,\n },\n [DateOperator.notBetween]: {\n negates: DateOperator.between,\n kinds: ['DateTime'],\n targets: ALL_TARGETS,\n valueShape: 'dateRange',\n acceptsExpr: true,\n },\n [DateOperator.dayIn]: {\n kinds: ['DateTime'],\n targets: NON_PRISMA_TARGETS,\n valueShape: 'dayList',\n acceptsExpr: false,\n },\n [DateOperator.dayNotIn]: {\n negates: DateOperator.dayIn,\n kinds: ['DateTime'],\n targets: NON_PRISMA_TARGETS,\n valueShape: 'dayList',\n acceptsExpr: false,\n },\n};\n\ntype ArrayCatalogEntry = {\n targets: readonly RuleTarget[];\n valueShape: ValueShape;\n comparator?: Comparator;\n};\n\nexport const ARRAY_OPERATOR_CATALOG: Record<ArrayOperator, ArrayCatalogEntry> = {\n [ArrayOperator.all]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.any]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.none]: { targets: NON_SQL_TARGETS, valueShape: 'predicate' },\n [ArrayOperator.atLeast]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'gte' },\n [ArrayOperator.atMost]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'lte' },\n [ArrayOperator.exactly]: { targets: NON_SQL_TARGETS, valueShape: 'count', comparator: 'equals' },\n [ArrayOperator.empty]: { targets: ALL_TARGETS, valueShape: 'none' },\n [ArrayOperator.notEmpty]: { targets: ALL_TARGETS, valueShape: 'none' },\n};\n\n/** Which catalog an operator belongs to — `between` is both a field and a date operator. */\nexport type OperatorFamily = 'field' | 'date' | 'array';\n\nconst CATALOGS: Record<OperatorFamily, Record<string, CatalogEntry | ArrayCatalogEntry>> = {\n field: FIELD_OPERATOR_CATALOG,\n date: DATE_OPERATOR_CATALOG,\n array: ARRAY_OPERATOR_CATALOG,\n};\n\n/** An operator's catalog entry within its family; undefined when the family doesn't have it. */\nexport const catalogEntry = (\n operator: string,\n family: OperatorFamily,\n): CatalogEntry | ArrayCatalogEntry | undefined =>\n Object.hasOwn(CATALOGS[family], operator) ? CATALOGS[family][operator] : undefined;\n\n/** A field or date leaf's catalog entry: its operator read in its family. */\nexport const leafCatalogEntry = (node: {\n operator?: unknown;\n dateOperator?: unknown;\n}): CatalogEntry | undefined =>\n (typeof node.operator === 'string'\n ? catalogEntry(node.operator, 'field')\n : typeof node.dateOperator === 'string'\n ? catalogEntry(node.dateOperator, 'date')\n : undefined) as CatalogEntry | undefined;\n\n/** How an operator compares its field with one operand; undefined when it doesn't. */\nexport const comparatorOf = (operator: string, family: OperatorFamily): Comparator | undefined =>\n catalogEntry(operator, family)?.comparator;\n\nexport const getValueShape = (operator: string, family: OperatorFamily): ValueShape => {\n const entry = catalogEntry(operator, family);\n if (!entry) throw unknownOperator(operator, family);\n return entry.valueShape;\n};\n\nexport const isOperatorSupportedForTarget = (\n operator: string,\n family: OperatorFamily,\n target: RuleTarget,\n): boolean => catalogEntry(operator, family)?.targets.includes(target) ?? false;\n\nexport const getOperatorsForKind = (\n kind: FieldKind,\n target?: RuleTarget,\n): { field: Operator[]; date: DateOperator[] } => {\n const field = (Object.keys(FIELD_OPERATOR_CATALOG) as Operator[]).filter((op) => {\n const entry = FIELD_OPERATOR_CATALOG[op as Operator];\n if (!entry.kinds.includes(kind)) return false;\n if (target && !entry.targets.includes(target)) return false;\n return true;\n });\n const date = (Object.keys(DATE_OPERATOR_CATALOG) as DateOperator[]).filter((op) => {\n const entry = DATE_OPERATOR_CATALOG[op];\n if (!entry.kinds.includes(kind)) return false;\n if (target && !entry.targets.includes(target)) return false;\n return true;\n });\n return { field, date };\n};\n\nexport const getArrayOperators = (target?: RuleTarget): ArrayOperator[] => {\n return (Object.keys(ARRAY_OPERATOR_CATALOG) as ArrayOperator[]).filter((op) => {\n if (!target) return true;\n return ARRAY_OPERATOR_CATALOG[op].targets.includes(target);\n });\n};\n\n// --- Operator sets ---------------------------------------------------------------------------\n// Every set of operators the rails and validation branch on, defined here once. Sets that\n// follow from an entry's value shape are derived; the rest are listed.\n\nconst OPERATOR_ENTRIES: readonly [string, CatalogEntry][] = [\n ...Object.entries(FIELD_OPERATOR_CATALOG),\n ...Object.entries(DATE_OPERATOR_CATALOG),\n];\nconst withShape = (...shapes: ValueShape[]): readonly string[] =>\n OPERATOR_ENTRIES.flatMap(([operator, entry]) =>\n shapes.includes(entry.valueShape) ? [operator] : [],\n );\n\n/** Operators that read no comparison value. */\nexport const NO_VALUE_OPERATORS = withShape('none');\n/** Field comparisons with an order: `<`, `<=`, `>`, `>=`. */\nexport const ORDERED_OPERATORS = withShape('ordered');\n/** A window expression (`within`), not a pair. */\nexport const WINDOW_OPERATORS = withShape('dateWindow');\n/** Operators that compare against two ends. */\nexport const RANGE_OPERATORS = withShape('range', 'dateRange', 'dateWindow');\n/** Operators a null operand leaves with nothing to compare against — unlike `equals` /\n * `notEquals`, where null is the is-null sentinel. */\nexport const OPERAND_OPERATORS = withShape('ordered', 'string', 'pattern', 'array');\n/** Containment — of a substring, or of a list's member: `contains` / `notContains`. */\nexport const CONTAINS_OPERATORS: readonly string[] = [Operator.contains, Operator.notContains];\n/** The threshold comparisons an aggregate takes — equality, order and ranges; every target\n * compiles all of them. */\nexport const AGGREGATE_OPERATORS = withShape('scalar', 'ordered', 'range') as readonly Operator[];\n\n/** What an aggregate computes over its items. */\nexport const AGGREGATE_MODES: readonly AggregateMode[] = ['sum', 'avg'];\n\nexport const getAggregateOperators = (): readonly Operator[] => AGGREGATE_OPERATORS;\n\n/** Equality with one value: `equals` / `notEquals`. */\nexport const EQUALITY_OPERATORS = withShape('scalar');\n/** Membership in a list: `in` / `notIn`. */\nexport const SET_OPERATORS = withShape('array');\n/** Exact equality and membership: what a column answers by value, case-sensitively. */\nexport const EXACT_OPERATORS = withShape('scalar', 'array');\n/** Weekday lists: `dayIn` / `dayNotIn`. */\nexport const DAY_LIST_OPERATORS = withShape('dayList');\n/** Date ranges between two points: date `between` / `notBetween`. */\nexport const DATE_RANGE_OPERATORS = withShape('dateRange');\n/** Operators with a point to move: the comparisons and both ends of a pair. */\nexport const OFFSET_OPERATORS = withShape('scalar', 'ordered', 'range', 'dateValue', 'dateRange');\n\nconst arrayWithShape = (...shapes: ValueShape[]): readonly string[] =>\n Object.entries(ARRAY_OPERATOR_CATALOG).flatMap(([operator, entry]) =>\n shapes.includes(entry.valueShape) ? [operator] : [],\n );\n/** Array operators that count matching elements. */\nexport const ARRAY_COUNT_OPERATORS = arrayWithShape('count');\n/** Array operators that test each element against a condition. */\nexport const ARRAY_CONDITION_OPERATORS = arrayWithShape('predicate', 'count');\n/** Array operators a broader condition only widens: more matching elements never make them false. */\nexport const ARRAY_MONOTONE_OPERATORS: readonly string[] = [\n ArrayOperator.any,\n ArrayOperator.atLeast,\n];\n\n/** The negations: each is the complement of its positive form and keeps NULL fields\n * (the 2.19.0 ruling). */\nexport const NEGATED_OPERATORS: readonly string[] = [\n ...Object.entries(FIELD_OPERATOR_CATALOG),\n ...Object.entries(DATE_OPERATOR_CATALOG),\n].flatMap(([operator, entry]) => (entry.negates ? [operator] : []));\n/** Negations of a string operator: `notContains`, `notStartsWith`, `notEndsWith`. */\nexport const NEGATED_STRING_OPERATORS = NEGATED_OPERATORS.filter((op) =>\n withShape('string').includes(op),\n);\n/** Negations of a two-ended range. */\nexport const NEGATED_RANGE_OPERATORS = NEGATED_OPERATORS.filter((op) =>\n RANGE_OPERATORS.includes(op),\n);\n\n/** Comparisons that bound a field from above / below — what a window's extremal rewrite reads. */\nconst bounding = (...comparators: Comparator[]): readonly string[] =>\n OPERATOR_ENTRIES.flatMap(([operator, entry]) =>\n entry.comparator &&\n comparators.includes(entry.comparator) &&\n !NEGATED_OPERATORS.includes(operator)\n ? [operator]\n : [],\n );\nexport const UPPER_BOUND_OPERATORS = bounding('lt', 'lte');\nexport const LOWER_BOUND_OPERATORS = bounding('gt', 'gte');\n\n// --- Kind sets -------------------------------------------------------------------------------\n\n/** Kinds a calendar unit amount can read: whole numbers. */\nexport const INTEGER_KINDS: readonly FieldKind[] = ['Int', 'BigInt'];\n/** Kinds check() coerces a literal to (see coerceScalar in src/field.ts). */\nexport const COERCIBLE_KINDS: readonly FieldKind[] = [\n ...NUMERIC_KINDS,\n 'DateTime',\n 'Boolean',\n 'String',\n];\n/** Kinds whose literal the compilers coerce exactly as check() does — Prisma rejects a string on\n * Int/Float/Boolean; BigInt compares as Int. Decimal keeps its literal: Prisma and Postgres take\n * the numeric string losslessly, and a JS number would not. */\nexport const COMPILE_COERCED_KINDS: readonly FieldKind[] = [\n 'Int',\n 'BigInt',\n 'Float',\n 'Boolean',\n 'String',\n];\n\n/** Value shapes that take one literal. */\nexport const SINGLE_VALUE_SHAPES: readonly ValueShape[] = ['scalar', 'ordered', 'string'];\n\n// --- Date units ------------------------------------------------------------------------------\n\n/** Each relative unit: the Postgres interval field it adds to, its size there, and whether it is\n * a calendar unit (whole steps). Applied months, then days, then time, as Postgres does. */\nexport const RELATIVE_UNITS = {\n years: { interval: 'months', factor: 12, calendar: true },\n quarters: { interval: 'months', factor: 3, calendar: true },\n months: { interval: 'months', factor: 1, calendar: true },\n weeks: { interval: 'days', factor: 7, calendar: true },\n days: { interval: 'days', factor: 1, calendar: true },\n hours: { interval: 'secs', factor: 3600, calendar: false },\n minutes: { interval: 'secs', factor: 60, calendar: false },\n seconds: { interval: 'secs', factor: 1, calendar: false },\n} as const;\nexport type RelativeUnit = keyof typeof RELATIVE_UNITS;\nexport const INTERVAL_FIELDS = ['months', 'days', 'secs'] as const;\nexport const isRelativeUnit = (unit: string): unit is RelativeUnit =>\n Object.hasOwn(RELATIVE_UNITS, unit);\nexport const isCalendarUnit = (unit: string): boolean =>\n isRelativeUnit(unit) && RELATIVE_UNITS[unit].calendar;\n\nexport const PERIOD_UNITS: readonly string[] = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'isoWeek',\n 'day',\n 'hour',\n 'minute',\n 'second',\n];\n\n// --- Weekdays -------------------------------------------------------------------------------\n\n/** Weekday names in Postgres `EXTRACT(DOW)` order: sunday is 0. */\nexport const DAY_NAMES = [\n 'sunday',\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n] as const;\nexport const isDayName = (name: string): boolean =>\n (DAY_NAMES as readonly string[]).includes(name.toLowerCase());\n\n// --- Complements -----------------------------------------------------------------------------\n// Each operator's complement under check(). A negation keeps NULL fields (the 2.19.0 ruling), so\n// a flip is exact; an ordered comparison has no negated twin, so its complement is the opposite\n// comparison or an absent field.\n\n/** A catalog's negation pairs both ways, plus `extra` pairs that complement without being a\n * NULL-keeping negation. */\nconst complements = (\n catalog: Record<string, CatalogEntry>,\n extra: readonly [string, string][] = [],\n): Readonly<Record<string, string>> =>\n Object.fromEntries(\n [\n ...Object.entries(catalog).flatMap(([op, entry]) =>\n entry.negates ? [[entry.negates, op] as [string, string]] : [],\n ),\n ...extra,\n ].flatMap(([a, b]) => [\n [a, b],\n [b, a],\n ]),\n );\n\nexport const COMPLEMENT_OPERATORS = complements(FIELD_OPERATOR_CATALOG, [\n [Operator.isEmpty, Operator.notEmpty],\n [Operator.exists, Operator.notExists],\n]);\n\nexport const COMPLEMENT_DATE_OPERATORS = complements(DATE_OPERATOR_CATALOG);\n\n/** The opposite of a comparison with no negated twin: its complement, less the absent field. */\nexport const OPPOSITE_OPERATORS: Readonly<Record<string, string>> = {\n [Operator.lessThan]: Operator.greaterThanEquals,\n [Operator.lessThanEquals]: Operator.greaterThan,\n [Operator.greaterThan]: Operator.lessThanEquals,\n [Operator.greaterThanEquals]: Operator.lessThan,\n [DateOperator.onOrBefore]: DateOperator.after,\n [DateOperator.onOrAfter]: DateOperator.before,\n};\n","import { resolveFuzzy } from './engineGlobals';\nimport type { MapHop } from './fieldMap/walk';\nimport type { FuzzyConfig } from './fuzzy';\nimport {\n AGGREGATE_MODES,\n CONTAINS_OPERATORS,\n ORDERED_OPERATORS,\n RANGE_OPERATORS,\n} from './operatorCatalog';\n// Error texts every rail raises the same way.\n\n/** A rule kind a compiler compiles only with a field (check() also takes a root array). */\nexport const fieldlessArrayError = (target: 'toSql' | 'toPrisma'): Error =>\n new Error(`${target}: ArrayRule.field is required (fieldless arrayOps are check-only)`);\n\n/** An operator the catalog doesn't list in its family. */\nexport const unknownOperator = (operator: unknown, family: string): Error =>\n new Error(`Unknown ${family} operator: ${String(operator)}`);\n\n/** A counting array operator with no count. */\nexport const countRequired = (operator: string): Error => new Error(`${operator} requires a count`);\n\n/** A window date operator against a single point instead of a range expression. */\nexport const rangeExprRequired = (operator: string): Error =>\n new Error(\n `${operator} requires a range date expression (a period or rolling window), not a single point`,\n );\n\n/** A counting or element-wise array operator with no condition. */\nexport const conditionRequired = (operator: string): Error =>\n new Error(`${operator} requires a condition to check against array elements`);\n\n/** Comparing a to-one relation as a value. */\nexport const relationNotValue = (field: string): Error =>\n new Error(\n `'${field}' is a relation: it exists or not; compare its fields with '${field}.<field>'.`,\n );\n\n/** A to-many relation compared as a value: it is rows, which an array operator reads. */\nexport const relationsNotValue = (field: string): Error =>\n new Error(\n `'${field}' is a list of rows: compare it with an arrayOperator (any / all / none / empty / atLeast …).`,\n );\n\n/** Fuzzy matching (a rule's `fuzzy`, or the engine-global default) on a compiler: it has no\n * compiled form, so the compilers refuse what check() would match fuzzily. */\nexport const fuzzyNotCompiled = (rule: { fuzzy?: unknown; operator: string }): Error | null =>\n CONTAINS_OPERATORS.includes(rule.operator) &&\n resolveFuzzy(rule.fuzzy as boolean | FuzzyConfig | undefined)\n ? new Error('Fuzzy matching has no compiled form — evaluate it in memory with check().')\n : null;\n\n/** An ordered comparison or a range against a value that doesn't order — a boolean, a list or an\n * object: check() matches nothing, and the databases order it by type (Prisma panics). */\nexport const unorderedOperand = (operator: string, value: unknown): Error | null => {\n if (!ORDERED_OPERATORS.includes(operator) && !RANGE_OPERATORS.includes(operator)) return null;\n const ends = RANGE_OPERATORS.includes(operator) && Array.isArray(value) ? value : [value];\n return ends.some(\n (end) =>\n typeof end === 'boolean' ||\n (typeof end === 'object' && end !== null && !(end instanceof Date)),\n )\n ? new Error(\n `'${operator}' orders numbers, strings and dates; it can't compare ${JSON.stringify(value)}`,\n )\n : null;\n};\n\n/** An aggregate mode outside AGGREGATE_MODES. */\nexport const unknownAggregateMode = (mode: unknown): Error =>\n new Error(`aggregate.mode must be one of ${AGGREGATE_MODES.join(' / ')}, not '${String(mode)}'`);\n\n/** A node that is not exactly one kind of condition. */\nexport const ambiguousCondition = (): Error =>\n new Error(\n 'A condition is exactly one of: a field, date, array or aggregate rule, all, any, or if/then[/else]',\n );\n\n/** A rule a compiler can't express as check() reads it: refused, never compiled to something\n * else. `why` says what the target would do instead. */\nexport const noCompiledForm = (target: 'toSql' | 'toPrisma', what: string, why?: string): Error =>\n new Error(\n `${what} has no ${target === 'toSql' ? 'SQL' : 'Prisma'} form${why ? ` (${why})` : ''}; use ${target === 'toSql' ? 'check()' : 'toSql() or check()'}.`,\n );\n\n/** A window (filter / orderBy / take / skip) a compiler has no form for. */\nexport const windowUnsupported = (target: 'toSql' | 'toPrisma'): Error =>\n new Error(\n `Windowing (filter/orderBy/take/skip) is not supported by ${target}() for this rule; evaluate with check()${target === 'toPrisma' ? ' — toPrisma compiles a filter alone and an extremal take: 1' : ''}.`,\n );\n\n/** A to-many relation inside a plain field path: which child it reads is undefined. */\nexport const toManyHopError = (field: string, hop: MapHop): Error =>\n new Error(\n `'${field}' reads through the to-many relation '${hop.prefix}'; compare its rows with an arrayOperator rule on '${hop.prefix}'.`,\n );\n\n/** The error for a path that continues past a non-Json column. */\nexport const pastScalarError = (field: string, column: string): Error =>\n new Error(`'${field}' continues past '${column}', which is not a Json column`);\n","import dayjs from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear.js';\nimport timezone from 'dayjs/plugin/timezone.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport { isPlainObject } from 'lodash-es';\nimport { rangeExprRequired } from './errors';\nimport {\n type INTERVAL_FIELDS,\n leafCatalogEntry,\n PERIOD_UNITS,\n RELATIVE_UNITS,\n type RelativeUnit,\n UPPER_BOUND_OPERATORS,\n} from './operatorCatalog';\nimport type {\n DateConfig,\n DateExpr,\n EdgeExpr,\n PeriodExpr,\n PeriodUnit,\n RelativeUnits,\n RollingExpr,\n} from './types';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(quarterOfYear);\ndayjs.extend(isoWeek);\n\n/** True when a DateRule `value` is a structured date expression rather than an absolute date. */\nexport const isDateExpr = (value: unknown): value is DateExpr => {\n if (!isPlainObject(value)) return false;\n const v = value as Record<string, unknown>;\n return (\n 'ago' in v ||\n 'ahead' in v ||\n 'this' in v ||\n 'last' in v ||\n 'next' in v ||\n 'start' in v ||\n 'end' in v\n );\n};\n\n/** The zone an evaluation reads in when none is set: never the host's. */\nexport const DEFAULT_ZONE = 'UTC';\n\n/** A date config with its zone read: the expression layer never sees a value source. */\nexport type ResolvedDateConfig = Omit<DateConfig, 'timeZone'> & { timeZone: string };\n\nexport const requireNow = (config: ResolvedDateConfig): dayjs.Dayjs => {\n if (config.now === undefined)\n throw new Error('date expressions require `now` to be supplied to the evaluator');\n const base = dayjs(config.now).tz(config.timeZone);\n if (!base.isValid()) throw new Error(`invalid \\`now\\`: ${String(config.now)}`);\n return base;\n};\n\n// Units apply as Postgres applies an interval to a wall-clock time: the month part (years,\n// quarters, months), then the day part (weeks, days), then time — so a shift lands on the same\n// instant in check() and in toSql, at a month end (2024-02-29 + 1 year 1 month is 2025-03-29)\n// and across a DST change in the evaluation's zone (a day is 23 hours on the spring-forward day).\n/** The units' total in one Postgres interval field (months, days or secs). */\nconst intervalTotal = (\n units: RelativeUnits<number>,\n field: (typeof INTERVAL_FIELDS)[number],\n): number =>\n (Object.entries(units) as [RelativeUnit, number][]).reduce(\n (total, [unit, amount]) =>\n RELATIVE_UNITS[unit].interval === field\n ? total + amount * RELATIVE_UNITS[unit].factor\n : total,\n 0,\n );\n\nconst WALL = 'YYYY-MM-DDTHH:mm:ss.SSS';\n\n/** Move `base` by `units` on the wall clock of `zone` — forward for `ahead` (1), back for `ago` (-1). */\nexport const shiftByUnits = (\n base: dayjs.Dayjs,\n units: RelativeUnits<number>,\n direction: 1 | -1,\n zone: string,\n): dayjs.Dayjs => {\n const months = intervalTotal(units, 'months');\n const days = intervalTotal(units, 'days');\n const seconds = intervalTotal(units, 'secs');\n let wall = dayjs.utc(base.tz(zone).format(WALL));\n if (months) wall = wall.add(direction * months, 'month');\n if (days) wall = wall.add(direction * days, 'day');\n if (seconds) wall = wall.add(direction * seconds * 1000, 'millisecond');\n return dayjs.tz(wall.format(WALL), zone);\n};\n\nconst isRollingExpr = <A>(e: DateExpr<A>): e is RollingExpr<A> => 'ago' in e || 'ahead' in e;\n/** A rolling expression from units and a direction: back (-1) is `ago`, forward (1) `ahead`. */\nexport const rollingExpr = <A>(units: RelativeUnits<A>, direction: 1 | -1): RollingExpr<A> =>\n direction === -1 ? { ago: units } : { ahead: units };\n\n/** A rolling expression's units and direction: `ago` moves back (-1), `ahead` forward (1). */\nexport const rollingShift = <A>(expr: DateExpr<A>): [RelativeUnits<A>, 1 | -1] | null =>\n isRollingExpr(expr) ? ('ago' in expr ? [expr.ago, -1] : [expr.ahead, 1]) : null;\n\nexport const isPeriodExpr = <A>(e: DateExpr<A>): e is PeriodExpr =>\n 'this' in e || 'last' in e || 'next' in e;\nexport const isEdgeExpr = <A>(e: DateExpr<A>): e is EdgeExpr => 'start' in e || 'end' in e;\n\n/** What a period expression names, whichever of this / last / next it uses. */\nexport const namedPeriod = (expr: PeriodExpr): unknown =>\n 'this' in expr ? expr.this : 'last' in expr ? expr.last : expr.next;\n\n/** A period expression's unit; an unknown one throws (dayjs would read it as a millisecond). */\nconst periodUnit = (expr: PeriodExpr): PeriodUnit => {\n const unit = namedPeriod(expr);\n if (typeof unit !== 'string' || !PERIOD_UNITS.includes(unit))\n throw new Error(`Unknown period unit '${String(unit)}'`);\n return unit as PeriodUnit;\n};\n\n// `week` is governed by weekStart (default monday → isoWeek). `isoWeek` is always Monday.\nconst effectivePeriodUnit = (unit: PeriodUnit, config: ResolvedDateConfig): dayjs.OpUnitType => {\n if (unit === 'week')\n return (config.weekStart === 'sunday' ? 'week' : 'isoWeek') as dayjs.OpUnitType;\n return unit as dayjs.OpUnitType;\n};\n\n/** Resolve a calendar period (this/last/next) to its [start, end] boundaries. */\nconst resolvePeriodRange = (\n expr: PeriodExpr,\n config: ResolvedDateConfig,\n): [dayjs.Dayjs, dayjs.Dayjs] => {\n const now = requireNow(config);\n const unit = periodUnit(expr);\n // Step whole periods first, then snap — robust to month-length clamping.\n const stepUnit = (unit === 'isoWeek' ? 'week' : unit) as dayjs.QUnitType;\n let base = now;\n if ('last' in expr) base = now.subtract(1, stepUnit);\n else if ('next' in expr) base = now.add(1, stepUnit);\n const eff = effectivePeriodUnit(unit, config);\n return [base.startOf(eff), base.endOf(eff)];\n};\n\n/**\n * Resolve a point expression (for before/after/onOrBefore/onOrAfter).\n * Rolling → the offset instant; edge → the named boundary of a period.\n */\nexport const resolveDateExpr = (\n expr: DateExpr<number>,\n config: ResolvedDateConfig,\n): dayjs.Dayjs => {\n const rolling = rollingShift(expr);\n if (rolling) return shiftByUnits(requireNow(config), ...rolling, config.timeZone);\n if (isEdgeExpr(expr)) {\n const period = 'start' in expr ? expr.start : expr.end;\n const [start, end] = resolvePeriodRange(period, config);\n return 'start' in expr ? start : end;\n }\n throw new Error(\n 'a point operator requires a rolling or start/end edge expression, not a bare period',\n );\n};\n\n/**\n * Resolve the single comparison point for before/after/onOrBefore/onOrAfter.\n * Bare period → implied edge (before/onOrBefore → start; after/onOrAfter → end).\n * Rolling/edge → their point. Shared by check, toPrisma, and toSql.\n */\nexport const resolvePointForOperator = (\n expr: DateExpr<number>,\n operator: string,\n config: ResolvedDateConfig,\n): dayjs.Dayjs => {\n if (isPeriodExpr(expr)) {\n const [start, end] = resolvePeriodRange(expr, config);\n // An upper bound anchors at the start; a negation at its positive form's edge.\n const positive = leafCatalogEntry({ dateOperator: operator })?.negates ?? operator;\n return UPPER_BOUND_OPERATORS.includes(positive) ? start : end;\n }\n return resolveDateExpr(expr, config);\n};\n\n/**\n * Resolve a range expression (for `within`).\n * Period → its [start, end]; rolling → [now-Δ, now] / [now, now+Δ].\n */\nexport const resolveDateExprRange = (\n expr: DateExpr<number>,\n config: ResolvedDateConfig,\n): [dayjs.Dayjs, dayjs.Dayjs] => {\n if (isPeriodExpr(expr)) return resolvePeriodRange(expr, config);\n const rolling = rollingShift(expr);\n if (rolling) {\n const now = requireNow(config);\n const moved = shiftByUnits(now, ...rolling, config.timeZone);\n return rolling[1] === -1 ? [moved, now] : [now, moved];\n }\n throw rangeExprRequired('within');\n};\n","import { isPlainObject } from 'lodash-es';\nimport { parseScopeRef, readPath, type ScopeRef, type Scopes } from './scope';\nimport type { RuleValue, ValueSourceFields, ValueSourceOf } from './types';\n\n// A value source is `{ value } | { path } | { bind }`. One dispatch reads it; each rail supplies\n// only what a path and a bind mean there. Its consumers — a leaf's comparison value, an offset,\n// a unit amount, the evaluation's time zone — decide what the value means.\n\ntype Source = ValueSourceFields<unknown>;\n\n/** The three forms, in the order a source is read. */\nexport const SOURCE_FORMS = ['value', 'bind', 'path'] as const;\n\n/** A non-empty `path` — the one test for \"reads a path\". */\nexport const hasPath = (source: Source): source is Source & { path: string } =>\n typeof source.path === 'string' && source.path !== '';\n\n/** The scope a source's path reads when it reads the row (`$.`, `$$.`, …), else null. */\nexport const rowRef = (source: Source): ScopeRef | null =>\n hasPath(source) ? parseScopeRef(source.path) : null;\n\ntype SourceReaders<R> = {\n value: (value: unknown) => R;\n path: (ref: string) => R;\n bind: (name: string, optional: boolean | undefined) => R;\n};\n\n/** The one dispatch over a value source's three forms. */\nexport const matchSource = <R>(source: Source, read: SourceReaders<R>): R => {\n if (source.value !== undefined) return read.value(source.value);\n if (source.bind !== undefined) return read.bind(source.bind, source.bindOptional);\n if (hasPath(source)) return read.path(source.path);\n throw new Error('No value, path or bind specified');\n};\n\nexport const isValueSource = (v: unknown): v is ValueSourceOf<unknown> =>\n isPlainObject(v) &&\n ((v as Source).value !== undefined ||\n hasPath(v as Source) ||\n typeof (v as Source).bind === 'string');\n\n/**\n * The value of one `{ bind }` at evaluation. Key presence is the contract: an unsupplied\n * binding is a caller bug (a forgotten scope must never silently run) unless the source marks\n * it `bindOptional`, which reads as null. A supplied-but-undefined binding is null.\n */\nexport const readBinding = (\n name: string,\n optional: boolean | undefined,\n bindings: Record<string, RuleValue> | undefined,\n): RuleValue => {\n if (!bindings || !Object.hasOwn(bindings, name)) {\n if (optional === true) return null;\n throw new Error(`Missing binding for \"${name}\"`);\n }\n const bound = bindings[name];\n return bound === undefined ? null : bound;\n};\n\n/** A `{ bind }` the compilers meet unresolved: null when optional, a caller bug otherwise. */\nexport const compileBinding = (\n name: string,\n optional: boolean | undefined,\n rail: 'toSql' | 'toPrisma',\n): null => {\n if (optional === true) return null;\n throw new Error(\n `Unresolved binding '${name}' — resolve bindings (bindRule / bindLens) before compiling with ${rail}().`,\n );\n};\n\n/** check(): what a value source reads — the literal, the bound value, or the path read. */\nexport const readValueSource = (\n source: Source,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n): unknown =>\n matchSource<unknown>(source, {\n value: (value) => value,\n bind: (name, optional) => readBinding(name, optional, bindings),\n path: (ref) => readPath(ref, scopes, context) ?? null,\n });\n\n/** How a rail reads a source whose value it needs now (an amount, a zone). */\nexport type ReadSource = (source: ValueSourceOf<unknown>) => unknown;\n","import { isPlainObject } from 'lodash-es';\nimport { isDateExpr, rollingExpr, rollingShift } from './dateExpr';\nimport { isCalendarUnit } from './operatorCatalog';\nimport type { Condition, RelativeUnits, ValueSourceOf } from './types';\nimport { hasPath, isValueSource } from './valueSource';\n\nexport type ConditionNode = Record<string, unknown>;\n\nconst isObjCondition = (c: Condition): c is Exclude<Condition, boolean> =>\n typeof c === 'object' && c !== null;\n\n// An implication is any of its three keys, as conditionShape reads it.\nconst isIfNode = (node: ConditionNode): boolean => 'if' in node || 'then' in node || 'else' in node;\n\nexport const isRelationNode = (node: ConditionNode): boolean =>\n 'arrayOperator' in node || 'aggregate' in node;\n\n// The one structural walk over a condition tree — the grammar's child slots are listed\n// here and nowhere else. A node's logical children (`all` / `any` / `if`…) sit in its scope;\n// its `condition` / `filter` sit in the scope `below` returns for it (the same by default),\n// and `false` stops the walk there. A scope is whatever the walk tracks: a relation target,\n// a stack of them, a model.\ntype Below<S> = (node: ConditionNode, scope: S) => S | false;\n\ntype Slot = { key: string; index?: number; child: Condition; nested: boolean };\n\nconst childSlots = (node: ConditionNode): Slot[] => [\n ...(['all', 'any'] as const).flatMap((key) =>\n Array.isArray(node[key])\n ? (node[key] as Condition[]).map((child, index) => ({ key, index, child, nested: false }))\n : [],\n ),\n ...(isIfNode(node)\n ? (['if', 'then', 'else'] as const).flatMap((key) =>\n node[key] !== undefined ? [{ key, child: node[key] as Condition, nested: false }] : [],\n )\n : []),\n ...(['condition', 'filter'] as const).flatMap((key) =>\n node[key] !== undefined ? [{ key, child: node[key] as Condition, nested: true }] : [],\n ),\n];\n\nexport const isLogicalNode = (node: ConditionNode): boolean =>\n 'all' in node || 'any' in node || isIfNode(node);\n\n/** Visits every node with the scope it sits in. `enter` returns the scope for the node's\n * `condition` / `filter` (nothing for the same, `false` to stop there). */\nexport const visitCondition = <S = undefined>(\n condition: Condition,\n enter: (node: ConditionNode, scope: S) => S | false | undefined,\n scope?: S,\n): void => {\n if (!isObjCondition(condition)) return;\n const node = condition as ConditionNode;\n const below = enter(node, scope as S);\n const inner = below === undefined ? scope : below;\n for (const { child, nested } of childSlots(node)) {\n if (!nested) visitCondition(child, enter, scope);\n else if (inner !== false) visitCondition(child, enter, inner);\n }\n};\n\n/** True when `test` holds for any node; `below` scopes nested conditions as in visitCondition. */\nexport const someCondition = <S = undefined>(\n condition: Condition,\n test: (node: ConditionNode, scope: S) => boolean,\n below?: Below<S>,\n scope?: S,\n): boolean => {\n let found = false;\n visitCondition<S>(\n condition,\n (node, at) => {\n if (!found && test(node, at)) found = true;\n return found ? false : below?.(node, at);\n },\n scope,\n );\n return found;\n};\n\n// Rewrite twin. `rewrite` sees a shallow clone before its children rebuild (pre-order, so a\n// substitution's own children are still walked); `after` sees it once they have (to wrap it\n// without walking the wrapper). Never mutates the input, and returns it when nothing changed.\nexport const mapCondition = <S = undefined>(\n condition: Condition,\n opts: {\n rewrite?: (node: ConditionNode, scope: S) => ConditionNode;\n after?: (node: ConditionNode, scope: S) => Condition;\n below?: Below<S>;\n },\n scope?: S,\n): Condition => {\n if (!isObjCondition(condition)) return condition;\n const at = scope as S;\n const clone = { ...(condition as ConditionNode) };\n const node = opts.rewrite ? opts.rewrite(clone, at) : clone;\n const slots = childSlots(node);\n const inner = slots.some((slot) => slot.nested) && opts.below ? opts.below(node, at) : at;\n for (const key of ['all', 'any'])\n if (Array.isArray(node[key])) node[key] = [...(node[key] as [])];\n for (const { key, index, child, nested } of slots) {\n if (nested && inner === false) continue;\n const mapped = mapCondition(child, opts, nested ? (inner as S) : at);\n if (index === undefined) node[key] = mapped;\n else (node[key] as Condition[])[index] = mapped;\n }\n const result = opts.after ? opts.after(node, at) : (node as Condition);\n return result === node && sameNode(node, condition as ConditionNode) ? condition : result;\n};\n\n// Whether a rebuilt node holds exactly what the original did, so an untouched tree comes back\n// as the same object.\nconst sameNode = (node: ConditionNode, original: ConditionNode): boolean => {\n const keys = Object.keys(node);\n if (keys.length !== Object.keys(original).length) return false;\n return keys.every((key) => {\n const [a, b] = [node[key], original[key]];\n if (a === b) return true;\n return (\n Array.isArray(a) &&\n Array.isArray(b) &&\n a.length === b.length &&\n a.every((item, index) => item === b[index])\n );\n });\n};\n\n/** How a slot's value is used: the comparison value, a number, a whole number, a date shift. */\ntype SourceRole = 'value' | 'number' | 'whole' | 'shift';\n\ntype MapSource = (source: ValueSourceOf<unknown>, role: SourceRole) => ValueSourceOf<unknown>;\n\nconst mapUnits = (units: unknown, fn: MapSource): unknown =>\n isPlainObject(units)\n ? Object.fromEntries(\n Object.entries(units as Record<string, unknown>).map(([unit, amount]) => [\n unit,\n isValueSource(amount) ? fn(amount, isCalendarUnit(unit) ? 'whole' : 'number') : amount,\n ]),\n )\n : units;\n\nconst mapExpr = (expr: unknown, fn: MapSource): unknown => {\n const rolling = isDateExpr(expr) ? rollingShift(expr) : null;\n return rolling ? rollingExpr(mapUnits(rolling[0], fn) as RelativeUnits, rolling[1]) : expr;\n};\n\n/**\n * A leaf's value-source slots, listed once: the leaf itself, its offset, and — on a date rule —\n * each unit amount in its value and its offset's value. `fn` rewrites each slot (identity to\n * list them). Non-mutating; a node with no slots comes back as is.\n */\nexport const mapLeafSources = <T extends Record<string, unknown>>(node: T, fn: MapSource): T => {\n const isDate = 'dateOperator' in node;\n if (!isDate && !('operator' in node)) return node;\n let out: Record<string, unknown> = node;\n if (isDate && node.value !== undefined) {\n const value = Array.isArray(node.value)\n ? node.value.map((v) => mapExpr(v, fn))\n : mapExpr(node.value, fn);\n out = { ...out, value };\n }\n if (isValueSource(node.offset)) {\n const offset = isDate\n ? {\n ...node.offset,\n ...(node.offset.value !== undefined && { value: mapExpr(node.offset.value, fn) }),\n }\n : node.offset;\n out = { ...out, offset: fn(offset as ValueSourceOf<unknown>, isDate ? 'shift' : 'number') };\n }\n if (isValueSource(out)) out = fn(out, 'value');\n return out as T;\n};\n\ntype LeafSource = { source: ValueSourceOf<unknown>; role: SourceRole };\n\n/** Every value source on a leaf, with how its value is used. */\nexport const leafSources = (node: Record<string, unknown>): LeafSource[] => {\n const found: LeafSource[] = [];\n mapLeafSources(node, (source, role) => {\n found.push({ source, role });\n return source;\n });\n return found;\n};\n\ntype ValueRef = { ref: string; role: SourceRole };\n\n/** Every path a leaf reads on its value side, with how it is read. */\nexport const valueRefRoles = (node: Record<string, unknown>): ValueRef[] =>\n leafSources(node).flatMap(({ source, role }) =>\n hasPath(source) ? [{ ref: source.path, role }] : [],\n );\n\n/** Every path a leaf reads on its value side. */\nexport const valueRefs = (node: Record<string, unknown>): string[] =>\n valueRefRoles(node).map((r) => r.ref);\n\n// The element fields a relation node orders or aggregates by — read per element, under the\n// element's grants.\nexport const elementRefs = (node: Record<string, unknown>): string[] => [\n ...(Array.isArray(node.orderBy)\n ? (node.orderBy as { field?: unknown }[]).flatMap((o) =>\n typeof o?.field === 'string' ? [o.field] : [],\n )\n : []),\n ...(typeof (node.aggregate as { field?: unknown })?.field === 'string'\n ? [(node.aggregate as { field: string }).field]\n : []),\n];\n\nexport type ConditionShape = 'all' | 'any' | 'if' | 'field' | 'aggregate' | 'array' | 'date';\n\n/** What a condition node is — exactly one of the grammar's node kinds — or null when its keys\n * name more than one (a node every rail would read differently). */\nexport const conditionShape = (node: Record<string, unknown>): ConditionShape | null => {\n const shapes = new Set<ConditionShape>();\n if ('all' in node) shapes.add('all');\n if ('any' in node) shapes.add('any');\n if (isIfNode(node)) shapes.add('if');\n if ('arrayOperator' in node) shapes.add('array');\n if ('dateOperator' in node) shapes.add('date');\n if ('aggregate' in node) shapes.add('aggregate');\n else if ('operator' in node) shapes.add('field');\n return shapes.size === 1 ? [...shapes][0] : null;\n};\n\n/** Conditions AND-ed together: `true` for none, the condition itself for one. */\nexport const allOf = (conditions: readonly Condition[]): Condition =>\n conditions.length === 0\n ? true\n : conditions.length === 1\n ? conditions[0]\n : { all: [...conditions] };\n\n/** Conditions OR-ed together: `false` for none, the condition itself for one. */\nexport const anyOf = (conditions: readonly Condition[]): Condition =>\n conditions.length === 0\n ? false\n : conditions.length === 1\n ? conditions[0]\n : { any: [...conditions] };\n","import {\n type ConditionNode,\n leafSources,\n mapCondition,\n mapLeafSources,\n visitCondition,\n} from './traverse';\nimport type { Condition, RuleValue, ValueSourceOf } from './types';\n\nimport { readBinding } from './valueSource';\n\n// Every `{ bind }` on a leaf: its comparison value, its offset, its unit amounts.\ntype BindSource = Extract<ValueSourceOf<unknown>, { bind: string }>;\nconst bindTokens = (node: ConditionNode): BindSource[] =>\n leafSources(node).flatMap(({ source }) =>\n typeof source.bind === 'string' ? [source as BindSource] : [],\n );\n\n/** `required`: leave out the names an optional bind (`bindOptional`) may go unsupplied. */\nexport type ListBindingsOptions = { required?: boolean };\n\n/**\n * The bind names a rule reads, sorted. With `required`, only those a bindings map must cover —\n * not `bindOptional` (unsupplied, it reads null); a name optional at one leaf and required at\n * another is required.\n */\nexport const listBindings = (\n condition: Condition,\n { required = false }: ListBindingsOptions = {},\n): string[] => {\n const names = new Set<string>();\n visitCondition(condition, (node) => {\n for (const token of bindTokens(node))\n if (!required || token.bindOptional !== true) names.add(token.bind);\n });\n return [...names].sort();\n};\n\n/**\n * Substitute covered binds with their values; uncovered tokens stay in place (partial\n * resolution). A supplied-but-undefined binding becomes null to stay serializable.\n * Non-mutating.\n */\nexport const bindRule = (condition: Condition, bindings: Record<string, RuleValue>): Condition => {\n // A covered `{ bind, bindOptional }` source becomes `{ value }`; an uncovered one stays.\n const resolve = (source: ValueSourceOf<unknown>): ValueSourceOf<unknown> => {\n if (typeof source.bind !== 'string' || !Object.hasOwn(bindings, source.bind)) return source;\n const { bind, bindOptional: _optional, ...rest } = source;\n return { ...rest, value: readBinding(bind, true, bindings) } as ValueSourceOf<unknown>;\n };\n // A second pass resolves binds a substituted value brought with it (a bound `{ ago }` whose\n // amount is itself a `{ bind }`).\n return mapCondition(condition, {\n rewrite: (node) => mapLeafSources(mapLeafSources(node, resolve), resolve),\n });\n};\n","import type { OrderedRuleValue } from './types';\n\n// BigInt compares as Int: a bigint (what Prisma returns for a BigInt column) becomes a JS\n// number on every side of a comparison, so 5n matches 5. Past ±2^53 a number cannot hold it\n// exactly and every comparison would be silently wrong, so that throws instead.\nconst MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\n\nexport const bigIntToNumber = (value: bigint): number => {\n if (value > MAX_SAFE || value < -MAX_SAFE)\n throw new RangeError(\n `BigInt ${value} is outside the safe integer range (±2^53); json-rules compares BigInt as Int.`,\n );\n return Number(value);\n};\n\nexport const toNumber = (raw: unknown): unknown => {\n if (typeof raw === 'bigint') return bigIntToNumber(raw);\n if (typeof raw === 'string' && raw.trim() !== '' && Number.isFinite(Number(raw)))\n return Number(raw);\n return raw;\n};\n\n/** A source's number; null when it reads nothing. `what` names the slot in the error. */\nexport const readNumber = (raw: unknown, what: string): number | null => {\n if (raw === null || raw === undefined) return null;\n const value = toNumber(raw);\n if (typeof value !== 'number' || !Number.isFinite(value))\n throw new Error(`${what} reads a number (got ${String(raw)})`);\n return value;\n};\n\n/** A pair in ascending order — a range's ends, however authored. */\nexport const orderPair = <T>([a, b]: readonly [T, T] | T[]): [T, T] =>\n (b as never) < (a as never) ? [b, a] : [a, b];\n\n/** A range operand: two ends, or an error naming the operator. */\nexport const readPair = (value: unknown, operator: string): [unknown, unknown] => {\n if (!Array.isArray(value) || value.length !== 2)\n throw new Error(`${operator} operator requires an array of two values`);\n return [value[0], value[1]];\n};\n\n/** A range operand whose ends order (numbers, strings, dates), or an error naming the operator. */\nexport const readOrderedPair = (value: unknown, operator: string): [unknown, unknown] => {\n const pair = readPair(value, operator);\n if (!pair.every(isOrderedValue))\n throw new Error(\n `${operator} requires two ends that order — numbers, strings or dates (got ${JSON.stringify(value)})`,\n );\n return pair;\n};\n\n/** A set operand: a list, or an error — a scalar is not a set. */\nexport const readSet = (value: unknown): unknown[] => {\n if (!Array.isArray(value))\n throw new Error(`in / notIn requires a list (got ${JSON.stringify(value)})`);\n return value;\n};\n\n/** A set operand's non-null members, and whether it names null. */\nexport const splitNull = (operand: unknown): { values: unknown[]; hasNull: boolean } => {\n const list = readSet(operand);\n const values = list.filter((v) => v !== null);\n return { values, hasNull: values.length !== list.length };\n};\n\n/** A value that orders: a string, a number or a Date — also every date input. */\nexport const isOrderedValue = (value: unknown): value is OrderedRuleValue =>\n typeof value === 'string' || typeof value === 'number' || value instanceof Date;\n","import { rollingExpr, rollingShift } from './dateExpr';\nimport { readNumber } from './number';\nimport { isCalendarUnit } from './operatorCatalog';\nimport type { DateExpr, Magnitude, RelativeUnits } from './types';\nimport { hasPath, type ReadSource } from './valueSource';\n\n// A unit amount in a date expression: a literal number or a value source that reads one.\n\n/** Why a unit can't take `amount` — it reads a non-negative number, a calendar unit a whole\n * one — or null. */\nexport const unitAmountProblem = (amount: unknown, unit: string): string | null =>\n typeof amount === 'number' &&\n Number.isFinite(amount) &&\n amount >= 0 &&\n (!isCalendarUnit(unit) || Number.isInteger(amount))\n ? null\n : `${unit} must be a non-negative${isCalendarUnit(unit) ? ' whole' : ''} number (got ${String(amount)})`;\n\n/**\n * A unit amount's number. A supplied amount — literal, `{ value }` or `{ bind }` — that the unit\n * can't take is a caller error and throws. One read from data by `{ path }` — negative, or\n * fractional on a calendar unit — reads as null, as does nothing at all, so the comparison\n * fails closed on every rail.\n */\nexport const resolveMagnitude = (\n magnitude: Magnitude,\n read: ReadSource,\n unit: keyof RelativeUnits,\n): number | null => {\n const amount =\n typeof magnitude === 'number'\n ? magnitude\n : readNumber(read(magnitude), magnitude.path ? `'${magnitude.path}' (${unit})` : unit);\n const problem = amount === null ? null : unitAmountProblem(amount, unit);\n if (problem === null) return amount;\n if (typeof magnitude !== 'number' && hasPath(magnitude)) return null;\n throw new Error(problem);\n};\n\n/** Units with every amount read, or null when one reads nothing usable. */\nexport const resolveUnits = (\n units: RelativeUnits,\n read: ReadSource,\n): RelativeUnits<number> | null => {\n const resolved: RelativeUnits<number> = {};\n for (const [unit, magnitude] of Object.entries(units) as [keyof RelativeUnits, Magnitude][]) {\n if (magnitude === undefined) continue;\n const amount = resolveMagnitude(magnitude, read, unit);\n if (amount === null) return null;\n resolved[unit] = amount;\n }\n return resolved;\n};\n\n/** A date expression with its amounts read, or null when one reads nothing. */\nexport const resolveExpr = (expr: DateExpr, read: ReadSource): DateExpr<number> | null => {\n const rolling = rollingShift(expr);\n if (!rolling) return expr as DateExpr<number>;\n const units = resolveUnits(rolling[0], read);\n if (!units) return null;\n return rollingExpr(units, rolling[1]);\n};\n","import { isDateExpr, rollingShift } from './dateExpr';\nimport { readNumber, toNumber } from './number';\nimport type { RelativeUnits } from './types';\n\n// An offset moves a leaf's comparison value. It reads its own value source: a number on a field\n// rule, a rolling `{ ago }` / `{ ahead }` on a date rule.\n\n/**\n * A comparison value moved by a numeric offset. A range moves at both ends, and a range\n * missing an end is null — nothing to compare against.\n */\nexport const addOffset = (value: unknown, offset: number): unknown => {\n if (value === null || value === undefined) return null;\n if (Array.isArray(value)) {\n const ends = value.map((item) => addOffset(item, offset));\n return ends.some((end) => end === null) ? null : ends;\n }\n const number = toNumber(value);\n if (typeof number !== 'number' || !Number.isFinite(number))\n throw new Error(`offset needs a numeric comparison value (got ${String(value)})`);\n return number + offset;\n};\n\n/** A numeric offset's amount, read from its source; null when it reads nothing. */\nexport const offsetAmount = (raw: unknown): number | null => readNumber(raw, 'an offset');\n\n/** A date offset's rolling shift, read from its source; null when it reads nothing. */\nexport const offsetShift = (raw: unknown): [RelativeUnits, 1 | -1] | null => {\n if (raw === null || raw === undefined) return null;\n const rolling = isDateExpr(raw) ? rollingShift(raw) : null;\n if (!rolling)\n throw new Error(`a date offset reads { ago } or { ahead } (got ${JSON.stringify(raw)})`);\n return rolling;\n};\n","import dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';\nimport timezone from 'dayjs/plugin/timezone.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport { resolveExpr, resolveUnits } from './amount';\nimport {\n DEFAULT_ZONE,\n isDateExpr,\n type ResolvedDateConfig,\n resolveDateExpr,\n resolveDateExprRange,\n resolvePointForOperator,\n shiftByUnits,\n} from './dateExpr';\nimport { rangeExprRequired, unknownOperator } from './errors';\nimport { isOrderedValue, orderPair, readPair } from './number';\nimport { offsetShift } from './offset';\nimport { DateOperator } from './operator';\nimport {\n DATE_RANGE_OPERATORS,\n DAY_LIST_OPERATORS,\n DAY_NAMES,\n NEGATED_OPERATORS,\n WINDOW_OPERATORS,\n} from './operatorCatalog';\nimport { readField, type Scopes } from './scope';\nimport type { DateConfig, DateExpr, DateInputValue, DateRule, RuleValue } from './types';\nimport { type ReadSource, readValueSource, rowRef } from './valueSource';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isSameOrAfter);\n\nexport const checkDate = (\n condition: DateRule,\n scopes: Scopes,\n context: unknown,\n config: DateConfig = {},\n bindings?: Record<string, RuleValue>,\n): boolean | string => {\n const fieldValue = readField(condition.field, scopes);\n\n // Read the zone ONCE. Left unset when the caller set none, so expression `now` keeps its\n // prior behavior; anchoring and shifts default to UTC.\n const exprConfig = resolveDateConfig(config, (source) =>\n readValueSource(source, scopes, context, bindings),\n );\n const tz = exprConfig.timeZone;\n\n // Null: non-match for positive operators, match for negated ones (2.19.0 negation\n // ruling) — the compilers carry the same split. `== null`, not falsy: epoch 0 is a\n // real instant and compares; '' falls to the validity error below.\n if (fieldValue == null) {\n if (NEGATED_OPERATORS.includes(condition.dateOperator)) return true;\n return condition.error || `${condition.field} has no value`;\n }\n // A naive field string is anchored in the resolved zone (default UTC); an absolute\n // instant (Date/number/zone-stamped string) is used as-is. Consistent with the\n // engine's config.timeZone policy used by dateExpr and both compilers.\n const fieldDate = isOrderedValue(fieldValue) ? parseDateValue(fieldValue, tz) : null;\n if (!fieldDate?.isValid())\n throw new Error(`${condition.field} is not a valid date: ${String(fieldValue)}`);\n\n const getError = (op: string) => condition.error || `${condition.field} ${op}`;\n\n // A weekday list reads no instant.\n if (DAY_LIST_OPERATORS.includes(condition.dateOperator)) {\n const days = dayNumbers(readValueSource(condition, scopes, context, bindings));\n if (days === null) return condition.error || `${condition.field} has no comparison value`;\n const listed = days.includes(fieldDate.tz(tz).day());\n const names = days.map((day) => DAY_NAMES[day]).join(' or ');\n return condition.dateOperator === DateOperator.dayIn\n ? listed || getError(`must be on ${names}`)\n : !listed || getError(`must not be on ${names}`);\n }\n\n const dates = parseCompareDates(condition, scopes, context, exprConfig, tz, bindings);\n // Nothing to compare against — a null path, bind or magnitude: no operator matches, as SQL's\n // comparison with NULL never does. A null field was already decided above.\n if (dates === null) return condition.error || `${condition.field} has no comparison value`;\n // A window or range operator always reads a pair; the others read one point.\n const [compareDate, endDate = compareDate] = dates;\n\n switch (condition.dateOperator) {\n case DateOperator.before:\n return fieldDate.isBefore(compareDate) || getError(`must be before ${compareDate.format()}`);\n\n case DateOperator.after:\n return fieldDate.isAfter(compareDate) || getError(`must be after ${compareDate.format()}`);\n\n case DateOperator.onOrBefore:\n return (\n fieldDate.isSameOrBefore(compareDate) ||\n getError(`must be on or before ${compareDate.format()}`)\n );\n\n case DateOperator.onOrAfter:\n return (\n fieldDate.isSameOrAfter(compareDate) ||\n getError(`must be on or after ${compareDate.format()}`)\n );\n\n case DateOperator.within: {\n return (\n (fieldDate.isSameOrAfter(compareDate) && fieldDate.isSameOrBefore(endDate)) ||\n getError(`must be within ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.notBefore:\n return (\n fieldDate.isSameOrAfter(compareDate) ||\n getError(`must not be before ${compareDate.format()}`)\n );\n\n case DateOperator.notAfter:\n return (\n fieldDate.isSameOrBefore(compareDate) ||\n getError(`must not be after ${compareDate.format()}`)\n );\n\n case DateOperator.notWithin: {\n return (\n fieldDate.isBefore(compareDate) ||\n fieldDate.isAfter(endDate) ||\n getError(`must not be within ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.between: {\n return (\n (fieldDate.isSameOrAfter(compareDate) && fieldDate.isSameOrBefore(endDate)) ||\n getError(`must be between ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n case DateOperator.notBetween: {\n return (\n fieldDate.isBefore(compareDate) ||\n fieldDate.isAfter(endDate) ||\n getError(`must not be between ${compareDate.format()} and ${endDate.format()}`)\n );\n }\n\n default:\n throw unknownOperator((condition as { dateOperator?: unknown }).dateOperator, 'date');\n }\n};\n\nconst parseCompareDates = (\n condition: DateRule,\n scopes: Scopes,\n context: unknown,\n config: ResolvedDateConfig,\n tz: string,\n bindings?: Record<string, RuleValue>,\n): [dayjs.Dayjs] | [dayjs.Dayjs, dayjs.Dayjs] | null => {\n const operator = condition.dateOperator;\n\n const read: ReadSource = (source) => readValueSource(source, scopes, context, bindings);\n const raw = readValueSource(condition, scopes, context, bindings);\n if (raw === null || raw === undefined) return null;\n const move = condition.offset === undefined ? undefined : offsetShift(read(condition.offset));\n if (move === null) return null;\n const shift = (point: dayjs.Dayjs): dayjs.Dayjs | null => {\n if (move === undefined) return point;\n const units = resolveUnits(move[0], read);\n return units && shiftByUnits(point, units, move[1], tz);\n };\n\n if (WINDOW_OPERATORS.includes(operator)) {\n if (!isDateExpr(raw)) throw rangeExprRequired(operator);\n const expr = resolveExpr(raw, read);\n return expr && resolveDateExprRange(expr, config);\n }\n\n const toPoint = (value: unknown, label: string): dayjs.Dayjs | null => {\n if (value === null || value === undefined) return null;\n if (isDateExpr(value)) {\n const expr = resolveExpr(value, read);\n return expr && resolveDateExpr(expr, config);\n }\n const date = parseDateValue(value as DateInputValue, tz);\n if (!date.isValid()) throw new Error(`Invalid ${label}: ${String(value)}`);\n return date;\n };\n\n if (DATE_RANGE_OPERATORS.includes(operator)) {\n const [first, second] = readPair(raw, operator);\n const date1 = toPoint(first, 'start date');\n const date2 = toPoint(second, 'end date');\n if (!date1 || !date2) return null;\n const [start, end] = orderPair([date1, date2]);\n const shiftedStart = shift(start);\n const shiftedEnd = shift(end);\n return shiftedStart && shiftedEnd ? [shiftedStart, shiftedEnd] : null;\n }\n\n if (Array.isArray(raw)) throw new Error(`${operator} operator requires a single date value`);\n // Bare period + before/after ⇒ implied edge (before→start, after→end); the one anchoring\n // rule all three rails share.\n const pointOf = (expr: DateExpr): dayjs.Dayjs | null => {\n const resolved = resolveExpr(expr, read);\n return resolved && resolvePointForOperator(resolved, operator, config);\n };\n const point = isDateExpr(raw) ? pointOf(raw) : toPoint(raw, 'comparison date');\n if (!point) return null;\n const shifted = shift(point);\n return shifted && [shifted];\n};\n\n/**\n * The evaluation's date config with its zone read — the single seam that decides which zone\n * anchors a NAIVE (zoneless) value, frames dayIn/dayNotIn and runs shifts, for ONE evaluation.\n * A zone is a string or a value source read from context or bindings; one that reads nothing\n * is UTC. It is one zone per evaluation, so a row (`$.`) path has no meaning here. Absolute\n * instants never consult it.\n */\nexport const resolveDateConfig = (config: DateConfig, read: ReadSource): ResolvedDateConfig => {\n const zone = config.timeZone;\n if (zone === undefined || typeof zone === 'string')\n return { ...config, timeZone: zone ?? DEFAULT_ZONE };\n if (rowRef(zone))\n throw new Error(`timeZone is one per evaluation; read it from context, not '${zone.path}'`);\n const read_ = read(zone);\n if (read_ !== null && read_ !== undefined && typeof read_ !== 'string')\n throw new Error(`timeZone reads a zone name (got ${String(read_)})`);\n return { ...config, timeZone: read_ ?? DEFAULT_ZONE };\n};\n\n// Whether a date STRING names its own zone (never String(Date), whose render is host-locale-\n// dependent): a `Z` / `z`, or a `±HH`, `±HHMM` or `±HH:MM` offset after the time (with `T` or a\n// space — Postgres renders timestamptz as `2026-10-05 08:00:00+00`), or a GMT / UTC token\n// (RFC 2822, Date#toString). Anything else is zoneless and anchors in the evaluation zone.\nconst ZONED_TIME = /\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?\\s*(?:[zZ]|[+-]\\d{2}(?::?\\d{2})?)$/;\nconst hasExplicitZone = (value: string): boolean =>\n ZONED_TIME.test(value.trim()) || /\\b(?:GMT|UTC)\\b/.test(value);\n\n/**\n * Parse a comparison/field value into an instant, given the already-resolved anchor zone.\n * - Date object / epoch number → absolute instant, used as-is (never anchored).\n * - String with an explicit zone (`Z` or `±HH:MM` after a time) → absolute.\n * - Naive string (date-only or zoneless datetime) → anchored in `tz` via dayjs.tz; a\n * date-only string becomes midnight in that zone.\n */\nexport const parseDateValue = (value: DateInputValue | undefined, tz: string): dayjs.Dayjs => {\n // A string of digits is epoch milliseconds, as a number is.\n if (typeof value === 'string' && /^-?\\d+$/.test(value.trim())) return dayjs(Number(value));\n if (typeof value === 'string' && !hasExplicitZone(value)) {\n // dayjs.tz throws on an unparseable string; return the (invalid) base parse instead\n // so callers' isValid() checks surface the friendly \"not a valid date\" error.\n const base = dayjs(value);\n if (!base.isValid()) return base;\n return dayjs.tz(value, tz);\n }\n // An absolute instant in any of the forms above; the Date parser reads them all.\n return typeof value === 'string' ? dayjs(new Date(value.trim())) : dayjs(value);\n};\n\n// Literal and context date values compile to concrete Dates through the same parse-and-anchor\n// seam check() uses (naive strings → midnight in the zone; instants as-is): a raw 'YYYY-MM-DD'\n// is rejected by Prisma and would carry different zone semantics than check().\nexport const coerceDateLiteral = (value: unknown, zone: string): Date => {\n const parsed = isOrderedValue(value) ? parseDateValue(value, zone) : dayjs(Number.NaN);\n if (!parsed.isValid()) throw new Error(`Invalid date value: ${String(value)}`);\n return parsed.toDate();\n};\n\n/** A weekday list as `EXTRACT(DOW)` numbers (sunday 0); null when it reads nothing. */\nexport const dayNumbers = (days: unknown): number[] | null => {\n if (days === null || days === undefined) return null;\n if (!Array.isArray(days)) throw new Error('a weekday operator requires an array of day names');\n return days.map((day) => {\n const index = (DAY_NAMES as readonly string[]).indexOf(String(day).toLowerCase());\n if (index === -1) throw new Error(`Unknown day name: ${String(day)}`);\n return index;\n });\n};\n","import { distance } from 'fastest-levenshtein';\n\n// Fully JSON-serializable — a rule carries this over the wire, so no functions here.\nexport type FuzzyConfig = {\n maxDistance?: number; // flat edit-distance budget\n maxRatio?: number; // or a fraction of token length (0..1): floor(length * maxRatio)\n};\n\n// Short tokens must match exactly (so 2-3 char terms don't fuzz-match half the corpus);\n// longer tokens tolerate more typos.\nconst maxFuzzyDistance = (length: number): number => {\n if (length <= 3) return 0;\n if (length <= 6) return 1;\n return 2;\n};\n\n// maxDistance (absolute) and maxRatio (fraction of length) are both caps — the tighter one\n// wins, so `{ maxRatio: 0.2, maxDistance: 2 }` is \"≤20% of chars, but never more than 2\".\n// With neither set, fall back to the default length curve.\nconst resolveMaxDistance = (config: FuzzyConfig, length: number): number => {\n const { maxDistance, maxRatio } = config;\n const caps: number[] = [];\n if (typeof maxDistance === 'number') caps.push(maxDistance);\n if (typeof maxRatio === 'number') caps.push(Math.floor(length * maxRatio));\n return caps.length > 0 ? Math.min(...caps) : maxFuzzyDistance(length);\n};\n\nconst tokenize = (value: string): string[] => value.split(/[^a-z0-9\\p{L}]+/u).filter(Boolean);\n\nconst isNumeric = (token: string): boolean => /^\\d+$/.test(token);\n\nconst withinDistance = (a: string, b: string, max: number): boolean => {\n if (a === b) return true;\n if (Math.abs(a.length - b.length) > max) return false;\n return distance(a, b) <= max;\n};\n\n// True when every token in `query` matches `haystack` — as an exact substring of the whole\n// haystack, or within a length-scaled edit distance of some haystack token. Multi-word\n// queries AND their tokens; numbers are identity (never typo-corrected). Inputs lowercased.\nexport const fuzzyContains = (\n haystack: string,\n query: string,\n config: FuzzyConfig = {},\n): boolean => {\n const needle = query.trim().toLowerCase();\n if (!needle) return true;\n\n const hay = haystack.toLowerCase();\n if (hay.includes(needle)) return true;\n\n const queryTokens = tokenize(needle);\n if (queryTokens.length === 0) return false;\n\n const hayTokens = tokenize(hay);\n if (hayTokens.length === 0) return false;\n\n return queryTokens.every((token) => {\n const max = resolveMaxDistance(config, token.length);\n if (max === 0 || isNumeric(token)) return hayTokens.includes(token);\n return hayTokens.some((hayToken) => withinDistance(token, hayToken, max));\n });\n};\n","import { RE2JS } from 're2js';\n\n// A rule's pattern runs on RE2, in time linear in its input, so an untrusted rule can't stall\n// check() — Postgres's own engine doesn't backtrack either. A pattern RE2 can't run (a\n// backreference, a lookaround) is refused on every rail; of a RegExp's flags only `i` reads,\n// which SQL writes as `~*`.\n\nexport type Pattern = { source: string; caseInsensitive: boolean; re: RE2JS };\n\nexport const readPattern = (value: string | RegExp): Pattern => {\n const source = value instanceof RegExp ? value.source : value;\n const flags = value instanceof RegExp ? value.flags : '';\n if (/[^i]/.test(flags))\n throw new Error(`Refused pattern /${source}/${flags}: only the 'i' flag is supported`);\n const caseInsensitive = flags === 'i';\n try {\n return {\n source,\n caseInsensitive,\n re: RE2JS.compile(source, caseInsensitive ? RE2JS.CASE_INSENSITIVE : 0),\n };\n } catch (error) {\n throw new Error(`Refused pattern /${source}/: ${(error as Error).message}`);\n }\n};\n\n// RE2's classes are ASCII; Postgres's follow the database locale.\nconst CLASSES: Record<string, string> = {\n d: '0-9',\n w: '0-9A-Za-z_',\n s: '\\\\t\\\\n\\\\f\\\\r ',\n};\nconst POSIX: Record<string, string> = {\n alnum: '0-9A-Za-z',\n alpha: 'A-Za-z',\n ascii: '\\\\u0000-\\\\u007f',\n blank: '\\\\t ',\n cntrl: '\\\\u0000-\\\\u001f\\\\u007f',\n digit: '0-9',\n graph: '!-~',\n lower: 'a-z',\n print: ' -~',\n punct: '!-/:-@\\\\[-`{-~',\n space: '\\\\t\\\\n\\\\v\\\\f\\\\r ',\n upper: 'A-Z',\n word: '0-9A-Za-z_',\n xdigit: '0-9A-Fa-f',\n};\nconst PG_SPECIAL = /[\\\\^$.|?*+()[\\]{}]/;\nconst MAX_REPEAT = 255;\n\nconst codePoint = (code: number): string =>\n code <= 0xffff\n ? `\\\\u${code.toString(16).padStart(4, '0')}`\n : `\\\\U${code.toString(16).padStart(8, '0')}`;\n\nconst literal = (char: string): string => (PG_SPECIAL.test(char) ? `\\\\${char}` : char);\n\n/**\n * The pattern in Postgres's dialect, matching what RE2 matches: `.` stops at a newline, and\n * classes and word boundaries are ASCII. A construct Postgres can't express — a Unicode class,\n * a flag group, a repeat past 255 — is refused. `source` is one RE2 already compiled.\n */\nexport const postgresSource = (source: string): string => {\n const refuse = (what: string): never => {\n throw new Error(`Refused pattern /${source}/: ${what} has no Postgres form`);\n };\n let out = '';\n let i = 0;\n // RE2 takes a quantifier on an anchor (a no-op); Postgres rejects it.\n const refuseQuantifiedAnchor = (): void => {\n if (/^([*+?]|\\{\\d)/.test(source.slice(i))) refuse('a quantified anchor');\n };\n // One escape at `i` (the backslash), inside a class or not; returns the translation.\n const translateEscape = (inClass: boolean): string => {\n const c = source[i + 1];\n i += 2;\n if (Object.hasOwn(CLASSES, c)) return inClass ? CLASSES[c] : `[${CLASSES[c]}]`;\n const upper = c.toLowerCase();\n if (c !== upper && Object.hasOwn(CLASSES, upper)) {\n if (inClass) refuse(`a negated class \\\\${c} inside brackets`);\n return `[^${CLASSES[upper]}]`;\n }\n if (c === 'p' || c === 'P') return refuse('a Unicode class');\n if (c === 'C') return refuse('\\\\C');\n if (c === 'x') {\n const braced = source[i] === '{';\n const end = braced ? source.indexOf('}', i) : i + 2;\n const hex = source.slice(braced ? i + 1 : i, end);\n i = braced ? end + 1 : end;\n return codePoint(Number.parseInt(hex, 16));\n }\n if (c >= '0' && c <= '7') {\n let oct = c;\n while (oct.length < 3 && source[i] >= '0' && source[i] <= '7') oct += source[i++];\n return codePoint(Number.parseInt(oct, 8));\n }\n // RE2's word boundary is between ASCII word characters; Postgres's \\y reads the locale's.\n if (!inClass && (c === 'b' || c === 'B')) {\n const w = `[${CLASSES.w}]`;\n return c === 'b'\n ? `(?:(?<=${w})(?!${w})|(?<!${w})(?=${w}))`\n : `(?:(?<=${w})(?=${w})|(?<!${w})(?!${w}))`;\n }\n if (!inClass && (c === 'z' || c === 'A')) {\n refuseQuantifiedAnchor();\n return c === 'z' ? '\\\\Z' : '\\\\A';\n }\n if (c === 'Q') {\n const end = source.indexOf('\\\\E', i);\n const quoted = source.slice(i, end === -1 ? undefined : end);\n i = end === -1 ? source.length : end + 2;\n return [...quoted]\n .map(inClass ? (ch) => (/[\\\\\\]^-]/.test(ch) ? `\\\\${ch}` : ch) : literal)\n .join('');\n }\n return `\\\\${c}`;\n };\n while (i < source.length) {\n const c = source[i];\n if (c === '\\\\') {\n out += translateEscape(false);\n } else if (c === '.') {\n out += '[^\\\\n]';\n i++;\n } else if (c === '(' && source[i + 1] === '?') {\n const named = /^\\(\\?P?<[^>]+>/.exec(source.slice(i));\n if (named) {\n out += '(';\n i += named[0].length;\n } else if (source[i + 2] === ':') {\n out += '(?:';\n i += 3;\n } else refuse('a flag group');\n } else if (c === '{') {\n // A count with a leading zero is literal text to RE2.\n const repeat = /^\\{(0|[1-9]\\d*)(?:,(0|[1-9]\\d*)?)?\\}/.exec(source.slice(i));\n if (!repeat) {\n out += '\\\\{';\n i++;\n continue;\n }\n if (Number(repeat[1]) > MAX_REPEAT || Number(repeat[2] ?? 0) > MAX_REPEAT)\n refuse(`a repeat count past ${MAX_REPEAT}`);\n out += repeat[0];\n i += repeat[0].length;\n } else if (c === '[') {\n out += '[';\n i++;\n if (source[i] === '^') {\n out += '^';\n i++;\n }\n // A leading ] is a member, as in RE2.\n if (source[i] === ']') {\n out += '\\\\]';\n i++;\n }\n // A - after a class or a finished range is a literal, as RE2 reads it; after a range's -,\n // the next character ends the range, even a [.\n let literalDash = false;\n let rangeEnd = false;\n let members = 0;\n while (i < source.length && source[i] !== ']') {\n const posix: RegExpExecArray | null = rangeEnd\n ? null\n : /^\\[:(\\^?)([a-z]+):\\]/.exec(source.slice(i));\n const expands: boolean = !!posix || /^\\\\[dswDSW]/.test(source.slice(i));\n const dash: boolean =\n source[i] === '-' && members > 0 && source[i + 1] !== ']' && !rangeEnd;\n if (posix) {\n if (posix[1]) refuse(`a negated class [:^${posix[2]}:]`);\n if (!Object.hasOwn(POSIX, posix[2])) refuse(`the class [:${posix[2]}:]`);\n out += POSIX[posix[2]];\n i += posix[0].length;\n } else if (source[i] === '\\\\') {\n out += translateEscape(true);\n } else if (dash && literalDash) {\n out += '\\\\-';\n i++;\n } else {\n out += source[i] === '[' ? '\\\\[' : source[i];\n i++;\n }\n const closedRange: boolean = rangeEnd;\n rangeEnd = dash && !literalDash;\n literalDash = expands || closedRange;\n members++;\n }\n out += ']';\n i++;\n } else {\n out += c;\n i++;\n if (c === '^' || c === '$') refuseQuantifiedAnchor();\n }\n }\n return out;\n};\n\n/** Why a pattern is refused (on `target`, when given), or null. */\nexport const patternProblem = (value: string | RegExp, target?: string): string | null => {\n try {\n const { source } = readPattern(value);\n if (target === 'toSql') postgresSource(source);\n return null;\n } catch (error) {\n return (error as Error).message;\n }\n};\n","import { isEqual } from 'lodash-es';\nimport { parseDateValue, resolveDateConfig } from './date';\nimport { DEFAULT_ZONE } from './dateExpr';\nimport { resolveCaseInsensitive, resolveFuzzy } from './engineGlobals';\nimport { fuzzyContains } from './fuzzy';\nimport { bigIntToNumber, isOrderedValue, orderPair, readOrderedPair, readSet } from './number';\nimport { addOffset, offsetAmount } from './offset';\nimport { Operator } from './operator';\nimport {\n EQUALITY_OPERATORS,\n type FieldKind,\n NEGATED_OPERATORS,\n NO_VALUE_OPERATORS,\n NUMERIC_KINDS,\n OPERAND_OPERATORS,\n RANGE_OPERATORS,\n} from './operatorCatalog';\nimport { readPattern } from './pattern';\nimport { readField, type Scopes } from './scope';\nimport { allOf, anyOf } from './traverse';\nimport type { Condition, DateConfig, OrderedRuleValue, Rule, RuleValue } from './types';\nimport { readValueSource } from './valueSource';\n\n// A value is \"empty\" iff it is null, undefined, the empty string, or an empty array — as the\n// compilers read a column, a Json value and a list. (lodash isEmpty would also treat Dates and\n// numbers as empty, which breaks soft-delete grants like `deletedAt isEmpty`.)\nconst isEmptyValue = (value: unknown): boolean =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0);\n\n/**\n * Nothing to compare against — no row matches on any rail, as SQL's NULL comparison and\n * arithmetic never do: an ordered, string, pattern or set comparison or a range that reads\n * nothing (or a range missing an end), or an offset that moved nothing. `equals` / `notEquals`\n * against a plain null stay the is-null sentinel.\n */\nexport const hasNoOperand = (rule: Pick<Rule, 'operator' | 'offset'>, value: unknown): boolean => {\n const missing = value === null || value === undefined;\n if (missing && (rule.offset !== undefined || OPERAND_OPERATORS.includes(rule.operator)))\n return true;\n if (!RANGE_OPERATORS.includes(rule.operator)) return false;\n return (\n missing || (Array.isArray(value) && value.some((end) => end === null || end === undefined))\n );\n};\n\n/** A field rule that only asks whether its field is there: existence or emptiness, or equality\n * with a null literal. */\nexport const isExistenceTest = (\n rule: Pick<Rule, 'operator' | 'value' | 'path' | 'bind'>,\n): boolean =>\n NO_VALUE_OPERATORS.includes(rule.operator) ||\n (EQUALITY_OPERATORS.includes(rule.operator) &&\n rule.value === null &&\n rule.path === undefined &&\n rule.bind === undefined);\n\n/** A list's membership in a set of lists, as the equalities it means: the compilers have no list\n * `in`. A member that isn't a list (or null) never equals one. */\nexport const listMembership = (rule: Rule, members: readonly unknown[]): Condition => {\n const lists = members.filter((member) => Array.isArray(member) || member === null);\n const each = (operator: Operator) =>\n lists.map((value) => ({ ...rule, operator, value }) as Condition);\n return rule.operator === Operator.in\n ? anyOf(each(Operator.equals))\n : allOf(each(Operator.notEquals));\n};\n\n/** Case-insensitivity lowers every string, a list's members included at any depth — never\n * inside an object. Every rail lowers through this. */\nexport const lowerStrings = (v: unknown): unknown =>\n typeof v === 'string' ? v.toLowerCase() : Array.isArray(v) ? v.map(lowerStrings) : v;\n\n// A bigint compares as a number (refused past the safe range).\nconst fromBigInt = (value: unknown): unknown => {\n if (typeof value === 'bigint') return bigIntToNumber(value);\n return Array.isArray(value) && value.some((v) => typeof v === 'bigint')\n ? value.map((v) => (typeof v === 'bigint' ? bigIntToNumber(v) : v))\n : value;\n};\n\n// Mirrors the server-side coerceValueForField contract: null/undefined pass through\n// (the is-null sentinel is valid on every field), arrays coerce element-wise, unknown\n// kinds pass through, and an uncoercible value returns unchanged so the comparison\n// fails with the rule's normal error instead of throwing on one dirty row.\nconst coerceScalar = (value: unknown, kind: FieldKind, zone: string): unknown => {\n if (value === null || value === undefined) return value;\n\n if (NUMERIC_KINDS.includes(kind)) {\n if (typeof value !== 'string' || value.trim() === '') return value;\n // A BigInt digit string past the safe range would round: refuse it, as for a bigint.\n if (kind === 'BigInt' && /^-?\\d+$/.test(value.trim()))\n return bigIntToNumber(BigInt(value.trim()));\n const num = Number(value);\n return Number.isFinite(num) ? num : value;\n }\n\n switch (kind) {\n case 'DateTime': {\n // Everything lands on epoch ms so equals/ordered compare across Date instances, ISO\n // strings and ms-timestamp strings. A zoneless string anchors in the evaluation's zone,\n // through the date rail's own parser.\n if (value instanceof Date) return value.getTime();\n if (typeof value === 'number') return value;\n if (typeof value !== 'string') return value;\n const parsed = parseDateValue(value, zone);\n return parsed.isValid() ? parsed.valueOf() : value;\n }\n case 'Boolean':\n if (value === 'true') return true;\n if (value === 'false') return false;\n return value;\n case 'String':\n return typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint'\n ? String(value)\n : value;\n default:\n return value;\n }\n};\n\n/** A value coerced to a field kind; a zoneless DateTime string anchors in `zone`. */\nexport const applyCoercion = (\n value: unknown,\n kind: FieldKind | undefined,\n zone: string = DEFAULT_ZONE,\n): unknown => {\n if (kind === undefined) return value;\n if (Array.isArray(value)) return value.map((item) => coerceScalar(item, kind, zone));\n return coerceScalar(value, kind, zone);\n};\n\nexport const checkField = (\n condition: Rule,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n config: DateConfig = {},\n // A computed left-hand side (an aggregate) in place of the field's value.\n computed?: { value: unknown },\n): boolean | string => {\n const raw = computed ? computed.value : (readField(condition.field, scopes) ?? null);\n // A Date compares as DateTime even unstamped, as the compilers read a DateTime column.\n const kind = condition.coerceType ?? (raw instanceof Date ? 'DateTime' : undefined);\n // Only a DateTime coercion reads the zone.\n const zone =\n kind === 'DateTime'\n ? resolveDateConfig(config, (source) => readValueSource(source, scopes, context, bindings))\n .timeZone\n : DEFAULT_ZONE;\n // An absent path reads as NULL, as a column does on the compiled rails.\n const fieldValue = applyCoercion(fromBigInt(raw), kind, zone);\n\n // Operators that don't need a value\n const needsValue = !NO_VALUE_OPERATORS.includes(condition.operator);\n const value = needsValue\n ? shift(\n applyCoercion(\n fromBigInt(readValueSource(condition, scopes, context, bindings) ?? null),\n kind,\n zone,\n ),\n condition,\n scopes,\n context,\n bindings,\n )\n : undefined;\n\n if (needsValue && hasNoOperand(condition, value)) {\n if (NEGATED_OPERATORS.includes(condition.operator) && fieldValue == null) return true;\n return condition.error || `${condition.field} has no comparison value`;\n }\n\n const getError = (op: string) =>\n condition.error || `${condition.field} ${op}${needsValue ? ` ${JSON.stringify(value)}` : ''}`;\n\n const ci = resolveCaseInsensitive(condition.caseInsensitive);\n const lower = (v: unknown): unknown => (ci ? lowerStrings(v) : v);\n const lhs = lower(fieldValue);\n const rhs = lower(value);\n\n // Fuzzy applies to containment search: typo-tolerant token match over strings, else the\n // exact containment check. fuzzyContains lowercases internally, so it's case-insensitive. A\n // list contains a member exactly: case-insensitivity matches text, not membership.\n const fuzzy = resolveFuzzy(condition.fuzzy);\n const containsMatch = (): boolean =>\n fuzzy && typeof fieldValue === 'string' && typeof value === 'string'\n ? fuzzyContains(fieldValue, value, fuzzy)\n : Array.isArray(fieldValue)\n ? (lhs as unknown[]).some((item) => isEqual(item, rhs))\n : containsValue(lhs, rhs);\n\n switch (condition.operator) {\n // Values compare as JSON does: by value (a list or an object deeply), never across types.\n case Operator.equals:\n return isEqual(lhs, rhs) || getError(`must equal`);\n case Operator.notEquals:\n return !isEqual(lhs, rhs) || getError(`must not equal`);\n case Operator.lessThan:\n return compareOrderedValues(fieldValue, value, 'lt') || getError(`must be less than`);\n case Operator.lessThanEquals:\n return (\n compareOrderedValues(fieldValue, value, 'lte') || getError(`must be less than or equal to`)\n );\n case Operator.greaterThan:\n return compareOrderedValues(fieldValue, value, 'gt') || getError(`must be greater than`);\n case Operator.greaterThanEquals:\n return (\n compareOrderedValues(fieldValue, value, 'gte') ||\n getError(`must be greater than or equal to`)\n );\n case Operator.in:\n return readSet(rhs).some((item) => isEqual(item, lhs)) || getError(`must be one of`);\n case Operator.notIn:\n return !readSet(rhs).some((item) => isEqual(item, lhs)) || getError(`must not be one of`);\n case Operator.contains:\n return containsMatch() || getError(`must contain`);\n case Operator.notContains:\n return !containsMatch() || getError(`must not contain`);\n case Operator.matches:\n return (\n (hasMatch(fieldValue) && isPattern(value) && readPattern(value).re.test(fieldValue)) ||\n getError(`must match pattern`)\n );\n case Operator.notMatches:\n return (\n !hasMatch(fieldValue) ||\n !isPattern(value) ||\n !readPattern(value).re.test(fieldValue) ||\n getError(`must not match pattern`)\n );\n case Operator.between: {\n const range = orderedRange(value, condition.operator);\n if (!inRangeOrder(fieldValue, range)) return getError(`must be between`);\n const comparableFieldValue = toOrderedPrimitive(fieldValue);\n const [min, max] = range;\n return (\n (comparableFieldValue >= min && comparableFieldValue <= max) || getError(`must be between`)\n );\n }\n case Operator.notBetween: {\n const range = orderedRange(value, condition.operator);\n if (!inRangeOrder(fieldValue, range)) return true;\n const comparableFieldValue = toOrderedPrimitive(fieldValue);\n const [min, max] = range;\n return (\n comparableFieldValue < min || comparableFieldValue > max || getError(`must not be between`)\n );\n }\n case Operator.isEmpty:\n return isEmptyValue(fieldValue) || getError(`must be empty`);\n case Operator.notEmpty:\n return !isEmptyValue(fieldValue) || getError(`must not be empty`);\n case Operator.exists:\n return fieldValue != null || getError(`must exist`);\n case Operator.notExists:\n return fieldValue == null || getError(`must not exist`);\n case Operator.startsWith:\n return (\n (typeof lhs === 'string' && typeof rhs === 'string' && lhs.startsWith(rhs)) ||\n getError(`must start with`)\n );\n case Operator.endsWith:\n return (\n (typeof lhs === 'string' && typeof rhs === 'string' && lhs.endsWith(rhs)) ||\n getError(`must end with`)\n );\n case Operator.notStartsWith:\n return (\n !(typeof lhs === 'string' && typeof rhs === 'string' && lhs.startsWith(rhs)) ||\n getError(`must not start with`)\n );\n case Operator.notEndsWith:\n return (\n !(typeof lhs === 'string' && typeof rhs === 'string' && lhs.endsWith(rhs)) ||\n getError(`must not end with`)\n );\n default:\n throw new Error('Unknown operator');\n }\n};\n\nconst shift = (\n value: unknown,\n condition: Rule,\n scopes: Scopes,\n context: unknown,\n bindings?: Record<string, RuleValue>,\n): unknown => {\n if (condition.offset === undefined) return value;\n const amount = offsetAmount(readValueSource(condition.offset, scopes, context, bindings));\n return amount === null ? null : addOffset(value, amount);\n};\n\nconst toOrderedPrimitive = (value: OrderedRuleValue): string | number =>\n value instanceof Date ? value.getTime() : value;\n\nconst compareOrderedValues = (\n left: unknown,\n right: unknown,\n operator: 'lt' | 'lte' | 'gt' | 'gte',\n): boolean => {\n if (!sameOrder(left, right) || !isOrderedValue(right)) return false;\n\n const lhs = toOrderedPrimitive(left);\n const rhs = toOrderedPrimitive(right);\n\n switch (operator) {\n case 'lt':\n return lhs < rhs;\n case 'lte':\n return lhs <= rhs;\n case 'gt':\n return lhs > rhs;\n case 'gte':\n return lhs >= rhs;\n }\n};\n\nconst hasMatch = (value: unknown): value is string => typeof value === 'string';\n\nconst isPattern = (value: unknown): value is string | RegExp =>\n typeof value === 'string' || value instanceof RegExp;\n\n/** A range operand's two ends, ordered. */\nconst orderedRange = (value: unknown, operator: string): [string | number, string | number] =>\n orderPair(\n readOrderedPair(value, operator).map((end) => toOrderedPrimitive(end as OrderedRuleValue)),\n ) as [string | number, string | number];\n\nconst containsValue = (container: unknown, search: unknown): boolean =>\n typeof container === 'string' && typeof search === 'string' && container.includes(search);\n\n/** Two values that order against each other: both numbers, both strings, or both dates. */\nconst sameOrder = (a: unknown, b: unknown): a is OrderedRuleValue =>\n isOrderedValue(a) && isOrderedValue(b) && orderKind(a) === orderKind(b);\n\nconst orderKind = (value: OrderedRuleValue | number | string): string =>\n value instanceof Date ? 'date' : typeof value;\n\n/** A field that orders against a range's ends (already reduced to primitives). */\nconst inRangeOrder = (\n value: unknown,\n range: [string | number, string | number],\n): value is OrderedRuleValue =>\n isOrderedValue(value) && typeof toOrderedPrimitive(value) === typeof range[0];\n","import { ArrayOperator, Operator } from './operator';\nimport { LOWER_BOUND_OPERATORS, UPPER_BOUND_OPERATORS } from './operatorCatalog';\nimport { readOwnPath } from './scope';\nimport { allOf, conditionShape } from './traverse';\nimport type { AggregateRule, ArrayRule, Condition, WindowFields } from './types';\n\n/** True when a rule carries any windowing selector (filter/orderBy/take/skip). */\nexport const hasWindow = (rule: WindowFields): boolean =>\n rule.filter !== undefined ||\n !!rule.orderBy?.length ||\n rule.take !== undefined ||\n rule.skip !== undefined;\n\nconst conditionOpAndField = (condition: unknown): { op: string; field: string } | null => {\n if (typeof condition !== 'object' || condition === null) return null;\n const c = condition as Record<string, unknown>;\n const shape = conditionShape(c);\n if ((shape !== 'field' && shape !== 'date') || typeof c.field !== 'string') return null;\n return { op: String(shape === 'date' ? c.dateOperator : c.operator), field: c.field };\n};\n\n/**\n * Extremal-window rewrite for compilation (toPrisma).\n *\n * When `take: 1` selects the extremal element (max via desc / min via asc; NULLs sort last, so\n * it is the extreme non-null value when there is one) and the condition compares that same\n * ordered field with a monotonic operator, the windowed predicate collapses to un-windowed\n * array rules:\n * - any + (desc & lower-bound) | (asc & upper-bound) ⟺ some element satisfies it\n * - all + (desc & upper-bound) | (asc & lower-bound) ⟺ the array is empty, or some element\n * has a value and every element with one satisfies it\n * `atLeast: 1` is treated as `any`. Returns the de-windowed condition, or null when the\n * rule is windowed but not extremal-eligible (caller throws \"unsupported\").\n */\nconst extremalRewrite = (rule: ArrayRule): Condition | null => {\n if (rule.filter !== undefined) return null;\n if (rule.skip !== undefined && rule.skip !== 0) return null;\n if (rule.take !== 1) return null;\n if (rule.orderBy?.length !== 1) return null;\n const { field: orderField, dir } = rule.orderBy[0];\n if (dir !== 'asc' && dir !== 'desc') return null;\n\n let kind: 'all' | 'any' | null = null;\n if (rule.arrayOperator === ArrayOperator.all) kind = 'all';\n else if (rule.arrayOperator === ArrayOperator.any) kind = 'any';\n else if (rule.arrayOperator === ArrayOperator.atLeast && rule.count === 1) kind = 'any';\n if (!kind) return null;\n\n const cof = conditionOpAndField(rule.condition);\n if (!cof || cof.field !== orderField) return null;\n const isUpper = UPPER_BOUND_OPERATORS.includes(cof.op);\n const isLower = LOWER_BOUND_OPERATORS.includes(cof.op);\n if (!isUpper && !isLower) return null;\n\n const max = dir === 'desc';\n const aligned =\n kind === 'all' ? (max && isUpper) || (!max && isLower) : (max && isLower) || (!max && isUpper);\n if (!aligned) return null;\n\n const { orderBy, take, skip, count, ...rest } = rule;\n if (kind === 'any') return { ...rest, arrayOperator: ArrayOperator.any } as ArrayRule;\n const present = { field: orderField, operator: Operator.exists } as Condition;\n return {\n any: [\n { field: rule.field, arrayOperator: ArrayOperator.empty },\n {\n all: [\n { field: rule.field, arrayOperator: ArrayOperator.any, condition: present },\n {\n ...rest,\n arrayOperator: ArrayOperator.all,\n condition: { if: present, then: rule.condition },\n },\n ],\n },\n ],\n } as Condition;\n};\n\n/**\n * Apply the window pipeline to an array: filter → order → skip → take.\n * `filterFn` evaluates `rule.filter` per item and must be supplied by the caller\n * when `rule.filter` is set (window.ts stays free of the evaluator).\n * Direction comes from orderBy `dir`; take/skip are positive offsets.\n */\nexport const applyWindow = <T>(\n items: T[],\n rule: WindowFields,\n filterFn?: (item: T) => boolean,\n): T[] => {\n let out = items;\n if (rule.filter !== undefined && filterFn) out = out.filter(filterFn);\n if (rule.orderBy?.length) {\n const keys = rule.orderBy;\n out = [...out].sort((a, b) => {\n for (const { field, dir } of keys) {\n const order = compareNullsLast(readOwnPath(a, field), readOwnPath(b, field), dir);\n if (order !== 0) return order;\n }\n return 0;\n });\n }\n if (rule.skip !== undefined) out = out.slice(rule.skip);\n if (rule.take !== undefined) out = out.slice(0, rule.take);\n return out;\n};\n\n/** Two sort keys in `dir` order, a NULL (or absent) one last either way — the extreme element\n * is the extreme value, as \"latest\" or \"earliest\" reads. */\nconst compareNullsLast = (a: unknown, b: unknown, dir: 'asc' | 'desc'): number => {\n const aNull = a === null || a === undefined;\n const bNull = b === null || b === undefined;\n if (aNull || bNull) return aNull === bNull ? 0 : aNull ? 1 : -1;\n const x = a instanceof Date ? a.getTime() : (a as number | string);\n const y = b instanceof Date ? b.getTime() : (b as number | string);\n const order = x < y ? -1 : x > y ? 1 : 0;\n return dir === 'asc' ? order : -order;\n};\n\n/**\n * A windowed array or aggregate rule as one Prisma can compile, or null when it can't. A filter\n * alone selects the elements a rule reads, so it folds into the rule: into the condition of any /\n * none / a count / an aggregate, as the antecedent of `all`, and as the condition of `none` / `any`\n * for `empty` / `notEmpty`. An unfiltered extremal window rewrites as `extremalRewrite` does.\n */\nexport const windowRewrite = (rule: ArrayRule | AggregateRule): Condition | null => {\n if (!hasWindow(rule)) return rule as Condition;\n const ordered = !!rule.orderBy?.length || rule.take !== undefined || rule.skip !== undefined;\n if (rule.filter !== undefined && !ordered) {\n const { filter, ...rest } = rule;\n if ('aggregate' in rule)\n return {\n ...rest,\n condition: rule.condition === undefined ? filter : allOf([filter, rule.condition]),\n } as Condition;\n switch (rule.arrayOperator) {\n case 'all':\n return { ...rest, condition: { if: filter, then: rule.condition ?? true } } as Condition;\n case 'empty':\n return { ...rest, arrayOperator: 'none', condition: filter } as Condition;\n case 'notEmpty':\n return { ...rest, arrayOperator: 'any', condition: filter } as Condition;\n default:\n return {\n ...rest,\n condition: rule.condition === undefined ? filter : allOf([filter, rule.condition]),\n } as Condition;\n }\n }\n return 'aggregate' in rule || rule.filter !== undefined ? null : extremalRewrite(rule);\n};\n","import { isObject, some } from 'lodash-es';\nimport { checkDate } from './date';\nimport {\n ambiguousCondition,\n conditionRequired,\n countRequired,\n unknownAggregateMode,\n unknownOperator,\n} from './errors';\nimport { checkField } from './field';\nimport { ArrayOperator } from './operator';\nimport {\n AGGREGATE_MODES,\n ARRAY_CONDITION_OPERATORS,\n ARRAY_COUNT_OPERATORS,\n} from './operatorCatalog';\nimport { readField, readOwnPath, type Scopes } from './scope';\nimport { conditionShape, visitCondition } from './traverse';\nimport type {\n AggregateRule,\n All,\n Any,\n ArrayRule,\n CheckData,\n Condition,\n DateConfig,\n Row,\n Rule,\n RuleValue,\n} from './types';\nimport { applyWindow } from './window';\n\nexport type CheckOptions = {\n context?: CheckData;\n bindings?: Record<string, RuleValue>;\n} & DateConfig;\n\ntype EvalOptions = CheckOptions & { context: CheckData; scopes: Scopes };\n\n// Over a root array, every leaf is a fieldless array rule, composed with all / any only.\nconst validateRootArrayShape = (rule: Condition): void =>\n visitCondition(rule, (node) => {\n const shape = conditionShape(node as Record<string, unknown>);\n if (shape === 'all' || shape === 'any') return;\n if (shape === 'array' && !('field' in node)) return false;\n throw new Error(\n 'check: when data is an array, every leaf must be a fieldless arrayOperator (composable with all/any)',\n );\n });\n\nexport const check = <TData extends CheckData>(\n conditions: Condition,\n data: TData,\n options?: CheckOptions,\n): boolean | string => {\n if (Array.isArray(data)) validateRootArrayShape(conditions);\n return evaluate(conditions, data, {\n ...options,\n context: options?.context ?? data,\n scopes: [data],\n });\n};\n\nconst evaluate = <TData extends CheckData>(\n conditions: Condition,\n data: TData,\n opts: EvalOptions,\n): boolean | string => {\n if (typeof conditions === 'boolean') return conditions;\n\n const node = conditions as never;\n switch (conditionShape(conditions as Record<string, unknown>)) {\n case 'all':\n return all((node as All).all, data, opts, (node as All).error);\n case 'any':\n return any((node as Any).any, data, opts, (node as Any).error);\n case 'if':\n return checkIfThenElse(node, data, opts);\n case 'array':\n return checkArray(node, opts);\n case 'aggregate':\n return checkAggregate(node, opts);\n case 'date':\n return checkDate(node, opts.scopes, opts.context as Row, opts, opts.bindings);\n case 'field':\n return checkField(node, opts.scopes, opts.context as Row, opts.bindings, opts);\n default:\n throw ambiguousCondition();\n }\n};\n\nconst enter = (opts: EvalOptions, item: unknown): EvalOptions => ({\n ...opts,\n scopes: [...opts.scopes, item],\n});\n\nconst all = <TData extends CheckData>(\n conditions: Condition[],\n data: TData,\n opts: EvalOptions,\n error?: string,\n): boolean | string => {\n const errors: string[] = [];\n\n for (const condition of conditions) {\n const result = evaluate(condition, data, opts);\n if (result !== true) {\n if (typeof result === 'string') {\n errors.push(result);\n } else {\n errors.push('false');\n }\n }\n }\n\n if (!errors.length) return true;\n if (error) return error;\n if (errors.length === 1) return errors[0];\n return `All conditions must pass: ${errors.join(' AND ')}`;\n};\n\nconst any = <TData extends CheckData>(\n conditions: Condition[],\n data: TData,\n opts: EvalOptions,\n error?: string,\n): boolean | string => {\n const errors: string[] = [];\n\n for (const condition of conditions) {\n const result = evaluate(condition, data, opts);\n if (result === true) return true;\n if (typeof result === 'string') errors.push(result);\n }\n\n if (error) return error;\n if (errors.length === 1) return errors[0];\n return `At least one condition must pass: ${errors.join(' OR ')}`;\n};\n\nconst checkIfThenElse = <TData extends CheckData>(\n condition: { if: Condition; then: Condition; else?: Condition },\n data: TData,\n opts: EvalOptions,\n): boolean | string => {\n const ifResult = evaluate(condition.if, data, opts);\n if (ifResult === true) return evaluate(condition.then, data, opts);\n // `false` is a legal else value (deny branch); use !== undefined so it's\n // evaluated rather than skipped by truthiness.\n return condition.else !== undefined ? evaluate(condition.else, data, opts) : true;\n};\n\n/** The array a rule reads; an absent or NULL one is empty, as on the compiled rails. */\nconst readArray = (value: unknown, field: string): unknown[] => {\n if (value === null || value === undefined) return [];\n if (!Array.isArray(value)) throw new Error(`${field} must be an array`);\n return value;\n};\n\nconst checkAggregate = (condition: AggregateRule, opts: EvalOptions): boolean | string => {\n const rawArray = readArray(readField(condition.field, opts.scopes), condition.field);\n const windowFilter = condition.filter;\n const arrayValue = applyWindow(\n rawArray,\n condition,\n windowFilter\n ? (item) => evaluate(windowFilter, item as Row, enter(opts, item)) === true\n : undefined,\n );\n\n const { mode, field: itemField } = condition.aggregate;\n // An unknown mode is a malformed rule, not a failed match: a negation must not turn it true.\n if (!AGGREGATE_MODES.includes(mode)) throw unknownAggregateMode(mode);\n\n const nestedCondition = condition.condition;\n const filtered = nestedCondition\n ? arrayValue.filter(\n (item) => evaluate(nestedCondition, item as Row, enter(opts, item)) === true,\n )\n : arrayValue;\n\n // NULL items are skipped, as SQL's SUM and AVG skip them.\n const numbers: number[] = filtered.flatMap((item, index) => {\n const raw = itemField ? readOwnPath(item, itemField) : item;\n if (raw === null || raw === undefined) return [];\n if (typeof raw !== 'number' || !Number.isFinite(raw)) {\n const loc = `${condition.field}[${index}]${itemField ? `.${itemField}` : ''}`;\n throw new Error(`${loc} must be a finite number`);\n }\n return [raw];\n });\n\n // An aggregate compares like a field whose value it computes; the sum and the average of\n // nothing are 0 (the compilers coalesce to match).\n const sum = numbers.reduce((total, n) => total + n, 0);\n const result = mode === 'sum' || numbers.length === 0 ? sum : sum / numbers.length;\n const labelled = { ...condition, field: `${condition.field} ${mode}` } as unknown as Rule;\n return checkField(labelled, opts.scopes, opts.context, opts.bindings, opts, { value: result });\n};\n\nconst checkArray = (condition: ArrayRule, opts: EvalOptions): boolean | string => {\n const rawArray = readArray(\n condition.field ? readField(condition.field, opts.scopes) : opts.scopes[opts.scopes.length - 1],\n condition.field || '(root)',\n );\n const windowFilter = condition.filter;\n const arrayValue = applyWindow(\n rawArray,\n condition,\n windowFilter\n ? (item) => evaluate(windowFilter, item as Row, enter(opts, item)) === true\n : undefined,\n );\n\n const getError = (defaultMsg: string) => condition.error || `${condition.field} ${defaultMsg}`;\n\n const itemCondition = condition.condition;\n const elementwise = ARRAY_CONDITION_OPERATORS.includes(condition.arrayOperator);\n if (elementwise && itemCondition === undefined) throw conditionRequired(condition.arrayOperator);\n\n const count = condition.count ?? 0;\n if (ARRAY_COUNT_OPERATORS.includes(condition.arrayOperator) && condition.count === undefined)\n throw countRequired(condition.arrayOperator);\n\n let matches = 0;\n let failures = 0;\n\n if (elementwise && itemCondition !== undefined) {\n if (arrayValue.length > 0 && !some(arrayValue, isObject))\n return getError(\n `contains only primitive values; use 'in' or 'contains' instead of array operators on primitive arrays`,\n );\n\n const results = arrayValue.map((item) =>\n evaluate(itemCondition, item as Row, enter(opts, item)),\n );\n matches = results.filter((r) => r === true).length;\n failures = results.filter((r) => typeof r === 'string').length;\n }\n\n switch (condition.arrayOperator) {\n case ArrayOperator.empty:\n return !arrayValue.length || getError('must be empty');\n\n case ArrayOperator.notEmpty:\n return !!arrayValue.length || getError('must not be empty');\n\n case ArrayOperator.all:\n return (\n matches === arrayValue.length || getError(`all elements must match (${failures} failed)`)\n );\n\n case ArrayOperator.any:\n return !!matches || getError('at least one element must match');\n\n case ArrayOperator.none:\n return !matches || getError(`no elements should match (${matches} matched)`);\n\n case ArrayOperator.atLeast:\n return (\n matches >= count || getError(`at least ${count} elements must match (${matches} matched)`)\n );\n\n case ArrayOperator.atMost:\n return (\n matches <= count || getError(`at most ${count} elements must match (${matches} matched)`)\n );\n\n case ArrayOperator.exactly:\n return (\n matches === count || getError(`exactly ${count} elements must match (${matches} matched)`)\n );\n\n default:\n throw unknownOperator((condition as ArrayRule).arrayOperator, 'array');\n }\n};\n","import type { FieldMap, FieldMapEntry, ModelEntry } from './fieldMap/types';\n\n/** Own-property read: a name that only exists on Object.prototype reads as absent. */\nexport const own = <T>(record: Record<string, T> | undefined, key: string): T | undefined =>\n record !== undefined && Object.hasOwn(record, key) ? record[key] : undefined;\n\n/** An own entry of `record`, created by `make` when absent — never one Object.prototype names. */\nexport const ownEntry = <T>(record: Record<string, T>, key: string, make: () => T): T => {\n if (!Object.hasOwn(record, key)) record[key] = make();\n return record[key];\n};\n\n/** A model of a field map, own-property only. */\nexport const modelOf = (map: FieldMap | undefined, model: string): ModelEntry | undefined =>\n own(map?.models, model);\n\n/** A field of a model, own-property only. */\nexport const fieldOf = (\n map: FieldMap | undefined,\n model: string,\n field: string,\n): FieldMapEntry | undefined => own(modelOf(map, model)?.fields, field);\n","import type { BridgeEndpoint } from './types.ts';\n\n/** The name a bridge endpoint goes by — `map:Model`: the stitched bridge field's name and the\n * raw-data key. */\nexport const endpointKey = ({\n fieldMap,\n model,\n}: Pick<BridgeEndpoint, 'fieldMap' | 'model'>): string => `${fieldMap}:${model}`;\n\n/** The map and model an endpoint key names; a bare model is in `currentMap`. */\nexport const parseEndpointKey = (\n key: string,\n currentMap: string,\n): { mapName: string; modelName: string } => {\n const at = key.indexOf(':');\n return at === -1\n ? { mapName: currentMap, modelName: key }\n : { mapName: key.slice(0, at), modelName: key.slice(at + 1) };\n};\n","import { own, ownEntry } from '../own';\nimport type { Row } from '../types';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nexport type BridgeDictionary = Record<\n string, // map name\n Record<\n string, // model name\n Record<string, Record<string, Row | Row[]>> // on field → identifier → row(s)\n >\n>;\n\nconst keyByUnique = (\n rows: Row[],\n on: string,\n endpointLabel: string,\n side: 'one' | 'oneToOne',\n): Record<string, Row> => {\n const out: Record<string, Row> = {};\n for (const row of rows) {\n const k = own(row, on) as string | number | undefined;\n if (k === undefined || k === null) continue;\n const key = String(k);\n if (Object.hasOwn(out, key)) {\n const hint =\n side === 'one'\n ? `endpoint[0] must be the \"one\" side of a oneToMany bridge — swap endpoints if '${endpointLabel}' is the \"many\" side`\n : `oneToOne bridges require unique '${on}' on both endpoints`;\n throw new Error(\n `indexBridges: duplicate '${on}' value '${key}' on '${endpointLabel}' — ${hint}.`,\n );\n }\n out[key] = row;\n }\n return out;\n};\n\n/** Rows grouped by their own `on` value; a row whose value is null joins nothing. */\nconst groupByKey = (rows: Row[], on: string): Record<string, Row[]> => {\n const out: Record<string, Row[]> = {};\n for (const row of rows) {\n const k = own(row, on);\n if (k === null || k === undefined) continue;\n ownEntry(out, String(k), () => []).push(row);\n }\n return out;\n};\n\nexport const indexBridges = (\n set: FieldMapSet,\n rawData: Record<string, Row[]>,\n): BridgeDictionary => {\n const out: BridgeDictionary = {};\n for (const bridge of set.bridges ?? []) {\n const [a, b] = bridge.endpoints;\n const aKey = endpointKey(a);\n const bKey = endpointKey(b);\n const aSide = bridge.cardinality === 'oneToMany' ? 'one' : 'oneToOne';\n const endpoint = (\n fieldMap: string,\n model: string,\n ): Record<string, Record<string, Row | Row[]>> =>\n ownEntry(\n ownEntry(out, fieldMap, () => ({})),\n model,\n () => ({}),\n );\n const aRows = own(rawData, aKey);\n if (aRows) endpoint(a.fieldMap, a.model)[a.on] = keyByUnique(aRows, a.on, aKey, aSide);\n const bRows = own(rawData, bKey);\n if (bRows) {\n if (bridge.cardinality === 'oneToMany') {\n endpoint(b.fieldMap, b.model)[b.on] = groupByKey(bRows, b.on);\n } else {\n endpoint(b.fieldMap, b.model)[b.on] = keyByUnique(bRows, b.on, bKey, 'oneToOne');\n }\n }\n }\n return out;\n};\n","import { modelOf, own } from '../own';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nexport const stitchFieldMaps = (set: FieldMapSet): FieldMapSet => {\n const out: FieldMapSet = {\n maps: structuredClone(set.maps),\n bridges: set.bridges ? structuredClone(set.bridges) : undefined,\n };\n\n for (const bridge of set.bridges ?? []) {\n const [a, b] = bridge.endpoints;\n const aKey = endpointKey(a);\n const bKey = endpointKey(b);\n const aOwner = modelOf(own(out.maps, a.fieldMap), a.model);\n const bOwner = modelOf(own(out.maps, b.fieldMap), b.model);\n if (!aOwner) {\n throw new Error(`stitchFieldMaps: endpoint '${aKey}' not found`);\n }\n if (!bOwner) {\n throw new Error(`stitchFieldMaps: endpoint '${bKey}' not found`);\n }\n if (a.fieldMap === b.fieldMap && a.model === b.model) {\n throw new Error(`stitchFieldMaps: self-bridge '${aKey}' to itself is not supported`);\n }\n if (!own(aOwner.fields, a.on)) {\n throw new Error(`stitchFieldMaps: endpoint '${aKey}' has no field '${a.on}' for join`);\n }\n if (!own(bOwner.fields, b.on)) {\n throw new Error(`stitchFieldMaps: endpoint '${bKey}' has no field '${b.on}' for join`);\n }\n\n if (own(aOwner.fields, bKey)) {\n throw new Error(`stitchFieldMaps: bridge '${bKey}' already injected on '${aKey}'`);\n }\n if (own(bOwner.fields, aKey)) {\n throw new Error(`stitchFieldMaps: bridge '${aKey}' already injected on '${bKey}'`);\n }\n\n const isOneToMany = bridge.cardinality === 'oneToMany';\n aOwner.fields[bKey] = { kind: 'bridge', type: bKey, isList: isOneToMany };\n bOwner.fields[aKey] = { kind: 'bridge', type: aKey, isList: false };\n }\n\n return out;\n};\n","import { isPlainObject as isPlainObjectLodash } from 'lodash-es';\nimport { unitAmountProblem } from './amount';\nimport { parseDateValue } from './date';\nimport {\n DEFAULT_ZONE,\n isDateExpr,\n isEdgeExpr,\n isPeriodExpr,\n namedPeriod,\n rollingShift,\n} from './dateExpr';\nimport {\n ambiguousCondition,\n conditionRequired,\n countRequired,\n rangeExprRequired,\n unknownAggregateMode,\n unknownOperator,\n windowUnsupported,\n} from './errors';\nimport { isOrderedValue, readOrderedPair } from './number';\nimport type { ArrayOperator, DateOperator, Operator } from './operator';\nimport {\n AGGREGATE_MODES,\n AGGREGATE_OPERATORS,\n catalogEntry,\n DAY_NAMES,\n FieldKind,\n getValueShape,\n isDayName,\n isFieldKind,\n isOperatorSupportedForTarget,\n isRelativeUnit,\n OFFSET_OPERATORS,\n PERIOD_UNITS,\n RANGE_OPERATORS,\n type RuleTarget,\n type ValueShape,\n WINDOW_OPERATORS,\n} from './operatorCatalog';\nimport { patternProblem } from './pattern';\nimport { parseScopeRef, scopeOutOfBounds } from './scope';\nimport { conditionShape } from './traverse';\nimport type { AggregateMode, ArrayRule, Condition, DateExpr, WindowFields } from './types';\nimport { rowRef, SOURCE_FORMS } from './valueSource';\nimport { hasWindow, windowRewrite } from './window';\n\nexport type ValidationIssue = {\n path: string;\n message: string;\n code: string;\n};\n\nexport type ValidationResult = {\n ok: boolean;\n errors: ValidationIssue[];\n};\n\n/** Every validator's result: ok when it found nothing. */\nexport const validationResult = (errors: ValidationIssue[]): ValidationResult => ({\n ok: errors.length === 0,\n errors,\n});\n\n/** Every validator's assert form: throws the issues, one per line, under `label`. */\nexport const throwIfInvalid = (result: ValidationResult, label: string): void => {\n if (result.ok) return;\n throw new Error(`${label}:\\n${result.errors.map((e) => `${e.path}: ${e.message}`).join('\\n')}`);\n};\n\ntype ValidationContext = {\n target: RuleTarget;\n errors: ValidationIssue[];\n};\n\n/** Which engine a rule must compile for; `check` (the default) accepts every rule. */\nexport type ValidateRuleOptions = { target?: RuleTarget };\n\nexport const validateRule = (\n condition: unknown,\n options: ValidateRuleOptions = {},\n): ValidationResult => {\n const context: ValidationContext = {\n target: options.target ?? 'check',\n errors: [],\n };\n\n validateCondition(condition, '$', context, 1);\n return validationResult(context.errors);\n};\n\nexport const assertValidRule = (\n condition: unknown,\n options: ValidateRuleOptions = {},\n): asserts condition is Condition => {\n throwIfInvalid(validateRule(condition, options), 'validateRule');\n};\n\nconst validateCondition = (\n condition: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof condition === 'boolean') return;\n\n if (!isPlainObject(condition)) {\n pushIssue(context, path, 'invalid_condition', 'Condition must be a boolean or object');\n return;\n }\n\n const shape = conditionShape(condition);\n if (!shape) {\n pushIssue(context, path, 'ambiguous_condition', ambiguousCondition().message);\n return;\n }\n\n switch (shape) {\n case 'all':\n validateLogicalArray(condition.all, `${path}.all`, context, depth);\n break;\n case 'any':\n validateLogicalArray(condition.any, `${path}.any`, context, depth);\n break;\n case 'if':\n validateCondition(condition.if, `${path}.if`, context, depth);\n validateCondition(condition.then, `${path}.then`, context, depth);\n if ('else' in condition && condition.else !== undefined) {\n validateCondition(condition.else, `${path}.else`, context, depth);\n }\n break;\n case 'field':\n validateFieldRule(condition, path, context, depth);\n break;\n case 'aggregate':\n validateAggregateRule(condition, path, context, depth);\n break;\n case 'array':\n validateArrayRule(condition, path, context, depth);\n break;\n case 'date':\n validateDateRule(condition, path, context, depth);\n break;\n }\n};\n\nconst validateLogicalArray = (\n value: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (!Array.isArray(value)) {\n pushIssue(\n context,\n path,\n 'logical_array_required',\n 'Logical operator requires an array of conditions',\n );\n return;\n }\n\n value.forEach((item, index) => {\n validateCondition(item, `${path}[${index}]`, context, depth);\n });\n};\n\nconst validateField = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field === 'string')\n validateRef(rule.field, 'field', `${path}.field`, context, depth);\n};\n\nconst validateRef = (\n ref: string,\n key: 'field' | 'path',\n issuePath: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const parsed = parseScopeRef(ref);\n if (!parsed) return;\n const label = key === 'field' ? 'Field' : 'Path';\n if (parsed.depth > depth) {\n pushIssue(\n context,\n issuePath,\n 'scope_out_of_bounds',\n scopeOutOfBounds(ref, parsed.depth, depth),\n );\n }\n if (context.target === 'toPrisma') {\n pushIssue(\n context,\n issuePath,\n `unsupported_prisma_${key}`,\n `${label} '${ref}' is not supported by toPrisma()`,\n );\n } else if (context.target === 'toSql' && (key === 'field' || parsed.depth > 1)) {\n pushIssue(\n context,\n issuePath,\n `unsupported_sql_${key}`,\n `${label} '${ref}' is not supported by toSql()`,\n );\n }\n};\n\ntype SourceForm = (typeof SOURCE_FORMS)[number];\n\n// One value source — `{ value } | { path } | { bind }` — wherever it appears: a rule's comparison\n// value, an offset, a unit amount. Exactly one form; `bindOptional` only beside `bind`; a path is\n// gated like any ref. Returns the form, or null when it is malformed.\nconst validateSource = (\n source: Record<string, unknown>,\n at: string,\n context: ValidationContext,\n depth: number,\n): SourceForm | null => {\n const forms = SOURCE_FORMS.filter((form) => source[form] !== undefined);\n if (forms.length > 1) {\n pushIssue(context, at, 'ambiguous_value_source', 'Takes one of value, path or bind');\n return null;\n }\n if (forms.length === 0) {\n pushIssue(context, at, 'missing_value_source', 'Requires value, path or bind');\n return null;\n }\n const [form] = forms;\n if (form !== 'value' && (typeof source[form] !== 'string' || source[form] === '')) {\n pushIssue(context, `${at}.${form}`, 'invalid_value_source', `${form} is a non-empty string`);\n return null;\n }\n if (\n source.bindOptional !== undefined &&\n (form !== 'bind' || typeof source.bindOptional !== 'boolean')\n )\n pushIssue(\n context,\n `${at}.bindOptional`,\n 'invalid_value_source',\n 'bindOptional is a boolean beside bind',\n );\n if (form === 'path') validateRef(source.path as string, 'path', `${at}.path`, context, depth);\n return form;\n};\n\n// An offset moves the comparison value by what its own value source reads: a number on a field\n// rule, a rolling `{ ago }` / `{ ahead }` on a date rule. A date offset read per row is check-only.\nconst validateOffset = (\n rule: Record<string, unknown>,\n kind: 'field' | 'date',\n operator: string,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const { offset } = rule;\n if (offset === undefined) return;\n const at = `${path}.offset`;\n if (!OFFSET_OPERATORS.includes(operator)) {\n pushIssue(\n context,\n at,\n 'unsupported_offset_operator',\n `Operator '${operator}' has no comparison point to offset`,\n );\n return;\n }\n if (!isPlainObject(offset)) {\n pushIssue(context, at, 'invalid_offset', 'An offset is one of { value }, { path } or { bind }');\n return;\n }\n const form = validateSource(offset, at, context, depth);\n if (form === 'path') {\n const ref = offset.path as string;\n const scoped = rowRef(offset);\n if (kind === 'date' && scoped && scoped.depth <= 1 && context.target === 'toSql')\n pushIssue(\n context,\n `${at}.path`,\n 'unsupported_sql_path',\n `A row path on a date offset ('${ref}') is not supported by toSql()`,\n );\n return;\n }\n if (form !== 'value') return;\n const value = offset.value;\n if (kind === 'field') {\n if (typeof value !== 'number' || !Number.isFinite(value))\n pushIssue(context, `${at}.value`, 'invalid_offset', 'A field offset value is a number');\n return;\n }\n const rolling =\n isPlainObject(value) && Object.keys(value).length === 1 && isDateExpr(value)\n ? rollingShift(value)\n : null;\n if (!rolling) {\n pushIssue(\n context,\n `${at}.value`,\n 'invalid_offset',\n 'A date offset value is { ago } or { ahead }',\n );\n return;\n }\n validateRelativeUnits(\n rolling[0],\n `${at}.value.${Object.keys(value as object)[0]}`,\n context,\n depth,\n );\n};\n\n// A range read from a row column is a scalar, not a pair: toSql has no form for it.\nconst rejectSqlRowRange = (\n rule: Record<string, unknown>,\n operator: string,\n path: string,\n context: ValidationContext,\n): void => {\n if (context.target !== 'toSql' || !RANGE_OPERATORS.includes(operator)) return;\n if (!rowRef(rule)) return;\n pushIssue(\n context,\n `${path}.path`,\n 'unsupported_sql_path',\n `A range read from the row ('${rule.path}') is not supported by toSql()`,\n );\n};\n\nconst validateFieldRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Field rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (typeof rule.operator !== 'string' || !catalogEntry(rule.operator, 'field')) {\n pushIssue(\n context,\n `${path}.operator`,\n 'invalid_operator',\n unknownOperator(rule.operator, 'field').message,\n );\n return;\n }\n\n const operator = rule.operator as Operator;\n validateOffset(rule, 'field', operator, path, context, depth);\n\n if (!isOperatorSupportedForTarget(operator, 'field', context.target)) {\n pushIssue(\n context,\n `${path}.operator`,\n `unsupported_${targetSlug(context.target)}_operator`,\n `Operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n if (rule.coerceType !== undefined && !isFieldKind(rule.coerceType)) {\n pushIssue(\n context,\n `${path}.coerceType`,\n 'invalid_coerce_type',\n `coerceType must be one of: ${Object.keys(FieldKind).join(', ')}`,\n );\n }\n\n const shape = getValueShape(operator, 'field');\n\n if (shape === 'none') {\n forbidValueAndPath(rule, path, context);\n return;\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n rejectSqlRowRange(rule, operator, path, context);\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n validateValueShape(shape, rule.value, operator, `${path}.value`, context);\n};\n\nconst validateValueShape = (\n shape: ValueShape,\n value: unknown,\n operator: string,\n path: string,\n context: ValidationContext,\n): void => {\n switch (shape) {\n case 'scalar':\n case 'string':\n if (shape === 'string' && typeof value !== 'string') {\n pushIssue(\n context,\n path,\n 'invalid_string_value',\n `Operator '${operator}' requires a string value`,\n );\n }\n return;\n case 'ordered':\n if (!isOrderedValue(value)) {\n pushIssue(\n context,\n path,\n 'invalid_ordered_value',\n `Operator '${operator}' requires a string, number, or Date value`,\n );\n }\n return;\n case 'array':\n if (!Array.isArray(value)) {\n pushIssue(\n context,\n path,\n 'invalid_membership_value',\n `Operator '${operator}' requires an array value`,\n );\n }\n return;\n case 'pattern': {\n if (!(typeof value === 'string' || value instanceof RegExp)) {\n pushIssue(\n context,\n path,\n 'invalid_pattern_value',\n `Operator '${operator}' requires a string or RegExp value`,\n );\n return;\n }\n const problem = patternProblem(value, context.target);\n if (problem) pushIssue(context, path, 'unsupported_pattern', problem);\n return;\n }\n case 'range':\n try {\n readOrderedPair(value, operator);\n } catch (error) {\n pushIssue(context, path, 'invalid_range_value', (error as Error).message);\n }\n return;\n }\n};\n\nconst validateAggregateRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (rule.offset !== undefined)\n pushIssue(context, `${path}.offset`, 'unexpected_offset', 'Aggregate rules take no offset');\n validateWindow(rule, path, context, depth);\n\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Aggregate rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (!isPlainObject(rule.aggregate)) {\n pushIssue(context, `${path}.aggregate`, 'invalid_aggregate', 'aggregate must be an object');\n return;\n }\n\n const agg = rule.aggregate as Record<string, unknown>;\n if (!AGGREGATE_MODES.includes(agg.mode as AggregateMode))\n pushIssue(\n context,\n `${path}.aggregate.mode`,\n 'invalid_aggregate_mode',\n unknownAggregateMode(agg.mode).message,\n );\n\n if ('field' in agg && agg.field !== undefined && typeof agg.field !== 'string') {\n pushIssue(\n context,\n `${path}.aggregate.field`,\n 'invalid_aggregate_field',\n 'aggregate.field must be a string',\n );\n }\n\n if (!AGGREGATE_OPERATORS.includes(rule.operator as Operator)) {\n pushIssue(\n context,\n `${path}.operator`,\n 'invalid_aggregate_operator',\n `Aggregate rules only support: ${AGGREGATE_OPERATORS.join(', ')}`,\n );\n return;\n }\n\n if (context.target === 'toPrisma' && typeof rule.path === 'string') {\n pushIssue(\n context,\n `${path}.path`,\n 'unsupported_prisma_aggregate_path',\n `path is not supported by toPrisma() for aggregate rules; use value instead`,\n );\n }\n\n if ('condition' in rule && rule.condition !== undefined) {\n if (context.target === 'toSql') {\n pushIssue(\n context,\n `${path}.condition`,\n 'unsupported_sql_aggregate_condition',\n `Aggregate condition filtering is not supported by toSql(); use check() or toPrisma()`,\n );\n }\n validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n const value = rule.value;\n if (RANGE_OPERATORS.includes(rule.operator as string)) {\n if (!isNumericRange(value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_range_value',\n `Operator '${rule.operator}' requires a two-item numeric range`,\n );\n }\n } else {\n if (typeof value !== 'number') {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_aggregate_value',\n `Aggregate rule value must be a number`,\n );\n }\n }\n};\n\nconst validateArrayRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n if (context.target !== 'check') {\n pushIssue(\n context,\n `${path}.field`,\n 'field_required',\n 'Array rule requires a string field for this target',\n );\n }\n }\n validateField(rule, path, context, depth);\n\n validateWindow(rule, path, context, depth);\n\n if (typeof rule.arrayOperator !== 'string' || !catalogEntry(rule.arrayOperator, 'array')) {\n pushIssue(\n context,\n `${path}.arrayOperator`,\n 'invalid_array_operator',\n unknownOperator(rule.arrayOperator, 'array').message,\n );\n return;\n }\n\n const operator = rule.arrayOperator as ArrayOperator;\n\n if (!isOperatorSupportedForTarget(operator, 'array', context.target)) {\n pushIssue(\n context,\n `${path}.arrayOperator`,\n `unsupported_${targetSlug(context.target)}_array_operator`,\n `Array operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n // What the operator reads, as the catalog says: nothing, a predicate per element, or a count of\n // the elements that match.\n const shape = getValueShape(operator as ArrayOperator, 'array');\n const hasCondition = rule.condition !== undefined;\n const refuseCount = (): void => {\n if (rule.count !== undefined)\n pushIssue(\n context,\n `${path}.count`,\n 'unexpected_count',\n `Array operator '${operator}' does not accept count`,\n );\n };\n if (shape === 'none') {\n if (hasCondition)\n pushIssue(\n context,\n `${path}.condition`,\n 'unexpected_condition',\n `Array operator '${operator}' does not accept condition`,\n );\n refuseCount();\n } else if (shape === 'predicate') {\n if (hasCondition) validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n else\n pushIssue(\n context,\n `${path}.condition`,\n 'missing_condition',\n conditionRequired(operator).message,\n );\n refuseCount();\n } else if (shape === 'count') {\n if (context.target !== 'toPrisma' && typeof rule.count !== 'number')\n pushIssue(context, `${path}.count`, 'missing_count', countRequired(operator).message);\n else if (\n rule.count !== undefined &&\n !(typeof rule.count === 'number' && Number.isInteger(rule.count) && rule.count >= 0)\n )\n pushIssue(\n context,\n `${path}.count`,\n 'invalid_count',\n 'count must be a non-negative whole number',\n );\n if (hasCondition) validateCondition(rule.condition, `${path}.condition`, context, depth + 1);\n else if (context.target === 'check')\n pushIssue(\n context,\n `${path}.condition`,\n 'missing_condition',\n conditionRequired(operator).message,\n );\n }\n};\n\nconst validateDateRule = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (typeof rule.field !== 'string') {\n pushIssue(context, `${path}.field`, 'field_required', 'Date rule requires a string field');\n }\n validateField(rule, path, context, depth);\n\n if (typeof rule.dateOperator !== 'string' || !catalogEntry(rule.dateOperator, 'date')) {\n pushIssue(\n context,\n `${path}.dateOperator`,\n 'invalid_date_operator',\n unknownOperator(rule.dateOperator, 'date').message,\n );\n return;\n }\n\n const operator = rule.dateOperator as DateOperator;\n validateOffset(rule, 'date', operator, path, context, depth);\n\n if (!isOperatorSupportedForTarget(operator, 'date', context.target)) {\n pushIssue(\n context,\n `${path}.dateOperator`,\n `unsupported_${targetSlug(context.target)}_date_operator`,\n `Date operator '${operator}' is not supported by ${context.target}()`,\n );\n }\n\n const shape = getValueShape(operator, 'date');\n\n if (shape === 'dayList') {\n if (validateSource(rule, path, context, depth) !== 'value') return;\n const days = rule.value;\n if (!Array.isArray(days) || !days.every((day) => typeof day === 'string' && isDayName(day)))\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_day_list',\n `Date operator '${operator}' requires an array of day names (${DAY_NAMES.join(', ')})`,\n );\n return;\n }\n\n if (validateSource(rule, path, context, depth) === null) return;\n rejectSqlRowRange(rule, operator, path, context);\n if (typeof rule.path === 'string' || typeof rule.bind === 'string') return;\n\n // Structured date expressions: ago/ahead, this/last/next, start/end.\n if (isDateExpr(rule.value)) {\n validateDateExpr(rule.value, operator, `${path}.value`, context, depth);\n return;\n }\n\n if (WINDOW_OPERATORS.includes(operator)) {\n // The range operators only accept an expression range (period or rolling), not a literal pair.\n pushIssue(context, `${path}.value`, 'invalid_date_range', rangeExprRequired(operator).message);\n return;\n }\n\n if (shape === 'dateRange') {\n if (!isDateRangeOrExprPair(rule.value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_range',\n `Date operator '${operator}' requires a two-item date range`,\n );\n return;\n }\n (rule.value as unknown[]).forEach((item, i) => {\n if (isDateExpr(item)) {\n validateDateExpr(item, operator, `${path}.value[${i}]`, context, depth);\n } else if (isOrderedValue(item) && !parseDateValue(item, DEFAULT_ZONE).isValid()) {\n pushIssue(\n context,\n `${path}.value[${i}]`,\n 'invalid_date_value',\n `Date operator '${operator}' value '${String(item)}' does not parse as a date`,\n );\n }\n });\n return;\n }\n\n if (!isOrderedValue(rule.value)) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_value',\n `Date operator '${operator}' requires a date-like value`,\n );\n return;\n }\n\n // A date-like value must actually parse — a string that survives validation but\n // fails the compilers/check() would persist clean and then fail at evaluation.\n if (!parseDateValue(rule.value, DEFAULT_ZONE).isValid()) {\n pushIssue(\n context,\n `${path}.value`,\n 'invalid_date_value',\n `Date operator '${operator}' value '${String(rule.value)}' does not parse as a date`,\n );\n }\n};\n\n// --- Date-expression validation ---\nconst validateRelativeUnits = (\n units: unknown,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n if (!isPlainObject(units) || Object.keys(units).length === 0) {\n pushIssue(\n context,\n path,\n 'invalid_relative_units',\n 'Relative offset requires at least one unit',\n );\n return;\n }\n for (const [key, magnitude] of Object.entries(units)) {\n if (!isRelativeUnit(key)) {\n pushIssue(\n context,\n `${path}.${key}`,\n 'invalid_relative_unit',\n `Unknown relative unit '${key}'`,\n );\n continue;\n }\n // An amount is a literal number or a value source; a `{ value }` is checked like a literal.\n const form = isPlainObject(magnitude)\n ? validateSource(magnitude, `${path}.${key}`, context, depth)\n : 'literal';\n if (form === null || form === 'path' || form === 'bind') continue;\n const amount = form === 'value' ? (magnitude as Record<string, unknown>).value : magnitude;\n const problem = unitAmountProblem(amount, key);\n if (problem) pushIssue(context, `${path}.${key}`, 'invalid_relative_magnitude', problem);\n }\n};\n\nconst validatePeriodUnit = (unit: unknown, path: string, context: ValidationContext): void => {\n if (typeof unit !== 'string' || !PERIOD_UNITS.includes(unit)) {\n pushIssue(context, path, 'invalid_period_unit', `Unknown period unit '${String(unit)}'`);\n }\n};\n\nconst validateDateExpr = (\n expr: DateExpr,\n operator: DateOperator,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const isRange = WINDOW_OPERATORS.includes(operator);\n\n const rolling = rollingShift(expr);\n if (rolling) {\n validateRelativeUnits(rolling[0], path, context, depth);\n return;\n }\n\n if (isPeriodExpr(expr)) {\n validatePeriodUnit(namedPeriod(expr), path, context);\n return;\n }\n\n if (isEdgeExpr(expr)) {\n if (isRange) {\n pushIssue(context, path, 'invalid_date_range', rangeExprRequired(operator).message);\n return;\n }\n const period = 'start' in expr ? expr.start : expr.end;\n if (!isPlainObject(period) || !isPeriodExpr(period)) {\n pushIssue(context, path, 'invalid_period_unit', `start/end requires a this/last/next period`);\n return;\n }\n validatePeriodUnit(namedPeriod(period), path, context);\n return;\n }\n\n pushIssue(context, path, 'invalid_date_expression', 'Unrecognized date expression');\n};\n\nconst forbidValueAndPath = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n): void => {\n if ('value' in rule && rule.value !== undefined) {\n pushIssue(context, `${path}.value`, 'unexpected_value', 'Rule does not accept value');\n }\n if ('path' in rule && rule.path !== undefined) {\n pushIssue(context, `${path}.path`, 'unexpected_path', 'Rule does not accept path');\n }\n if ('bind' in rule && rule.bind !== undefined) {\n pushIssue(context, `${path}.bind`, 'unexpected_bind', 'Rule does not accept bind');\n }\n};\n\nconst targetSlug = (target: RuleTarget): string =>\n target === 'toPrisma' ? 'prisma' : target === 'toSql' ? 'sql' : 'check';\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n isPlainObjectLodash(value);\n\nconst isNumericRange = (value: unknown): value is [number, number] =>\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'number' &&\n typeof value[1] === 'number';\n\nconst isDateRangeOrExprPair = (value: unknown): boolean =>\n Array.isArray(value) &&\n value.length === 2 &&\n (isOrderedValue(value[0]) || isDateExpr(value[0])) &&\n (isOrderedValue(value[1]) || isDateExpr(value[1]));\n\nconst validateWindow = (\n rule: Record<string, unknown>,\n path: string,\n context: ValidationContext,\n depth: number,\n): void => {\n const windowed = hasWindow(rule as WindowFields);\n\n if (windowed && context.target !== 'check') {\n // toPrisma compiles a filter-only window and the extremal (take:1, aligned) one.\n const eligible =\n context.target === 'toPrisma' && windowRewrite(rule as unknown as ArrayRule) !== null;\n if (!eligible) {\n pushIssue(\n context,\n path,\n `unsupported_${targetSlug(context.target)}_window`,\n windowUnsupported(context.target).message,\n );\n }\n }\n\n if ('filter' in rule && rule.filter !== undefined) {\n validateCondition(rule.filter, `${path}.filter`, context, depth + 1);\n }\n\n if ('orderBy' in rule && rule.orderBy !== undefined) {\n const ob = rule.orderBy;\n // An empty orderBy orders nothing: no window, as hasWindow reads it.\n if (!Array.isArray(ob)) {\n pushIssue(\n context,\n `${path}.orderBy`,\n 'invalid_order_by',\n 'orderBy must be an array of { field, dir }',\n );\n } else {\n ob.forEach((o, i) => {\n if (\n !isPlainObject(o) ||\n typeof o.field !== 'string' ||\n (o.dir !== 'asc' && o.dir !== 'desc')\n ) {\n pushIssue(\n context,\n `${path}.orderBy[${i}]`,\n 'invalid_order_by',\n 'orderBy entries must be { field: string, dir: \"asc\" | \"desc\" }',\n );\n }\n });\n }\n }\n\n for (const key of ['take', 'skip'] as const) {\n if (key in rule && rule[key] !== undefined) {\n const v = rule[key];\n if (typeof v !== 'number' || !Number.isInteger(v) || v < 0) {\n pushIssue(\n context,\n `${path}.${key}`,\n `invalid_window_${key}`,\n `${key} must be a non-negative integer`,\n );\n }\n }\n }\n};\n\nconst pushIssue = (\n context: ValidationContext,\n path: string,\n code: string,\n message: string,\n): void => {\n context.errors.push({ path, code, message });\n};\n","import { throwIfInvalid, type ValidationResult, validationResult } from '../validate';\nimport { endpointKey } from './endpointKey.ts';\nimport type { FieldMapSet } from './types.ts';\n\nconst FORBIDDEN_FIELD_CHARS = /[.:]/;\n\n/** Field names are plain identifiers: `.` walks a path and `:` names a bridge target. */\nexport const validateFieldMaps = (set: FieldMapSet): ValidationResult => {\n const errors = [];\n for (const [mapName, fieldMap] of Object.entries(set.maps))\n for (const [modelName, model] of Object.entries(fieldMap.models))\n for (const [fieldName, entry] of Object.entries(model.fields))\n if (entry.kind !== 'bridge' && FORBIDDEN_FIELD_CHARS.test(fieldName))\n errors.push({\n path: `${endpointKey({ fieldMap: mapName, model: modelName })}.${fieldName}`,\n message: 'contains forbidden character . or :',\n code: 'invalid_field_name',\n });\n return validationResult(errors);\n};\n\nexport const assertValidFieldMaps = (set: FieldMapSet): void =>\n throwIfInvalid(validateFieldMaps(set), 'validateFieldMaps');\n","import type { Lens, LensNarrowing } from './types.ts';\n\nexport const isLens = (x: Lens | LensNarrowing): x is Lens => 'model' in x;\n\nexport const collectChain = (x: Lens | LensNarrowing): LensNarrowing[] => {\n const list: LensNarrowing[] = [];\n const visited = new Set<LensNarrowing>();\n let cursor: Lens | LensNarrowing = x;\n while (!isLens(cursor)) {\n if (visited.has(cursor)) throw new Error('cycle detected in narrowing parent chain');\n visited.add(cursor);\n list.unshift(cursor);\n cursor = cursor.parent;\n }\n return list;\n};\n\n/** The lens a narrowing chain is rooted at. */\nexport const getRoot = (x: Lens | LensNarrowing): Lens =>\n isLens(x) ? x : (collectChain(x)[0].parent as Lens);\n","import { own } from '../own';\nimport type { FieldMapEntry } from './types';\n\n/**\n * A Json column. It declares no sub-fields, so a dotted sub-path into it is open-ended —\n * `check`/`toPrisma`/`toSql` resolve the remaining segments against the JSON value at\n * evaluation time. Lens path resolution stops at this boundary.\n */\nexport const isJsonEntry = (entry: FieldMapEntry): boolean =>\n entry.kind === 'scalar' && entry.type === 'Json';\n\n/** A relation to another model, in this source or across a bridge. */\nexport const isRelationEntry = (entry: FieldMapEntry): boolean =>\n entry.kind === 'object' || entry.kind === 'bridge';\n\n/** An enum field's declared values: the entry's own, else the registry's for its type. */\nexport const declaredEnumValues = (\n entry: FieldMapEntry,\n enums: Record<string, readonly string[]> | undefined,\n): readonly string[] | undefined => entry.values ?? own(enums, entry.type);\n","import { fieldOf, modelOf, own } from '../own';\nimport { someCondition } from '../traverse';\nimport type { Condition } from '../types';\nimport { parseEndpointKey } from './endpointKey.ts';\nimport { isJsonEntry } from './entry';\nimport type { FieldMap, FieldMapEntry } from './types';\n\n/** A model a walk stands on, and the relation path that reached it. */\nexport type MapVisit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n/** One segment of a walk: the entry it names at `at` (undefined when undeclared), and the model a\n * relation entry leads to. */\nexport type MapStep = {\n index: number;\n field: string;\n at: MapVisit;\n entry: FieldMapEntry | undefined;\n next: { mapName: string; modelName: string } | null;\n};\n\n/** The model a relation entry leads to, in this map or across a bridge; null for a column. */\nexport const relationTargetOf = (\n entry: FieldMapEntry,\n currentMap: string,\n): { mapName: string; modelName: string } | null => {\n if (entry.kind === 'object') return { mapName: currentMap, modelName: entry.type };\n if (entry.kind === 'bridge') return parseEndpointKey(entry.type, currentMap);\n return null;\n};\n\n/**\n * The one walk of a dotted path through field maps: each segment read at the model the previous\n * relation reached. It ends after an undeclared segment or a column; callers stop earlier where\n * their semantics do (a bridge, a hidden field, a Json boundary).\n */\nexport function* walkMaps(\n maps: Record<string, FieldMap>,\n from: MapVisit,\n path: string,\n): Generator<MapStep> {\n const parts = path.split('.');\n let at: MapVisit = from;\n for (let index = 0; index < parts.length; index++) {\n const field = parts[index];\n const entry = fieldOf(own(maps, at.mapName), at.modelName, field);\n const next = entry ? relationTargetOf(entry, at.mapName) : null;\n yield { index, field, at, entry, next };\n if (!next) return;\n at = { ...next, relPath: [...at.relPath, field] };\n }\n}\n\n/** A relation the walk crossed on the way to the terminal segment. */\nexport type MapHop = { field: string; prefix: string; entry: FieldMapEntry; from: string };\n\n/**\n * A dot-notation field path walked through a FieldMap — the one walk both compilers use:\n * - `direct` the path ends on a declared field (`entry`), a column of `model` or a relation\n * - `json-path` it reaches a Json column (`column`) and continues as a JSON path\n * - `bridge` it crosses a bridge to another source\n * - `past-scalar` it continues past a non-Json column, which has no sub-fields\n * - `fallback` a segment isn't declared; the compilers read the path as written\n * `hops` are the relations crossed before the terminal segment, outermost first.\n */\nexport type MapWalkResult =\n | { kind: 'direct'; hops: MapHop[]; entry: FieldMapEntry; model: string; column: string }\n | {\n kind: 'json-path';\n hops: MapHop[];\n entry: FieldMapEntry;\n model: string;\n column: string;\n stopIndex: number;\n jsonPath: string[];\n }\n | { kind: 'bridge'; hops: MapHop[] }\n | { kind: 'past-scalar'; hops: MapHop[]; column: string }\n | { kind: 'fallback'; hops: MapHop[] };\n\nexport const walkFieldPath = (field: string, map: FieldMap, rootModel: string): MapWalkResult => {\n const parts = field.split('.');\n const hops: MapHop[] = [];\n const from = { mapName: '', modelName: rootModel, relPath: [] };\n for (const { index: i, field: column, at, entry } of walkMaps({ '': map }, from, field)) {\n const model = at.modelName;\n if (!entry) return { kind: 'fallback', hops };\n if (entry.kind === 'bridge') return { kind: 'bridge', hops };\n const last = i === parts.length - 1;\n if (entry.kind === 'object') {\n if (!modelOf(map, entry.type)) return { kind: 'fallback', hops };\n if (last) return { kind: 'direct', hops, entry, model, column };\n hops.push({ field: column, prefix: parts.slice(0, i + 1).join('.'), entry, from: model });\n continue;\n }\n if (last) return { kind: 'direct', hops, entry, model, column };\n if (isJsonEntry(entry))\n return {\n kind: 'json-path',\n hops,\n entry,\n model,\n column,\n stopIndex: i + 1,\n jsonPath: parts.slice(i + 1),\n };\n return { kind: 'past-scalar', hops, column };\n }\n return { kind: 'fallback', hops };\n};\n\n/** A field's walk, when a map and model are given. */\nexport const walkWith = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): MapWalkResult | undefined => (map && model ? walkFieldPath(field, map, model) : undefined);\n\n/** The declared entry a field path ends on, when the map declares it. */\nexport const fieldEntry = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): FieldMapEntry | undefined => {\n const walk = walkWith(field, map, model);\n return walk?.kind === 'direct' ? walk.entry : undefined;\n};\n\n/**\n * The dotted prefixes of `field` that end on an OPTIONAL to-one relation, outermost first —\n * every hop at which the path can be absent as a whole. Same licensing authority as\n * `isRequired` on a column.\n */\nexport const optionalToOneHops = (field: string, map: FieldMap, rootModel: string): string[] =>\n walkFieldPath(field, map, rootModel)\n .hops.filter((hop) => !hop.entry.isList && hop.entry.isRequired === false)\n .map((hop) => hop.prefix);\n\n/** The model a path of relations leads to; null when a segment isn't a declared relation. */\nexport const relationTarget = (field: string, map: FieldMap, model: string): string | null => {\n const walk = walkFieldPath(field, map, model);\n return walk.kind === 'direct' && walk.entry.kind === 'object' ? walk.entry.type : null;\n};\n\n/** Whether a field path crosses a bridge. */\nexport const hitsBridge = (field: string, map: FieldMap, model: string): boolean =>\n walkFieldPath(field, map, model).kind === 'bridge';\n\n/**\n * Whether a bridge appears anywhere in a condition, a relation node's `condition` / `filter`\n * read at its target model. Bridge predicates compile to an over-fetch sentinel (`TRUE` / `{}`),\n * which is safe under AND / OR but not under the `NOT(if) OR then` of an implication — so an\n * implication that touches one over-fetches whole.\n */\nexport const conditionTouchesBridge = (\n condition: Condition,\n map: FieldMap | undefined,\n model: string | undefined,\n): boolean =>\n !!map &&\n !!model &&\n someCondition<string>(\n condition,\n (node, at) =>\n typeof node.field === 'string' && node.field !== '' && hitsBridge(node.field, map, at),\n (node, at) =>\n (typeof node.field === 'string' ? relationTarget(node.field, map, at) : at) ?? false,\n model,\n );\n","import { check } from '../check';\nimport { ArrayOperator } from '../operator.ts';\nimport { parseScopeRef, readScopeRef } from '../scope';\nimport {\n allOf,\n anyOf,\n elementRefs,\n isLogicalNode,\n isRelationNode,\n mapCondition,\n valueRefs,\n} from '../traverse';\nimport type { Condition, WindowFields } from '../types.ts';\nimport { hasWindow } from '../window.ts';\nimport type { Policy } from './policy.ts';\nimport { type RelationHop, relationHops, resolvePolicy, resolveVisit } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Composes a user rule with the lens's narrowing where-clauses, injecting each\n// `where` at its proper anchor in the rule tree (not blindly AND-ing at root).\n//\n// Anchoring rules (2.2.0):\n// - root.where → AND at root (path-specific at lens anchor)\n// - mapDefaults[M].models[X].where → injected wherever rule visits X in map M\n// - root.relations[R]...relations[R].where → injected when rule descends through R\n//\n// Operator-specific injection inside an arrayRule:\n// - any/none/atLeast/atMost/exactly/aggregate.condition: AND with original condition\n// - all and windowed rules: filter-first via the array rule's window `filter` (drops out-of-scope rows before\n// order/take/skip and before the all-check) — never a per-row negate implication\n\nconst wrapWithWheres = (rule: Condition, wheres: Condition[]): Condition =>\n wheres.length ? allOf([...wheres, rule]) : rule;\n\n// Whether a node holds with its field absent — check() answers. A node reading a value ref (or\n// one check() can't settle without options) keeps the plain AND, which only narrows.\nconst holdsWhenAbsent = (node: Condition): boolean => {\n if (valueRefs(node as Record<string, unknown>).length) return false;\n // A `$`-scoped field reads the same way at its own scope.\n const field = (node as { field?: unknown }).field;\n const scoped = typeof field === 'string' ? parseScopeRef(field) : null;\n try {\n return (\n check(scoped ? ({ ...(node as object), field: scoped.path } as Condition) : node, {}) === true\n );\n } catch {\n return false;\n }\n};\n\n// A node read through granted hops: each hop's grant AND-ed with it, so a related row outside its\n// grant fails the node. A missing related row is not a hidden one — where the node holds with its\n// path absent (a negation, notExists), a hop that isn't there satisfies it without the grant.\nconst underHopGrants = (node: Condition, hops: HopGrant[]): Condition => {\n if (!hops.length) return node;\n if (!holdsWhenAbsent(node)) return allOf([...hops.flatMap((hop) => hop.grants), node]);\n const [hop, ...deeper] = hops;\n return anyOf([\n allOf([...hop.grants, underHopGrants(node, deeper)]),\n allOf([{ field: hop.prefix, operator: 'notExists' } as Condition, node]),\n ]);\n};\n\n// Re-roots a related-model `where` grant so its field refs resolve from the current\n// anchor through the relation path (e.g. a User grant `tenantId` reached via `author`\n// becomes `author.tenantId`). Fails closed on shapes that can't be re-rooted\n// unambiguously — a `path` ref (root/current-element semantics don't survive re-rooting)\n// or a nested array/aggregate condition (row-scoped to a different anchor) — rather than\n// silently emitting a wrong or unenforced grant.\nexport const prefixConditionFields = (cond: Condition, prefix: string): Condition =>\n mapCondition(cond, {\n rewrite: (node) => {\n if (isLogicalNode(node)) return node;\n if (typeof node.field !== 'string' || node.field === '')\n throw new Error(\n `narrowRule: cannot re-root a relation grant of unknown shape under '${prefix}'`,\n );\n const refs = valueRefs(node);\n if (refs.length) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a path reference ('${refs[0]}') ` +\n `under '${prefix}'. Author the grant without 'path', or anchor it at the relation itself.`,\n );\n }\n if (parseScopeRef(node.field)) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a scope ref field ('${node.field}') ` +\n `under '${prefix}'. Author the grant against the model's own columns.`,\n );\n }\n if (node.condition !== undefined) {\n throw new Error(\n `narrowRule: cannot re-root a relation grant with a nested array/aggregate condition on ` +\n `'${node.field}' under '${prefix}'. Anchor such grants at the relation's own model.`,\n );\n }\n return { ...node, field: `${prefix}.${node.field}` };\n },\n // A relation node's `filter` is relative to its elements, not to the anchor.\n below: () => false,\n });\n\ntype Visit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n// Gathers the (re-rooted) wheres for each traversed relation hop so they can be AND-ed\n// with the rule at the current anchor. To-many hops have no scalar path to AND against —\n// their grant must be row-scoped via an arrayOperator condition — so reaching one here\n// (a to-many with a grant but no condition anchor) fails closed rather than dropping it.\ntype HopGrant = { prefix: string; grants: Condition[] };\n\nconst hopGrants = (policy: Policy, hops: RelationHop[]): HopGrant[] =>\n hops.flatMap((hop) => {\n const effect = resolveVisit(policy, hop.map, hop.model, hop.relPath);\n if (effect.whereClauses.length === 0) return [];\n if (hop.isList) {\n throw new Error(\n `narrowRule: cannot enforce a to-many relation grant on '${hop.prefix}' without an ` +\n `arrayOperator condition to anchor it (row-scoped). Traverse '${hop.prefix}' via an ` +\n `array operator (any/all/none/...) so the grant can be injected safely.`,\n );\n }\n return [\n {\n prefix: hop.prefix,\n grants: effect.whereClauses.map((where) => prefixConditionFields(where, hop.prefix)),\n },\n ];\n });\n\nconst collectHopWheres = (policy: Policy, hops: RelationHop[]): Condition[] =>\n hopGrants(policy, hops).flatMap((hop) => hop.grants);\n\n// A scope is a visit the walk reached, or null inside a Json value (undeclared: nothing to grant).\ntype Scope = Visit | null;\n\n// The relation hops a ref crosses from the scope it names, and the visit it ends on. Grants\n// re-root under the ref's own scope prefix (`$.` is the node's own scope, so none).\nconst hopsAt = (\n ref: string,\n policy: Policy,\n scopes: readonly Scope[],\n): { hops: RelationHop[]; end: Visit | null } => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) throw new Error(`narrowRule: ${target.outOfBounds}`);\n if (!target.scope) return { hops: [], end: null };\n const prefix = ref.slice(0, ref.length - target.path.length);\n return relationHops(policy.lens.maps, target.scope, target.path, prefix === '$.' ? '' : prefix);\n};\n\n// A value ref's hops. A bare one is a root-row path — the lens gate resolves it at the lens\n// model, and check() reads it from the row when no context is given — so its grants re-root at\n// the root.\nconst refHops = (ref: string, policy: Policy, scopes: readonly Scope[]): RelationHop[] => {\n if (parseScopeRef(ref)) return hopsAt(ref, policy, scopes).hops;\n const prefix = scopes.length === 1 ? '' : `${'$'.repeat(scopes.length)}.`;\n return scopes[0] ? relationHops(policy.lens.maps, scopes[0], ref, prefix).hops : [];\n};\n\n// Where a node's field leads: every relation hop it crosses (each may carry a grant), and the\n// scope its `condition` / `filter` read at — the relation's visit when its last segment is one,\n// an open scope for a relation node over a Json array.\nconst anchorOf = (\n node: Record<string, unknown>,\n policy: Policy,\n scopes: readonly Scope[],\n): { hops: RelationHop[]; below: Visit | null } | null => {\n if (isLogicalNode(node) || typeof node.field !== 'string' || node.field === '') return null;\n const { hops, end } = hopsAt(node.field, policy, scopes);\n return { hops, below: end };\n};\n\n// Injects each grant at its anchor. A relation node (array or aggregate) whose field ends on a\n// relation gets that relation's grants row-scoped: AND-ed into its `condition`, or — for `all`, a\n// window, or a node with no `condition` (a count, an aggregate, emptiness) — into its `filter`,\n// which drops out-of-scope rows before anything else reads them; relations its `orderBy` or\n// `aggregate.field` cross add their grants there too. Every other hop's grant — on the field, or\n// on a value-side ref (`path`, an offset, an amount) — is re-rooted under the hop and AND-ed with\n// the node.\n/** A rule's grants injected at their anchors, the rule read from `root` under `policy`. */\nexport const narrowAt = (rule: Condition, policy: Policy, root: Visit): Condition =>\n mapCondition<readonly Scope[]>(\n rule,\n {\n below: (node, scopes) => {\n const anchor = anchorOf(node, policy, scopes);\n if (!anchor) return false;\n if (anchor.below) return [...scopes, anchor.below];\n return isRelationNode(node) ? [...scopes, null] : false;\n },\n after: (node, scopes) => {\n const anchor = anchorOf(node, policy, scopes);\n if (!anchor) return node as Condition;\n const valueWheres = collectHopWheres(\n policy,\n valueRefs(node).flatMap((ref) => refHops(ref, policy, scopes)),\n );\n const below = anchor.below;\n if (!below || !isRelationNode(node))\n return wrapWithWheres(\n underHopGrants(node as Condition, hopGrants(policy, anchor.hops)),\n valueWheres,\n );\n const grants = [\n ...resolveVisit(policy, below.mapName, below.modelName, below.relPath).whereClauses,\n ...collectHopWheres(\n policy,\n elementRefs(node).flatMap((ref) => relationHops(policy.lens.maps, below, ref).hops),\n ),\n ];\n const filterFirst =\n node.condition === undefined ||\n node.arrayOperator === ArrayOperator.all ||\n hasWindow(node as WindowFields);\n const out: Record<string, unknown> = { ...node };\n if (grants.length && filterFirst)\n out.filter = allOf([\n ...(node.filter !== undefined ? [node.filter as Condition] : []),\n ...grants,\n ]);\n else if (grants.length) out.condition = allOf([...grants, node.condition as Condition]);\n return wrapWithWheres(\n underHopGrants(out as Condition, hopGrants(policy, anchor.hops.slice(0, -1))),\n valueWheres,\n );\n },\n },\n [root],\n );\n\nexport const narrowRule = (rule: Condition, lensOrNarrowing: Lens | LensNarrowing): Condition => {\n const policy = resolvePolicy(lensOrNarrowing);\n const rootEffect = resolveVisit(policy, policy.lens.mapName, policy.lens.model, []);\n\n // First rewrite the rule, injecting where clauses at their anchors.\n const rewritten = narrowAt(rule, policy, {\n mapName: policy.lens.mapName,\n modelName: policy.lens.model,\n relPath: [],\n });\n\n // Then wrap with root-anchored where clauses (root.where +\n // mapDefaults[lens.mapName].models[lens.model].where).\n return wrapWithWheres(rewritten, rootEffect.whereClauses);\n};\n","import { declaredEnumValues, isJsonEntry } from '../fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { type MapVisit, relationTargetOf, walkMaps } from '../fieldMap/walk.ts';\nimport { modelOf, own } from '../own';\nimport { readScopeRef } from '../scope';\nimport type { Condition } from '../types.ts';\nimport { collectChain, getRoot } from './chain.ts';\nimport { narrowAt } from './narrowRule.ts';\nimport type {\n Lens,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n SourceEntry,\n SourceSpec,\n} from './types.ts';\n\nexport type VisitEffect = {\n picks: Set<string> | null;\n omits: Set<string>;\n enumValuesByField: Map<string, readonly string[]>;\n whereClauses: Condition[];\n sources: Map<string, Condition[]>;\n /** Per-field display label (from a SourceSpec's `label`): a sibling column or a dotted\n * to-one path; a later layer wins. */\n sourceLabels: Map<string, string>;\n /** Per-field option-partition axes (from a SourceSpec's `groupBy`, normalized); a later layer wins. */\n sourceGroupBys: Map<string, string[]>;\n /** The chain index of the earliest layer that declared each source's label / axes (keyed by\n * `declaredKey`): every layer after it that hides one of those columns drops it. */\n sourceDeclaredAt: Map<string, number>;\n relations: Map<string, ModelNarrowing>;\n};\n\n/** Normalize a `groupBy` declaration to its axes array (a bare string is one axis). */\nexport const normalizeGroupBy = (g: string | string[] | undefined): string[] | undefined =>\n g === undefined ? undefined : Array.isArray(g) ? g : [g];\n\n/** A `sources` entry is a `SourceSpec` when it carries `where`/`label`/`groupBy`; else it's a bare `Condition`. */\nexport const isSourceSpec = (v: SourceEntry): v is SourceSpec =>\n typeof v === 'object' &&\n v !== null &&\n !Array.isArray(v) &&\n ('where' in v || 'label' in v || 'groupBy' in v);\n\n/** Normalize a `sources` entry to a `SourceSpec` — a bare `Condition` becomes its `where`. */\nexport const normalizeSource = (v: SourceEntry): SourceSpec => {\n if (isSourceSpec(v)) return v;\n if (typeof v === 'object' && v !== null && !Array.isArray(v) && Object.keys(v).length === 0)\n throw new Error('sources: {} is not a Condition — use `true` for an unconstrained source');\n return { where: v };\n};\n\nexport type Policy = {\n lens: Lens;\n chain: LensNarrowing[];\n};\n\n/** A relPath matching no declared `root.relations` path — `resolveVisit` then applies\n * mapDefaults only: the model-intrinsic visit a model gets wherever it is reached off-path. */\nexport const OFF_PATH: readonly string[] = ['__offpath__'];\n\nexport const resolvePolicy = (lensOrNarrowing: Lens | LensNarrowing): Policy => {\n const lens = getRoot(lensOrNarrowing);\n const chain =\n (lensOrNarrowing as Lens).maps === lens.maps\n ? []\n : collectChain(lensOrNarrowing as LensNarrowing);\n return { lens, chain };\n};\n\nexport const intersectStringSet = (\n cur: Set<string> | null,\n next: readonly string[],\n): Set<string> => {\n if (cur === null) return new Set(next);\n return new Set(next.filter((x) => cur.has(x)));\n};\n\nexport const augmentPicksWithRelations = (\n n: ModelDefaultNarrowing | ModelNarrowing,\n): readonly string[] | undefined => {\n if (!n.picks) return undefined;\n if (!('relations' in n) || !n.relations) return n.picks;\n const out = [...n.picks];\n for (const rel of Object.keys(n.relations)) {\n if (!out.includes(rel)) out.push(rel);\n }\n return out;\n};\n\nconst accumulatePicksOmitsInto = (\n state: { picks: Set<string> | null; omits: Set<string> },\n n: ModelDefaultNarrowing | ModelNarrowing,\n): void => {\n const augmented = augmentPicksWithRelations(n);\n if (augmented) state.picks = intersectStringSet(state.picks, augmented);\n if (n.omits) for (const f of n.omits) state.omits.add(f);\n};\n\nconst intersectIntoMap = (\n map: Map<string, Set<string>>,\n key: string,\n vals: readonly string[],\n): void => {\n map.set(key, intersectStringSet(map.get(key) ?? null, vals));\n};\n\nconst unionIntoMap = (\n map: Map<string, Set<string>>,\n key: string,\n vals: readonly string[],\n): void => {\n const s = map.get(key) ?? new Set<string>();\n for (const v of vals) s.add(v);\n map.set(key, s);\n};\n\nconst accumulateEnumFields = (\n picksMap: Map<string, Set<string>>,\n omitsMap: Map<string, Set<string>>,\n n: ModelDefaultNarrowing | ModelNarrowing,\n): void => {\n if (n.enumPicks) {\n for (const [f, vals] of Object.entries(n.enumPicks)) intersectIntoMap(picksMap, f, vals);\n }\n if (n.enumOmits) {\n for (const [f, vals] of Object.entries(n.enumOmits)) unionIntoMap(omitsMap, f, vals);\n }\n};\n\nconst declaredKey = (field: string, kind: 'label' | 'groupBy', value: string | string[]): string =>\n JSON.stringify([field, kind, value]);\n\nconst accumulateInto = (\n out: VisitEffect,\n n: ModelDefaultNarrowing | ModelNarrowing,\n narrow: (condition: Condition) => Condition,\n layer: number,\n): void => {\n accumulatePicksOmitsInto(out, n);\n if (n.where !== undefined) out.whereClauses.push(narrow(n.where));\n if (n.sources) {\n for (const [field, entry] of Object.entries(n.sources)) {\n const spec = normalizeSource(entry);\n const clauses = out.sources.get(field) ?? [];\n if (spec.where !== undefined) clauses.push(narrow(spec.where));\n out.sources.set(field, clauses); // register the field even when only a label is set\n const axes = normalizeGroupBy(spec.groupBy);\n for (const [kind, value] of [\n ['label', spec.label],\n ['groupBy', axes],\n ] as const) {\n if (value === undefined) continue;\n const key = declaredKey(field, kind, value);\n if (!out.sourceDeclaredAt.has(key)) out.sourceDeclaredAt.set(key, layer);\n }\n if (spec.label !== undefined) out.sourceLabels.set(field, spec.label);\n if (axes !== undefined) out.sourceGroupBys.set(field, axes);\n }\n }\n};\n\nexport const resolveVisit = (\n policy: Policy,\n mapName: string,\n modelName: string,\n relPath: readonly string[],\n): VisitEffect => {\n const out: VisitEffect = {\n picks: null,\n omits: new Set(),\n enumValuesByField: new Map(),\n whereClauses: [],\n sources: new Map(),\n sourceLabels: new Map(),\n sourceGroupBys: new Map(),\n sourceDeclaredAt: new Map(),\n relations: new Map(),\n };\n\n const fieldMap: FieldMap | undefined = own(policy.lens.maps, mapName);\n const model = modelOf(fieldMap, modelName);\n if (!model) return out;\n\n const fieldEnumPicks = new Map<string, Set<string>>();\n const fieldEnumOmits = new Map<string, Set<string>>();\n const typeEnumPicks = new Map<string, Set<string>>();\n const typeEnumOmits = new Map<string, Set<string>>();\n\n // A layer's own conditions read through its parent: the relations they reach carry the\n // grants of every layer above, as a user rule's do — a child can't see what its parent hides.\n let narrow = (condition: Condition): Condition => condition;\n let current = 0;\n const applyNode = (n: ModelDefaultNarrowing | ModelNarrowing): void => {\n accumulateInto(out, n, narrow, current);\n accumulateEnumFields(fieldEnumPicks, fieldEnumOmits, n);\n };\n\n for (const [layer, narrowing] of policy.chain.entries()) {\n current = layer;\n const parent: Policy = { lens: policy.lens, chain: policy.chain.slice(0, layer) };\n narrow = (condition) =>\n layer === 0 ? condition : narrowAt(condition, parent, { mapName, modelName, relPath });\n const visitMapDefaults = own(narrowing.mapDefaults, mapName);\n if (visitMapDefaults) {\n const dflt = own(visitMapDefaults.models, modelName);\n if (dflt) applyNode(dflt);\n for (const [enumName, enumN] of Object.entries(visitMapDefaults.enums ?? {})) {\n if (enumN.picks) intersectIntoMap(typeEnumPicks, enumName, enumN.picks);\n if (enumN.omits) unionIntoMap(typeEnumOmits, enumName, enumN.omits);\n }\n }\n\n let node: ModelNarrowing | undefined = narrowing.root;\n if (relPath.length === 0) {\n if (mapName === policy.lens.mapName && modelName === policy.lens.model && node) {\n applyNode(node);\n for (const [rel, sub] of Object.entries(node.relations ?? {})) out.relations.set(rel, sub);\n }\n } else {\n for (const seg of relPath) {\n node = own(node?.relations, seg);\n if (!node) break;\n }\n if (node) {\n applyNode(node);\n for (const [rel, sub] of Object.entries(node.relations ?? {})) out.relations.set(rel, sub);\n }\n }\n }\n\n for (const [fieldName, entry] of Object.entries(model.fields)) {\n const isEnum = entry.kind === 'enum';\n // Enums draw from the registry; any other kind (scalar, Json) is gated by an explicit\n // `values` set. A hydrated source's folded `options` gate too and win when present — a\n // consumer re-feeds an exposed surface here, so this is load-bearing (see\n // test/lens.sourceOptionsGating.test.ts).\n const optionValues = entry.options?.map((o) => o.value);\n const baseValues =\n optionValues ?? (isEnum ? declaredEnumValues(entry, fieldMap?.enums) : entry.values);\n if (!baseValues) continue;\n let vals: readonly string[] = baseValues;\n if (isEnum) {\n const typePicks = typeEnumPicks.get(entry.type);\n const typeOmits = typeEnumOmits.get(entry.type);\n if (typePicks) vals = vals.filter((v) => typePicks.has(v));\n if (typeOmits) vals = vals.filter((v) => !typeOmits.has(v));\n }\n const fp = fieldEnumPicks.get(fieldName);\n const fo = fieldEnumOmits.get(fieldName);\n if (fp) vals = vals.filter((v) => fp.has(v));\n if (fo) vals = vals.filter((v) => !fo.has(v));\n out.enumValuesByField.set(fieldName, vals);\n }\n\n return out;\n};\n\nexport const isFieldVisible = (effect: VisitEffect, fieldName: string): boolean => {\n if (effect.omits.has(fieldName)) return false;\n if (effect.picks !== null && !effect.picks.has(fieldName)) return false;\n return true;\n};\n\nexport const allowedEnumValues = (\n effect: VisitEffect,\n fieldName: string,\n): readonly string[] | null => effect.enumValuesByField.get(fieldName) ?? null;\n\nexport type LensPathHop = {\n field: string;\n entry: FieldMapEntry;\n mapName: string;\n model: string;\n /** The relation path from the lens anchor to the model this hop reads. */\n relPath: string[];\n};\n\n/**\n * Where a dotted path lands through the lens, hop by hop. `hidden` is a field the model has but\n * the narrowing does not expose at this visit; `missing` is a field the model does not have (or a\n * model the map does not have); `pastScalar` is a segment after a scalar. A path that continues\n * below a Json column resolves at the column with the remainder in `jsonSubPath`.\n */\nexport type LensPathResolution =\n | { outcome: 'resolved'; hops: LensPathHop[]; terminal: LensPathHop; jsonSubPath: string[] }\n | { outcome: 'hidden' | 'missing' | 'pastScalar'; index: number; hops: LensPathHop[] };\n\nexport const resolvePolicyPath = (\n policy: Policy,\n from: MapVisit,\n path: string,\n): { resolution: LensPathResolution; effects: VisitEffect[] } => {\n const parts = path.split('.');\n const hops: LensPathHop[] = [];\n const effects: VisitEffect[] = [];\n for (const { index: i, field: fieldName, at, entry, next } of walkMaps(\n policy.lens.maps,\n from,\n path,\n )) {\n if (!entry) return { resolution: { outcome: 'missing', index: i, hops }, effects };\n const effect = resolveVisit(policy, at.mapName, at.modelName, at.relPath);\n if (!isFieldVisible(effect, fieldName))\n return { resolution: { outcome: 'hidden', index: i, hops }, effects };\n const hop: LensPathHop = {\n field: fieldName,\n entry,\n mapName: at.mapName,\n model: at.modelName,\n relPath: [...at.relPath],\n };\n hops.push(hop);\n effects.push(effect);\n const last = i === parts.length - 1;\n // A Json column declares no sub-fields; the evaluators resolve the remainder against the\n // value, so the path resolves at the column and carries the remainder.\n if (last || isJsonEntry(entry)) {\n return {\n resolution: {\n outcome: 'resolved',\n hops,\n terminal: hop,\n jsonSubPath: last ? [] : parts.slice(i + 1),\n },\n effects,\n };\n }\n if (!next) return { resolution: { outcome: 'pastScalar', index: i, hops }, effects };\n }\n return { resolution: { outcome: 'missing', index: parts.length, hops }, effects };\n};\n\n/**\n * Whether a source's label or axes, as in force at a visit, read only columns every layer but\n * their earliest declaration shows. The declaring layer may source a column it hides itself; any\n * other layer that hides it — an ancestor, or a layer after — drops it, so re-declaring an\n * ancestor's label never revives what a layer in between hid. A path that doesn't resolve stays,\n * for the compile to refuse.\n */\nexport const sourceReadsVisible = (\n policy: Policy,\n effect: VisitEffect,\n at: MapVisit,\n field: string,\n kind: 'label' | 'groupBy',\n): boolean => {\n const value =\n kind === 'label' ? effect.sourceLabels.get(field) : effect.sourceGroupBys.get(field);\n if (value === undefined) return true;\n const from = effect.sourceDeclaredAt.get(declaredKey(field, kind, value)) ?? -1;\n const others = { lens: policy.lens, chain: policy.chain.filter((_, i) => i !== from) };\n return (typeof value === 'string' ? [value] : value).every(\n (path) => resolvePolicyPath(others, at, path).resolution.outcome !== 'hidden',\n );\n};\n\nexport const lensPathEnd = (\n policy: Policy,\n from: MapVisit,\n fieldPath: string,\n): {\n mapName: string;\n modelName: string;\n relPath: string[];\n entry: FieldMapEntry;\n terminalEffect: VisitEffect;\n terminalFieldName: string;\n /** Segments consumed below a Json boundary — empty when the path ends on the declared entry. */\n jsonSubPath: string[];\n} | null => {\n const { resolution, effects } = resolvePolicyPath(policy, from, fieldPath);\n if (resolution.outcome !== 'resolved') return null;\n const { terminal, jsonSubPath } = resolution;\n return {\n mapName: terminal.mapName,\n modelName: terminal.model,\n relPath: terminal.relPath,\n entry: terminal.entry,\n terminalEffect: effects[effects.length - 1],\n terminalFieldName: terminal.field,\n jsonSubPath,\n };\n};\n\n/** Where a rule visit stands: a model reached through the lens, or open inside a Json value. */\nexport type VisitScope = MapVisit & { open: boolean };\n\nexport const lensRootScope = (policy: Policy): VisitScope => ({\n mapName: policy.lens.mapName,\n modelName: policy.lens.model,\n relPath: [],\n open: false,\n});\n\nexport type LensWalk = NonNullable<ReturnType<typeof lensPathEnd>>;\n\n/**\n * The scope a node's `field` leads into — where its `condition` / `filter` resolve — with the\n * scope the walk started from and the walk that reached it (none inside an open Json scope), or the issue that stops it. A `$`-prefixed\n * field counts scopes up the stack as check() does.\n */\nexport const stepIntoField = (\n policy: Policy,\n scopes: readonly VisitScope[],\n field: string,\n):\n | { from: VisitScope; next: VisitScope; walked: LensWalk | null }\n | { issue: { code: 'scope_out_of_bounds' | 'not_in_lens'; message: string } } => {\n const target = readScopeRef(field, scopes);\n if ('outOfBounds' in target)\n return { issue: { code: 'scope_out_of_bounds', message: target.outOfBounds } };\n if (target.scope.open) return { from: target.scope, next: target.scope, walked: null };\n const walked = lensPathEnd(policy, target.scope, target.path);\n if (!walked)\n return {\n issue: { code: 'not_in_lens', message: 'path does not resolve through the narrowed lens' },\n };\n const open = isJsonEntry(walked.entry);\n const relation = relationTargetOf(walked.entry, walked.mapName);\n const next = relation\n ? { ...relation, relPath: [...walked.relPath, walked.terminalFieldName], open }\n : { ...target.scope, open };\n return { from: target.scope, next, walked };\n};\n\n/** A relation a path crosses: the visit it reaches, its dotted prefix, and whether it's to-many. */\nexport type RelationHop = {\n map: string;\n model: string;\n relPath: string[];\n prefix: string;\n isList: boolean;\n};\n\n/**\n * The relations a path crosses from a visit, read from the field maps — grants apply to a relation\n * whether or not it is visible, so this walk does not gate. It stops at the first segment that\n * isn't a relation; `end` is the visit the last segment reaches when every segment is one.\n * `prefix` is prepended to each hop's dotted prefix (a `$`-scope ref).\n */\nexport const relationHops = (\n maps: Record<string, FieldMap>,\n from: MapVisit,\n path: string,\n prefix = '',\n): {\n hops: RelationHop[];\n end: MapVisit | null;\n} => {\n const parts = path.split('.');\n const hops: RelationHop[] = [];\n let end: MapVisit | null = null;\n for (const { index: i, field, at, entry, next } of walkMaps(maps, from, path)) {\n if (!entry || !next) break;\n const relPath = [...at.relPath, field];\n hops.push({\n map: next.mapName,\n model: next.modelName,\n relPath,\n prefix: `${prefix}${parts.slice(0, i + 1).join('.')}`,\n isList: entry.isList === true,\n });\n if (i === parts.length - 1) end = { ...next, relPath: [...relPath] };\n }\n return { hops, end };\n};\n","import { bindRule, listBindings } from '../bindings.ts';\nimport type { Condition, RuleValue } from '../types.ts';\nimport { collectChain, isLens } from './chain.ts';\nimport { isSourceSpec } from './policy.ts';\nimport type {\n Lens,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n NarrowingDefaults,\n SourceEntry,\n} from './types.ts';\n\nconst PARENT_PREFIX = 'parent:';\nconst isParentRef = (name: string): boolean => name.startsWith(PARENT_PREFIX);\nconst baseName = (name: string): string =>\n isParentRef(name) ? name.slice(PARENT_PREFIX.length) : name;\n\ntype Rewrite = (condition: Condition) => Condition;\n\n// A model node's condition slots — its `where`, each source's `where`, and the same through its\n// path relations — listed once. `fn` rewrites each; collecting is a rewrite that keeps them.\nconst mapNodeConditions = <T extends ModelDefaultNarrowing | ModelNarrowing>(\n node: T,\n fn: Rewrite,\n): T => {\n const out = { ...node } as ModelNarrowing;\n if (node.where !== undefined) out.where = fn(node.where);\n if (node.sources) {\n const sources: Record<string, SourceEntry> = {};\n for (const [field, entry] of Object.entries(node.sources))\n sources[field] = isSourceSpec(entry)\n ? entry.where !== undefined\n ? { ...entry, where: fn(entry.where) }\n : entry\n : fn(entry);\n out.sources = sources;\n }\n if ('relations' in node && node.relations) {\n const relations: Record<string, ModelNarrowing> = {};\n for (const [rel, sub] of Object.entries(node.relations))\n relations[rel] = mapNodeConditions(sub, fn);\n out.relations = relations;\n }\n return out as T;\n};\n\n// One narrowing layer's condition slots: its root and every map default's models.\nconst mapLayerConditions = (nrw: LensNarrowing, fn: Rewrite): LensNarrowing => {\n const mapDefaults: Record<string, NarrowingDefaults> = {};\n for (const [mapName, defaults] of Object.entries(nrw.mapDefaults ?? {})) {\n const models: Record<string, ModelDefaultNarrowing> = {};\n for (const [model, node] of Object.entries(defaults.models ?? {}))\n models[model] = mapNodeConditions(node, fn);\n mapDefaults[mapName] = defaults.models ? { ...defaults, models } : defaults;\n }\n return {\n ...nrw,\n root: nrw.root ? mapNodeConditions(nrw.root, fn) : undefined,\n mapDefaults: nrw.mapDefaults ? mapDefaults : undefined,\n };\n};\n\nconst layerConditions = (nrw: LensNarrowing): Condition[] => {\n const out: Condition[] = [];\n mapLayerConditions(nrw, (condition) => {\n out.push(condition);\n return condition;\n });\n return out;\n};\n\n// Bind names a layer *declares* (introduces). `parent:` tokens are inherited\n// references, not declarations.\nconst declaredNames = (nrw: LensNarrowing): Set<string> => {\n const names = new Set<string>();\n for (const cond of layerConditions(nrw))\n for (const name of listBindings(cond)) if (!isParentRef(name)) names.add(name);\n return names;\n};\n\n/**\n * Every bind name a lens (its whole narrowing chain) needs supplied to execute —\n * `bindOptional` tokens are not required (unsupplied, they resolve to null).\n * `parent:` references collapse to their base name — the caller supplies one value\n * per name and an inherited reference draws the same one. This is the \"what does\n * this lens require\" answer; pass `narrowing.parent` to see the names a child must\n * not collide with.\n */\nexport const listLensBindings = (lensOrNarrowing: Lens | LensNarrowing): string[] => {\n const names = new Set<string>();\n for (const nrw of collectChain(lensOrNarrowing))\n for (const cond of layerConditions(nrw))\n for (const name of listBindings(cond, { required: true })) names.add(baseName(name));\n return [...names].sort();\n};\n\n/**\n * Preprocess a lens: resolve every `{ bind }` token the map covers in the chain's\n * `where`/`sources`, returning a structurally-new lens with concrete conditions.\n * Partial — uncovered tokens stay, so stages bind progressively. Once resolved,\n * `narrowRule` / `toPrisma` / `toSql` / `toSourceQueries` / `projectPaths` consume the\n * lens unchanged: a bind needs nothing new downstream. `parent:name` draws the same\n * value as the ancestor's `name`. Does not mutate the input.\n */\nexport const bindLens = (\n lensOrNarrowing: Lens | LensNarrowing,\n bindings: Record<string, RuleValue>,\n): Lens | LensNarrowing => {\n if (isLens(lensOrNarrowing)) return lensOrNarrowing; // a bare lens carries no where/sources\n const effective: Record<string, RuleValue> = { ...bindings };\n for (const [k, v] of Object.entries(bindings)) effective[`${PARENT_PREFIX}${k}`] = v;\n return {\n ...mapLayerConditions(lensOrNarrowing, (condition) => bindRule(condition, effective)),\n parent: bindLens(lensOrNarrowing.parent, bindings),\n };\n};\n\n/**\n * Bind names are unique across a composed chain: a layer may not re-declare a name\n * an ancestor already declares — rename it, or reference the inherited one read-only\n * as `parent:name`. A `parent:name` reference must point at a name some ancestor\n * actually declares. Returns the problems as messages (folded into `validateNarrowing`).\n */\nexport const validateBindNames = (narrowing: LensNarrowing): string[] => {\n const errors: string[] = [];\n const occupied = new Set<string>();\n for (const anc of collectChain(narrowing.parent))\n for (const n of declaredNames(anc)) occupied.add(n);\n\n for (const n of declaredNames(narrowing)) {\n if (occupied.has(n))\n errors.push(\n `bind name '${n}' already declared by an ancestor narrowing — rename it, or reference the inherited one as 'parent:${n}'`,\n );\n }\n\n const refs = new Set<string>();\n for (const cond of layerConditions(narrowing))\n for (const name of listBindings(cond)) if (isParentRef(name)) refs.add(baseName(name));\n for (const r of refs)\n if (!occupied.has(r))\n errors.push(`bind 'parent:${r}' references an inherited binding no ancestor declares`);\n\n return errors;\n};\n","import { isRelationEntry } from '../fieldMap/entry.ts';\nimport { COERCIBLE_KINDS, type FieldKind } from '../operatorCatalog.ts';\nimport { conditionShape, isRelationNode, mapCondition } from '../traverse';\nimport type { Condition } from '../types.ts';\nimport { lensRootScope, resolvePolicy, stepIntoField, type VisitScope } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Stamp coerceType onto every field rule from the lens's field map — the explicit dual of the\n// server's coerceValueForField: the rule carries its coercion, check() never infers types from\n// values. A relation node's condition / filter stamp against the relation's model; below a Json\n// boundary the kind is undeclared, so nothing is stamped. A date rule, an aggregate comparison\n// (numeric by contract) and a rule that already names its coercion are left as they are.\nexport const coerceRule = (\n condition: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): Condition => {\n const policy = resolvePolicy(lensOrNarrowing);\n const step = (field: unknown, scopes: readonly VisitScope[]) =>\n typeof field === 'string' && field !== '' ? stepIntoField(policy, scopes, field) : null;\n return mapCondition<readonly VisitScope[]>(\n condition,\n {\n rewrite: (node, scopes) => {\n if (conditionShape(node) !== 'field' || node.coerceType) return node;\n const at = step(node.field, scopes);\n if (!at || 'issue' in at || !at.walked || at.walked.jsonSubPath.length) return node;\n const { entry } = at.walked;\n return entry.kind === 'scalar' && COERCIBLE_KINDS.includes(entry.type as FieldKind)\n ? { ...node, coerceType: entry.type }\n : node;\n },\n below: (node, scopes) => {\n if (!isRelationNode(node)) return false;\n const at = step(node.field, scopes);\n const entry = at && !('issue' in at) ? at.walked?.entry : undefined;\n return at && !('issue' in at) && entry && isRelationEntry(entry)\n ? [...scopes, at.next]\n : false;\n },\n },\n [lensRootScope(policy)],\n );\n};\n","import { stitchFieldMaps } from '../fieldMap/stitch.ts';\nimport type { Lens } from './types.ts';\n\n/** A lens over field maps, its bridges stitched into the maps as fields. */\nexport const createLens = ({ maps, bridges, mapName, model }: Lens): Lens => ({\n ...stitchFieldMaps({ maps, bridges }),\n mapName,\n model,\n});\n","import { relationsNotValue } from '../errors';\nimport { FieldKind, isFieldKind } from '../operatorCatalog';\nimport type { Rule } from '../types';\nimport type { FieldMap, FieldMapEntry } from './types';\nimport { fieldEntry, type MapWalkResult, walkWith } from './walk';\n\n/**\n * What a field reads, for the operators whose form depends on it: `text` (a String column),\n * `json` (a whole Json column), `json-path` (inside one), `list` (a scalar list), `relation` (a\n * to-one relation, which exists or not), `relations` (a to-many one, which only array operators\n * read), `instant` (a DateTime column), `scalar` (any other column), or `unknown` (no map, or a\n * path the map doesn't declare).\n */\nexport type FieldShape =\n | 'relations'\n | 'enum'\n | 'text'\n | 'json'\n | 'json-path'\n | 'list'\n | 'relation'\n | 'instant'\n | 'scalar'\n | 'unknown';\n\nexport const fieldShape = (walk: MapWalkResult | undefined): FieldShape => {\n if (walk?.kind === 'json-path') return 'json-path';\n if (walk?.kind !== 'direct') return 'unknown';\n if (walk.entry.kind === 'object') return walk.entry.isList ? 'relations' : 'relation';\n if (walk.entry.isList) return 'list';\n if (walk.entry.kind === 'enum') return 'enum';\n return kindShape(walk.entry.type);\n};\n\nconst kindShape = (kind: string): FieldShape => {\n if (kind === FieldKind.Json) return 'json';\n if (kind === FieldKind.Enum) return 'enum';\n if (kind === FieldKind.DateTime) return 'instant';\n return kind === FieldKind.String ? 'text' : 'scalar';\n};\n\n/**\n * Whether the emptiness operators may compare a field against `''`. Only a String (or Json)\n * column takes it — Postgres rejects `''` on a timestamp or integer, Prisma rejects\n * `equals: ''` on DateTime/Int/enum. The field map is the authority, a stamped `coerceType`\n * the fallback; with neither, an untyped field keeps its `''` branch.\n */\nexport const acceptsEmptyString = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n map: FieldMap | undefined,\n model: string | undefined,\n): boolean => {\n const entry = fieldEntry(rule.field, map, model);\n if (entry) return entry.kind === 'scalar' && (entry.type === 'String' || entry.type === 'Json');\n return (\n rule.coerceType === undefined || rule.coerceType === 'String' || rule.coerceType === 'Json'\n );\n};\n\n/** A field or date rule on a to-many relation: rows, which an array operator reads. */\nexport const refuseRelationsValue = (\n field: string,\n map: FieldMap | undefined,\n model: string | undefined,\n): void => {\n if (fieldShape(walkWith(field, map, model)) === 'relations') throw relationsNotValue(field);\n};\n\n/** A shape whose values read as text (an undeclared field may). */\nexport const readsText = (shape: FieldShape | undefined): boolean =>\n shape !== 'scalar' &&\n shape !== 'instant' &&\n shape !== 'list' &&\n shape !== 'enum' &&\n shape !== 'relation' &&\n shape !== 'relations';\n\n/** Whether a case-insensitive comparison applies — text against a string operand (or a list\n * holding one), as check() lowercases only strings. */\nexport const comparesText = (shape: FieldShape | undefined, operand: unknown): boolean =>\n readsText(shape) && holdsString(operand);\n\n// check() lowers strings through lists at any depth.\nconst holdsString = (v: unknown): boolean =>\n typeof v === 'string' || (Array.isArray(v) && v.some(holdsString));\n\n/** A rule's field shape: the map's authority, a stamped `coerceType` the fallback. */\nexport const ruleShape = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n map: FieldMap | undefined,\n model: string | undefined,\n): FieldShape => {\n const shape = fieldShape(walkWith(rule.field, map, model));\n return shape === 'unknown' && rule.coerceType !== undefined ? kindShape(rule.coerceType) : shape;\n};\n\n/** The kind a declared field compares as — undefined where the map does not pin one down:\n * relations, Json (open-ended), scalar lists, and scalar types outside FieldKind. */\nexport const entryKind = (entry: FieldMapEntry): FieldKind | undefined => {\n if (entry.isList) return undefined;\n if (entry.kind === 'enum') return FieldKind.Enum;\n if (entry.kind !== 'scalar' || entry.type === FieldKind.Json) return undefined;\n return isFieldKind(entry.type) ? entry.type : undefined;\n};\n","import { applyCoercion } from './field';\nimport { entryKind } from './fieldMap/shape';\nimport type { MapWalkResult } from './fieldMap/walk';\nimport { COMPILE_COERCED_KINDS, FieldKind, NUMERIC_KINDS } from './operatorCatalog';\nimport type { Rule } from './types';\n\n/** Epoch ms of a DateTime literal through check()'s own DateTime coercion (Date, ISO with or\n * without a zone, day-only, epoch ms or digits; zoneless anchors in UTC) — undefined when it\n * is not a representable instant. The gate and both compilers read dates through this seam. */\nexport const instantMs = (value: unknown, zone?: string): number | undefined => {\n const ms = applyCoercion(value, FieldKind.DateTime, zone);\n return typeof ms === 'number' && !Number.isNaN(new Date(ms).getTime()) ? ms : undefined;\n};\n\n// Prisma takes a Date. toSql takes the zoned ISO string: a pg driver serializes a Date param in\n// the HOST's zone, which a `timestamp` (no time zone) column — Prisma's Postgres default —\n// silently drops; a `...Z` string casts to the same instant on either column type.\nconst toInstant =\n (field: string, target: CompileTarget, zone: string) =>\n (value: unknown): unknown => {\n if (value === null || value === undefined) return value;\n const ms = instantMs(value, zone);\n if (ms === undefined)\n throw new Error(`Invalid date value for DateTime field '${field}': ${String(value)}`);\n return target === 'toPrisma' ? new Date(ms) : new Date(ms).toISOString();\n };\n\ntype CompileTarget = 'toPrisma' | 'toSql';\n\n/**\n * A field rule's comparison value as a compiler must emit it for the column `walk` reached. The\n * compiled query compares the column as stored, so a `coerceType` that overrides the declared\n * kind has no compiled equivalent and throws; a stamp equal to it coerces the literal the way\n * check() does. A DateTime column (declared, or a stamped `coerceType` when no map is passed)\n * gets its literals as instants. A Json sub-path or a scalar list declares no kind: unchanged.\n */\nexport const compileFieldLiteral = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n value: unknown,\n walk: MapWalkResult | undefined,\n target: CompileTarget,\n zone: () => string,\n): unknown => {\n if (value === null || value === undefined || walk?.kind === 'json-path') return value;\n const entry = walk?.kind === 'direct' ? walk.entry : undefined;\n if (entry?.isList) return value;\n const declared = entry ? entryKind(entry) : undefined;\n if (rule.coerceType !== undefined && declared !== undefined && rule.coerceType !== declared)\n throw new Error(\n `coerceType '${rule.coerceType}' overrides ${declared} field '${rule.field}', but ${target} compares the column as stored — evaluate it in memory with check(), or drop the override.`,\n );\n const kind = declared ?? rule.coerceType;\n if (kind === FieldKind.DateTime) {\n const instant = toInstant(rule.field, target, zone());\n return Array.isArray(value) ? value.map(instant) : instant(value);\n }\n // Unstamped, check() compares the literal as written, so a string never equals a number or a\n // boolean column, nor a number or boolean a String one; the compilers would cast it. Refuse it —\n // stamp `coerceType` to compare it.\n if (\n rule.coerceType === undefined &&\n declared === FieldKind.String &&\n (Array.isArray(value) ? value : [value]).some(\n (item) => typeof item === 'number' || typeof item === 'boolean',\n )\n )\n throw new Error(\n `'${rule.field}' is String but the literal is not a string; pass a string, or stamp coerceType: 'String'.`,\n );\n if (\n rule.coerceType === undefined &&\n declared !== undefined &&\n (NUMERIC_KINDS.includes(declared) || declared === FieldKind.Boolean) &&\n (Array.isArray(value) ? value : [value]).some((item) => typeof item === 'string')\n )\n throw new Error(\n `'${rule.field}' is ${declared} but the literal is a string; pass a ${declared === FieldKind.Boolean ? 'boolean' : 'number'}, or stamp coerceType: '${declared}'.`,\n );\n return rule.coerceType !== undefined && COMPILE_COERCED_KINDS.includes(rule.coerceType)\n ? applyCoercion(\n value,\n rule.coerceType,\n rule.coerceType === FieldKind.DateTime ? zone() : undefined,\n )\n : value;\n};\n","import { instantMs } from '../compileLiteral';\nimport { applyCoercion } from '../field';\nimport { isJsonEntry, isRelationEntry } from '../fieldMap/entry.ts';\nimport { entryKind } from '../fieldMap/shape';\nimport type { FieldMapEntry } from '../fieldMap/types';\nimport {\n FieldKind,\n leafCatalogEntry,\n NUMERIC_KINDS,\n SINGLE_VALUE_SHAPES,\n} from '../operatorCatalog';\nimport type { DateRule, Rule } from '../types';\nimport type { ValidationIssue } from '../validate';\n\nconst flatten = (value: unknown): unknown[] =>\n Array.isArray(value) ? value.flatMap(flatten) : [value];\n\n/** A leaf's literal operands, lists flattened. Null when the comparison value is read at\n * evaluation (a `path` or `bind`), unknown at gate time. */\nexport const ruleLiterals = (cond: { value?: unknown }): readonly unknown[] | null =>\n cond.value === undefined ? null : flatten(cond.value);\n\n// A date the compilers can turn into an instant — the seam compileFieldLiteral emits from, so the\n// gate accepts exactly what compiles.\nconst isDate = (v: unknown): boolean => instantMs(v) !== undefined;\n\nconst NUMERIC_STRING = /^-?\\d+(\\.\\d+)?$/;\n\n// What a literal must be to compare against a column of each kind — JSON values only, the\n// ones every rail accepts. Json and Bytes carry no value-taking\n// operator the catalog allows, so any passes.\nconst LITERAL_FIT: Record<FieldKind, { expected: string; fits: (v: unknown) => boolean }> = {\n String: { expected: 'a string', fits: (v) => typeof v === 'string' },\n Enum: { expected: 'a string', fits: (v) => typeof v === 'string' },\n Int: { expected: 'an integer', fits: Number.isSafeInteger },\n // BigInt compares as Int; a stamped digit string fits after coercion, like any Int literal.\n BigInt: { expected: 'an integer', fits: Number.isSafeInteger },\n Float: { expected: 'a number', fits: Number.isFinite },\n // A numeric string is the lossless JSON spelling of a Decimal (what a builder keeps, since\n // Number() would round it); Prisma and Postgres take it as written.\n Decimal: {\n expected: 'a number or a numeric string',\n fits: (v) => Number.isFinite(v) || (typeof v === 'string' && NUMERIC_STRING.test(v)),\n },\n Boolean: { expected: 'a boolean', fits: (v) => typeof v === 'boolean' },\n DateTime: { expected: 'a date', fits: isDate },\n Json: { expected: 'a value', fits: () => true },\n Bytes: { expected: 'a value', fits: () => true },\n};\n\nconst show = (v: unknown): string =>\n typeof v === 'string'\n ? `'${v}'`\n : typeof v === 'object' && v !== null\n ? JSON.stringify(v)\n : String(v);\n\n/**\n * Operator ⇄ kind, then literal ⇄ kind, for a field or date leaf. The kind is the rule's\n * `coerceType` when set, else the declared entry's; unknown means nothing to gate. With a\n * `coerceType` the literal fits as written or after check()'s own coercion — the coercion\n * compileFieldLiteral applies too, so every rail compares the same value.\n */\nexport const leafFitViolations = (\n cond: Rule | DateRule,\n declared: FieldKind | undefined,\n): ValidationIssue[] => {\n const coerceType = 'coerceType' in cond ? cond.coerceType : undefined;\n const kind = coerceType ?? declared;\n if (kind === undefined || kind === FieldKind.Json) return [];\n\n const op = 'operator' in cond ? cond.operator : cond.dateOperator;\n const entry = leafCatalogEntry(cond);\n if (!entry) return [];\n\n const coerced = coerceType !== undefined && coerceType !== declared;\n const label = coerced\n ? `field '${cond.field}' coerced to ${kind}`\n : `${kind} field '${cond.field}'`;\n\n if (!entry.kinds.includes(kind)) {\n return [\n {\n path: cond.field,\n code: 'operator_kind_mismatch',\n message: `operator '${op}' does not apply to ${label} (applies to: ${entry.kinds.join(', ')})`,\n },\n ];\n }\n\n // An offset is arithmetic on the field's kind: a number on a numeric field, a rolling shift\n // on a DateTime.\n if (cond.offset !== undefined) {\n const shiftable =\n 'dateOperator' in cond ? kind === FieldKind.DateTime : NUMERIC_KINDS.includes(kind);\n if (!shiftable)\n return [\n {\n path: cond.field,\n code: 'invalid_offset',\n message: `an offset does not apply to ${label}`,\n },\n ];\n }\n\n // Date-rule values are validateRule's (grammar-level, kind-independent); a regex pattern is\n // not a column value.\n if ('dateOperator' in cond || entry.valueShape === 'none' || entry.valueShape === 'pattern')\n return [];\n\n if (SINGLE_VALUE_SHAPES.includes(entry.valueShape) && Array.isArray(cond.value)) {\n return [\n {\n path: cond.field,\n code: 'invalid_value_shape',\n message: `operator '${op}' compares one value, but ${label} was given a list`,\n },\n ];\n }\n\n const { expected, fits } = LITERAL_FIT[kind];\n // A coercion that refuses its input (a BigInt past ±2^53) is a misfit, reported — never thrown.\n const coercedFits = (v: unknown): boolean => {\n try {\n return fits(applyCoercion(v, kind));\n } catch {\n return false;\n }\n };\n const fitsAsCompiled = (v: unknown): boolean =>\n fits(v) || (coerceType !== undefined && coercedFits(v));\n return (ruleLiterals(cond) ?? [])\n .filter((v) => v !== null && !fitsAsCompiled(v))\n .map((v) => ({\n path: cond.field,\n code: 'invalid_value',\n message: `value ${show(v)} does not fit ${label} (expected ${expected})`,\n }));\n};\n\n/** An array operator iterates its field, so the field must be a list: a to-many relation or\n * bridge, a scalar list, or a Json column (elements undeclared). */\nexport const arrayFitViolation = (\n field: string,\n arrayOperator: string,\n entry: FieldMapEntry,\n): ValidationIssue | null => {\n if (entry.isList === true || isJsonEntry(entry)) return null;\n const message = isRelationEntry(entry)\n ? `arrayOperator '${arrayOperator}' needs a list, but '${field}' is a to-one relation — a single related record; address its fields directly (e.g. '${field}.<field>')`\n : `arrayOperator '${arrayOperator}' needs a list, but '${field}' is a single ${entryKind(entry) ?? entry.type} value`;\n return { path: field, code: 'invalid_array_operator', message };\n};\n","import { ambiguousCondition, relationNotValue, relationsNotValue } from '../errors';\nimport { isExistenceTest } from '../field';\nimport { isRelationEntry } from '../fieldMap/entry.ts';\nimport { entryKind } from '../fieldMap/shape';\nimport type { FieldMapEntry } from '../fieldMap/types';\nimport { INTEGER_KINDS, NUMERIC_KINDS } from '../operatorCatalog';\nimport { parseScopeRef, readScopeRef } from '../scope';\nimport {\n conditionShape,\n elementRefs,\n isLogicalNode,\n valueRefRoles,\n visitCondition,\n} from '../traverse';\nimport type { Condition, DateRule, Rule } from '../types';\nimport { type ValidationIssue, type ValidationResult, validationResult } from '../validate';\nimport { arrayFitViolation, leafFitViolations, ruleLiterals } from './fieldFit.ts';\nimport type { Policy } from './policy.ts';\nimport {\n allowedEnumValues,\n type LensWalk,\n lensPathEnd,\n lensRootScope,\n resolvePolicy,\n stepIntoField,\n type VisitScope,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nconst visit = (\n rule: Condition,\n policy: Policy,\n root: VisitScope,\n issues: ValidationIssue[],\n): void =>\n visitCondition<readonly VisitScope[]>(\n rule,\n (node, scopes) => {\n // A node of two kinds evaluates as one or the other depending on the rail; the gate\n // refuses it rather than vouch for half of it.\n const kind = conditionShape(node as Record<string, unknown>);\n if (kind === null) {\n issues.push({\n path: typeof node.field === 'string' ? node.field : '',\n code: 'ambiguous_condition',\n message: ambiguousCondition().message,\n });\n return false;\n }\n if (isLogicalNode(node)) return;\n const cond = node as unknown as Exclude<Condition, boolean>;\n\n // A bare ref resolves at the current visit; `$`-prefixed refs count scopes up the stack.\n const scopeFor = (ref: string): { scope: VisitScope; field: string } | null => {\n const target = readScopeRef(ref, scopes);\n if ('outOfBounds' in target) {\n issues.push({ path: ref, code: 'scope_out_of_bounds', message: target.outOfBounds });\n return null;\n }\n return { scope: target.scope, field: target.path };\n };\n\n let next: VisitScope = scopes[scopes.length - 1];\n let fieldOk = true;\n let walked: LensWalk | null = null;\n if ('field' in cond && typeof cond.field === 'string' && cond.field !== '') {\n const step = stepIntoField(policy, scopes, cond.field);\n if ('issue' in step) {\n issues.push({ path: cond.field, ...step.issue });\n fieldOk = false;\n } else {\n ({ next, walked } = step);\n }\n }\n const terminalEntry: FieldMapEntry | null = walked?.entry ?? null;\n const terminalFieldName = walked?.terminalFieldName ?? null;\n const terminalIsEnum = walked?.entry.kind === 'enum';\n const terminalEnumType = walked?.entry.type ?? null;\n // Below a Json boundary the value is undeclared, so the column's own allowed set says\n // nothing about it — only gate a path that ends ON the declared entry.\n const terminalAllowedValues =\n walked && walked.jsonSubPath.length === 0\n ? allowedEnumValues(walked.terminalEffect, walked.terminalFieldName)\n : null;\n\n // Gate every value-side ref — the RHS `path`, an offset `{ path }`, each magnitude `{ path }` —\n // the same way the LHS `field` is gated; otherwise a rule can reference outside the lens\n // through its comparison value. Prefixed refs resolve at the scope they name; bare refs are\n // root/context refs (resolve at the lens anchor). Inside an open scope a prefixed ref points\n // into the JSON value, so there is nothing to resolve — a root ref is still gated. An amount\n // reads a number, and a calendar unit's amount a whole number.\n for (const { ref, role } of valueRefRoles(cond as Record<string, unknown>)) {\n const target = parseScopeRef(ref)\n ? scopeFor(ref)\n : { scope: lensRootScope(policy), field: ref };\n if (!target || target.scope.open) continue;\n const walked = lensPathEnd(policy, target.scope, target.field);\n if (!walked) {\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message:\n role === 'value'\n ? 'path (comparison ref) does not resolve through the narrowed lens'\n : 'offset or magnitude ref does not resolve through the narrowed lens',\n });\n continue;\n }\n // A ref reads a column; a relation is rows, which the grant and the field's picks don't\n // scope.\n if (isRelationEntry(walked.entry)) {\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: 'a value ref reads a column, not a relation',\n });\n continue;\n }\n const kind = entryKind(walked.entry);\n if (role === 'value' || role === 'shift' || kind === undefined) continue;\n const fits = role === 'whole' ? INTEGER_KINDS.includes(kind) : NUMERIC_KINDS.includes(kind);\n if (!fits)\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: `${role === 'whole' ? 'a calendar unit reads a whole number' : 'an offset or magnitude reads a number'}, not ${kind}`,\n });\n }\n\n if (!fieldOk) return false;\n\n // An array operator iterates its field. On a non-list the node cannot evaluate, and its\n // `condition`/`filter` have no element scope to resolve against — report it and stop.\n if ('arrayOperator' in cond && typeof cond.field === 'string' && terminalEntry) {\n const misfit = arrayFitViolation(cond.field, cond.arrayOperator, terminalEntry);\n if (misfit) {\n issues.push(misfit);\n return false;\n }\n }\n\n // A relation is rows, not a value: a to-many one takes an array operator, a to-one one\n // exists or doesn't.\n if (\n terminalEntry &&\n isRelationEntry(terminalEntry) &&\n (kind === 'field' || kind === 'date') &&\n (terminalEntry.isList || !isExistenceTest(cond as Rule))\n ) {\n const field = (cond as Rule).field;\n issues.push({\n path: field,\n code: 'operator_kind_mismatch',\n message: (terminalEntry.isList ? relationsNotValue(field) : relationNotValue(field))\n .message,\n });\n return false;\n }\n\n // Operator and literal against the field's kind (an aggregate's operator compares the\n // aggregate, not the field).\n // A scalar list's elements carry the kind (a stamp names it), but its operators test the list.\n if (!terminalEntry?.isList && (kind === 'field' || kind === 'date')) {\n issues.push(\n ...leafFitViolations(\n cond as Rule | DateRule,\n terminalEntry ? entryKind(terminalEntry) : undefined,\n ),\n );\n }\n\n // The fields a relation node orders or aggregates by read its elements.\n if (!next.open)\n for (const ref of elementRefs(cond as Record<string, unknown>)) {\n if (ref !== '' && !lensPathEnd(policy, next, ref))\n issues.push({\n path: ref,\n code: 'not_in_lens',\n message: 'an orderBy or aggregate field does not resolve through the narrowed lens',\n });\n }\n\n // Value-set validation for leaf rules. Fires whenever the field carries an\n // allowed set — an enum (registry/narrowed) or any other kind with explicit\n // `values`.\n if (terminalAllowedValues && 'operator' in cond && terminalFieldName) {\n const literals = ruleLiterals(cond as { value?: unknown; path?: unknown });\n if (literals) {\n const allowed = new Set(terminalAllowedValues);\n const scope = terminalIsEnum\n ? `enum '${terminalEnumType}'`\n : `field '${terminalFieldName}'`;\n for (const v of literals) {\n if (typeof v === 'string' && !allowed.has(v)) {\n issues.push({\n path: terminalFieldName,\n code: 'value_not_allowed',\n message: `value '${v}' is not in the allowed set for ${scope} (allowed: ${[...allowed].join(', ')})`,\n });\n }\n }\n }\n }\n\n return [...scopes, next];\n },\n [root],\n );\n\n/**\n * Gate a condition whose `field` refs are relative to the visit (mapName, modelName, relPath)\n * of `policy` — the shape of a narrowing `where` anchored at a relation node or a model\n * default. The policy keeps its real anchor, so a bare `path` ref still resolves at the lens\n * root (check()'s root context) and a `$.` ref at the visit. Internal to the lens layer.\n */\nexport const checkConditionAtVisit = (\n cond: Condition,\n policy: Policy,\n mapName: string,\n modelName: string,\n relPath: readonly string[],\n): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n visit(cond, policy, { mapName, modelName, relPath, open: false }, issues);\n return issues;\n};\n\n/** Gate a rule against a lens: every field and value-side ref resolves through it, and every\n * operator, value and amount fits the field it reaches. */\nexport const validateRuleInLens = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): ValidationResult => {\n const policy = resolvePolicy(lensOrNarrowing);\n return validationResult(\n checkConditionAtVisit(rule, policy, policy.lens.mapName, policy.lens.model, []),\n );\n};\n","import { ALL_TARGETS, type RuleTarget } from '../operatorCatalog';\nimport { isLogicalNode, visitCondition } from '../traverse';\nimport type { Condition } from '../types';\nimport { type ValidationIssue, validateRule } from '../validate';\nimport type { Policy } from './policy.ts';\nimport { lensRootScope, resolvePolicy, stepIntoField, type VisitScope } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\nimport { validateRuleInLens } from './validateRuleInLens.ts';\n\nexport type RuleDescription = {\n sources: string[];\n bridgesCrossed: boolean;\n supportedTargets: RuleTarget[];\n /** What the lens refuses in the rule — validateRuleInLens's issues. */\n errors: ValidationIssue[];\n};\n\ntype Acc = {\n policy: Policy;\n sources: Set<string>;\n bridgesCrossed: boolean;\n};\n\nconst visit = (rule: Condition, acc: Acc): void =>\n visitCondition<readonly VisitScope[]>(\n rule,\n (node, scopes) => {\n acc.sources.add(scopes[scopes.length - 1].mapName);\n if (isLogicalNode(node)) return;\n if (typeof node.field !== 'string' || node.field === '') return;\n const step = stepIntoField(acc.policy, scopes, node.field);\n if ('issue' in step) return false;\n if (step.walked) {\n acc.sources.add(step.walked.mapName);\n if (step.walked.entry.kind === 'bridge' || step.walked.mapName !== step.from.mapName)\n acc.bridgesCrossed = true;\n }\n // `filter` and `condition` are both evaluated against the descended target.\n return [...scopes, step.next];\n },\n [lensRootScope(acc.policy)],\n );\n\nexport const describeRule = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): RuleDescription => {\n const policy = resolvePolicy(lensOrNarrowing);\n const acc: Acc = { policy, sources: new Set(), bridgesCrossed: false };\n visit(rule, acc);\n // A target takes the rule when validateRule passes it there; a bridge joins only in memory.\n return {\n sources: [...acc.sources].sort(),\n bridgesCrossed: acc.bridgesCrossed,\n supportedTargets: ALL_TARGETS.filter(\n (target) => (target === 'check' || !acc.bridgesCrossed) && validateRule(rule, { target }).ok,\n ),\n errors: validateRuleInLens(rule, lensOrNarrowing).errors,\n };\n};\n","import { leafCatalogEntry, ValueShape } from '../operatorCatalog';\nimport { readScopeRef } from '../scope';\nimport {\n type ConditionNode,\n isLogicalNode,\n isRelationNode,\n leafSources,\n visitCondition,\n} from '../traverse.ts';\nimport type { Condition, RuleValue } from '../types.ts';\nimport { ruleLiterals } from './fieldFit.ts';\nimport { lensPathEnd, resolvePolicy } from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * The values one rule compares at one declared source — keyed the way `projectPaths`\n * keys a source (`path` + `field`), so the caller can join it back to the source's\n * model without spelling a path of its own. A `mapDefaults`-declared source resolves\n * wherever its model appears, so `path` may name a relation chain the narrowing never\n * spelled under `root.relations`; the dotted format is the same.\n */\nexport type RuleSourceDescription = {\n path: string;\n mapName: string;\n model: string;\n field: string;\n /** Every literal a leaf at this source named; list operators flattened, deduped by content. */\n values: RuleValue[];\n /**\n * The set of values cannot be enumerated from literals: a leaf read a value at evaluation\n * (a `path` / `bind` on its comparison value, an offset or an amount) or moved it by an offset, used an operator that describes values without naming them\n * (substring, pattern, range, date window), or used an operator the catalog does not\n * know. A caller deciding anything from `values` must fail closed.\n */\n dynamic: boolean;\n};\n\n/** Shapes whose `value` IS the named value(s): a literal, an ordered literal, a list, a\n * day list, or a date literal / point expression. Everything else describes values\n * without enumerating them. */\nconst ENUMERABLE_SHAPES = new Set<string>([\n ValueShape.scalar,\n ValueShape.ordered,\n ValueShape.array,\n ValueShape.dayList,\n ValueShape.dateValue,\n]);\n\n/** Shapes whose `value` is not about the field's values at all (a flag, a cardinality). */\nconst VALUELESS_SHAPES = new Set<string>([ValueShape.none, ValueShape.count]);\n\ntype Contribution = { values: RuleValue[]; dynamic: boolean };\n\nconst contribution = (node: ConditionNode): Contribution => {\n // A value read at evaluation — a path or bind anywhere on the leaf, its comparison value, an\n // offset or an amount — or an offset moving a literal: the literal doesn't name the value.\n if (\n node.offset !== undefined ||\n leafSources(node).some(({ source }) => source.value === undefined)\n )\n return { values: [], dynamic: true };\n const entry = leafCatalogEntry(node);\n if (!entry) return { values: [], dynamic: true };\n if (VALUELESS_SHAPES.has(entry.valueShape)) return { values: [], dynamic: false };\n if (!ENUMERABLE_SHAPES.has(entry.valueShape)) return { values: [], dynamic: true };\n if (!('value' in node)) return { values: [], dynamic: false };\n return { values: (ruleLiterals(node) ?? []) as RuleValue[], dynamic: false };\n};\n\nconst dedupeKey = (value: RuleValue): string => {\n if (value instanceof Date) return `d:${+value}`;\n if (value instanceof RegExp) return `r:${value}`;\n if (typeof value === 'object' && value !== null) return `j:${JSON.stringify(value)}`;\n return `p:${typeof value}:${String(value)}`;\n};\n\n/**\n * Which values a rule names at each source the lens declares — the lens owns the\n * vocabulary, so it answers questions about it; callers never spell a path. A leaf reaches a\n * source by its absolute path through the lens: nested (`{ field: 'orders', arrayOperator,\n * condition: { field: 'sku' } }`) and dotted (`{ field: 'orders.sku' }`) spellings are one path,\n * resolved by `lensPathEnd` — visibility, `mapDefaults`, and the Json boundary all apply, so a\n * source declared in `mapDefaults` answers wherever its model appears. Quantifier-blind on\n * purpose — a `none` relation names its value as much as an `any` one, `notIn` as much as `in` —\n * but shape-aware via the operator catalog: only literal-naming shapes contribute `values`;\n * substring / pattern / range / window operators, and operators the catalog does not know, mark\n * the source `dynamic` instead of inventing values. A relation node's own comparison (an\n * aggregate's threshold, an array `count`) belongs to the node, not to a source. Paths invisible\n * under the lens, unmapped segments, and sub-paths beneath a Json column are silent.\n */\nexport const describeRuleSources = (\n rule: Condition,\n lensOrNarrowing: Lens | LensNarrowing,\n): RuleSourceDescription[] => {\n const policy = resolvePolicy(lensOrNarrowing);\n const root = policy.lens.model;\n const out = new Map<string, RuleSourceDescription>();\n // Each entry's literal keys, so a large `in` list dedupes in linear time.\n const seenKeys = new Map<string, Set<string>>();\n\n const record = (segments: string[], node: ConditionNode): void => {\n if (segments.length === 0) return;\n const resolved = lensPathEnd(\n policy,\n { mapName: policy.lens.mapName, modelName: root, relPath: [] },\n segments.join('.'),\n );\n if (!resolved || resolved.jsonSubPath.length > 0) return;\n const { mapName, modelName, relPath, terminalEffect, terminalFieldName } = resolved;\n if (!terminalEffect.sources.has(terminalFieldName)) return;\n\n const path = [root, ...relPath].join('.');\n const key = `${path}|${terminalFieldName}`;\n let entry = out.get(key);\n if (!entry) {\n entry = {\n path,\n mapName,\n model: modelName,\n field: terminalFieldName,\n values: [],\n dynamic: false,\n };\n out.set(key, entry);\n }\n const found = contribution(node);\n if (found.dynamic) entry.dynamic = true;\n const seen = seenKeys.get(key) ?? new Set<string>();\n seenKeys.set(key, seen);\n for (const literal of found.values) {\n const literalKey = dedupeKey(literal);\n if (seen.has(literalKey)) continue;\n seen.add(literalKey);\n entry.values.push(literal);\n }\n };\n\n // The scope is the stack of absolute anchors, innermost last; a `$`-prefixed field anchors at\n // the scope it names. An out-of-bounds ref anchors nowhere and is silent.\n const anchorOf = (field: string, prefixes: readonly string[][]): string[] | undefined => {\n const target = readScopeRef(field, prefixes);\n if ('outOfBounds' in target) return undefined;\n return [...target.scope, ...target.path.split('.')];\n };\n visitCondition<readonly string[][]>(\n rule,\n (node, prefixes) => {\n if (isLogicalNode(node)) return;\n const anchor =\n typeof node.field === 'string' ? anchorOf(node.field, prefixes) : prefixes.at(-1);\n if (!anchor) return false;\n if (!isRelationNode(node) && typeof node.field === 'string') record(anchor, node);\n return [...prefixes, anchor];\n },\n [[]],\n );\n return [...out.values()];\n};\n","import type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { modelOf } from '../own';\n\nconst findReverseRelation = (\n map: FieldMap,\n targetModel: string,\n currentModel: string,\n relationName?: string,\n): FieldMapEntry | null => {\n const targetEntry = modelOf(map, targetModel);\n if (!targetEntry) return null;\n\n for (const fieldDef of Object.values(targetEntry.fields)) {\n if (\n fieldDef.kind === 'object' &&\n fieldDef.type === currentModel &&\n (fieldDef.fromFields?.length ?? 0) > 0 &&\n (fieldDef.toFields?.length ?? 0) > 0 &&\n (relationName === undefined || fieldDef.relationName === relationName)\n ) {\n return fieldDef;\n }\n }\n return null;\n};\n\n/**\n * The column pairs that link a model to the target of one of its relations — `here` on the\n * model, `there` on the target — from the relation's own FK (forward) or its reverse side\n * (back-relation). Null when the map doesn't say. A composite FK has several pairs.\n */\nexport const relationKeys = (\n map: FieldMap,\n model: string,\n entry: FieldMapEntry,\n): { here: string; there: string }[] | null => {\n if (entry.fromFields?.length)\n return entry.fromFields.map((from, i) => ({ here: from, there: entry.toFields?.[i] ?? 'id' }));\n const reverse = findReverseRelation(map, entry.type, model, entry.relationName);\n if (!reverse?.fromFields?.length) return null;\n return reverse.fromFields.map((from, i) => ({\n here: reverse.toFields?.[i] ?? 'id',\n there: from,\n }));\n};\n\n/** The relation on `entry`'s target that points back at `model` — the same relation seen from\n * the other side (matched by `relationName` when the map gives one). Null when the map doesn't\n * declare it, or several fields could be it. */\nexport const inverseRelation = (\n map: FieldMap,\n model: string,\n field: string,\n entry: FieldMapEntry,\n): { field: string; entry: FieldMapEntry } | null => {\n // Without a relation name the other side can't be told apart from another relation between the\n // same models: none, rather than a guess (a grant carried through it would scope wrong rows).\n if (entry.relationName === undefined) return null;\n const candidates = Object.entries(modelOf(map, entry.type)?.fields ?? {}).filter(\n ([name, other]) =>\n other.kind === 'object' &&\n other.type === model &&\n other.relationName === entry.relationName &&\n !(entry.type === model && name === field),\n );\n return candidates.length === 1 ? { field: candidates[0][0], entry: candidates[0][1] } : null;\n};\n","import type { FieldMapEntry, ModelEntry, SourceOption } from '../fieldMap/types';\nimport { type MapVisit, relationTargetOf } from '../fieldMap/walk.ts';\nimport { own } from '../own';\nimport type { Condition } from '../types.ts';\nimport {\n isFieldVisible,\n type Policy,\n resolvePolicy,\n resolveVisit,\n sourceReadsVisible,\n type VisitEffect,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nexport type ProjectedVisit = {\n mapName: string;\n model: string;\n fields: Record<string, FieldMapEntry>;\n whereClauses: Condition[];\n /** Per-field source eligibility wheres, composed across layers (general + path). */\n sources: Record<string, Condition[]>;\n /** Per-field display label for a sourced field (from a SourceSpec's `label`): a sibling\n * column or a dotted to-one path. */\n sourceLabels: Record<string, string>;\n /** Per-field option-partition axes for a sourced field (from a SourceSpec's `groupBy`). */\n sourceGroupBys: Record<string, string[]>;\n};\n\n/** Each declared path's projected visit, keyed by dotted path from the lens model. */\nexport type PathProjection = Record<string, ProjectedVisit>;\n\n/**\n * The materialized option set for one sourced field — the fetched companion to a\n * serializable lens. Its `options` are `{ value, label? }` pairs (the standard\n * `<select>` shape); it feeds both projections: `projectPaths` keys by\n * `path`+`field` (exact), `projectModels` by `mapName`+`model`+`field` (union).\n */\nexport type SourceValues = {\n path: string;\n mapName: string;\n model: string;\n field: string;\n options: readonly SourceOption[];\n};\n\nexport type ProjectLensOptions = { sourceValues?: readonly SourceValues[] };\n\n/**\n * One visit's fields as the lens exposes them: the visible fields, a value-gated field carrying\n * its allowed `values`, fetched source `options` attached, and a grouped source's `groupBy` axes.\n * Both projections build their fields through it.\n */\nexport const projectFields = (\n policy: Policy,\n effect: VisitEffect,\n at: MapVisit,\n model: ModelEntry,\n fetched: (field: string) => readonly SourceOption[] | undefined,\n): Record<string, FieldMapEntry> => {\n const fields: Record<string, FieldMapEntry> = {};\n for (const [fieldName, entry] of Object.entries(model.fields)) {\n if (!isFieldVisible(effect, fieldName)) continue;\n const values = effect.enumValuesByField.get(fieldName);\n // Options never offer a value the lens disallows, whatever was fetched.\n const options = fetched(fieldName)?.filter(\n (o) => values === undefined || values.includes(o.value),\n );\n // Axes a layer hides drop, as they do from the visit's sourceGroupBys.\n const groupBy = sourceReadsVisible(policy, effect, at, fieldName, 'groupBy')\n ? effect.sourceGroupBys.get(fieldName)\n : undefined;\n fields[fieldName] = {\n ...entry,\n ...(values !== undefined && { values }),\n ...(options !== undefined && { options }),\n ...(groupBy !== undefined && { groupBy }),\n };\n }\n return fields;\n};\n\nexport const projectPaths = (\n lensOrNarrowing: Lens | LensNarrowing,\n opts: ProjectLensOptions = {},\n): PathProjection => {\n const policy = resolvePolicy(lensOrNarrowing);\n const out: PathProjection = {};\n\n const fetchedByPathField = new Map<string, readonly SourceOption[]>();\n for (const sv of opts.sourceValues ?? []) {\n fetchedByPathField.set(`${sv.path}|${sv.field}`, sv.options);\n }\n\n const visit = (\n mapName: string,\n modelName: string,\n relPath: string[],\n dottedPath: string,\n ): void => {\n if (Object.hasOwn(out, dottedPath)) return;\n const model = own(own(policy.lens.maps, mapName)?.models ?? {}, modelName);\n if (!model) return;\n\n const effect = resolveVisit(policy, mapName, modelName, relPath);\n\n // A sourced field's fetched pairs win; otherwise a value-gated field surfaces its resolved\n // allowed-set as options, so every selectable field exposes `options`.\n const at = { mapName, modelName, relPath };\n const fields = projectFields(policy, effect, at, model, (field) => {\n const fetched = fetchedByPathField.get(`${dottedPath}|${field}`);\n const values = effect.enumValuesByField.get(field);\n return fetched ?? values?.map((value) => ({ value, label: value }));\n });\n\n const sources: Record<string, Condition[]> = {};\n for (const [fieldName, clauses] of effect.sources) {\n if (isFieldVisible(effect, fieldName)) sources[fieldName] = clauses;\n }\n\n const sourceLabels: Record<string, string> = {};\n for (const [fieldName, label] of effect.sourceLabels) {\n if (\n isFieldVisible(effect, fieldName) &&\n sourceReadsVisible(policy, effect, at, fieldName, 'label')\n )\n sourceLabels[fieldName] = label;\n }\n\n const sourceGroupBys: Record<string, string[]> = {};\n for (const [fieldName, groupBy] of effect.sourceGroupBys) {\n if (\n isFieldVisible(effect, fieldName) &&\n sourceReadsVisible(policy, effect, at, fieldName, 'groupBy')\n )\n sourceGroupBys[fieldName] = groupBy;\n }\n\n out[dottedPath] = {\n mapName,\n model: modelName,\n fields,\n whereClauses: effect.whereClauses,\n sources,\n sourceLabels,\n sourceGroupBys,\n };\n\n for (const relField of effect.relations.keys()) {\n // A relation this visit hides is not projected, as projectModels skips it.\n if (!isFieldVisible(effect, relField)) continue;\n const entry = own(model.fields, relField);\n if (!entry) continue;\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n visit(target.mapName, target.modelName, [...relPath, relField], `${dottedPath}.${relField}`);\n }\n };\n\n visit(policy.lens.mapName, policy.lens.model, [], policy.lens.model);\n return out;\n};\n","import type { SourceOption } from '../fieldMap/types';\nimport { fieldOf, own } from '../own';\nimport { readOwnPath } from '../scope';\nimport { inverseRelation } from '../toPrisma/relationUtils';\nimport { allOf, visitCondition } from '../traverse';\nimport type { Condition, Row } from '../types';\nimport { prefixConditionFields } from './narrowRule.ts';\nimport { type Policy, relationHops, resolvePolicy, resolveVisit } from './policy.ts';\nimport type { ProjectedVisit } from './projectPaths.ts';\nimport { projectPaths } from './projectPaths.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * Fold the traversal guards one dotted path picks up: every traversed model's\n * effective narrowing `where` (tenancy/soft-delete) — declared relation nodes AND\n * mapDefaults, composed across all layers via `resolveVisit` — re-rooted onto the\n * sourced model, the same hop-where fold `narrowRule` performs for rule paths. The\n * compile always joins every hop the path names, so every hop must carry its guard\n * whether or not the narrowing declares it.\n *\n * `strict` (a materialization path — a groupBy axis or a dotted label; its value\n * names which): an unresolvable hop is fail-closed — throw.\n * Lenient (`null`, where-clause field paths): stop at the first non-relation segment\n * (a plain column, or a Json column with a sub-path tail) — no join past it exists.\n * `seen` dedups hops shared across paths: one guard fold per traversed node.\n */\nconst foldPathGuards = (\n policy: Policy,\n mapName: string,\n modelName: string,\n baseRelPath: readonly string[],\n dotted: string,\n strict: 'groupBy' | 'label' | null,\n seen: Set<string>,\n out: Condition[],\n): void => {\n const segments = dotted.split('.');\n // The last segment is the column; guards live on the traversed models.\n const { hops } = relationHops(\n policy.lens.maps,\n { mapName, modelName, relPath: baseRelPath },\n dotted,\n );\n const crossed = hops.filter((_, i) => i < segments.length - 1);\n if (strict && crossed.length < segments.length - 1) {\n const hop = segments[crossed.length];\n const on = crossed.at(-1)?.model ?? modelName;\n throw new Error(\n `${strict} '${dotted}': hop '${hop}' is not a resolvable relation on '${on}' — cannot guard its join`,\n );\n }\n for (const hop of crossed) {\n const hopKey = hop.relPath.join('.');\n if (seen.has(hopKey)) continue;\n seen.add(hopKey);\n const effect = resolveVisit(policy, hop.map, hop.model, hop.relPath);\n // A to-many hop has no single row to AND its grant against: fail closed, as narrowRule does.\n if (hop.isList && effect.whereClauses.length)\n throw new Error(\n `source path '${dotted}': cannot enforce the grant on to-many relation '${hop.prefix}' in a dotted path`,\n );\n for (const where of effect.whereClauses) out.push(prefixConditionFields(where, hop.prefix));\n }\n};\n\n/** Every dotted `field` a condition references. Relation nodes contribute their own\n * anchor `field`; their nested conditions are element-relative and compile inside the\n * relation filter, not as new joins from this model, so descent stops there. */\nconst collectFieldPaths = (condition: Condition): string[] => {\n const out: string[] = [];\n visitCondition(condition, (node) => {\n if (typeof node.field === 'string') out.push(node.field);\n return false;\n });\n return out;\n};\n\n/**\n * The composed traversal guards for one source: guards for every groupBy axis and\n * for a dotted label path (both strict — they name joins the select ships), and for\n * every relation path its `where` clauses reference (lenient) — the where ships\n * those joins just as surely as the group select does. Hops are folded once each\n * across all paths, so a label sharing a prefix with an axis costs no extra guard.\n */\nconst traversalGuards = (\n policy: Policy,\n mapName: string,\n modelName: string,\n baseRelPath: readonly string[],\n axes: readonly string[],\n whereClauses: readonly Condition[],\n label?: string,\n): Condition[] => {\n const out: Condition[] = [];\n const seen = new Set<string>();\n for (const axis of axes)\n foldPathGuards(policy, mapName, modelName, baseRelPath, axis, 'groupBy', seen, out);\n if (label?.includes('.'))\n foldPathGuards(policy, mapName, modelName, baseRelPath, label, 'label', seen, out);\n for (const clause of whereClauses) {\n for (const path of collectFieldPaths(clause)) {\n if (path.includes('.'))\n foldPathGuards(policy, mapName, modelName, baseRelPath, path, null, seen, out);\n }\n }\n return out;\n};\n\n/** Walk a dotted to-one path through nested row objects; undefined when unreachable.\n * Serves both materialization paths a source declares: a groupBy axis and a dotted label. */\nexport const groupAtPath = (row: Row, path: string): string | undefined => {\n const value = readOwnPath(row, path);\n return value == null || typeof value === 'object' ? undefined : String(value);\n};\n\n/** Resolve every axis for a row — all-or-nothing: any unreachable axis leaves the\n * option ungrouped. A partial key would make partition pins unpredictable. */\nexport const groupsAtPaths = (row: Row, paths: readonly string[]): string[] | undefined => {\n const out: string[] = [];\n for (const path of paths) {\n const value = groupAtPath(row, path);\n if (value === undefined) return undefined;\n out.push(value);\n }\n return out;\n};\n\n/** Dedup key — options are unique per (groups, value), not per value. */\nexport const optionKey = (groups: readonly string[] | undefined, value: string): string =>\n JSON.stringify([groups ?? null, value]);\n\n/** Merge one occurrence into the accumulator; the first non-null label wins. */\nconst accumulateOption = (\n byKey: Map<string, SourceOption>,\n value: string,\n label: string | undefined,\n groups: string[] | undefined,\n): void => {\n const key = optionKey(groups, value);\n const existing = byKey.get(key);\n if (existing === undefined) {\n byKey.set(key, {\n value,\n ...(label !== undefined ? { label } : {}),\n ...(groups !== undefined ? { groups } : {}),\n });\n } else if (existing.label === undefined && label !== undefined) {\n byKey.set(key, { ...existing, label });\n }\n};\n\n/** One fetched row's options: each non-null scalar value of `field` (one per element of a\n * scalar list), carrying the row's label and groups. */\nexport const accumulateRow = (\n byKey: Map<string, SourceOption>,\n row: Row,\n field: string,\n label: unknown,\n groups: string[] | undefined,\n): void => {\n const raw = readOwnPath(row, field);\n const rowLabel = label == null ? undefined : String(label);\n for (const value of Array.isArray(raw) ? raw : [raw]) {\n if (value == null || typeof value === 'object') continue;\n accumulateOption(byKey, String(value), rowLabel, groups);\n }\n};\n\n// Fixed locale: host-locale sorting would make option order machine-dependent.\n// Ungrouped options are their own leading tier — an empty-string DB label is a\n// real group and must never interleave with \"no group\". Grouped options order by\n// their axes lexicographically, then label/value.\nexport const sortOptions = (byKey: Map<string, SourceOption>): SourceOption[] =>\n [...byKey.values()].sort((a, b) => {\n const tier = (a.groups === undefined ? 0 : 1) - (b.groups === undefined ? 0 : 1);\n if (tier !== 0) return tier;\n const ga = a.groups ?? [];\n const gb = b.groups ?? [];\n for (let i = 0; i < Math.max(ga.length, gb.length); i++) {\n const cmp = (ga[i] ?? '').localeCompare(gb[i] ?? '', 'en', { numeric: true });\n if (cmp !== 0) return cmp;\n }\n return (a.label ?? a.value).localeCompare(b.label ?? b.value, 'en', { numeric: true });\n });\n\n/** One sourced field to materialize: where it sits, its label and axes, and its eligibility —\n * its source where(s), the guards of every relation they or the label / axes cross, and, for a\n * value-gated field, the values the lens allows. */\nexport type SourcePlan = {\n path: string;\n visit: ProjectedVisit;\n field: string;\n label?: string;\n groupBy?: string[];\n eligibility: Condition[];\n};\n\n/** Every sourced field the lens projects, planned once for both materializers. */\n/**\n * The grants of every visit above a source's own, as conditions on the source's rows: each\n * ancestor's `where` carried down through the inverse of the hop below it — a to-one inverse by\n * prefixing its fields, a to-many one through `any`. An option list never offers what the rows\n * under the grant don't hold, so a grant no inverse can carry (none declared, a bridge, a path\n * ref) offers nothing.\n */\nconst ancestorGrants = (policy: Policy, relPath: readonly string[]): Condition[] => {\n if (relPath.length === 0) return [];\n const root = { mapName: policy.lens.mapName, modelName: policy.lens.model, relPath: [] };\n const { hops, end } = relationHops(policy.lens.maps, root, relPath.join('.'));\n if (!end) return [false];\n const visits = [root, ...hops.map((hop) => ({ mapName: hop.map, modelName: hop.model }))];\n let carried: Condition | null = null;\n for (let level = 0; level < relPath.length; level++) {\n const at = visits[level];\n const declared = resolveVisit(\n policy,\n at.mapName,\n at.modelName,\n relPath.slice(0, level),\n ).whereClauses;\n const grants = carried === null ? declared : [...declared, carried];\n if (grants.length === 0) {\n carried = null;\n continue;\n }\n const map = own(policy.lens.maps, at.mapName);\n const entry = map && fieldOf(map, at.modelName, relPath[level]);\n const inverse =\n map && entry && entry.kind === 'object' && visits[level + 1].mapName === at.mapName\n ? inverseRelation(map, at.modelName, relPath[level], entry)\n : null;\n if (!inverse) return [false];\n const here = allOf(grants);\n try {\n carried = inverse.entry.isList\n ? ({ field: inverse.field, arrayOperator: 'any', condition: here } as Condition)\n : allOf([\n { field: inverse.field, operator: 'exists' } as Condition,\n prefixConditionFields(here, inverse.field),\n ]);\n } catch {\n return [false];\n }\n }\n return carried === null ? [] : [carried];\n};\n\nexport const sourcePlans = (lensOrNarrowing: Lens | LensNarrowing): SourcePlan[] => {\n const policy = resolvePolicy(lensOrNarrowing);\n return Object.entries(projectPaths(lensOrNarrowing)).flatMap(([path, visit]) =>\n Object.entries(visit.sources).map(([field, sourceClauses]) => {\n const label = own(visit.sourceLabels, field);\n const groupBy = own(visit.sourceGroupBys, field);\n const relPath = path.split('.').slice(1);\n const guards = traversalGuards(\n policy,\n visit.mapName,\n visit.model,\n relPath,\n groupBy ?? [],\n sourceClauses,\n label,\n );\n const allowed = own(visit.fields, field)?.values;\n const above = ancestorGrants(policy, relPath);\n return {\n path,\n visit,\n field,\n ...(label !== undefined && { label }),\n ...(groupBy !== undefined && { groupBy }),\n eligibility: [\n ...above,\n ...sourceClauses,\n ...guards,\n ...(allowed ? [{ field, operator: 'in', value: [...allowed] } as Condition] : []),\n ],\n };\n }),\n );\n};\n","import type { SourceOption } from '../fieldMap/types';\nimport type { Row } from '../types';\nimport type { SourceValues } from './projectPaths.ts';\nimport { accumulateRow, groupAtPath, groupsAtPaths, sortOptions } from './sourceOptions.ts';\nimport type { SourceQuery } from './toSourceQueries.ts';\n\n/** Which executor produced the rows — the caller always knows; never guessed. */\nexport type SourceRowShape = 'prisma' | 'sql';\n\n/**\n * Materialize one compiled `SourceQuery`'s fetched rows into its `SourceValues` —\n * the executor-side counterpart of `toSourceQueries`, so apps never hand-map rows.\n * `rowShape` names the wire format: prisma rows (default) nest each `groupBy` axis\n * (and a dotted `label`) as related objects; sql rows carry them flat under the\n * statement's `__group_i` / `__label` aliases. Grouped queries fetch without\n * DISTINCT, so dedup per (groups, value) happens here.\n */\n/** `rowShape`: how the rows came back — nested Prisma rows (the default) or flat SQL rows. */\nexport type MaterializeSourceQueryOptions = { rowShape?: SourceRowShape };\n\nexport const materializeSourceQuery = (\n query: SourceQuery,\n rows: readonly Row[],\n opts: MaterializeSourceQueryOptions = {},\n): SourceValues => {\n const rowShape = opts.rowShape ?? 'prisma';\n const byKey = new Map<string, SourceOption>();\n for (const row of rows) {\n // A dotted label and the axes ride the two wire formats: nested in prisma rows, flat\n // under the statement's `__label` / `__group_i` aliases in sql rows.\n const flat = rowShape === 'sql';\n accumulateRow(\n byKey,\n row,\n query.field,\n query.label === undefined\n ? undefined\n : flat && query.label.includes('.')\n ? row.__label\n : groupAtPath(row, query.label),\n query.groupBy === undefined\n ? undefined\n : groupsAtPaths(row, flat ? query.groupBy.map((_, i) => `__group_${i}`) : query.groupBy),\n );\n }\n return {\n path: query.path,\n mapName: query.mapName,\n model: query.model,\n field: query.field,\n options: sortOptions(byKey),\n };\n};\n","import { type CheckOptions, check } from '../check.ts';\nimport type { SourceOption } from '../fieldMap/types';\nimport { readOwnPath } from '../scope';\nimport { allOf } from '../traverse';\nimport type { Row } from '../types';\nimport type { SourceValues } from './projectPaths.ts';\nimport {\n accumulateRow,\n groupAtPath,\n groupsAtPaths,\n sortOptions,\n sourcePlans,\n} from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n// Rows anchored at a projection path: segments after the root model name descend\n// relations, flattening to-many arrays (mirrors the joins a SourceQuery would emit).\nconst rowsAtPath = (rows: readonly Row[], path: string): Row[] => {\n let current: Row[] = [...rows];\n for (const segment of path.split('.').slice(1)) {\n const next: Row[] = [];\n for (const row of current) {\n const value = readOwnPath(row, segment);\n if (Array.isArray(value)) next.push(...(value as Row[]));\n else if (value != null) next.push(value as Row);\n }\n current = next;\n }\n return current;\n};\n\n/**\n * Materialize each sourced field's option set from an already-fetched collection —\n * the in-memory executor of `sources` declarations, alongside `toSourceQueries`\n * (which compiles the same declarations to DISTINCT queries for a DB). Rows are\n * the collection fetched under the lens (relations inline). Each row must meet the field's\n * eligibility as `toSourceQueries` composes it — its source `where`, the grants above it, the\n * guards of the relations it crosses and any allowed values — evaluated with `check()`\n * (`options` feeds `{bind}` clauses). Scalar-list fields contribute one\n * option per element, labels take the first non-null value of the label column\n * (a sibling, or a dotted to-one path read through the nested rows), and sorting is\n * numeric-aware in a fixed locale. Feed the result to `projectLens` as `{ sourceValues }`.\n */\nexport const materializeSources = (\n lensOrNarrowing: Lens | LensNarrowing,\n rows: readonly Row[],\n options?: CheckOptions,\n): SourceValues[] =>\n sourcePlans(lensOrNarrowing).map(({ path, visit, field, label, groupBy, eligibility }) => {\n const where = allOf(eligibility);\n const byKey = new Map<string, SourceOption>();\n for (const row of rowsAtPath(rows, path)) {\n if (check(where, row, options) !== true) continue;\n // A dotted label reads through the same nested rows a groupBy axis does; an\n // unreachable axis (null hop) leaves the option ungrouped, never partial.\n accumulateRow(\n byKey,\n row,\n field,\n label === undefined ? undefined : groupAtPath(row, label),\n groupBy === undefined ? undefined : groupsAtPaths(row, groupBy),\n );\n }\n return {\n path,\n mapName: visit.mapName,\n model: visit.model,\n field,\n options: sortOptions(byKey),\n };\n });\n","import { declaredEnumValues, isRelationEntry } from '../fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { relationTargetOf } from '../fieldMap/walk.ts';\nimport { fieldOf, modelOf, own } from '../own';\nimport type { Condition } from '../types.ts';\nimport {\n throwIfInvalid,\n type ValidationIssue,\n type ValidationResult,\n validationResult,\n} from '../validate';\nimport { validateBindNames } from './bindings.ts';\nimport { collectChain, getRoot } from './chain.ts';\nimport {\n allowedEnumValues,\n augmentPicksWithRelations,\n intersectStringSet,\n normalizeGroupBy,\n normalizeSource,\n OFF_PATH,\n type Policy,\n relationHops,\n resolvePolicy,\n resolveVisit,\n sourceReadsVisible,\n} from './policy.ts';\nimport { projectPaths } from './projectPaths.ts';\nimport type {\n EnumNarrowing,\n LensNarrowing,\n ModelDefaultNarrowing,\n ModelNarrowing,\n} from './types.ts';\nimport { checkConditionAtVisit } from './validateRuleInLens.ts';\n\n/** A visit of the PARENT surface a `where` is validated at: the where's own model, reached\n * at `relPath` (a declared path, `[]` for the anchor, or `OFF_PATH` for the model-intrinsic\n * visit a model default gets everywhere else). */\ntype WhereVisit = { mapName: string; modelName: string; relPath: readonly string[] };\n\n// A where filters incoming rows, so its refs must resolve on the parent surface at the visit it\n// is anchored to — never against this layer's own picks/omits, and never against a re-anchored\n// lens: the policy keeps its real root so a bare `path` ref (check()'s root context) is gated at\n// the lens anchor while `field` and `$.` refs are gated at the visit.\nconst validateWhere = (\n condition: Condition | undefined,\n parentPolicy: Policy,\n visits: readonly WhereVisit[],\n position: string,\n errors: ValidationIssue[],\n): void => {\n if (condition === undefined) return;\n const seen = new Set<string>();\n for (const { mapName, modelName, relPath } of visits) {\n for (const v of checkConditionAtVisit(condition, parentPolicy, mapName, modelName, relPath)) {\n // The gate's own code carries through: what is wrong, not only that something is.\n const message = `'${v.path}' ${v.message}`;\n if (seen.has(message)) continue;\n seen.add(message);\n errors.push({ path: position, code: v.code, message });\n }\n }\n};\n\n// A label or axis is client-visible option data: at every visit the node applies to, it may read\n// only what the layers after its earliest declaration show (`sourceReadsVisible`, the rule\n// projectLens enforces). The declaring layer itself stays free — visibility ≠ materialization\n// within one layer.\nconst validateSourceTargetVisibility = (\n narrowing: ModelNarrowing | ModelDefaultNarrowing,\n current: LensNarrowing,\n parentPolicy: Policy,\n visits: readonly WhereVisit[],\n position: string,\n errors: ValidationIssue[],\n): void => {\n const policy: Policy = { lens: parentPolicy.lens, chain: [...parentPolicy.chain, current] };\n const reported = new Set<string>();\n for (const at of visits) {\n const effect = resolveVisit(policy, at.mapName, at.modelName, at.relPath);\n for (const [field, entry] of Object.entries(narrowing.sources ?? {})) {\n const spec = normalizeSource(entry);\n for (const kind of ['label', 'groupBy'] as const) {\n if (spec[kind] === undefined || reported.has(`${field}|${kind}`)) continue;\n if (sourceReadsVisible(policy, effect, at, field, kind)) continue;\n reported.add(`${field}|${kind}`);\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${kind} '${String(spec[kind])}' reads a column hidden by another layer`,\n });\n }\n }\n }\n};\n\n// A materialization path — a groupBy axis or a dotted label — descends to-one relations\n// only and must land on a scalar/enum column. `kind` names it in the error.\nconst toOnePathError = (\n path: string,\n maps: Record<string, FieldMap>,\n mapName: string,\n modelName: string,\n kind: 'groupBy' | 'label',\n): string | null => {\n const segments = path.split('.');\n const { hops } = relationHops(maps, { mapName, modelName, relPath: [] }, path);\n const toMany = hops.find((hop, i) => hop.isList && i < segments.length - 1);\n if (toMany) return `${kind} cannot traverse to-many relation '${segments[hops.indexOf(toMany)]}'`;\n if (hops.length === segments.length)\n return `${kind} must end on a scalar column, '${segments.at(-1)}' is a relation`;\n const at = hops.at(-1) ?? { map: mapName, model: modelName };\n const seg = segments[hops.length];\n const entry = fieldOf(own(maps, at.map), at.model, seg);\n if (!entry) return `${kind} segment '${seg}' not on model '${at.model}'`;\n if (isRelationEntry(entry)) return `${kind} relation '${seg}' has no resolvable target`;\n return hops.length === segments.length - 1 ? null : `${kind} segment '${seg}' is not a relation`;\n};\n\n// Why a field a layer names is already hidden: an ancestor's picks leave it out (a relation it\n// narrows counts as picked) or its omits drop it, or a path node's own-layer defaults do.\nconst hiddenBy = (\n field: string,\n ancestors: readonly ModelNarrowing[],\n defaults: ModelDefaultNarrowing | undefined,\n): string | null => {\n for (const anc of ancestors) {\n const picks = augmentPicksWithRelations(anc);\n if (picks && !picks.includes(field)) return \"not in ancestor's picks\";\n if (anc.omits?.includes(field)) return 'was omitted by ancestor';\n }\n if (defaults?.picks && !defaults.picks.includes(field)) return 'not visible from defaults.picks';\n if (defaults?.omits?.includes(field)) return 'already excluded by defaults';\n return null;\n};\n\nconst validateModelNode = (\n narrowing: ModelNarrowing | ModelDefaultNarrowing,\n ancestorChain: ModelNarrowing[],\n sameLayerDefaults: ModelDefaultNarrowing | undefined,\n maps: Record<string, FieldMap>,\n mapName: string,\n modelFields: Record<string, FieldMapEntry>,\n modelName: string,\n enumRegistry: Record<string, readonly string[]> | undefined,\n position: string,\n errors: ValidationIssue[],\n parentPolicy: Policy,\n whereVisits: readonly WhereVisit[],\n isDefault = false,\n): void => {\n if (narrowing.picks && narrowing.omits) {\n errors.push({\n path: `${position}`,\n code: 'conflicting_selection',\n message: `cannot specify both picks and omits`,\n });\n }\n\n if (isDefault && 'relations' in narrowing && (narrowing as ModelNarrowing).relations) {\n errors.push({\n path: `${position}`,\n code: 'invalid_source',\n message: `defaults cannot declare 'relations' — relations are path-specific only`,\n });\n }\n\n for (const kind of ['picks', 'omits'] as const)\n for (const f of narrowing[kind] ?? []) {\n if (!own(modelFields, f)) {\n errors.push({\n path: `${position}.${kind}`,\n code: 'not_in_lens',\n message: `field '${f}' not on model`,\n });\n continue;\n }\n const hidden = hiddenBy(f, ancestorChain, isDefault ? undefined : sameLayerDefaults);\n if (hidden)\n errors.push({\n path: `${position}.${kind}`,\n code: 'not_visible',\n message: `'${f}' ${hidden}`,\n });\n }\n\n const validateEnumOp = (\n op: 'enumPicks' | 'enumOmits',\n fieldName: string,\n values: readonly string[],\n ): void => {\n const fieldEntry = own(modelFields, fieldName);\n if (!fieldEntry) {\n errors.push({\n path: `${position}.${op}`,\n code: 'not_in_lens',\n message: `field '${fieldName}' not on model`,\n });\n return;\n }\n if (fieldEntry.kind !== 'enum') {\n errors.push({\n path: `${position}.${op}`,\n code: 'wrong_kind',\n message: `field '${fieldName}' is not an enum field`,\n });\n return;\n }\n const registry = declaredEnumValues(fieldEntry, enumRegistry);\n for (const v of values) {\n if (registry && !registry.includes(v)) {\n errors.push({\n path: `${position}.${op}.${fieldName}`,\n code: 'value_not_allowed',\n message: `'${v}' is not a known value of enum '${fieldEntry.type}'`,\n });\n }\n }\n };\n for (const [field, vals] of Object.entries(narrowing.enumPicks ?? {})) {\n validateEnumOp('enumPicks', field, vals);\n }\n for (const [field, vals] of Object.entries(narrowing.enumOmits ?? {})) {\n validateEnumOp('enumOmits', field, vals);\n }\n\n validateWhere(narrowing.where, parentPolicy, whereVisits, `${position}.where`, errors);\n\n for (const [field, entry] of Object.entries(narrowing.sources ?? {})) {\n if (!own(modelFields, field)) {\n errors.push({\n path: `${position}.sources`,\n code: 'not_in_lens',\n message: `field '${field}' not on model`,\n });\n continue;\n }\n const spec = normalizeSource(entry);\n const dottedLabel = spec.label?.includes('.') ? spec.label : undefined;\n if (spec.label !== undefined) {\n if (dottedLabel) {\n const err = toOnePathError(dottedLabel, maps, mapName, modelName, 'label');\n if (err)\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${err}`,\n });\n } else if (!own(modelFields, spec.label)) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'not_in_lens',\n message: `label column '${spec.label}' not on model`,\n });\n }\n }\n const axes = normalizeGroupBy(spec.groupBy);\n // The sql compile aliases each axis column '__group_i' and a dotted label '__label' —\n // a source selecting a real column of that shape would clobber it in flat rows.\n if (axes !== undefined || dottedLabel !== undefined) {\n const reserved = /^__(group(_\\d+)?|label)$/;\n if (reserved.test(field) || (spec.label !== undefined && reserved.test(spec.label))) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `'__group*' / '__label' names are reserved on grouped or path-labeled sources (sql column aliases)`,\n });\n }\n }\n if (axes !== undefined) {\n for (const axis of axes) {\n const err = toOnePathError(axis, maps, mapName, modelName, 'groupBy');\n if (err)\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'invalid_source',\n message: `${err}`,\n });\n }\n // where/sources compose AND-only across layers; divergent axes would\n // silently re-partition an ancestor's option namespace — fail loud instead.\n const axesKey = JSON.stringify(axes);\n for (const anc of ancestorChain) {\n const ancEntry = own(anc.sources, field);\n if (ancEntry === undefined) continue;\n const ancAxes = normalizeGroupBy(normalizeSource(ancEntry).groupBy);\n if (ancAxes !== undefined && JSON.stringify(ancAxes) !== axesKey) {\n errors.push({\n path: `${position}.sources.${field}`,\n code: 'not_visible',\n message: `groupBy [${axes}] conflicts with an ancestor layer's groupBy [${ancAxes}]`,\n });\n }\n }\n }\n validateWhere(spec.where, parentPolicy, whereVisits, `${position}.sources.${field}`, errors);\n }\n};\n\nconst validateDefaultsEnums = (\n mapName: string,\n defaultsEnums: Record<string, EnumNarrowing>,\n enumRegistry: Record<string, readonly string[]> | undefined,\n ancestorEnumNarrowings: Array<Record<string, EnumNarrowing>>,\n errors: ValidationIssue[],\n): void => {\n for (const [enumName, enumN] of Object.entries(defaultsEnums)) {\n const registryVals = own(enumRegistry, enumName);\n if (!registryVals) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}`,\n code: 'not_in_lens',\n message: `enum not in registry`,\n });\n continue;\n }\n let inheritedPicks: Set<string> | null = null;\n const inheritedOmits = new Set<string>();\n for (const anc of ancestorEnumNarrowings) {\n const a = anc[enumName];\n if (!a) continue;\n if (a.picks) inheritedPicks = intersectStringSet(inheritedPicks, a.picks);\n if (a.omits) for (const v of a.omits) inheritedOmits.add(v);\n }\n const isInheritedVisible = (v: string): boolean => {\n if (inheritedOmits.has(v)) return false;\n if (inheritedPicks && !inheritedPicks.has(v)) return false;\n return true;\n };\n for (const v of enumN.picks ?? []) {\n if (!registryVals.includes(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.picks`,\n code: 'value_not_allowed',\n message: `'${v}' not a known value`,\n });\n } else if (!isInheritedVisible(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.picks`,\n code: 'not_visible',\n message: `'${v}' not visible from ancestors`,\n });\n }\n }\n for (const v of enumN.omits ?? []) {\n if (!registryVals.includes(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.omits`,\n code: 'value_not_allowed',\n message: `'${v}' not a known value`,\n });\n } else if (!isInheritedVisible(v)) {\n errors.push({\n path: `mapDefaults.${mapName}.enums.${enumName}.omits`,\n code: 'not_visible',\n message: `'${v}' already excluded by ancestors`,\n });\n }\n }\n }\n};\n\n// A layer's enumPicks / enumOmits name only values its inheritance still shows — the allowed\n// set resolveVisit folds at the visit from `inherited` (the layers above, and for a path node this\n// layer's own defaults). A value the enum doesn't declare is validateEnumOp's to report.\nconst validateEnumInheritance = (\n narrowing: ModelDefaultNarrowing | ModelNarrowing,\n inherited: Policy,\n at: WhereVisit,\n modelFields: Record<string, FieldMapEntry>,\n enumRegistry: Record<string, readonly string[]> | undefined,\n position: string,\n errors: ValidationIssue[],\n): void => {\n const effect = resolveVisit(inherited, at.mapName, at.modelName, at.relPath);\n for (const op of ['enumPicks', 'enumOmits'] as const)\n for (const [field, values] of Object.entries(narrowing[op] ?? {})) {\n const entry = own(modelFields, field);\n if (entry?.kind !== 'enum') continue;\n const declared = declaredEnumValues(entry, enumRegistry) ?? [];\n const allowed = allowedEnumValues(effect, field) ?? declared;\n for (const v of values)\n if (declared.includes(v) && !allowed.includes(v))\n errors.push({\n path: `${position}.${op}.${field}`,\n code: 'not_visible',\n message: `'${v}' is not visible (not allowed by the inherited enum narrowing)`,\n });\n }\n};\n\nconst validatePathNarrowing = (\n narrowing: ModelNarrowing,\n ancestorChain: ModelNarrowing[],\n current: LensNarrowing,\n chain: LensNarrowing[],\n maps: Record<string, FieldMap>,\n mapName: string,\n modelName: string,\n position: string,\n errors: ValidationIssue[],\n parentPolicy: Policy,\n relPath: readonly string[],\n): void => {\n const fieldMap = own(maps, mapName);\n const model = modelOf(fieldMap, modelName);\n if (!model) return;\n\n const sameLayerDefaultsForModel = own(own(current.mapDefaults, mapName)?.models, modelName);\n const ancestorDefaultsForModel = chain\n .map((a) => own(own(a.mapDefaults, mapName)?.models, modelName))\n .filter((x): x is ModelDefaultNarrowing => x !== undefined);\n const synthAncestors = [\n ...ancestorDefaultsForModel.map((d) => d as ModelNarrowing),\n ...ancestorChain,\n ];\n\n validateModelNode(\n narrowing,\n synthAncestors,\n sameLayerDefaultsForModel,\n maps,\n mapName,\n model.fields,\n modelName,\n fieldMap?.enums,\n position,\n errors,\n parentPolicy,\n [{ mapName, modelName, relPath }],\n false,\n );\n\n validateEnumInheritance(\n narrowing,\n {\n lens: parentPolicy.lens,\n chain: [...parentPolicy.chain, { parent: current.parent, mapDefaults: current.mapDefaults }],\n },\n { mapName, modelName, relPath },\n model.fields,\n fieldMap?.enums,\n position,\n errors,\n );\n\n validateSourceTargetVisibility(\n narrowing,\n current,\n parentPolicy,\n [{ mapName, modelName, relPath }],\n position,\n errors,\n );\n\n for (const [relField, sub] of Object.entries(narrowing.relations ?? {})) {\n const entry = own(model.fields, relField);\n if (!entry) {\n errors.push({\n path: `${position}.relations`,\n code: 'not_in_lens',\n message: `'${relField}' not on model`,\n });\n continue;\n }\n if (!isRelationEntry(entry)) {\n errors.push({\n path: `${position}.relations`,\n code: 'wrong_kind',\n message: `'${relField}' is not a relation (kind=${entry.kind})`,\n });\n continue;\n }\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n if (!modelOf(own(maps, target.mapName), target.modelName)) {\n errors.push({\n path: `${position}.relations.${relField}`,\n code: 'not_in_lens',\n message: `target model not found in lens`,\n });\n continue;\n }\n const childAncestorChain = ancestorChain\n .map((anc) => own(anc.relations, relField))\n .filter((x): x is ModelNarrowing => x !== undefined);\n validatePathNarrowing(\n sub,\n childAncestorChain,\n current,\n chain,\n maps,\n target.mapName,\n target.modelName,\n `${position}.relations.${relField}`,\n errors,\n parentPolicy,\n [...relPath, relField],\n );\n }\n};\n\nexport const validateNarrowing = (narrowing: LensNarrowing): ValidationResult => {\n const errors: ValidationIssue[] = [];\n const set = getRoot(narrowing);\n const ancestors = collectChain(narrowing.parent);\n const parentPolicy = resolvePolicy(narrowing.parent);\n const parentVisits = projectPaths(narrowing.parent);\n\n for (const [mapName, defaults] of Object.entries(narrowing.mapDefaults ?? {})) {\n const fieldMap = own(set.maps, mapName);\n if (!fieldMap) {\n errors.push({ path: `mapDefaults.${mapName}`, code: 'not_in_lens', message: `not in lens` });\n continue;\n }\n\n const ancestorDefaultsEnums = ancestors\n .map((anc) => own(anc.mapDefaults, mapName)?.enums)\n .filter((x): x is NonNullable<typeof x> => x !== undefined);\n\n for (const [modelName, dflt] of Object.entries(defaults.models ?? {})) {\n const model = modelOf(fieldMap, modelName);\n if (!model) {\n errors.push({\n path: `mapDefaults.${mapName}.models.${modelName}`,\n code: 'not_in_lens',\n message: `not in fieldMap`,\n });\n continue;\n }\n const ancestorDefaultsForModel = ancestors\n .map((anc) => own(own(anc.mapDefaults, mapName)?.models, modelName))\n .filter((x): x is ModelDefaultNarrowing => x !== undefined);\n // A model default applies at EVERY visit of the model: the model-intrinsic (off-path)\n // visit plus each path the parent declares for it, so its where must resolve at all.\n const whereVisits: WhereVisit[] = [{ mapName, modelName, relPath: OFF_PATH }];\n for (const [path, visit] of Object.entries(parentVisits)) {\n if (visit.mapName === mapName && visit.model === modelName) {\n whereVisits.push({ mapName, modelName, relPath: path.split('.').slice(1) });\n }\n }\n validateModelNode(\n dflt,\n ancestorDefaultsForModel as ModelNarrowing[],\n undefined,\n set.maps,\n mapName,\n model.fields,\n modelName,\n fieldMap.enums,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n parentPolicy,\n whereVisits,\n true,\n );\n validateEnumInheritance(\n dflt,\n parentPolicy,\n { mapName, modelName, relPath: OFF_PATH },\n model.fields,\n fieldMap.enums,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n );\n validateSourceTargetVisibility(\n dflt,\n narrowing,\n parentPolicy,\n whereVisits,\n `mapDefaults.${mapName}.models.${modelName}`,\n errors,\n );\n }\n\n if (defaults.enums) {\n validateDefaultsEnums(mapName, defaults.enums, fieldMap.enums, ancestorDefaultsEnums, errors);\n }\n }\n\n if (narrowing.root) {\n const lensMapName = set.mapName;\n const lensModel = set.model;\n const fieldMap = own(set.maps, lensMapName);\n if (!fieldMap) {\n errors.push({\n path: `root`,\n code: 'not_in_lens',\n message: `lens map '${lensMapName}' not in lens`,\n });\n } else if (!modelOf(fieldMap, lensModel)) {\n errors.push({\n path: `root`,\n code: 'not_in_lens',\n message: `lens model '${lensModel}' not in fieldMap`,\n });\n } else {\n const ancestorChainForRoot = ancestors\n .map((anc) => anc.root)\n .filter((x): x is ModelNarrowing => x !== undefined);\n validatePathNarrowing(\n narrowing.root,\n ancestorChainForRoot,\n narrowing,\n ancestors,\n set.maps,\n lensMapName,\n lensModel,\n 'root',\n errors,\n parentPolicy,\n [],\n );\n }\n }\n\n for (const message of validateBindNames(narrowing))\n errors.push({ path: 'bindings', code: 'invalid_binding', message });\n\n return validationResult(errors);\n};\n\nexport const assertValidNarrowing = (narrowing: LensNarrowing): void =>\n throwIfInvalid(validateNarrowing(narrowing), 'validateNarrowing');\n","import { endpointKey } from '../fieldMap/endpointKey.ts';\nimport { isRelationEntry } from '../fieldMap/entry.ts';\nimport type { Bridge, FieldMap, FieldMapEntry, FieldMapSet, SourceOption } from '../fieldMap/types';\nimport { relationTargetOf } from '../fieldMap/walk.ts';\nimport { fieldOf, modelOf, own } from '../own';\nimport { OFF_PATH, type Policy, resolvePolicy, resolveVisit } from './policy.ts';\nimport { type ProjectLensOptions, projectFields } from './projectPaths.ts';\nimport { optionKey } from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nconst modelKey = (mapName: string, modelName: string): string => `${mapName}::${modelName}`;\n\ntype SurfaceModel = { mapName: string; modelName: string; fields: Map<string, FieldMapEntry> };\n\nconst unionFieldInto = (\n fields: Map<string, FieldMapEntry>,\n name: string,\n entry: FieldMapEntry,\n): void => {\n const existing = fields.get(name);\n if (!existing) {\n fields.set(name, entry.values ? { ...entry, values: [...entry.values] } : entry);\n return;\n }\n let next = existing;\n if (entry.values && existing.values) {\n const merged = new Set([...existing.values, ...entry.values]);\n next = { ...next, values: [...merged] };\n } else if (!entry.values && existing.values) {\n next = { ...next, values: undefined };\n }\n // A later visit may carry the partition axes an earlier (e.g. off-path) visit\n // lacked; divergence was already rejected before this merge.\n if (entry.groupBy !== undefined && next.groupBy === undefined) {\n next = { ...next, groupBy: entry.groupBy };\n }\n if (next !== existing) fields.set(name, next);\n};\n\n// Leak-safe total exposed surface of a narrowed lens, as a Lens. See docs/LENS.md.\nexport const projectModels = (\n lensOrNarrowing: Lens | LensNarrowing,\n opts: ProjectLensOptions = {},\n): Lens => {\n const policy: Policy = resolvePolicy(lensOrNarrowing);\n const { lens } = policy;\n\n // Per-model union of fetched options (the flattened surface collapses paths):\n // dedup by (group, value) across paths — the same key the materializers use —\n // so a grouped field's partition survives the union; a later occurrence wins.\n const fetchedByModelField = new Map<string, Map<string, SourceOption>>();\n for (const sv of opts.sourceValues ?? []) {\n const k = `${sv.mapName}::${sv.model}::${sv.field}`;\n const byKey = fetchedByModelField.get(k) ?? new Map<string, SourceOption>();\n for (const o of sv.options) byKey.set(optionKey(o.groups, o.value), o);\n fetchedByModelField.set(k, byKey);\n }\n\n const surface = new Map<string, SurfaceModel>();\n const visitedDeclared = new Set<string>();\n const visitedOffPath = new Set<string>();\n\n type Visit = {\n mapName: string;\n modelName: string;\n relPath: readonly string[];\n declared: boolean;\n };\n const queue: Visit[] = [\n { mapName: lens.mapName, modelName: lens.model, relPath: [], declared: true },\n ];\n\n while (queue.length > 0) {\n const { mapName, modelName, relPath, declared } = queue.shift() as Visit;\n const model = modelOf(own(lens.maps, mapName), modelName);\n if (!model) continue;\n\n const key = modelKey(mapName, modelName);\n if (declared) {\n const dkey = `${key}::${relPath.join('.')}`;\n if (visitedDeclared.has(dkey)) continue;\n visitedDeclared.add(dkey);\n } else {\n if (visitedOffPath.has(key)) continue;\n visitedOffPath.add(key);\n }\n\n const effect = resolveVisit(policy, mapName, modelName, declared ? relPath : OFF_PATH);\n\n let acc = surface.get(key);\n if (!acc) {\n acc = { mapName, modelName, fields: new Map() };\n surface.set(key, acc);\n }\n\n const at = { mapName, modelName, relPath: declared ? relPath : OFF_PATH };\n const fields = projectFields(policy, effect, at, model, (field) => {\n const fetched = fetchedByModelField.get(`${mapName}::${modelName}::${field}`);\n return fetched && [...fetched.values()];\n });\n for (const [fieldName, nextEntry] of Object.entries(fields)) {\n const entry = nextEntry;\n // The surface flattens per model: two paths grouping one field by DIFFERENT axes would\n // union two incompatible partition namespaces — fail loud instead of merging them.\n const axes = nextEntry.groupBy;\n const existing = acc.fields.get(fieldName)?.groupBy;\n if (\n axes !== undefined &&\n existing !== undefined &&\n JSON.stringify(existing) !== JSON.stringify(axes)\n )\n throw new Error(\n `projectLens: '${modelName}.${fieldName}' is grouped by different axes on different paths ([${existing}] vs [${axes}]) — one surface field cannot carry two partition namespaces`,\n );\n unionFieldInto(acc.fields, fieldName, nextEntry);\n\n if (isRelationEntry(entry)) {\n const target = relationTargetOf(entry, mapName);\n if (!target) continue;\n if (declared && effect.relations.has(fieldName)) {\n queue.push({\n mapName: target.mapName,\n modelName: target.modelName,\n relPath: [...relPath, fieldName],\n declared: true,\n });\n } else {\n queue.push({\n mapName: target.mapName,\n modelName: target.modelName,\n relPath: [],\n declared: false,\n });\n }\n }\n }\n }\n\n const maps: Record<string, FieldMap> = {};\n for (const { mapName, modelName, fields } of surface.values()) {\n let surfaceMap = own(maps, mapName);\n if (!surfaceMap) {\n surfaceMap = { models: {} };\n maps[mapName] = surfaceMap;\n }\n const fieldRecord: Record<string, FieldMapEntry> = {};\n const enumValuesByType = new Map<string, Set<string>>();\n for (const [name, entry] of fields) {\n // A sourced field already carries fetched `options`; otherwise a value-gated\n // field surfaces its (unioned) allowed-set as options, so every selectable\n // field exposes `options` uniformly. `values` stays as the validation input.\n fieldRecord[name] =\n entry.options === undefined && entry.values\n ? { ...entry, options: entry.values.map((v) => ({ value: v, label: v })) }\n : entry;\n if (entry.kind === 'enum' && entry.values) {\n const set = enumValuesByType.get(entry.type) ?? new Set<string>();\n for (const v of entry.values) set.add(v);\n enumValuesByType.set(entry.type, set);\n }\n }\n surfaceMap.models[modelName] = {\n ...modelOf(own(lens.maps, mapName), modelName),\n fields: fieldRecord,\n };\n\n for (const [enumType, values] of enumValuesByType) {\n surfaceMap.enums ??= {};\n surfaceMap.enums[enumType] = [...values];\n }\n }\n\n // Keep a bridge only if one of its injected bridge-fields survived (else it\n // touches unexposed surface and its `on` keys would leak).\n const bridges: Bridge[] | undefined = lens.bridges?.filter((b) => {\n const [a, bb] = b.endpoints;\n const aExposesB = fieldOf(own(maps, a.fieldMap), a.model, endpointKey(bb));\n const bExposesA = fieldOf(own(maps, bb.fieldMap), bb.model, endpointKey(a));\n return aExposesB !== undefined || bExposesA !== undefined;\n });\n\n const result: FieldMapSet = { maps };\n if (bridges && bridges.length > 0) result.bridges = bridges;\n\n return { ...result, mapName: lens.mapName, model: lens.model };\n};\n","import { projectModels } from './projectModels.ts';\nimport { type PathProjection, type ProjectLensOptions, projectPaths } from './projectPaths.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * What a narrowed lens exposes. `by: 'path'` (the default) projects each declared path — its\n * visible fields, `where` clauses and sources — keyed by dotted path. `by: 'model'` flattens the\n * whole surface into a Lens: every model a path or relation reaches, each field the union of its\n * visits, bridges kept only where an exposed field crosses them.\n */\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n options?: ProjectLensOptions & { by?: 'path' },\n): PathProjection;\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n options: ProjectLensOptions & { by: 'model' },\n): Lens;\nexport function projectLens(\n lensOrNarrowing: Lens | LensNarrowing,\n { by = 'path', ...options }: ProjectLensOptions & { by?: 'path' | 'model' } = {},\n): PathProjection | Lens {\n return by === 'model'\n ? projectModels(lensOrNarrowing, options)\n : projectPaths(lensOrNarrowing, options);\n}\n","import { own } from '../own';\nimport { collectChain, getRoot, isLens } from './chain.ts';\nimport { assertValidNarrowing } from './narrowing.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/**\n * A lens as stored, one record per layer: its `id`, the ids of every layer it composes with —\n * the base lens first, the nearest parent last — and its own part. The base lens is the\n * root-most layer: the lens itself, with no parents.\n */\nexport type StoredLens = { id: string; parents: string[] } & (Lens | Omit<LensNarrowing, 'parent'>);\n\nconst isBase = (record: StoredLens): record is StoredLens & Lens => 'maps' in record;\n\n/**\n * The composed lens a stored layer resolves to: its parents, read from `records`, nested from\n * the base down, each layer validated against the ones above it. Fails closed on a missing\n * record, a base that isn't first, or a parent whose own parents disagree with the list.\n */\nexport const composeLens = (\n id: string,\n records: Record<string, StoredLens>,\n): Lens | LensNarrowing => {\n const read = (at: string): StoredLens => {\n const record = own(records, at);\n if (!record) throw new Error(`composeLens: no stored lens '${at}'`);\n return record;\n };\n const ids = [...read(id).parents, id];\n if (new Set(ids).size !== ids.length)\n throw new Error(`composeLens: '${id}' lists a layer twice in its parents`);\n\n let lens: Lens | LensNarrowing | null = null;\n for (const [depth, at] of ids.entries()) {\n const record = read(at);\n const { id: _id, parents, ...part } = record;\n if (parents.join('\\u0000') !== ids.slice(0, depth).join('\\u0000'))\n throw new Error(\n `composeLens: '${at}' composes with [${parents.join(', ')}], not [${ids.slice(0, depth).join(', ')}] as '${id}' lists`,\n );\n const base = isBase(record);\n if (base !== (depth === 0))\n throw new Error(\n depth === 0\n ? `composeLens: '${at}' is not a base lens, so it can't head '${id}''s parents`\n : `composeLens: '${at}' is a base lens, so it can only head a chain`,\n );\n if (lens === null) {\n lens = part as Lens;\n continue;\n }\n const layer: LensNarrowing = { parent: lens, ...(part as Omit<LensNarrowing, 'parent'>) };\n assertValidNarrowing(layer);\n lens = layer;\n }\n return lens as Lens | LensNarrowing;\n};\n\n/** A composed lens as the records `composeLens` reads back: one per layer, the base first,\n * named by `ids` in the same order. */\nexport const storeLens = (lens: Lens | LensNarrowing, ids: readonly string[]): StoredLens[] => {\n const chain = isLens(lens) ? [] : collectChain(lens);\n if (ids.length !== chain.length + 1)\n throw new Error(\n `storeLens: the lens has ${chain.length + 1} layers, base included, but ${ids.length} ids`,\n );\n return [\n { ...getRoot(lens), id: ids[0], parents: [] },\n ...chain.map(({ parent: _parent, ...part }, depth) => ({\n ...part,\n id: ids[depth + 1],\n parents: ids.slice(0, depth + 1),\n })),\n ];\n};\n","import { own } from '../own';\nimport type { FieldMap, FieldMapSet } from './types';\n\n/** The FieldMap a compile reads: the map itself, or `mapName`'s map in a set — a set without a\n * `mapName` is refused rather than read as a map (no Json paths, no bridges). */\nexport const resolveFieldMap = (\n map: FieldMap | FieldMapSet | undefined,\n mapName: string | undefined,\n target: 'toSql' | 'toPrisma',\n): FieldMap | undefined => {\n if (!map || !('maps' in map)) return map;\n if (!mapName)\n throw new Error(\n `${target}: 'map' is a FieldMapSet — 'mapName' is required to resolve which map to use.`,\n );\n const resolved = own(map.maps, mapName);\n if (!resolved) throw new Error(`${target}: fieldMap set has no entry for '${mapName}'`);\n return resolved;\n};\n","import { hasNoOperand } from './field';\nimport { ArrayOperator } from './operator';\nimport {\n COMPLEMENT_DATE_OPERATORS,\n COMPLEMENT_OPERATORS,\n NEGATED_OPERATORS,\n OPPOSITE_OPERATORS,\n} from './operatorCatalog';\nimport { own } from './own';\nimport { allOf, anyOf, conditionShape } from './traverse';\nimport type { Condition, Rule } from './types';\n\ntype Node = Record<string, unknown>;\n\n/** A leaf with its operands read, or `null` when one reads nothing (the leaf is then false). */\nexport type Settle = (leaf: Node) => Node | null;\n\nconst absent = (field: unknown): Condition => ({ field, operator: 'notExists' }) as Condition;\n\nconst negateLeaf = (node: Node, settle: Settle): Condition => {\n const leaf = settle(node);\n // Nothing to compare against: a positive comparison is false everywhere, so its complement\n // holds everywhere; a negation still keeps a NULL field, so its complement is a present one.\n if (leaf === null) {\n const op = (node.operator ?? node.dateOperator) as string;\n return NEGATED_OPERATORS.includes(op)\n ? ({ field: node.field, operator: 'exists' } as Condition)\n : true;\n }\n if ('aggregate' in leaf) {\n const flip = own(COMPLEMENT_OPERATORS, leaf.operator as string);\n if (flip) return { ...leaf, operator: flip } as Condition;\n return { ...leaf, operator: own(OPPOSITE_OPERATORS, leaf.operator as string) } as Condition;\n }\n if (typeof leaf.dateOperator === 'string') {\n const flip = own(COMPLEMENT_DATE_OPERATORS, leaf.dateOperator);\n if (flip) return { ...leaf, dateOperator: flip } as Condition;\n return anyOf([\n { ...leaf, dateOperator: own(OPPOSITE_OPERATORS, leaf.dateOperator) } as Condition,\n absent(leaf.field),\n ]);\n }\n if (typeof leaf.arrayOperator === 'string') {\n const count = leaf.count as number;\n switch (leaf.arrayOperator) {\n case ArrayOperator.any:\n return { ...leaf, arrayOperator: ArrayOperator.none } as Condition;\n case ArrayOperator.none:\n return { ...leaf, arrayOperator: ArrayOperator.any } as Condition;\n case ArrayOperator.all:\n return {\n ...leaf,\n arrayOperator: ArrayOperator.any,\n condition: negate(leaf.condition as Condition, settle),\n } as Condition;\n case ArrayOperator.empty:\n return { ...leaf, arrayOperator: ArrayOperator.notEmpty } as Condition;\n case ArrayOperator.notEmpty:\n return { ...leaf, arrayOperator: ArrayOperator.empty } as Condition;\n case ArrayOperator.atLeast:\n return count <= 0\n ? false\n : ({ ...leaf, arrayOperator: ArrayOperator.atMost, count: count - 1 } as Condition);\n case ArrayOperator.atMost:\n return { ...leaf, arrayOperator: ArrayOperator.atLeast, count: count + 1 } as Condition;\n case ArrayOperator.exactly:\n return anyOf([\n ...(count > 0\n ? [{ ...leaf, arrayOperator: ArrayOperator.atMost, count: count - 1 } as Condition]\n : []),\n { ...leaf, arrayOperator: ArrayOperator.atLeast, count: count + 1 } as Condition,\n ]);\n }\n }\n const flip = own(COMPLEMENT_OPERATORS, leaf.operator as string);\n if (flip) return { ...leaf, operator: flip } as Condition;\n return anyOf([\n { ...leaf, operator: own(OPPOSITE_OPERATORS, leaf.operator as string) } as Condition,\n absent(leaf.field),\n ]);\n};\n\n/**\n * The condition that holds exactly where `condition` doesn't, under check(). A rail that can't\n * negate a predicate whose NULL means false (Prisma's NOT drops the row) compiles the complement\n * instead. `settle` reads a leaf's operands the way the rail will — a leaf whose operand reads\n * nothing is false, so its complement is true.\n */\nexport const negate = (condition: Condition, settle: Settle = (leaf) => leaf): Condition => {\n if (typeof condition === 'boolean') return !condition;\n const node = condition as Node;\n if (Array.isArray(node.all))\n return anyOf((node.all as Condition[]).map((c) => negate(c, settle)));\n if (Array.isArray(node.any))\n return allOf((node.any as Condition[]).map((c) => negate(c, settle)));\n if ('if' in node) {\n const holds = allOf([node.if as Condition, negate(node.then as Condition, settle)]);\n if (node.else === undefined) return holds;\n return {\n any: [\n holds,\n allOf([negate(node.if as Condition, settle), negate(node.else as Condition, settle)]),\n ],\n };\n }\n return negateLeaf(node, settle);\n};\n\n/** check()'s settle: a leaf's literal operand reads nothing when it's null or a range misses an\n * end — the compilers read paths and offsets into literals before negating. */\nexport const settleLiteral: Settle = (leaf) =>\n conditionShape(leaf) === 'field' &&\n leaf.value !== undefined &&\n hasNoOperand(leaf as Rule, leaf.value)\n ? null\n : leaf;\n","import { resolveCaseInsensitive } from './engineGlobals';\nimport { declaredEnumValues } from './fieldMap/entry';\nimport type { FieldMap, FieldMapEntry } from './fieldMap/types';\nimport { splitNull } from './number';\nimport { EQUALITY_OPERATORS, EXACT_OPERATORS, NEGATED_OPERATORS } from './operatorCatalog';\nimport type { Rule } from './types';\n\n// An enum column compares exactly: a case-insensitive equality or membership compiles to the\n// declared values that match ignoring case (Prisma has no case-insensitive mode on an enum), as\n// does one naming a value the enum doesn't declare.\n// String, pattern and ordered operators don't apply to an enum, as the catalog says.\n\n/**\n * The declared values a case-insensitive equality or membership on an enum matches, and whether\n * a NULL field matches it — or null when the column answers the comparison itself.\n */\nexport const enumMatches = (\n rule: Rule,\n value: unknown,\n entry: FieldMapEntry,\n map: FieldMap | undefined,\n): { values: string[]; matchesNull: boolean } | null => {\n if (!EXACT_OPERATORS.includes(rule.operator))\n throw new Error(\n `'${rule.operator}' does not apply to the enum '${rule.field}'; compare its values with equals / in.`,\n );\n const ci = resolveCaseInsensitive(rule.caseInsensitive);\n const declared = declaredEnumValues(entry, map?.enums);\n const { values, hasNull } = splitNull(\n EQUALITY_OPERATORS.includes(rule.operator) ? [value] : value,\n );\n // The column answers an exact comparison itself — unless a literal isn't a declared value,\n // which the database refuses to read; that matches no row.\n if (!ci && (!declared || values.every((v) => typeof v === 'string' && declared.includes(v))))\n return null;\n if (!declared)\n throw new Error(\n `'${rule.field}' is an enum: a case-insensitive comparison reads its declared values, which the map doesn't list.`,\n );\n const norm = (v: string) => (ci ? v.toLowerCase() : v);\n const wanted = new Set(values.filter((v) => typeof v === 'string').map((v) => norm(v as string)));\n const hit = declared.filter((v) => wanted.has(norm(v)));\n return NEGATED_OPERATORS.includes(rule.operator)\n ? { values: declared.filter((v) => !hit.includes(v)), matchesNull: !hasNull }\n : { values: hit, matchesNull: hasNull };\n};\n","export const escapeIdentifier = (identifier: string): string =>\n `\"${identifier.replace(/\"/g, '\"\"')}\"`;\n","import { escapeIdentifier } from './escape';\n\n/**\n * Escape a value for use in a LIKE pattern.\n * Escapes \\, %, and _ which are special characters in PostgreSQL LIKE.\n */\nexport const escapeLikePattern = (value: string): string => {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/%/g, '\\\\%').replace(/_/g, '\\\\_');\n};\n\n/**\n * A field as SQL: its column, then any JSON sub-path. The leaf reads as text (`->>`), or as\n * JSONB (`->`) when the result feeds a JSONB function such as jsonb_array_elements().\n *\n * \"name\" → \"name\"\n * \"data.theme\" → \"data\"->>'theme' (jsonb: \"data\"->'theme')\n * \"settings.display.mode\" → \"settings\"->'display'->>'mode'\n * with an alias → \"t0\".\"data\"->>'theme'\n */\nexport const quoteField = (field: string, alias?: string, jsonb = false): string => {\n const [column, ...jsonPath] = field.split('.');\n const columnExpr = alias\n ? `${escapeIdentifier(alias)}.${escapeIdentifier(column)}`\n : escapeIdentifier(column);\n if (jsonPath.length === 0) return columnExpr;\n const keys = jsonPath.map(jsonKey);\n const leaf = keys.pop() as string;\n return [columnExpr, ...keys].join('->') + (jsonb ? '->' : '->>') + leaf;\n};\n\n/** A JSON key as a SQL string literal. */\nexport const jsonKey = (key: string): string => `'${key.replace(/'/g, \"''\")}'`;\n","import { createRequire } from 'node:module';\nimport { engineGlobals } from '../engineGlobals';\n\n// Prisma matches a DB NULL, a JSON null and an absent Json path together only with its AnyNull\n// instance, which it knows by identity. The default is your own @prisma/client's (an optional\n// peer dependency); `engineGlobals.set('prismaOptions.anyNull', …)` overrides it.\n\nconst RUNTIMES = ['@prisma/client/runtime/client', '@prisma/client/runtime/library'];\n\nlet installed: unknown;\n\nconst installedAnyNull = (): unknown => {\n if (installed !== undefined) return installed;\n for (const load of loaders()) {\n for (const id of RUNTIMES) {\n try {\n const runtime = load(id) as { AnyNull?: unknown };\n if (runtime.AnyNull !== undefined) {\n installed = runtime.AnyNull;\n return installed;\n }\n } catch {\n // Not this Prisma version's runtime path, or no @prisma/client: try the next.\n }\n }\n }\n return undefined;\n};\n\n// ESM resolves from this module's URL; the CJS build has `require` (and no import.meta.url).\nconst loaders = (): ((id: string) => unknown)[] => {\n const out: ((id: string) => unknown)[] = [];\n try {\n out.push(createRequire(import.meta.url));\n } catch {\n // CJS: import.meta.url is empty.\n }\n if (typeof require === 'function') out.push(require);\n return out;\n};\n\nexport const prismaAnyNull = (): unknown => {\n const anyNull = engineGlobals.get('prismaOptions.anyNull') ?? installedAnyNull();\n if (anyNull === undefined)\n throw new Error(\n \"A null check on a Json field needs Prisma's AnyNull, and @prisma/client isn't installed: engineGlobals.set('prismaOptions.anyNull', Prisma.AnyNull).\",\n );\n return anyNull;\n};\n","import type { Condition } from '../types';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\n// The rail's one recursion point: sub-builders compile their child conditions through it, and\n// condition.ts installs the dispatcher — so no builder imports the dispatcher it is part of.\n\ntype BuildConditionFn = (\n condition: Condition,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n) => PrismaWhere;\n\nlet dispatch: BuildConditionFn;\n\nexport const setConditionBuilder = (fn: BuildConditionFn): void => {\n dispatch = fn;\n};\n\nexport const buildCondition: BuildConditionFn = (condition, options, state) =>\n dispatch(condition, options, state);\n","import { resolveDateConfig } from '../date';\nimport type { ResolvedDateConfig } from '../dateExpr';\nimport { noCompiledForm } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { type Settle, settleLiteral } from '../negate';\nimport { ORDERED_OPERATORS } from '../operatorCatalog';\nimport { checkOnlyScopeRef, parseScopeRef, readContextRef } from '../scope';\nimport type { ValueSourceFields } from '../types';\nimport { compileBinding, matchSource, type ReadSource } from '../valueSource';\nimport type { ToPrismaOptions } from './types';\n\n/** A path on the Prisma rail: a context read. Prisma WHERE has no column-to-column comparison\n * or arithmetic, so a row (`$.`) ref has no form here. */\nconst readPathValue = (ref: string, options?: ToPrismaOptions): unknown => {\n const scoped = parseScopeRef(ref);\n if (scoped) {\n if (scoped.depth > 1) throw new Error(checkOnlyScopeRef(ref, 'toPrisma'));\n throw new Error(\n `Path '${ref}' is not supported by toPrisma(): Prisma WHERE has no column-to-column ` +\n `comparison or arithmetic. Use toSql() or prisma.$queryRaw.`,\n );\n }\n return readContextRef(ref, options?.context, 'toPrisma');\n};\n\n/** A value source on the Prisma rail: its value, a context read, or an unresolved bind. */\nexport const readSource = (\n source: ValueSourceFields<unknown>,\n options?: ToPrismaOptions,\n): unknown =>\n matchSource<unknown>(source, {\n value: (value) => value,\n path: (ref) => readPathValue(ref, options),\n bind: (name, optional) => compileBinding(name, optional, 'toPrisma'),\n });\n\nexport const prismaRead =\n (options?: ToPrismaOptions): ReadSource =>\n (source) =>\n readSource(source, options);\n\nexport const dateConfigOf = (options?: ToPrismaOptions): ResolvedDateConfig =>\n resolveDateConfig(\n { now: options?.now, timeZone: options?.timeZone, weekStart: options?.weekStart },\n prismaRead(options),\n );\n\n/** A leaf with its value source and offset read as the Prisma rail reads them, for negation;\n * null when one reads nothing (the leaf is then false). */\nexport const settleLeaf =\n (options?: ToPrismaOptions): Settle =>\n (leaf) => {\n const comparison = typeof leaf.operator === 'string' || typeof leaf.dateOperator === 'string';\n const sourced =\n leaf.value !== undefined ||\n (typeof leaf.path === 'string' && leaf.path !== '') ||\n typeof leaf.bind === 'string';\n if (!comparison || 'aggregate' in leaf || !sourced) return leaf;\n // The complement of an ordered comparison keeps the values of other types, which Prisma's\n // Json filters can't test for.\n const shape = ruleShape(\n { field: String(leaf.field) },\n options?.map as FieldMap | undefined,\n options?.model,\n );\n if (\n (shape === 'json' || shape === 'json-path') &&\n typeof leaf.operator === 'string' &&\n ORDERED_OPERATORS.includes(leaf.operator)\n )\n throw noCompiledForm(\n 'toPrisma',\n `The complement of '${leaf.operator}' on the Json value '${leaf.field}'`,\n 'it keeps values of other types',\n );\n const value = readSource(leaf, options);\n const offset =\n leaf.offset === undefined ? undefined : readSource(leaf.offset as never, options);\n if (leaf.offset !== undefined && (offset === null || offset === undefined)) return null;\n const { path: _path, bind: _bind, bindOptional: _optional, ...rest } = leaf;\n const literal = {\n ...rest,\n value,\n ...(leaf.offset !== undefined && { offset: { value: offset } }),\n };\n if (typeof leaf.dateOperator === 'string')\n return value === null || value === undefined ? null : literal;\n return settleLiteral(literal);\n };\n","import type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport type { All, Any, Condition, IfThenElse } from '../types';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\n/**\n * The two boolean constants and how Prisma reads them.\n *\n * `{}` is match-all only where Prisma treats an empty filter as \"no constraint\": the top\n * level, an AND arm, a relation filter (`some: {}`). Inside an OR Prisma DROPS it — `OR: [x, {}]`\n * is just `x` — and `NOT: {}` is not the negation of true. `{ OR: [] }` is the documented\n * match-nothing and composes correctly everywhere.\n *\n * So the logical builders never nest a constant under OR or NOT; they fold it instead:\n * a `true` arm absorbs an OR, a `false` arm absorbs an AND, either drops out of the other,\n * and NOT of a constant is the other constant. The fold runs on compiled output, so it also\n * covers constants that arrive indirectly — `all: []`, `any: []`, `atLeast 0`, and the bridge\n * over-fetch sentinel (a bridge under `any` now over-fetches the disjunction instead of being\n * dropped by Prisma and under-fetching).\n *\n * Every arm is compiled exactly once, in order, BEFORE folding. Count operators push a\n * groupBy step into `state` as they compile, so an arm that then folds away leaves its step\n * behind — harmless (an unreferenced step is executed and ignored) and necessary: step refs\n * are positional, so nothing may be rebuilt or renumbered.\n */\nexport const matchAll = (): PrismaWhere => ({});\n/** Unknown here — a condition across a bridge: over-fetch, and let check() decide. Prisma reads\n * it as match-all, and so does every fold. */\nexport const overFetch = matchAll;\nexport const matchNothing = (): PrismaWhere => ({ OR: [] });\nconst isMatchAll = (where: PrismaWhere): boolean => Object.keys(where).length === 0;\nconst isMatchNothing = (where: PrismaWhere): boolean => {\n const keys = Object.keys(where);\n return keys.length === 1 && keys[0] === 'OR' && Array.isArray(where.OR) && where.OR.length === 0;\n};\n\n/** AND of arms: match-nothing absorbs, match-all drops, one arm stands alone. */\nexport const andWhere = (arms: PrismaWhere[]): PrismaWhere => {\n if (arms.some(isMatchNothing)) return matchNothing();\n const rest = arms.filter((arm) => !isMatchAll(arm));\n if (rest.length === 0) return matchAll();\n return rest.length === 1 ? rest[0] : { AND: rest };\n};\n\n/** OR of arms: match-all absorbs, match-nothing drops, one arm stands alone. */\nexport const orWhere = (arms: PrismaWhere[]): PrismaWhere => {\n if (arms.some(isMatchAll)) return matchAll();\n const rest = arms.filter((arm) => !isMatchNothing(arm));\n if (rest.length === 0) return matchNothing();\n return rest.length === 1 ? rest[0] : { OR: rest };\n};\n\n/** A leaf filter's complement. A bridged leaf compiles to the over-fetch sentinel `{}` —\n * unknown, not true — and its complement stays unknown; Prisma reads `NOT: {}` as match-all too. */\nexport const notLeaf = (where: PrismaWhere): PrismaWhere =>\n isMatchAll(where) ? where : { NOT: where };\n\nexport const buildAll = (\n all: All,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => andWhere(all.all.map((c) => buildCondition(c, options, state)));\n\nexport const buildAny = (\n any: Any,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => orWhere(any.any.map((c) => buildCondition(c, options, state)));\n\nexport const buildIfThenElse = (\n cond: IfThenElse,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n // if → then is: (complement of if) OR then\n // With else: (NOT(if) OR then) AND (if OR else)\n //\n // When any sub-clause hits a bridge, the precise compilation breaks. The sentinel `{}`\n // means \"unknown here\" for a bridge, and neither Prisma nor the constant fold can carry\n // that through a negation: Prisma ignores `NOT: {}` (measured: it matches everything),\n // and the fold would read it as NOT(true) = match-nothing. Either way an `if` bridge\n // collapses the implication to `then` alone, and a bridge in `then`/`else` with the\n // other branch present drops that branch. Over-fetch the whole expression and let the\n // caller's check() filter against hydrated cross-source data.\n if (\n conditionTouchesBridge(cond as Condition, options?.map as FieldMap | undefined, options?.model)\n ) {\n return overFetch();\n }\n\n // Each clause is built exactly once: a count-based array operator in `if` pushes a\n // GroupByStep as it compiles, and the same clause is reused in both conjuncts below.\n // Boolean branches (`then: true`, `else: false`, …) are compiled like any other\n // condition and folded by orWhere/andWhere/notWhere so no constant lands under OR/NOT.\n // Prisma's NOT drops a row whose `if` is NULL (a NULL field) that check() reads as false, so\n // the implication compiles the complement of `if` instead of negating it.\n const notIf = buildCondition(negate(cond.if, settleLeaf(options)), options, state);\n const thenClause = buildCondition(cond.then, options, state);\n const implication = orWhere([notIf, thenClause]);\n\n // !== undefined so `else: false` (deny branch) is emitted rather than skipped.\n if (cond.else !== undefined) {\n const ifClause = buildCondition(cond.if, options, state);\n const elseClause = buildCondition(cond.else, options, state);\n return andWhere([implication, orWhere([ifClause, elseClause])]);\n }\n\n return implication;\n};\n","import dayjs from 'dayjs';\nimport { resolveUnits } from '../amount';\nimport { shiftByUnits } from '../dateExpr';\nimport { addOffset, offsetAmount, offsetShift } from '../offset';\nimport type { DateOffset, NumberOffset } from '../types';\nimport type { ToPrismaOptions } from './types';\nimport { dateConfigOf, prismaRead, readSource } from './valueSource';\n\n// An offset moves the comparison value by what its own value source reads; null when either\n// reads nothing. Prisma has no arithmetic, so every side is known at compile time.\n\nexport const offsetNumber = (value: unknown, offset: NumberOffset, options?: ToPrismaOptions) => {\n const amount = offsetAmount(readSource(offset, options));\n return amount === null ? null : addOffset(value, amount);\n};\n\nexport const offsetDate = (\n instant: Date | null,\n offset: DateOffset,\n options?: ToPrismaOptions,\n): Date | null => {\n if (instant === null) return null;\n const move = offsetShift(readSource(offset, options));\n const units = move && resolveUnits(move[0], prismaRead(options));\n if (!move || !units) return null;\n return shiftByUnits(dayjs(instant), units, move[1], dateConfigOf(options).timeZone).toDate();\n};\n","import type { PrismaWhere } from './types';\n\n/**\n * Build a nested Prisma filter from a dot-notation field path.\n *\n * In Prisma, dot-notation always means relation traversal (unlike toSql where\n * dots mean JSON path). Each segment wraps the next from the inside out.\n *\n * @example\n * buildNestedFilter('status', { equals: 'active' })\n * // → { status: { equals: 'active' } }\n *\n * buildNestedFilter('user.profile.bio', { contains: 'hello' })\n * // → { user: { profile: { bio: { contains: 'hello' } } } }\n */\nexport const buildNestedFilter = (field: string, filter: unknown): PrismaWhere => {\n const parts = field.split('.');\n let result: unknown = filter;\n for (let i = parts.length - 1; i >= 0; i--) {\n result = { [parts[i]]: result };\n }\n return result as PrismaWhere;\n};\n","import { check } from '../check';\nimport { compileFieldLiteral } from '../compileLiteral';\nimport {\n engineGlobals,\n type PrismaProvider,\n resolveCaseInsensitive,\n supportsQueryMode,\n} from '../engineGlobals';\nimport { enumMatches } from '../enumMatch';\nimport {\n fuzzyNotCompiled,\n noCompiledForm,\n pastScalarError,\n relationNotValue,\n toManyHopError,\n unorderedOperand,\n} from '../errors';\nimport { hasNoOperand, isExistenceTest, listMembership } from '../field';\nimport { acceptsEmptyString, comparesText, type FieldShape, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { fieldEntry, optionalToOneHops, walkFieldPath, walkWith } from '../fieldMap/walk';\nimport { orderPair, readPair, splitNull } from '../number';\nimport { Operator } from '../operator';\nimport {\n COMPLEMENT_OPERATORS,\n comparatorOf,\n NEGATED_OPERATORS,\n NEGATED_RANGE_OPERATORS,\n NEGATED_STRING_OPERATORS,\n ORDERED_OPERATORS,\n SET_OPERATORS,\n} from '../operatorCatalog';\nimport { escapeLikePattern } from '../toSql/quoting';\nimport type { Condition, Rule } from '../types';\nimport { prismaAnyNull } from './anyNull';\nimport { andWhere, matchAll, notLeaf, orWhere, overFetch } from './logical';\nimport { offsetNumber } from './offset';\nimport { buildCondition } from './recurse';\nimport type { PrismaWhere, ToPrismaOptions } from './types';\nimport { buildNestedFilter } from './utils';\nimport { dateConfigOf, readSource } from './valueSource';\n\nconst shapeOf = (rule: Pick<Rule, 'field' | 'coerceType'>, options?: ToPrismaOptions): FieldShape =>\n ruleShape(rule, options?.map as FieldMap | undefined, options?.model);\n\nconst isJson = (shape: FieldShape): boolean => shape === 'json' || shape === 'json-path';\n\n/** The filter value that matches a field's NULL: on Json, Prisma's AnyNull — a DB NULL, a JSON\n * null, and an absent path all read as null in check(). */\nconst nullOf = (shape: FieldShape): unknown => {\n if (!isJson(shape)) return null;\n return prismaAnyNull();\n};\n\n/** Each optional to-one hop on the path NULL: `{ rel: { col: { equals: null } } }` requires the\n * relation to exist, so a row without it needs its own arm. */\nexport const hopArms = (field: string, options?: ToPrismaOptions): PrismaWhere[] =>\n options?.map && options?.model\n ? optionalToOneHops(field, options.map as FieldMap, options.model).map((hop) =>\n buildNestedFilter(hop, { is: null }),\n )\n : [];\n\n/**\n * The arms that make a negation match the rows where the path is ABSENT — what check() reads as\n * null: the leaf NULL where the map licenses it (a nullable column, a Json path, a scalar list;\n * an `equals: null` arm on a NOT NULL column is a Prisma validation error), and each optional\n * to-one hop NULL.\n */\nexport const absentArms = (\n rule: Pick<Rule, 'field' | 'coerceType'>,\n options?: ToPrismaOptions,\n): PrismaWhere[] => {\n const shape = shapeOf(rule, options);\n const nullable =\n isJson(shape) ||\n shape === 'list' ||\n fieldEntry(rule.field, options?.map as FieldMap | undefined, options?.model)?.isRequired ===\n false;\n return [\n ...(nullable ? [buildMapAwareFilter(rule.field, { equals: nullOf(shape) }, options)] : []),\n ...hopArms(rule.field, options),\n ];\n};\n\n/** An equality filter. Prisma compiles an insensitive one to ILIKE and passes %, _ and backslash\n * through: escape them, so the value matches only itself. On Json it matches the JSON text, which\n * escapes quotes and control characters and doubles any escape, so a value holding one of those,\n * or a % or _, has no Prisma form. */\nconst equalityFilter = (\n key: 'equals' | 'not',\n value: unknown,\n mode: { mode?: 'insensitive' },\n shape: FieldShape,\n): PrismaWhere => {\n if (mode.mode && isJson(shape) && Array.isArray(value))\n throw noCompiledForm(\n 'toPrisma',\n `A case-insensitive comparison of a Json value with the list ${JSON.stringify(value)}`,\n );\n if (!mode.mode || typeof value !== 'string') return { [key]: value, ...mode };\n if (!isJson(shape)) return { [key]: escapeLikePattern(value), ...mode };\n // biome-ignore lint/suspicious/noControlCharactersInRegex: JSON text escapes them.\n if (/[%_\\\\\"\\u0000-\\u001f]/.test(value))\n throw noCompiledForm(\n 'toPrisma',\n `A case-insensitive equality on Json against '${value}'`,\n `Prisma matches the JSON text, where %, _, a backslash, a quote or a control character doesn't read as itself`,\n );\n return { [key]: value, ...mode };\n};\n\n/**\n * `mode: 'insensitive'` when the rule is case-insensitive and compares text: a String column, or a\n * string (or strings) against Json or an undeclared field — and only where the connector accepts\n * QueryMode (MySQL/SQLite are case-insensitive by collation and reject it).\n */\nconst queryMode = (\n rule: Rule,\n options: ToPrismaOptions | undefined,\n shape: FieldShape,\n value: unknown,\n): { mode?: 'insensitive' } => {\n const provider = (options?.datasource?.provider ??\n engineGlobals.get('prismaOptions.datasource.provider')) as PrismaProvider;\n return resolveCaseInsensitive(rule.caseInsensitive) &&\n supportsQueryMode(provider) &&\n comparesText(shape, value)\n ? { mode: 'insensitive' }\n : {};\n};\n\n/** The non-null values that read as empty, as filters: `''`, and `[]` on a list or Json. */\nconst emptyValues = (shape: FieldShape, emptyString: boolean): Record<string, unknown>[] => {\n if (shape === 'list') return [{ isEmpty: true }];\n const values: Record<string, unknown>[] = emptyString ? [{ equals: '' }] : [];\n return isJson(shape) ? [...values, { equals: [] }] : values;\n};\n\nconst notEmpty = (empty: Record<string, unknown>): Record<string, unknown> =>\n 'isEmpty' in empty ? { isEmpty: false } : { not: empty.equals };\n\n/**\n * Whether a field is empty — null (or absent through an optional relation), '', or an empty list\n * or Json array, as check() reads it — or, with `empty` false, not. One form for the emptiness\n * operators and the array ones.\n */\nexport const emptinessWhere = (\n field: string,\n shape: FieldShape,\n empty: boolean,\n emptyString: boolean,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n const at = (filter: unknown) => buildMapAwareFilter(field, filter, options);\n const values = emptyValues(shape, emptyString);\n if (empty)\n return orWhere([\n at({ equals: nullOf(shape) }),\n ...hopArms(field, options),\n ...values.map((value) => at(value)),\n ]);\n // A list has no `not`; `isEmpty: false` is NULL — so false — for a NULL list.\n return andWhere([\n ...(shape === 'list' ? [] : [at({ not: nullOf(shape) })]),\n ...values.map((value) => at(notEmpty(value))),\n ]);\n};\n\n/** A to-one relation as a field: it exists or it doesn't. */\nconst buildRelationRule = (rule: Rule, options?: ToPrismaOptions): PrismaWhere => {\n if (!isExistenceTest(rule)) throw relationNotValue(rule.field);\n const at = (filter: unknown) => buildMapAwareFilter(rule.field, filter, options);\n // check() answers which way it asks: for a missing relation, or a present one.\n const asksMissing =\n check({ ...rule, field: 'relation' } as Condition, { relation: null }) === true;\n const hops = hopArms(rule.field, options);\n // A required relation is there whenever its row is: missing only through an optional hop above\n // it, and Prisma takes no `null` on its filter.\n if (fieldEntry(rule.field, options?.map as FieldMap | undefined, options?.model)?.isRequired) {\n if (asksMissing) return orWhere(hops);\n return hops.length ? notLeaf(orWhere(hops)) : matchAll();\n }\n return asksMissing ? orWhere([at({ is: null }), ...hops]) : at({ isNot: null });\n};\n\nexport const buildFieldRule = (rule: Rule, options?: ToPrismaOptions): PrismaWhere => {\n const at = (filter: unknown) => buildMapAwareFilter(rule.field, filter, options);\n const shape = shapeOf(rule, options);\n const arms = () => absentArms(rule, options);\n const emptyString = acceptsEmptyString(\n rule,\n options?.map as FieldMap | undefined,\n options?.model,\n );\n\n if (shape === 'relation') return buildRelationRule(rule, options);\n\n switch (rule.operator) {\n // A list filter has no `not`: its complements negate `equals` at the WHERE level.\n case Operator.exists:\n return shape === 'list' ? notLeaf(at({ equals: null })) : at({ not: nullOf(shape) });\n case Operator.notExists: {\n const absent = arms();\n return absent.length ? orWhere(absent) : at({ equals: nullOf(shape) });\n }\n // The emptiness operators OR / AND at the WHERE level: Prisma rejects a mixed null + string\n // list in `in` / `notIn`. isEmpty carries the leaf null arm unconditionally — it is the\n // operator.\n case Operator.isEmpty:\n case Operator.notEmpty:\n return emptinessWhere(\n rule.field,\n shape,\n rule.operator === Operator.isEmpty,\n emptyString,\n options,\n );\n }\n\n // Nothing to compare against (see hasNoOperand): no row matches; a negation keeps the absent\n // rows only.\n const value = resolveRuleValue(rule, options);\n if (hasNoOperand(rule, value))\n return orWhere(NEGATED_OPERATORS.includes(rule.operator) ? arms() : []);\n\n if (shape === 'list' && SET_OPERATORS.includes(rule.operator) && Array.isArray(value))\n return buildCondition(listMembership(rule, value), options);\n // Prisma's list filters take no null element.\n if (shape === 'list' && Array.isArray(value) && value.includes(null))\n throw noCompiledForm('toPrisma', `A list holding null in '${rule.field}'`);\n\n // Prisma's list filters have no case-insensitive mode.\n if (\n shape === 'list' &&\n resolveCaseInsensitive(rule.caseInsensitive) &&\n comparesText('text', value)\n )\n throw noCompiledForm('toPrisma', `A case-insensitive comparison on the list '${rule.field}'`);\n\n // An enum compares against its declared values (see enumMatches).\n const enumEntry =\n shape === 'enum'\n ? fieldEntry(rule.field, options?.map as FieldMap | undefined, options?.model)\n : undefined;\n const matched = enumEntry\n ? enumMatches(rule, value, enumEntry, options?.map as FieldMap | undefined)\n : null;\n if (matched) {\n const listed = at({ in: matched.values });\n return matched.matchesNull ? orWhere([listed, ...arms()]) : listed;\n }\n\n // Prisma's `not` / `notIn` compile to SQL `<>` / `NOT IN`, which drop NULL rows under\n // three-valued logic; a negation is the complement of its positive form in check(), so it\n // carries the absent arms.\n if (SET_OPERATORS.includes(rule.operator)) {\n const { values, hasNull } = splitNull(value);\n // Json has no `in`: one `equals` per value.\n const ci = queryMode(rule, options, shape, values);\n const listed = isJson(shape)\n ? rule.operator === Operator.in\n ? orWhere(values.map((v) => at(equalityFilter('equals', v, ci, shape))))\n : andWhere(values.map((v) => at(equalityFilter('not', v, ci, shape))))\n : at({ [rule.operator]: values, ...ci });\n if (rule.operator === Operator.in) return hasNull ? orWhere([listed, ...arms()]) : listed;\n return hasNull ? andWhere([listed, at({ not: nullOf(shape) })]) : orWhere([listed, ...arms()]);\n }\n\n // A string operator's positive form; a Json value contains a string's substring, or a\n // member of an array.\n const positive = (operator: string): PrismaWhere => {\n if (!isJson(shape) || operator !== Operator.contains)\n return at(comparisonFilter({ ...rule, operator: operator as Operator }, options));\n const member = at({ array_contains: [jsonMember(rule, value, options, shape)] });\n return typeof value === 'string'\n ? orWhere([at(comparisonFilter({ ...rule, operator }, options)), member])\n : member;\n };\n if (rule.operator === Operator.contains) return positive(Operator.contains);\n\n // A negated string operator or range negates its positive form at the WHERE level: no field\n // filter carries it on Json or a list. Prisma's Json filters can't test a value's type — the\n // positive is NULL for the other types — so on Json the complement, which keeps them, has no\n // form.\n const complemented = NEGATED_STRING_OPERATORS.includes(rule.operator)\n ? COMPLEMENT_OPERATORS[rule.operator]\n : NEGATED_RANGE_OPERATORS.includes(rule.operator)\n ? Operator.between\n : undefined;\n if (complemented) {\n if (isJson(shape))\n throw noCompiledForm(\n 'toPrisma',\n `'${rule.operator}' on the Json value '${rule.field}'`,\n `it keeps values of other types`,\n );\n return orWhere([notLeaf(positive(complemented)), ...arms()]);\n }\n\n const filter = at(comparisonFilter(rule, options));\n // `equals null` is the is-null sentinel: a path through an absent relation is null too.\n if (rule.operator === Operator.equals && value === null)\n return orWhere([filter, ...hopArms(rule.field, options)]);\n if (rule.operator === Operator.notEquals && shape === 'list')\n return value === null\n ? notLeaf(at({ equals: null }))\n : orWhere([notLeaf(at({ equals: value })), ...arms()]);\n return rule.operator === Operator.notEquals && value !== null\n ? orWhere([filter, ...arms()])\n : filter;\n};\n\n/** The comparison value: the rule's value source, coerced to the field, moved by its offset. */\nconst resolveRuleValue = (rule: Rule, options?: ToPrismaOptions): unknown => {\n const value = compileFieldLiteral(\n rule,\n readSource(rule, options),\n walkWith(rule.field, options?.map as FieldMap | undefined, options?.model),\n 'toPrisma',\n () => dateConfigOf(options).timeZone,\n );\n return rule.offset === undefined ? value : offsetNumber(value, rule.offset, options);\n};\n\n/** A leaf's comparison as a Prisma field filter, in the form its field's shape takes (a negated\n * range is its positive form; the caller negates the clause). */\nexport const comparisonFilter = (rule: Rule, options?: ToPrismaOptions): unknown => {\n const fuzzy = fuzzyNotCompiled(rule);\n if (fuzzy) throw fuzzy;\n const shape = shapeOf(rule, options);\n const val = () => resolveRuleValue(rule, options);\n const ci = (value: unknown) => queryMode(rule, options, shape, value);\n // String matching on Json is `string_*`; containment on a list is `has`.\n const match = (op: 'contains' | 'startsWith' | 'endsWith') => {\n const value = val();\n if (shape === 'list') {\n if (op !== 'contains')\n throw new Error(`Operator '${op}' does not apply to the list '${rule.field}'.`);\n return { has: value };\n }\n const key = isJson(shape) ? JSON_MATCH[op] : op;\n // Prisma matches with LIKE and passes % and _ through: escape them, as toSql does.\n const literal = typeof value === 'string' ? escapeLikePattern(value) : value;\n return { [key]: literal, ...ci(value) };\n };\n\n const unordered = unorderedOperand(rule.operator, val());\n if (unordered) throw unordered;\n const comparator = comparatorOf(rule.operator, 'field');\n if (comparator && ORDERED_OPERATORS.includes(rule.operator)) return { [comparator]: val() };\n\n switch (rule.operator) {\n case Operator.equals: {\n const value = val() ?? nullOf(shape);\n return equalityFilter('equals', value, ci(value), shape);\n }\n case Operator.notEquals: {\n const value = val() ?? nullOf(shape);\n return equalityFilter('not', value, ci(value), shape);\n }\n // A field's set membership is built by buildFieldRule; an aggregate's `having` takes it here.\n case Operator.in:\n case Operator.notIn:\n return { [rule.operator]: val() };\n case Operator.contains:\n return match('contains');\n case Operator.startsWith:\n return match('startsWith');\n case Operator.endsWith:\n return match('endsWith');\n case Operator.matches:\n case Operator.notMatches:\n throw noCompiledForm('toPrisma', `'${rule.operator}'`, 'Prisma has no pattern filter');\n // The POSITIVE range for both: `buildFieldRule` negates the whole clause for notBetween,\n // because a field filter cannot carry a two-sided negation.\n case Operator.between:\n case Operator.notBetween: {\n const [min, max] = orderPair(readPair(val(), rule.operator));\n return { gte: min, lte: max };\n }\n default:\n // Negated string operators / emptiness / existence are built at the WHERE level.\n throw new Error(`Operator '${rule.operator}' is built by buildFieldRule`);\n }\n};\n\n/** A Json array member Prisma can match exactly: `array_contains` reads an object or a list\n * partially (its fields / members contained), unlike check()'s equal member, and compares a\n * string case-sensitively. */\nconst jsonMember = (\n rule: Rule,\n value: unknown,\n options: ToPrismaOptions | undefined,\n shape: FieldShape,\n): unknown => {\n if (typeof value === 'object' && value !== null)\n throw new Error(\n `Membership of an object or a list in the Json array '${rule.field}' has no exact Prisma form; use toSql() or check().`,\n );\n if (queryMode(rule, options, shape, value).mode)\n throw noCompiledForm('toPrisma', `A case-insensitive member of the Json array '${rule.field}'`);\n return value;\n};\n\nconst JSON_MATCH = {\n contains: 'string_contains',\n startsWith: 'string_starts_with',\n endsWith: 'string_ends_with',\n} as const;\n\n/**\n * Build the Prisma WHERE for a leaf filter on `field`, map-aware when a map+model is available —\n * the one place every toPrisma leaf (field, date, array) nests its filter.\n * - JSON field mid-path → Prisma JSON path syntax: { metadata: { path: ['theme'], equals: 'dark' } }\n * - All other paths → standard nested relation filter\n */\nexport const buildMapAwareFilter = (\n field: string,\n filter: unknown,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n if (!options?.map || !options?.model) {\n return buildNestedFilter(field, filter);\n }\n\n const walkResult = walkFieldPath(field, options.map as FieldMap, options.model);\n const toMany = walkResult.hops.find((hop) => hop.entry.isList);\n if (toMany) throw toManyHopError(field, toMany);\n const parts = field.split('.');\n\n switch (walkResult.kind) {\n case 'fallback':\n case 'direct':\n return buildNestedFilter(field, filter);\n\n case 'bridge':\n return overFetch();\n\n case 'past-scalar':\n throw pastScalarError(field, walkResult.column);\n\n case 'json-path': {\n // Merge the json path array into the leaf filter, then nest normally\n const jsonFilter = { path: walkResult.jsonPath, ...(filter as object) };\n const fieldUpToJson = parts.slice(0, walkResult.stopIndex).join('.');\n return buildNestedFilter(fieldUpToJson, jsonFilter);\n }\n }\n};\n","import type { FieldMap } from '../fieldMap/types';\nimport { walkFieldPath } from '../fieldMap/walk';\nimport { modelOf } from '../own';\nimport { notLeaf } from './logical';\nimport { relationKeys } from './relationUtils';\nimport type { GroupByStep, PrismaBuildState, PrismaWhere } from './types';\nimport { buildNestedFilter } from './utils';\n\n// A count or aggregate over a relation compiles to a groupBy step on the related model and a\n// membership filter on the parent: to-one relations, then the to-many relation grouped over.\n\ntype GroupPath = {\n /** The dotted to-one hops before the to-many relation ('' when it is on the model itself). */\n through: string;\n /** The model grouped (the to-many relation's target). */\n target: string;\n /** The parent's key and the target's key that point at it. */\n parentKey: string;\n targetKey: string;\n};\n\n/** The path a group step aggregates over; `rule` names the rule kind in errors. */\nexport const groupPath = (\n field: string,\n map: FieldMap,\n model: string,\n rule: 'Count operators' | 'Aggregate rules',\n): GroupPath => {\n const segments = field.split('.');\n const walk = walkFieldPath(field, map, model);\n if (walk.kind !== 'direct' || walk.entry.kind !== 'object') {\n const on = walk.hops.at(-1)?.entry.type ?? model;\n throw new Error(\n `Field '${segments[walk.hops.length]}' is not a relation in model '${on}'. ${rule} require a relation field.`,\n );\n }\n const toMany = walk.hops.find((hop) => hop.entry.isList);\n if (toMany)\n throw new Error(\n `Intermediate field '${toMany.field}' in path '${field}' is a list relation. ` +\n `Only the final segment can be a list relation for ${rule.toLowerCase()}.`,\n );\n if (!walk.entry.isList)\n throw new Error(\n `Field '${walk.column}' is not a list relation in model '${walk.model}'. ${rule} only apply to one-to-many or many-to-many relations.`,\n );\n const keys = relationKeys(map, walk.model, walk.entry);\n if (!keys) {\n const implicitM2M = Object.values(modelOf(map, walk.entry.type)?.fields ?? {}).some(\n (f) => f.kind === 'object' && f.type === walk.model && f.isList && !f.fromFields?.length,\n );\n throw new Error(\n implicitM2M\n ? `'${walk.model}.${walk.column}' is an implicit many-to-many relation. ${rule} require an ` +\n `explicit join model with a FK — convert to an explicit @relation or use prisma.$queryRaw.`\n : `Cannot determine FK relationship between '${walk.model}' and '${walk.entry.type}'. ` +\n `Ensure the FieldMap contains both sides of the relation.`,\n );\n }\n if (keys.length > 1)\n throw new Error(\n `${rule} do not support composite FK relations ('${walk.model}.${walk.column}'). Use prisma.$queryRaw.`,\n );\n return {\n through: walk.hops.map((hop) => hop.field).join('.'),\n target: walk.entry.type,\n parentKey: keys[0].here,\n targetKey: keys[0].there,\n };\n};\n\n/**\n * Push a groupBy step and return the parents it selects — or, with `complement`, the parents it\n * doesn't. A groupBy only yields groups with at least one row, so a parent with no (matching)\n * children never appears in it: a predicate that holds for that empty case compiles as the\n * complement of the step for its negation.\n */\nexport const groupMembership = (\n state: PrismaBuildState,\n path: GroupPath,\n where: PrismaWhere,\n having: Record<string, unknown>,\n complement: boolean,\n): PrismaWhere => {\n const step: GroupByStep = {\n operation: 'groupBy',\n model: path.target,\n args: { by: [path.targetKey], where, having },\n extract: path.targetKey,\n };\n const ref = { __step: state.steps.length };\n state.steps.push(step);\n const membership = { [path.parentKey]: { in: ref } };\n const selected = complement ? notLeaf(membership) : membership;\n return path.through ? buildNestedFilter(path.through, selected) : selected;\n};\n","import { unknownAggregateMode, windowUnsupported } from '../errors';\nimport { checkField } from '../field';\nimport { isJsonEntry } from '../fieldMap/entry';\nimport type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport { AGGREGATE_MODES, NEGATED_RANGE_OPERATORS } from '../operatorCatalog';\nimport { fieldOf } from '../own';\nimport type { AggregateRule, Condition, Rule } from '../types';\nimport { hasWindow, windowRewrite } from '../window';\nimport { comparisonFilter, hopArms } from './field';\nimport { groupMembership, groupPath } from './groupStep';\nimport { matchAll, matchNothing, notLeaf, orWhere, overFetch } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\nexport const buildAggregateRule = (\n rule: AggregateRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n if (hasWindow(rule)) {\n const rewritten = windowRewrite(rule);\n if (!rewritten) throw windowUnsupported('toPrisma');\n return buildCondition(rewritten, options, state);\n }\n\n if (!options?.map || !options?.model || !state) {\n throw new Error(\n `Aggregate rules require a FieldMap and model to generate a Prisma plan. ` +\n `Pass { map, model } options to toPrisma().`,\n );\n }\n\n if (!AGGREGATE_MODES.includes(rule.aggregate.mode))\n throw unknownAggregateMode(rule.aggregate.mode);\n if (!rule.aggregate.field) {\n throw new Error(\n `Prisma aggregate rules require aggregate.field to specify the numeric field on the related model.`,\n );\n }\n\n return buildAggregateStep(\n rule,\n options as ToPrismaOptions & { map: FieldMap; model: string },\n state,\n );\n};\n\nconst buildAggregateStep = (\n rule: AggregateRule,\n options: ToPrismaOptions & { map: FieldMap; model: string },\n state: PrismaBuildState,\n): PrismaWhere => {\n const path = groupPath(rule.field, options.map, options.model, 'Aggregate rules');\n // A condition that crosses a bridge is unknown here: the step would aggregate every child.\n // Over-fetch and let check() decide.\n if (rule.condition && conditionTouchesBridge(rule.condition, options.map, path.target))\n return overFetch();\n const itemField = rule.aggregate.field ?? '';\n const item = fieldOf(options.map, path.target, itemField);\n if (!item)\n throw new Error(`aggregate.field '${itemField}' does not exist on model '${path.target}'.`);\n if (item.kind !== 'scalar' || isJsonEntry(item))\n throw new Error(\n `aggregate.field '${itemField}' on model '${path.target}' must be a numeric scalar, got ${item.kind === 'scalar' ? 'Json' : `'${item.kind}'`}.`,\n );\n\n // The comparison as check() makes it, with its operand read; nothing to compare against\n // matches nothing.\n const leaf = settleLeaf(options)(rule as unknown as Record<string, unknown>);\n if (leaf === null) return matchNothing();\n // A parent with no matching children has the empty aggregate (0) and no group: when the\n // comparison holds for it, select the parents outside the groups where it fails.\n const holdsEmpty =\n checkField(leaf as unknown as Rule, [{}], undefined, undefined, {}, { value: 0 }) === true;\n const target = (holdsEmpty ? negate(leaf as Condition) : leaf) as unknown as Rule;\n const filter = comparisonFilter(target, options);\n const aggregate = { [rule.aggregate.mode === 'sum' ? '_sum' : '_avg']: filter };\n // Prisma can't negate a two-sided bound inside a field filter; NOT the having clause instead.\n const having = NEGATED_RANGE_OPERATORS.includes(target.operator)\n ? notLeaf({ [itemField]: aggregate })\n : { [itemField]: aggregate };\n\n const where = rule.condition\n ? buildCondition(rule.condition, { ...options, model: path.target }, state)\n : matchAll();\n const membership = groupMembership(state, path, where, having, holdsEmpty);\n // check() reads the array under an absent to-one relation as empty.\n return holdsEmpty ? orWhere([membership, ...hopArms(rule.field, options)]) : membership;\n};\n","import { conditionRequired, countRequired } from '../errors';\nimport type { FieldMap } from '../fieldMap/types';\nimport { ArrayOperator } from '../operator';\nimport { comparatorOf } from '../operatorCatalog';\nimport type { ArrayRule } from '../types';\nimport { holdsForEmpty } from './array';\nimport { groupMembership, groupPath } from './groupStep';\nimport { matchAll } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\n/**\n * Generate a multi-step groupBy plan for count-based relation filtering.\n *\n * For { field: 'posts', arrayOperator: 'atLeast', count: 3, condition: ... } on User:\n * step 0: groupBy Post by authorId where <condition> having _count >= 3\n * where: { id: { in: { __step: 0 } } }\n *\n * The step is pushed into state.steps and the WHERE clause is returned directly.\n */\nexport const buildCountStep = (\n rule: ArrayRule,\n options: ToPrismaOptions & { map: FieldMap; model: string },\n state: PrismaBuildState,\n): PrismaWhere => {\n if (!rule.field) throw new Error('toPrisma: count-based ArrayRule requires a field path');\n const path = groupPath(rule.field, options.map, options.model, 'Count operators');\n\n // Same contract as check(): a count operator without a condition or count is an\n // authoring error, not a default.\n if (rule.condition === undefined) throw conditionRequired(rule.arrayOperator);\n if (rule.count === undefined) throw countRequired(rule.arrayOperator);\n const count = rule.count;\n if (rule.arrayOperator === ArrayOperator.atLeast && count === 0) return matchAll();\n\n const where = buildCondition(rule.condition, { ...options, model: path.target }, state);\n // The zero-inclusive operators hold for a parent with no matching children, which no group\n // carries: atMost N = NOT(atLeast N+1), exactly 0 = NOT(atLeast 1).\n const complement = holdsForEmpty(rule);\n const having = complement\n ? countHaving(\n ArrayOperator.atLeast,\n rule.arrayOperator === ArrayOperator.atMost ? count + 1 : 1,\n path.targetKey,\n )\n : countHaving(rule.arrayOperator, count, path.targetKey);\n return groupMembership(state, path, where, having, complement);\n};\n\n// Prisma 6.x having format: field first, then _count nested inside.\n// e.g. { fanUserUuid: { _count: { gte: 3 } } } — NOT { _count: { _all: { gte: 3 } } }\nconst countHaving = (op: ArrayOperator, count: number, field: string): Record<string, unknown> => {\n const bound = comparatorOf(op, 'array');\n if (!bound) throw new Error(`'${op}' does not count`);\n return { [field]: { _count: { [bound]: count } } };\n};\n","import { check } from '../check';\nimport {\n conditionRequired,\n fieldlessArrayError,\n noCompiledForm,\n unknownOperator,\n windowUnsupported,\n} from '../errors';\nimport { type FieldShape, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { conditionTouchesBridge, relationTarget } from '../fieldMap/walk';\nimport { negate } from '../negate';\nimport { ArrayOperator } from '../operator';\nimport { ARRAY_COUNT_OPERATORS, ARRAY_MONOTONE_OPERATORS } from '../operatorCatalog';\nimport type { AggregateRule, ArrayRule, Condition } from '../types';\nimport { hasWindow, windowRewrite } from '../window';\nimport { buildCountStep } from './countStep';\nimport { buildMapAwareFilter, emptinessWhere, hopArms } from './field';\nimport { orWhere, overFetch } from './logical';\nimport { buildCondition } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\nimport { settleLeaf } from './valueSource';\n\n/** A rule over an array, which check() reads as empty when a to-one relation on its path is\n * absent: where the rule holds for an empty array, so does the row with no such relation. */\nexport const buildArrayRule = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n const where = compileArrayRule(rule, options, state);\n // An array held in a column carries its own absent arms (see emptinessWhere).\n return rule.field && holdsForEmpty(rule) && !isValueArray(rule.field, options)\n ? orWhere([where, ...hopArms(rule.field, options)])\n : where;\n};\n\n/** Whether a rule holds over an empty array — check() answers, as it reads one. */\nexport const holdsForEmpty = (rule: ArrayRule | AggregateRule): boolean =>\n check({ ...rule, field: 'items' } as Condition, { items: [] }) === true;\n\nconst compileArrayRule = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n if (hasWindow(rule)) {\n const rewritten = windowRewrite(rule);\n if (!rewritten) throw windowUnsupported('toPrisma');\n return buildCondition(rewritten, options, state);\n }\n\n // A condition that crosses a bridge is unknown here: unless a broader condition only widens the\n // rule, over-fetch every parent and let check() decide.\n if (\n rule.condition !== undefined &&\n !ARRAY_MONOTONE_OPERATORS.includes(rule.arrayOperator) &&\n conditionTouchesBridge(\n rule.condition,\n options?.map as FieldMap | undefined,\n childOptionsFor(rule, options)?.model,\n )\n )\n return overFetch();\n\n // Count operators generate a full WHERE clause (step ref) — skip the nested-filter wrapper\n if (ARRAY_COUNT_OPERATORS.includes(rule.arrayOperator)) {\n if (options?.map && options?.model && state) {\n return buildCountStep(\n rule,\n options as ToPrismaOptions & { map: FieldMap; model: string },\n state,\n );\n }\n throw new Error(\n `ArrayOperator '${rule.arrayOperator}' requires a FieldMap and model to generate a multi-step plan. ` +\n `Pass { map, model } options to toPrisma(). Without them, use prisma.$queryRaw for count-based relation filtering.`,\n );\n }\n\n if (!rule.field) {\n throw fieldlessArrayError('toPrisma');\n }\n const { field } = rule;\n if (isValueArray(field, options))\n return buildValueArrayRule(\n rule,\n field,\n ruleShape({ field }, options?.map as FieldMap | undefined, options?.model),\n options,\n );\n const filter = buildArrayLeafFilter(rule, options, state);\n return buildMapAwareFilter(rule.field, filter, options);\n};\n\nconst isValueArray = (field: string, options?: ToPrismaOptions): boolean => {\n const shape = ruleShape({ field }, options?.map as FieldMap | undefined, options?.model);\n return shape === 'list' || shape === 'json' || shape === 'json-path';\n};\n\n/** An array held in a column — a scalar list or a Json array. An absent or NULL one is empty,\n * as in check(); Prisma has no filter over its elements. */\nconst buildValueArrayRule = (\n rule: ArrayRule,\n field: string,\n shape: FieldShape,\n options?: ToPrismaOptions,\n): PrismaWhere => {\n switch (rule.arrayOperator) {\n case ArrayOperator.empty:\n case ArrayOperator.notEmpty:\n return emptinessWhere(\n field,\n shape,\n rule.arrayOperator === ArrayOperator.empty,\n false,\n options,\n );\n default:\n throw noCompiledForm(\n 'toPrisma',\n `'${rule.arrayOperator}' over the ${shape === 'list' ? 'list' : 'Json array'} '${field}'`,\n shape === 'list' ? \"test a list's membership with 'contains'\" : undefined,\n );\n }\n};\n\nconst childOptionsFor = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n): ToPrismaOptions | undefined => {\n if (!options?.map || !options?.model || !rule.field) return options;\n const target = relationTarget(rule.field, options.map as FieldMap, options.model);\n return target ? { ...options, model: target } : options;\n};\n\nconst buildArrayLeafFilter = (\n rule: ArrayRule,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): unknown => {\n // Inner condition runs against the relation target model, not the parent.\n // Without this, JSON-path and bridge detection misfire inside some/every/none.\n const childOptions = childOptionsFor(rule, options);\n switch (rule.arrayOperator) {\n // Prisma's `every` passes a child whose condition is NULL (a NULL field), which check()\n // fails: no child in the exact complement instead.\n case ArrayOperator.all:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return {\n none: buildCondition(negate(rule.condition, settleLeaf(childOptions)), childOptions, state),\n };\n\n case ArrayOperator.any:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return { some: buildCondition(rule.condition, childOptions, state) };\n\n case ArrayOperator.none:\n if (!rule.condition) throw conditionRequired(rule.arrayOperator);\n return { none: buildCondition(rule.condition, childOptions, state) };\n\n case ArrayOperator.empty:\n return { none: {} };\n\n case ArrayOperator.notEmpty:\n return { some: {} };\n\n default:\n throw unknownOperator((rule as ArrayRule).arrayOperator, 'array');\n }\n};\n","import { resolveExpr } from '../amount';\nimport { coerceDateLiteral } from '../date';\nimport { isDateExpr, resolveDateExprRange, resolvePointForOperator } from '../dateExpr';\nimport { noCompiledForm, rangeExprRequired, unknownOperator } from '../errors';\nimport { isRelationEntry } from '../fieldMap/entry';\nimport { entryKind, ruleShape } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { orderPair, readPair } from '../number';\nimport { DateOperator } from '../operator';\nimport {\n comparatorOf,\n FieldKind,\n NEGATED_OPERATORS,\n NEGATED_RANGE_OPERATORS,\n} from '../operatorCatalog';\nimport type { DateRule } from '../types';\nimport { absentArms, buildMapAwareFilter } from './field';\nimport { notLeaf, orWhere } from './logical';\nimport { offsetDate } from './offset';\nimport type { PrismaWhere, ToPrismaOptions } from './types';\nimport { dateConfigOf, prismaRead, readSource } from './valueSource';\n\n// Negated date operators keep NULL rows, as the scalar negations in ./field.ts do. A range\n// complement is a WHERE-level NOT: a field-level `not` over `{ gte, lte }` distributes over both\n// keys and matches nothing.\nexport const buildDateRule = (rule: DateRule, options?: ToPrismaOptions): PrismaWhere => {\n // Prisma filters a date only on a DateTime column: Json and String compare text, a number a\n // number.\n const map = options?.map as FieldMap | undefined;\n const shape = ruleShape({ field: rule.field }, map, options?.model);\n if (shape === 'json' || shape === 'json-path')\n throw noCompiledForm(\n 'toPrisma',\n `A date rule on the Json value '${rule.field}'`,\n 'Prisma compares Json text',\n );\n const entry = fieldEntry(rule.field, map, options?.model);\n if (entry && !isRelationEntry(entry) && entryKind(entry) !== FieldKind.DateTime)\n throw noCompiledForm(\n 'toPrisma',\n `A date rule on the ${entry.type} field '${rule.field}'`,\n `Prisma compares it as ${entry.type}, not as an instant`,\n );\n const arms = NEGATED_OPERATORS.includes(rule.dateOperator) ? absentArms(rule, options) : [];\n const filter = buildDateLeafFilter(rule, options);\n // Nothing to compare against — a null path, bind, offset or magnitude: no row matches, and a\n // negation keeps the absent rows only, as on the other rails.\n if (filter === null) return orWhere(arms);\n const positive = buildMapAwareFilter(rule.field, filter, options);\n const nested = NEGATED_RANGE_OPERATORS.includes(rule.dateOperator) ? notLeaf(positive) : positive;\n return orWhere([nested, ...arms]);\n};\n\nconst buildDateLeafFilter = (rule: DateRule, options?: ToPrismaOptions): unknown => {\n const config = dateConfigOf(options);\n const read = prismaRead(options);\n const shift = (instant: Date | null): Date | null =>\n rule.offset === undefined ? instant : offsetDate(instant, rule.offset, options);\n const instantOf = (value: unknown): Date | null => {\n if (value === null || value === undefined) return null;\n if (!isDateExpr(value)) return coerceDateLiteral(value, config.timeZone);\n const expr = resolveExpr(value, read);\n return expr && resolvePointForOperator(expr, rule.dateOperator, config).toDate();\n };\n const source = () => readSource(rule, options);\n const point = (): Date | null => shift(instantOf(source()));\n const range = (): [Date, Date] | null => {\n const v = source();\n if (v === null || v === undefined) return null;\n const ends = readPair(v, rule.dateOperator).map(instantOf);\n if (ends[0] === null || ends[1] === null) return null;\n const [start, end] = orderPair(ends as Date[]).map(shift);\n return start && end ? [start, end] : null;\n };\n const window = (): [Date, Date] | null => {\n const v = source();\n if (v === null || v === undefined) return null;\n if (!isDateExpr(v)) throw rangeExprRequired(rule.dateOperator);\n const expr = resolveExpr(v, read);\n if (!expr) return null;\n const [start, end] = resolveDateExprRange(expr, config);\n return [start.toDate(), end.toDate()];\n };\n const one = (key: 'lt' | 'gt' | 'lte' | 'gte') => {\n const at = point();\n return at === null ? null : { [key]: at };\n };\n const two = (ends: [Date, Date] | null) => (ends ? { gte: ends[0], lte: ends[1] } : null);\n\n const comparator = comparatorOf(rule.dateOperator, 'date');\n if (comparator) return one(comparator as 'lt' | 'gt' | 'lte' | 'gte');\n\n switch (rule.dateOperator) {\n case DateOperator.within:\n case DateOperator.notWithin:\n return two(window());\n\n case DateOperator.between:\n case DateOperator.notBetween:\n return two(range());\n\n case DateOperator.dayIn:\n case DateOperator.dayNotIn:\n throw noCompiledForm('toPrisma', `'${rule.dateOperator}'`);\n\n default:\n throw unknownOperator((rule as DateRule).dateOperator, 'date');\n }\n};\n","import { ambiguousCondition } from '../errors';\nimport { refuseRelationsValue } from '../fieldMap/shape';\nimport type { FieldMap } from '../fieldMap/types';\nimport { rejectScopedField } from '../scope';\nimport { conditionShape } from '../traverse';\nimport type { Condition } from '../types';\nimport { buildAggregateRule } from './aggregate';\nimport { buildArrayRule } from './array';\nimport { buildDateRule } from './date';\nimport { buildFieldRule } from './field';\nimport { buildAll, buildAny, buildIfThenElse, matchNothing } from './logical';\nimport { setConditionBuilder } from './recurse';\nimport type { PrismaBuildState, PrismaWhere, ToPrismaOptions } from './types';\n\nexport const buildCondition = (\n condition: Condition,\n options?: ToPrismaOptions,\n state?: PrismaBuildState,\n): PrismaWhere => {\n // Prisma's empty OR matches nothing — `false` compiles, same as toSql's FALSE. `{}` is\n // match-all only at the top level and under AND; the logical builders fold both\n // constants so neither ever lands under OR or NOT (see logical.ts).\n if (typeof condition === 'boolean') {\n return condition ? {} : matchNothing();\n }\n rejectScopedField(condition, 'toPrisma');\n\n const shape = conditionShape(condition as Record<string, unknown>);\n if (shape === 'field' || shape === 'date')\n refuseRelationsValue(\n (condition as { field: string }).field,\n options?.map as FieldMap | undefined,\n options?.model,\n );\n const node = condition as never;\n switch (shape) {\n case 'all':\n return buildAll(node, options, state);\n case 'any':\n return buildAny(node, options, state);\n case 'if':\n return buildIfThenElse(node, options, state);\n case 'array':\n return buildArrayRule(node, options, state);\n case 'aggregate':\n return buildAggregateRule(node, options, state);\n case 'date':\n return buildDateRule(node, options);\n case 'field':\n return buildFieldRule(node, options);\n default:\n throw ambiguousCondition();\n }\n};\n\nsetConditionBuilder(buildCondition);\n","import type { GroupByStep, ToPrismaResult, WhereStep } from './types';\n\n/**\n * Execute a Prisma query plan produced by toPrisma().\n *\n * The plan is a flat list of steps where all but the last are `groupBy` steps\n * that feed results (via { __step: N } sentinels) into subsequent steps.\n * The final step is always a `where` step whose resolved WHERE clause is returned.\n *\n * @param result - Result from toPrisma()\n * @param prismaDelegate - Map of camelCase model name → Prisma delegate\n * e.g. { post: prisma.post, user: prisma.user }\n * @returns The resolved WHERE clause (ready for findMany/count/etc.)\n *\n * @example\n * const plan = toPrisma(condition, { map, model: 'User' });\n * const where = await executePrismaPlan(plan, { post: prisma.post });\n * await prisma.user.findMany({ where });\n */\nexport const executePrismaPlan = async (\n plan: ToPrismaResult,\n prismaDelegate: Record<string, Record<string, (...args: unknown[]) => unknown>>,\n): Promise<Record<string, unknown>> => {\n const groupBySteps = plan.steps.filter((s): s is GroupByStep => s.operation === 'groupBy');\n const whereStep = plan.steps.find((s): s is WhereStep => s.operation === 'where');\n\n if (!whereStep) {\n throw new Error('executePrismaPlan: result has no where step');\n }\n\n const stepResults: unknown[][] = [];\n\n for (const step of groupBySteps) {\n const modelKey = step.model.charAt(0).toLowerCase() + step.model.slice(1);\n const delegate = prismaDelegate[modelKey];\n if (!delegate) {\n throw new Error(\n `executePrismaPlan: no delegate for model '${step.model}'. ` +\n `Ensure prismaDelegate has a key '${modelKey}'.`,\n );\n }\n const rows = await delegate[step.operation](step.args);\n // A related row whose join FK is null belongs to no root entity, so it can\n // never contribute a membership id. groupBy over a nullable FK still emits a\n // null group, and Prisma rejects a mixed null+string array in `in`/`notIn`,\n // so drop nulls here at the gather point. An empty result stays a real `[]`:\n // `in: []` matches nothing and `notIn: []` matches everything, both correct.\n stepResults.push(\n (rows as Record<string, unknown>[])\n .map((r) => r[step.extract])\n .filter((v) => v !== null && v !== undefined),\n );\n }\n\n return resolveStepRefs(whereStep.where, stepResults) as Record<string, unknown>;\n};\n\n/**\n * Recursively replace { __step: N } sentinels with the corresponding step result array.\n */\nconst resolveStepRefs = (obj: unknown, stepResults: unknown[][]): unknown => {\n if (obj === null || obj === undefined) return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => resolveStepRefs(item, stepResults));\n }\n\n if (typeof obj === 'object') {\n // Only plain objects are walked — a compiled leaf like a Date (or Decimal/\n // Buffer) must pass through untouched; entry-copying it would strip its\n // prototype and hand Prisma an empty object.\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) return obj;\n const record = obj as Record<string, unknown>;\n\n if ('__step' in record && typeof record.__step === 'number') {\n const idx = record.__step;\n if (idx >= stepResults.length) {\n throw new Error(\n `Step ref __step: ${idx} out of range (${stepResults.length} steps executed)`,\n );\n }\n return stepResults[idx];\n }\n\n const resolved: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(record)) {\n resolved[key] = resolveStepRefs(value, stepResults);\n }\n return resolved;\n }\n\n return obj;\n};\n","import { resolveFieldMap } from '../fieldMap/resolveFieldMap';\nimport type { Condition } from '../types';\nimport { buildCondition } from './condition';\nimport type { PrismaBuildState, ToPrismaOptions, ToPrismaResult } from './types';\n\nconst normalizeOptions = (options?: ToPrismaOptions): ToPrismaOptions | undefined =>\n options?.map\n ? { ...options, map: resolveFieldMap(options.map, options.mapName, 'toPrisma') }\n : options;\n\nexport { executePrismaPlan } from './execute';\nexport type {\n GroupByStep,\n PrismaStep,\n PrismaWhere,\n StepRef,\n ToPrismaOptions,\n ToPrismaResult,\n WhereStep,\n} from './types';\n\n/**\n * Compile a condition to a Prisma query plan: `steps`, any groupBy steps (counts and relation\n * aggregates, which need `{ map, model }`) and then the final `where`. Run a plan with\n * `executePrismaPlan(plan, client)` to resolve step refs; a single-step plan's `where` is its\n * last step's.\n *\n * @example\n * ```typescript\n * toPrisma({ field: 'status', operator: Operator.equals, value: 'active' }).steps\n * // → [{ operation: 'where', where: { status: { equals: 'active' } } }]\n *\n * const plan = toPrisma({ field: 'posts', arrayOperator: 'atLeast', count: 3, condition }, { map, model: 'User' });\n * const where = await executePrismaPlan(plan, prisma);\n * await prisma.user.findMany({ where });\n * ```\n */\nexport const toPrisma = (condition: Condition, options?: ToPrismaOptions): ToPrismaResult => {\n const state: PrismaBuildState = { steps: [] };\n const where = buildCondition(condition, normalizeOptions(options), state);\n return {\n steps: [...state.steps, { operation: 'where', where }],\n };\n};\n","import type { BuilderState } from './types';\n\n// A Date binds as its ISO-8601 instant: Postgres reads `…Z` into a timestamp column as UTC wall\n// time and into a timestamptz as the instant, while a driver's own Date serialization uses the\n// host zone.\nconst bindable = (value: unknown): unknown => {\n if (value instanceof Date) return value.toISOString();\n return Array.isArray(value) && value.some((item) => item instanceof Date)\n ? value.map(bindable)\n : value;\n};\n\nexport const nextParam = (state: BuilderState, value: unknown): string => {\n state.params.push(bindable(value));\n return `$${++state.paramIndex}`;\n};\n","import { pastScalarError, toManyHopError } from '../errors';\nimport { type FieldShape, fieldShape } from '../fieldMap/shape';\nimport type { FieldMap, FieldMapEntry } from '../fieldMap/types';\nimport { type MapHop, walkFieldPath } from '../fieldMap/walk';\nimport { modelOf } from '../own';\nimport { relationKeys } from '../toPrisma/relationUtils';\nimport { escapeIdentifier } from './escape';\nimport { quoteField } from './quoting';\nimport type { BuilderState } from './types';\n\n/** A field's SQL and what it reads (a JSON path reads text unless `jsonb`). */\nexport type FieldSql = { sql: string; shape: FieldShape };\n\n/**\n * A dot-notation field as SQL. With a map, the path is walked once (walkFieldPath): each relation\n * hop becomes a LEFT JOIN (reused across the query), and the terminal column is qualified by the\n * last hop's alias, with a Json column's tail as a JSON path. Without a map, or for a path the\n * map doesn't declare, the path reads as written. Mutates state.joins / joinCounter / joinRegistry.\n */\nexport const resolveField = (\n field: string,\n state: BuilderState,\n { jsonb = false }: { jsonb?: boolean } = {},\n): FieldSql => {\n // As written, a dotted path is a JSON path.\n const asWritten = (): FieldSql => ({\n sql: quoteField(field, undefined, jsonb),\n shape: field.includes('.') ? 'json-path' : 'unknown',\n });\n if (!state.map || !state.currentModel || !state.currentAlias) return asWritten();\n const walk = walkFieldPath(field, state.map, state.currentModel);\n if (walk.kind === 'past-scalar') throw pastScalarError(field, walk.column);\n if (walk.kind === 'bridge')\n throw new Error(`'${field}' crosses a bridge to another source; toSql() has no column for it`);\n if (walk.kind === 'fallback' || (walk.entry.kind === 'object' && walk.entry.isList))\n return asWritten();\n const toMany = walk.hops.find((hop) => hop.entry.isList);\n if (toMany) throw toManyHopError(field, toMany);\n let alias = state.currentAlias;\n for (const hop of walk.hops) {\n const joined = joinAlias(state, alias, hop);\n if (!joined) return asWritten();\n alias = joined;\n }\n const shape = fieldShape(walk);\n // A to-one relation as a field reads the joined row's key: NULL when there is no row.\n if (walk.kind === 'direct' && walk.entry.kind === 'object') {\n const hop = { field: walk.column, prefix: field, entry: walk.entry, from: walk.model };\n const keys = relationKeys(state.map, walk.model, walk.entry);\n const joined = joinAlias(state, alias, hop);\n if (!keys || !joined) return asWritten();\n return { sql: `${escapeIdentifier(joined)}.${escapeIdentifier(keys[0].there)}`, shape };\n }\n const column = walk.kind === 'json-path' ? [walk.column, ...walk.jsonPath] : [walk.column];\n const sql = quoteField(column.join('.'), alias, jsonb);\n // A JSON null in a Json column is null, as check() reads it.\n return { sql: shape === 'json' && !jsonb ? `NULLIF(${sql}, 'null'::jsonb)` : sql, shape };\n};\n\nexport const resolveFieldSql = (\n field: string,\n state: BuilderState,\n options?: { jsonb?: boolean },\n): string => resolveField(field, state, options).sql;\n\n/** The alias a relation hop joins as — reused when the query already joined it. */\nconst joinAlias = (state: BuilderState, fromAlias: string, hop: MapHop): string | null => {\n const key = `${fromAlias}.${hop.field}`;\n const existing = state.joinRegistry?.get(key);\n if (existing) return existing;\n if (!state.joinCounter || !state.map) return null;\n const alias = `t${state.joinCounter.n + 1}`;\n const clause = buildJoinClause(state.map, hop.from, fromAlias, hop.entry, alias);\n if (!clause) return null;\n state.joinCounter.n += 1;\n state.joins?.push(clause);\n state.joinRegistry?.set(key, alias);\n return alias;\n};\n\n/**\n * Build a LEFT JOIN clause string for a relation field traversal.\n * Returns null when the FK cannot be determined.\n */\nconst buildJoinClause = (\n map: FieldMap,\n currentModel: string,\n currentAlias: string,\n fieldEntry: FieldMapEntry,\n targetAlias: string,\n): string | null => {\n const targetModel = fieldEntry.type;\n const targetDbName = modelOf(map, targetModel)?.dbName ?? targetModel;\n\n const keys = relationKeys(map, currentModel, fieldEntry);\n if (!keys) return null;\n const onCondition = keys\n .map(\n ({ here, there }) =>\n `${escapeIdentifier(targetAlias)}.${escapeIdentifier(there)} = ` +\n `${escapeIdentifier(currentAlias)}.${escapeIdentifier(here)}`,\n )\n .join(' AND ');\n\n return `LEFT JOIN ${escapeIdentifier(targetDbName as string)} AS ${escapeIdentifier(targetAlias)} ON ${onCondition}`;\n};\n","import { resolveDateConfig } from '../date';\nimport type { ResolvedDateConfig } from '../dateExpr';\nimport type { FieldShape } from '../fieldMap/shape';\nimport { checkOnlyScopeRef, parseScopeRef, readContextRef } from '../scope';\nimport type { ValueSourceFields } from '../types';\nimport { compileBinding, matchSource, type ReadSource } from '../valueSource';\nimport { resolveField } from './join';\nimport type { BuilderState } from './types';\n\n/**\n * An operand: a value bound as a parameter, or SQL evaluated per row. `computed` SQL is\n * arithmetic, whose NULL means \"nothing to compare against\" — never the is-null sentinel a\n * plain column comparison gets.\n */\nexport type ResolvedRhs =\n | { type: 'value'; value: unknown }\n | { type: 'column'; sql: string; shape?: FieldShape; computed?: true };\n\nexport const NO_VALUE: ResolvedRhs = { type: 'value', value: null };\n\nexport const isMissing = (rhs: ResolvedRhs): boolean =>\n rhs.type === 'value' && (rhs.value === null || rhs.value === undefined);\n\n/** A ref on the SQL rail: `$.x` reads the current row the way a `field` does — relation hops\n * join, a Json column's tail is a JSON path; a bare ref reads context. */\nconst resolveRef = (ref: string, state: BuilderState): ResolvedRhs => {\n const scoped = parseScopeRef(ref);\n if (scoped) {\n if (scoped.depth > 1) throw new Error(checkOnlyScopeRef(ref, 'toSql'));\n const column = resolveField(scoped.path, state);\n if (column.shape === 'relation')\n throw new Error(`'${ref}' is a relation; a value ref reads a column`);\n return { type: 'column', ...column };\n }\n return { type: 'value', value: readContextRef(ref, state.context, 'toSql') };\n};\n\n/** A value source on the SQL rail: a parameter, or a `$.` column. */\nexport const resolveSource = (\n source: ValueSourceFields<unknown>,\n state: BuilderState,\n): ResolvedRhs =>\n matchSource<ResolvedRhs>(source, {\n value: (value) => ({ type: 'value', value }),\n path: (ref) => resolveRef(ref, state),\n bind: (name, optional) => ({ type: 'value', value: compileBinding(name, optional, 'toSql') }),\n });\n\n/** Reads a source whose value is needed at compile time; a row ref here is a caller bug. */\nexport const compileTimeRead =\n (state: BuilderState): ReadSource =>\n (source) => {\n const resolved = resolveSource(source, state);\n if (resolved.type === 'column') throw new Error(`'${source.path}' is a row ref`);\n return resolved.value;\n };\n\nexport const dateConfigOf = (state: BuilderState): ResolvedDateConfig =>\n resolveDateConfig(state.dateConfig ?? {}, compileTimeRead(state));\n","import { type Comparator, comparatorOf, NEGATED_OPERATORS } from '../operatorCatalog';\nimport { nextParam } from './params';\nimport type { BuilderState } from './types';\nimport { isMissing, type ResolvedRhs } from './valueSource';\n\n// A field against an operand, for the field and date compilers alike. A negated comparison is\n// the complement of its positive form, as check() evaluates it: SQL's three-valued logic makes\n// it NULL — never true — for a NULL field, so every negation carries the NULL rows explicitly.\n// An operand that reads nothing matches no row, and a negation keeps the NULL fields only.\n\n/** A comparator as SQL. */\nconst SQL_COMPARATOR: Record<Comparator, string> = {\n lt: '<',\n lte: '<=',\n gt: '>',\n gte: '>=',\n equals: '=',\n};\n\n/** An ordered comparison's SQL symbol and whether it negates (keeps NULL); undefined for any\n * other operator. */\nexport const orderedSql = (\n operator: string,\n family: 'field' | 'date',\n): { symbol: string; negated: boolean } | undefined => {\n const comparator = comparatorOf(operator, family);\n return comparator\n ? { symbol: SQL_COMPARATOR[comparator], negated: NEGATED_OPERATORS.includes(operator) }\n : undefined;\n};\n\nconst operandSql = (rhs: ResolvedRhs, state: BuilderState): string =>\n rhs.type === 'column' ? rhs.sql : nextParam(state, rhs.value);\n\nexport const orNull = (field: string, expr: string): string => `(${expr} OR ${field} IS NULL)`;\n\n/** No operand to compare against: no row, or the NULL fields for a negation. */\nexport const noOperandSql = (field: string, negated: boolean, nullable = true): string =>\n negated && nullable ? `${field} IS NULL` : 'FALSE';\n\n/** `field <symbol> operand`. */\nexport const compareSql = (\n field: string,\n symbol: string,\n rhs: ResolvedRhs,\n negated: boolean,\n state: BuilderState,\n): string => {\n if (isMissing(rhs)) return noOperandSql(field, negated);\n const comparison = `${field} ${symbol} ${operandSql(rhs, state)}`;\n return negated ? orNull(field, comparison) : comparison;\n};\n\n/** `field BETWEEN a AND b`. Ends known now arrive sorted; ends read per row sort in SQL\n * (SYMMETRIC), and a per-row end that reads NULL matches nothing. */\nexport const rangeSql = (\n field: string,\n ends: [ResolvedRhs, ResolvedRhs] | null,\n negated: boolean,\n state: BuilderState,\n nullable = true,\n): string => {\n if (!ends || ends.some(isMissing)) return noOperandSql(field, negated, nullable);\n const [a, b] = ends.map((end) => operandSql(end, state));\n const perRow = ends.some((end) => end.type === 'column');\n const symmetric = perRow ? 'SYMMETRIC ' : '';\n if (!negated) return `${field} BETWEEN ${symmetric}${a} AND ${b}`;\n const outside = `${field} NOT BETWEEN ${symmetric}${a} AND ${b}`;\n const guarded = perRow ? `(${outside} AND ${a} IS NOT NULL AND ${b} IS NOT NULL)` : outside;\n return nullable ? orNull(field, guarded) : guarded;\n};\n","import { resolveCaseInsensitive } from '../engineGlobals';\nimport { noCompiledForm, unorderedOperand } from '../errors';\nimport { hasNoOperand, lowerStrings } from '../field';\nimport { splitNull } from '../number';\nimport { Operator } from '../operator';\nimport { NEGATED_OPERATORS } from '../operatorCatalog';\nimport { postgresSource, readPattern } from '../pattern';\nimport type { Rule } from '../types';\nimport { noOperandSql, orderedSql, orNull } from './compare';\nimport { nextParam } from './params';\nimport { escapeLikePattern } from './quoting';\nimport type { BuilderState } from './types';\n\n// A Json value compared as JSON, as check() compares it: by value — a list or an object deeply —\n// and never across types; JSON null is null; string operators read strings, and `contains` is\n// also exact membership in an array.\n\nconst holdsObject = (v: unknown): boolean =>\n Array.isArray(v) ? v.some(holdsObject) : typeof v === 'object' && v !== null;\n\n/**\n * `rule` against the Json value `jsonb` (a column, or a path read with `->`), its operand known\n * now: `value`, or a range's two ends.\n */\nexport const buildJsonComparison = (\n rule: Rule,\n jsonb: string,\n value: unknown,\n state: BuilderState,\n): string => {\n const j = `NULLIF(${jsonb}, 'null'::jsonb)`;\n const type = `jsonb_typeof(${j})`;\n const text = `(${j} #>> '{}')`;\n const json = (v: unknown): string => `${nextParam(state, JSON.stringify(v))}::jsonb`;\n const ci = resolveCaseInsensitive(rule.caseInsensitive);\n const lc = (expr: string): string => (ci ? `LOWER(${expr})` : expr);\n const negated = NEGATED_OPERATORS.includes(rule.operator);\n const not = (expr: string): string => orNull(j, `NOT (${expr})`);\n\n if (hasNoOperand(rule, value)) return noOperandSql(j, negated);\n const unordered = unorderedOperand(rule.operator, value);\n if (unordered) throw unordered;\n\n // Under the flag check() lowers strings through lists, never inside objects. A list operand\n // without objects compares against the lowered JSON text: any object the value holds then\n // differs in type anyway.\n const lowered = (v: unknown[]): string => {\n if (holdsObject(v))\n throw noCompiledForm(\n 'toSql',\n `A case-insensitive comparison of '${rule.field}' with a list holding objects`,\n );\n return json(lowerStrings(v));\n };\n /** One value: a string or a list compares case-insensitively under the flag; anything else\n * exactly. */\n const equal = (v: unknown): string =>\n ci && typeof v === 'string'\n ? `(${type} = 'string' AND LOWER(${text}) = LOWER(${nextParam(state, v)}))`\n : ci && Array.isArray(v)\n ? `(${type} = 'array' AND LOWER(${j}::text)::jsonb = ${lowered(v)})`\n : `${j} = ${json(v)}`;\n /** A string operator reads a string: `pattern` is a LIKE pattern. */\n const like = (pattern: string): string =>\n `(${type} = 'string' AND ${lc(text)} LIKE ${lc(nextParam(state, pattern))})`;\n // An array member equal to `v`: `@>` reads an object or a list partially, and a string under\n // the flag compares lowered, so those compare element by element.\n const member = (v: unknown): string => {\n const element = (match: string): string =>\n `(CASE WHEN ${type} = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${j}) AS e WHERE ${match}) ELSE FALSE END)`;\n if (ci && typeof v === 'string')\n return element(\n `jsonb_typeof(e) = 'string' AND LOWER(e #>> '{}') = LOWER(${nextParam(state, v)})`,\n );\n if (ci && Array.isArray(v)) return element(`LOWER(e::text)::jsonb = ${lowered(v)}`);\n return typeof v === 'object' && v !== null\n ? element(`e = ${json(v)}`)\n : `(${type} = 'array' AND ${j} @> ${json([v])})`;\n };\n // A string holds a string; an array holds any member.\n const contains = (v: unknown): string =>\n typeof v === 'string' ? `(${like(`%${escapeLikePattern(v)}%`)} OR ${member(v)})` : member(v);\n\n switch (rule.operator) {\n case Operator.equals:\n return value === null ? `${j} IS NULL` : equal(value);\n case Operator.notEquals:\n return value === null ? `${j} IS NOT NULL` : not(equal(value));\n case Operator.in:\n case Operator.notIn: {\n const { values, hasNull } = splitNull(value);\n const anyOf = values.length ? `(${values.map(equal).join(' OR ')})` : 'FALSE';\n if (rule.operator === Operator.in) return hasNull ? `(${anyOf} OR ${j} IS NULL)` : anyOf;\n return hasNull ? `(NOT ${anyOf} AND ${j} IS NOT NULL)` : not(anyOf);\n }\n case Operator.between:\n case Operator.notBetween: {\n const [low, high] = value as [unknown, unknown];\n const within = `(${type} = jsonb_typeof(${json(low)}) AND ${j} BETWEEN ${json(low)} AND ${json(high)})`;\n return rule.operator === Operator.between ? within : not(within);\n }\n case Operator.contains:\n return contains(value);\n case Operator.notContains:\n return not(contains(value));\n case Operator.startsWith:\n return like(`${escapeLikePattern(String(value))}%`);\n case Operator.endsWith:\n return like(`%${escapeLikePattern(String(value))}`);\n case Operator.notStartsWith:\n return not(like(`${escapeLikePattern(String(value))}%`));\n case Operator.notEndsWith:\n return not(like(`%${escapeLikePattern(String(value))}`));\n case Operator.matches:\n case Operator.notMatches: {\n const { source, caseInsensitive } = readPattern(value as string | RegExp);\n const match = `(${type} = 'string' AND ${text} ~${caseInsensitive ? '*' : ''} ${nextParam(state, postgresSource(source))})`;\n return rule.operator === Operator.matches ? match : not(match);\n }\n }\n const symbol = orderedSql(rule.operator, 'field')?.symbol;\n if (symbol) return `(${type} = jsonb_typeof(${json(value)}) AND ${j} ${symbol} ${json(value)})`;\n throw new Error(`Operator '${rule.operator}' is not supported on a Json value in SQL`);\n};\n","import dayjs from 'dayjs';\nimport { resolveMagnitude, resolveUnits } from '../amount';\nimport { shiftByUnits } from '../dateExpr';\nimport type { FieldShape } from '../fieldMap/shape';\nimport {\n INTERVAL_FIELDS,\n isCalendarUnit,\n RELATIVE_UNITS,\n type RelativeUnit,\n} from '../operatorCatalog';\nimport type { Magnitude, RelativeUnits } from '../types';\nimport { rowRef } from '../valueSource';\nimport type { FieldSql } from './join';\nimport { nextParam } from './params';\nimport type { BuilderState } from './types';\nimport {\n compileTimeRead,\n dateConfigOf,\n NO_VALUE,\n type ResolvedRhs,\n resolveSource,\n} from './valueSource';\n\n// A date moved by relative units, as check() moves it: on the wall clock of the evaluation's\n// zone, months then days then time. Postgres does the same arithmetic when an amount or the\n// base is read per row.\n\nconst isRowRef = (magnitude: Magnitude | undefined): boolean =>\n typeof magnitude === 'object' && rowRef(magnitude) !== null;\n\n/**\n * A date read from the row as an instant, whatever the session zone. A DateTime column goes\n * through its epoch, which a `timestamp` column (UTC wall time, as Prisma writes it) and a\n * `timestamptz` share. Text — a JSON path — reads as check() reads it: a number is epoch\n * milliseconds, a string with a zone is that instant, and a zoneless one is wall time in the\n * evaluation's zone.\n */\nexport const asInstant = (\n { sql, shape }: Pick<FieldSql, 'sql'> & { shape?: FieldShape },\n state: BuilderState,\n): string => {\n if (shape !== 'json-path' && shape !== 'text') return `to_timestamp(EXTRACT(EPOCH FROM ${sql}))`;\n const zone = nextParam(state, dateConfigOf(state).timeZone);\n return (\n `(CASE WHEN btrim(${sql}) ~ '^-?[0-9]+(\\\\.[0-9]+)?$' THEN to_timestamp(btrim(${sql})::numeric / 1000)` +\n ` WHEN ${sql} ~* '[0-9]{2}:[0-9]{2}(:[0-9]{2}(\\\\.[0-9]+)?)?\\\\s*(z|[+-][0-9]{2}(:?[0-9]{2})?)\\\\s*$'` +\n ` OR ${sql} ~* '\\\\m(gmt|utc)\\\\M' THEN (${sql})::timestamptz` +\n ` ELSE (${sql})::timestamp AT TIME ZONE ${zone} END)`\n );\n};\n\n/** True when any unit is read per row — so the shift must compile to SQL. */\nexport const readsRow = (units: RelativeUnits): boolean => Object.values(units).some(isRowRef);\n\nconst magnitudeSql = (\n magnitude: Magnitude,\n state: BuilderState,\n unit: keyof RelativeUnits,\n): string => {\n const whole = isCalendarUnit(unit);\n const cast = whole ? 'int' : 'double precision';\n if (typeof magnitude === 'number' || !isRowRef(magnitude)) {\n const amount = resolveMagnitude(magnitude, compileTimeRead(state), unit);\n return `${nextParam(state, amount)}::${cast}`;\n }\n const c = (resolveSource(magnitude, state) as { sql: string }).sql;\n const usable = whole ? `${c} >= 0 AND ${c} = trunc(${c})` : `${c} >= 0`;\n return `(CASE WHEN ${usable} THEN ${c} END)::${cast}`;\n};\n\n/** `units` as a Postgres interval; NULL when an amount reads NULL. */\nconst intervalSql = (units: RelativeUnits, state: BuilderState): string => {\n const args = INTERVAL_FIELDS.flatMap((field) => {\n const terms = (Object.keys(units) as RelativeUnit[])\n .filter((unit) => units[unit] !== undefined && RELATIVE_UNITS[unit].interval === field)\n .map((unit) => {\n const term = magnitudeSql(units[unit] as Magnitude, state, unit);\n const { factor } = RELATIVE_UNITS[unit];\n return factor === 1 ? term : `${factor} * ${term}`;\n });\n return terms.length ? [`${field} => ${terms.join(' + ')}`] : [];\n });\n return `make_interval(${args.join(', ')})`;\n};\n\n/** A date operand moved by `units`: a value when everything is known now, else SQL. */\nexport const shiftDate = (\n rhs: ResolvedRhs,\n units: RelativeUnits,\n direction: 1 | -1,\n state: BuilderState,\n): ResolvedRhs => {\n const zone = dateConfigOf(state).timeZone;\n if (rhs.type === 'value' && !readsRow(units)) {\n const resolved = resolveUnits(units, compileTimeRead(state));\n if (rhs.value === null || rhs.value === undefined || resolved === null) return NO_VALUE;\n return {\n type: 'value',\n value: shiftByUnits(dayjs(rhs.value as Date), resolved, direction, zone).toDate(),\n };\n }\n const base =\n rhs.type === 'column'\n ? rhs.computed\n ? rhs.sql\n : asInstant(rhs, state)\n : `${nextParam(state, rhs.value ?? null)}::timestamptz`;\n const z = nextParam(state, zone);\n const sign = direction === 1 ? '+' : '-';\n return {\n type: 'column',\n computed: true,\n sql: `(((${base} AT TIME ZONE ${z}) ${sign} ${intervalSql(units, state)}) AT TIME ZONE ${z})`,\n };\n};\n","import { addOffset, offsetAmount, offsetShift } from '../offset';\nimport type { DateOffset, NumberOffset } from '../types';\nimport { nextParam } from './params';\nimport { shiftDate } from './shift';\nimport type { BuilderState } from './types';\nimport { isMissing, NO_VALUE, type ResolvedRhs, resolveSource } from './valueSource';\n\n// An offset moves an operand by what its own value source reads. NULL anywhere — base or\n// offset — leaves nothing to compare against, as in check().\n\n/** A numeric operand plus an offset, in double precision as check() adds; SQL when either side\n * is read per row. A range moves at both ends. */\nexport const offsetNumber = (\n rhs: ResolvedRhs,\n offset: NumberOffset,\n state: BuilderState,\n): ResolvedRhs => {\n const by = resolveSource(offset, state);\n if (rhs.type === 'value' && by.type === 'value') {\n const amount = offsetAmount(by.value);\n return amount === null ? NO_VALUE : { type: 'value', value: addOffset(rhs.value, amount) };\n }\n const operand = (side: ResolvedRhs, read: (value: unknown) => unknown) =>\n side.type === 'column'\n ? `(${side.sql})::double precision`\n : `${nextParam(state, read(side.value) ?? null)}::double precision`;\n return {\n type: 'column',\n computed: true,\n sql: `(${operand(rhs, (v) => v)} + ${operand(by, offsetAmount)})`,\n };\n};\n\n/** A date operand moved by a date offset's `{ ago }` / `{ ahead }`. A shift stored on the row\n * is check-only: Postgres has no form for a JSON interval. */\nexport const offsetDate = (\n rhs: ResolvedRhs,\n offset: DateOffset,\n state: BuilderState,\n): ResolvedRhs => {\n if (isMissing(rhs)) return NO_VALUE;\n const by = resolveSource(offset, state);\n if (by.type === 'column')\n throw new Error(\n `A row path on a date offset ('${offset.path}') is check-only; evaluate with check()`,\n );\n const move = offsetShift(by.value);\n return move === null ? NO_VALUE : shiftDate(rhs, ...move, state);\n};\n","import type { Condition } from '../types';\nimport type { BuilderState } from './types';\n\n// The rail's one recursion point: sub-builders compile their child conditions through it, and\n// condition.ts installs the dispatcher — so no builder imports the dispatcher it is part of.\n\ntype BuildConditionFn = (condition: Condition, state: BuilderState) => string;\n\nlet dispatch: BuildConditionFn;\n\nexport const setConditionBuilder = (fn: BuildConditionFn): void => {\n dispatch = fn;\n};\n\nexport const buildCondition: BuildConditionFn = (condition, state) => dispatch(condition, state);\n","import { compileFieldLiteral } from '../compileLiteral';\nimport { resolveCaseInsensitive } from '../engineGlobals';\nimport { enumMatches } from '../enumMatch';\nimport { fuzzyNotCompiled, noCompiledForm, relationNotValue } from '../errors';\nimport { hasNoOperand, isExistenceTest, listMembership, lowerStrings } from '../field';\nimport { acceptsEmptyString, comparesText, readsText } from '../fieldMap/shape';\nimport { fieldEntry, walkWith } from '../fieldMap/walk';\nimport { isOrderedValue, orderPair, readOrderedPair, readPair, splitNull } from '../number';\nimport { Operator } from '../operator';\nimport {\n CONTAINS_OPERATORS,\n EQUALITY_OPERATORS,\n getValueShape,\n NEGATED_OPERATORS,\n NO_VALUE_OPERATORS,\n RANGE_OPERATORS,\n SET_OPERATORS,\n} from '../operatorCatalog';\nimport { postgresSource, readPattern } from '../pattern';\nimport type { Rule } from '../types';\nimport { compareSql, noOperandSql, orderedSql, orNull as orNullSql, rangeSql } from './compare';\nimport { type FieldSql, resolveField, resolveFieldSql } from './join';\nimport { buildJsonComparison } from './json';\nimport { offsetNumber } from './offset';\nimport { nextParam } from './params';\nimport { escapeLikePattern } from './quoting';\nimport { buildCondition } from './recurse';\nimport type { BuilderState } from './types';\nimport { dateConfigOf, type ResolvedRhs, resolveSource } from './valueSource';\n\n/** A field rule as SQL; `lhs` compiles a computed left-hand side (an aggregate) in the column's place. */\nexport const buildFieldRule = (rule: Rule, state: BuilderState, lhs?: string): string => {\n const fuzzy = fuzzyNotCompiled(rule);\n if (fuzzy) throw fuzzy;\n const resolved: FieldSql =\n lhs === undefined ? resolveField(rule.field, state) : { sql: lhs, shape: 'scalar' };\n // A to-one relation as a field exists or not: its key is not a value to compare.\n if (resolved.shape === 'relation' && !isExistenceTest(rule)) throw relationNotValue(rule.field);\n // A computed left-hand side is never NULL (an aggregate coalesces): no NULL arms.\n const nullable = lhs === undefined;\n // An enum compares against its declared values (see enumMatches).\n if (resolved.shape === 'enum' && !NO_VALUE_OPERATORS.includes(rule.operator)) {\n const operand = knownOperand(rule, state);\n const entry = fieldEntry(rule.field, state.map, state.currentModel);\n const matched =\n operand !== NOT_KNOWN && entry && !hasNoOperand(rule, operand)\n ? enumMatches(rule, operand, entry, state.map)\n : null;\n if (matched) {\n const listed = `${resolved.sql}::text = ANY(${nextParam(state, matched.values)})`;\n return matched.matchesNull ? orNullSql(resolved.sql, listed) : listed;\n }\n }\n // An enum's exact comparisons read its value as text, which a string parameter matches.\n const compared: FieldSql =\n resolved.shape === 'enum' && !NO_VALUE_OPERATORS.includes(rule.operator)\n ? { ...resolved, sql: `${resolved.sql}::text` }\n : resolved;\n // A Json value against an operand known now compares as JSON.\n const isJson = resolved.shape === 'json' || resolved.shape === 'json-path';\n if (isJson && !NO_VALUE_OPERATORS.includes(rule.operator)) {\n const operand = knownOperand(rule, state);\n // A Json value compares by its type, which a per-row operand doesn't fix at compile time.\n if (operand === NOT_KNOWN)\n throw new Error(\n `The Json value '${rule.field}' compares against an operand known when compiling, not one read per row.`,\n );\n return buildJsonComparison(\n rule,\n resolveFieldSql(rule.field, state, { jsonb: true }),\n operand,\n state,\n );\n }\n // check() compares a Json value as JSON, never across types; SQL would compare its text.\n const refuseJsonOperand = (operand: ResolvedRhs): void => {\n if (\n operand.type === 'column' &&\n !operand.computed &&\n (operand.shape === 'json' || operand.shape === 'json-path')\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.field}' compared with a Json value read per row`,\n 'SQL would compare its text',\n );\n };\n if (RANGE_OPERATORS.includes(rule.operator)) {\n const ends = resolveRange(rule, state);\n ends?.forEach(refuseJsonOperand);\n return rangeSql(compared.sql, ends, NEGATED_OPERATORS.includes(rule.operator), state, nullable);\n }\n const rhs = resolveComparison(rule, state);\n refuseJsonOperand(rhs);\n // A string operator reads text; a value moved by an offset is a number or a date.\n if (\n rhs.type === 'column' &&\n getValueShape(rule.operator, 'field') === 'string' &&\n !readsText(resolved.shape) &&\n resolved.shape !== 'list'\n )\n throw noCompiledForm('toSql', `'${rule.operator}' on '${rule.field}'`, 'it is not text');\n if (rhs.type === 'column' && rhs.computed && resolved.shape === 'text' && lhs === undefined)\n throw noCompiledForm(\n 'toSql',\n `'${rule.field}' against a value moved by an offset`,\n 'an offset moves a number or a date',\n );\n const field = compared.sql;\n const ordered = orderedSql(rule.operator, 'field');\n if (ordered) return compareSql(field, ordered.symbol, rhs, false, state);\n // Nothing to compare against (see hasNoOperand): no row, or the NULL fields for a negation.\n if (rhs.type === 'value' && hasNoOperand(rule, rhs.value))\n return noOperandSql(field, NEGATED_OPERATORS.includes(rule.operator), nullable);\n const arithmetic = rhs.type === 'column' && rhs.computed === true;\n const lower =\n resolveCaseInsensitive(rule.caseInsensitive) &&\n (rhs.type === 'column'\n ? !arithmetic && readsText(resolved.shape) && readsText(rhs.shape)\n : comparesText(resolved.shape, rhs.value));\n const lc = (expr: string): string => (lower ? `LOWER(${expr})` : expr);\n const lowered = (values: unknown[]): unknown => (lower ? lowerStrings(values) : values);\n\n // A member read per row: a NULL one is nothing to look for, so only a NULL list is without it.\n // Postgres matches it only against a list of its own type: a text member in a String list.\n if (\n resolved.shape === 'list' &&\n rhs.type === 'column' &&\n CONTAINS_OPERATORS.includes(rule.operator)\n ) {\n if (\n fieldEntry(rule.field, state.map, state.currentModel)?.type !== 'String' ||\n !readsText(rhs.shape)\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.operator}' on the list '${rule.field}' with a member read per row ('${rule.path}')`,\n \"Postgres matches a member of the list's own type only\",\n );\n const has =\n resolveCaseInsensitive(rule.caseInsensitive) && readsText(rhs.shape)\n ? `EXISTS (SELECT 1 FROM unnest(${field}) AS e WHERE LOWER(e) = LOWER(${rhs.sql}))`\n : `array_position(${field}, ${rhs.sql}) IS NOT NULL`;\n return rule.operator === Operator.contains\n ? `(${rhs.sql} IS NOT NULL AND ${has})`\n : `(${field} IS NULL OR (${rhs.sql} IS NOT NULL AND NOT ${has}))`;\n }\n\n // A scalar list contains a member, as check() reads a list; NULL elements and a NULL list\n // contain nothing. Case-insensitively, its members compare lowered.\n if (resolved.shape === 'list' && rhs.type === 'value') {\n const listLower =\n resolveCaseInsensitive(rule.caseInsensitive) && comparesText('text', rhs.value);\n if (CONTAINS_OPERATORS.includes(rule.operator)) {\n const member = nextParam(state, rhs.value);\n const has = listLower\n ? `EXISTS (SELECT 1 FROM unnest(${field}) AS e WHERE LOWER(e) = LOWER(${member}))`\n : `array_position(${field}, ${member}) IS NOT NULL`;\n return rule.operator === Operator.contains ? has : `NOT ${has}`;\n }\n if (SET_OPERATORS.includes(rule.operator) && Array.isArray(rhs.value))\n return buildCondition(listMembership(rule, rhs.value), state);\n if (withShapeString(rule.operator))\n throw new Error(\n `'${rule.operator}' does not apply to the list '${rule.field}'; test its members with contains.`,\n );\n if (listLower && EQUALITY_OPERATORS.includes(rule.operator) && Array.isArray(rhs.value)) {\n const lowered = nextParam(state, lowerStrings(rhs.value));\n const same = `(${field} IS NOT NULL AND ARRAY(SELECT LOWER(e) FROM unnest(${field}) AS e) = ${lowered})`;\n return rule.operator === Operator.equals ? same : orNullSql(field, `NOT ${same}`);\n }\n }\n\n // Extract both variants up front so TypeScript doesn't need to narrow inside each case\n const rhsVal = rhs.type === 'value' ? rhs.value : undefined;\n const rhsCol = rhs.type === 'column' ? rhs.sql : undefined;\n\n // A set or a pattern is bound when compiling; one read per row has no SQL form.\n if (\n rhsCol !== undefined &&\n (SET_OPERATORS.includes(rule.operator) || getValueShape(rule.operator, 'field') === 'pattern')\n )\n throw noCompiledForm(\n 'toSql',\n `'${rule.operator}' against an operand read per row ('${rule.path}')`,\n );\n\n // Every negation carries the NULL rows explicitly (see ./compare).\n const orNull = (expr: string): string => (nullable ? orNullSql(field, expr) : expr);\n\n switch (rule.operator) {\n case Operator.equals:\n if (arithmetic) return `${field} = ${rhsCol}`;\n if (rhsCol !== undefined) return `${lc(field)} IS NOT DISTINCT FROM ${lc(rhsCol)}`;\n if (rhsVal === null) return `${field} IS NULL`;\n return `${lc(field)} = ${lc(nextParam(state, rhsVal))}`;\n\n case Operator.notEquals:\n if (arithmetic) return orNull(`${field} <> ${rhsCol}`);\n if (rhsCol !== undefined) return `${lc(field)} IS DISTINCT FROM ${lc(rhsCol)}`;\n if (rhsVal === null) return `${field} IS NOT NULL`;\n return orNull(`${lc(field)} <> ${lc(nextParam(state, rhsVal))}`);\n\n case Operator.in: {\n const { values, hasNull } = splitNull(rhsVal);\n if (!values.length) return hasNull ? `${field} IS NULL` : 'FALSE';\n const anyOf = `${lc(field)} = ANY(${nextParam(state, lowered(values))})`;\n return hasNull ? orNull(anyOf) : anyOf;\n }\n\n case Operator.notIn: {\n const { values, hasNull } = splitNull(rhsVal);\n if (!values.length) return hasNull ? `${field} IS NOT NULL` : 'TRUE';\n const noneOf = `${lc(field)} <> ALL(${nextParam(state, lowered(values))})`;\n return hasNull ? `(${noneOf} AND ${field} IS NOT NULL)` : orNull(noneOf);\n }\n\n case Operator.contains:\n return `${lc(field)} LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}%`))}`;\n\n case Operator.notContains:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}%`))}`,\n );\n\n case Operator.startsWith:\n return `${lc(field)} LIKE ${lc(nextParam(state, `${escapeLikePattern(String(rhsVal))}%`))}`;\n\n case Operator.endsWith:\n return `${lc(field)} LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}`))}`;\n\n case Operator.notStartsWith:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `${escapeLikePattern(String(rhsVal))}%`))}`,\n );\n\n case Operator.notEndsWith:\n return orNull(\n `${lc(field)} NOT LIKE ${lc(nextParam(state, `%${escapeLikePattern(String(rhsVal))}`))}`,\n );\n\n case Operator.matches:\n return sqlMatch(field, rhsVal, false, state);\n\n case Operator.notMatches:\n return orNull(sqlMatch(field, rhsVal, true, state));\n\n case Operator.isEmpty:\n case Operator.notEmpty:\n return emptinessSql(\n rule.field,\n resolved,\n rule.operator === Operator.isEmpty,\n state,\n acceptsEmptyString(rule, state.map, state.currentModel),\n );\n\n case Operator.exists:\n return `${field} IS NOT NULL`;\n\n case Operator.notExists:\n return `${field} IS NULL`;\n\n default:\n throw new Error(`Unknown operator: ${(rule as Rule).operator}`);\n }\n};\n\n/** The comparison operand: the rule's value source, coerced to the field, moved by its offset. */\nconst resolveComparison = (rule: Rule, state: BuilderState): ResolvedRhs => {\n if (NO_VALUE_OPERATORS.includes(rule.operator)) return { type: 'value', value: undefined };\n const rhs = coerce(rule, resolveSource(rule, state), state);\n return rule.offset === undefined ? rhs : offsetNumber(rhs, rule.offset, state);\n};\n\nconst coerce = (rule: Rule, rhs: ResolvedRhs, state: BuilderState): ResolvedRhs =>\n rhs.type === 'column'\n ? rhs\n : {\n type: 'value',\n value: compileFieldLiteral(\n rule,\n rhs.value,\n walkWith(rule.field, state.map, state.currentModel),\n 'toSql',\n () => dateConfigOf(state).timeZone,\n ),\n };\n\n/** A range's two ends, sorted, each moved by the offset; null when the range reads nothing. */\nconst resolveRange = (rule: Rule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const rhs = coerce(rule, resolveSource(rule, state), state);\n const range = rhs.type === 'value' ? rhs.value : undefined;\n if (range === null || range === undefined) return null;\n // A missing end matches nothing (see rangeSql); a present one must order.\n const ends = readPair(range, rule.operator);\n if (ends.some((end) => end != null && !isOrderedValue(end)))\n readOrderedPair(range, rule.operator);\n return orderPair(ends).map((value) => {\n const end: ResolvedRhs = { type: 'value', value };\n return rule.offset === undefined ? end : offsetNumber(end, rule.offset, state);\n }) as [ResolvedRhs, ResolvedRhs];\n};\n\n/** A pattern as Postgres reads it: its source, and `~*` / `!~*` when case-insensitive. */\nconst sqlMatch = (field: string, value: unknown, negated: boolean, state: BuilderState): string => {\n if (typeof value !== 'string' && !(value instanceof RegExp))\n throw new Error('matches requires a string or RegExp pattern');\n const { source, caseInsensitive } = readPattern(value);\n return `${field} ${negated ? '!' : ''}~${caseInsensitive ? '*' : ''} ${nextParam(state, postgresSource(source))}`;\n};\n\nconst NOT_KNOWN = Symbol('not known');\n\n/** A comparison's operand when it is known now — a value, or a range of two values, moved by\n * a known offset — or NOT_KNOWN when it is read per row. */\nconst knownOperand = (rule: Rule, state: BuilderState): unknown => {\n if (RANGE_OPERATORS.includes(rule.operator)) {\n const ends = resolveRange(rule, state);\n if (!ends) return null;\n return ends.every((end) => end.type === 'value')\n ? ends.map((end) => (end as { value: unknown }).value)\n : NOT_KNOWN;\n }\n const rhs = resolveComparison(rule, state);\n return rhs.type === 'value' ? rhs.value : NOT_KNOWN;\n};\n\n/**\n * Whether a field is empty — NULL, '', or an empty list or Json array, as check() reads it — or,\n * with `empty` false, not. One form for the emptiness operators and the array ones.\n */\nexport const emptinessSql = (\n path: string,\n field: FieldSql,\n empty: boolean,\n state: BuilderState,\n emptyString: boolean,\n): string => {\n const { sql, shape } = field;\n if (shape === 'list')\n return empty ? `(${sql} IS NULL OR cardinality(${sql}) = 0)` : `cardinality(${sql}) > 0`;\n if (shape === 'json' || shape === 'json-path') {\n const j = resolveFieldSql(path, state, { jsonb: true });\n const values = [`'null'::jsonb`, ...(emptyString ? [`'\"\"'::jsonb`] : []), `'[]'::jsonb`].join(\n ', ',\n );\n return empty ? `(${j} IS NULL OR ${j} IN (${values}))` : `${j} NOT IN (${values})`;\n }\n if (!emptyString) return empty ? `${sql} IS NULL` : `${sql} IS NOT NULL`;\n return empty ? `(${sql} IS NULL OR ${sql} = '')` : `(${sql} IS NOT NULL AND ${sql} <> '')`;\n};\n\n/** A string operator other than containment: a list has no prefix or suffix. */\nconst withShapeString = (operator: string): boolean =>\n getValueShape(operator, 'field') === 'string' && !CONTAINS_OPERATORS.includes(operator);\n","import { unknownAggregateMode, windowUnsupported } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { AGGREGATE_MODES } from '../operatorCatalog';\nimport type { AggregateRule, Rule } from '../types';\nimport { hasWindow } from '../window';\nimport { buildFieldRule } from './field';\nimport { resolveFieldSql } from './join';\nimport { jsonKey } from './quoting';\nimport type { BuilderState } from './types';\n\nexport const buildAggregateRule = (rule: AggregateRule, state: BuilderState): string => {\n if (hasWindow(rule)) throw windowUnsupported('toSql');\n if (rule.condition) {\n throw new Error(\n `Aggregate condition filtering is not yet supported by toSql(). ` +\n `Use check() for in-memory evaluation or toPrisma() for database queries.`,\n );\n }\n\n const subquery = buildAggregateSubquery(rule, state);\n // An aggregate compares like a field whose value the subquery computes.\n return buildFieldRule(rule as unknown as Rule, state, subquery);\n};\n\nconst buildAggregateSubquery = (rule: AggregateRule, state: BuilderState): string => {\n const { mode, field: itemField } = rule.aggregate;\n // check() reads the sum and the average of nothing as 0.\n if (!AGGREGATE_MODES.includes(mode)) throw unknownAggregateMode(mode);\n const fn = mode === 'sum' ? 'SUM' : 'AVG';\n\n const shape = ruleShape({ field: rule.field }, state.map, state.currentModel);\n\n if (\n shape === 'relation' ||\n fieldEntry(rule.field, state.map, state.currentModel)?.kind === 'object'\n ) {\n throw new Error(\n `Field '${rule.field}' is a relation — toSql() cannot aggregate relation lists. Use toPrisma() instead.`,\n );\n }\n\n if (itemField?.includes('.')) {\n throw new Error(\n `aggregate.field '${itemField}' contains a nested path — toSql() only supports flat field names. Use check() for nested paths.`,\n );\n }\n\n const isNative = shape === 'list';\n // Aggregate functions read the array as JSONB (a native array as itself), never as text. A\n // Json value that is not an array — JSON null among them — has no elements, as check() reads\n // a null array.\n const read = resolveFieldSql(rule.field, state, { jsonb: !isNative });\n const field = isNative ? read : `(CASE WHEN jsonb_typeof(${read}) = 'array' THEN ${read} END)`;\n\n if (isNative) {\n if (itemField) {\n throw new Error(\n `aggregate.field is not supported for native array types. Use a JSONB column for object arrays.`,\n );\n }\n const agg = `COALESCE(${fn}(elem), 0)`;\n return `(SELECT ${agg} FROM unnest(${field}) AS elem)`;\n }\n\n if (itemField) {\n // JSONB object array\n const extract = `(elem->>${jsonKey(itemField)})::numeric`;\n const agg = `COALESCE(${fn}(${extract}), 0)`;\n return `(SELECT ${agg} FROM jsonb_array_elements(${field}) AS elem)`;\n }\n\n // JSONB primitive array\n const extract = `elem::numeric`;\n const agg = `COALESCE(${fn}(${extract}), 0)`;\n return `(SELECT ${agg} FROM jsonb_array_elements_text(${field}) AS elem)`;\n};\n","import { fieldlessArrayError, unknownOperator, windowUnsupported } from '../errors';\nimport { ruleShape } from '../fieldMap/shape';\nimport { fieldEntry } from '../fieldMap/walk';\nimport { ArrayOperator } from '../operator';\nimport type { ArrayRule } from '../types';\nimport { hasWindow } from '../window';\nimport { emptinessSql } from './field';\nimport { resolveField } from './join';\nimport type { BuilderState } from './types';\n\nexport const buildArrayRule = (rule: ArrayRule, state: BuilderState): string => {\n if (hasWindow(rule)) throw windowUnsupported('toSql');\n if (!rule.field) {\n throw fieldlessArrayError('toSql');\n }\n const shape = ruleShape({ field: rule.field }, state.map, state.currentModel);\n if (\n shape === 'relation' ||\n fieldEntry(rule.field, state.map, state.currentModel)?.kind === 'object'\n )\n throw new Error(\n `Field '${rule.field}' is a relation — relation arrays are not supported in SQL; use toPrisma().`,\n );\n\n switch (rule.arrayOperator) {\n case ArrayOperator.empty:\n case ArrayOperator.notEmpty: {\n // A list column, or else a Json array — an array rule names one.\n const field = resolveField(rule.field, state);\n const arrayShape = field.shape === 'list' ? field : { ...field, shape: 'json-path' as const };\n return emptinessSql(\n rule.field,\n arrayShape,\n rule.arrayOperator === ArrayOperator.empty,\n state,\n false,\n );\n }\n\n case ArrayOperator.all:\n case ArrayOperator.any:\n case ArrayOperator.none:\n case ArrayOperator.atLeast:\n case ArrayOperator.atMost:\n case ArrayOperator.exactly:\n throw new Error(\n `Array operator '${rule.arrayOperator}' with conditions is not supported in SQL. ` +\n 'Use application-level filtering for complex array operations.',\n );\n\n default:\n throw unknownOperator((rule as ArrayRule).arrayOperator, 'array');\n }\n};\n","import { resolveExpr } from '../amount';\nimport { coerceDateLiteral, dayNumbers } from '../date';\nimport {\n isDateExpr,\n requireNow,\n resolveDateExprRange,\n resolvePointForOperator,\n rollingShift,\n} from '../dateExpr';\nimport { noCompiledForm, rangeExprRequired, unknownOperator } from '../errors';\nimport type { FieldShape } from '../fieldMap/shape';\nimport { orderPair, readPair } from '../number';\nimport { DateOperator } from '../operator';\nimport { NEGATED_OPERATORS } from '../operatorCatalog';\nimport type { DateExpr, DateRule } from '../types';\nimport { compareSql, noOperandSql, orderedSql, orNull, rangeSql } from './compare';\nimport { type FieldSql, resolveField } from './join';\nimport { offsetDate } from './offset';\nimport { nextParam } from './params';\nimport { asInstant, readsRow, shiftDate } from './shift';\nimport type { BuilderState } from './types';\nimport {\n compileTimeRead,\n dateConfigOf,\n isMissing,\n NO_VALUE,\n type ResolvedRhs,\n resolveSource,\n} from './valueSource';\n\n// A known bound binds as an ISO instant, which compares against the column as stored. A bound\n// read per row, or a date stored as text, compares as instants on both sides — independent of\n// the column types and the session zone.\nconst asOperand = (rhs: ResolvedRhs, state: BuilderState): ResolvedRhs =>\n rhs.type === 'column' && !rhs.computed\n ? { type: 'column', sql: asInstant(rhs, state), computed: true }\n : rhs;\n\n// A date reads from a DateTime column, or text (a String column, a Json path), or a field the map\n// doesn't declare; a number, an enum, a list or a whole Json column is not one on Postgres.\nconst readsDate = (shape: FieldShape | undefined): boolean =>\n shape === undefined ||\n shape === 'instant' ||\n shape === 'text' ||\n shape === 'json-path' ||\n shape === 'unknown';\nconst notADate = (field: string): Error =>\n noCompiledForm('toSql', `A date rule on '${field}'`, 'it is not a date column');\n\nconst sides = (\n field: FieldSql,\n ends: ResolvedRhs[],\n state: BuilderState,\n): { lhs: string; ends: ResolvedRhs[] } => {\n const perRow = ends.some((end) => end.type === 'column');\n const text = field.shape === 'json-path' || field.shape === 'text';\n return perRow || text\n ? { lhs: asInstant(field, state), ends: ends.map((end) => asOperand(end, state)) }\n : { lhs: field.sql, ends };\n};\n\nexport const buildDateRule = (rule: DateRule, state: BuilderState): string => {\n const field = resolveField(rule.field, state);\n if (!readsDate(field.shape)) throw notADate(rule.field);\n const operand = resolveSource(rule, state);\n if (operand.type === 'column' && !readsDate(operand.shape))\n throw notADate(String(rule.path ?? rule.field));\n const ordered = orderedSql(rule.dateOperator, 'date');\n if (ordered) {\n const { lhs, ends } = sides(field, [resolvePoint(rule, state)], state);\n return compareSql(lhs, ordered.symbol, ends[0], ordered.negated, state);\n }\n\n const range = (pair: [ResolvedRhs, ResolvedRhs] | null, negated: boolean): string => {\n if (!pair) return rangeSql(field.sql, null, negated, state);\n const { lhs, ends } = sides(field, pair, state);\n return rangeSql(lhs, ends as [ResolvedRhs, ResolvedRhs], negated, state);\n };\n\n switch (rule.dateOperator) {\n case DateOperator.within:\n case DateOperator.notWithin:\n return range(resolveWindow(rule, state), NEGATED_OPERATORS.includes(rule.dateOperator));\n\n case DateOperator.between:\n case DateOperator.notBetween:\n return range(resolveRange(rule, state), NEGATED_OPERATORS.includes(rule.dateOperator));\n\n case DateOperator.dayIn:\n case DateOperator.dayNotIn: {\n const negated = rule.dateOperator === DateOperator.dayNotIn;\n const source = resolveSource(rule, state);\n if (source.type === 'column')\n throw noCompiledForm('toSql', `A weekday list read from the row ('${rule.path}')`);\n const numbers = dayNumbers(source.value);\n if (numbers === null) return noOperandSql(field.sql, negated);\n const zone = nextParam(state, dateConfigOf(state).timeZone);\n const days = nextParam(state, numbers);\n const dow = `EXTRACT(DOW FROM (${asInstant(field, state)} AT TIME ZONE ${zone}))`;\n return rule.dateOperator === DateOperator.dayIn\n ? `${dow} = ANY(${days})`\n : orNull(field.sql, `${dow} <> ALL(${days})`);\n }\n\n default:\n throw unknownOperator((rule as DateRule).dateOperator, 'date');\n }\n};\n\nconst nowOperand = (state: BuilderState): ResolvedRhs => ({\n type: 'value',\n value: requireNow(dateConfigOf(state)).toDate(),\n});\n\nconst expressionPoint = (expr: DateExpr, operator: string, state: BuilderState): ResolvedRhs => {\n const rolling = rollingShift(expr);\n if (rolling && readsRow(rolling[0])) return shiftDate(nowOperand(state), ...rolling, state);\n const resolved = resolveExpr(expr, compileTimeRead(state));\n if (resolved === null) return NO_VALUE;\n return {\n type: 'value',\n value: resolvePointForOperator(resolved, operator, dateConfigOf(state)).toDate(),\n };\n};\n\nconst toPoint = (value: unknown, operator: string, state: BuilderState): ResolvedRhs => {\n if (value === null || value === undefined) return NO_VALUE;\n if (isDateExpr(value)) return expressionPoint(value, operator, state);\n return { type: 'value', value: coerceDateLiteral(value, dateConfigOf(state).timeZone) };\n};\n\nconst withOffset = (rhs: ResolvedRhs, rule: DateRule, state: BuilderState): ResolvedRhs =>\n rule.offset === undefined ? rhs : offsetDate(rhs, rule.offset, state);\n\nconst resolvePoint = (rule: DateRule, state: BuilderState): ResolvedRhs => {\n const source = resolveSource(rule, state);\n const point = source.type === 'column' ? source : toPoint(source.value, rule.dateOperator, state);\n return withOffset(point, rule, state);\n};\n\nconst resolveWindow = (rule: DateRule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const source = resolveSource(rule, state);\n if (isMissing(source)) return null;\n if (source.type === 'column' || !isDateExpr(source.value))\n throw rangeExprRequired(rule.dateOperator);\n const rolling = rollingShift(source.value);\n if (rolling && readsRow(rolling[0])) {\n const now = nowOperand(state);\n const moved = shiftDate(now, ...rolling, state);\n return rolling[1] === -1 ? [moved, now] : [now, moved];\n }\n const resolved = resolveExpr(source.value, compileTimeRead(state));\n if (resolved === null) return null;\n const ends = resolveDateExprRange(resolved, dateConfigOf(state));\n return [\n { type: 'value', value: ends[0].toDate() },\n { type: 'value', value: ends[1].toDate() },\n ];\n};\n\nconst resolveRange = (rule: DateRule, state: BuilderState): [ResolvedRhs, ResolvedRhs] | null => {\n const source = resolveSource(rule, state);\n if (isMissing(source)) return null;\n const raw = source.type === 'value' ? source.value : undefined;\n const points = readPair(raw, rule.dateOperator).map((el) =>\n toPoint(el, rule.dateOperator, state),\n );\n if (points.some(isMissing)) return null;\n const [first, second] = points;\n const ends: ResolvedRhs[] =\n first.type === 'value' && second.type === 'value'\n ? orderPair([first.value as Date, second.value as Date]).map((value) => ({\n type: 'value' as const,\n value,\n }))\n : points;\n return ends.map((end) => withOffset(end, rule, state)) as [ResolvedRhs, ResolvedRhs];\n};\n","import { conditionTouchesBridge } from '../fieldMap/walk';\nimport type { All, Any, Condition, IfThenElse } from '../types';\nimport { buildCondition } from './recurse';\nimport type { BuilderState } from './types';\n\nexport const buildAll = (all: All, state: BuilderState): string => {\n if (all.all.length === 0) return 'TRUE';\n const clauses = all.all.map((c) => buildCondition(c, state));\n return `(${clauses.join(' AND ')})`;\n};\n\nexport const buildAny = (any: Any, state: BuilderState): string => {\n if (any.any.length === 0) return 'FALSE';\n const clauses = any.any.map((c) => buildCondition(c, state));\n return `(${clauses.join(' OR ')})`;\n};\n\nexport const buildIfThenElse = (cond: IfThenElse, state: BuilderState): string => {\n // When any sub-clause hits a bridge, the precise compilation breaks: bridge\n // predicates compile to 'TRUE', and NOT(TRUE) OR X = X collapses the implication\n // (or in the with-else form, silently drops the then/else branch). Over-fetch\n // the whole expression and let the caller's check() filter precisely.\n if (conditionTouchesBridge(cond as Condition, state.map, state.currentModel)) {\n return 'TRUE';\n }\n\n const ifClause = buildCondition(cond.if, state);\n const thenClause = buildCondition(cond.then, state);\n\n // if → then is: (if IS NOT TRUE) OR then — an `if` that is NULL (a NULL field) is false, as in\n // check(), where NOT(NULL) would drop the row. With else: … AND (if IS TRUE OR else).\n if (cond.else !== undefined) {\n const elseClause = buildCondition(cond.else, state);\n return `(((${ifClause}) IS NOT TRUE OR ${thenClause}) AND ((${ifClause}) IS TRUE OR ${elseClause}))`;\n }\n return `((${ifClause}) IS NOT TRUE OR ${thenClause})`;\n};\n","import { ambiguousCondition } from '../errors';\nimport { refuseRelationsValue } from '../fieldMap/shape';\nimport { hitsBridge } from '../fieldMap/walk';\nimport { rejectScopedField } from '../scope';\nimport { conditionShape } from '../traverse';\nimport type { Condition } from '../types';\nimport { buildAggregateRule } from './aggregate';\nimport { buildArrayRule } from './array';\nimport { buildDateRule } from './date';\nimport { buildFieldRule } from './field';\nimport { buildAll, buildAny, buildIfThenElse } from './logical';\nimport { setConditionBuilder } from './recurse';\nimport type { BuilderState } from './types';\n\nexport const buildCondition = (condition: Condition, state: BuilderState): string => {\n if (typeof condition === 'boolean') {\n return condition ? 'TRUE' : 'FALSE';\n }\n rejectScopedField(condition, 'toSql');\n\n if (\n 'field' in condition &&\n typeof condition.field === 'string' &&\n state.map &&\n state.currentModel &&\n hitsBridge(condition.field, state.map, state.currentModel)\n ) {\n return 'TRUE';\n }\n\n const shape = conditionShape(condition as Record<string, unknown>);\n if (shape === 'field' || shape === 'date')\n refuseRelationsValue((condition as { field: string }).field, state.map, state.currentModel);\n const node = condition as never;\n switch (shape) {\n case 'all':\n return buildAll(node, state);\n case 'any':\n return buildAny(node, state);\n case 'if':\n return buildIfThenElse(node, state);\n case 'array':\n return buildArrayRule(node, state);\n case 'aggregate':\n return buildAggregateRule(node, state);\n case 'date':\n return buildDateRule(node, state);\n case 'field':\n return buildFieldRule(node, state);\n default:\n throw ambiguousCondition();\n }\n};\n\nsetConditionBuilder(buildCondition);\n","import { resolveFieldMap } from '../fieldMap/resolveFieldMap';\nimport type { Condition } from '../types';\nimport { buildCondition } from './condition';\nimport type { BuilderState, ToSqlOptions, ToSqlResult } from './types';\n\nexport type { ToSqlOptions, ToSqlResult } from './types';\n\n/** A fresh compile: the root alias (`t0` with a map), parameters, and the join registry every\n * field resolved against it shares. */\nexport const builderState = (options?: ToSqlOptions): BuilderState => {\n const map = resolveFieldMap(options?.map, options?.mapName, 'toSql');\n const hasMap = !!(map && options?.model);\n const rootAlias = options?.alias ?? (hasMap ? 't0' : undefined);\n return {\n params: [],\n paramIndex: 0,\n context: options?.context,\n dateConfig: { now: options?.now, timeZone: options?.timeZone, weekStart: options?.weekStart },\n map,\n currentModel: options?.model,\n currentAlias: rootAlias,\n joinCounter: hasMap ? { n: 0 } : undefined,\n joins: hasMap ? [] : undefined,\n joinRegistry: hasMap ? new Map() : undefined,\n };\n};\n\nexport const toSql = (condition: Condition, options?: ToSqlOptions): ToSqlResult => {\n const state = builderState(options);\n const sql = buildCondition(condition, state);\n return { sql, params: state.params, joins: state.joins ?? [] };\n};\n","import { toPrisma } from '../toPrisma/index.ts';\nimport type { PrismaStep, PrismaWhere, WhereStep } from '../toPrisma/types.ts';\nimport { buildCondition } from '../toSql/condition.ts';\nimport { escapeIdentifier } from '../toSql/escape.ts';\nimport { builderState } from '../toSql/index.ts';\nimport { resolveFieldSql } from '../toSql/join.ts';\nimport { allOf } from '../traverse';\nimport type { Condition } from '../types.ts';\nimport { resolvePolicy } from './policy.ts';\nimport { sourcePlans } from './sourceOptions.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\n/** Prisma `select` shape — nested for a grouped source's relation path. */\nexport type SourceSelect = { [field: string]: true | { select: SourceSelect } };\n\nexport type SourcePrismaQuery = {\n model: string;\n /** Absent for grouped sources — DISTINCT on the value column alone would collapse\n * same-value rows across groups; dedup happens in `materializeSourceQuery`. */\n distinct?: string[];\n select: SourceSelect;\n where: PrismaWhere;\n /** Present only if the composed where used count operators (run via executePrismaPlan). */\n steps?: PrismaStep[];\n};\n\n/** `sql` is null when the composed where uses a predicate SQL can't express\n * (e.g. array-condition operators); `error` then carries why. Prisma still\n * compiles — run that, or fall back to fetch + `check()`. */\nexport type SourceSqlQuery = { sql: string | null; params: unknown[]; error?: string };\n\nexport type SourceQuery = {\n path: string; // dotted projection path (e.g. 'Region' or 'User.region')\n mapName: string;\n model: string;\n field: string;\n /** Co-selected as each value's display label (from a SourceSpec's `label`): a sibling\n * column, or a dotted to-one path like a groupBy axis — then selected nested in prisma\n * and aliased `__label` in sql. */\n label?: string;\n /** Option-partition axes (from a SourceSpec's `groupBy`, normalized); each axis\n * column is selected nested in prisma and aliased `__group_i` in sql. */\n groupBy?: string[];\n composedWhere: Condition; // node whereClauses ∧ source where(s)\n prisma: SourcePrismaQuery;\n sql: SourceSqlQuery;\n};\n\n// 'map.definition.label' → { map: { select: { definition: { select: { label: true } } } } };\n// axes sharing a prefix merge into one nested select tree.\nconst mergeSelect = (into: SourceSelect, path: string[]): void => {\n const [head, ...rest] = path;\n if (rest.length === 0) {\n into[head] = true;\n return;\n }\n const existing = into[head];\n const nested = existing !== undefined && existing !== true ? existing.select : {};\n mergeSelect(nested, rest);\n into[head] = { select: nested };\n};\nconst nestedSelects = (paths: readonly string[]): SourceSelect => {\n const out: SourceSelect = {};\n for (const path of paths) mergeSelect(out, path.split('.'));\n return out;\n};\n\nconst compileOne = (\n lens: Lens,\n mapName: string,\n model: string,\n field: string,\n label: string | undefined,\n groupBy: string[] | undefined,\n where: Condition,\n): { prisma: SourcePrismaQuery; sql: SourceSqlQuery } => {\n const plan = toPrisma(where, { map: lens, mapName, model });\n // A plan ends on its where step.\n const prismaWhere = (plan.steps.at(-1) as WhereStep).where;\n const groupBySteps = plan.steps.filter((s) => s.operation !== 'where');\n // A dotted label materializes exactly like a groupBy axis — same nested select\n // (merged with any axis sharing its prefix), same joined SQL column.\n const labelPath = label?.includes('.') ? label : undefined;\n const nestedPaths = [...(groupBy ?? []), ...(labelPath ? [labelPath] : [])];\n const select: SourceSelect = {\n [field]: true,\n ...(label && !labelPath ? { [label]: true } : {}),\n ...(nestedPaths.length ? nestedSelects(nestedPaths) : {}),\n };\n const prisma: SourcePrismaQuery = {\n model,\n ...(groupBy ? {} : { distinct: [field] }),\n select,\n where: prismaWhere,\n ...(groupBySteps.length ? { steps: plan.steps } : {}),\n };\n\n let sqlQuery: SourceSqlQuery;\n try {\n // The where and the materialized columns resolve against one state, so a label or axis\n // path reuses (and extends) the where's joins.\n const state = builderState({ map: lens, mapName, model, alias: 't0' });\n const sql = buildCondition(where, state);\n const labelCol = labelPath ? resolveFieldSql(labelPath, state) : undefined;\n const groupCols = groupBy?.map((axis) => resolveFieldSql(axis, state));\n const joins = state.joins ?? [];\n const joinSql = joins.length ? ` ${joins.join(' ')}` : '';\n const whereSql = sql?.trim() ? ` WHERE ${sql}` : '';\n const root = escapeIdentifier('t0');\n const cols = [\n `${root}.${escapeIdentifier(field)}`,\n ...(labelCol\n ? [`${labelCol} AS ${escapeIdentifier('__label')}`]\n : label\n ? [`${root}.${escapeIdentifier(label)}`]\n : []),\n ...(groupCols\n ? groupCols.map((col, i) => `${col} AS ${escapeIdentifier(`__group_${i}`)}`)\n : []),\n ].join(', ');\n const statement = `SELECT DISTINCT ${cols} FROM ${escapeIdentifier(model)} AS ${root}${joinSql}${whereSql}`;\n sqlQuery = { sql: statement, params: state.params };\n } catch (err) {\n sqlQuery = { sql: null, params: [], error: err instanceof Error ? err.message : String(err) };\n }\n return { prisma, sql: sqlQuery };\n};\n\n/**\n * Compile a DISTINCT(value) query — Prisma and SQL — per sourced field across\n * the projected lens. The WHERE is the field's composed eligibility: the model's\n * own narrowing at that path AND its source where(s). The app runs these (with\n * its own client) to materialize each field's option set — feed the fetched rows\n * to `materializeSourceQuery`.\n */\nexport const toSourceQueries = (lensOrNarrowing: Lens | LensNarrowing): SourceQuery[] => {\n const { lens } = resolvePolicy(lensOrNarrowing);\n return sourcePlans(lensOrNarrowing).map(({ path, visit, field, label, groupBy, eligibility }) => {\n const composedWhere = allOf([...visit.whereClauses, ...eligibility]);\n const { prisma, sql } = compileOne(\n lens,\n visit.mapName,\n visit.model,\n field,\n label,\n groupBy,\n composedWhere,\n );\n return {\n path,\n mapName: visit.mapName,\n model: visit.model,\n field,\n ...(label !== undefined ? { label } : {}),\n ...(groupBy !== undefined ? { groupBy } : {}),\n composedWhere,\n prisma,\n sql,\n };\n });\n};\n","import {\n type LensPathResolution,\n lensRootScope,\n resolvePolicy,\n resolvePolicyPath,\n} from './policy.ts';\nimport type { Lens, LensNarrowing } from './types.ts';\n\nexport type { LensPathHop, LensPathResolution } from './policy.ts';\n\n/**\n * Resolve one dotted path through a lens, hop by hop, verifying as it walks: every hop is checked\n * against the narrowing at that visit, so a relation the narrowing dropped is `hidden`, a column the\n * model lacks is `missing`, and a segment past a scalar is `pastScalar`. This is the walk\n * `validateRuleInLens` gates a rule's field with, exposed for consumers that resolve paths of their\n * own (template tokens, loop bindings, presence guards).\n */\nexport const walkLensPath = (\n lensOrNarrowing: Lens | LensNarrowing,\n path: string,\n): LensPathResolution => {\n const policy = resolvePolicy(lensOrNarrowing);\n return resolvePolicyPath(policy, lensRootScope(policy), path).resolution;\n};\n"]}
|